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

package types

import (
	reflect "reflect"
	sync "sync"

	proto "github.com/golang/protobuf/proto"
	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)
)

// This is a compile-time assertion that a sufficiently up-to-date version
// of the legacy proto package is being used.
const _ = proto.ProtoPackageIsVersion4

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

	Amount int64 `protobuf:"varint,1,opt,name=amount,proto3" json:"amount,omitempty"`
	Number int64 `protobuf:"varint,2,opt,name=number,proto3" json:"number,omitempty"`
	Index  int64 `protobuf:"varint,3,opt,name=index,proto3" json:"index,omitempty"`
	Way    int64 `protobuf:"varint,4,opt,name=way,proto3" json:"way,omitempty"`
}

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

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

func (*PurchaseRecord) ProtoMessage() {}

func (x *PurchaseRecord) ProtoReflect() protoreflect.Message {
	mi := &file_lottery_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 PurchaseRecord.ProtoReflect.Descriptor instead.
func (*PurchaseRecord) Descriptor() ([]byte, []int) {
	return file_lottery_proto_rawDescGZIP(), []int{0}
}

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

func (x *PurchaseRecord) GetNumber() int64 {
	if x != nil {
		return x.Number
	}
	return 0
}

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

func (x *PurchaseRecord) GetWay() int64 {
	if x != nil {
		return x.Way
	}
	return 0
}

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

	Record         []*PurchaseRecord `protobuf:"bytes,1,rep,name=record,proto3" json:"record,omitempty"`
	FundWin        int64             `protobuf:"varint,2,opt,name=fundWin,proto3" json:"fundWin,omitempty"`
	AmountOneRound int64             `protobuf:"varint,3,opt,name=amountOneRound,proto3" json:"amountOneRound,omitempty"`
	Addr           string            `protobuf:"bytes,4,opt,name=addr,proto3" json:"addr,omitempty"`
}

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

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

func (*PurchaseRecords) ProtoMessage() {}

func (x *PurchaseRecords) ProtoReflect() protoreflect.Message {
	mi := &file_lottery_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 PurchaseRecords.ProtoReflect.Descriptor instead.
func (*PurchaseRecords) Descriptor() ([]byte, []int) {
	return file_lottery_proto_rawDescGZIP(), []int{1}
}

func (x *PurchaseRecords) GetRecord() []*PurchaseRecord {
	if x != nil {
		return x.Record
	}
	return nil
}

func (x *PurchaseRecords) GetFundWin() int64 {
	if x != nil {
		return x.FundWin
	}
	return 0
}

func (x *PurchaseRecords) GetAmountOneRound() int64 {
	if x != nil {
		return x.AmountOneRound
	}
	return 0
}

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

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

	LotteryId            string `protobuf:"bytes,1,opt,name=lotteryId,proto3" json:"lotteryId,omitempty"`
	Status               int32  `protobuf:"varint,2,opt,name=status,proto3" json:"status,omitempty"`
	CreateHeight         int64  `protobuf:"varint,3,opt,name=createHeight,proto3" json:"createHeight,omitempty"`
	Fund                 int64  `protobuf:"varint,4,opt,name=fund,proto3" json:"fund,omitempty"`
	PurBlockNum          int64  `protobuf:"varint,5,opt,name=purBlockNum,proto3" json:"purBlockNum,omitempty"`
	DrawBlockNum         int64  `protobuf:"varint,6,opt,name=drawBlockNum,proto3" json:"drawBlockNum,omitempty"`
	LastTransToPurState  int64  `protobuf:"varint,7,opt,name=lastTransToPurState,proto3" json:"lastTransToPurState,omitempty"`
	LastTransToDrawState int64  `protobuf:"varint,8,opt,name=lastTransToDrawState,proto3" json:"lastTransToDrawState,omitempty"`
	// map<string, PurchaseRecords> records                    = 9;
	TotalPurchasedTxNum        int64              `protobuf:"varint,10,opt,name=totalPurchasedTxNum,proto3" json:"totalPurchasedTxNum,omitempty"`
	CreateAddr                 string             `protobuf:"bytes,11,opt,name=createAddr,proto3" json:"createAddr,omitempty"`
	Round                      int64              `protobuf:"varint,12,opt,name=round,proto3" json:"round,omitempty"`
	LuckyNumber                int64              `protobuf:"varint,13,opt,name=luckyNumber,proto3" json:"luckyNumber,omitempty"`
	CreateOnMain               int64              `protobuf:"varint,14,opt,name=createOnMain,proto3" json:"createOnMain,omitempty"`
	LastTransToPurStateOnMain  int64              `protobuf:"varint,15,opt,name=lastTransToPurStateOnMain,proto3" json:"lastTransToPurStateOnMain,omitempty"`
	LastTransToDrawStateOnMain int64              `protobuf:"varint,16,opt,name=lastTransToDrawStateOnMain,proto3" json:"lastTransToDrawStateOnMain,omitempty"`
	MissingRecords             []*MissingRecord   `protobuf:"bytes,17,rep,name=missingRecords,proto3" json:"missingRecords,omitempty"`
	OpRewardRatio              int64              `protobuf:"varint,18,opt,name=opRewardRatio,proto3" json:"opRewardRatio,omitempty"`
	DevRewardRatio             int64              `protobuf:"varint,19,opt,name=devRewardRatio,proto3" json:"devRewardRatio,omitempty"`
	PurRecords                 []*PurchaseRecords `protobuf:"bytes,20,rep,name=purRecords,proto3" json:"purRecords,omitempty"`
	TotalAddrNum               int64              `protobuf:"varint,21,opt,name=totalAddrNum,proto3" json:"totalAddrNum,omitempty"`
	BuyAmount                  int64              `protobuf:"varint,22,opt,name=buyAmount,proto3" json:"buyAmount,omitempty"`
}

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

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

func (*Lottery) ProtoMessage() {}

func (x *Lottery) ProtoReflect() protoreflect.Message {
	mi := &file_lottery_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 Lottery.ProtoReflect.Descriptor instead.
func (*Lottery) Descriptor() ([]byte, []int) {
	return file_lottery_proto_rawDescGZIP(), []int{2}
}

func (x *Lottery) GetLotteryId() string {
	if x != nil {
		return x.LotteryId
	}
	return ""
}

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

func (x *Lottery) GetCreateHeight() int64 {
	if x != nil {
		return x.CreateHeight
	}
	return 0
}

func (x *Lottery) GetFund() int64 {
	if x != nil {
		return x.Fund
	}
	return 0
}

func (x *Lottery) GetPurBlockNum() int64 {
	if x != nil {
		return x.PurBlockNum
	}
	return 0
}

func (x *Lottery) GetDrawBlockNum() int64 {
	if x != nil {
		return x.DrawBlockNum
	}
	return 0
}

func (x *Lottery) GetLastTransToPurState() int64 {
	if x != nil {
		return x.LastTransToPurState
	}
	return 0
}

func (x *Lottery) GetLastTransToDrawState() int64 {
	if x != nil {
		return x.LastTransToDrawState
	}
	return 0
}

func (x *Lottery) GetTotalPurchasedTxNum() int64 {
	if x != nil {
		return x.TotalPurchasedTxNum
	}
	return 0
}

func (x *Lottery) GetCreateAddr() string {
	if x != nil {
		return x.CreateAddr
	}
	return ""
}

func (x *Lottery) GetRound() int64 {
	if x != nil {
		return x.Round
	}
	return 0
}

func (x *Lottery) GetLuckyNumber() int64 {
	if x != nil {
		return x.LuckyNumber
	}
	return 0
}

func (x *Lottery) GetCreateOnMain() int64 {
	if x != nil {
		return x.CreateOnMain
	}
	return 0
}

func (x *Lottery) GetLastTransToPurStateOnMain() int64 {
	if x != nil {
		return x.LastTransToPurStateOnMain
	}
	return 0
}

func (x *Lottery) GetLastTransToDrawStateOnMain() int64 {
	if x != nil {
		return x.LastTransToDrawStateOnMain
	}
	return 0
}

func (x *Lottery) GetMissingRecords() []*MissingRecord {
	if x != nil {
		return x.MissingRecords
	}
	return nil
}

func (x *Lottery) GetOpRewardRatio() int64 {
	if x != nil {
		return x.OpRewardRatio
	}
	return 0
}

func (x *Lottery) GetDevRewardRatio() int64 {
	if x != nil {
		return x.DevRewardRatio
	}
	return 0
}

func (x *Lottery) GetPurRecords() []*PurchaseRecords {
	if x != nil {
		return x.PurRecords
	}
	return nil
}

func (x *Lottery) GetTotalAddrNum() int64 {
	if x != nil {
		return x.TotalAddrNum
	}
	return 0
}

func (x *Lottery) GetBuyAmount() int64 {
	if x != nil {
		return x.BuyAmount
	}
	return 0
}

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

	Times []int32 `protobuf:"varint,1,rep,packed,name=times,proto3" json:"times,omitempty"`
}

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

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

func (*MissingRecord) ProtoMessage() {}

func (x *MissingRecord) ProtoReflect() protoreflect.Message {
	mi := &file_lottery_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 MissingRecord.ProtoReflect.Descriptor instead.
func (*MissingRecord) Descriptor() ([]byte, []int) {
	return file_lottery_proto_rawDescGZIP(), []int{3}
}

func (x *MissingRecord) GetTimes() []int32 {
	if x != nil {
		return x.Times
	}
	return nil
}

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

	// Types that are assignable to Value:
	//	*LotteryAction_Create
	//	*LotteryAction_Buy
	//	*LotteryAction_Draw
	//	*LotteryAction_Close
	Value isLotteryAction_Value `protobuf_oneof:"value"`
	Ty    int32                 `protobuf:"varint,10,opt,name=ty,proto3" json:"ty,omitempty"`
}

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

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

func (*LotteryAction) ProtoMessage() {}

func (x *LotteryAction) ProtoReflect() protoreflect.Message {
	mi := &file_lottery_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 LotteryAction.ProtoReflect.Descriptor instead.
func (*LotteryAction) Descriptor() ([]byte, []int) {
	return file_lottery_proto_rawDescGZIP(), []int{4}
}

func (m *LotteryAction) GetValue() isLotteryAction_Value {
	if m != nil {
		return m.Value
	}
	return nil
}

func (x *LotteryAction) GetCreate() *LotteryCreate {
	if x, ok := x.GetValue().(*LotteryAction_Create); ok {
		return x.Create
	}
	return nil
}

func (x *LotteryAction) GetBuy() *LotteryBuy {
	if x, ok := x.GetValue().(*LotteryAction_Buy); ok {
		return x.Buy
	}
	return nil
}

func (x *LotteryAction) GetDraw() *LotteryDraw {
	if x, ok := x.GetValue().(*LotteryAction_Draw); ok {
		return x.Draw
	}
	return nil
}

func (x *LotteryAction) GetClose() *LotteryClose {
	if x, ok := x.GetValue().(*LotteryAction_Close); ok {
		return x.Close
	}
	return nil
}

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

type isLotteryAction_Value interface {
	isLotteryAction_Value()
}

type LotteryAction_Create struct {
	Create *LotteryCreate `protobuf:"bytes,1,opt,name=create,proto3,oneof"`
}

type LotteryAction_Buy struct {
	Buy *LotteryBuy `protobuf:"bytes,2,opt,name=buy,proto3,oneof"`
}

type LotteryAction_Draw struct {
	Draw *LotteryDraw `protobuf:"bytes,3,opt,name=draw,proto3,oneof"`
}

type LotteryAction_Close struct {
	Close *LotteryClose `protobuf:"bytes,4,opt,name=close,proto3,oneof"`
}

func (*LotteryAction_Create) isLotteryAction_Value() {}

func (*LotteryAction_Buy) isLotteryAction_Value() {}

func (*LotteryAction_Draw) isLotteryAction_Value() {}

func (*LotteryAction_Close) isLotteryAction_Value() {}

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

	PurBlockNum    int64 `protobuf:"varint,1,opt,name=purBlockNum,proto3" json:"purBlockNum,omitempty"`
	DrawBlockNum   int64 `protobuf:"varint,2,opt,name=drawBlockNum,proto3" json:"drawBlockNum,omitempty"`
	OpRewardRatio  int64 `protobuf:"varint,3,opt,name=opRewardRatio,proto3" json:"opRewardRatio,omitempty"`
	DevRewardRatio int64 `protobuf:"varint,4,opt,name=devRewardRatio,proto3" json:"devRewardRatio,omitempty"`
}

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

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

