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

// Copyright (c) 2017, Robert Wang <robertabcd@gmail.com>
// All rights reserved.
//
// The MIT License.

package boardd

import (
	reflect "reflect"
	sync "sync"

	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)
)

type PartialOptions_SelectType int32

const (
	PartialOptions_SELECT_FULL PartialOptions_SelectType = 0
	PartialOptions_SELECT_HEAD PartialOptions_SelectType = 1
	PartialOptions_SELECT_TAIL PartialOptions_SelectType = 2
	PartialOptions_SELECT_PART PartialOptions_SelectType = 3
)

// Enum value maps for PartialOptions_SelectType.
var (
	PartialOptions_SelectType_name = map[int32]string{
		0: "SELECT_FULL",
		1: "SELECT_HEAD",
		2: "SELECT_TAIL",
		3: "SELECT_PART",
	}
	PartialOptions_SelectType_value = map[string]int32{
		"SELECT_FULL": 0,
		"SELECT_HEAD": 1,
		"SELECT_TAIL": 2,
		"SELECT_PART": 3,
	}
)

func (x PartialOptions_SelectType) Enum() *PartialOptions_SelectType {
	p := new(PartialOptions_SelectType)
	*p = x
	return p
}

func (x PartialOptions_SelectType) String() string {
	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}

func (PartialOptions_SelectType) Descriptor() protoreflect.EnumDescriptor {
	return file_board_proto_enumTypes[0].Descriptor()
}

func (PartialOptions_SelectType) Type() protoreflect.EnumType {
	return &file_board_proto_enumTypes[0]
}

func (x PartialOptions_SelectType) Number() protoreflect.EnumNumber {
	return protoreflect.EnumNumber(x)
}

// Deprecated: Use PartialOptions_SelectType.Descriptor instead.
func (PartialOptions_SelectType) EnumDescriptor() ([]byte, []int) {
	return file_board_proto_rawDescGZIP(), []int{10, 0}
}

type SearchFilter_Type int32

const (
	SearchFilter_TYPE_UNKNOWN     SearchFilter_Type = 0
	SearchFilter_TYPE_EXACT_TITLE SearchFilter_Type = 1
	SearchFilter_TYPE_TITLE       SearchFilter_Type = 2
	SearchFilter_TYPE_AUTHOR      SearchFilter_Type = 3
	SearchFilter_TYPE_RECOMMEND   SearchFilter_Type = 4
	SearchFilter_TYPE_MONEY       SearchFilter_Type = 5
	SearchFilter_TYPE_MARK        SearchFilter_Type = 6
	SearchFilter_TYPE_SOLVED      SearchFilter_Type = 7
)

// Enum value maps for SearchFilter_Type.
var (
	SearchFilter_Type_name = map[int32]string{
		0: "TYPE_UNKNOWN",
		1: "TYPE_EXACT_TITLE",
		2: "TYPE_TITLE",
		3: "TYPE_AUTHOR",
		4: "TYPE_RECOMMEND",
		5: "TYPE_MONEY",
		6: "TYPE_MARK",
		7: "TYPE_SOLVED",
	}
	SearchFilter_Type_value = map[string]int32{
		"TYPE_UNKNOWN":     0,
		"TYPE_EXACT_TITLE": 1,
		"TYPE_TITLE":       2,
		"TYPE_AUTHOR":      3,
		"TYPE_RECOMMEND":   4,
		"TYPE_MONEY":       5,
		"TYPE_MARK":        6,
		"TYPE_SOLVED":      7,
	}
)

func (x SearchFilter_Type) Enum() *SearchFilter_Type {
	p := new(SearchFilter_Type)
	*p = x
	return p
}

func (x SearchFilter_Type) String() string {
	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}

func (SearchFilter_Type) Descriptor() protoreflect.EnumDescriptor {
	return file_board_proto_enumTypes[1].Descriptor()
}

func (SearchFilter_Type) Type() protoreflect.EnumType {
	return &file_board_proto_enumTypes[1]
}

func (x SearchFilter_Type) Number() protoreflect.EnumNumber {
	return protoreflect.EnumNumber(x)
}

// Deprecated: Use SearchFilter_Type.Descriptor instead.
func (SearchFilter_Type) EnumDescriptor() ([]byte, []int) {
	return file_board_proto_rawDescGZIP(), []int{13, 0}
}

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

	Ref []*BoardRef `protobuf:"bytes,1,rep,name=ref,proto3" json:"ref,omitempty"`
}

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

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

func (*BoardRequest) ProtoMessage() {}

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

func (x *BoardRequest) GetRef() []*BoardRef {
	if x != nil {
		return x.Ref
	}
	return nil
}

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

	Boards []*Board `protobuf:"bytes,1,rep,name=boards,proto3" json:"boards,omitempty"`
}

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

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

func (*BoardReply) ProtoMessage() {}

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

func (x *BoardReply) GetBoards() []*Board {
	if x != nil {
		return x.Boards
	}
	return nil
}

type HotboardRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields
}

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

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

func (*HotboardRequest) ProtoMessage() {}

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

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

	Boards []*Board `protobuf:"bytes,1,rep,name=boards,proto3" json:"boards,omitempty"`
}

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

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

