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

package types

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

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

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

//////////////////////////////////////////////////////////////////////////////
// message for Privacy
// start/////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////
type PrivacyAction struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Types that are assignable to Value:
	//	*PrivacyAction_Public2Privacy
	//	*PrivacyAction_Privacy2Privacy
	//	*PrivacyAction_Privacy2Public
	Value isPrivacyAction_Value `protobuf_oneof:"value"`
	Ty    int32                 `protobuf:"varint,4,opt,name=ty,proto3" json:"ty,omitempty"`
}

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

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

func (*PrivacyAction) ProtoMessage() {}

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

func (m *PrivacyAction) GetValue() isPrivacyAction_Value {
	if m != nil {
		return m.Value
	}
	return nil
}

func (x *PrivacyAction) GetPublic2Privacy() *Public2Privacy {
	if x, ok := x.GetValue().(*PrivacyAction_Public2Privacy); ok {
		return x.Public2Privacy
	}
	return nil
}

func (x *PrivacyAction) GetPrivacy2Privacy() *Privacy2Privacy {
	if x, ok := x.GetValue().(*PrivacyAction_Privacy2Privacy); ok {
		return x.Privacy2Privacy
	}
	return nil
}

func (x *PrivacyAction) GetPrivacy2Public() *Privacy2Public {
	if x, ok := x.GetValue().(*PrivacyAction_Privacy2Public); ok {
		return x.Privacy2Public
	}
	return nil
}

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

type isPrivacyAction_Value interface {
	isPrivacyAction_Value()
}

type PrivacyAction_Public2Privacy struct {
	Public2Privacy *Public2Privacy `protobuf:"bytes,1,opt,name=public2privacy,proto3,oneof"`
}

type PrivacyAction_Privacy2Privacy struct {
	Privacy2Privacy *Privacy2Privacy `protobuf:"bytes,2,opt,name=privacy2privacy,proto3,oneof"`
}

type PrivacyAction_Privacy2Public struct {
	Privacy2Public *Privacy2Public `protobuf:"bytes,3,opt,name=privacy2public,proto3,oneof"`
}

func (*PrivacyAction_Public2Privacy) isPrivacyAction_Value() {}

func (*PrivacyAction_Privacy2Privacy) isPrivacyAction_Value() {}

func (*PrivacyAction_Privacy2Public) isPrivacyAction_Value() {}

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

	Tokenname string         `protobuf:"bytes,1,opt,name=tokenname,proto3" json:"tokenname,omitempty"`
	Amount    int64          `protobuf:"varint,2,opt,name=amount,proto3" json:"amount,omitempty"`
	Note      string         `protobuf:"bytes,5,opt,name=note,proto3" json:"note,omitempty"`
	Output    *PrivacyOutput `protobuf:"bytes,7,opt,name=output,proto3" json:"output,omitempty"`
	AssetExec string         `protobuf:"bytes,8,opt,name=assetExec,proto3" json:"assetExec,omitempty"`
}

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

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

func (*Public2Privacy) ProtoMessage() {}

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

func (x *Public2Privacy) GetTokenname() string {
	if x != nil {
		return x.Tokenname
	}
	return ""
}

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

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

func (x *Public2Privacy) GetOutput() *PrivacyOutput {
	if x != nil {
		return x.Output
	}
	return nil
}

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

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

	Tokenname string         `protobuf:"bytes,1,opt,name=tokenname,proto3" json:"tokenname,omitempty"`
	Amount    int64          `protobuf:"varint,2,opt,name=amount,proto3" json:"amount,omitempty"`
	Note      string         `protobuf:"bytes,5,opt,name=note,proto3" json:"note,omitempty"`
	Input     *PrivacyInput  `protobuf:"bytes,6,opt,name=input,proto3" json:"input,omitempty"`
	Output    *PrivacyOutput `protobuf:"bytes,7,opt,name=output,proto3" json:"output,omitempty"`
	AssetExec string         `protobuf:"bytes,8,opt,name=assetExec,proto3" json:"assetExec,omitempty"`
}

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

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

func (*Privacy2Privacy) ProtoMessage() {}

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

func (x *Privacy2Privacy) GetTokenname() string {
	if x != nil {
		return x.Tokenname
	}
	return ""
}

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

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

func (x *Privacy2Privacy) GetInput() *PrivacyInput {
	if x != nil {
		return x.Input
	}
	return nil
}

func (x *Privacy2Privacy) GetOutput() *PrivacyOutput {
	if x != nil {
		return x.Output
	}
	return nil
}

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

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

	Tokenname string         `protobuf:"bytes,1,opt,name=tokenname,proto3" json:"tokenname,omitempty"`
	Amount    int64          `protobuf:"varint,2,opt,name=amount,proto3" json:"amount,omitempty"`
	Note      string         `protobuf:"bytes,3,opt,name=note,proto3" json:"note,omitempty"`
	To        string         `protobuf:"bytes,6,opt,name=to,proto3" json:"to,omitempty"`
	Input     *PrivacyInput  `protobuf:"bytes,4,opt,name=input,proto3" json:"input,omitempty"`
	Output    *PrivacyOutput `protobuf:"bytes,5,opt,name=output,proto3" json:"output,omitempty"`
	AssetExec string         `protobuf:"bytes,8,opt,name=assetExec,proto3" json:"assetExec,omitempty"`
}

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

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

func (*Privacy2Public) ProtoMessage() {}

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

func (x *Privacy2Public) GetTokenname() string {
	if x != nil {
		return x.Tokenname
	}
	return ""
}

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

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

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

func (x *Privacy2Public) GetInput() *PrivacyInput {
	if x != nil {
		return x.Input
	}
	return nil
}

func (x *Privacy2Public) GetOutput() *PrivacyOutput {
	if x != nil {
		return x.Output
	}
	return nil
}

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

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

	//	int64 height   = 1;
	//	int32 txindex  = 2;
	Txhash   []byte `protobuf:"bytes,3,opt,name=txhash,proto3" json:"txhash,omitempty"`
	Outindex int32  `protobuf:"varint,4,opt,name=outindex,proto3" json:"outindex,omitempty"`
}

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

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

func (*UTXOGlobalIndex) ProtoMessage() {}

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

func (x *UTXOGlobalIndex) GetTxhash() []byte {
	if x != nil {
		return x.Txhash
	}
	return nil
}

func (x *UTXOGlobalIndex) GetOutindex() int32 {
	if x != nil {
		return x.Outindex
	}
	return 0
}

// privacy input
type KeyInput struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Amount          int64              `protobuf:"varint,1,opt,name=amount,proto3" json:"amount,omitempty"`
	UtxoGlobalIndex []*UTXOGlobalIndex `protobuf:"bytes,2,rep,name=utxoGlobalIndex,proto3" json:"utxoGlobalIndex,omitempty"`
	KeyImage        []byte             `protobuf:"bytes,3,opt,name=keyImage,proto3" json:"keyImage,omitempty"`
}

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

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

func (*KeyInput) ProtoMessage() {}

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

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

func (x *KeyInput) GetUtxoGlobalIndex() []*UTXOGlobalIndex {
	if x != nil {
		return x.UtxoGlobalIndex
	}
	return nil
}

func (x *KeyInput) GetKeyImage() []byte {
	if x != nil {
		return x.KeyImage
	}
	return nil
}

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

	Keyinput []*KeyInput `protobuf:"bytes,1,rep,name=keyinput,proto3" json:"keyinput,omitempty"`
}

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

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

func (*PrivacyInput) ProtoMessage() {}

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

func (x *PrivacyInput) GetKeyinput() []*KeyInput {
	if x != nil {
		return x.Keyinput
	}
	return nil
}

// privacy output
type KeyOutput struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Amount        int64  `protobuf:"varint,1,opt,name=amount,proto3" json:"amount,omitempty"`
	Onetimepubkey []byte `protobuf:"bytes,2,opt,name=onetimepubkey,proto3" json:"onetimepubkey,omitempty"`
}

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

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

func (*KeyOutput) ProtoMessage() {}

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

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

func (x *KeyOutput) GetOnetimepubkey() []byte {
	if x != nil {
		return x.Onetimepubkey
	}
	return nil
}

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

	RpubKeytx []byte       `protobuf:"bytes,1,opt,name=RpubKeytx,proto3" json:"RpubKeytx,omitempty"`
	Keyoutput []*KeyOutput `protobuf:"bytes,2,rep,name=keyoutput,proto3" json:"keyoutput,omitempty"`
}

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

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

func (*PrivacyOutput) ProtoMessage() {}

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

func (x *PrivacyOutput) GetRpubKeytx() []byte {
	if x != nil {
		return x.RpubKeytx
	}
	return nil
}

func (x *PrivacyOutput) GetKeyoutput() []*KeyOutput {
	if x != nil {
		return x.Keyoutput
	}
	return nil
}

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

	Amount          int64              `protobuf:"varint,1,opt,name=amount,proto3" json:"amount,omitempty"`
	UtxoGlobalIndex []*UTXOGlobalIndex `protobuf:"bytes,2,rep,name=utxoGlobalIndex,proto3" json:"utxoGlobalIndex,omitempty"`
}

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

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

func (*GroupUTXOGlobalIndex) ProtoMessage() {}

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

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

func (x *GroupUTXOGlobalIndex) GetUtxoGlobalIndex() []*UTXOGlobalIndex {
	if x != nil {
		return x.UtxoGlobalIndex
	}
	return nil
}

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

	Height        int64  `protobuf:"varint,1,opt,name=height,proto3" json:"height,omitempty"`
	Txindex       int32  `protobuf:"varint,2,opt,name=txindex,proto3" json:"txindex,omitempty"`
	Outindex      int32  `protobuf:"varint,3,opt,name=outindex,proto3" json:"outindex,omitempty"`
	Txhash        []byte `protobuf:"bytes,4,opt,name=txhash,proto3" json:"txhash,omitempty"`
	Onetimepubkey []byte `protobuf:"bytes,5,opt,name=onetimepubkey,proto3" json:"onetimepubkey,omitempty"`
}

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

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

func (*LocalUTXOItem) ProtoMessage() {}

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

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

func (x *LocalUTXOItem) GetTxindex() int32 {
	if x != nil {
		return x.Txindex
	}
	return 0
}

func (x *LocalUTXOItem) GetOutindex() int32 {
	if x != nil {
		return x.Outindex
	}
	return 0
}

func (x *LocalUTXOItem) GetTxhash() []byte {
	if x != nil {
		return x.Txhash
	}
	return nil
}

func (x *LocalUTXOItem) GetOnetimepubkey() []byte {
	if x != nil {
		return x.Onetimepubkey
	}
	return nil
}

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

	TokenName            string                  `protobuf:"bytes,1,opt,name=tokenName,proto3" json:"tokenName,omitempty"`
	GroupUTXOGlobalIndex []*GroupUTXOGlobalIndex `protobuf:"bytes,2,rep,name=groupUTXOGlobalIndex,proto3" json:"groupUTXOGlobalIndex,omitempty"`
}

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

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

func (*ReqUTXOPubKeys) ProtoMessage() {}

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

func (x *ReqUTXOPubKeys) GetTokenName() string {
	if x != nil {
		return x.TokenName
	}
	return ""
}

func (x *ReqUTXOPubKeys) GetGroupUTXOGlobalIndex() []*GroupUTXOGlobalIndex {
	if x != nil {
		return x.GroupUTXOGlobalIndex
	}
	return nil
}

// 一个公钥信息
type PublicKeyData struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Data [][]byte `protobuf:"bytes,1,rep,name=data,proto3" json:"data,omitempty"`
}

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

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

func (*PublicKeyData) ProtoMessage() {}

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

func (x *PublicKeyData) GetData() [][]byte {
	if x != nil {
		return x.Data
	}
	return nil
}

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

	Amount int64 `protobuf:"varint,1,opt,name=amount,proto3" json:"amount,omitempty"`
	// 输出签名的所有公钥
	Pubkey [][]byte `protobuf:"bytes,2,rep,name=pubkey,proto3" json:"pubkey,omitempty"`
}

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

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

func (*GroupUTXOPubKey) ProtoMessage() {}

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

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

func (x *GroupUTXOPubKey) GetPubkey() [][]byte {
	if x != nil {
		return x.Pubkey
	}
	return nil
}

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

	GroupUTXOPubKeys []*GroupUTXOPubKey `protobuf:"bytes,1,rep,name=groupUTXOPubKeys,proto3" json:"groupUTXOPubKeys,omitempty"`
}

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

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

func (*ResUTXOPubKeys) ProtoMessage() {}

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

func (x *ResUTXOPubKeys) GetGroupUTXOPubKeys() []*GroupUTXOPubKey {
	if x != nil {
		return x.GroupUTXOPubKeys
	}
	return nil
}

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

	AssetExec   string `protobuf:"bytes,1,opt,name=assetExec,proto3" json:"assetExec,omitempty"`
	AssetSymbol string `protobuf:"bytes,2,opt,name=assetSymbol,proto3" json:"assetSymbol,omitempty"`
	Amount      int64  `protobuf:"varint,3,opt,name=amount,proto3" json:"amount,omitempty"`
}

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

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

func (*ReqPrivacyToken) ProtoMessage() {}

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

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

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

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

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

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

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

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

func (*AmountDetail) ProtoMessage() {}

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

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

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

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

	AmountDetail []*AmountDetail `protobuf:"bytes,1,rep,name=amountDetail,proto3" json:"amountDetail,omitempty"`
}

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

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

func (*ReplyPrivacyAmounts) ProtoMessage() {}

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

func (x *ReplyPrivacyAmounts) GetAmountDetail() []*AmountDetail {
	if x != nil {
		return x.AmountDetail
	}
	return nil
}

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

	LocalUTXOItems []*LocalUTXOItem `protobuf:"bytes,1,rep,name=localUTXOItems,proto3" json:"localUTXOItems,omitempty"`
}

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

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

func (*ReplyUTXOsOfAmount) ProtoMessage() {}

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

func (x *ReplyUTXOsOfAmount) GetLocalUTXOItems() []*LocalUTXOItem {
	if x != nil {
		return x.LocalUTXOItems
	}
	return nil
}

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

	AssetExec   string       `protobuf:"bytes,1,opt,name=assetExec,proto3" json:"assetExec,omitempty"`
	AssetSymbol string       `protobuf:"bytes,2,opt,name=assetSymbol,proto3" json:"assetSymbol,omitempty"`
	Keyoutput   []*KeyOutput `protobuf:"bytes,3,rep,name=keyoutput,proto3" json:"keyoutput,omitempty"`
}

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

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

func (*ReceiptPrivacyOutput) ProtoMessage() {}

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

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

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

func (x *ReceiptPrivacyOutput) GetKeyoutput() []*KeyOutput {
	if x != nil {
		return x.Keyoutput
	}
	return nil
}

//各种amount额度的UTXO在链上的数量
type AmountsOfUTXO struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	AmountMap map[int64]int64 `protobuf:"bytes,1,rep,name=amountMap,proto3" json:"amountMap,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"`
}

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

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

func (*AmountsOfUTXO) ProtoMessage() {}

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

func (x *AmountsOfUTXO) GetAmountMap() map[int64]int64 {
	if x != nil {
		return x.AmountMap
	}
	return nil
}

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

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

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

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

func (*TokenNamesOfUTXO) ProtoMessage() {}

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

func (x *TokenNamesOfUTXO) GetTokensMap() map[string]string {
	if x != nil {
		return x.TokensMap
	}
	return nil
}

// 用以转换成json后继续可见的结构
type UTXOGlobalIndex4Print struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Txhash   string `protobuf:"bytes,1,opt,name=txhash,proto3" json:"txhash,omitempty"`
	Outindex int32  `protobuf:"varint,2,opt,name=outindex,proto3" json:"outindex,omitempty"`
}

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

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