func (*LotteryCreate) ProtoMessage() {}

func (x *LotteryCreate) ProtoReflect() protoreflect.Message {
	mi := &file_lottery_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 LotteryCreate.ProtoReflect.Descriptor instead.
func (*LotteryCreate) Descriptor() ([]byte, []int) {
	return file_lottery_proto_rawDescGZIP(), []int{5}
}

func (x *LotteryCreate) GetPurBlockNum() int64 {
	if x != nil {
		return x.PurBlockNum
	}
	return 0
}

func (x *LotteryCreate) GetDrawBlockNum() int64 {
	if x != nil {
		return x.DrawBlockNum
	}
	return 0
}

func (x *LotteryCreate) GetOpRewardRatio() int64 {
	if x != nil {
		return x.OpRewardRatio
	}
	return 0
}

func (x *LotteryCreate) GetDevRewardRatio() int64 {
	if x != nil {
		return x.DevRewardRatio
	}
	return 0
}

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

	LotteryId string `protobuf:"bytes,1,opt,name=lotteryId,proto3" json:"lotteryId,omitempty"`
	Amount    int64  `protobuf:"varint,2,opt,name=amount,proto3" json:"amount,omitempty"`
	Number    int64  `protobuf:"varint,3,opt,name=number,proto3" json:"number,omitempty"`
	Way       int64  `protobuf:"varint,4,opt,name=way,proto3" json:"way,omitempty"`
}

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

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

func (*LotteryBuy) ProtoMessage() {}

func (x *LotteryBuy) ProtoReflect() protoreflect.Message {
	mi := &file_lottery_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 LotteryBuy.ProtoReflect.Descriptor instead.
func (*LotteryBuy) Descriptor() ([]byte, []int) {
	return file_lottery_proto_rawDescGZIP(), []int{6}
}

func (x *LotteryBuy) GetLotteryId() string {
	if x != nil {
		return x.LotteryId
	}
	return ""
}

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

func (x *LotteryBuy) GetNumber() int64 {
	if x != nil {
		return x.Number
	}
	return 0
}

func (x *LotteryBuy) GetWay() int64 {
	if x != nil {
		return x.Way
	}
	return 0
}

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

	LotteryId string `protobuf:"bytes,1,opt,name=lotteryId,proto3" json:"lotteryId,omitempty"`
}

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

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

func (*LotteryDraw) ProtoMessage() {}

func (x *LotteryDraw) ProtoReflect() protoreflect.Message {
	mi := &file_lottery_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 LotteryDraw.ProtoReflect.Descriptor instead.
func (*LotteryDraw) Descriptor() ([]byte, []int) {
	return file_lottery_proto_rawDescGZIP(), []int{7}
}

func (x *LotteryDraw) GetLotteryId() string {
	if x != nil {
		return x.LotteryId
	}
	return ""
}

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

	LotteryId string `protobuf:"bytes,1,opt,name=lotteryId,proto3" json:"lotteryId,omitempty"`
}

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

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

func (*LotteryClose) ProtoMessage() {}

func (x *LotteryClose) ProtoReflect() protoreflect.Message {
	mi := &file_lottery_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 LotteryClose.ProtoReflect.Descriptor instead.
func (*LotteryClose) Descriptor() ([]byte, []int) {
	return file_lottery_proto_rawDescGZIP(), []int{8}
}

func (x *LotteryClose) GetLotteryId() string {
	if x != nil {
		return x.LotteryId
	}
	return ""
}

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

	LotteryId    string                `protobuf:"bytes,1,opt,name=lotteryId,proto3" json:"lotteryId,omitempty"`
	Status       int32                 `protobuf:"varint,2,opt,name=status,proto3" json:"status,omitempty"`
	PrevStatus   int32                 `protobuf:"varint,3,opt,name=prevStatus,proto3" json:"prevStatus,omitempty"`
	Addr         string                `protobuf:"bytes,4,opt,name=addr,proto3" json:"addr,omitempty"`
	Round        int64                 `protobuf:"varint,5,opt,name=round,proto3" json:"round,omitempty"`
	Number       int64                 `protobuf:"varint,6,opt,name=number,proto3" json:"number,omitempty"`
	Amount       int64                 `protobuf:"varint,7,opt,name=amount,proto3" json:"amount,omitempty"`
	LuckyNumber  int64                 `protobuf:"varint,8,opt,name=luckyNumber,proto3" json:"luckyNumber,omitempty"`
	Time         int64                 `protobuf:"varint,9,opt,name=time,proto3" json:"time,omitempty"`
	TxHash       string                `protobuf:"bytes,10,opt,name=txHash,proto3" json:"txHash,omitempty"`
	UpdateInfo   *LotteryUpdateBuyInfo `protobuf:"bytes,11,opt,name=updateInfo,proto3" json:"updateInfo,omitempty"`
	Way          int64                 `protobuf:"varint,12,opt,name=way,proto3" json:"way,omitempty"`
	Index        int64                 `protobuf:"varint,13,opt,name=index,proto3" json:"index,omitempty"`
	TotalAddrNum int64                 `protobuf:"varint,14,opt,name=totalAddrNum,proto3" json:"totalAddrNum,omitempty"`
	BuyAmount    int64                 `protobuf:"varint,15,opt,name=buyAmount,proto3" json:"buyAmount,omitempty"`
	GainInfos    *LotteryGainInfos     `protobuf:"bytes,16,opt,name=gainInfos,proto3" json:"gainInfos,omitempty"`
	LuckyAddrNum int64                 `protobuf:"varint,17,opt,name=luckyAddrNum,proto3" json:"luckyAddrNum,omitempty"`
	TotalFund    int64                 `protobuf:"varint,18,opt,name=totalFund,proto3" json:"totalFund,omitempty"`
	Factor       int64                 `protobuf:"varint,19,opt,name=factor,proto3" json:"factor,omitempty"`
}

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

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

func (*ReceiptLottery) ProtoMessage() {}

func (x *ReceiptLottery) ProtoReflect() protoreflect.Message {
	mi := &file_lottery_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 ReceiptLottery.ProtoReflect.Descriptor instead.
func (*ReceiptLottery) Descriptor() ([]byte, []int) {
	return file_lottery_proto_rawDescGZIP(), []int{9}
}

func (x *ReceiptLottery) GetLotteryId() string {
	if x != nil {
		return x.LotteryId
	}
	return ""
}

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

func (x *ReceiptLottery) GetPrevStatus() int32 {
	if x != nil {
		return x.PrevStatus
	}
	return 0
}

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

func (x *ReceiptLottery) GetRound() int64 {
	if x != nil {
		return x.Round
	}
	return 0
}

func (x *ReceiptLottery) GetNumber() int64 {
	if x != nil {
		return x.Number
	}
	return 0
}

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

func (x *ReceiptLottery) GetLuckyNumber() int64 {
	if x != nil {
		return x.LuckyNumber
	}
	return 0
}

func (x *ReceiptLottery) GetTime() int64 {
	if x != nil {
		return x.Time
	}
	return 0
}

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

func (x *ReceiptLottery) GetUpdateInfo() *LotteryUpdateBuyInfo {
	if x != nil {
		return x.UpdateInfo
	}
	return nil
}

func (x *ReceiptLottery) GetWay() int64 {
	if x != nil {
		return x.Way
	}
	return 0
}

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

func (x *ReceiptLottery) GetTotalAddrNum() int64 {
	if x != nil {
		return x.TotalAddrNum
	}
	return 0
}

func (x *ReceiptLottery) GetBuyAmount() int64 {
	if x != nil {
		return x.BuyAmount
	}
	return 0
}

func (x *ReceiptLottery) GetGainInfos() *LotteryGainInfos {
	if x != nil {
		return x.GainInfos
	}
	return nil
}

func (x *ReceiptLottery) GetLuckyAddrNum() int64 {
	if x != nil {
		return x.LuckyAddrNum
	}
	return 0
}

func (x *ReceiptLottery) GetTotalFund() int64 {
	if x != nil {
		return x.TotalFund
	}
	return 0
}

func (x *ReceiptLottery) GetFactor() int64 {
	if x != nil {
		return x.Factor
	}
	return 0
}

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

	LotteryId string `protobuf:"bytes,1,opt,name=lotteryId,proto3" json:"lotteryId,omitempty"`
}

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

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

func (*ReqLotteryInfo) ProtoMessage() {}

func (x *ReqLotteryInfo) ProtoReflect() protoreflect.Message {
	mi := &file_lottery_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 ReqLotteryInfo.ProtoReflect.Descriptor instead.
func (*ReqLotteryInfo) Descriptor() ([]byte, []int) {
	return file_lottery_proto_rawDescGZIP(), []int{10}
}

func (x *ReqLotteryInfo) GetLotteryId() string {
	if x != nil {
		return x.LotteryId
	}
	return ""
}

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

	LotteryId string `protobuf:"bytes,1,opt,name=lotteryId,proto3" json:"lotteryId,omitempty"`
	Addr      string `protobuf:"bytes,2,opt,name=addr,proto3" json:"addr,omitempty"`
	Round     int64  `protobuf:"varint,3,opt,name=round,proto3" json:"round,omitempty"`
}

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

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

func (*ReqLotteryBuyInfo) ProtoMessage() {}

func (x *ReqLotteryBuyInfo) ProtoReflect() protoreflect.Message {
	mi := &file_lottery_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 ReqLotteryBuyInfo.ProtoReflect.Descriptor instead.
func (*ReqLotteryBuyInfo) Descriptor() ([]byte, []int) {
	return file_lottery_proto_rawDescGZIP(), []int{11}
}

func (x *ReqLotteryBuyInfo) GetLotteryId() string {
	if x != nil {
		return x.LotteryId
	}
	return ""
}

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

func (x *ReqLotteryBuyInfo) GetRound() int64 {
	if x != nil {
		return x.Round
	}
	return 0
}

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

	LotteryId string `protobuf:"bytes,1,opt,name=lotteryId,proto3" json:"lotteryId,omitempty"`
	Addr      string `protobuf:"bytes,2,opt,name=addr,proto3" json:"addr,omitempty"`
	Round     int64  `protobuf:"varint,3,opt,name=round,proto3" json:"round,omitempty"`
	Count     int32  `protobuf:"varint,4,opt,name=count,proto3" json:"count,omitempty"`
	Direction int32  `protobuf:"varint,5,opt,name=direction,proto3" json:"direction,omitempty"`
	Index     int64  `protobuf:"varint,6,opt,name=index,proto3" json:"index,omitempty"`
}

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

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

func (*ReqLotteryBuyHistory) ProtoMessage() {}