func (*HotboardReply) ProtoMessage() {}

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

func (x *HotboardReply) GetBoards() []*Board {
	if x != nil {
		return x.Boards
	}
	return nil
}

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

	// Types that are assignable to Ref:
	//	*BoardRef_Bid
	//	*BoardRef_Name
	Ref isBoardRef_Ref `protobuf_oneof:"ref"`
}

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

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

func (*BoardRef) ProtoMessage() {}

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

func (m *BoardRef) GetRef() isBoardRef_Ref {
	if m != nil {
		return m.Ref
	}
	return nil
}

func (x *BoardRef) GetBid() uint32 {
	if x, ok := x.GetRef().(*BoardRef_Bid); ok {
		return x.Bid
	}
	return 0
}

func (x *BoardRef) GetName() string {
	if x, ok := x.GetRef().(*BoardRef_Name); ok {
		return x.Name
	}
	return ""
}

type isBoardRef_Ref interface {
	isBoardRef_Ref()
}

type BoardRef_Bid struct {
	Bid uint32 `protobuf:"varint,1,opt,name=bid,proto3,oneof"`
}

type BoardRef_Name struct {
	Name string `protobuf:"bytes,2,opt,name=name,proto3,oneof"`
}

func (*BoardRef_Bid) isBoardRef_Ref() {}

func (*BoardRef_Name) isBoardRef_Ref() {}

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

	Bid           uint32   `protobuf:"varint,1,opt,name=bid,proto3" json:"bid,omitempty"`
	Name          string   `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"`
	Title         string   `protobuf:"bytes,3,opt,name=title,proto3" json:"title,omitempty"`
	Bclass        string   `protobuf:"bytes,4,opt,name=bclass,proto3" json:"bclass,omitempty"`
	RawModerators string   `protobuf:"bytes,5,opt,name=raw_moderators,json=rawModerators,proto3" json:"raw_moderators,omitempty"`
	Parent        uint32   `protobuf:"varint,6,opt,name=parent,proto3" json:"parent,omitempty"`
	NumUsers      uint32   `protobuf:"varint,7,opt,name=num_users,json=numUsers,proto3" json:"num_users,omitempty"`
	NumPosts      uint32   `protobuf:"varint,8,opt,name=num_posts,json=numPosts,proto3" json:"num_posts,omitempty"`
	Attributes    uint32   `protobuf:"varint,9,opt,name=attributes,proto3" json:"attributes,omitempty"`
	Children      []uint32 `protobuf:"varint,10,rep,packed,name=children,proto3" json:"children,omitempty"`
}

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

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

func (*Board) ProtoMessage() {}

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

func (x *Board) GetBid() uint32 {
	if x != nil {
		return x.Bid
	}
	return 0
}

func (x *Board) GetName() string {
	if x != nil {
		return x.Name
	}
	return ""
}

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

func (x *Board) GetBclass() string {
	if x != nil {
		return x.Bclass
	}
	return ""
}

func (x *Board) GetRawModerators() string {
	if x != nil {
		return x.RawModerators
	}
	return ""
}

func (x *Board) GetParent() uint32 {
	if x != nil {
		return x.Parent
	}
	return 0
}

func (x *Board) GetNumUsers() uint32 {
	if x != nil {
		return x.NumUsers
	}
	return 0
}

func (x *Board) GetNumPosts() uint32 {
	if x != nil {
		return x.NumPosts
	}
	return 0
}

func (x *Board) GetAttributes() uint32 {
	if x != nil {
		return x.Attributes
	}
	return 0
}

func (x *Board) GetChildren() []uint32 {
	if x != nil {
		return x.Children
	}
	return nil
}

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

	Ref            *BoardRef `protobuf:"bytes,1,opt,name=ref,proto3" json:"ref,omitempty"`
	IncludePosts   bool      `protobuf:"varint,2,opt,name=include_posts,json=includePosts,proto3" json:"include_posts,omitempty"`
	Offset         int32     `protobuf:"varint,3,opt,name=offset,proto3" json:"offset,omitempty"`
	Length         int32     `protobuf:"varint,4,opt,name=length,proto3" json:"length,omitempty"`
	IncludeBottoms bool      `protobuf:"varint,5,opt,name=include_bottoms,json=includeBottoms,proto3" json:"include_bottoms,omitempty"`
}

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

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

func (*ListRequest) ProtoMessage() {}

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

func (x *ListRequest) GetRef() *BoardRef {
	if x != nil {
		return x.Ref
	}
	return nil
}

func (x *ListRequest) GetIncludePosts() bool {
	if x != nil {
		return x.IncludePosts
	}
	return false
}

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

func (x *ListRequest) GetLength() int32 {
	if x != nil {
		return x.Length
	}
	return 0
}

func (x *ListRequest) GetIncludeBottoms() bool {
	if x != nil {
		return x.IncludeBottoms
	}
	return false
}

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

	Posts   []*Post `protobuf:"bytes,1,rep,name=posts,proto3" json:"posts,omitempty"`
	Bottoms []*Post `protobuf:"bytes,2,rep,name=bottoms,proto3" json:"bottoms,omitempty"`
}

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

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

func (*ListReply) ProtoMessage() {}

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

func (x *ListReply) GetPosts() []*Post {
	if x != nil {
		return x.Posts
	}
	return nil
}