func (*UTXOGlobalIndex4Print) ProtoMessage() {}

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

func (x *UTXOGlobalIndex4Print) GetTxhash() string {
	if x != nil {
		return x.Txhash
	}
	return ""
}

func (x *UTXOGlobalIndex4Print) GetOutindex() int32 {
	if x != nil {
		return x.Outindex
	}
	return 0
}

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

	Amount          int64                    `protobuf:"varint,1,opt,name=amount,proto3" json:"amount,omitempty"`
	UtxoGlobalIndex []*UTXOGlobalIndex4Print `protobuf:"bytes,2,rep,name=utxoGlobalIndex,proto3" json:"utxoGlobalIndex,omitempty"`
	KeyImage        string                   `protobuf:"bytes,3,opt,name=keyImage,proto3" json:"keyImage,omitempty"`
}

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

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

func (*KeyInput4Print) ProtoMessage() {}

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

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

func (x *KeyInput4Print) GetUtxoGlobalIndex() []*UTXOGlobalIndex4Print {
	if x != nil {
		return x.UtxoGlobalIndex
	}
	return nil
}

func (x *KeyInput4Print) GetKeyImage() string {
	if x != nil {
		return x.KeyImage
	}
	return ""
}

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

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

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

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

func (*KeyOutput4Print) ProtoMessage() {}

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

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

func (x *KeyOutput4Print) GetOnetimepubkey() string {
	if x != nil {
		return x.Onetimepubkey
	}
	return ""
}

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

	Keyinput []*KeyInput4Print `protobuf:"bytes,1,rep,name=keyinput,proto3" json:"keyinput,omitempty"`
}

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

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

func (*PrivacyInput4Print) ProtoMessage() {}

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

func (x *PrivacyInput4Print) GetKeyinput() []*KeyInput4Print {
	if x != nil {
		return x.Keyinput
	}
	return nil
}

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

	RpubKeytx string             `protobuf:"bytes,1,opt,name=RpubKeytx,proto3" json:"RpubKeytx,omitempty"`
	Keyoutput []*KeyOutput4Print `protobuf:"bytes,2,rep,name=keyoutput,proto3" json:"keyoutput,omitempty"`
}

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

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

func (*PrivacyOutput4Print) ProtoMessage() {}

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

func (x *PrivacyOutput4Print) GetRpubKeytx() string {
	if x != nil {
		return x.RpubKeytx
	}
	return ""
}

func (x *PrivacyOutput4Print) GetKeyoutput() []*KeyOutput4Print {
	if x != nil {
		return x.Keyoutput
	}
	return nil
}

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

	Tokenname string               `protobuf:"bytes,1,opt,name=tokenname,proto3" json:"tokenname,omitempty"`
	Amount    int64                `protobuf:"varint,2,opt,name=amount,proto3" json:"amount,omitempty"`
	Note      string               `protobuf:"bytes,5,opt,name=note,proto3" json:"note,omitempty"`
	Output    *PrivacyOutput4Print `protobuf:"bytes,7,opt,name=output,proto3" json:"output,omitempty"`
}

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

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

func (*Public2Privacy4Print) ProtoMessage() {}

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

func (x *Public2Privacy4Print) GetTokenname() string {
	if x != nil {
		return x.Tokenname
	}
	return ""
}

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

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

func (x *Public2Privacy4Print) GetOutput() *PrivacyOutput4Print {
	if x != nil {
		return x.Output
	}
	return nil
}

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

	Tokenname string               `protobuf:"bytes,1,opt,name=tokenname,proto3" json:"tokenname,omitempty"`
	Amount    int64                `protobuf:"varint,2,opt,name=amount,proto3" json:"amount,omitempty"`
	Note      string               `protobuf:"bytes,5,opt,name=note,proto3" json:"note,omitempty"`
	Input     *PrivacyInput4Print  `protobuf:"bytes,6,opt,name=input,proto3" json:"input,omitempty"`
	Output    *PrivacyOutput4Print `protobuf:"bytes,7,opt,name=output,proto3" json:"output,omitempty"`
}

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

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

func (*Privacy2Privacy4Print) ProtoMessage() {}

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

func (x *Privacy2Privacy4Print) GetTokenname() string {
	if x != nil {
		return x.Tokenname
	}
	return ""
}

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

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

func (x *Privacy2Privacy4Print) GetInput() *PrivacyInput4Print {
	if x != nil {
		return x.Input
	}
	return nil
}

func (x *Privacy2Privacy4Print) GetOutput() *PrivacyOutput4Print {
	if x != nil {
		return x.Output
	}
	return nil
}

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

	Tokenname string               `protobuf:"bytes,1,opt,name=tokenname,proto3" json:"tokenname,omitempty"`
	Amount    int64                `protobuf:"varint,2,opt,name=amount,proto3" json:"amount,omitempty"`
	Note      string               `protobuf:"bytes,3,opt,name=note,proto3" json:"note,omitempty"`
	Input     *PrivacyInput4Print  `protobuf:"bytes,4,opt,name=input,proto3" json:"input,omitempty"`
	Output    *PrivacyOutput4Print `protobuf:"bytes,5,opt,name=output,proto3" json:"output,omitempty"`
}

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

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

func (*Privacy2Public4Print) ProtoMessage() {}

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

func (x *Privacy2Public4Print) GetTokenname() string {
	if x != nil {
		return x.Tokenname
	}
	return ""
}

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

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

func (x *Privacy2Public4Print) GetInput() *PrivacyInput4Print {
	if x != nil {
		return x.Input
	}
	return nil
}

func (x *Privacy2Public4Print) GetOutput() *PrivacyOutput4Print {
	if x != nil {
		return x.Output
	}
	return nil
}

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

	// Types that are assignable to Value:
	//	*PrivacyAction4Print_Public2Privacy
	//	*PrivacyAction4Print_Privacy2Privacy
	//	*PrivacyAction4Print_Privacy2Public
	Value isPrivacyAction4Print_Value `protobuf_oneof:"value"`
	Ty    int32                       `protobuf:"varint,4,opt,name=ty,proto3" json:"ty,omitempty"`
}

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

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

func (*PrivacyAction4Print) ProtoMessage() {}

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

func (m *PrivacyAction4Print) GetValue() isPrivacyAction4Print_Value {
	if m != nil {
		return m.Value
	}
	return nil
}

func (x *PrivacyAction4Print) GetPublic2Privacy() *Public2Privacy4Print {
	if x, ok := x.GetValue().(*PrivacyAction4Print_Public2Privacy); ok {
		return x.Public2Privacy
	}
	return nil
}

func (x *PrivacyAction4Print) GetPrivacy2Privacy() *Privacy2Privacy4Print {
	if x, ok := x.GetValue().(*PrivacyAction4Print_Privacy2Privacy); ok {
		return x.Privacy2Privacy
	}
	return nil
}

func (x *PrivacyAction4Print) GetPrivacy2Public() *Privacy2Public4Print {
	if x, ok := x.GetValue().(*PrivacyAction4Print_Privacy2Public); ok {
		return x.Privacy2Public
	}
	return nil
}

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

type isPrivacyAction4Print_Value interface {
	isPrivacyAction4Print_Value()
}

type PrivacyAction4Print_Public2Privacy struct {
	Public2Privacy *Public2Privacy4Print `protobuf:"bytes,1,opt,name=public2privacy,proto3,oneof"`
}

type PrivacyAction4Print_Privacy2Privacy struct {
	Privacy2Privacy *Privacy2Privacy4Print `protobuf:"bytes,2,opt,name=privacy2privacy,proto3,oneof"`
}

type PrivacyAction4Print_Privacy2Public struct {
	Privacy2Public *Privacy2Public4Print `protobuf:"bytes,3,opt,name=privacy2public,proto3,oneof"`
}

func (*PrivacyAction4Print_Public2Privacy) isPrivacyAction4Print_Value() {}

func (*PrivacyAction4Print_Privacy2Privacy) isPrivacyAction4Print_Value() {}

func (*PrivacyAction4Print_Privacy2Public) isPrivacyAction4Print_Value() {}

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

	ShowSuccessful bool `protobuf:"varint,1,opt,name=showSuccessful,proto3" json:"showSuccessful,omitempty"`
	// string viewPub       = 2;
	// string spendPub      = 3;
	Pubkeypair string `protobuf:"bytes,4,opt,name=pubkeypair,proto3" json:"pubkeypair,omitempty"`
}

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

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

func (*ReplyPrivacyPkPair) ProtoMessage() {}

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

func (x *ReplyPrivacyPkPair) GetShowSuccessful() bool {
	if x != nil {
		return x.ShowSuccessful
	}
	return false
}

func (x *ReplyPrivacyPkPair) GetPubkeypair() string {
	if x != nil {
		return x.Pubkeypair
	}
	return ""
}

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

	Addr      string `protobuf:"bytes,1,opt,name=addr,proto3" json:"addr,omitempty"`
	Token     string `protobuf:"bytes,2,opt,name=token,proto3" json:"token,omitempty"`
	AssetExec string `protobuf:"bytes,3,opt,name=assetExec,proto3" json:"assetExec,omitempty"`
}

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

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

func (*ReqPrivBal4AddrToken) ProtoMessage() {}

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

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

func (x *ReqPrivBal4AddrToken) GetToken() string {
	if x != nil {
		return x.Token
	}
	return ""
}

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

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

	Onetimeaddr string `protobuf:"bytes,1,opt,name=onetimeaddr,proto3" json:"onetimeaddr,omitempty"`
	Balance     int64  `protobuf:"varint,2,opt,name=balance,proto3" json:"balance,omitempty"`
}

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

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

func (*ReplyPrivacyBalance) ProtoMessage() {}

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

func (x *ReplyPrivacyBalance) GetOnetimeaddr() string {
	if x != nil {
		return x.Onetimeaddr
	}
	return ""
}

func (x *ReplyPrivacyBalance) GetBalance() int64 {
	if x != nil {
		return x.Balance
	}
	return 0
}

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

	Txhash           []byte `protobuf:"bytes,1,opt,name=txhash,proto3" json:"txhash,omitempty"`
	Tokenname        string `protobuf:"bytes,2,opt,name=tokenname,proto3" json:"tokenname,omitempty"`
	Amount           int64  `protobuf:"varint,3,opt,name=amount,proto3" json:"amount,omitempty"`
	OutIndex         int32  `protobuf:"varint,4,opt,name=outIndex,proto3" json:"outIndex,omitempty"`
	TxPublicKeyR     []byte `protobuf:"bytes,5,opt,name=txPublicKeyR,proto3" json:"txPublicKeyR,omitempty"`
	OnetimePublicKey []byte `protobuf:"bytes,6,opt,name=onetimePublicKey,proto3" json:"onetimePublicKey,omitempty"`
	Owner            string `protobuf:"bytes,7,opt,name=owner,proto3" json:"owner,omitempty"`
	Height           int64  `protobuf:"varint,8,opt,name=height,proto3" json:"height,omitempty"`
	Txindex          int32  `protobuf:"varint,9,opt,name=txindex,proto3" json:"txindex,omitempty"`
	Blockhash        []byte `protobuf:"bytes,10,opt,name=blockhash,proto3" json:"blockhash,omitempty"`
	AssetExec        string `protobuf:"bytes,11,opt,name=assetExec,proto3" json:"assetExec,omitempty"`
}

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

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

func (*PrivacyDBStore) ProtoMessage() {}

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

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

func (x *PrivacyDBStore) GetTxhash() []byte {
	if x != nil {
		return x.Txhash
	}
	return nil
}

func (x *PrivacyDBStore) GetTokenname() string {
	if x != nil {
		return x.Tokenname
	}
	return ""
}

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

func (x *PrivacyDBStore) GetOutIndex() int32 {
	if x != nil {
		return x.OutIndex
	}
	return 0
}

func (x *PrivacyDBStore) GetTxPublicKeyR() []byte {
	if x != nil {
		return x.TxPublicKeyR
	}
	return nil
}

func (x *PrivacyDBStore) GetOnetimePublicKey() []byte {
	if x != nil {
		return x.OnetimePublicKey
	}
	return nil
}

func (x *PrivacyDBStore) GetOwner() string {
	if x != nil {
		return x.Owner
	}
	return ""
}

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

func (x *PrivacyDBStore) GetTxindex() int32 {
	if x != nil {
		return x.Txindex
	}
	return 0
}

func (x *PrivacyDBStore) GetBlockhash() []byte {
	if x != nil {
		return x.Blockhash
	}
	return nil
}

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

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

	Amount    int64      `protobuf:"varint,1,opt,name=amount,proto3" json:"amount,omitempty"`
	UtxoBasic *UTXOBasic `protobuf:"bytes,2,opt,name=utxoBasic,proto3" json:"utxoBasic,omitempty"`
}

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

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

func (*UTXO) ProtoMessage() {}

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

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

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

func (x *UTXO) GetUtxoBasic() *UTXOBasic {
	if x != nil {
		return x.UtxoBasic
	}
	return nil
}

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

	Amount    int64      `protobuf:"varint,1,opt,name=amount,proto3" json:"amount,omitempty"`
	TxHash    string     `protobuf:"bytes,2,opt,name=txHash,proto3" json:"txHash,omitempty"`
	UtxoBasic *UTXOBasic `protobuf:"bytes,3,opt,name=utxoBasic,proto3" json:"utxoBasic,omitempty"`
}

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

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

func (*UTXOHaveTxHash) ProtoMessage() {}

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

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

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

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

func (x *UTXOHaveTxHash) GetUtxoBasic() *UTXOBasic {
	if x != nil {
		return x.UtxoBasic
	}
	return nil
}

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

	Utxos []*UTXO `protobuf:"bytes,1,rep,name=utxos,proto3" json:"utxos,omitempty"`
}

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

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

func (*UTXOs) ProtoMessage() {}

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

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

func (x *UTXOs) GetUtxos() []*UTXO {
	if x != nil {
		return x.Utxos
	}
	return nil
}

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

	UtxoHaveTxHashs []*UTXOHaveTxHash `protobuf:"bytes,1,rep,name=utxoHaveTxHashs,proto3" json:"utxoHaveTxHashs,omitempty"`
}

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

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

func (*UTXOHaveTxHashs) ProtoMessage() {}

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

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

func (x *UTXOHaveTxHashs) GetUtxoHaveTxHashs() []*UTXOHaveTxHash {
	if x != nil {
		return x.UtxoHaveTxHashs
	}
	return nil
}

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

	AssetExec   string  `protobuf:"bytes,1,opt,name=assetExec,proto3" json:"assetExec,omitempty"`
	AssetSymbol string  `protobuf:"bytes,2,opt,name=assetSymbol,proto3" json:"assetSymbol,omitempty"`
	MixCount    int32   `protobuf:"varint,3,opt,name=mixCount,proto3" json:"mixCount,omitempty"`
	Amount      []int64 `protobuf:"varint,4,rep,packed,name=amount,proto3" json:"amount,omitempty"`
}

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

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

func (*ReqUTXOGlobalIndex) ProtoMessage() {}

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

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

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

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

func (x *ReqUTXOGlobalIndex) GetMixCount() int32 {
	if x != nil {
		return x.MixCount
	}
	return 0
}

func (x *ReqUTXOGlobalIndex) GetAmount() []int64 {
	if x != nil {
		return x.Amount
	}
	return nil
}

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

	UtxoGlobalIndex *UTXOGlobalIndex `protobuf:"bytes,1,opt,name=utxoGlobalIndex,proto3" json:"utxoGlobalIndex,omitempty"`
	OnetimePubkey   []byte           `protobuf:"bytes,2,opt,name=onetimePubkey,proto3" json:"onetimePubkey,omitempty"`
}

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

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

func (*UTXOBasic) ProtoMessage() {}

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

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