func (x *ReqLotteryBuyHistory) ProtoReflect() protoreflect.Message {
	mi := &file_lottery_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 ReqLotteryBuyHistory.ProtoReflect.Descriptor instead.
func (*ReqLotteryBuyHistory) Descriptor() ([]byte, []int) {
	return file_lottery_proto_rawDescGZIP(), []int{12}
}

func (x *ReqLotteryBuyHistory) GetLotteryId() string {
	if x != nil {
		return x.LotteryId
	}
	return ""
}

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

func (x *ReqLotteryBuyHistory) GetRound() int64 {
	if x != nil {
		return x.Round
	}
	return 0
}

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

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

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

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

	LotteryId string  `protobuf:"bytes,1,opt,name=lotteryId,proto3" json:"lotteryId,omitempty"`
	Round     []int64 `protobuf:"varint,2,rep,packed,name=round,proto3" json:"round,omitempty"`
}

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

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

func (*ReqLotteryLuckyInfo) ProtoMessage() {}

func (x *ReqLotteryLuckyInfo) ProtoReflect() protoreflect.Message {
	mi := &file_lottery_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 ReqLotteryLuckyInfo.ProtoReflect.Descriptor instead.
func (*ReqLotteryLuckyInfo) Descriptor() ([]byte, []int) {
	return file_lottery_proto_rawDescGZIP(), []int{13}
}

func (x *ReqLotteryLuckyInfo) GetLotteryId() string {
	if x != nil {
		return x.LotteryId
	}
	return ""
}

func (x *ReqLotteryLuckyInfo) GetRound() []int64 {
	if x != nil {
		return x.Round
	}
	return nil
}

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

	LotteryId string `protobuf:"bytes,1,opt,name=lotteryId,proto3" json:"lotteryId,omitempty"`
	Round     int64  `protobuf:"varint,2,opt,name=round,proto3" json:"round,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"`
}

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

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

func (*ReqLotteryLuckyHistory) ProtoMessage() {}

func (x *ReqLotteryLuckyHistory) ProtoReflect() protoreflect.Message {
	mi := &file_lottery_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 ReqLotteryLuckyHistory.ProtoReflect.Descriptor instead.
func (*ReqLotteryLuckyHistory) Descriptor() ([]byte, []int) {
	return file_lottery_proto_rawDescGZIP(), []int{14}
}

func (x *ReqLotteryLuckyHistory) GetLotteryId() string {
	if x != nil {
		return x.LotteryId
	}
	return ""
}

func (x *ReqLotteryLuckyHistory) GetRound() int64 {
	if x != nil {
		return x.Round
	}
	return 0
}

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

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

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

	CreateHeight   int64  `protobuf:"varint,1,opt,name=createHeight,proto3" json:"createHeight,omitempty"`
	PurBlockNum    int64  `protobuf:"varint,2,opt,name=purBlockNum,proto3" json:"purBlockNum,omitempty"`
	DrawBlockNum   int64  `protobuf:"varint,3,opt,name=drawBlockNum,proto3" json:"drawBlockNum,omitempty"`
	CreateAddr     string `protobuf:"bytes,4,opt,name=createAddr,proto3" json:"createAddr,omitempty"`
	OpRewardRatio  int64  `protobuf:"varint,5,opt,name=opRewardRatio,proto3" json:"opRewardRatio,omitempty"`
	DevRewardRatio int64  `protobuf:"varint,6,opt,name=devRewardRatio,proto3" json:"devRewardRatio,omitempty"`
}

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

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

func (*ReplyLotteryNormalInfo) ProtoMessage() {}

func (x *ReplyLotteryNormalInfo) ProtoReflect() protoreflect.Message {
	mi := &file_lottery_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 ReplyLotteryNormalInfo.ProtoReflect.Descriptor instead.
func (*ReplyLotteryNormalInfo) Descriptor() ([]byte, []int) {
	return file_lottery_proto_rawDescGZIP(), []int{15}
}

func (x *ReplyLotteryNormalInfo) GetCreateHeight() int64 {
	if x != nil {
		return x.CreateHeight
	}
	return 0
}

func (x *ReplyLotteryNormalInfo) GetPurBlockNum() int64 {
	if x != nil {
		return x.PurBlockNum
	}
	return 0
}

func (x *ReplyLotteryNormalInfo) GetDrawBlockNum() int64 {
	if x != nil {
		return x.DrawBlockNum
	}
	return 0
}

func (x *ReplyLotteryNormalInfo) GetCreateAddr() string {
	if x != nil {
		return x.CreateAddr
	}
	return ""
}

func (x *ReplyLotteryNormalInfo) GetOpRewardRatio() int64 {
	if x != nil {
		return x.OpRewardRatio
	}
	return 0
}

func (x *ReplyLotteryNormalInfo) GetDevRewardRatio() int64 {
	if x != nil {
		return x.DevRewardRatio
	}
	return 0
}

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

	Status                     int32            `protobuf:"varint,1,opt,name=status,proto3" json:"status,omitempty"`
	Fund                       int64            `protobuf:"varint,2,opt,name=fund,proto3" json:"fund,omitempty"`
	LastTransToPurState        int64            `protobuf:"varint,3,opt,name=lastTransToPurState,proto3" json:"lastTransToPurState,omitempty"`
	LastTransToDrawState       int64            `protobuf:"varint,4,opt,name=lastTransToDrawState,proto3" json:"lastTransToDrawState,omitempty"`
	TotalPurchasedTxNum        int64            `protobuf:"varint,5,opt,name=totalPurchasedTxNum,proto3" json:"totalPurchasedTxNum,omitempty"`
	Round                      int64            `protobuf:"varint,6,opt,name=round,proto3" json:"round,omitempty"`
	LuckyNumber                int64            `protobuf:"varint,7,opt,name=luckyNumber,proto3" json:"luckyNumber,omitempty"`
	LastTransToPurStateOnMain  int64            `protobuf:"varint,8,opt,name=lastTransToPurStateOnMain,proto3" json:"lastTransToPurStateOnMain,omitempty"`
	LastTransToDrawStateOnMain int64            `protobuf:"varint,9,opt,name=lastTransToDrawStateOnMain,proto3" json:"lastTransToDrawStateOnMain,omitempty"`
	PurBlockNum                int64            `protobuf:"varint,10,opt,name=purBlockNum,proto3" json:"purBlockNum,omitempty"`
	DrawBlockNum               int64            `protobuf:"varint,11,opt,name=drawBlockNum,proto3" json:"drawBlockNum,omitempty"`
	MissingRecords             []*MissingRecord `protobuf:"bytes,12,rep,name=missingRecords,proto3" json:"missingRecords,omitempty"`
	TotalAddrNum               int64            `protobuf:"varint,13,opt,name=totalAddrNum,proto3" json:"totalAddrNum,omitempty"`
	BuyAmount                  int64            `protobuf:"varint,14,opt,name=buyAmount,proto3" json:"buyAmount,omitempty"`
}

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

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

func (*ReplyLotteryCurrentInfo) ProtoMessage() {}

func (x *ReplyLotteryCurrentInfo) ProtoReflect() protoreflect.Message {
	mi := &file_lottery_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 ReplyLotteryCurrentInfo.ProtoReflect.Descriptor instead.
func (*ReplyLotteryCurrentInfo) Descriptor() ([]byte, []int) {
	return file_lottery_proto_rawDescGZIP(), []int{16}
}

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

func (x *ReplyLotteryCurrentInfo) GetFund() int64 {
	if x != nil {
		return x.Fund
	}
	return 0
}

func (x *ReplyLotteryCurrentInfo) GetLastTransToPurState() int64 {
	if x != nil {
		return x.LastTransToPurState
	}
	return 0
}

func (x *ReplyLotteryCurrentInfo) GetLastTransToDrawState() int64 {
	if x != nil {
		return x.LastTransToDrawState
	}
	return 0
}

func (x *ReplyLotteryCurrentInfo) GetTotalPurchasedTxNum() int64 {
	if x != nil {
		return x.TotalPurchasedTxNum
	}
	return 0
}

func (x *ReplyLotteryCurrentInfo) GetRound() int64 {
	if x != nil {
		return x.Round
	}
	return 0
}

func (x *ReplyLotteryCurrentInfo) GetLuckyNumber() int64 {
	if x != nil {
		return x.LuckyNumber
	}
	return 0
}

func (x *ReplyLotteryCurrentInfo) GetLastTransToPurStateOnMain() int64 {
	if x != nil {
		return x.LastTransToPurStateOnMain
	}
	return 0
}

func (x *ReplyLotteryCurrentInfo) GetLastTransToDrawStateOnMain() int64 {
	if x != nil {
		return x.LastTransToDrawStateOnMain
	}
	return 0
}

func (x *ReplyLotteryCurrentInfo) GetPurBlockNum() int64 {
	if x != nil {
		return x.PurBlockNum
	}
	return 0
}

func (x *ReplyLotteryCurrentInfo) GetDrawBlockNum() int64 {
	if x != nil {
		return x.DrawBlockNum
	}
	return 0
}

func (x *ReplyLotteryCurrentInfo) GetMissingRecords() []*MissingRecord {
	if x != nil {
		return x.MissingRecords
	}
	return nil
}

func (x *ReplyLotteryCurrentInfo) GetTotalAddrNum() int64 {
	if x != nil {
		return x.TotalAddrNum
	}
	return 0
}

func (x *ReplyLotteryCurrentInfo) GetBuyAmount() int64 {
	if x != nil {
		return x.BuyAmount
	}
	return 0
}

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

	LuckyNumber []int64 `protobuf:"varint,1,rep,packed,name=luckyNumber,proto3" json:"luckyNumber,omitempty"`
}

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

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

func (*ReplyLotteryHistoryLuckyNumber) ProtoMessage() {}

func (x *ReplyLotteryHistoryLuckyNumber) ProtoReflect() protoreflect.Message {
	mi := &file_lottery_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 ReplyLotteryHistoryLuckyNumber.ProtoReflect.Descriptor instead.
func (*ReplyLotteryHistoryLuckyNumber) Descriptor() ([]byte, []int) {
	return file_lottery_proto_rawDescGZIP(), []int{17}
}

func (x *ReplyLotteryHistoryLuckyNumber) GetLuckyNumber() []int64 {
	if x != nil {
		return x.LuckyNumber
	}
	return nil
}

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

	Records []*LotteryBuyRecord `protobuf:"bytes,1,rep,name=records,proto3" json:"records,omitempty"`
}

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

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

func (*ReplyLotteryShowInfo) ProtoMessage() {}

func (x *ReplyLotteryShowInfo) ProtoReflect() protoreflect.Message {
	mi := &file_lottery_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 ReplyLotteryShowInfo.ProtoReflect.Descriptor instead.
func (*ReplyLotteryShowInfo) Descriptor() ([]byte, []int) {
	return file_lottery_proto_rawDescGZIP(), []int{18}
}

func (x *ReplyLotteryShowInfo) GetRecords() []*LotteryBuyRecord {
	if x != nil {
		return x.Records
	}
	return nil
}

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

	Number int64 `protobuf:"varint,1,opt,name=number,proto3" json:"number,omitempty"`
	Amount int64 `protobuf:"varint,2,opt,name=amount,proto3" json:"amount,omitempty"`
}

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

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

func (*LotteryNumberRecord) ProtoMessage() {}