func (x *ListReply) GetBottoms() []*Post {
	if x != nil {
		return x.Bottoms
	}
	return nil
}

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

	Index         uint32 `protobuf:"varint,1,opt,name=index,proto3" json:"index,omitempty"`
	Filename      string `protobuf:"bytes,2,opt,name=filename,proto3" json:"filename,omitempty"`
	RawDate       string `protobuf:"bytes,3,opt,name=raw_date,json=rawDate,proto3" json:"raw_date,omitempty"`
	NumRecommends int32  `protobuf:"varint,4,opt,name=num_recommends,json=numRecommends,proto3" json:"num_recommends,omitempty"`
	Filemode      int32  `protobuf:"varint,5,opt,name=filemode,proto3" json:"filemode,omitempty"`
	Owner         string `protobuf:"bytes,6,opt,name=owner,proto3" json:"owner,omitempty"`
	Title         string `protobuf:"bytes,7,opt,name=title,proto3" json:"title,omitempty"`
	ModifiedNsec  int64  `protobuf:"varint,8,opt,name=modified_nsec,json=modifiedNsec,proto3" json:"modified_nsec,omitempty"`
}

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

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

func (*Post) ProtoMessage() {}

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

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

func (x *Post) GetFilename() string {
	if x != nil {
		return x.Filename
	}
	return ""
}

func (x *Post) GetRawDate() string {
	if x != nil {
		return x.RawDate
	}
	return ""
}

func (x *Post) GetNumRecommends() int32 {
	if x != nil {
		return x.NumRecommends
	}
	return 0
}

func (x *Post) GetFilemode() int32 {
	if x != nil {
		return x.Filemode
	}
	return 0
}

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

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

func (x *Post) GetModifiedNsec() int64 {
	if x != nil {
		return x.ModifiedNsec
	}
	return 0
}

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

	BoardRef         *BoardRef       `protobuf:"bytes,1,opt,name=board_ref,json=boardRef,proto3" json:"board_ref,omitempty"`
	Filename         string          `protobuf:"bytes,2,opt,name=filename,proto3" json:"filename,omitempty"`
	ConsistencyToken string          `protobuf:"bytes,3,opt,name=consistency_token,json=consistencyToken,proto3" json:"consistency_token,omitempty"`
	PartialOptions   *PartialOptions `protobuf:"bytes,4,opt,name=partial_options,json=partialOptions,proto3" json:"partial_options,omitempty"`
}

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

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

func (*ContentRequest) ProtoMessage() {}

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

func (x *ContentRequest) GetBoardRef() *BoardRef {
	if x != nil {
		return x.BoardRef
	}
	return nil
}

func (x *ContentRequest) GetFilename() string {
	if x != nil {
		return x.Filename
	}
	return ""
}

func (x *ContentRequest) GetConsistencyToken() string {
	if x != nil {
		return x.ConsistencyToken
	}
	return ""
}

func (x *ContentRequest) GetPartialOptions() *PartialOptions {
	if x != nil {
		return x.PartialOptions
	}
	return nil
}

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

	SelectType PartialOptions_SelectType `protobuf:"varint,1,opt,name=select_type,json=selectType,proto3,enum=pttbbs.api.PartialOptions_SelectType" json:"select_type,omitempty"`
	Offset     int64                     `protobuf:"varint,2,opt,name=offset,proto3" json:"offset,omitempty"`
	MaxLength  int64                     `protobuf:"varint,3,opt,name=max_length,json=maxLength,proto3" json:"max_length,omitempty"`
}

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

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

func (*PartialOptions) ProtoMessage() {}

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

func (x *PartialOptions) GetSelectType() PartialOptions_SelectType {
	if x != nil {
		return x.SelectType
	}
	return PartialOptions_SELECT_FULL
}

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

func (x *PartialOptions) GetMaxLength() int64 {
	if x != nil {
		return x.MaxLength
	}
	return 0
}

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

	Content *Content `protobuf:"bytes,1,opt,name=content,proto3" json:"content,omitempty"`
}

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

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

func (*ContentReply) ProtoMessage() {}

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

func (x *ContentReply) GetContent() *Content {
	if x != nil {
		return x.Content
	}
	return nil
}

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

	Content          []byte `protobuf:"bytes,1,opt,name=content,proto3" json:"content,omitempty"`
	ConsistencyToken string `protobuf:"bytes,2,opt,name=consistency_token,json=consistencyToken,proto3" json:"consistency_token,omitempty"`
	Offset           int64  `protobuf:"varint,3,opt,name=offset,proto3" json:"offset,omitempty"`
	Length           int64  `protobuf:"varint,4,opt,name=length,proto3" json:"length,omitempty"`
	TotalLength      int64  `protobuf:"varint,5,opt,name=total_length,json=totalLength,proto3" json:"total_length,omitempty"`
}

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

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

func (*Content) ProtoMessage() {}

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

func (x *Content) GetContent() []byte {
	if x != nil {
		return x.Content
	}
	return nil
}

func (x *Content) GetConsistencyToken() string {
	if x != nil {
		return x.ConsistencyToken
	}
	return ""
}

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

func (x *Content) GetLength() int64 {
	if x != nil {
		return x.Length
	}
	return 0
}