func (x *UTXOBasic) GetUtxoGlobalIndex() *UTXOGlobalIndex {
	if x != nil {
		return x.UtxoGlobalIndex
	}
	return nil
}

func (x *UTXOBasic) GetOnetimePubkey() []byte {
	if x != nil {
		return x.OnetimePubkey
	}
	return nil
}

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

	Amount int64        `protobuf:"varint,1,opt,name=amount,proto3" json:"amount,omitempty"`
	Utxos  []*UTXOBasic `protobuf:"bytes,2,rep,name=utxos,proto3" json:"utxos,omitempty"`
}

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

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

func (*UTXOIndex4Amount) ProtoMessage() {}

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

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

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

func (x *UTXOIndex4Amount) GetUtxos() []*UTXOBasic {
	if x != nil {
		return x.Utxos
	}
	return nil
}

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

	UtxoIndex4Amount []*UTXOIndex4Amount `protobuf:"bytes,3,rep,name=utxoIndex4Amount,proto3" json:"utxoIndex4Amount,omitempty"`
}

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

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

func (*ResUTXOGlobalIndex) ProtoMessage() {}

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

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

func (x *ResUTXOGlobalIndex) GetUtxoIndex4Amount() []*UTXOIndex4Amount {
	if x != nil {
		return x.UtxoIndex4Amount
	}
	return nil
}

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

	Tokenname string `protobuf:"bytes,1,opt,name=tokenname,proto3" json:"tokenname,omitempty"`
	Sender    string `protobuf:"bytes,2,opt,name=sender,proto3" json:"sender,omitempty"`
	// FTXO的超期，设定原则与Transaction.expire一致
	Expire    int64   `protobuf:"varint,3,opt,name=expire,proto3" json:"expire,omitempty"`
	Txhash    string  `protobuf:"bytes,4,opt,name=txhash,proto3" json:"txhash,omitempty"`
	Utxos     []*UTXO `protobuf:"bytes,5,rep,name=utxos,proto3" json:"utxos,omitempty"`
	AssetExec string  `protobuf:"bytes,6,opt,name=assetExec,proto3" json:"assetExec,omitempty"`
}

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

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

func (*FTXOsSTXOsInOneTx) ProtoMessage() {}

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

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

func (x *FTXOsSTXOsInOneTx) GetTokenname() string {
	if x != nil {
		return x.Tokenname
	}
	return ""
}

func (x *FTXOsSTXOsInOneTx) GetSender() string {
	if x != nil {
		return x.Sender
	}
	return ""
}

func (x *FTXOsSTXOsInOneTx) GetExpire() int64 {
	if x != nil {
		return x.Expire
	}
	return 0
}

func (x *FTXOsSTXOsInOneTx) GetTxhash() string {
	if x != nil {
		return x.Txhash
	}
	return ""
}

func (x *FTXOsSTXOsInOneTx) GetUtxos() []*UTXO {
	if x != nil {
		return x.Utxos
	}
	return nil
}

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

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

	Realinputkey   int32  `protobuf:"varint,1,opt,name=realinputkey,proto3" json:"realinputkey,omitempty"`
	Onetimeprivkey []byte `protobuf:"bytes,2,opt,name=onetimeprivkey,proto3" json:"onetimeprivkey,omitempty"`
}

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

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

func (*RealKeyInput) ProtoMessage() {}

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

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

func (x *RealKeyInput) GetRealinputkey() int32 {
	if x != nil {
		return x.Realinputkey
	}
	return 0
}

func (x *RealKeyInput) GetOnetimeprivkey() []byte {
	if x != nil {
		return x.Onetimeprivkey
	}
	return nil
}

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

	Utxos []*UTXOBasic `protobuf:"bytes,1,rep,name=utxos,proto3" json:"utxos,omitempty"`
}

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

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

func (*UTXOBasics) ProtoMessage() {}

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

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

func (x *UTXOBasics) GetUtxos() []*UTXOBasic {
	if x != nil {
		return x.Utxos
	}
	return nil
}

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

	Key []byte `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"`
	// 记录创建时间，用以处理过期的交易
	Createtime int64 `protobuf:"varint,2,opt,name=createtime,proto3" json:"createtime,omitempty"`
	// 记录签名成功的时间，用以处理过期交易
	Signtime int64 `protobuf:"varint,3,opt,name=signtime,proto3" json:"signtime,omitempty"`
	// 缓存状态
	// 0 - 创建状态
	// 1 - 已经签名状态
	Status int32 `protobuf:"varint,4,opt,name=status,proto3" json:"status,omitempty"`
	//
	Transaction  *types.Transaction `protobuf:"bytes,5,opt,name=transaction,proto3" json:"transaction,omitempty"`
	Sender       string             `protobuf:"bytes,6,opt,name=sender,proto3" json:"sender,omitempty"`
	Realkeyinput []*RealKeyInput    `protobuf:"bytes,7,rep,name=realkeyinput,proto3" json:"realkeyinput,omitempty"`
	Utxos        []*UTXOBasics      `protobuf:"bytes,8,rep,name=utxos,proto3" json:"utxos,omitempty"`
	Tokenname    string             `protobuf:"bytes,9,opt,name=tokenname,proto3" json:"tokenname,omitempty"`
}

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

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

func (*CreateTransactionCache) ProtoMessage() {}

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

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

func (x *CreateTransactionCache) GetKey() []byte {
	if x != nil {
		return x.Key
	}
	return nil
}

func (x *CreateTransactionCache) GetCreatetime() int64 {
	if x != nil {
		return x.Createtime
	}
	return 0
}

func (x *CreateTransactionCache) GetSigntime() int64 {
	if x != nil {
		return x.Signtime
	}
	return 0
}

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

func (x *CreateTransactionCache) GetTransaction() *types.Transaction {
	if x != nil {
		return x.Transaction
	}
	return nil
}

func (x *CreateTransactionCache) GetSender() string {
	if x != nil {
		return x.Sender
	}
	return ""
}

func (x *CreateTransactionCache) GetRealkeyinput() []*RealKeyInput {
	if x != nil {
		return x.Realkeyinput
	}
	return nil
}

func (x *CreateTransactionCache) GetUtxos() []*UTXOBasics {
	if x != nil {
		return x.Utxos
	}
	return nil
}

func (x *CreateTransactionCache) GetTokenname() string {
	if x != nil {
		return x.Tokenname
	}
	return ""
}

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

	Addr      string `protobuf:"bytes,1,opt,name=addr,proto3" json:"addr,omitempty"`
	Tokenname string `protobuf:"bytes,2,opt,name=tokenname,proto3" json:"tokenname,omitempty"`
}

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

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

func (*ReqCacheTxList) ProtoMessage() {}

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

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

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

func (x *ReqCacheTxList) GetTokenname() string {
	if x != nil {
		return x.Tokenname
	}
	return ""
}

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

	Txs []*types.Transaction `protobuf:"bytes,1,rep,name=txs,proto3" json:"txs,omitempty"`
}

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

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

func (*ReplyCacheTxList) ProtoMessage() {}

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

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

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

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

	Addr  string `protobuf:"bytes,1,opt,name=addr,proto3" json:"addr,omitempty"`
	Token string `protobuf:"bytes,2,opt,name=token,proto3" json:"token,omitempty"`
	// 设定显示的数据类型信息
	// 0： 只显示账户的数值信息
	// 1： 显示UTXO明细
	// 2： 显示FTXO明细
	// 3： 全部显示
	Displaymode int32  `protobuf:"varint,3,opt,name=displaymode,proto3" json:"displaymode,omitempty"`
	AssetExec   string `protobuf:"bytes,4,opt,name=assetExec,proto3" json:"assetExec,omitempty"`
}

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

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

func (*ReqPrivacyAccount) ProtoMessage() {}

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

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

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

func (x *ReqPrivacyAccount) GetToken() string {
	if x != nil {
		return x.Token
	}
	return ""
}

func (x *ReqPrivacyAccount) GetDisplaymode() int32 {
	if x != nil {
		return x.Displaymode
	}
	return 0
}

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

// 请求隐私账户信息的应答
type ReplyPrivacyAccount struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// 未花费的UTXO
	Utxos *UTXOs `protobuf:"bytes,1,opt,name=utxos,proto3" json:"utxos,omitempty"`
	// 冻结的UTXO
	Ftxos       *UTXOs `protobuf:"bytes,2,opt,name=ftxos,proto3" json:"ftxos,omitempty"`
	Displaymode int32  `protobuf:"varint,3,opt,name=displaymode,proto3" json:"displaymode,omitempty"`
}

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

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

func (*ReplyPrivacyAccount) ProtoMessage() {}

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

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

func (x *ReplyPrivacyAccount) GetUtxos() *UTXOs {
	if x != nil {
		return x.Utxos
	}
	return nil
}

func (x *ReplyPrivacyAccount) GetFtxos() *UTXOs {
	if x != nil {
		return x.Ftxos
	}
	return nil
}

func (x *ReplyPrivacyAccount) GetDisplaymode() int32 {
	if x != nil {
		return x.Displaymode
	}
	return 0
}

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

	Tokenname string `protobuf:"bytes,1,opt,name=tokenname,proto3" json:"tokenname,omitempty"`
	Hashkey   []byte `protobuf:"bytes,2,opt,name=hashkey,proto3" json:"hashkey,omitempty"`
}

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

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

func (*ReqCreateCacheTxKey) ProtoMessage() {}

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

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

func (x *ReqCreateCacheTxKey) GetTokenname() string {
	if x != nil {
		return x.Tokenname
	}
	return ""
}

func (x *ReqCreateCacheTxKey) GetHashkey() []byte {
	if x != nil {
		return x.Hashkey
	}
	return nil
}

// get privacy transaction list in wallet
type ReqPrivacyTransactionList struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// 1:sendtx  2:recvtx
	SendRecvFlag int32 `protobuf:"varint,2,opt,name=sendRecvFlag,proto3" json:"sendRecvFlag,omitempty"`
	// 列表顺序，0降1升
	Direction int32 `protobuf:"varint,3,opt,name=direction,proto3" json:"direction,omitempty"`
	// 单次列表数量
	Count int32 `protobuf:"varint,4,opt,name=count,proto3" json:"count,omitempty"`
	// 交易相关的地址，发送方或接收方
	Address string `protobuf:"bytes,6,opt,name=address,proto3" json:"address,omitempty"`
	// 资产执行器
	AssetExec string `protobuf:"bytes,8,opt,name=assetExec,proto3" json:"assetExec,omitempty"`
	// 资产符号
	AssetSymbol string `protobuf:"bytes,9,opt,name=assetSymbol,proto3" json:"assetSymbol,omitempty"`
	// 指定列表请求开始位置
	StartTxHeightIndex string `protobuf:"bytes,10,opt,name=startTxHeightIndex,proto3" json:"startTxHeightIndex,omitempty"`
}

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

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

func (*ReqPrivacyTransactionList) ProtoMessage() {}

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

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

func (x *ReqPrivacyTransactionList) GetSendRecvFlag() int32 {
	if x != nil {
		return x.SendRecvFlag
	}
	return 0
}

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

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

func (x *ReqPrivacyTransactionList) GetAddress() string {
	if x != nil {
		return x.Address
	}
	return ""
}

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

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

func (x *ReqPrivacyTransactionList) GetStartTxHeightIndex() string {
	if x != nil {
		return x.StartTxHeightIndex
	}
	return ""
}

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

	Addrs []string `protobuf:"bytes,1,rep,name=addrs,proto3" json:"addrs,omitempty"`
	Flag  int32    `protobuf:"varint,2,opt,name=flag,proto3" json:"flag,omitempty"`
}

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

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

func (*ReqRescanUtxos) ProtoMessage() {}

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

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

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

func (x *ReqRescanUtxos) GetFlag() int32 {
	if x != nil {
		return x.Flag
	}
	return 0
}

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

	Addr string `protobuf:"bytes,1,opt,name=addr,proto3" json:"addr,omitempty"`
	Flag int32  `protobuf:"varint,2,opt,name=flag,proto3" json:"flag,omitempty"`
}

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

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

func (*RepRescanResult) ProtoMessage() {}

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

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

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

func (x *RepRescanResult) GetFlag() int32 {
	if x != nil {
		return x.Flag
	}
	return 0
}

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

	Flag             int32              `protobuf:"varint,1,opt,name=flag,proto3" json:"flag,omitempty"`
	RepRescanResults []*RepRescanResult `protobuf:"bytes,2,rep,name=repRescanResults,proto3" json:"repRescanResults,omitempty"`
}

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

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

func (*RepRescanUtxos) ProtoMessage() {}

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

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

func (x *RepRescanUtxos) GetFlag() int32 {
	if x != nil {
		return x.Flag
	}
	return 0
}

func (x *RepRescanUtxos) GetRepRescanResults() []*RepRescanResult {
	if x != nil {
		return x.RepRescanResults
	}
	return nil
}

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

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

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

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

func (*ReqEnablePrivacy) ProtoMessage() {}

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

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

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

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

	Addr string `protobuf:"bytes,1,opt,name=addr,proto3" json:"addr,omitempty"`
	IsOK bool   `protobuf:"varint,2,opt,name=IsOK,proto3" json:"IsOK,omitempty"`
	Msg  string `protobuf:"bytes,3,opt,name=msg,proto3" json:"msg,omitempty"`
}

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

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

func (*PriAddrResult) ProtoMessage() {}

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

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

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

func (x *PriAddrResult) GetIsOK() bool {
	if x != nil {
		return x.IsOK
	}
	return false
}

func (x *PriAddrResult) GetMsg() string {
	if x != nil {
		return x.Msg
	}
	return ""
}

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

	Results []*PriAddrResult `protobuf:"bytes,1,rep,name=results,proto3" json:"results,omitempty"`
}

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

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

func (*RepEnablePrivacy) ProtoMessage() {}

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

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

func (x *RepEnablePrivacy) GetResults() []*PriAddrResult {
	if x != nil {
		return x.Results
	}
	return nil
}

// 隐私交易三步发送时，临时存储签名需要的数据信息结构
type PrivacySignatureParam struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	ActionType    int32           `protobuf:"varint,1,opt,name=actionType,proto3" json:"actionType,omitempty"`
	Utxobasics    []*UTXOBasics   `protobuf:"bytes,2,rep,name=utxobasics,proto3" json:"utxobasics,omitempty"`
	RealKeyInputs []*RealKeyInput `protobuf:"bytes,3,rep,name=realKeyInputs,proto3" json:"realKeyInputs,omitempty"`
}

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

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

func (*PrivacySignatureParam) ProtoMessage() {}

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

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

func (x *PrivacySignatureParam) GetActionType() int32 {
	if x != nil {
		return x.ActionType
	}
	return 0
}

func (x *PrivacySignatureParam) GetUtxobasics() []*UTXOBasics {
	if x != nil {
		return x.Utxobasics
	}
	return nil
}

func (x *PrivacySignatureParam) GetRealKeyInputs() []*RealKeyInput {
	if x != nil {
		return x.RealKeyInputs
	}
	return nil
}

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

	ViewPubkey   []byte `protobuf:"bytes,1,opt,name=viewPubkey,proto3" json:"viewPubkey,omitempty"`
	ViewPrivKey  []byte `protobuf:"bytes,2,opt,name=viewPrivKey,proto3" json:"viewPrivKey,omitempty"`
	SpendPubkey  []byte `protobuf:"bytes,3,opt,name=spendPubkey,proto3" json:"spendPubkey,omitempty"`
	SpendPrivKey []byte `protobuf:"bytes,4,opt,name=spendPrivKey,proto3" json:"spendPrivKey,omitempty"`
}

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

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

func (*WalletAccountPrivacy) ProtoMessage() {}

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

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

func (x *WalletAccountPrivacy) GetViewPubkey() []byte {
	if x != nil {
		return x.ViewPubkey
	}
	return nil
}