func (x *LotteryNumberRecord) ProtoReflect() protoreflect.Message {
	mi := &file_lottery_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 LotteryNumberRecord.ProtoReflect.Descriptor instead.
func (*LotteryNumberRecord) Descriptor() ([]byte, []int) {
	return file_lottery_proto_rawDescGZIP(), []int{19}
}

func (x *LotteryNumberRecord) GetNumber() int64 {
	if x != nil {
		return x.Number
	}
	return 0
}

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

// used for execlocal
type LotteryBuyRecord struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Number int64  `protobuf:"varint,1,opt,name=number,proto3" json:"number,omitempty"`
	Amount int64  `protobuf:"varint,2,opt,name=amount,proto3" json:"amount,omitempty"`
	Round  int64  `protobuf:"varint,3,opt,name=round,proto3" json:"round,omitempty"`
	Type   int64  `protobuf:"varint,4,opt,name=type,proto3" json:"type,omitempty"`
	Way    int64  `protobuf:"varint,5,opt,name=way,proto3" json:"way,omitempty"`
	Index  int64  `protobuf:"varint,6,opt,name=index,proto3" json:"index,omitempty"`
	Time   int64  `protobuf:"varint,7,opt,name=time,proto3" json:"time,omitempty"`
	TxHash string `protobuf:"bytes,8,opt,name=txHash,proto3" json:"txHash,omitempty"`
}

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

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

func (*LotteryBuyRecord) ProtoMessage() {}

func (x *LotteryBuyRecord) ProtoReflect() protoreflect.Message {
	mi := &file_lottery_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 LotteryBuyRecord.ProtoReflect.Descriptor instead.
func (*LotteryBuyRecord) Descriptor() ([]byte, []int) {
	return file_lottery_proto_rawDescGZIP(), []int{20}
}

func (x *LotteryBuyRecord) GetNumber() int64 {
	if x != nil {
		return x.Number
	}
	return 0
}

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

func (x *LotteryBuyRecord) GetRound() int64 {
	if x != nil {
		return x.Round
	}
	return 0
}

func (x *LotteryBuyRecord) GetType() int64 {
	if x != nil {
		return x.Type
	}
	return 0
}

func (x *LotteryBuyRecord) GetWay() int64 {
	if x != nil {
		return x.Way
	}
	return 0
}

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

func (x *LotteryBuyRecord) GetTime() int64 {
	if x != nil {
		return x.Time
	}
	return 0
}

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

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

	Records []*LotteryBuyRecord `protobuf:"bytes,1,rep,name=records,proto3" json:"records,omitempty"`
}

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

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

func (*LotteryBuyRecords) ProtoMessage() {}

func (x *LotteryBuyRecords) ProtoReflect() protoreflect.Message {
	mi := &file_lottery_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 LotteryBuyRecords.ProtoReflect.Descriptor instead.
func (*LotteryBuyRecords) Descriptor() ([]byte, []int) {
	return file_lottery_proto_rawDescGZIP(), []int{21}
}

func (x *LotteryBuyRecords) GetRecords() []*LotteryBuyRecord {
	if x != nil {
		return x.Records
	}
	return nil
}

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

	Number       int64  `protobuf:"varint,1,opt,name=number,proto3" json:"number,omitempty"`
	Round        int64  `protobuf:"varint,2,opt,name=round,proto3" json:"round,omitempty"`
	Time         int64  `protobuf:"varint,3,opt,name=time,proto3" json:"time,omitempty"`
	TxHash       string `protobuf:"bytes,4,opt,name=txHash,proto3" json:"txHash,omitempty"`
	TotalAddrNum int64  `protobuf:"varint,5,opt,name=totalAddrNum,proto3" json:"totalAddrNum,omitempty"`
	BuyAmount    int64  `protobuf:"varint,6,opt,name=buyAmount,proto3" json:"buyAmount,omitempty"`
	LuckyAddrNum int64  `protobuf:"varint,7,opt,name=luckyAddrNum,proto3" json:"luckyAddrNum,omitempty"`
	TotalFund    int64  `protobuf:"varint,8,opt,name=totalFund,proto3" json:"totalFund,omitempty"`
	Factor       int64  `protobuf:"varint,9,opt,name=factor,proto3" json:"factor,omitempty"`
}

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

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

func (*LotteryDrawRecord) ProtoMessage() {}

func (x *LotteryDrawRecord) ProtoReflect() protoreflect.Message {
	mi := &file_lottery_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 LotteryDrawRecord.ProtoReflect.Descriptor instead.
func (*LotteryDrawRecord) Descriptor() ([]byte, []int) {
	return file_lottery_proto_rawDescGZIP(), []int{22}
}

func (x *LotteryDrawRecord) GetNumber() int64 {
	if x != nil {
		return x.Number
	}
	return 0
}

func (x *LotteryDrawRecord) GetRound() int64 {
	if x != nil {
		return x.Round
	}
	return 0
}

func (x *LotteryDrawRecord) GetTime() int64 {
	if x != nil {
		return x.Time
	}
	return 0
}

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

func (x *LotteryDrawRecord) GetTotalAddrNum() int64 {
	if x != nil {
		return x.TotalAddrNum
	}
	return 0
}

func (x *LotteryDrawRecord) GetBuyAmount() int64 {
	if x != nil {
		return x.BuyAmount
	}
	return 0
}

func (x *LotteryDrawRecord) GetLuckyAddrNum() int64 {
	if x != nil {
		return x.LuckyAddrNum
	}
	return 0
}

func (x *LotteryDrawRecord) GetTotalFund() int64 {
	if x != nil {
		return x.TotalFund
	}
	return 0
}

func (x *LotteryDrawRecord) GetFactor() int64 {
	if x != nil {
		return x.Factor
	}
	return 0
}

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

	Records []*LotteryDrawRecord `protobuf:"bytes,1,rep,name=records,proto3" json:"records,omitempty"`
}

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

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

func (*LotteryDrawRecords) ProtoMessage() {}

func (x *LotteryDrawRecords) ProtoReflect() protoreflect.Message {
	mi := &file_lottery_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 LotteryDrawRecords.ProtoReflect.Descriptor instead.
func (*LotteryDrawRecords) Descriptor() ([]byte, []int) {
	return file_lottery_proto_rawDescGZIP(), []int{23}
}

func (x *LotteryDrawRecords) GetRecords() []*LotteryDrawRecord {
	if x != nil {
		return x.Records
	}
	return nil
}

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

	Index int64 `protobuf:"varint,1,opt,name=index,proto3" json:"index,omitempty"`
	Type  int64 `protobuf:"varint,2,opt,name=type,proto3" json:"type,omitempty"`
}

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

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

func (*LotteryUpdateRec) ProtoMessage() {}

func (x *LotteryUpdateRec) ProtoReflect() protoreflect.Message {
	mi := &file_lottery_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 LotteryUpdateRec.ProtoReflect.Descriptor instead.
func (*LotteryUpdateRec) Descriptor() ([]byte, []int) {
	return file_lottery_proto_rawDescGZIP(), []int{24}
}

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

func (x *LotteryUpdateRec) GetType() int64 {
	if x != nil {
		return x.Type
	}
	return 0
}

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

	Records []*LotteryUpdateRec `protobuf:"bytes,1,rep,name=records,proto3" json:"records,omitempty"`
}

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

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

func (*LotteryUpdateRecs) ProtoMessage() {}