func (x *Content) GetTotalLength() int64 {
	if x != nil {
		return x.TotalLength
	}
	return 0
}

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

	Type       SearchFilter_Type `protobuf:"varint,1,opt,name=type,proto3,enum=pttbbs.api.SearchFilter_Type" json:"type,omitempty"`
	NumberData int64             `protobuf:"varint,2,opt,name=number_data,json=numberData,proto3" json:"number_data,omitempty"`
	StringData string            `protobuf:"bytes,3,opt,name=string_data,json=stringData,proto3" json:"string_data,omitempty"`
}

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

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

func (*SearchFilter) ProtoMessage() {}

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

func (x *SearchFilter) GetType() SearchFilter_Type {
	if x != nil {
		return x.Type
	}
	return SearchFilter_TYPE_UNKNOWN
}

func (x *SearchFilter) GetNumberData() int64 {
	if x != nil {
		return x.NumberData
	}
	return 0
}

func (x *SearchFilter) GetStringData() string {
	if x != nil {
		return x.StringData
	}
	return ""
}

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

	Ref    *BoardRef       `protobuf:"bytes,1,opt,name=ref,proto3" json:"ref,omitempty"`
	Filter []*SearchFilter `protobuf:"bytes,2,rep,name=filter,proto3" json:"filter,omitempty"`
	Offset int32           `protobuf:"varint,3,opt,name=offset,proto3" json:"offset,omitempty"`
	Length int32           `protobuf:"varint,4,opt,name=length,proto3" json:"length,omitempty"`
}

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

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

func (*SearchRequest) ProtoMessage() {}

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

func (x *SearchRequest) GetRef() *BoardRef {
	if x != nil {
		return x.Ref
	}
	return nil
}

func (x *SearchRequest) GetFilter() []*SearchFilter {
	if x != nil {
		return x.Filter
	}
	return nil
}

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

func (x *SearchRequest) GetLength() int32 {
	if x != nil {
		return x.Length
	}
	return 0
}

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

	Posts      []*Post `protobuf:"bytes,1,rep,name=posts,proto3" json:"posts,omitempty"`
	TotalPosts int32   `protobuf:"varint,2,opt,name=total_posts,json=totalPosts,proto3" json:"total_posts,omitempty"`
}

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

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

func (*SearchReply) ProtoMessage() {}

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

func (x *SearchReply) GetPosts() []*Post {
	if x != nil {
		return x.Posts
	}
	return nil
}

func (x *SearchReply) GetTotalPosts() int32 {
	if x != nil {
		return x.TotalPosts
	}
	return 0
}

var File_board_proto protoreflect.FileDescriptor