func (x *WalletAccountPrivacy) GetViewPrivKey() []byte {
	if x != nil {
		return x.ViewPrivKey
	}
	return nil
}

func (x *WalletAccountPrivacy) GetSpendPubkey() []byte {
	if x != nil {
		return x.SpendPubkey
	}
	return nil
}

func (x *WalletAccountPrivacy) GetSpendPrivKey() []byte {
	if x != nil {
		return x.SpendPrivKey
	}
	return nil
}

// 创建隐私交易请求
type ReqCreatePrivacyTx struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Tokenname string `protobuf:"bytes,1,opt,name=tokenname,proto3" json:"tokenname,omitempty"`
	// 构建交易类型
	ActionType int32  `protobuf:"varint,2,opt,name=actionType,proto3" json:"actionType,omitempty"`
	Amount     int64  `protobuf:"varint,3,opt,name=amount,proto3" json:"amount,omitempty"`
	Note       string `protobuf:"bytes,4,opt,name=note,proto3" json:"note,omitempty"`
	// 普通交易的发送方
	From string `protobuf:"bytes,5,opt,name=from,proto3" json:"from,omitempty"`
	// 普通交易的接收方
	To string `protobuf:"bytes,6,opt,name=to,proto3" json:"to,omitempty"`
	// 隐私交易，接收方的公钥对
	Pubkeypair string `protobuf:"bytes,10,opt,name=pubkeypair,proto3" json:"pubkeypair,omitempty"`
	Mixcount   int32  `protobuf:"varint,11,opt,name=mixcount,proto3" json:"mixcount,omitempty"`
	Expire     int64  `protobuf:"varint,12,opt,name=expire,proto3" json:"expire,omitempty"`
	AssetExec  string `protobuf:"bytes,13,opt,name=assetExec,proto3" json:"assetExec,omitempty"`
}

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

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

func (*ReqCreatePrivacyTx) ProtoMessage() {}

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

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

func (x *ReqCreatePrivacyTx) GetTokenname() string {
	if x != nil {
		return x.Tokenname
	}
	return ""
}

func (x *ReqCreatePrivacyTx) GetActionType() int32 {
	if x != nil {
		return x.ActionType
	}
	return 0
}

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

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

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

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

func (x *ReqCreatePrivacyTx) GetPubkeypair() string {
	if x != nil {
		return x.Pubkeypair
	}
	return ""
}

func (x *ReqCreatePrivacyTx) GetMixcount() int32 {
	if x != nil {
		return x.Mixcount
	}
	return 0
}

func (x *ReqCreatePrivacyTx) GetExpire() int64 {
	if x != nil {
		return x.Expire
	}
	return 0
}

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

var File_privacy_proto protoreflect.FileDescriptor