func (x *LotteryUpdateRecs) ProtoReflect() protoreflect.Message {
	mi := &file_lottery_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 LotteryUpdateRecs.ProtoReflect.Descriptor instead.
func (*LotteryUpdateRecs) Descriptor() ([]byte, []int) {
	return file_lottery_proto_rawDescGZIP(), []int{25}
}

func (x *LotteryUpdateRecs) GetRecords() []*LotteryUpdateRec {
	if x != nil {
		return x.Records
	}
	return nil
}

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

	BuyInfo map[string]*LotteryUpdateRecs `protobuf:"bytes,1,rep,name=buyInfo,proto3" json:"buyInfo,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
}

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

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

func (*LotteryUpdateBuyInfo) ProtoMessage() {}

func (x *LotteryUpdateBuyInfo) ProtoReflect() protoreflect.Message {
	mi := &file_lottery_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 LotteryUpdateBuyInfo.ProtoReflect.Descriptor instead.
func (*LotteryUpdateBuyInfo) Descriptor() ([]byte, []int) {
	return file_lottery_proto_rawDescGZIP(), []int{26}
}

func (x *LotteryUpdateBuyInfo) GetBuyInfo() map[string]*LotteryUpdateRecs {
	if x != nil {
		return x.BuyInfo
	}
	return nil
}

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

	Address []string `protobuf:"bytes,1,rep,name=address,proto3" json:"address,omitempty"`
}

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

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

func (*ReplyLotteryPurchaseAddr) ProtoMessage() {}

func (x *ReplyLotteryPurchaseAddr) ProtoReflect() protoreflect.Message {
	mi := &file_lottery_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 ReplyLotteryPurchaseAddr.ProtoReflect.Descriptor instead.
func (*ReplyLotteryPurchaseAddr) Descriptor() ([]byte, []int) {
	return file_lottery_proto_rawDescGZIP(), []int{27}
}

func (x *ReplyLotteryPurchaseAddr) GetAddress() []string {
	if x != nil {
		return x.Address
	}
	return nil
}

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

	Gains []*LotteryGainInfo `protobuf:"bytes,1,rep,name=gains,proto3" json:"gains,omitempty"`
}

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

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

func (*LotteryGainInfos) ProtoMessage() {}

func (x *LotteryGainInfos) ProtoReflect() protoreflect.Message {
	mi := &file_lottery_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 LotteryGainInfos.ProtoReflect.Descriptor instead.
func (*LotteryGainInfos) Descriptor() ([]byte, []int) {
	return file_lottery_proto_rawDescGZIP(), []int{28}
}

func (x *LotteryGainInfos) GetGains() []*LotteryGainInfo {
	if x != nil {
		return x.Gains
	}
	return nil
}

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

	Addr       string `protobuf:"bytes,1,opt,name=addr,proto3" json:"addr,omitempty"`
	BuyAmount  int64  `protobuf:"varint,2,opt,name=buyAmount,proto3" json:"buyAmount,omitempty"`
	FundAmount int64  `protobuf:"varint,3,opt,name=fundAmount,proto3" json:"fundAmount,omitempty"`
}

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

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

func (*LotteryGainInfo) ProtoMessage() {}

func (x *LotteryGainInfo) ProtoReflect() protoreflect.Message {
	mi := &file_lottery_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 LotteryGainInfo.ProtoReflect.Descriptor instead.
func (*LotteryGainInfo) Descriptor() ([]byte, []int) {
	return file_lottery_proto_rawDescGZIP(), []int{29}
}

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

func (x *LotteryGainInfo) GetBuyAmount() int64 {
	if x != nil {
		return x.BuyAmount
	}
	return 0
}

func (x *LotteryGainInfo) GetFundAmount() int64 {
	if x != nil {
		return x.FundAmount
	}
	return 0
}

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

	Addr       string `protobuf:"bytes,1,opt,name=addr,proto3" json:"addr,omitempty"`
	BuyAmount  int64  `protobuf:"varint,2,opt,name=buyAmount,proto3" json:"buyAmount,omitempty"`
	FundAmount int64  `protobuf:"varint,3,opt,name=fundAmount,proto3" json:"fundAmount,omitempty"`
	Round      int64  `protobuf:"varint,4,opt,name=round,proto3" json:"round,omitempty"`
}

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

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

func (*LotteryGainRecord) ProtoMessage() {}

func (x *LotteryGainRecord) ProtoReflect() protoreflect.Message {
	mi := &file_lottery_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 LotteryGainRecord.ProtoReflect.Descriptor instead.
func (*LotteryGainRecord) Descriptor() ([]byte, []int) {
	return file_lottery_proto_rawDescGZIP(), []int{30}
}

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

func (x *LotteryGainRecord) GetBuyAmount() int64 {
	if x != nil {
		return x.BuyAmount
	}
	return 0
}

func (x *LotteryGainRecord) GetFundAmount() int64 {
	if x != nil {
		return x.FundAmount
	}
	return 0
}

func (x *LotteryGainRecord) GetRound() int64 {
	if x != nil {
		return x.Round
	}
	return 0
}

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

	Records []*LotteryGainRecord `protobuf:"bytes,1,rep,name=records,proto3" json:"records,omitempty"`
}

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

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

func (*LotteryGainRecords) ProtoMessage() {}

func (x *LotteryGainRecords) ProtoReflect() protoreflect.Message {
	mi := &file_lottery_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 LotteryGainRecords.ProtoReflect.Descriptor instead.
func (*LotteryGainRecords) Descriptor() ([]byte, []int) {
	return file_lottery_proto_rawDescGZIP(), []int{31}
}

func (x *LotteryGainRecords) GetRecords() []*LotteryGainRecord {
	if x != nil {
		return x.Records
	}
	return nil
}

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

	LotteryId string `protobuf:"bytes,1,opt,name=lotteryId,proto3" json:"lotteryId,omitempty"`
	Addr      string `protobuf:"bytes,2,opt,name=addr,proto3" json:"addr,omitempty"`
	Round     int64  `protobuf:"varint,3,opt,name=round,proto3" json:"round,omitempty"`
	Count     int32  `protobuf:"varint,4,opt,name=count,proto3" json:"count,omitempty"`
	Direction int32  `protobuf:"varint,5,opt,name=direction,proto3" json:"direction,omitempty"`
}

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

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

func (*ReqLotteryGainHistory) ProtoMessage() {}

func (x *ReqLotteryGainHistory) ProtoReflect() protoreflect.Message {
	mi := &file_lottery_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 ReqLotteryGainHistory.ProtoReflect.Descriptor instead.
func (*ReqLotteryGainHistory) Descriptor() ([]byte, []int) {
	return file_lottery_proto_rawDescGZIP(), []int{32}
}

func (x *ReqLotteryGainHistory) GetLotteryId() string {
	if x != nil {
		return x.LotteryId
	}
	return ""
}

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

func (x *ReqLotteryGainHistory) GetRound() int64 {
	if x != nil {
		return x.Round
	}
	return 0
}

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

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

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

	LotteryId string `protobuf:"bytes,1,opt,name=lotteryId,proto3" json:"lotteryId,omitempty"`
	Addr      string `protobuf:"bytes,2,opt,name=addr,proto3" json:"addr,omitempty"`
	Round     int64  `protobuf:"varint,3,opt,name=round,proto3" json:"round,omitempty"`
}

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

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

func (*ReqLotteryGainInfo) ProtoMessage() {}

func (x *ReqLotteryGainInfo) ProtoReflect() protoreflect.Message {
	mi := &file_lottery_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 ReqLotteryGainInfo.ProtoReflect.Descriptor instead.
func (*ReqLotteryGainInfo) Descriptor() ([]byte, []int) {
	return file_lottery_proto_rawDescGZIP(), []int{33}
}

func (x *ReqLotteryGainInfo) GetLotteryId() string {
	if x != nil {
		return x.LotteryId
	}
	return ""
}

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

func (x *ReqLotteryGainInfo) GetRound() int64 {
	if x != nil {
		return x.Round
	}
	return 0
}

var File_lottery_proto protoreflect.FileDescriptor

var file_lottery_proto_rawDesc = []byte{
	0x0a, 0x0d, 0x6c, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12,
	0x05, 0x74, 0x79, 0x70, 0x65, 0x73, 0x22, 0x68, 0x0a, 0x0e, 0x50, 0x75, 0x72, 0x63, 0x68, 0x61,
	0x73, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x6d, 0x6f, 0x75,
	0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74,
	0x12, 0x16, 0x0a, 0x06, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03,
	0x52, 0x06, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x69, 0x6e, 0x64, 0x65,
	0x78, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x10,
	0x0a, 0x03, 0x77, 0x61, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x77, 0x61, 0x79,
	0x22, 0x96, 0x01, 0x0a, 0x0f, 0x50, 0x75, 0x72, 0x63, 0x68, 0x61, 0x73, 0x65, 0x52, 0x65, 0x63,
	0x6f, 0x72, 0x64, 0x73, 0x12, 0x2d, 0x0a, 0x06, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x18, 0x01,
	0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x50, 0x75, 0x72,
	0x63, 0x68, 0x61, 0x73, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x52, 0x06, 0x72, 0x65, 0x63,
	0x6f, 0x72, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x66, 0x75, 0x6e, 0x64, 0x57, 0x69, 0x6e, 0x18, 0x02,
	0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x66, 0x75, 0x6e, 0x64, 0x57, 0x69, 0x6e, 0x12, 0x26, 0x0a,
	0x0e, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x4f, 0x6e, 0x65, 0x52, 0x6f, 0x75, 0x6e, 0x64, 0x18,
	0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0e, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x4f, 0x6e, 0x65,
	0x52, 0x6f, 0x75, 0x6e, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x61, 0x64, 0x64, 0x72, 0x18, 0x04, 0x20,
	0x01, 0x28, 0x09, 0x52, 0x04, 0x61, 0x64, 0x64, 0x72, 0x22, 0xd5, 0x06, 0x0a, 0x07, 0x4c, 0x6f,
	0x74, 0x74, 0x65, 0x72, 0x79, 0x12, 0x1c, 0x0a, 0x09, 0x6c, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79,
	0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6c, 0x6f, 0x74, 0x74, 0x65, 0x72,
	0x79, 0x49, 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, 0x22, 0x0a, 0x0c, 0x63,
	0x72, 0x65, 0x61, 0x74, 0x65, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28,
	0x03, 0x52, 0x0c, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12,
	0x12, 0x0a, 0x04, 0x66, 0x75, 0x6e, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x66,
	0x75, 0x6e, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x70, 0x75, 0x72, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x4e,
	0x75, 0x6d, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x70, 0x75, 0x72, 0x42, 0x6c, 0x6f,
	0x63, 0x6b, 0x4e, 0x75, 0x6d, 0x12, 0x22, 0x0a, 0x0c, 0x64, 0x72, 0x61, 0x77, 0x42, 0x6c, 0x6f,
	0x63, 0x6b, 0x4e, 0x75, 0x6d, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x64, 0x72, 0x61,
	0x77, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x4e, 0x75, 0x6d, 0x12, 0x30, 0x0a, 0x13, 0x6c, 0x61, 0x73,
	0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x54, 0x6f, 0x50, 0x75, 0x72, 0x53, 0x74, 0x61, 0x74, 0x65,
	0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x13, 0x6c, 0x61, 0x73, 0x74, 0x54, 0x72, 0x61, 0x6e,
	0x73, 0x54, 0x6f, 0x50, 0x75, 0x72, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x32, 0x0a, 0x14, 0x6c,
	0x61, 0x73, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x54, 0x6f, 0x44, 0x72, 0x61, 0x77, 0x53, 0x74,
	0x61, 0x74, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x03, 0x52, 0x14, 0x6c, 0x61, 0x73, 0x74, 0x54,
	0x72, 0x61, 0x6e, 0x73, 0x54, 0x6f, 0x44, 0x72, 0x61, 0x77, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12,
	0x30, 0x0a, 0x13, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x50, 0x75, 0x72, 0x63, 0x68, 0x61, 0x73, 0x65,
	0x64, 0x54, 0x78, 0x4e, 0x75, 0x6d, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x03, 0x52, 0x13, 0x74, 0x6f,
	0x74, 0x61, 0x6c, 0x50, 0x75, 0x72, 0x63, 0x68, 0x61, 0x73, 0x65, 0x64, 0x54, 0x78, 0x4e, 0x75,
	0x6d, 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x64, 0x64, 0x72, 0x18,
	0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x64, 0x64,
	0x72, 0x12, 0x14, 0x0a, 0x05, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x03,
	0x52, 0x05, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x6c, 0x75, 0x63, 0x6b, 0x79,
	0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x6c, 0x75,
	0x63, 0x6b, 0x79, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x22, 0x0a, 0x0c, 0x63, 0x72, 0x65,
	0x61, 0x74, 0x65, 0x4f, 0x6e, 0x4d, 0x61, 0x69, 0x6e, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x03, 0x52,
	0x0c, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4f, 0x6e, 0x4d, 0x61, 0x69, 0x6e, 0x12, 0x3c, 0x0a,
	0x19, 0x6c, 0x61, 0x73, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x54, 0x6f, 0x50, 0x75, 0x72, 0x53,
	0x74, 0x61, 0x74, 0x65, 0x4f, 0x6e, 0x4d, 0x61, 0x69, 0x6e, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x03,
	0x52, 0x19, 0x6c, 0x61, 0x73, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x54, 0x6f, 0x50, 0x75, 0x72,
	0x53, 0x74, 0x61, 0x74, 0x65, 0x4f, 0x6e, 0x4d, 0x61, 0x69, 0x6e, 0x12, 0x3e, 0x0a, 0x1a, 0x6c,
	0x61, 0x73, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x54, 0x6f, 0x44, 0x72, 0x61, 0x77, 0x53, 0x74,
	0x61, 0x74, 0x65, 0x4f, 0x6e, 0x4d, 0x61, 0x69, 0x6e, 0x18, 0x10, 0x20, 0x01, 0x28, 0x03, 0x52,
	0x1a, 0x6c, 0x61, 0x73, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x54, 0x6f, 0x44, 0x72, 0x61, 0x77,
	0x53, 0x74, 0x61, 0x74, 0x65, 0x4f, 0x6e, 0x4d, 0x61, 0x69, 0x6e, 0x12, 0x3c, 0x0a, 0x0e, 0x6d,
	0x69, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x18, 0x11, 0x20,
	0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4d, 0x69, 0x73, 0x73,
	0x69, 0x6e, 0x67, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x52, 0x0e, 0x6d, 0x69, 0x73, 0x73, 0x69,
	0x6e, 0x67, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x12, 0x24, 0x0a, 0x0d, 0x6f, 0x70, 0x52,
	0x65, 0x77, 0x61, 0x72, 0x64, 0x52, 0x61, 0x74, 0x69, 0x6f, 0x18, 0x12, 0x20, 0x01, 0x28, 0x03,
	0x52, 0x0d, 0x6f, 0x70, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x52, 0x61, 0x74, 0x69, 0x6f, 0x12,
	0x26, 0x0a, 0x0e, 0x64, 0x65, 0x76, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x52, 0x61, 0x74, 0x69,
	0x6f, 0x18, 0x13, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0e, 0x64, 0x65, 0x76, 0x52, 0x65, 0x77, 0x61,
	0x72, 0x64, 0x52, 0x61, 0x74, 0x69, 0x6f, 0x12, 0x36, 0x0a, 0x0a, 0x70, 0x75, 0x72, 0x52, 0x65,
	0x63, 0x6f, 0x72, 0x64, 0x73, 0x18, 0x14, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x74, 0x79,
	0x70, 0x65, 0x73, 0x2e, 0x50, 0x75, 0x72, 0x63, 0x68, 0x61, 0x73, 0x65, 0x52, 0x65, 0x63, 0x6f,
	0x72, 0x64, 0x73, 0x52, 0x0a, 0x70, 0x75, 0x72, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x12,
	0x22, 0x0a, 0x0c, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x41, 0x64, 0x64, 0x72, 0x4e, 0x75, 0x6d, 0x18,
	0x15, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x41, 0x64, 0x64, 0x72,
	0x4e, 0x75, 0x6d, 0x12, 0x1c, 0x0a, 0x09, 0x62, 0x75, 0x79, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74,
	0x18, 0x16, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x62, 0x75, 0x79, 0x41, 0x6d, 0x6f, 0x75, 0x6e,
	0x74, 0x22, 0x25, 0x0a, 0x0d, 0x4d, 0x69, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x63, 0x6f,
	0x72, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28,
	0x05, 0x52, 0x05, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x22, 0xd6, 0x01, 0x0a, 0x0d, 0x4c, 0x6f, 0x74,
	0x74, 0x65, 0x72, 0x79, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2e, 0x0a, 0x06, 0x63, 0x72,
	0x65, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x74, 0x79, 0x70,
	0x65, 0x73, 0x2e, 0x4c, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65,
	0x48, 0x00, 0x52, 0x06, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x12, 0x25, 0x0a, 0x03, 0x62, 0x75,
	0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e,
	0x4c, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, 0x42, 0x75, 0x79, 0x48, 0x00, 0x52, 0x03, 0x62, 0x75,
	0x79, 0x12, 0x28, 0x0a, 0x04, 0x64, 0x72, 0x61, 0x77, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32,
	0x12, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4c, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, 0x44,
	0x72, 0x61, 0x77, 0x48, 0x00, 0x52, 0x04, 0x64, 0x72, 0x61, 0x77, 0x12, 0x2b, 0x0a, 0x05, 0x63,
	0x6c, 0x6f, 0x73, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x74, 0x79, 0x70,
	0x65, 0x73, 0x2e, 0x4c, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, 0x43, 0x6c, 0x6f, 0x73, 0x65, 0x48,
	0x00, 0x52, 0x05, 0x63, 0x6c, 0x6f, 0x73, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x74, 0x79, 0x18, 0x0a,
	0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x74, 0x79, 0x42, 0x07, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75,
	0x65, 0x22, 0xa3, 0x01, 0x0a, 0x0d, 0x4c, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, 0x43, 0x72, 0x65,
	0x61, 0x74, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x70, 0x75, 0x72, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x4e,
	0x75, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x70, 0x75, 0x72, 0x42, 0x6c, 0x6f,
	0x63, 0x6b, 0x4e, 0x75, 0x6d, 0x12, 0x22, 0x0a, 0x0c, 0x64, 0x72, 0x61, 0x77, 0x42, 0x6c, 0x6f,
	0x63, 0x6b, 0x4e, 0x75, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x64, 0x72, 0x61,
	0x77, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x4e, 0x75, 0x6d, 0x12, 0x24, 0x0a, 0x0d, 0x6f, 0x70, 0x52,
	0x65, 0x77, 0x61, 0x72, 0x64, 0x52, 0x61, 0x74, 0x69, 0x6f, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03,
	0x52, 0x0d, 0x6f, 0x70, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x52, 0x61, 0x74, 0x69, 0x6f, 0x12,
	0x26, 0x0a, 0x0e, 0x64, 0x65, 0x76, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x52, 0x61, 0x74, 0x69,
	0x6f, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0e, 0x64, 0x65, 0x76, 0x52, 0x65, 0x77, 0x61,
	0x72, 0x64, 0x52, 0x61, 0x74, 0x69, 0x6f, 0x22, 0x6c, 0x0a, 0x0a, 0x4c, 0x6f, 0x74, 0x74, 0x65,
	0x72, 0x79, 0x42, 0x75, 0x79, 0x12, 0x1c, 0x0a, 0x09, 0x6c, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79,
	0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6c, 0x6f, 0x74, 0x74, 0x65, 0x72,
	0x79, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20,
	0x01, 0x28, 0x03, 0x52, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x6e,
	0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x6e, 0x75, 0x6d,
	0x62, 0x65, 0x72, 0x12, 0x10, 0x0a, 0x03, 0x77, 0x61, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03,
	0x52, 0x03, 0x77, 0x61, 0x79, 0x22, 0x2b, 0x0a, 0x0b, 0x4c, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79,
	0x44, 0x72, 0x61, 0x77, 0x12, 0x1c, 0x0a, 0x09, 0x6c, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, 0x49,
	0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6c, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79,
	0x49, 0x64, 0x22, 0x2c, 0x0a, 0x0c, 0x4c, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, 0x43, 0x6c, 0x6f,
	0x73, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x6c, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, 0x49, 0x64, 0x18,
	0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6c, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, 0x49, 0x64,
	0x22, 0xc6, 0x04, 0x0a, 0x0e, 0x52, 0x65, 0x63, 0x65, 0x69, 0x70, 0x74, 0x4c, 0x6f, 0x74, 0x74,
	0x65, 0x72, 0x79, 0x12, 0x1c, 0x0a, 0x09, 0x6c, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, 0x49, 0x64,
	0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6c, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, 0x49,
	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, 0x1e, 0x0a, 0x0a, 0x70, 0x72, 0x65,
	0x76, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x70,
	0x72, 0x65, 0x76, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x61, 0x64, 0x64,
	0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x61, 0x64, 0x64, 0x72, 0x12, 0x14, 0x0a,
	0x05, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x72, 0x6f,
	0x75, 0x6e, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x06, 0x20,
	0x01, 0x28, 0x03, 0x52, 0x06, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x61,
	0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x61, 0x6d, 0x6f,
	0x75, 0x6e, 0x74, 0x12, 0x20, 0x0a, 0x0b, 0x6c, 0x75, 0x63, 0x6b, 0x79, 0x4e, 0x75, 0x6d, 0x62,
	0x65, 0x72, 0x18, 0x08, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x6c, 0x75, 0x63, 0x6b, 0x79, 0x4e,
	0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x09, 0x20,
	0x01, 0x28, 0x03, 0x52, 0x04, 0x74, 0x69, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x74, 0x78, 0x48,
	0x61, 0x73, 0x68, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x78, 0x48, 0x61, 0x73,
	0x68, 0x12, 0x3b, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x18,
	0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4c, 0x6f,
	0x74, 0x74, 0x65, 0x72, 0x79, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x42, 0x75, 0x79, 0x49, 0x6e,
	0x66, 0x6f, 0x52, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x10,
	0x0a, 0x03, 0x77, 0x61, 0x79, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x77, 0x61, 0x79,
	0x12, 0x14, 0x0a, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x03, 0x52,
	0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x22, 0x0a, 0x0c, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x41,
	0x64, 0x64, 0x72, 0x4e, 0x75, 0x6d, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x74, 0x6f,
	0x74, 0x61, 0x6c, 0x41, 0x64, 0x64, 0x72, 0x4e, 0x75, 0x6d, 0x12, 0x1c, 0x0a, 0x09, 0x62, 0x75,
	0x79, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x62,
	0x75, 0x79, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x35, 0x0a, 0x09, 0x67, 0x61, 0x69, 0x6e,
	0x49, 0x6e, 0x66, 0x6f, 0x73, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x74, 0x79,
	0x70, 0x65, 0x73, 0x2e, 0x4c, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, 0x47, 0x61, 0x69, 0x6e, 0x49,
	0x6e, 0x66, 0x6f, 0x73, 0x52, 0x09, 0x67, 0x61, 0x69, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x73, 0x12,
	0x22, 0x0a, 0x0c, 0x6c, 0x75, 0x63, 0x6b, 0x79, 0x41, 0x64, 0x64, 0x72, 0x4e, 0x75, 0x6d, 0x18,
	0x11, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x6c, 0x75, 0x63, 0x6b, 0x79, 0x41, 0x64, 0x64, 0x72,
	0x4e, 0x75, 0x6d, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x46, 0x75, 0x6e, 0x64,
	0x18, 0x12, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x46, 0x75, 0x6e,
	0x64, 0x12, 0x16, 0x0a, 0x06, 0x66, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x13, 0x20, 0x01, 0x28,
	0x03, 0x52, 0x06, 0x66, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x22, 0x2e, 0x0a, 0x0e, 0x52, 0x65, 0x71,
	0x4c, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1c, 0x0a, 0x09, 0x6c,
	0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09,
	0x6c, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, 0x49, 0x64, 0x22, 0x5b, 0x0a, 0x11, 0x52, 0x65, 0x71,
	0x4c, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, 0x42, 0x75, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1c,
	0x0a, 0x09, 0x6c, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28,
	0x09, 0x52, 0x09, 0x6c, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04,
	0x61, 0x64, 0x64, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x61, 0x64, 0x64, 0x72,
	0x12, 0x14, 0x0a, 0x05, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52,
	0x05, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x22, 0xa8, 0x01, 0x0a, 0x14, 0x52, 0x65, 0x71, 0x4c, 0x6f,
	0x74, 0x74, 0x65, 0x72, 0x79, 0x42, 0x75, 0x79, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x12,
	0x1c, 0x0a, 0x09, 0x6c, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01,
	0x28, 0x09, 0x52, 0x09, 0x6c, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, 0x49, 0x64, 0x12, 0x12, 0x0a,
	0x04, 0x61, 0x64, 0x64, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x61, 0x64, 0x64,
	0x72, 0x12, 0x14, 0x0a, 0x05, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03,
	0x52, 0x05, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74,
	0x18, 0x04, 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, 0x05, 0x20, 0x01, 0x28, 0x05,
	0x52, 0x09, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x69,
	0x6e, 0x64, 0x65, 0x78, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x69, 0x6e, 0x64, 0x65,
	0x78, 0x22, 0x49, 0x0a, 0x13, 0x52, 0x65, 0x71, 0x4c, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, 0x4c,
	0x75, 0x63, 0x6b, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1c, 0x0a, 0x09, 0x6c, 0x6f, 0x74, 0x74,
	0x65, 0x72, 0x79, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6c, 0x6f, 0x74,
	0x74, 0x65, 0x72, 0x79, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x18,
	0x02, 0x20, 0x03, 0x28, 0x03, 0x52, 0x05, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x22, 0x80, 0x01, 0x0a,
	0x16, 0x52, 0x65, 0x71, 0x4c, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, 0x4c, 0x75, 0x63, 0x6b, 0x79,
	0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x1c, 0x0a, 0x09, 0x6c, 0x6f, 0x74, 0x74, 0x65,
	0x72, 0x79, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6c, 0x6f, 0x74, 0x74,
	0x65, 0x72, 0x79, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x18, 0x02,
	0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x72, 0x6f, 0x75, 0x6e, 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, 0x22,
	0xf0, 0x01, 0x0a, 0x16, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x4c, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79,
	0x4e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x22, 0x0a, 0x0c, 0x63, 0x72,
	0x65, 0x61, 0x74, 0x65, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03,
	0x52, 0x0c, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x20,
	0x0a, 0x0b, 0x70, 0x75, 0x72, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x4e, 0x75, 0x6d, 0x18, 0x02, 0x20,
	0x01, 0x28, 0x03, 0x52, 0x0b, 0x70, 0x75, 0x72, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x4e, 0x75, 0x6d,
	0x12, 0x22, 0x0a, 0x0c, 0x64, 0x72, 0x61, 0x77, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x4e, 0x75, 0x6d,
	0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x64, 0x72, 0x61, 0x77, 0x42, 0x6c, 0x6f, 0x63,
	0x6b, 0x4e, 0x75, 0x6d, 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x64,
	0x64, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65,
	0x41, 0x64, 0x64, 0x72, 0x12, 0x24, 0x0a, 0x0d, 0x6f, 0x70, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64,
	0x52, 0x61, 0x74, 0x69, 0x6f, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0d, 0x6f, 0x70, 0x52,
	0x65, 0x77, 0x61, 0x72, 0x64, 0x52, 0x61, 0x74, 0x69, 0x6f, 0x12, 0x26, 0x0a, 0x0e, 0x64, 0x65,
	0x76, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x52, 0x61, 0x74, 0x69, 0x6f, 0x18, 0x06, 0x20, 0x01,
	0x28, 0x03, 0x52, 0x0e, 0x64, 0x65, 0x76, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x52, 0x61, 0x74,
	0x69, 0x6f, 0x22, 0xd9, 0x04, 0x0a, 0x17, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x4c, 0x6f, 0x74, 0x74,
	0x65, 0x72, 0x79, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x49, 0x6e, 0x66, 0x6f, 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, 0x12, 0x0a, 0x04, 0x66, 0x75, 0x6e, 0x64, 0x18, 0x02,
	0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x66, 0x75, 0x6e, 0x64, 0x12, 0x30, 0x0a, 0x13, 0x6c, 0x61,
	0x73, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x54, 0x6f, 0x50, 0x75, 0x72, 0x53, 0x74, 0x61, 0x74,
	0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x13, 0x6c, 0x61, 0x73, 0x74, 0x54, 0x72, 0x61,
	0x6e, 0x73, 0x54, 0x6f, 0x50, 0x75, 0x72, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x32, 0x0a, 0x14,
	0x6c, 0x61, 0x73, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x54, 0x6f, 0x44, 0x72, 0x61, 0x77, 0x53,
	0x74, 0x61, 0x74, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x14, 0x6c, 0x61, 0x73, 0x74,
	0x54, 0x72, 0x61, 0x6e, 0x73, 0x54, 0x6f, 0x44, 0x72, 0x61, 0x77, 0x53, 0x74, 0x61, 0x74, 0x65,
	0x12, 0x30, 0x0a, 0x13, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x50, 0x75, 0x72, 0x63, 0x68, 0x61, 0x73,
	0x65, 0x64, 0x54, 0x78, 0x4e, 0x75, 0x6d, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x13, 0x74,
	0x6f, 0x74, 0x61, 0x6c, 0x50, 0x75, 0x72, 0x63, 0x68, 0x61, 0x73, 0x65, 0x64, 0x54, 0x78, 0x4e,
	0x75, 0x6d, 0x12, 0x14, 0x0a, 0x05, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28,
	0x03, 0x52, 0x05, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x6c, 0x75, 0x63, 0x6b,
	0x79, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x6c,
	0x75, 0x63, 0x6b, 0x79, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x3c, 0x0a, 0x19, 0x6c, 0x61,
	0x73, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x54, 0x6f, 0x50, 0x75, 0x72, 0x53, 0x74, 0x61, 0x74,
	0x65, 0x4f, 0x6e, 0x4d, 0x61, 0x69, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x03, 0x52, 0x19, 0x6c,
	0x61, 0x73, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x54, 0x6f, 0x50, 0x75, 0x72, 0x53, 0x74, 0x61,
	0x74, 0x65, 0x4f, 0x6e, 0x4d, 0x61, 0x69, 0x6e, 0x12, 0x3e, 0x0a, 0x1a, 0x6c, 0x61, 0x73, 0x74,
	0x54, 0x72, 0x61, 0x6e, 0x73, 0x54, 0x6f, 0x44, 0x72, 0x61, 0x77, 0x53, 0x74, 0x61, 0x74, 0x65,
	0x4f, 0x6e, 0x4d, 0x61, 0x69, 0x6e, 0x18, 0x09, 0x20, 0x01, 0x28, 0x03, 0x52, 0x1a, 0x6c, 0x61,
	0x73, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x54, 0x6f, 0x44, 0x72, 0x61, 0x77, 0x53, 0x74, 0x61,
	0x74, 0x65, 0x4f, 0x6e, 0x4d, 0x61, 0x69, 0x6e, 0x12, 0x20, 0x0a, 0x0b, 0x70, 0x75, 0x72, 0x42,
	0x6c, 0x6f, 0x63, 0x6b, 0x4e, 0x75, 0x6d, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x70,
	0x75, 0x72, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x4e, 0x75, 0x6d, 0x12, 0x22, 0x0a, 0x0c, 0x64, 0x72,
	0x61, 0x77, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x4e, 0x75, 0x6d, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x03,
	0x52, 0x0c, 0x64, 0x72, 0x61, 0x77, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x4e, 0x75, 0x6d, 0x12, 0x3c,
	0x0a, 0x0e, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73,
	0x18, 0x0c, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4d,
	0x69, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x52, 0x0e, 0x6d, 0x69,
	0x73, 0x73, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x12, 0x22, 0x0a, 0x0c,
	0x74, 0x6f, 0x74, 0x61, 0x6c, 0x41, 0x64, 0x64, 0x72, 0x4e, 0x75, 0x6d, 0x18, 0x0d, 0x20, 0x01,
	0x28, 0x03, 0x52, 0x0c, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x41, 0x64, 0x64, 0x72, 0x4e, 0x75, 0x6d,
	0x12, 0x1c, 0x0a, 0x09, 0x62, 0x75, 0x79, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x0e, 0x20,
	0x01, 0x28, 0x03, 0x52, 0x09, 0x62, 0x75, 0x79, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x42,
	0x0a, 0x1e, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x4c, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, 0x48, 0x69,
	0x73, 0x74, 0x6f, 0x72, 0x79, 0x4c, 0x75, 0x63, 0x6b, 0x79, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72,
	0x12, 0x20, 0x0a, 0x0b, 0x6c, 0x75, 0x63, 0x6b, 0x79, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18,
	0x01, 0x20, 0x03, 0x28, 0x03, 0x52, 0x0b, 0x6c, 0x75, 0x63, 0x6b, 0x79, 0x4e, 0x75, 0x6d, 0x62,
	0x65, 0x72, 0x22, 0x49, 0x0a, 0x14, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x4c, 0x6f, 0x74, 0x74, 0x65,
	0x72, 0x79, 0x53, 0x68, 0x6f, 0x77, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x31, 0x0a, 0x07, 0x72, 0x65,
	0x63, 0x6f, 0x72, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x74, 0x79,
	0x70, 0x65, 0x73, 0x2e, 0x4c, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, 0x42, 0x75, 0x79, 0x52, 0x65,
	0x63, 0x6f, 0x72, 0x64, 0x52, 0x07, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x22, 0x45, 0x0a,
	0x13, 0x4c, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x65,
	0x63, 0x6f, 0x72, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x01,
	0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x6e, 0x75, 0x6d, 0x62, 0x65, 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, 0xc0, 0x01, 0x0a, 0x10, 0x4c, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79,
	0x42, 0x75, 0x79, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x6e, 0x75, 0x6d,
	0x62, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x6e, 0x75, 0x6d, 0x62, 0x65,
	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, 0x12, 0x14, 0x0a, 0x05, 0x72, 0x6f, 0x75,
	0x6e, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x12,
	0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x74,
	0x79, 0x70, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x77, 0x61, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03,
	0x52, 0x03, 0x77, 0x61, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x06,
	0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x12, 0x0a, 0x04, 0x74,
	0x69, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x74, 0x69, 0x6d, 0x65, 0x12,
	0x16, 0x0a, 0x06, 0x74, 0x78, 0x48, 0x61, 0x73, 0x68, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52,
	0x06, 0x74, 0x78, 0x48, 0x61, 0x73, 0x68, 0x22, 0x46, 0x0a, 0x11, 0x4c, 0x6f, 0x74, 0x74, 0x65,
	0x72, 0x79, 0x42, 0x75, 0x79, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x12, 0x31, 0x0a, 0x07,
	0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e,
	0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4c, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, 0x42, 0x75, 0x79,
	0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x52, 0x07, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x22,
	0x89, 0x02, 0x0a, 0x11, 0x4c, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, 0x44, 0x72, 0x61, 0x77, 0x52,
	0x65, 0x63, 0x6f, 0x72, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18,
	0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x14, 0x0a,
	0x05, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x72, 0x6f,
	0x75, 0x6e, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28,
	0x03, 0x52, 0x04, 0x74, 0x69, 0x6d, 0x65, 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,
	0x22, 0x0a, 0x0c, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x41, 0x64, 0x64, 0x72, 0x4e, 0x75, 0x6d, 0x18,
	0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x41, 0x64, 0x64, 0x72,
	0x4e, 0x75, 0x6d, 0x12, 0x1c, 0x0a, 0x09, 0x62, 0x75, 0x79, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74,
	0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x62, 0x75, 0x79, 0x41, 0x6d, 0x6f, 0x75, 0x6e,
	0x74, 0x12, 0x22, 0x0a, 0x0c, 0x6c, 0x75, 0x63, 0x6b, 0x79, 0x41, 0x64, 0x64, 0x72, 0x4e, 0x75,
	0x6d, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x6c, 0x75, 0x63, 0x6b, 0x79, 0x41, 0x64,
	0x64, 0x72, 0x4e, 0x75, 0x6d, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x46, 0x75,
	0x6e, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x46,
	0x75, 0x6e, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x66, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x09, 0x20,
	0x01, 0x28, 0x03, 0x52, 0x06, 0x66, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x22, 0x48, 0x0a, 0x12, 0x4c,
	0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, 0x44, 0x72, 0x61, 0x77, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64,
	0x73, 0x12, 0x32, 0x0a, 0x07, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03,
	0x28, 0x0b, 0x32, 0x18, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4c, 0x6f, 0x74, 0x74, 0x65,
	0x72, 0x79, 0x44, 0x72, 0x61, 0x77, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x52, 0x07, 0x72, 0x65,
	0x63, 0x6f, 0x72, 0x64, 0x73, 0x22, 0x3c, 0x0a, 0x10, 0x4c, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79,
	0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x63, 0x12, 0x14, 0x0a, 0x05, 0x69, 0x6e, 0x64,
	0x65, 0x78, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x12,
	0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x74,
	0x79, 0x70, 0x65, 0x22, 0x46, 0x0a, 0x11, 0x4c, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, 0x55, 0x70,
	0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x63, 0x73, 0x12, 0x31, 0x0a, 0x07, 0x72, 0x65, 0x63, 0x6f,
	0x72, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x74, 0x79, 0x70, 0x65,
	0x73, 0x2e, 0x4c, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52,
	0x65, 0x63, 0x52, 0x07, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x22, 0xb0, 0x01, 0x0a, 0x14,
	0x4c, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x42, 0x75, 0x79,
	0x49, 0x6e, 0x66, 0x6f, 0x12, 0x42, 0x0a, 0x07, 0x62, 0x75, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x18,
	0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4c, 0x6f,
	0x74, 0x74, 0x65, 0x72, 0x79, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x42, 0x75, 0x79, 0x49, 0x6e,
	0x66, 0x6f, 0x2e, 0x42, 0x75, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52,
	0x07, 0x62, 0x75, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x1a, 0x54, 0x0a, 0x0c, 0x42, 0x75, 0x79, 0x49,
	0x6e, 0x66, 0x6f, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18,
	0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x2e, 0x0a, 0x05, 0x76, 0x61,
	0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x74, 0x79, 0x70, 0x65,
	0x73, 0x2e, 0x4c, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52,
	0x65, 0x63, 0x73, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x34,
	0x0a, 0x18, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x4c, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, 0x50, 0x75,
	0x72, 0x63, 0x68, 0x61, 0x73, 0x65, 0x41, 0x64, 0x64, 0x72, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x64,
	0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x61, 0x64, 0x64,
	0x72, 0x65, 0x73, 0x73, 0x22, 0x40, 0x0a, 0x10, 0x4c, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, 0x47,
	0x61, 0x69, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x73, 0x12, 0x2c, 0x0a, 0x05, 0x67, 0x61, 0x69, 0x6e,
	0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e,
	0x4c, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, 0x47, 0x61, 0x69, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x52,
	0x05, 0x67, 0x61, 0x69, 0x6e, 0x73, 0x22, 0x63, 0x0a, 0x0f, 0x4c, 0x6f, 0x74, 0x74, 0x65, 0x72,
	0x79, 0x47, 0x61, 0x69, 0x6e, 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, 0x1c, 0x0a,
	0x09, 0x62, 0x75, 0x79, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03,
	0x52, 0x09, 0x62, 0x75, 0x79, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x66,
	0x75, 0x6e, 0x64, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52,
	0x0a, 0x66, 0x75, 0x6e, 0x64, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x7b, 0x0a, 0x11, 0x4c,
	0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, 0x47, 0x61, 0x69, 0x6e, 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, 0x1c, 0x0a, 0x09, 0x62, 0x75, 0x79, 0x41, 0x6d, 0x6f, 0x75, 0x6e,
	0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x62, 0x75, 0x79, 0x41, 0x6d, 0x6f, 0x75,
	0x6e, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x75, 0x6e, 0x64, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74,
	0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x66, 0x75, 0x6e, 0x64, 0x41, 0x6d, 0x6f, 0x75,
	0x6e, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28,
	0x03, 0x52, 0x05, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x22, 0x48, 0x0a, 0x12, 0x4c, 0x6f, 0x74, 0x74,
	0x65, 0x72, 0x79, 0x47, 0x61, 0x69, 0x6e, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x12, 0x32,
	0x0a, 0x07, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32,
	0x18, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4c, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, 0x47,
	0x61, 0x69, 0x6e, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x52, 0x07, 0x72, 0x65, 0x63, 0x6f, 0x72,
	0x64, 0x73, 0x22, 0x93, 0x01, 0x0a, 0x15, 0x52, 0x65, 0x71, 0x4c, 0x6f, 0x74, 0x74, 0x65, 0x72,
	0x79, 0x47, 0x61, 0x69, 0x6e, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x1c, 0x0a, 0x09,
	0x6c, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
	0x09, 0x6c, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x61, 0x64,
	0x64, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x61, 0x64, 0x64, 0x72, 0x12, 0x14,
	0x0a, 0x05, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x72,
	0x6f, 0x75, 0x6e, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x04, 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, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x64,
	0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x5c, 0x0a, 0x12, 0x52, 0x65, 0x71, 0x4c,
	0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, 0x47, 0x61, 0x69, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1c,
	0x0a, 0x09, 0x6c, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28,
	0x09, 0x52, 0x09, 0x6c, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04,
	0x61, 0x64, 0x64, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x61, 0x64, 0x64, 0x72,
	0x12, 0x14, 0x0a, 0x05, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52,
	0x05, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x42, 0x0a, 0x5a, 0x08, 0x2e, 0x2e, 0x2f, 0x74, 0x79, 0x70,
	0x65, 0x73, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
}

var (
	file_lottery_proto_rawDescOnce sync.Once
	file_lottery_proto_rawDescData = file_lottery_proto_rawDesc
)

func file_lottery_proto_rawDescGZIP() []byte {
	file_lottery_proto_rawDescOnce.Do(func() {
		file_lottery_proto_rawDescData = protoimpl.X.CompressGZIP(file_lottery_proto_rawDescData)
	})
	return file_lottery_proto_rawDescData
}

var file_lottery_proto_msgTypes = make([]protoimpl.MessageInfo, 35)
var file_lottery_proto_goTypes = []interface{}{
	(*PurchaseRecord)(nil),                 // 0: types.PurchaseRecord
	(*PurchaseRecords)(nil),                // 1: types.PurchaseRecords
	(*Lottery)(nil),                        // 2: types.Lottery
	(*MissingRecord)(nil),                  // 3: types.MissingRecord
	(*LotteryAction)(nil),                  // 4: types.LotteryAction
	(*LotteryCreate)(nil),                  // 5: types.LotteryCreate
	(*LotteryBuy)(nil),                     // 6: types.LotteryBuy
	(*LotteryDraw)(nil),                    // 7: types.LotteryDraw
	(*LotteryClose)(nil),                   // 8: types.LotteryClose
	(*ReceiptLottery)(nil),                 // 9: types.ReceiptLottery
	(*ReqLotteryInfo)(nil),                 // 10: types.ReqLotteryInfo
	(*ReqLotteryBuyInfo)(nil),              // 11: types.ReqLotteryBuyInfo
	(*ReqLotteryBuyHistory)(nil),           // 12: types.ReqLotteryBuyHistory
	(*ReqLotteryLuckyInfo)(nil),            // 13: types.ReqLotteryLuckyInfo
	(*ReqLotteryLuckyHistory)(nil),         // 14: types.ReqLotteryLuckyHistory
	(*ReplyLotteryNormalInfo)(nil),         // 15: types.ReplyLotteryNormalInfo
	(*ReplyLotteryCurrentInfo)(nil),        // 16: types.ReplyLotteryCurrentInfo
	(*ReplyLotteryHistoryLuckyNumber)(nil), // 17: types.ReplyLotteryHistoryLuckyNumber
	(*ReplyLotteryShowInfo)(nil),           // 18: types.ReplyLotteryShowInfo
	(*LotteryNumberRecord)(nil),            // 19: types.LotteryNumberRecord
	(*LotteryBuyRecord)(nil),               // 20: types.LotteryBuyRecord
	(*LotteryBuyRecords)(nil),              // 21: types.LotteryBuyRecords
	(*LotteryDrawRecord)(nil),              // 22: types.LotteryDrawRecord
	(*LotteryDrawRecords)(nil),             // 23: types.LotteryDrawRecords
	(*LotteryUpdateRec)(nil),               // 24: types.LotteryUpdateRec
	(*LotteryUpdateRecs)(nil),              // 25: types.LotteryUpdateRecs
	(*LotteryUpdateBuyInfo)(nil),           // 26: types.LotteryUpdateBuyInfo
	(*ReplyLotteryPurchaseAddr)(nil),       // 27: types.ReplyLotteryPurchaseAddr
	(*LotteryGainInfos)(nil),               // 28: types.LotteryGainInfos
	(*LotteryGainInfo)(nil),                // 29: types.LotteryGainInfo
	(*LotteryGainRecord)(nil),              // 30: types.LotteryGainRecord
	(*LotteryGainRecords)(nil),             // 31: types.LotteryGainRecords
	(*ReqLotteryGainHistory)(nil),          // 32: types.ReqLotteryGainHistory
	(*ReqLotteryGainInfo)(nil),             // 33: types.ReqLotteryGainInfo
	nil,                                    // 34: types.LotteryUpdateBuyInfo.BuyInfoEntry
}
var file_lottery_proto_depIdxs = []int32{
	0,  // 0: types.PurchaseRecords.record:type_name -> types.PurchaseRecord
	3,  // 1: types.Lottery.missingRecords:type_name -> types.MissingRecord
	1,  // 2: types.Lottery.purRecords:type_name -> types.PurchaseRecords
	5,  // 3: types.LotteryAction.create:type_name -> types.LotteryCreate
	6,  // 4: types.LotteryAction.buy:type_name -> types.LotteryBuy
	7,  // 5: types.LotteryAction.draw:type_name -> types.LotteryDraw
	8,  // 6: types.LotteryAction.close:type_name -> types.LotteryClose
	26, // 7: types.ReceiptLottery.updateInfo:type_name -> types.LotteryUpdateBuyInfo
	28, // 8: types.ReceiptLottery.gainInfos:type_name -> types.LotteryGainInfos
	3,  // 9: types.ReplyLotteryCurrentInfo.missingRecords:type_name -> types.MissingRecord
	20, // 10: types.ReplyLotteryShowInfo.records:type_name -> types.LotteryBuyRecord
	20, // 11: types.LotteryBuyRecords.records:type_name -> types.LotteryBuyRecord
	22, // 12: types.LotteryDrawRecords.records:type_name -> types.LotteryDrawRecord
	24, // 13: types.LotteryUpdateRecs.records:type_name -> types.LotteryUpdateRec
	34, // 14: types.LotteryUpdateBuyInfo.buyInfo:type_name -> types.LotteryUpdateBuyInfo.BuyInfoEntry
	29, // 15: types.LotteryGainInfos.gains:type_name -> types.LotteryGainInfo
	30, // 16: types.LotteryGainRecords.records:type_name -> types.LotteryGainRecord
	25, // 17: types.LotteryUpdateBuyInfo.BuyInfoEntry.value:type_name -> types.LotteryUpdateRecs
	18, // [18:18] is the sub-list for method output_type
	18, // [18:18] is the sub-list for method input_type
	18, // [18:18] is the sub-list for extension type_name
	18, // [18:18] is the sub-list for extension extendee
	0,  // [0:18] is the sub-list for field type_name
}

func init() { file_lottery_proto_init() }
func file_lottery_proto_init() {
	if File_lottery_proto != nil {
		return
	}
	if !protoimpl.UnsafeEnabled {
		file_lottery_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*PurchaseRecord); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_lottery_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*PurchaseRecords); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_lottery_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Lottery); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_lottery_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*MissingRecord); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_lottery_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*LotteryAction); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_lottery_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*LotteryCreate); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_lottery_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*LotteryBuy); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_lottery_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*LotteryDraw); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_lottery_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*LotteryClose); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_lottery_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ReceiptLottery); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_lottery_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ReqLotteryInfo); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_lottery_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ReqLotteryBuyInfo); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_lottery_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ReqLotteryBuyHistory); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_lottery_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ReqLotteryLuckyInfo); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_lottery_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ReqLotteryLuckyHistory); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_lottery_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ReplyLotteryNormalInfo); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_lottery_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ReplyLotteryCurrentInfo); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_lottery_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ReplyLotteryHistoryLuckyNumber); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_lottery_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ReplyLotteryShowInfo); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_lottery_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*LotteryNumberRecord); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_lottery_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*LotteryBuyRecord); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_lottery_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*LotteryBuyRecords); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_lottery_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*LotteryDrawRecord); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_lottery_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*LotteryDrawRecords); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_lottery_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*LotteryUpdateRec); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_lottery_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*LotteryUpdateRecs); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_lottery_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*LotteryUpdateBuyInfo); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_lottery_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ReplyLotteryPurchaseAddr); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_lottery_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*LotteryGainInfos); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_lottery_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*LotteryGainInfo); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_lottery_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*LotteryGainRecord); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_lottery_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*LotteryGainRecords); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_lottery_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ReqLotteryGainHistory); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_lottery_proto_msgTypes[33].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ReqLotteryGainInfo); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
	}
	file_lottery_proto_msgTypes[4].OneofWrappers = []interface{}{
		(*LotteryAction_Create)(nil),
		(*LotteryAction_Buy)(nil),
		(*LotteryAction_Draw)(nil),
		(*LotteryAction_Close)(nil),
	}
	type x struct{}
	out := protoimpl.TypeBuilder{
		File: protoimpl.DescBuilder{
			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
			RawDescriptor: file_lottery_proto_rawDesc,
			NumEnums:      0,
			NumMessages:   35,
			NumExtensions: 0,
			NumServices:   0,
		},
		GoTypes:           file_lottery_proto_goTypes,
		DependencyIndexes: file_lottery_proto_depIdxs,
		MessageInfos:      file_lottery_proto_msgTypes,
	}.Build()
	File_lottery_proto = out.File
	file_lottery_proto_rawDesc = nil
	file_lottery_proto_goTypes = nil
	file_lottery_proto_depIdxs = nil
}