var file_board_proto_rawDesc = []byte{
	0x0a, 0x0b, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0a, 0x70,
	0x74, 0x74, 0x62, 0x62, 0x73, 0x2e, 0x61, 0x70, 0x69, 0x22, 0x36, 0x0a, 0x0c, 0x42, 0x6f, 0x61,
	0x72, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x26, 0x0a, 0x03, 0x72, 0x65, 0x66,
	0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x70, 0x74, 0x74, 0x62, 0x62, 0x73, 0x2e,
	0x61, 0x70, 0x69, 0x2e, 0x42, 0x6f, 0x61, 0x72, 0x64, 0x52, 0x65, 0x66, 0x52, 0x03, 0x72, 0x65,
	0x66, 0x22, 0x37, 0x0a, 0x0a, 0x42, 0x6f, 0x61, 0x72, 0x64, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12,
	0x29, 0x0a, 0x06, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32,
	0x11, 0x2e, 0x70, 0x74, 0x74, 0x62, 0x62, 0x73, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x42, 0x6f, 0x61,
	0x72, 0x64, 0x52, 0x06, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x73, 0x22, 0x11, 0x0a, 0x0f, 0x48, 0x6f,
	0x74, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x3a, 0x0a,
	0x0d, 0x48, 0x6f, 0x74, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x29,
	0x0a, 0x06, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11,
	0x2e, 0x70, 0x74, 0x74, 0x62, 0x62, 0x73, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x42, 0x6f, 0x61, 0x72,
	0x64, 0x52, 0x06, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x73, 0x22, 0x3b, 0x0a, 0x08, 0x42, 0x6f, 0x61,
	0x72, 0x64, 0x52, 0x65, 0x66, 0x12, 0x12, 0x0a, 0x03, 0x62, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01,
	0x28, 0x0d, 0x48, 0x00, 0x52, 0x03, 0x62, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x04, 0x6e, 0x61, 0x6d,
	0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x42,
	0x05, 0x0a, 0x03, 0x72, 0x65, 0x66, 0x22, 0x90, 0x02, 0x0a, 0x05, 0x42, 0x6f, 0x61, 0x72, 0x64,
	0x12, 0x10, 0x0a, 0x03, 0x62, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x03, 0x62,
	0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,
	0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18,
	0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x16, 0x0a, 0x06,
	0x62, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x62, 0x63,
	0x6c, 0x61, 0x73, 0x73, 0x12, 0x25, 0x0a, 0x0e, 0x72, 0x61, 0x77, 0x5f, 0x6d, 0x6f, 0x64, 0x65,
	0x72, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x72, 0x61,
	0x77, 0x4d, 0x6f, 0x64, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x70,
	0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x70, 0x61, 0x72,
	0x65, 0x6e, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x6e, 0x75, 0x6d, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x73,
	0x18, 0x07, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x08, 0x6e, 0x75, 0x6d, 0x55, 0x73, 0x65, 0x72, 0x73,
	0x12, 0x1b, 0x0a, 0x09, 0x6e, 0x75, 0x6d, 0x5f, 0x70, 0x6f, 0x73, 0x74, 0x73, 0x18, 0x08, 0x20,
	0x01, 0x28, 0x0d, 0x52, 0x08, 0x6e, 0x75, 0x6d, 0x50, 0x6f, 0x73, 0x74, 0x73, 0x12, 0x1e, 0x0a,
	0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28,
	0x0d, 0x52, 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x12, 0x1a, 0x0a,
	0x08, 0x63, 0x68, 0x69, 0x6c, 0x64, 0x72, 0x65, 0x6e, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x0d, 0x52,
	0x08, 0x63, 0x68, 0x69, 0x6c, 0x64, 0x72, 0x65, 0x6e, 0x22, 0xb3, 0x01, 0x0a, 0x0b, 0x4c, 0x69,
	0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x26, 0x0a, 0x03, 0x72, 0x65, 0x66,
	0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x70, 0x74, 0x74, 0x62, 0x62, 0x73, 0x2e,
	0x61, 0x70, 0x69, 0x2e, 0x42, 0x6f, 0x61, 0x72, 0x64, 0x52, 0x65, 0x66, 0x52, 0x03, 0x72, 0x65,
	0x66, 0x12, 0x23, 0x0a, 0x0d, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x5f, 0x70, 0x6f, 0x73,
	0x74, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64,
	0x65, 0x50, 0x6f, 0x73, 0x74, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74,
	0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x12, 0x16,
	0x0a, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06,
	0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x12, 0x27, 0x0a, 0x0f, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64,
	0x65, 0x5f, 0x62, 0x6f, 0x74, 0x74, 0x6f, 0x6d, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52,
	0x0e, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x42, 0x6f, 0x74, 0x74, 0x6f, 0x6d, 0x73, 0x22,
	0x5f, 0x0a, 0x09, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x26, 0x0a, 0x05,
	0x70, 0x6f, 0x73, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x70, 0x74,
	0x74, 0x62, 0x62, 0x73, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x50, 0x6f, 0x73, 0x74, 0x52, 0x05, 0x70,
	0x6f, 0x73, 0x74, 0x73, 0x12, 0x2a, 0x0a, 0x07, 0x62, 0x6f, 0x74, 0x74, 0x6f, 0x6d, 0x73, 0x18,
	0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x70, 0x74, 0x74, 0x62, 0x62, 0x73, 0x2e, 0x61,
	0x70, 0x69, 0x2e, 0x50, 0x6f, 0x73, 0x74, 0x52, 0x07, 0x62, 0x6f, 0x74, 0x74, 0x6f, 0x6d, 0x73,
	0x22, 0xe7, 0x01, 0x0a, 0x04, 0x50, 0x6f, 0x73, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x69, 0x6e, 0x64,
	0x65, 0x78, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x12,
	0x1a, 0x0a, 0x08, 0x66, 0x69, 0x6c, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28,
	0x09, 0x52, 0x08, 0x66, 0x69, 0x6c, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x72,
	0x61, 0x77, 0x5f, 0x64, 0x61, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x72,
	0x61, 0x77, 0x44, 0x61, 0x74, 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x6e, 0x75, 0x6d, 0x5f, 0x72, 0x65,
	0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d,
	0x6e, 0x75, 0x6d, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x73, 0x12, 0x1a, 0x0a,
	0x08, 0x66, 0x69, 0x6c, 0x65, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52,
	0x08, 0x66, 0x69, 0x6c, 0x65, 0x6d, 0x6f, 0x64, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x6f, 0x77, 0x6e,
	0x65, 0x72, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x12,
	0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05,
	0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x6d, 0x6f, 0x64, 0x69, 0x66, 0x69, 0x65,
	0x64, 0x5f, 0x6e, 0x73, 0x65, 0x63, 0x18, 0x08, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x6d, 0x6f,
	0x64, 0x69, 0x66, 0x69, 0x65, 0x64, 0x4e, 0x73, 0x65, 0x63, 0x22, 0xd1, 0x01, 0x0a, 0x0e, 0x43,
	0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x31, 0x0a,
	0x09, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x5f, 0x72, 0x65, 0x66, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b,
	0x32, 0x14, 0x2e, 0x70, 0x74, 0x74, 0x62, 0x62, 0x73, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x42, 0x6f,
	0x61, 0x72, 0x64, 0x52, 0x65, 0x66, 0x52, 0x08, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x52, 0x65, 0x66,
	0x12, 0x1a, 0x0a, 0x08, 0x66, 0x69, 0x6c, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01,
	0x28, 0x09, 0x52, 0x08, 0x66, 0x69, 0x6c, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x2b, 0x0a, 0x11,
	0x63, 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x5f, 0x74, 0x6f, 0x6b, 0x65,
	0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x63, 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74,
	0x65, 0x6e, 0x63, 0x79, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x43, 0x0a, 0x0f, 0x70, 0x61, 0x72,
	0x74, 0x69, 0x61, 0x6c, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x04, 0x20, 0x01,
	0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x70, 0x74, 0x74, 0x62, 0x62, 0x73, 0x2e, 0x61, 0x70, 0x69, 0x2e,
	0x50, 0x61, 0x72, 0x74, 0x69, 0x61, 0x6c, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x0e,
	0x70, 0x61, 0x72, 0x74, 0x69, 0x61, 0x6c, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0xe1,
	0x01, 0x0a, 0x0e, 0x50, 0x61, 0x72, 0x74, 0x69, 0x61, 0x6c, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e,
	0x73, 0x12, 0x46, 0x0a, 0x0b, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65,
	0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x25, 0x2e, 0x70, 0x74, 0x74, 0x62, 0x62, 0x73, 0x2e,
	0x61, 0x70, 0x69, 0x2e, 0x50, 0x61, 0x72, 0x74, 0x69, 0x61, 0x6c, 0x4f, 0x70, 0x74, 0x69, 0x6f,
	0x6e, 0x73, 0x2e, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0a, 0x73,
	0x65, 0x6c, 0x65, 0x63, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x6f, 0x66, 0x66,
	0x73, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65,
	0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x6d, 0x61, 0x78, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18,
	0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x6d, 0x61, 0x78, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68,
	0x22, 0x50, 0x0a, 0x0a, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0f,
	0x0a, 0x0b, 0x53, 0x45, 0x4c, 0x45, 0x43, 0x54, 0x5f, 0x46, 0x55, 0x4c, 0x4c, 0x10, 0x00, 0x12,
	0x0f, 0x0a, 0x0b, 0x53, 0x45, 0x4c, 0x45, 0x43, 0x54, 0x5f, 0x48, 0x45, 0x41, 0x44, 0x10, 0x01,
	0x12, 0x0f, 0x0a, 0x0b, 0x53, 0x45, 0x4c, 0x45, 0x43, 0x54, 0x5f, 0x54, 0x41, 0x49, 0x4c, 0x10,
	0x02, 0x12, 0x0f, 0x0a, 0x0b, 0x53, 0x45, 0x4c, 0x45, 0x43, 0x54, 0x5f, 0x50, 0x41, 0x52, 0x54,
	0x10, 0x03, 0x22, 0x3d, 0x0a, 0x0c, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x70,
	0x6c, 0x79, 0x12, 0x2d, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20,
	0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x70, 0x74, 0x74, 0x62, 0x62, 0x73, 0x2e, 0x61, 0x70, 0x69,
	0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e,
	0x74, 0x22, 0xa3, 0x01, 0x0a, 0x07, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x18, 0x0a,
	0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x07,
	0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x2b, 0x0a, 0x11, 0x63, 0x6f, 0x6e, 0x73, 0x69,
	0x73, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01,
	0x28, 0x09, 0x52, 0x10, 0x63, 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x54,
	0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x03,
	0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x12, 0x16, 0x0a, 0x06,
	0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x6c, 0x65,
	0x6e, 0x67, 0x74, 0x68, 0x12, 0x21, 0x0a, 0x0c, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x6c, 0x65,
	0x6e, 0x67, 0x74, 0x68, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x74, 0x6f, 0x74, 0x61,
	0x6c, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x22, 0x99, 0x02, 0x0a, 0x0c, 0x53, 0x65, 0x61, 0x72,
	0x63, 0x68, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x31, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65,
	0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1d, 0x2e, 0x70, 0x74, 0x74, 0x62, 0x62, 0x73, 0x2e,
	0x61, 0x70, 0x69, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72,
	0x2e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x6e,
	0x75, 0x6d, 0x62, 0x65, 0x72, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03,
	0x52, 0x0a, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x12, 0x1f, 0x0a, 0x0b,
	0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x01, 0x28,
	0x09, 0x52, 0x0a, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x44, 0x61, 0x74, 0x61, 0x22, 0x93, 0x01,
	0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x12, 0x10, 0x0a, 0x0c, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55,
	0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x14, 0x0a, 0x10, 0x54, 0x59, 0x50, 0x45,
	0x5f, 0x45, 0x58, 0x41, 0x43, 0x54, 0x5f, 0x54, 0x49, 0x54, 0x4c, 0x45, 0x10, 0x01, 0x12, 0x0e,
	0x0a, 0x0a, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x54, 0x49, 0x54, 0x4c, 0x45, 0x10, 0x02, 0x12, 0x0f,
	0x0a, 0x0b, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x41, 0x55, 0x54, 0x48, 0x4f, 0x52, 0x10, 0x03, 0x12,
	0x12, 0x0a, 0x0e, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x52, 0x45, 0x43, 0x4f, 0x4d, 0x4d, 0x45, 0x4e,
	0x44, 0x10, 0x04, 0x12, 0x0e, 0x0a, 0x0a, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4d, 0x4f, 0x4e, 0x45,
	0x59, 0x10, 0x05, 0x12, 0x0d, 0x0a, 0x09, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4d, 0x41, 0x52, 0x4b,
	0x10, 0x06, 0x12, 0x0f, 0x0a, 0x0b, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x53, 0x4f, 0x4c, 0x56, 0x45,
	0x44, 0x10, 0x07, 0x22, 0x99, 0x01, 0x0a, 0x0d, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x52, 0x65,
	0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x26, 0x0a, 0x03, 0x72, 0x65, 0x66, 0x18, 0x01, 0x20, 0x01,
	0x28, 0x0b, 0x32, 0x14, 0x2e, 0x70, 0x74, 0x74, 0x62, 0x62, 0x73, 0x2e, 0x61, 0x70, 0x69, 0x2e,
	0x42, 0x6f, 0x61, 0x72, 0x64, 0x52, 0x65, 0x66, 0x52, 0x03, 0x72, 0x65, 0x66, 0x12, 0x30, 0x0a,
	0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e,
	0x70, 0x74, 0x74, 0x62, 0x62, 0x73, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63,
	0x68, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12,
	0x16, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52,
	0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74,
	0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x22,
	0x56, 0x0a, 0x0b, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x26,
	0x0a, 0x05, 0x70, 0x6f, 0x73, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e,
	0x70, 0x74, 0x74, 0x62, 0x62, 0x73, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x50, 0x6f, 0x73, 0x74, 0x52,
	0x05, 0x70, 0x6f, 0x73, 0x74, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f,
	0x70, 0x6f, 0x73, 0x74, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x74, 0x6f, 0x74,
	0x61, 0x6c, 0x50, 0x6f, 0x73, 0x74, 0x73, 0x32, 0xce, 0x02, 0x0a, 0x0c, 0x42, 0x6f, 0x61, 0x72,
	0x64, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x3b, 0x0a, 0x05, 0x42, 0x6f, 0x61, 0x72,
	0x64, 0x12, 0x18, 0x2e, 0x70, 0x74, 0x74, 0x62, 0x62, 0x73, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x42,
	0x6f, 0x61, 0x72, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x70, 0x74,
	0x74, 0x62, 0x62, 0x73, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x42, 0x6f, 0x61, 0x72, 0x64, 0x52, 0x65,
	0x70, 0x6c, 0x79, 0x22, 0x00, 0x12, 0x38, 0x0a, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x17, 0x2e,
	0x70, 0x74, 0x74, 0x62, 0x62, 0x73, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52,
	0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x15, 0x2e, 0x70, 0x74, 0x74, 0x62, 0x62, 0x73, 0x2e,
	0x61, 0x70, 0x69, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, 0x00, 0x12,
	0x44, 0x0a, 0x08, 0x48, 0x6f, 0x74, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x12, 0x1b, 0x2e, 0x70, 0x74,
	0x74, 0x62, 0x62, 0x73, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x48, 0x6f, 0x74, 0x62, 0x6f, 0x61, 0x72,
	0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x19, 0x2e, 0x70, 0x74, 0x74, 0x62, 0x62,
	0x73, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x48, 0x6f, 0x74, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x52, 0x65,
	0x70, 0x6c, 0x79, 0x22, 0x00, 0x12, 0x41, 0x0a, 0x07, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74,
	0x12, 0x1a, 0x2e, 0x70, 0x74, 0x74, 0x62, 0x62, 0x73, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x43, 0x6f,
	0x6e, 0x74, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x18, 0x2e, 0x70,
	0x74, 0x74, 0x62, 0x62, 0x73, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e,
	0x74, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, 0x00, 0x12, 0x3e, 0x0a, 0x06, 0x53, 0x65, 0x61, 0x72,
	0x63, 0x68, 0x12, 0x19, 0x2e, 0x70, 0x74, 0x74, 0x62, 0x62, 0x73, 0x2e, 0x61, 0x70, 0x69, 0x2e,
	0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x17, 0x2e,
	0x70, 0x74, 0x74, 0x62, 0x62, 0x73, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63,
	0x68, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, 0x00, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
}