var file_privacy_proto_rawDesc = []byte{
	0x0a, 0x0d, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12,
	0x05, 0x74, 0x79, 0x70, 0x65, 0x73, 0x1a, 0x0c, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x70,
	0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x11, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f,
	0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xee, 0x01, 0x0a, 0x0d, 0x50, 0x72, 0x69, 0x76,
	0x61, 0x63, 0x79, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3f, 0x0a, 0x0e, 0x70, 0x75, 0x62,
	0x6c, 0x69, 0x63, 0x32, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28,
	0x0b, 0x32, 0x15, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63,
	0x32, 0x50, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x48, 0x00, 0x52, 0x0e, 0x70, 0x75, 0x62, 0x6c,
	0x69, 0x63, 0x32, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x12, 0x42, 0x0a, 0x0f, 0x70, 0x72,
	0x69, 0x76, 0x61, 0x63, 0x79, 0x32, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x18, 0x02, 0x20,
	0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x50, 0x72, 0x69, 0x76,
	0x61, 0x63, 0x79, 0x32, 0x50, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x48, 0x00, 0x52, 0x0f, 0x70,
	0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x32, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x12, 0x3f,
	0x0a, 0x0e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x32, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63,
	0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x50,
	0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x32, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x48, 0x00, 0x52,
	0x0e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x32, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x12,
	0x0e, 0x0a, 0x02, 0x74, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x74, 0x79, 0x42,
	0x07, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0xa6, 0x01, 0x0a, 0x0e, 0x50, 0x75, 0x62,
	0x6c, 0x69, 0x63, 0x32, 0x50, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x12, 0x1c, 0x0a, 0x09, 0x74,
	0x6f, 0x6b, 0x65, 0x6e, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09,
	0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x6e, 0x61, 0x6d, 0x65, 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, 0x12, 0x0a, 0x04, 0x6e, 0x6f, 0x74, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52,
	0x04, 0x6e, 0x6f, 0x74, 0x65, 0x12, 0x2c, 0x0a, 0x06, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x18,
	0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x50, 0x72,
	0x69, 0x76, 0x61, 0x63, 0x79, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x52, 0x06, 0x6f, 0x75, 0x74,
	0x70, 0x75, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x61, 0x73, 0x73, 0x65, 0x74, 0x45, 0x78, 0x65, 0x63,
	0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x73, 0x73, 0x65, 0x74, 0x45, 0x78, 0x65,
	0x63, 0x22, 0xd2, 0x01, 0x0a, 0x0f, 0x50, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x32, 0x50, 0x72,
	0x69, 0x76, 0x61, 0x63, 0x79, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x6e, 0x61,
	0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x6e,
	0x61, 0x6d, 0x65, 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, 0x12, 0x0a, 0x04, 0x6e,
	0x6f, 0x74, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x6f, 0x74, 0x65, 0x12,
	0x29, 0x0a, 0x05, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13,
	0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x50, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x49, 0x6e,
	0x70, 0x75, 0x74, 0x52, 0x05, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x12, 0x2c, 0x0a, 0x06, 0x6f, 0x75,
	0x74, 0x70, 0x75, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x74, 0x79, 0x70,
	0x65, 0x73, 0x2e, 0x50, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74,
	0x52, 0x06, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x61, 0x73, 0x73, 0x65,
	0x74, 0x45, 0x78, 0x65, 0x63, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x73, 0x73,
	0x65, 0x74, 0x45, 0x78, 0x65, 0x63, 0x22, 0xe1, 0x01, 0x0a, 0x0e, 0x50, 0x72, 0x69, 0x76, 0x61,
	0x63, 0x79, 0x32, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x6f, 0x6b,
	0x65, 0x6e, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x74, 0x6f,
	0x6b, 0x65, 0x6e, 0x6e, 0x61, 0x6d, 0x65, 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,
	0x12, 0x0a, 0x04, 0x6e, 0x6f, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e,
	0x6f, 0x74, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x74, 0x6f, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52,
	0x02, 0x74, 0x6f, 0x12, 0x29, 0x0a, 0x05, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x18, 0x04, 0x20, 0x01,
	0x28, 0x0b, 0x32, 0x13, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x50, 0x72, 0x69, 0x76, 0x61,
	0x63, 0x79, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x52, 0x05, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x12, 0x2c,
	0x0a, 0x06, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14,
	0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x50, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x4f, 0x75,
	0x74, 0x70, 0x75, 0x74, 0x52, 0x06, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x12, 0x1c, 0x0a, 0x09,
	0x61, 0x73, 0x73, 0x65, 0x74, 0x45, 0x78, 0x65, 0x63, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52,
	0x09, 0x61, 0x73, 0x73, 0x65, 0x74, 0x45, 0x78, 0x65, 0x63, 0x22, 0x45, 0x0a, 0x0f, 0x55, 0x54,
	0x58, 0x4f, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x16, 0x0a,
	0x06, 0x74, 0x78, 0x68, 0x61, 0x73, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x06, 0x74,
	0x78, 0x68, 0x61, 0x73, 0x68, 0x12, 0x1a, 0x0a, 0x08, 0x6f, 0x75, 0x74, 0x69, 0x6e, 0x64, 0x65,
	0x78, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x6f, 0x75, 0x74, 0x69, 0x6e, 0x64, 0x65,
	0x78, 0x22, 0x80, 0x01, 0x0a, 0x08, 0x4b, 0x65, 0x79, 0x49, 0x6e, 0x70, 0x75, 0x74, 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, 0x40, 0x0a, 0x0f, 0x75, 0x74, 0x78, 0x6f, 0x47, 0x6c,
	0x6f, 0x62, 0x61, 0x6c, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32,
	0x16, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x55, 0x54, 0x58, 0x4f, 0x47, 0x6c, 0x6f, 0x62,
	0x61, 0x6c, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x0f, 0x75, 0x74, 0x78, 0x6f, 0x47, 0x6c, 0x6f,
	0x62, 0x61, 0x6c, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x1a, 0x0a, 0x08, 0x6b, 0x65, 0x79, 0x49,
	0x6d, 0x61, 0x67, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x08, 0x6b, 0x65, 0x79, 0x49,
	0x6d, 0x61, 0x67, 0x65, 0x22, 0x3b, 0x0a, 0x0c, 0x50, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x49,
	0x6e, 0x70, 0x75, 0x74, 0x12, 0x2b, 0x0a, 0x08, 0x6b, 0x65, 0x79, 0x69, 0x6e, 0x70, 0x75, 0x74,
	0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4b,
	0x65, 0x79, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x52, 0x08, 0x6b, 0x65, 0x79, 0x69, 0x6e, 0x70, 0x75,
	0x74, 0x22, 0x49, 0x0a, 0x09, 0x6b, 0x65, 0x79, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 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, 0x24, 0x0a, 0x0d, 0x6f, 0x6e, 0x65, 0x74, 0x69, 0x6d,
	0x65, 0x70, 0x75, 0x62, 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0d, 0x6f,
	0x6e, 0x65, 0x74, 0x69, 0x6d, 0x65, 0x70, 0x75, 0x62, 0x6b, 0x65, 0x79, 0x22, 0x5d, 0x0a, 0x0d,
	0x50, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x12, 0x1c, 0x0a,
	0x09, 0x52, 0x70, 0x75, 0x62, 0x4b, 0x65, 0x79, 0x74, 0x78, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c,
	0x52, 0x09, 0x52, 0x70, 0x75, 0x62, 0x4b, 0x65, 0x79, 0x74, 0x78, 0x12, 0x2e, 0x0a, 0x09, 0x6b,
	0x65, 0x79, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10,
	0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x6b, 0x65, 0x79, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74,
	0x52, 0x09, 0x6b, 0x65, 0x79, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x22, 0x70, 0x0a, 0x14, 0x47,
	0x72, 0x6f, 0x75, 0x70, 0x55, 0x54, 0x58, 0x4f, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x49, 0x6e,
	0x64, 0x65, 0x78, 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, 0x40, 0x0a, 0x0f, 0x75,
	0x74, 0x78, 0x6f, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x02,
	0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x55, 0x54, 0x58,
	0x4f, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x0f, 0x75, 0x74,
	0x78, 0x6f, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x22, 0x9b, 0x01,
	0x0a, 0x0d, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x55, 0x54, 0x58, 0x4f, 0x49, 0x74, 0x65, 0x6d, 0x12,
	0x16, 0x0a, 0x06, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52,
	0x06, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x74, 0x78, 0x69, 0x6e, 0x64,
	0x65, 0x78, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x74, 0x78, 0x69, 0x6e, 0x64, 0x65,
	0x78, 0x12, 0x1a, 0x0a, 0x08, 0x6f, 0x75, 0x74, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x03, 0x20,
	0x01, 0x28, 0x05, 0x52, 0x08, 0x6f, 0x75, 0x74, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x16, 0x0a,
	0x06, 0x74, 0x78, 0x68, 0x61, 0x73, 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x06, 0x74,
	0x78, 0x68, 0x61, 0x73, 0x68, 0x12, 0x24, 0x0a, 0x0d, 0x6f, 0x6e, 0x65, 0x74, 0x69, 0x6d, 0x65,
	0x70, 0x75, 0x62, 0x6b, 0x65, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0d, 0x6f, 0x6e,
	0x65, 0x74, 0x69, 0x6d, 0x65, 0x70, 0x75, 0x62, 0x6b, 0x65, 0x79, 0x22, 0x7f, 0x0a, 0x0e, 0x52,
	0x65, 0x71, 0x55, 0x54, 0x58, 0x4f, 0x50, 0x75, 0x62, 0x4b, 0x65, 0x79, 0x73, 0x12, 0x1c, 0x0a,
	0x09, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
	0x52, 0x09, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x4f, 0x0a, 0x14, 0x67,
	0x72, 0x6f, 0x75, 0x70, 0x55, 0x54, 0x58, 0x4f, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x49, 0x6e,
	0x64, 0x65, 0x78, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x74, 0x79, 0x70, 0x65,
	0x73, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x55, 0x54, 0x58, 0x4f, 0x47, 0x6c, 0x6f, 0x62, 0x61,
	0x6c, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x14, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x55, 0x54, 0x58,
	0x4f, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x22, 0x23, 0x0a, 0x0d,
	0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x44, 0x61, 0x74, 0x61, 0x12, 0x12, 0x0a,
	0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0c, 0x52, 0x04, 0x64, 0x61, 0x74,
	0x61, 0x22, 0x41, 0x0a, 0x0f, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x55, 0x54, 0x58, 0x4f, 0x50, 0x75,
	0x62, 0x4b, 0x65, 0x79, 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,
	0x70, 0x75, 0x62, 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0c, 0x52, 0x06, 0x70, 0x75,
	0x62, 0x6b, 0x65, 0x79, 0x22, 0x54, 0x0a, 0x0e, 0x52, 0x65, 0x73, 0x55, 0x54, 0x58, 0x4f, 0x50,
	0x75, 0x62, 0x4b, 0x65, 0x79, 0x73, 0x12, 0x42, 0x0a, 0x10, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x55,
	0x54, 0x58, 0x4f, 0x50, 0x75, 0x62, 0x4b, 0x65, 0x79, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b,
	0x32, 0x16, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x55, 0x54,
	0x58, 0x4f, 0x50, 0x75, 0x62, 0x4b, 0x65, 0x79, 0x52, 0x10, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x55,
	0x54, 0x58, 0x4f, 0x50, 0x75, 0x62, 0x4b, 0x65, 0x79, 0x73, 0x22, 0x69, 0x0a, 0x0f, 0x52, 0x65,
	0x71, 0x50, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x1c, 0x0a,
	0x09, 0x61, 0x73, 0x73, 0x65, 0x74, 0x45, 0x78, 0x65, 0x63, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
	0x52, 0x09, 0x61, 0x73, 0x73, 0x65, 0x74, 0x45, 0x78, 0x65, 0x63, 0x12, 0x20, 0x0a, 0x0b, 0x61,
	0x73, 0x73, 0x65, 0x74, 0x53, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,
	0x52, 0x0b, 0x61, 0x73, 0x73, 0x65, 0x74, 0x53, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x12, 0x16, 0x0a,
	0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x61,
	0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x3c, 0x0a, 0x0c, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x44,
	0x65, 0x74, 0x61, 0x69, 0x6c, 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, 0x14, 0x0a,
	0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x63, 0x6f,
	0x75, 0x6e, 0x74, 0x22, 0x4e, 0x0a, 0x13, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x50, 0x72, 0x69, 0x76,
	0x61, 0x63, 0x79, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x12, 0x37, 0x0a, 0x0c, 0x61, 0x6d,
	0x6f, 0x75, 0x6e, 0x74, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b,
	0x32, 0x13, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x44,
	0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x0c, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x44, 0x65, 0x74,
	0x61, 0x69, 0x6c, 0x22, 0x52, 0x0a, 0x12, 0x72, 0x65, 0x70, 0x6c, 0x79, 0x55, 0x54, 0x58, 0x4f,
	0x73, 0x4f, 0x66, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x3c, 0x0a, 0x0e, 0x6c, 0x6f, 0x63,
	0x61, 0x6c, 0x55, 0x54, 0x58, 0x4f, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28,
	0x0b, 0x32, 0x14, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x55,
	0x54, 0x58, 0x4f, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x0e, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x55, 0x54,
	0x58, 0x4f, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x22, 0x86, 0x01, 0x0a, 0x14, 0x52, 0x65, 0x63, 0x65,
	0x69, 0x70, 0x74, 0x50, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74,
	0x12, 0x1c, 0x0a, 0x09, 0x61, 0x73, 0x73, 0x65, 0x74, 0x45, 0x78, 0x65, 0x63, 0x18, 0x01, 0x20,
	0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x73, 0x73, 0x65, 0x74, 0x45, 0x78, 0x65, 0x63, 0x12, 0x20,
	0x0a, 0x0b, 0x61, 0x73, 0x73, 0x65, 0x74, 0x53, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x18, 0x02, 0x20,
	0x01, 0x28, 0x09, 0x52, 0x0b, 0x61, 0x73, 0x73, 0x65, 0x74, 0x53, 0x79, 0x6d, 0x62, 0x6f, 0x6c,
	0x12, 0x2e, 0x0a, 0x09, 0x6b, 0x65, 0x79, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x18, 0x03, 0x20,
	0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x6b, 0x65, 0x79, 0x4f,
	0x75, 0x74, 0x70, 0x75, 0x74, 0x52, 0x09, 0x6b, 0x65, 0x79, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74,
	0x22, 0x90, 0x01, 0x0a, 0x0d, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x4f, 0x66, 0x55, 0x54,
	0x58, 0x4f, 0x12, 0x41, 0x0a, 0x09, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x4d, 0x61, 0x70, 0x18,
	0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x41, 0x6d,
	0x6f, 0x75, 0x6e, 0x74, 0x73, 0x4f, 0x66, 0x55, 0x54, 0x58, 0x4f, 0x2e, 0x41, 0x6d, 0x6f, 0x75,
	0x6e, 0x74, 0x4d, 0x61, 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x09, 0x61, 0x6d, 0x6f, 0x75,
	0x6e, 0x74, 0x4d, 0x61, 0x70, 0x1a, 0x3c, 0x0a, 0x0e, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x4d,
	0x61, 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01,
	0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c,
	0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a,
	0x02, 0x38, 0x01, 0x22, 0x96, 0x01, 0x0a, 0x10, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x4e, 0x61, 0x6d,
	0x65, 0x73, 0x4f, 0x66, 0x55, 0x54, 0x58, 0x4f, 0x12, 0x44, 0x0a, 0x09, 0x74, 0x6f, 0x6b, 0x65,
	0x6e, 0x73, 0x4d, 0x61, 0x70, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x74, 0x79,
	0x70, 0x65, 0x73, 0x2e, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x4f, 0x66,
	0x55, 0x54, 0x58, 0x4f, 0x2e, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x4d, 0x61, 0x70, 0x45, 0x6e,
	0x74, 0x72, 0x79, 0x52, 0x09, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x4d, 0x61, 0x70, 0x1a, 0x3c,
	0x0a, 0x0e, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x4d, 0x61, 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79,
	0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b,
	0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28,
	0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x4b, 0x0a, 0x15,
	0x55, 0x54, 0x58, 0x4f, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x34,
	0x50, 0x72, 0x69, 0x6e, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x74, 0x78, 0x68, 0x61, 0x73, 0x68, 0x18,
	0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x78, 0x68, 0x61, 0x73, 0x68, 0x12, 0x1a, 0x0a,
	0x08, 0x6f, 0x75, 0x74, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52,
	0x08, 0x6f, 0x75, 0x74, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x22, 0x8c, 0x01, 0x0a, 0x0e, 0x4b, 0x65,
	0x79, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x34, 0x50, 0x72, 0x69, 0x6e, 0x74, 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, 0x46, 0x0a, 0x0f, 0x75, 0x74, 0x78, 0x6f, 0x47, 0x6c, 0x6f, 0x62,
	0x61, 0x6c, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e,
	0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x55, 0x54, 0x58, 0x4f, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c,
	0x49, 0x6e, 0x64, 0x65, 0x78, 0x34, 0x50, 0x72, 0x69, 0x6e, 0x74, 0x52, 0x0f, 0x75, 0x74, 0x78,
	0x6f, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x1a, 0x0a, 0x08,
	0x6b, 0x65, 0x79, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08,
	0x6b, 0x65, 0x79, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x22, 0x4f, 0x0a, 0x0f, 0x6b, 0x65, 0x79, 0x4f,
	0x75, 0x74, 0x70, 0x75, 0x74, 0x34, 0x50, 0x72, 0x69, 0x6e, 0x74, 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, 0x24, 0x0a, 0x0d, 0x6f, 0x6e, 0x65, 0x74, 0x69, 0x6d, 0x65, 0x70, 0x75,
	0x62, 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6f, 0x6e, 0x65, 0x74,
	0x69, 0x6d, 0x65, 0x70, 0x75, 0x62, 0x6b, 0x65, 0x79, 0x22, 0x47, 0x0a, 0x12, 0x50, 0x72, 0x69,
	0x76, 0x61, 0x63, 0x79, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x34, 0x50, 0x72, 0x69, 0x6e, 0x74, 0x12,
	0x31, 0x0a, 0x08, 0x6b, 0x65, 0x79, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28,
	0x0b, 0x32, 0x15, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4b, 0x65, 0x79, 0x49, 0x6e, 0x70,
	0x75, 0x74, 0x34, 0x50, 0x72, 0x69, 0x6e, 0x74, 0x52, 0x08, 0x6b, 0x65, 0x79, 0x69, 0x6e, 0x70,
	0x75, 0x74, 0x22, 0x69, 0x0a, 0x13, 0x50, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x4f, 0x75, 0x74,
	0x70, 0x75, 0x74, 0x34, 0x50, 0x72, 0x69, 0x6e, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x52, 0x70, 0x75,
	0x62, 0x4b, 0x65, 0x79, 0x74, 0x78, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x52, 0x70,
	0x75, 0x62, 0x4b, 0x65, 0x79, 0x74, 0x78, 0x12, 0x34, 0x0a, 0x09, 0x6b, 0x65, 0x79, 0x6f, 0x75,
	0x74, 0x70, 0x75, 0x74, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x74, 0x79, 0x70,
	0x65, 0x73, 0x2e, 0x6b, 0x65, 0x79, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x34, 0x50, 0x72, 0x69,
	0x6e, 0x74, 0x52, 0x09, 0x6b, 0x65, 0x79, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x22, 0x94, 0x01,
	0x0a, 0x14, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x32, 0x50, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79,
	0x34, 0x50, 0x72, 0x69, 0x6e, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x6e,
	0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x74, 0x6f, 0x6b, 0x65, 0x6e,
	0x6e, 0x61, 0x6d, 0x65, 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, 0x12, 0x0a, 0x04,
	0x6e, 0x6f, 0x74, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x6f, 0x74, 0x65,
	0x12, 0x32, 0x0a, 0x06, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b,
	0x32, 0x1a, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x50, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79,
	0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x34, 0x50, 0x72, 0x69, 0x6e, 0x74, 0x52, 0x06, 0x6f, 0x75,
	0x74, 0x70, 0x75, 0x74, 0x22, 0xc6, 0x01, 0x0a, 0x15, 0x50, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79,
	0x32, 0x50, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x34, 0x50, 0x72, 0x69, 0x6e, 0x74, 0x12, 0x1c,
	0x0a, 0x09, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28,
	0x09, 0x52, 0x09, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x6e, 0x61, 0x6d, 0x65, 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, 0x12, 0x0a, 0x04, 0x6e, 0x6f, 0x74, 0x65, 0x18, 0x05, 0x20, 0x01,
	0x28, 0x09, 0x52, 0x04, 0x6e, 0x6f, 0x74, 0x65, 0x12, 0x2f, 0x0a, 0x05, 0x69, 0x6e, 0x70, 0x75,
	0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e,
	0x50, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x34, 0x50, 0x72, 0x69,
	0x6e, 0x74, 0x52, 0x05, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x12, 0x32, 0x0a, 0x06, 0x6f, 0x75, 0x74,
	0x70, 0x75, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x74, 0x79, 0x70, 0x65,
	0x73, 0x2e, 0x50, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x34,
	0x50, 0x72, 0x69, 0x6e, 0x74, 0x52, 0x06, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x22, 0xc5, 0x01,
	0x0a, 0x14, 0x50, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x32, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63,
	0x34, 0x50, 0x72, 0x69, 0x6e, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x6e,
	0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x74, 0x6f, 0x6b, 0x65, 0x6e,
	0x6e, 0x61, 0x6d, 0x65, 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, 0x12, 0x0a, 0x04,
	0x6e, 0x6f, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x6f, 0x74, 0x65,
	0x12, 0x2f, 0x0a, 0x05, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32,
	0x19, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x50, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x49,
	0x6e, 0x70, 0x75, 0x74, 0x34, 0x50, 0x72, 0x69, 0x6e, 0x74, 0x52, 0x05, 0x69, 0x6e, 0x70, 0x75,
	0x74, 0x12, 0x32, 0x0a, 0x06, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28,
	0x0b, 0x32, 0x1a, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x50, 0x72, 0x69, 0x76, 0x61, 0x63,
	0x79, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x34, 0x50, 0x72, 0x69, 0x6e, 0x74, 0x52, 0x06, 0x6f,
	0x75, 0x74, 0x70, 0x75, 0x74, 0x22, 0x86, 0x02, 0x0a, 0x13, 0x50, 0x72, 0x69, 0x76, 0x61, 0x63,
	0x79, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x34, 0x50, 0x72, 0x69, 0x6e, 0x74, 0x12, 0x45, 0x0a,
	0x0e, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x32, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x18,
	0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x50, 0x75,
	0x62, 0x6c, 0x69, 0x63, 0x32, 0x50, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x34, 0x50, 0x72, 0x69,
	0x6e, 0x74, 0x48, 0x00, 0x52, 0x0e, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x32, 0x70, 0x72, 0x69,
	0x76, 0x61, 0x63, 0x79, 0x12, 0x48, 0x0a, 0x0f, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x32,
	0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e,
	0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x50, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x32, 0x50, 0x72,
	0x69, 0x76, 0x61, 0x63, 0x79, 0x34, 0x50, 0x72, 0x69, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x0f, 0x70,
	0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x32, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x12, 0x45,
	0x0a, 0x0e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x32, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63,
	0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x50,
	0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x32, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x34, 0x50, 0x72,
	0x69, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x0e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x32, 0x70,
	0x75, 0x62, 0x6c, 0x69, 0x63, 0x12, 0x0e, 0x0a, 0x02, 0x74, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28,
	0x05, 0x52, 0x02, 0x74, 0x79, 0x42, 0x07, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x5c,
	0x0a, 0x12, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x50, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x50, 0x6b,
	0x50, 0x61, 0x69, 0x72, 0x12, 0x26, 0x0a, 0x0e, 0x73, 0x68, 0x6f, 0x77, 0x53, 0x75, 0x63, 0x63,
	0x65, 0x73, 0x73, 0x66, 0x75, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x73, 0x68,
	0x6f, 0x77, 0x53, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x66, 0x75, 0x6c, 0x12, 0x1e, 0x0a, 0x0a,
	0x70, 0x75, 0x62, 0x6b, 0x65, 0x79, 0x70, 0x61, 0x69, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09,
	0x52, 0x0a, 0x70, 0x75, 0x62, 0x6b, 0x65, 0x79, 0x70, 0x61, 0x69, 0x72, 0x22, 0x5e, 0x0a, 0x14,
	0x52, 0x65, 0x71, 0x50, 0x72, 0x69, 0x76, 0x42, 0x61, 0x6c, 0x34, 0x41, 0x64, 0x64, 0x72, 0x54,
	0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x61, 0x64, 0x64, 0x72, 0x18, 0x01, 0x20, 0x01,
	0x28, 0x09, 0x52, 0x04, 0x61, 0x64, 0x64, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x6b, 0x65,
	0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x1c,
	0x0a, 0x09, 0x61, 0x73, 0x73, 0x65, 0x74, 0x45, 0x78, 0x65, 0x63, 0x18, 0x03, 0x20, 0x01, 0x28,
	0x09, 0x52, 0x09, 0x61, 0x73, 0x73, 0x65, 0x74, 0x45, 0x78, 0x65, 0x63, 0x22, 0x51, 0x0a, 0x13,
	0x52, 0x65, 0x70, 0x6c, 0x79, 0x50, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x42, 0x61, 0x6c, 0x61,
	0x6e, 0x63, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x6f, 0x6e, 0x65, 0x74, 0x69, 0x6d, 0x65, 0x61, 0x64,
	0x64, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6f, 0x6e, 0x65, 0x74, 0x69, 0x6d,
	0x65, 0x61, 0x64, 0x64, 0x72, 0x12, 0x18, 0x0a, 0x07, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65,
	0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x22,
	0xce, 0x02, 0x0a, 0x0e, 0x50, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x44, 0x42, 0x53, 0x74, 0x6f,
	0x72, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x74, 0x78, 0x68, 0x61, 0x73, 0x68, 0x18, 0x01, 0x20, 0x01,
	0x28, 0x0c, 0x52, 0x06, 0x74, 0x78, 0x68, 0x61, 0x73, 0x68, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x6f,
	0x6b, 0x65, 0x6e, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x74,
	0x6f, 0x6b, 0x65, 0x6e, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x6d, 0x6f, 0x75,
	0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74,
	0x12, 0x1a, 0x0a, 0x08, 0x6f, 0x75, 0x74, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x04, 0x20, 0x01,
	0x28, 0x05, 0x52, 0x08, 0x6f, 0x75, 0x74, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x22, 0x0a, 0x0c,
	0x74, 0x78, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x52, 0x18, 0x05, 0x20, 0x01,
	0x28, 0x0c, 0x52, 0x0c, 0x74, 0x78, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x52,
	0x12, 0x2a, 0x0a, 0x10, 0x6f, 0x6e, 0x65, 0x74, 0x69, 0x6d, 0x65, 0x50, 0x75, 0x62, 0x6c, 0x69,
	0x63, 0x4b, 0x65, 0x79, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x10, 0x6f, 0x6e, 0x65, 0x74,
	0x69, 0x6d, 0x65, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05,
	0x6f, 0x77, 0x6e, 0x65, 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6f, 0x77, 0x6e,
	0x65, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x08, 0x20, 0x01,
	0x28, 0x03, 0x52, 0x06, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x74, 0x78,
	0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x74, 0x78, 0x69,
	0x6e, 0x64, 0x65, 0x78, 0x12, 0x1c, 0x0a, 0x09, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x68, 0x61, 0x73,
	0x68, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x09, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x68, 0x61,
	0x73, 0x68, 0x12, 0x1c, 0x0a, 0x09, 0x61, 0x73, 0x73, 0x65, 0x74, 0x45, 0x78, 0x65, 0x63, 0x18,
	0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x73, 0x73, 0x65, 0x74, 0x45, 0x78, 0x65, 0x63,
	0x22, 0x4e, 0x0a, 0x04, 0x55, 0x54, 0x58, 0x4f, 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, 0x2e, 0x0a, 0x09, 0x75, 0x74, 0x78, 0x6f, 0x42, 0x61, 0x73, 0x69, 0x63, 0x18, 0x02, 0x20,
	0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x55, 0x54, 0x58, 0x4f,
	0x42, 0x61, 0x73, 0x69, 0x63, 0x52, 0x09, 0x75, 0x74, 0x78, 0x6f, 0x42, 0x61, 0x73, 0x69, 0x63,
	0x22, 0x70, 0x0a, 0x0e, 0x55, 0x54, 0x58, 0x4f, 0x48, 0x61, 0x76, 0x65, 0x54, 0x78, 0x48, 0x61,
	0x73, 0x68, 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, 0x74, 0x78,
	0x48, 0x61, 0x73, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x78, 0x48, 0x61,
	0x73, 0x68, 0x12, 0x2e, 0x0a, 0x09, 0x75, 0x74, 0x78, 0x6f, 0x42, 0x61, 0x73, 0x69, 0x63, 0x18,
	0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x55, 0x54,
	0x58, 0x4f, 0x42, 0x61, 0x73, 0x69, 0x63, 0x52, 0x09, 0x75, 0x74, 0x78, 0x6f, 0x42, 0x61, 0x73,
	0x69, 0x63, 0x22, 0x2a, 0x0a, 0x05, 0x55, 0x54, 0x58, 0x4f, 0x73, 0x12, 0x21, 0x0a, 0x05, 0x75,
	0x74, 0x78, 0x6f, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x74, 0x79, 0x70,
	0x65, 0x73, 0x2e, 0x55, 0x54, 0x58, 0x4f, 0x52, 0x05, 0x75, 0x74, 0x78, 0x6f, 0x73, 0x22, 0x52,
	0x0a, 0x0f, 0x55, 0x54, 0x58, 0x4f, 0x48, 0x61, 0x76, 0x65, 0x54, 0x78, 0x48, 0x61, 0x73, 0x68,
	0x73, 0x12, 0x3f, 0x0a, 0x0f, 0x75, 0x74, 0x78, 0x6f, 0x48, 0x61, 0x76, 0x65, 0x54, 0x78, 0x48,
	0x61, 0x73, 0x68, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x74, 0x79, 0x70,
	0x65, 0x73, 0x2e, 0x55, 0x54, 0x58, 0x4f, 0x48, 0x61, 0x76, 0x65, 0x54, 0x78, 0x48, 0x61, 0x73,
	0x68, 0x52, 0x0f, 0x75, 0x74, 0x78, 0x6f, 0x48, 0x61, 0x76, 0x65, 0x54, 0x78, 0x48, 0x61, 0x73,
	0x68, 0x73, 0x22, 0x88, 0x01, 0x0a, 0x12, 0x52, 0x65, 0x71, 0x55, 0x54, 0x58, 0x4f, 0x47, 0x6c,
	0x6f, 0x62, 0x61, 0x6c, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x1c, 0x0a, 0x09, 0x61, 0x73, 0x73,
	0x65, 0x74, 0x45, 0x78, 0x65, 0x63, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x73,
	0x73, 0x65, 0x74, 0x45, 0x78, 0x65, 0x63, 0x12, 0x20, 0x0a, 0x0b, 0x61, 0x73, 0x73, 0x65, 0x74,
	0x53, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x61, 0x73,
	0x73, 0x65, 0x74, 0x53, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x12, 0x1a, 0x0a, 0x08, 0x6d, 0x69, 0x78,
	0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x6d, 0x69, 0x78,
	0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18,
	0x04, 0x20, 0x03, 0x28, 0x03, 0x52, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x73, 0x0a,
	0x09, 0x55, 0x54, 0x58, 0x4f, 0x42, 0x61, 0x73, 0x69, 0x63, 0x12, 0x40, 0x0a, 0x0f, 0x75, 0x74,
	0x78, 0x6f, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x01, 0x20,
	0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x55, 0x54, 0x58, 0x4f,
	0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x0f, 0x75, 0x74, 0x78,
	0x6f, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x24, 0x0a, 0x0d,
	0x6f, 0x6e, 0x65, 0x74, 0x69, 0x6d, 0x65, 0x50, 0x75, 0x62, 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20,
	0x01, 0x28, 0x0c, 0x52, 0x0d, 0x6f, 0x6e, 0x65, 0x74, 0x69, 0x6d, 0x65, 0x50, 0x75, 0x62, 0x6b,
	0x65, 0x79, 0x22, 0x52, 0x0a, 0x10, 0x55, 0x54, 0x58, 0x4f, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x34,
	0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 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, 0x26,
	0x0a, 0x05, 0x75, 0x74, 0x78, 0x6f, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e,
	0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x55, 0x54, 0x58, 0x4f, 0x42, 0x61, 0x73, 0x69, 0x63, 0x52,
	0x05, 0x75, 0x74, 0x78, 0x6f, 0x73, 0x22, 0x59, 0x0a, 0x12, 0x52, 0x65, 0x73, 0x55, 0x54, 0x58,
	0x4f, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x43, 0x0a, 0x10,
	0x75, 0x74, 0x78, 0x6f, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x34, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74,
	0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x55,
	0x54, 0x58, 0x4f, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x34, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x52,
	0x10, 0x75, 0x74, 0x78, 0x6f, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x34, 0x41, 0x6d, 0x6f, 0x75, 0x6e,
	0x74, 0x22, 0xba, 0x01, 0x0a, 0x11, 0x46, 0x54, 0x58, 0x4f, 0x73, 0x53, 0x54, 0x58, 0x4f, 0x73,
	0x49, 0x6e, 0x4f, 0x6e, 0x65, 0x54, 0x78, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x6f, 0x6b, 0x65, 0x6e,
	0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x74, 0x6f, 0x6b, 0x65,
	0x6e, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x18,
	0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x12, 0x16, 0x0a,
	0x06, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x65,
	0x78, 0x70, 0x69, 0x72, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x74, 0x78, 0x68, 0x61, 0x73, 0x68, 0x18,
	0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x78, 0x68, 0x61, 0x73, 0x68, 0x12, 0x21, 0x0a,
	0x05, 0x75, 0x74, 0x78, 0x6f, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x74,
	0x79, 0x70, 0x65, 0x73, 0x2e, 0x55, 0x54, 0x58, 0x4f, 0x52, 0x05, 0x75, 0x74, 0x78, 0x6f, 0x73,
	0x12, 0x1c, 0x0a, 0x09, 0x61, 0x73, 0x73, 0x65, 0x74, 0x45, 0x78, 0x65, 0x63, 0x18, 0x06, 0x20,
	0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x73, 0x73, 0x65, 0x74, 0x45, 0x78, 0x65, 0x63, 0x22, 0x5a,
	0x0a, 0x0c, 0x52, 0x65, 0x61, 0x6c, 0x4b, 0x65, 0x79, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x12, 0x22,
	0x0a, 0x0c, 0x72, 0x65, 0x61, 0x6c, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x6b, 0x65, 0x79, 0x18, 0x01,
	0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x72, 0x65, 0x61, 0x6c, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x6b,
	0x65, 0x79, 0x12, 0x26, 0x0a, 0x0e, 0x6f, 0x6e, 0x65, 0x74, 0x69, 0x6d, 0x65, 0x70, 0x72, 0x69,
	0x76, 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0e, 0x6f, 0x6e, 0x65, 0x74,
	0x69, 0x6d, 0x65, 0x70, 0x72, 0x69, 0x76, 0x6b, 0x65, 0x79, 0x22, 0x34, 0x0a, 0x0a, 0x55, 0x54,
	0x58, 0x4f, 0x42, 0x61, 0x73, 0x69, 0x63, 0x73, 0x12, 0x26, 0x0a, 0x05, 0x75, 0x74, 0x78, 0x6f,
	0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e,
	0x55, 0x54, 0x58, 0x4f, 0x42, 0x61, 0x73, 0x69, 0x63, 0x52, 0x05, 0x75, 0x74, 0x78, 0x6f, 0x73,
	0x22, 0xcc, 0x02, 0x0a, 0x16, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x72, 0x61, 0x6e, 0x73,
	0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x61, 0x63, 0x68, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x6b,
	0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x1e, 0x0a,
	0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28,
	0x03, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x74, 0x69, 0x6d, 0x65, 0x12, 0x1a, 0x0a,
	0x08, 0x73, 0x69, 0x67, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52,
	0x08, 0x73, 0x69, 0x67, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61,
	0x74, 0x75, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75,
	0x73, 0x12, 0x34, 0x0a, 0x0b, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e,
	0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x54,
	0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0b, 0x74, 0x72, 0x61, 0x6e,
	0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x65, 0x6e, 0x64, 0x65,
	0x72, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x12,
	0x37, 0x0a, 0x0c, 0x72, 0x65, 0x61, 0x6c, 0x6b, 0x65, 0x79, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x18,
	0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x52, 0x65,
	0x61, 0x6c, 0x4b, 0x65, 0x79, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x52, 0x0c, 0x72, 0x65, 0x61, 0x6c,
	0x6b, 0x65, 0x79, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x12, 0x27, 0x0a, 0x05, 0x75, 0x74, 0x78, 0x6f,
	0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e,
	0x55, 0x54, 0x58, 0x4f, 0x42, 0x61, 0x73, 0x69, 0x63, 0x73, 0x52, 0x05, 0x75, 0x74, 0x78, 0x6f,
	0x73, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x09,
	0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x6e, 0x61, 0x6d, 0x65, 0x22,
	0x42, 0x0a, 0x0e, 0x52, 0x65, 0x71, 0x43, 0x61, 0x63, 0x68, 0x65, 0x54, 0x78, 0x4c, 0x69, 0x73,
	0x74, 0x12, 0x12, 0x0a, 0x04, 0x61, 0x64, 0x64, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
	0x04, 0x61, 0x64, 0x64, 0x72, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x6e, 0x61,
	0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x6e,
	0x61, 0x6d, 0x65, 0x22, 0x38, 0x0a, 0x10, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x43, 0x61, 0x63, 0x68,
	0x65, 0x54, 0x78, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x24, 0x0a, 0x03, 0x74, 0x78, 0x73, 0x18, 0x01,
	0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x54, 0x72, 0x61,
	0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x03, 0x74, 0x78, 0x73, 0x22, 0x7d, 0x0a,
	0x11, 0x52, 0x65, 0x71, 0x50, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x41, 0x63, 0x63, 0x6f, 0x75,
	0x6e, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x61, 0x64, 0x64, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
	0x52, 0x04, 0x61, 0x64, 0x64, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18,
	0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x20, 0x0a, 0x0b,
	0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28,
	0x05, 0x52, 0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x6d, 0x6f, 0x64, 0x65, 0x12, 0x1c,
	0x0a, 0x09, 0x61, 0x73, 0x73, 0x65, 0x74, 0x45, 0x78, 0x65, 0x63, 0x18, 0x04, 0x20, 0x01, 0x28,
	0x09, 0x52, 0x09, 0x61, 0x73, 0x73, 0x65, 0x74, 0x45, 0x78, 0x65, 0x63, 0x22, 0x7f, 0x0a, 0x13,
	0x52, 0x65, 0x70, 0x6c, 0x79, 0x50, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x41, 0x63, 0x63, 0x6f,
	0x75, 0x6e, 0x74, 0x12, 0x22, 0x0a, 0x05, 0x75, 0x74, 0x78, 0x6f, 0x73, 0x18, 0x01, 0x20, 0x01,
	0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x55, 0x54, 0x58, 0x4f, 0x73,
	0x52, 0x05, 0x75, 0x74, 0x78, 0x6f, 0x73, 0x12, 0x22, 0x0a, 0x05, 0x66, 0x74, 0x78, 0x6f, 0x73,
	0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x55,
	0x54, 0x58, 0x4f, 0x73, 0x52, 0x05, 0x66, 0x74, 0x78, 0x6f, 0x73, 0x12, 0x20, 0x0a, 0x0b, 0x64,
	0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05,
	0x52, 0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x6d, 0x6f, 0x64, 0x65, 0x22, 0x4d, 0x0a,
	0x13, 0x52, 0x65, 0x71, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x61, 0x63, 0x68, 0x65, 0x54,
	0x78, 0x4b, 0x65, 0x79, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x6e, 0x61, 0x6d,
	0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x6e, 0x61,
	0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x68, 0x61, 0x73, 0x68, 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20,
	0x01, 0x28, 0x0c, 0x52, 0x07, 0x68, 0x61, 0x73, 0x68, 0x6b, 0x65, 0x79, 0x22, 0xfd, 0x01, 0x0a,
	0x19, 0x52, 0x65, 0x71, 0x50, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x54, 0x72, 0x61, 0x6e, 0x73,
	0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x22, 0x0a, 0x0c, 0x73, 0x65,
	0x6e, 0x64, 0x52, 0x65, 0x63, 0x76, 0x46, 0x6c, 0x61, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05,
	0x52, 0x0c, 0x73, 0x65, 0x6e, 0x64, 0x52, 0x65, 0x63, 0x76, 0x46, 0x6c, 0x61, 0x67, 0x12, 0x1c,
	0x0a, 0x09, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28,
	0x05, 0x52, 0x09, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x14, 0x0a, 0x05,
	0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x63, 0x6f, 0x75,
	0x6e, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x06, 0x20,
	0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x1c, 0x0a, 0x09,
	0x61, 0x73, 0x73, 0x65, 0x74, 0x45, 0x78, 0x65, 0x63, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52,
	0x09, 0x61, 0x73, 0x73, 0x65, 0x74, 0x45, 0x78, 0x65, 0x63, 0x12, 0x20, 0x0a, 0x0b, 0x61, 0x73,
	0x73, 0x65, 0x74, 0x53, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52,
	0x0b, 0x61, 0x73, 0x73, 0x65, 0x74, 0x53, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x12, 0x2e, 0x0a, 0x12,
	0x73, 0x74, 0x61, 0x72, 0x74, 0x54, 0x78, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x49, 0x6e, 0x64,
	0x65, 0x78, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x73, 0x74, 0x61, 0x72, 0x74, 0x54,
	0x78, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x22, 0x3a, 0x0a, 0x0e,
	0x52, 0x65, 0x71, 0x52, 0x65, 0x73, 0x63, 0x61, 0x6e, 0x55, 0x74, 0x78, 0x6f, 0x73, 0x12, 0x14,
	0x0a, 0x05, 0x61, 0x64, 0x64, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x61,
	0x64, 0x64, 0x72, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x66, 0x6c, 0x61, 0x67, 0x18, 0x02, 0x20, 0x01,
	0x28, 0x05, 0x52, 0x04, 0x66, 0x6c, 0x61, 0x67, 0x22, 0x39, 0x0a, 0x0f, 0x52, 0x65, 0x70, 0x52,
	0x65, 0x73, 0x63, 0x61, 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x61,
	0x64, 0x64, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x61, 0x64, 0x64, 0x72, 0x12,
	0x12, 0x0a, 0x04, 0x66, 0x6c, 0x61, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x66,
	0x6c, 0x61, 0x67, 0x22, 0x68, 0x0a, 0x0e, 0x52, 0x65, 0x70, 0x52, 0x65, 0x73, 0x63, 0x61, 0x6e,
	0x55, 0x74, 0x78, 0x6f, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x66, 0x6c, 0x61, 0x67, 0x18, 0x01, 0x20,
	0x01, 0x28, 0x05, 0x52, 0x04, 0x66, 0x6c, 0x61, 0x67, 0x12, 0x42, 0x0a, 0x10, 0x72, 0x65, 0x70,
	0x52, 0x65, 0x73, 0x63, 0x61, 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x18, 0x02, 0x20,
	0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x52, 0x65, 0x70, 0x52,
	0x65, 0x73, 0x63, 0x61, 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, 0x10, 0x72, 0x65, 0x70,
	0x52, 0x65, 0x73, 0x63, 0x61, 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x22, 0x28, 0x0a,
	0x10, 0x52, 0x65, 0x71, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x50, 0x72, 0x69, 0x76, 0x61, 0x63,
	0x79, 0x12, 0x14, 0x0a, 0x05, 0x61, 0x64, 0x64, 0x72, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09,
	0x52, 0x05, 0x61, 0x64, 0x64, 0x72, 0x73, 0x22, 0x49, 0x0a, 0x0d, 0x50, 0x72, 0x69, 0x41, 0x64,
	0x64, 0x72, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x61, 0x64, 0x64, 0x72,
	0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x61, 0x64, 0x64, 0x72, 0x12, 0x12, 0x0a, 0x04,
	0x49, 0x73, 0x4f, 0x4b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x04, 0x49, 0x73, 0x4f, 0x4b,
	0x12, 0x10, 0x0a, 0x03, 0x6d, 0x73, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6d,
	0x73, 0x67, 0x22, 0x42, 0x0a, 0x10, 0x52, 0x65, 0x70, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x50,
	0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x12, 0x2e, 0x0a, 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74,
	0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e,
	0x50, 0x72, 0x69, 0x41, 0x64, 0x64, 0x72, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, 0x07, 0x72,
	0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x22, 0xa5, 0x01, 0x0a, 0x15, 0x50, 0x72, 0x69, 0x76, 0x61,
	0x63, 0x79, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d,
	0x12, 0x1e, 0x0a, 0x0a, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x18, 0x01,
	0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65,
	0x12, 0x31, 0x0a, 0x0a, 0x75, 0x74, 0x78, 0x6f, 0x62, 0x61, 0x73, 0x69, 0x63, 0x73, 0x18, 0x02,
	0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x55, 0x54, 0x58,
	0x4f, 0x42, 0x61, 0x73, 0x69, 0x63, 0x73, 0x52, 0x0a, 0x75, 0x74, 0x78, 0x6f, 0x62, 0x61, 0x73,
	0x69, 0x63, 0x73, 0x12, 0x39, 0x0a, 0x0d, 0x72, 0x65, 0x61, 0x6c, 0x4b, 0x65, 0x79, 0x49, 0x6e,
	0x70, 0x75, 0x74, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x74, 0x79, 0x70,
	0x65, 0x73, 0x2e, 0x52, 0x65, 0x61, 0x6c, 0x4b, 0x65, 0x79, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x52,
	0x0d, 0x72, 0x65, 0x61, 0x6c, 0x4b, 0x65, 0x79, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x22, 0x9e,
	0x01, 0x0a, 0x14, 0x57, 0x61, 0x6c, 0x6c, 0x65, 0x74, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74,
	0x50, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x12, 0x1e, 0x0a, 0x0a, 0x76, 0x69, 0x65, 0x77, 0x50,
	0x75, 0x62, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0a, 0x76, 0x69, 0x65,
	0x77, 0x50, 0x75, 0x62, 0x6b, 0x65, 0x79, 0x12, 0x20, 0x0a, 0x0b, 0x76, 0x69, 0x65, 0x77, 0x50,
	0x72, 0x69, 0x76, 0x4b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0b, 0x76, 0x69,
	0x65, 0x77, 0x50, 0x72, 0x69, 0x76, 0x4b, 0x65, 0x79, 0x12, 0x20, 0x0a, 0x0b, 0x73, 0x70, 0x65,
	0x6e, 0x64, 0x50, 0x75, 0x62, 0x6b, 0x65, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0b,
	0x73, 0x70, 0x65, 0x6e, 0x64, 0x50, 0x75, 0x62, 0x6b, 0x65, 0x79, 0x12, 0x22, 0x0a, 0x0c, 0x73,
	0x70, 0x65, 0x6e, 0x64, 0x50, 0x72, 0x69, 0x76, 0x4b, 0x65, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28,
	0x0c, 0x52, 0x0c, 0x73, 0x70, 0x65, 0x6e, 0x64, 0x50, 0x72, 0x69, 0x76, 0x4b, 0x65, 0x79, 0x22,
	0x94, 0x02, 0x0a, 0x12, 0x52, 0x65, 0x71, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x72, 0x69,
	0x76, 0x61, 0x63, 0x79, 0x54, 0x78, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x6e,
	0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x74, 0x6f, 0x6b, 0x65, 0x6e,
	0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79,
	0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e,
	0x54, 0x79, 0x70, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03,
	0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x12, 0x0a, 0x04,
	0x6e, 0x6f, 0x74, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x6f, 0x74, 0x65,
	0x12, 0x12, 0x0a, 0x04, 0x66, 0x72, 0x6f, 0x6d, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04,
	0x66, 0x72, 0x6f, 0x6d, 0x12, 0x0e, 0x0a, 0x02, 0x74, 0x6f, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09,
	0x52, 0x02, 0x74, 0x6f, 0x12, 0x1e, 0x0a, 0x0a, 0x70, 0x75, 0x62, 0x6b, 0x65, 0x79, 0x70, 0x61,
	0x69, 0x72, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x70, 0x75, 0x62, 0x6b, 0x65, 0x79,
	0x70, 0x61, 0x69, 0x72, 0x12, 0x1a, 0x0a, 0x08, 0x6d, 0x69, 0x78, 0x63, 0x6f, 0x75, 0x6e, 0x74,
	0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x6d, 0x69, 0x78, 0x63, 0x6f, 0x75, 0x6e, 0x74,
	0x12, 0x16, 0x0a, 0x06, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x03,
	0x52, 0x06, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x61, 0x73, 0x73, 0x65,
	0x74, 0x45, 0x78, 0x65, 0x63, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x73, 0x73,
	0x65, 0x74, 0x45, 0x78, 0x65, 0x63, 0x32, 0x97, 0x02, 0x0a, 0x07, 0x70, 0x72, 0x69, 0x76, 0x61,
	0x63, 0x79, 0x12, 0x3f, 0x0a, 0x0e, 0x53, 0x68, 0x6f, 0x77, 0x50, 0x72, 0x69, 0x76, 0x61, 0x63,
	0x79, 0x4b, 0x65, 0x79, 0x12, 0x10, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x52, 0x65, 0x71,
	0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x1a, 0x19, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x52,
	0x65, 0x70, 0x6c, 0x79, 0x50, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x50, 0x6b, 0x50, 0x61, 0x69,
	0x72, 0x22, 0x00, 0x12, 0x3d, 0x0a, 0x0b, 0x52, 0x65, 0x73, 0x63, 0x61, 0x6e, 0x55, 0x74, 0x78,
	0x6f, 0x73, 0x12, 0x15, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x52, 0x65, 0x71, 0x52, 0x65,
	0x73, 0x63, 0x61, 0x6e, 0x55, 0x74, 0x78, 0x6f, 0x73, 0x1a, 0x15, 0x2e, 0x74, 0x79, 0x70, 0x65,
	0x73, 0x2e, 0x52, 0x65, 0x70, 0x52, 0x65, 0x73, 0x63, 0x61, 0x6e, 0x55, 0x74, 0x78, 0x6f, 0x73,
	0x22, 0x00, 0x12, 0x43, 0x0a, 0x0d, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x50, 0x72, 0x69, 0x76,
	0x61, 0x63, 0x79, 0x12, 0x17, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x52, 0x65, 0x71, 0x45,
	0x6e, 0x61, 0x62, 0x6c, 0x65, 0x50, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x1a, 0x17, 0x2e, 0x74,
	0x79, 0x70, 0x65, 0x73, 0x2e, 0x52, 0x65, 0x70, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x50, 0x72,
	0x69, 0x76, 0x61, 0x63, 0x79, 0x22, 0x00, 0x12, 0x47, 0x0a, 0x14, 0x43, 0x72, 0x65, 0x61, 0x74,
	0x65, 0x52, 0x61, 0x77, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12,
	0x19, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x52, 0x65, 0x71, 0x43, 0x72, 0x65, 0x61, 0x74,
	0x65, 0x50, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x54, 0x78, 0x1a, 0x12, 0x2e, 0x74, 0x79, 0x70,
	0x65, 0x73, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x00,
	0x42, 0x0a, 0x5a, 0x08, 0x2e, 0x2e, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x62, 0x06, 0x70, 0x72,
	0x6f, 0x74, 0x6f, 0x33,
}

var (
	file_privacy_proto_rawDescOnce sync.Once
	file_privacy_proto_rawDescData = file_privacy_proto_rawDesc
)

func file_privacy_proto_rawDescGZIP() []byte {
	file_privacy_proto_rawDescOnce.Do(func() {
		file_privacy_proto_rawDescData = protoimpl.X.CompressGZIP(file_privacy_proto_rawDescData)
	})
	return file_privacy_proto_rawDescData
}

var file_privacy_proto_msgTypes = make([]protoimpl.MessageInfo, 64)
var file_privacy_proto_goTypes = []interface{}{
	(*PrivacyAction)(nil),             // 0: types.PrivacyAction
	(*Public2Privacy)(nil),            // 1: types.Public2Privacy
	(*Privacy2Privacy)(nil),           // 2: types.Privacy2Privacy
	(*Privacy2Public)(nil),            // 3: types.Privacy2Public
	(*UTXOGlobalIndex)(nil),           // 4: types.UTXOGlobalIndex
	(*KeyInput)(nil),                  // 5: types.KeyInput
	(*PrivacyInput)(nil),              // 6: types.PrivacyInput
	(*KeyOutput)(nil),                 // 7: types.keyOutput
	(*PrivacyOutput)(nil),             // 8: types.PrivacyOutput
	(*GroupUTXOGlobalIndex)(nil),      // 9: types.GroupUTXOGlobalIndex
	(*LocalUTXOItem)(nil),             // 10: types.LocalUTXOItem
	(*ReqUTXOPubKeys)(nil),            // 11: types.ReqUTXOPubKeys
	(*PublicKeyData)(nil),             // 12: types.PublicKeyData
	(*GroupUTXOPubKey)(nil),           // 13: types.GroupUTXOPubKey
	(*ResUTXOPubKeys)(nil),            // 14: types.ResUTXOPubKeys
	(*ReqPrivacyToken)(nil),           // 15: types.ReqPrivacyToken
	(*AmountDetail)(nil),              // 16: types.AmountDetail
	(*ReplyPrivacyAmounts)(nil),       // 17: types.ReplyPrivacyAmounts
	(*ReplyUTXOsOfAmount)(nil),        // 18: types.replyUTXOsOfAmount
	(*ReceiptPrivacyOutput)(nil),      // 19: types.ReceiptPrivacyOutput
	(*AmountsOfUTXO)(nil),             // 20: types.AmountsOfUTXO
	(*TokenNamesOfUTXO)(nil),          // 21: types.TokenNamesOfUTXO
	(*UTXOGlobalIndex4Print)(nil),     // 22: types.UTXOGlobalIndex4Print
	(*KeyInput4Print)(nil),            // 23: types.KeyInput4Print
	(*KeyOutput4Print)(nil),           // 24: types.keyOutput4Print
	(*PrivacyInput4Print)(nil),        // 25: types.PrivacyInput4Print
	(*PrivacyOutput4Print)(nil),       // 26: types.PrivacyOutput4Print
	(*Public2Privacy4Print)(nil),      // 27: types.Public2Privacy4Print
	(*Privacy2Privacy4Print)(nil),     // 28: types.Privacy2Privacy4Print
	(*Privacy2Public4Print)(nil),      // 29: types.Privacy2Public4Print
	(*PrivacyAction4Print)(nil),       // 30: types.PrivacyAction4Print
	(*ReplyPrivacyPkPair)(nil),        // 31: types.ReplyPrivacyPkPair
	(*ReqPrivBal4AddrToken)(nil),      // 32: types.ReqPrivBal4AddrToken
	(*ReplyPrivacyBalance)(nil),       // 33: types.ReplyPrivacyBalance
	(*PrivacyDBStore)(nil),            // 34: types.PrivacyDBStore
	(*UTXO)(nil),                      // 35: types.UTXO
	(*UTXOHaveTxHash)(nil),            // 36: types.UTXOHaveTxHash
	(*UTXOs)(nil),                     // 37: types.UTXOs
	(*UTXOHaveTxHashs)(nil),           // 38: types.UTXOHaveTxHashs
	(*ReqUTXOGlobalIndex)(nil),        // 39: types.ReqUTXOGlobalIndex
	(*UTXOBasic)(nil),                 // 40: types.UTXOBasic
	(*UTXOIndex4Amount)(nil),          // 41: types.UTXOIndex4Amount
	(*ResUTXOGlobalIndex)(nil),        // 42: types.ResUTXOGlobalIndex
	(*FTXOsSTXOsInOneTx)(nil),         // 43: types.FTXOsSTXOsInOneTx
	(*RealKeyInput)(nil),              // 44: types.RealKeyInput
	(*UTXOBasics)(nil),                // 45: types.UTXOBasics
	(*CreateTransactionCache)(nil),    // 46: types.CreateTransactionCache
	(*ReqCacheTxList)(nil),            // 47: types.ReqCacheTxList
	(*ReplyCacheTxList)(nil),          // 48: types.ReplyCacheTxList
	(*ReqPrivacyAccount)(nil),         // 49: types.ReqPrivacyAccount
	(*ReplyPrivacyAccount)(nil),       // 50: types.ReplyPrivacyAccount
	(*ReqCreateCacheTxKey)(nil),       // 51: types.ReqCreateCacheTxKey
	(*ReqPrivacyTransactionList)(nil), // 52: types.ReqPrivacyTransactionList
	(*ReqRescanUtxos)(nil),            // 53: types.ReqRescanUtxos
	(*RepRescanResult)(nil),           // 54: types.RepRescanResult
	(*RepRescanUtxos)(nil),            // 55: types.RepRescanUtxos
	(*ReqEnablePrivacy)(nil),          // 56: types.ReqEnablePrivacy
	(*PriAddrResult)(nil),             // 57: types.PriAddrResult
	(*RepEnablePrivacy)(nil),          // 58: types.RepEnablePrivacy
	(*PrivacySignatureParam)(nil),     // 59: types.PrivacySignatureParam
	(*WalletAccountPrivacy)(nil),      // 60: types.WalletAccountPrivacy
	(*ReqCreatePrivacyTx)(nil),        // 61: types.ReqCreatePrivacyTx
	nil,                               // 62: types.AmountsOfUTXO.AmountMapEntry
	nil,                               // 63: types.TokenNamesOfUTXO.TokensMapEntry
	(*types.Transaction)(nil),         // 64: types.Transaction
	(*types.ReqString)(nil),           // 65: types.ReqString
}
var file_privacy_proto_depIdxs = []int32{
	1,  // 0: types.PrivacyAction.public2privacy:type_name -> types.Public2Privacy
	2,  // 1: types.PrivacyAction.privacy2privacy:type_name -> types.Privacy2Privacy
	3,  // 2: types.PrivacyAction.privacy2public:type_name -> types.Privacy2Public
	8,  // 3: types.Public2Privacy.output:type_name -> types.PrivacyOutput
	6,  // 4: types.Privacy2Privacy.input:type_name -> types.PrivacyInput
	8,  // 5: types.Privacy2Privacy.output:type_name -> types.PrivacyOutput
	6,  // 6: types.Privacy2Public.input:type_name -> types.PrivacyInput
	8,  // 7: types.Privacy2Public.output:type_name -> types.PrivacyOutput
	4,  // 8: types.KeyInput.utxoGlobalIndex:type_name -> types.UTXOGlobalIndex
	5,  // 9: types.PrivacyInput.keyinput:type_name -> types.KeyInput
	7,  // 10: types.PrivacyOutput.keyoutput:type_name -> types.keyOutput
	4,  // 11: types.GroupUTXOGlobalIndex.utxoGlobalIndex:type_name -> types.UTXOGlobalIndex
	9,  // 12: types.ReqUTXOPubKeys.groupUTXOGlobalIndex:type_name -> types.GroupUTXOGlobalIndex
	13, // 13: types.ResUTXOPubKeys.groupUTXOPubKeys:type_name -> types.GroupUTXOPubKey
	16, // 14: types.ReplyPrivacyAmounts.amountDetail:type_name -> types.AmountDetail
	10, // 15: types.replyUTXOsOfAmount.localUTXOItems:type_name -> types.LocalUTXOItem
	7,  // 16: types.ReceiptPrivacyOutput.keyoutput:type_name -> types.keyOutput
	62, // 17: types.AmountsOfUTXO.amountMap:type_name -> types.AmountsOfUTXO.AmountMapEntry
	63, // 18: types.TokenNamesOfUTXO.tokensMap:type_name -> types.TokenNamesOfUTXO.TokensMapEntry
	22, // 19: types.KeyInput4Print.utxoGlobalIndex:type_name -> types.UTXOGlobalIndex4Print
	23, // 20: types.PrivacyInput4Print.keyinput:type_name -> types.KeyInput4Print
	24, // 21: types.PrivacyOutput4Print.keyoutput:type_name -> types.keyOutput4Print
	26, // 22: types.Public2Privacy4Print.output:type_name -> types.PrivacyOutput4Print
	25, // 23: types.Privacy2Privacy4Print.input:type_name -> types.PrivacyInput4Print
	26, // 24: types.Privacy2Privacy4Print.output:type_name -> types.PrivacyOutput4Print
	25, // 25: types.Privacy2Public4Print.input:type_name -> types.PrivacyInput4Print
	26, // 26: types.Privacy2Public4Print.output:type_name -> types.PrivacyOutput4Print
	27, // 27: types.PrivacyAction4Print.public2privacy:type_name -> types.Public2Privacy4Print
	28, // 28: types.PrivacyAction4Print.privacy2privacy:type_name -> types.Privacy2Privacy4Print
	29, // 29: types.PrivacyAction4Print.privacy2public:type_name -> types.Privacy2Public4Print
	40, // 30: types.UTXO.utxoBasic:type_name -> types.UTXOBasic
	40, // 31: types.UTXOHaveTxHash.utxoBasic:type_name -> types.UTXOBasic
	35, // 32: types.UTXOs.utxos:type_name -> types.UTXO
	36, // 33: types.UTXOHaveTxHashs.utxoHaveTxHashs:type_name -> types.UTXOHaveTxHash
	4,  // 34: types.UTXOBasic.utxoGlobalIndex:type_name -> types.UTXOGlobalIndex
	40, // 35: types.UTXOIndex4Amount.utxos:type_name -> types.UTXOBasic
	41, // 36: types.ResUTXOGlobalIndex.utxoIndex4Amount:type_name -> types.UTXOIndex4Amount
	35, // 37: types.FTXOsSTXOsInOneTx.utxos:type_name -> types.UTXO
	40, // 38: types.UTXOBasics.utxos:type_name -> types.UTXOBasic
	64, // 39: types.CreateTransactionCache.transaction:type_name -> types.Transaction
	44, // 40: types.CreateTransactionCache.realkeyinput:type_name -> types.RealKeyInput
	45, // 41: types.CreateTransactionCache.utxos:type_name -> types.UTXOBasics
	64, // 42: types.ReplyCacheTxList.txs:type_name -> types.Transaction
	37, // 43: types.ReplyPrivacyAccount.utxos:type_name -> types.UTXOs
	37, // 44: types.ReplyPrivacyAccount.ftxos:type_name -> types.UTXOs
	54, // 45: types.RepRescanUtxos.repRescanResults:type_name -> types.RepRescanResult
	57, // 46: types.RepEnablePrivacy.results:type_name -> types.PriAddrResult
	45, // 47: types.PrivacySignatureParam.utxobasics:type_name -> types.UTXOBasics
	44, // 48: types.PrivacySignatureParam.realKeyInputs:type_name -> types.RealKeyInput
	65, // 49: types.privacy.ShowPrivacyKey:input_type -> types.ReqString
	53, // 50: types.privacy.RescanUtxos:input_type -> types.ReqRescanUtxos
	56, // 51: types.privacy.EnablePrivacy:input_type -> types.ReqEnablePrivacy
	61, // 52: types.privacy.CreateRawTransaction:input_type -> types.ReqCreatePrivacyTx
	31, // 53: types.privacy.ShowPrivacyKey:output_type -> types.ReplyPrivacyPkPair
	55, // 54: types.privacy.RescanUtxos:output_type -> types.RepRescanUtxos
	58, // 55: types.privacy.EnablePrivacy:output_type -> types.RepEnablePrivacy
	64, // 56: types.privacy.CreateRawTransaction:output_type -> types.Transaction
	53, // [53:57] is the sub-list for method output_type
	49, // [49:53] is the sub-list for method input_type
	49, // [49:49] is the sub-list for extension type_name
	49, // [49:49] is the sub-list for extension extendee
	0,  // [0:49] is the sub-list for field type_name
}