var (
	file_board_proto_rawDescOnce sync.Once
	file_board_proto_rawDescData = file_board_proto_rawDesc
)

func file_board_proto_rawDescGZIP() []byte {
	file_board_proto_rawDescOnce.Do(func() {
		file_board_proto_rawDescData = protoimpl.X.CompressGZIP(file_board_proto_rawDescData)
	})
	return file_board_proto_rawDescData
}

var (
	file_board_proto_enumTypes = make([]protoimpl.EnumInfo, 2)
	file_board_proto_msgTypes  = make([]protoimpl.MessageInfo, 16)
	file_board_proto_goTypes   = []interface{}{
		(PartialOptions_SelectType)(0), // 0: pttbbs.api.PartialOptions.SelectType
		(SearchFilter_Type)(0),         // 1: pttbbs.api.SearchFilter.Type
		(*BoardRequest)(nil),           // 2: pttbbs.api.BoardRequest
		(*BoardReply)(nil),             // 3: pttbbs.api.BoardReply
		(*HotboardRequest)(nil),        // 4: pttbbs.api.HotboardRequest
		(*HotboardReply)(nil),          // 5: pttbbs.api.HotboardReply
		(*BoardRef)(nil),               // 6: pttbbs.api.BoardRef
		(*Board)(nil),                  // 7: pttbbs.api.Board
		(*ListRequest)(nil),            // 8: pttbbs.api.ListRequest
		(*ListReply)(nil),              // 9: pttbbs.api.ListReply
		(*Post)(nil),                   // 10: pttbbs.api.Post
		(*ContentRequest)(nil),         // 11: pttbbs.api.ContentRequest
		(*PartialOptions)(nil),         // 12: pttbbs.api.PartialOptions
		(*ContentReply)(nil),           // 13: pttbbs.api.ContentReply
		(*Content)(nil),                // 14: pttbbs.api.Content
		(*SearchFilter)(nil),           // 15: pttbbs.api.SearchFilter
		(*SearchRequest)(nil),          // 16: pttbbs.api.SearchRequest
		(*SearchReply)(nil),            // 17: pttbbs.api.SearchReply
	}
)