func init() { file_privacy_proto_init() }
func file_privacy_proto_init() {
	if File_privacy_proto != nil {
		return
	}
	if !protoimpl.UnsafeEnabled {
		file_privacy_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*PrivacyAction); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_privacy_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Public2Privacy); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_privacy_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Privacy2Privacy); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_privacy_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Privacy2Public); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_privacy_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*UTXOGlobalIndex); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_privacy_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*KeyInput); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_privacy_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*PrivacyInput); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_privacy_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*KeyOutput); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_privacy_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*PrivacyOutput); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_privacy_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*GroupUTXOGlobalIndex); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_privacy_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*LocalUTXOItem); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_privacy_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ReqUTXOPubKeys); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_privacy_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*PublicKeyData); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_privacy_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*GroupUTXOPubKey); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_privacy_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ResUTXOPubKeys); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_privacy_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ReqPrivacyToken); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_privacy_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*AmountDetail); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_privacy_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ReplyPrivacyAmounts); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_privacy_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ReplyUTXOsOfAmount); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_privacy_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ReceiptPrivacyOutput); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_privacy_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*AmountsOfUTXO); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_privacy_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*TokenNamesOfUTXO); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_privacy_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*UTXOGlobalIndex4Print); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_privacy_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*KeyInput4Print); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_privacy_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*KeyOutput4Print); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_privacy_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*PrivacyInput4Print); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_privacy_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*PrivacyOutput4Print); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_privacy_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Public2Privacy4Print); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_privacy_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Privacy2Privacy4Print); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_privacy_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Privacy2Public4Print); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_privacy_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*PrivacyAction4Print); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_privacy_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ReplyPrivacyPkPair); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_privacy_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ReqPrivBal4AddrToken); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_privacy_proto_msgTypes[33].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ReplyPrivacyBalance); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_privacy_proto_msgTypes[34].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*PrivacyDBStore); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_privacy_proto_msgTypes[35].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*UTXO); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_privacy_proto_msgTypes[36].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*UTXOHaveTxHash); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_privacy_proto_msgTypes[37].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*UTXOs); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_privacy_proto_msgTypes[38].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*UTXOHaveTxHashs); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_privacy_proto_msgTypes[39].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ReqUTXOGlobalIndex); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_privacy_proto_msgTypes[40].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*UTXOBasic); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_privacy_proto_msgTypes[41].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*UTXOIndex4Amount); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_privacy_proto_msgTypes[42].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ResUTXOGlobalIndex); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_privacy_proto_msgTypes[43].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*FTXOsSTXOsInOneTx); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_privacy_proto_msgTypes[44].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*RealKeyInput); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_privacy_proto_msgTypes[45].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*UTXOBasics); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_privacy_proto_msgTypes[46].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*CreateTransactionCache); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_privacy_proto_msgTypes[47].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ReqCacheTxList); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_privacy_proto_msgTypes[48].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ReplyCacheTxList); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_privacy_proto_msgTypes[49].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ReqPrivacyAccount); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_privacy_proto_msgTypes[50].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ReplyPrivacyAccount); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_privacy_proto_msgTypes[51].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ReqCreateCacheTxKey); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_privacy_proto_msgTypes[52].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ReqPrivacyTransactionList); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_privacy_proto_msgTypes[53].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ReqRescanUtxos); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_privacy_proto_msgTypes[54].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*RepRescanResult); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_privacy_proto_msgTypes[55].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*RepRescanUtxos); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_privacy_proto_msgTypes[56].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ReqEnablePrivacy); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_privacy_proto_msgTypes[57].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*PriAddrResult); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_privacy_proto_msgTypes[58].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*RepEnablePrivacy); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_privacy_proto_msgTypes[59].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*PrivacySignatureParam); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_privacy_proto_msgTypes[60].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*WalletAccountPrivacy); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_privacy_proto_msgTypes[61].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ReqCreatePrivacyTx); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
	}
	file_privacy_proto_msgTypes[0].OneofWrappers = []interface{}{
		(*PrivacyAction_Public2Privacy)(nil),
		(*PrivacyAction_Privacy2Privacy)(nil),
		(*PrivacyAction_Privacy2Public)(nil),
	}
	file_privacy_proto_msgTypes[30].OneofWrappers = []interface{}{
		(*PrivacyAction4Print_Public2Privacy)(nil),
		(*PrivacyAction4Print_Privacy2Privacy)(nil),
		(*PrivacyAction4Print_Privacy2Public)(nil),
	}
	type x struct{}
	out := protoimpl.TypeBuilder{
		File: protoimpl.DescBuilder{
			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
			RawDescriptor: file_privacy_proto_rawDesc,
			NumEnums:      0,
			NumMessages:   64,
			NumExtensions: 0,
			NumServices:   1,
		},
		GoTypes:           file_privacy_proto_goTypes,
		DependencyIndexes: file_privacy_proto_depIdxs,
		MessageInfos:      file_privacy_proto_msgTypes,
	}.Build()
	File_privacy_proto = out.File
	file_privacy_proto_rawDesc = nil
	file_privacy_proto_goTypes = nil
	file_privacy_proto_depIdxs = nil
}

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

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

// PrivacyClient is the client API for Privacy service.
//
// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream.
type PrivacyClient interface {
	// Privacy Trading
	// 显示指定地址的公钥对信息，可以作为后续交易参数
	ShowPrivacyKey(ctx context.Context, in *types.ReqString, opts ...grpc.CallOption) (*ReplyPrivacyPkPair, error)
	// 扫描UTXO以及获取扫描UTXO后的状态
	RescanUtxos(ctx context.Context, in *ReqRescanUtxos, opts ...grpc.CallOption) (*RepRescanUtxos, error)
	// 使能隐私账户
	EnablePrivacy(ctx context.Context, in *ReqEnablePrivacy, opts ...grpc.CallOption) (*RepEnablePrivacy, error)
	// 创建隐私交易
	CreateRawTransaction(ctx context.Context, in *ReqCreatePrivacyTx, opts ...grpc.CallOption) (*types.Transaction, error)
}

type privacyClient struct {
	cc grpc.ClientConnInterface
}

func NewPrivacyClient(cc grpc.ClientConnInterface) PrivacyClient {
	return &privacyClient{cc}
}

func (c *privacyClient) ShowPrivacyKey(ctx context.Context, in *types.ReqString, opts ...grpc.CallOption) (*ReplyPrivacyPkPair, error) {
	out := new(ReplyPrivacyPkPair)
	err := c.cc.Invoke(ctx, "/types.privacy/ShowPrivacyKey", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *privacyClient) RescanUtxos(ctx context.Context, in *ReqRescanUtxos, opts ...grpc.CallOption) (*RepRescanUtxos, error) {
	out := new(RepRescanUtxos)
	err := c.cc.Invoke(ctx, "/types.privacy/RescanUtxos", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *privacyClient) EnablePrivacy(ctx context.Context, in *ReqEnablePrivacy, opts ...grpc.CallOption) (*RepEnablePrivacy, error) {
	out := new(RepEnablePrivacy)
	err := c.cc.Invoke(ctx, "/types.privacy/EnablePrivacy", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *privacyClient) CreateRawTransaction(ctx context.Context, in *ReqCreatePrivacyTx, opts ...grpc.CallOption) (*types.Transaction, error) {
	out := new(types.Transaction)
	err := c.cc.Invoke(ctx, "/types.privacy/CreateRawTransaction", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

// PrivacyServer is the server API for Privacy service.
type PrivacyServer interface {
	// Privacy Trading
	// 显示指定地址的公钥对信息，可以作为后续交易参数
	ShowPrivacyKey(context.Context, *types.ReqString) (*ReplyPrivacyPkPair, error)
	// 扫描UTXO以及获取扫描UTXO后的状态
	RescanUtxos(context.Context, *ReqRescanUtxos) (*RepRescanUtxos, error)
	// 使能隐私账户
	EnablePrivacy(context.Context, *ReqEnablePrivacy) (*RepEnablePrivacy, error)
	// 创建隐私交易
	CreateRawTransaction(context.Context, *ReqCreatePrivacyTx) (*types.Transaction, error)
}

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

func (*UnimplementedPrivacyServer) ShowPrivacyKey(context.Context, *types.ReqString) (*ReplyPrivacyPkPair, error) {
	return nil, status.Errorf(codes.Unimplemented, "method ShowPrivacyKey not implemented")
}
func (*UnimplementedPrivacyServer) RescanUtxos(context.Context, *ReqRescanUtxos) (*RepRescanUtxos, error) {
	return nil, status.Errorf(codes.Unimplemented, "method RescanUtxos not implemented")
}
func (*UnimplementedPrivacyServer) EnablePrivacy(context.Context, *ReqEnablePrivacy) (*RepEnablePrivacy, error) {
	return nil, status.Errorf(codes.Unimplemented, "method EnablePrivacy not implemented")
}
func (*UnimplementedPrivacyServer) CreateRawTransaction(context.Context, *ReqCreatePrivacyTx) (*types.Transaction, error) {
	return nil, status.Errorf(codes.Unimplemented, "method CreateRawTransaction not implemented")
}

func RegisterPrivacyServer(s *grpc.Server, srv PrivacyServer) {
	s.RegisterService(&_Privacy_serviceDesc, srv)
}

func _Privacy_ShowPrivacyKey_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(types.ReqString)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(PrivacyServer).ShowPrivacyKey(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/types.privacy/ShowPrivacyKey",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(PrivacyServer).ShowPrivacyKey(ctx, req.(*types.ReqString))
	}
	return interceptor(ctx, in, info, handler)
}

func _Privacy_RescanUtxos_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(ReqRescanUtxos)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(PrivacyServer).RescanUtxos(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/types.privacy/RescanUtxos",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(PrivacyServer).RescanUtxos(ctx, req.(*ReqRescanUtxos))
	}
	return interceptor(ctx, in, info, handler)
}

func _Privacy_EnablePrivacy_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(ReqEnablePrivacy)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(PrivacyServer).EnablePrivacy(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/types.privacy/EnablePrivacy",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(PrivacyServer).EnablePrivacy(ctx, req.(*ReqEnablePrivacy))
	}
	return interceptor(ctx, in, info, handler)
}

func _Privacy_CreateRawTransaction_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(ReqCreatePrivacyTx)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(PrivacyServer).CreateRawTransaction(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/types.privacy/CreateRawTransaction",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(PrivacyServer).CreateRawTransaction(ctx, req.(*ReqCreatePrivacyTx))
	}
	return interceptor(ctx, in, info, handler)
}

var _Privacy_serviceDesc = grpc.ServiceDesc{
	ServiceName: "types.privacy",
	HandlerType: (*PrivacyServer)(nil),
	Methods: []grpc.MethodDesc{
		{
			MethodName: "ShowPrivacyKey",
			Handler:    _Privacy_ShowPrivacyKey_Handler,
		},
		{
			MethodName: "RescanUtxos",
			Handler:    _Privacy_RescanUtxos_Handler,
		},
		{
			MethodName: "EnablePrivacy",
			Handler:    _Privacy_EnablePrivacy_Handler,
		},
		{
			MethodName: "CreateRawTransaction",
			Handler:    _Privacy_CreateRawTransaction_Handler,
		},
	},
	Streams:  []grpc.StreamDesc{},
	Metadata: "privacy.proto",
}