var file_board_proto_depIdxs = []int32{
	6,  // 0: pttbbs.api.BoardRequest.ref:type_name -> pttbbs.api.BoardRef
	7,  // 1: pttbbs.api.BoardReply.boards:type_name -> pttbbs.api.Board
	7,  // 2: pttbbs.api.HotboardReply.boards:type_name -> pttbbs.api.Board
	6,  // 3: pttbbs.api.ListRequest.ref:type_name -> pttbbs.api.BoardRef
	10, // 4: pttbbs.api.ListReply.posts:type_name -> pttbbs.api.Post
	10, // 5: pttbbs.api.ListReply.bottoms:type_name -> pttbbs.api.Post
	6,  // 6: pttbbs.api.ContentRequest.board_ref:type_name -> pttbbs.api.BoardRef
	12, // 7: pttbbs.api.ContentRequest.partial_options:type_name -> pttbbs.api.PartialOptions
	0,  // 8: pttbbs.api.PartialOptions.select_type:type_name -> pttbbs.api.PartialOptions.SelectType
	14, // 9: pttbbs.api.ContentReply.content:type_name -> pttbbs.api.Content
	1,  // 10: pttbbs.api.SearchFilter.type:type_name -> pttbbs.api.SearchFilter.Type
	6,  // 11: pttbbs.api.SearchRequest.ref:type_name -> pttbbs.api.BoardRef
	15, // 12: pttbbs.api.SearchRequest.filter:type_name -> pttbbs.api.SearchFilter
	10, // 13: pttbbs.api.SearchReply.posts:type_name -> pttbbs.api.Post
	2,  // 14: pttbbs.api.BoardService.Board:input_type -> pttbbs.api.BoardRequest
	8,  // 15: pttbbs.api.BoardService.List:input_type -> pttbbs.api.ListRequest
	4,  // 16: pttbbs.api.BoardService.Hotboard:input_type -> pttbbs.api.HotboardRequest
	11, // 17: pttbbs.api.BoardService.Content:input_type -> pttbbs.api.ContentRequest
	16, // 18: pttbbs.api.BoardService.Search:input_type -> pttbbs.api.SearchRequest
	3,  // 19: pttbbs.api.BoardService.Board:output_type -> pttbbs.api.BoardReply
	9,  // 20: pttbbs.api.BoardService.List:output_type -> pttbbs.api.ListReply
	5,  // 21: pttbbs.api.BoardService.Hotboard:output_type -> pttbbs.api.HotboardReply
	13, // 22: pttbbs.api.BoardService.Content:output_type -> pttbbs.api.ContentReply
	17, // 23: pttbbs.api.BoardService.Search:output_type -> pttbbs.api.SearchReply
	19, // [19:24] is the sub-list for method output_type
	14, // [14:19] is the sub-list for method input_type
	14, // [14:14] is the sub-list for extension type_name
	14, // [14:14] is the sub-list for extension extendee
	0,  // [0:14] is the sub-list for field type_name
}

func init() { file_board_proto_init() }
func file_board_proto_init() {
	if File_board_proto != nil {
		return
	}
	if !protoimpl.UnsafeEnabled {
		file_board_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*BoardRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_board_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*BoardReply); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_board_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*HotboardRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_board_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*HotboardReply); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_board_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*BoardRef); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_board_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Board); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_board_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ListRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_board_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ListReply); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_board_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Post); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_board_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ContentRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_board_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*PartialOptions); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_board_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ContentReply); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_board_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Content); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_board_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*SearchFilter); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_board_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*SearchRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_board_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*SearchReply); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
	}
	file_board_proto_msgTypes[4].OneofWrappers = []interface{}{
		(*BoardRef_Bid)(nil),
		(*BoardRef_Name)(nil),
	}
	type x struct{}
	out := protoimpl.TypeBuilder{
		File: protoimpl.DescBuilder{
			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
			RawDescriptor: file_board_proto_rawDesc,
			NumEnums:      2,
			NumMessages:   16,
			NumExtensions: 0,
			NumServices:   1,
		},
		GoTypes:           file_board_proto_goTypes,
		DependencyIndexes: file_board_proto_depIdxs,
		EnumInfos:         file_board_proto_enumTypes,
		MessageInfos:      file_board_proto_msgTypes,
	}.Build()
	File_board_proto = out.File
	file_board_proto_rawDesc = nil
	file_board_proto_goTypes = nil
	file_board_proto_depIdxs = nil
}
