Commit 05c0aeb7 authored by Steven's avatar Steven

feat: implement table renderer

parent aecffe34
...@@ -63,6 +63,8 @@ func convertFromASTNode(rawNode ast.Node) *apiv2pb.Node { ...@@ -63,6 +63,8 @@ func convertFromASTNode(rawNode ast.Node) *apiv2pb.Node {
node.Node = &apiv2pb.Node_TaskListNode{TaskListNode: &apiv2pb.TaskListNode{Symbol: n.Symbol, Indent: int32(n.Indent), Complete: n.Complete, Children: children}} node.Node = &apiv2pb.Node_TaskListNode{TaskListNode: &apiv2pb.TaskListNode{Symbol: n.Symbol, Indent: int32(n.Indent), Complete: n.Complete, Children: children}}
case *ast.MathBlock: case *ast.MathBlock:
node.Node = &apiv2pb.Node_MathBlockNode{MathBlockNode: &apiv2pb.MathBlockNode{Content: n.Content}} node.Node = &apiv2pb.Node_MathBlockNode{MathBlockNode: &apiv2pb.MathBlockNode{Content: n.Content}}
case *ast.Table:
node.Node = &apiv2pb.Node_TableNode{TableNode: convertTableFromASTNode(n)}
case *ast.Text: case *ast.Text:
node.Node = &apiv2pb.Node_TextNode{TextNode: &apiv2pb.TextNode{Content: n.Content}} node.Node = &apiv2pb.Node_TextNode{TextNode: &apiv2pb.TextNode{Content: n.Content}}
case *ast.Bold: case *ast.Bold:
...@@ -134,6 +136,8 @@ func convertToASTNode(node *apiv2pb.Node) ast.Node { ...@@ -134,6 +136,8 @@ func convertToASTNode(node *apiv2pb.Node) ast.Node {
return &ast.TaskList{Symbol: n.TaskListNode.Symbol, Indent: int(n.TaskListNode.Indent), Complete: n.TaskListNode.Complete, Children: children} return &ast.TaskList{Symbol: n.TaskListNode.Symbol, Indent: int(n.TaskListNode.Indent), Complete: n.TaskListNode.Complete, Children: children}
case *apiv2pb.Node_MathBlockNode: case *apiv2pb.Node_MathBlockNode:
return &ast.MathBlock{Content: n.MathBlockNode.Content} return &ast.MathBlock{Content: n.MathBlockNode.Content}
case *apiv2pb.Node_TableNode:
return convertTableToASTNode(node)
case *apiv2pb.Node_TextNode: case *apiv2pb.Node_TextNode:
return &ast.Text{Content: n.TextNode.Content} return &ast.Text{Content: n.TextNode.Content}
case *apiv2pb.Node_BoldNode: case *apiv2pb.Node_BoldNode:
...@@ -166,6 +170,32 @@ func convertToASTNode(node *apiv2pb.Node) ast.Node { ...@@ -166,6 +170,32 @@ func convertToASTNode(node *apiv2pb.Node) ast.Node {
} }
} }
func convertTableToASTNode(node *apiv2pb.Node) *ast.Table {
table := &ast.Table{
Header: node.GetTableNode().Header,
}
for _, d := range node.GetTableNode().Delimiter {
table.Delimiter = append(table.Delimiter, int(d))
}
for _, row := range node.GetTableNode().Rows {
table.Rows = append(table.Rows, row.Cells)
}
return table
}
func convertTableFromASTNode(node *ast.Table) *apiv2pb.TableNode {
table := &apiv2pb.TableNode{
Header: node.Header,
}
for _, d := range node.Delimiter {
table.Delimiter = append(table.Delimiter, int32(d))
}
for _, row := range node.Rows {
table.Rows = append(table.Rows, &apiv2pb.TableNode_Row{Cells: row})
}
return table
}
func traverseASTNodes(nodes []ast.Node, fn func(ast.Node)) { func traverseASTNodes(nodes []ast.Node, fn func(ast.Node)) {
for _, node := range nodes { for _, node := range nodes {
fn(node) fn(node)
......
...@@ -35,19 +35,20 @@ enum NodeType { ...@@ -35,19 +35,20 @@ enum NodeType {
UNORDERED_LIST = 8; UNORDERED_LIST = 8;
TASK_LIST = 9; TASK_LIST = 9;
MATH_BLOCK = 10; MATH_BLOCK = 10;
TEXT = 11; TABLE = 11;
BOLD = 12; TEXT = 12;
ITALIC = 13; BOLD = 13;
BOLD_ITALIC = 14; ITALIC = 14;
CODE = 15; BOLD_ITALIC = 15;
IMAGE = 16; CODE = 16;
LINK = 17; IMAGE = 17;
AUTO_LINK = 18; LINK = 18;
TAG = 19; AUTO_LINK = 19;
STRIKETHROUGH = 20; TAG = 20;
ESCAPING_CHARACTER = 21; STRIKETHROUGH = 21;
MATH = 22; ESCAPING_CHARACTER = 22;
HIGHLIGHT = 23; MATH = 23;
HIGHLIGHT = 24;
} }
message Node { message Node {
...@@ -63,19 +64,20 @@ message Node { ...@@ -63,19 +64,20 @@ message Node {
UnorderedListNode unordered_list_node = 9; UnorderedListNode unordered_list_node = 9;
TaskListNode task_list_node = 10; TaskListNode task_list_node = 10;
MathBlockNode math_block_node = 11; MathBlockNode math_block_node = 11;
TextNode text_node = 12; TableNode table_node = 12;
BoldNode bold_node = 13; TextNode text_node = 13;
ItalicNode italic_node = 14; BoldNode bold_node = 14;
BoldItalicNode bold_italic_node = 15; ItalicNode italic_node = 15;
CodeNode code_node = 16; BoldItalicNode bold_italic_node = 16;
ImageNode image_node = 17; CodeNode code_node = 17;
LinkNode link_node = 18; ImageNode image_node = 18;
AutoLinkNode auto_link_node = 19; LinkNode link_node = 19;
TagNode tag_node = 20; AutoLinkNode auto_link_node = 20;
StrikethroughNode strikethrough_node = 21; TagNode tag_node = 21;
EscapingCharacterNode escaping_character_node = 22; StrikethroughNode strikethrough_node = 22;
MathNode math_node = 23; EscapingCharacterNode escaping_character_node = 23;
HighlightNode highlight_node = 24; MathNode math_node = 24;
HighlightNode highlight_node = 25;
} }
} }
...@@ -126,6 +128,16 @@ message MathBlockNode { ...@@ -126,6 +128,16 @@ message MathBlockNode {
string content = 1; string content = 1;
} }
message TableNode {
repeated string header = 1;
repeated int32 delimiter = 2;
message Row {
repeated string cells = 1;
}
repeated Row rows = 3;
}
message TextNode { message TextNode {
string content = 1; string content = 1;
} }
......
...@@ -88,6 +88,8 @@ ...@@ -88,6 +88,8 @@
- [ParseMarkdownRequest](#memos-api-v2-ParseMarkdownRequest) - [ParseMarkdownRequest](#memos-api-v2-ParseMarkdownRequest)
- [ParseMarkdownResponse](#memos-api-v2-ParseMarkdownResponse) - [ParseMarkdownResponse](#memos-api-v2-ParseMarkdownResponse)
- [StrikethroughNode](#memos-api-v2-StrikethroughNode) - [StrikethroughNode](#memos-api-v2-StrikethroughNode)
- [TableNode](#memos-api-v2-TableNode)
- [TableNode.Row](#memos-api-v2-TableNode-Row)
- [TagNode](#memos-api-v2-TagNode) - [TagNode](#memos-api-v2-TagNode)
- [TaskListNode](#memos-api-v2-TaskListNode) - [TaskListNode](#memos-api-v2-TaskListNode)
- [TextNode](#memos-api-v2-TextNode) - [TextNode](#memos-api-v2-TextNode)
...@@ -1222,6 +1224,7 @@ ...@@ -1222,6 +1224,7 @@
| unordered_list_node | [UnorderedListNode](#memos-api-v2-UnorderedListNode) | | | | unordered_list_node | [UnorderedListNode](#memos-api-v2-UnorderedListNode) | | |
| task_list_node | [TaskListNode](#memos-api-v2-TaskListNode) | | | | task_list_node | [TaskListNode](#memos-api-v2-TaskListNode) | | |
| math_block_node | [MathBlockNode](#memos-api-v2-MathBlockNode) | | | | math_block_node | [MathBlockNode](#memos-api-v2-MathBlockNode) | | |
| table_node | [TableNode](#memos-api-v2-TableNode) | | |
| text_node | [TextNode](#memos-api-v2-TextNode) | | | | text_node | [TextNode](#memos-api-v2-TextNode) | | |
| bold_node | [BoldNode](#memos-api-v2-BoldNode) | | | | bold_node | [BoldNode](#memos-api-v2-BoldNode) | | |
| italic_node | [ItalicNode](#memos-api-v2-ItalicNode) | | | | italic_node | [ItalicNode](#memos-api-v2-ItalicNode) | | |
...@@ -1318,6 +1321,38 @@ ...@@ -1318,6 +1321,38 @@
<a name="memos-api-v2-TableNode"></a>
### TableNode
| Field | Type | Label | Description |
| ----- | ---- | ----- | ----------- |
| header | [string](#string) | repeated | |
| delimiter | [int32](#int32) | repeated | |
| rows | [TableNode.Row](#memos-api-v2-TableNode-Row) | repeated | |
<a name="memos-api-v2-TableNode-Row"></a>
### TableNode.Row
| Field | Type | Label | Description |
| ----- | ---- | ----- | ----------- |
| cells | [string](#string) | repeated | |
<a name="memos-api-v2-TagNode"></a> <a name="memos-api-v2-TagNode"></a>
### TagNode ### TagNode
...@@ -1403,19 +1438,20 @@ ...@@ -1403,19 +1438,20 @@
| UNORDERED_LIST | 8 | | | UNORDERED_LIST | 8 | |
| TASK_LIST | 9 | | | TASK_LIST | 9 | |
| MATH_BLOCK | 10 | | | MATH_BLOCK | 10 | |
| TEXT | 11 | | | TABLE | 11 | |
| BOLD | 12 | | | TEXT | 12 | |
| ITALIC | 13 | | | BOLD | 13 | |
| BOLD_ITALIC | 14 | | | ITALIC | 14 | |
| CODE | 15 | | | BOLD_ITALIC | 15 | |
| IMAGE | 16 | | | CODE | 16 | |
| LINK | 17 | | | IMAGE | 17 | |
| AUTO_LINK | 18 | | | LINK | 18 | |
| TAG | 19 | | | AUTO_LINK | 19 | |
| STRIKETHROUGH | 20 | | | TAG | 20 | |
| ESCAPING_CHARACTER | 21 | | | STRIKETHROUGH | 21 | |
| MATH | 22 | | | ESCAPING_CHARACTER | 22 | |
| HIGHLIGHT | 23 | | | MATH | 23 | |
| HIGHLIGHT | 24 | |
......
...@@ -35,19 +35,20 @@ const ( ...@@ -35,19 +35,20 @@ const (
NodeType_UNORDERED_LIST NodeType = 8 NodeType_UNORDERED_LIST NodeType = 8
NodeType_TASK_LIST NodeType = 9 NodeType_TASK_LIST NodeType = 9
NodeType_MATH_BLOCK NodeType = 10 NodeType_MATH_BLOCK NodeType = 10
NodeType_TEXT NodeType = 11 NodeType_TABLE NodeType = 11
NodeType_BOLD NodeType = 12 NodeType_TEXT NodeType = 12
NodeType_ITALIC NodeType = 13 NodeType_BOLD NodeType = 13
NodeType_BOLD_ITALIC NodeType = 14 NodeType_ITALIC NodeType = 14
NodeType_CODE NodeType = 15 NodeType_BOLD_ITALIC NodeType = 15
NodeType_IMAGE NodeType = 16 NodeType_CODE NodeType = 16
NodeType_LINK NodeType = 17 NodeType_IMAGE NodeType = 17
NodeType_AUTO_LINK NodeType = 18 NodeType_LINK NodeType = 18
NodeType_TAG NodeType = 19 NodeType_AUTO_LINK NodeType = 19
NodeType_STRIKETHROUGH NodeType = 20 NodeType_TAG NodeType = 20
NodeType_ESCAPING_CHARACTER NodeType = 21 NodeType_STRIKETHROUGH NodeType = 21
NodeType_MATH NodeType = 22 NodeType_ESCAPING_CHARACTER NodeType = 22
NodeType_HIGHLIGHT NodeType = 23 NodeType_MATH NodeType = 23
NodeType_HIGHLIGHT NodeType = 24
) )
// Enum value maps for NodeType. // Enum value maps for NodeType.
...@@ -64,19 +65,20 @@ var ( ...@@ -64,19 +65,20 @@ var (
8: "UNORDERED_LIST", 8: "UNORDERED_LIST",
9: "TASK_LIST", 9: "TASK_LIST",
10: "MATH_BLOCK", 10: "MATH_BLOCK",
11: "TEXT", 11: "TABLE",
12: "BOLD", 12: "TEXT",
13: "ITALIC", 13: "BOLD",
14: "BOLD_ITALIC", 14: "ITALIC",
15: "CODE", 15: "BOLD_ITALIC",
16: "IMAGE", 16: "CODE",
17: "LINK", 17: "IMAGE",
18: "AUTO_LINK", 18: "LINK",
19: "TAG", 19: "AUTO_LINK",
20: "STRIKETHROUGH", 20: "TAG",
21: "ESCAPING_CHARACTER", 21: "STRIKETHROUGH",
22: "MATH", 22: "ESCAPING_CHARACTER",
23: "HIGHLIGHT", 23: "MATH",
24: "HIGHLIGHT",
} }
NodeType_value = map[string]int32{ NodeType_value = map[string]int32{
"NODE_UNSPECIFIED": 0, "NODE_UNSPECIFIED": 0,
...@@ -90,19 +92,20 @@ var ( ...@@ -90,19 +92,20 @@ var (
"UNORDERED_LIST": 8, "UNORDERED_LIST": 8,
"TASK_LIST": 9, "TASK_LIST": 9,
"MATH_BLOCK": 10, "MATH_BLOCK": 10,
"TEXT": 11, "TABLE": 11,
"BOLD": 12, "TEXT": 12,
"ITALIC": 13, "BOLD": 13,
"BOLD_ITALIC": 14, "ITALIC": 14,
"CODE": 15, "BOLD_ITALIC": 15,
"IMAGE": 16, "CODE": 16,
"LINK": 17, "IMAGE": 17,
"AUTO_LINK": 18, "LINK": 18,
"TAG": 19, "AUTO_LINK": 19,
"STRIKETHROUGH": 20, "TAG": 20,
"ESCAPING_CHARACTER": 21, "STRIKETHROUGH": 21,
"MATH": 22, "ESCAPING_CHARACTER": 22,
"HIGHLIGHT": 23, "MATH": 23,
"HIGHLIGHT": 24,
} }
) )
...@@ -245,6 +248,7 @@ type Node struct { ...@@ -245,6 +248,7 @@ type Node struct {
// *Node_UnorderedListNode // *Node_UnorderedListNode
// *Node_TaskListNode // *Node_TaskListNode
// *Node_MathBlockNode // *Node_MathBlockNode
// *Node_TableNode
// *Node_TextNode // *Node_TextNode
// *Node_BoldNode // *Node_BoldNode
// *Node_ItalicNode // *Node_ItalicNode
...@@ -377,6 +381,13 @@ func (x *Node) GetMathBlockNode() *MathBlockNode { ...@@ -377,6 +381,13 @@ func (x *Node) GetMathBlockNode() *MathBlockNode {
return nil return nil
} }
func (x *Node) GetTableNode() *TableNode {
if x, ok := x.GetNode().(*Node_TableNode); ok {
return x.TableNode
}
return nil
}
func (x *Node) GetTextNode() *TextNode { func (x *Node) GetTextNode() *TextNode {
if x, ok := x.GetNode().(*Node_TextNode); ok { if x, ok := x.GetNode().(*Node_TextNode); ok {
return x.TextNode return x.TextNode
...@@ -512,56 +523,60 @@ type Node_MathBlockNode struct { ...@@ -512,56 +523,60 @@ type Node_MathBlockNode struct {
MathBlockNode *MathBlockNode `protobuf:"bytes,11,opt,name=math_block_node,json=mathBlockNode,proto3,oneof"` MathBlockNode *MathBlockNode `protobuf:"bytes,11,opt,name=math_block_node,json=mathBlockNode,proto3,oneof"`
} }
type Node_TableNode struct {
TableNode *TableNode `protobuf:"bytes,12,opt,name=table_node,json=tableNode,proto3,oneof"`
}
type Node_TextNode struct { type Node_TextNode struct {
TextNode *TextNode `protobuf:"bytes,12,opt,name=text_node,json=textNode,proto3,oneof"` TextNode *TextNode `protobuf:"bytes,13,opt,name=text_node,json=textNode,proto3,oneof"`
} }
type Node_BoldNode struct { type Node_BoldNode struct {
BoldNode *BoldNode `protobuf:"bytes,13,opt,name=bold_node,json=boldNode,proto3,oneof"` BoldNode *BoldNode `protobuf:"bytes,14,opt,name=bold_node,json=boldNode,proto3,oneof"`
} }
type Node_ItalicNode struct { type Node_ItalicNode struct {
ItalicNode *ItalicNode `protobuf:"bytes,14,opt,name=italic_node,json=italicNode,proto3,oneof"` ItalicNode *ItalicNode `protobuf:"bytes,15,opt,name=italic_node,json=italicNode,proto3,oneof"`
} }
type Node_BoldItalicNode struct { type Node_BoldItalicNode struct {
BoldItalicNode *BoldItalicNode `protobuf:"bytes,15,opt,name=bold_italic_node,json=boldItalicNode,proto3,oneof"` BoldItalicNode *BoldItalicNode `protobuf:"bytes,16,opt,name=bold_italic_node,json=boldItalicNode,proto3,oneof"`
} }
type Node_CodeNode struct { type Node_CodeNode struct {
CodeNode *CodeNode `protobuf:"bytes,16,opt,name=code_node,json=codeNode,proto3,oneof"` CodeNode *CodeNode `protobuf:"bytes,17,opt,name=code_node,json=codeNode,proto3,oneof"`
} }
type Node_ImageNode struct { type Node_ImageNode struct {
ImageNode *ImageNode `protobuf:"bytes,17,opt,name=image_node,json=imageNode,proto3,oneof"` ImageNode *ImageNode `protobuf:"bytes,18,opt,name=image_node,json=imageNode,proto3,oneof"`
} }
type Node_LinkNode struct { type Node_LinkNode struct {
LinkNode *LinkNode `protobuf:"bytes,18,opt,name=link_node,json=linkNode,proto3,oneof"` LinkNode *LinkNode `protobuf:"bytes,19,opt,name=link_node,json=linkNode,proto3,oneof"`
} }
type Node_AutoLinkNode struct { type Node_AutoLinkNode struct {
AutoLinkNode *AutoLinkNode `protobuf:"bytes,19,opt,name=auto_link_node,json=autoLinkNode,proto3,oneof"` AutoLinkNode *AutoLinkNode `protobuf:"bytes,20,opt,name=auto_link_node,json=autoLinkNode,proto3,oneof"`
} }
type Node_TagNode struct { type Node_TagNode struct {
TagNode *TagNode `protobuf:"bytes,20,opt,name=tag_node,json=tagNode,proto3,oneof"` TagNode *TagNode `protobuf:"bytes,21,opt,name=tag_node,json=tagNode,proto3,oneof"`
} }
type Node_StrikethroughNode struct { type Node_StrikethroughNode struct {
StrikethroughNode *StrikethroughNode `protobuf:"bytes,21,opt,name=strikethrough_node,json=strikethroughNode,proto3,oneof"` StrikethroughNode *StrikethroughNode `protobuf:"bytes,22,opt,name=strikethrough_node,json=strikethroughNode,proto3,oneof"`
} }
type Node_EscapingCharacterNode struct { type Node_EscapingCharacterNode struct {
EscapingCharacterNode *EscapingCharacterNode `protobuf:"bytes,22,opt,name=escaping_character_node,json=escapingCharacterNode,proto3,oneof"` EscapingCharacterNode *EscapingCharacterNode `protobuf:"bytes,23,opt,name=escaping_character_node,json=escapingCharacterNode,proto3,oneof"`
} }
type Node_MathNode struct { type Node_MathNode struct {
MathNode *MathNode `protobuf:"bytes,23,opt,name=math_node,json=mathNode,proto3,oneof"` MathNode *MathNode `protobuf:"bytes,24,opt,name=math_node,json=mathNode,proto3,oneof"`
} }
type Node_HighlightNode struct { type Node_HighlightNode struct {
HighlightNode *HighlightNode `protobuf:"bytes,24,opt,name=highlight_node,json=highlightNode,proto3,oneof"` HighlightNode *HighlightNode `protobuf:"bytes,25,opt,name=highlight_node,json=highlightNode,proto3,oneof"`
} }
func (*Node_LineBreakNode) isNode_Node() {} func (*Node_LineBreakNode) isNode_Node() {}
...@@ -584,6 +599,8 @@ func (*Node_TaskListNode) isNode_Node() {} ...@@ -584,6 +599,8 @@ func (*Node_TaskListNode) isNode_Node() {}
func (*Node_MathBlockNode) isNode_Node() {} func (*Node_MathBlockNode) isNode_Node() {}
func (*Node_TableNode) isNode_Node() {}
func (*Node_TextNode) isNode_Node() {} func (*Node_TextNode) isNode_Node() {}
func (*Node_BoldNode) isNode_Node() {} func (*Node_BoldNode) isNode_Node() {}
...@@ -1143,6 +1160,69 @@ func (x *MathBlockNode) GetContent() string { ...@@ -1143,6 +1160,69 @@ func (x *MathBlockNode) GetContent() string {
return "" return ""
} }
type TableNode struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Header []string `protobuf:"bytes,1,rep,name=header,proto3" json:"header,omitempty"`
Delimiter []int32 `protobuf:"varint,2,rep,packed,name=delimiter,proto3" json:"delimiter,omitempty"`
Rows []*TableNode_Row `protobuf:"bytes,3,rep,name=rows,proto3" json:"rows,omitempty"`
}
func (x *TableNode) Reset() {
*x = TableNode{}
if protoimpl.UnsafeEnabled {
mi := &file_api_v2_markdown_service_proto_msgTypes[13]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *TableNode) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*TableNode) ProtoMessage() {}
func (x *TableNode) ProtoReflect() protoreflect.Message {
mi := &file_api_v2_markdown_service_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 TableNode.ProtoReflect.Descriptor instead.
func (*TableNode) Descriptor() ([]byte, []int) {
return file_api_v2_markdown_service_proto_rawDescGZIP(), []int{13}
}
func (x *TableNode) GetHeader() []string {
if x != nil {
return x.Header
}
return nil
}
func (x *TableNode) GetDelimiter() []int32 {
if x != nil {
return x.Delimiter
}
return nil
}
func (x *TableNode) GetRows() []*TableNode_Row {
if x != nil {
return x.Rows
}
return nil
}
type TextNode struct { type TextNode struct {
state protoimpl.MessageState state protoimpl.MessageState
sizeCache protoimpl.SizeCache sizeCache protoimpl.SizeCache
...@@ -1154,7 +1234,7 @@ type TextNode struct { ...@@ -1154,7 +1234,7 @@ type TextNode struct {
func (x *TextNode) Reset() { func (x *TextNode) Reset() {
*x = TextNode{} *x = TextNode{}
if protoimpl.UnsafeEnabled { if protoimpl.UnsafeEnabled {
mi := &file_api_v2_markdown_service_proto_msgTypes[13] mi := &file_api_v2_markdown_service_proto_msgTypes[14]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi) ms.StoreMessageInfo(mi)
} }
...@@ -1167,7 +1247,7 @@ func (x *TextNode) String() string { ...@@ -1167,7 +1247,7 @@ func (x *TextNode) String() string {
func (*TextNode) ProtoMessage() {} func (*TextNode) ProtoMessage() {}
func (x *TextNode) ProtoReflect() protoreflect.Message { func (x *TextNode) ProtoReflect() protoreflect.Message {
mi := &file_api_v2_markdown_service_proto_msgTypes[13] mi := &file_api_v2_markdown_service_proto_msgTypes[14]
if protoimpl.UnsafeEnabled && x != nil { if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil { if ms.LoadMessageInfo() == nil {
...@@ -1180,7 +1260,7 @@ func (x *TextNode) ProtoReflect() protoreflect.Message { ...@@ -1180,7 +1260,7 @@ func (x *TextNode) ProtoReflect() protoreflect.Message {
// Deprecated: Use TextNode.ProtoReflect.Descriptor instead. // Deprecated: Use TextNode.ProtoReflect.Descriptor instead.
func (*TextNode) Descriptor() ([]byte, []int) { func (*TextNode) Descriptor() ([]byte, []int) {
return file_api_v2_markdown_service_proto_rawDescGZIP(), []int{13} return file_api_v2_markdown_service_proto_rawDescGZIP(), []int{14}
} }
func (x *TextNode) GetContent() string { func (x *TextNode) GetContent() string {
...@@ -1202,7 +1282,7 @@ type BoldNode struct { ...@@ -1202,7 +1282,7 @@ type BoldNode struct {
func (x *BoldNode) Reset() { func (x *BoldNode) Reset() {
*x = BoldNode{} *x = BoldNode{}
if protoimpl.UnsafeEnabled { if protoimpl.UnsafeEnabled {
mi := &file_api_v2_markdown_service_proto_msgTypes[14] mi := &file_api_v2_markdown_service_proto_msgTypes[15]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi) ms.StoreMessageInfo(mi)
} }
...@@ -1215,7 +1295,7 @@ func (x *BoldNode) String() string { ...@@ -1215,7 +1295,7 @@ func (x *BoldNode) String() string {
func (*BoldNode) ProtoMessage() {} func (*BoldNode) ProtoMessage() {}
func (x *BoldNode) ProtoReflect() protoreflect.Message { func (x *BoldNode) ProtoReflect() protoreflect.Message {
mi := &file_api_v2_markdown_service_proto_msgTypes[14] mi := &file_api_v2_markdown_service_proto_msgTypes[15]
if protoimpl.UnsafeEnabled && x != nil { if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil { if ms.LoadMessageInfo() == nil {
...@@ -1228,7 +1308,7 @@ func (x *BoldNode) ProtoReflect() protoreflect.Message { ...@@ -1228,7 +1308,7 @@ func (x *BoldNode) ProtoReflect() protoreflect.Message {
// Deprecated: Use BoldNode.ProtoReflect.Descriptor instead. // Deprecated: Use BoldNode.ProtoReflect.Descriptor instead.
func (*BoldNode) Descriptor() ([]byte, []int) { func (*BoldNode) Descriptor() ([]byte, []int) {
return file_api_v2_markdown_service_proto_rawDescGZIP(), []int{14} return file_api_v2_markdown_service_proto_rawDescGZIP(), []int{15}
} }
func (x *BoldNode) GetSymbol() string { func (x *BoldNode) GetSymbol() string {
...@@ -1257,7 +1337,7 @@ type ItalicNode struct { ...@@ -1257,7 +1337,7 @@ type ItalicNode struct {
func (x *ItalicNode) Reset() { func (x *ItalicNode) Reset() {
*x = ItalicNode{} *x = ItalicNode{}
if protoimpl.UnsafeEnabled { if protoimpl.UnsafeEnabled {
mi := &file_api_v2_markdown_service_proto_msgTypes[15] mi := &file_api_v2_markdown_service_proto_msgTypes[16]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi) ms.StoreMessageInfo(mi)
} }
...@@ -1270,7 +1350,7 @@ func (x *ItalicNode) String() string { ...@@ -1270,7 +1350,7 @@ func (x *ItalicNode) String() string {
func (*ItalicNode) ProtoMessage() {} func (*ItalicNode) ProtoMessage() {}
func (x *ItalicNode) ProtoReflect() protoreflect.Message { func (x *ItalicNode) ProtoReflect() protoreflect.Message {
mi := &file_api_v2_markdown_service_proto_msgTypes[15] mi := &file_api_v2_markdown_service_proto_msgTypes[16]
if protoimpl.UnsafeEnabled && x != nil { if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil { if ms.LoadMessageInfo() == nil {
...@@ -1283,7 +1363,7 @@ func (x *ItalicNode) ProtoReflect() protoreflect.Message { ...@@ -1283,7 +1363,7 @@ func (x *ItalicNode) ProtoReflect() protoreflect.Message {
// Deprecated: Use ItalicNode.ProtoReflect.Descriptor instead. // Deprecated: Use ItalicNode.ProtoReflect.Descriptor instead.
func (*ItalicNode) Descriptor() ([]byte, []int) { func (*ItalicNode) Descriptor() ([]byte, []int) {
return file_api_v2_markdown_service_proto_rawDescGZIP(), []int{15} return file_api_v2_markdown_service_proto_rawDescGZIP(), []int{16}
} }
func (x *ItalicNode) GetSymbol() string { func (x *ItalicNode) GetSymbol() string {
...@@ -1312,7 +1392,7 @@ type BoldItalicNode struct { ...@@ -1312,7 +1392,7 @@ type BoldItalicNode struct {
func (x *BoldItalicNode) Reset() { func (x *BoldItalicNode) Reset() {
*x = BoldItalicNode{} *x = BoldItalicNode{}
if protoimpl.UnsafeEnabled { if protoimpl.UnsafeEnabled {
mi := &file_api_v2_markdown_service_proto_msgTypes[16] mi := &file_api_v2_markdown_service_proto_msgTypes[17]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi) ms.StoreMessageInfo(mi)
} }
...@@ -1325,7 +1405,7 @@ func (x *BoldItalicNode) String() string { ...@@ -1325,7 +1405,7 @@ func (x *BoldItalicNode) String() string {
func (*BoldItalicNode) ProtoMessage() {} func (*BoldItalicNode) ProtoMessage() {}
func (x *BoldItalicNode) ProtoReflect() protoreflect.Message { func (x *BoldItalicNode) ProtoReflect() protoreflect.Message {
mi := &file_api_v2_markdown_service_proto_msgTypes[16] mi := &file_api_v2_markdown_service_proto_msgTypes[17]
if protoimpl.UnsafeEnabled && x != nil { if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil { if ms.LoadMessageInfo() == nil {
...@@ -1338,7 +1418,7 @@ func (x *BoldItalicNode) ProtoReflect() protoreflect.Message { ...@@ -1338,7 +1418,7 @@ func (x *BoldItalicNode) ProtoReflect() protoreflect.Message {
// Deprecated: Use BoldItalicNode.ProtoReflect.Descriptor instead. // Deprecated: Use BoldItalicNode.ProtoReflect.Descriptor instead.
func (*BoldItalicNode) Descriptor() ([]byte, []int) { func (*BoldItalicNode) Descriptor() ([]byte, []int) {
return file_api_v2_markdown_service_proto_rawDescGZIP(), []int{16} return file_api_v2_markdown_service_proto_rawDescGZIP(), []int{17}
} }
func (x *BoldItalicNode) GetSymbol() string { func (x *BoldItalicNode) GetSymbol() string {
...@@ -1366,7 +1446,7 @@ type CodeNode struct { ...@@ -1366,7 +1446,7 @@ type CodeNode struct {
func (x *CodeNode) Reset() { func (x *CodeNode) Reset() {
*x = CodeNode{} *x = CodeNode{}
if protoimpl.UnsafeEnabled { if protoimpl.UnsafeEnabled {
mi := &file_api_v2_markdown_service_proto_msgTypes[17] mi := &file_api_v2_markdown_service_proto_msgTypes[18]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi) ms.StoreMessageInfo(mi)
} }
...@@ -1379,7 +1459,7 @@ func (x *CodeNode) String() string { ...@@ -1379,7 +1459,7 @@ func (x *CodeNode) String() string {
func (*CodeNode) ProtoMessage() {} func (*CodeNode) ProtoMessage() {}
func (x *CodeNode) ProtoReflect() protoreflect.Message { func (x *CodeNode) ProtoReflect() protoreflect.Message {
mi := &file_api_v2_markdown_service_proto_msgTypes[17] mi := &file_api_v2_markdown_service_proto_msgTypes[18]
if protoimpl.UnsafeEnabled && x != nil { if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil { if ms.LoadMessageInfo() == nil {
...@@ -1392,7 +1472,7 @@ func (x *CodeNode) ProtoReflect() protoreflect.Message { ...@@ -1392,7 +1472,7 @@ func (x *CodeNode) ProtoReflect() protoreflect.Message {
// Deprecated: Use CodeNode.ProtoReflect.Descriptor instead. // Deprecated: Use CodeNode.ProtoReflect.Descriptor instead.
func (*CodeNode) Descriptor() ([]byte, []int) { func (*CodeNode) Descriptor() ([]byte, []int) {
return file_api_v2_markdown_service_proto_rawDescGZIP(), []int{17} return file_api_v2_markdown_service_proto_rawDescGZIP(), []int{18}
} }
func (x *CodeNode) GetContent() string { func (x *CodeNode) GetContent() string {
...@@ -1414,7 +1494,7 @@ type ImageNode struct { ...@@ -1414,7 +1494,7 @@ type ImageNode struct {
func (x *ImageNode) Reset() { func (x *ImageNode) Reset() {
*x = ImageNode{} *x = ImageNode{}
if protoimpl.UnsafeEnabled { if protoimpl.UnsafeEnabled {
mi := &file_api_v2_markdown_service_proto_msgTypes[18] mi := &file_api_v2_markdown_service_proto_msgTypes[19]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi) ms.StoreMessageInfo(mi)
} }
...@@ -1427,7 +1507,7 @@ func (x *ImageNode) String() string { ...@@ -1427,7 +1507,7 @@ func (x *ImageNode) String() string {
func (*ImageNode) ProtoMessage() {} func (*ImageNode) ProtoMessage() {}
func (x *ImageNode) ProtoReflect() protoreflect.Message { func (x *ImageNode) ProtoReflect() protoreflect.Message {
mi := &file_api_v2_markdown_service_proto_msgTypes[18] mi := &file_api_v2_markdown_service_proto_msgTypes[19]
if protoimpl.UnsafeEnabled && x != nil { if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil { if ms.LoadMessageInfo() == nil {
...@@ -1440,7 +1520,7 @@ func (x *ImageNode) ProtoReflect() protoreflect.Message { ...@@ -1440,7 +1520,7 @@ func (x *ImageNode) ProtoReflect() protoreflect.Message {
// Deprecated: Use ImageNode.ProtoReflect.Descriptor instead. // Deprecated: Use ImageNode.ProtoReflect.Descriptor instead.
func (*ImageNode) Descriptor() ([]byte, []int) { func (*ImageNode) Descriptor() ([]byte, []int) {
return file_api_v2_markdown_service_proto_rawDescGZIP(), []int{18} return file_api_v2_markdown_service_proto_rawDescGZIP(), []int{19}
} }
func (x *ImageNode) GetAltText() string { func (x *ImageNode) GetAltText() string {
...@@ -1469,7 +1549,7 @@ type LinkNode struct { ...@@ -1469,7 +1549,7 @@ type LinkNode struct {
func (x *LinkNode) Reset() { func (x *LinkNode) Reset() {
*x = LinkNode{} *x = LinkNode{}
if protoimpl.UnsafeEnabled { if protoimpl.UnsafeEnabled {
mi := &file_api_v2_markdown_service_proto_msgTypes[19] mi := &file_api_v2_markdown_service_proto_msgTypes[20]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi) ms.StoreMessageInfo(mi)
} }
...@@ -1482,7 +1562,7 @@ func (x *LinkNode) String() string { ...@@ -1482,7 +1562,7 @@ func (x *LinkNode) String() string {
func (*LinkNode) ProtoMessage() {} func (*LinkNode) ProtoMessage() {}
func (x *LinkNode) ProtoReflect() protoreflect.Message { func (x *LinkNode) ProtoReflect() protoreflect.Message {
mi := &file_api_v2_markdown_service_proto_msgTypes[19] mi := &file_api_v2_markdown_service_proto_msgTypes[20]
if protoimpl.UnsafeEnabled && x != nil { if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil { if ms.LoadMessageInfo() == nil {
...@@ -1495,7 +1575,7 @@ func (x *LinkNode) ProtoReflect() protoreflect.Message { ...@@ -1495,7 +1575,7 @@ func (x *LinkNode) ProtoReflect() protoreflect.Message {
// Deprecated: Use LinkNode.ProtoReflect.Descriptor instead. // Deprecated: Use LinkNode.ProtoReflect.Descriptor instead.
func (*LinkNode) Descriptor() ([]byte, []int) { func (*LinkNode) Descriptor() ([]byte, []int) {
return file_api_v2_markdown_service_proto_rawDescGZIP(), []int{19} return file_api_v2_markdown_service_proto_rawDescGZIP(), []int{20}
} }
func (x *LinkNode) GetText() string { func (x *LinkNode) GetText() string {
...@@ -1524,7 +1604,7 @@ type AutoLinkNode struct { ...@@ -1524,7 +1604,7 @@ type AutoLinkNode struct {
func (x *AutoLinkNode) Reset() { func (x *AutoLinkNode) Reset() {
*x = AutoLinkNode{} *x = AutoLinkNode{}
if protoimpl.UnsafeEnabled { if protoimpl.UnsafeEnabled {
mi := &file_api_v2_markdown_service_proto_msgTypes[20] mi := &file_api_v2_markdown_service_proto_msgTypes[21]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi) ms.StoreMessageInfo(mi)
} }
...@@ -1537,7 +1617,7 @@ func (x *AutoLinkNode) String() string { ...@@ -1537,7 +1617,7 @@ func (x *AutoLinkNode) String() string {
func (*AutoLinkNode) ProtoMessage() {} func (*AutoLinkNode) ProtoMessage() {}
func (x *AutoLinkNode) ProtoReflect() protoreflect.Message { func (x *AutoLinkNode) ProtoReflect() protoreflect.Message {
mi := &file_api_v2_markdown_service_proto_msgTypes[20] mi := &file_api_v2_markdown_service_proto_msgTypes[21]
if protoimpl.UnsafeEnabled && x != nil { if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil { if ms.LoadMessageInfo() == nil {
...@@ -1550,7 +1630,7 @@ func (x *AutoLinkNode) ProtoReflect() protoreflect.Message { ...@@ -1550,7 +1630,7 @@ func (x *AutoLinkNode) ProtoReflect() protoreflect.Message {
// Deprecated: Use AutoLinkNode.ProtoReflect.Descriptor instead. // Deprecated: Use AutoLinkNode.ProtoReflect.Descriptor instead.
func (*AutoLinkNode) Descriptor() ([]byte, []int) { func (*AutoLinkNode) Descriptor() ([]byte, []int) {
return file_api_v2_markdown_service_proto_rawDescGZIP(), []int{20} return file_api_v2_markdown_service_proto_rawDescGZIP(), []int{21}
} }
func (x *AutoLinkNode) GetUrl() string { func (x *AutoLinkNode) GetUrl() string {
...@@ -1578,7 +1658,7 @@ type TagNode struct { ...@@ -1578,7 +1658,7 @@ type TagNode struct {
func (x *TagNode) Reset() { func (x *TagNode) Reset() {
*x = TagNode{} *x = TagNode{}
if protoimpl.UnsafeEnabled { if protoimpl.UnsafeEnabled {
mi := &file_api_v2_markdown_service_proto_msgTypes[21] mi := &file_api_v2_markdown_service_proto_msgTypes[22]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi) ms.StoreMessageInfo(mi)
} }
...@@ -1591,7 +1671,7 @@ func (x *TagNode) String() string { ...@@ -1591,7 +1671,7 @@ func (x *TagNode) String() string {
func (*TagNode) ProtoMessage() {} func (*TagNode) ProtoMessage() {}
func (x *TagNode) ProtoReflect() protoreflect.Message { func (x *TagNode) ProtoReflect() protoreflect.Message {
mi := &file_api_v2_markdown_service_proto_msgTypes[21] mi := &file_api_v2_markdown_service_proto_msgTypes[22]
if protoimpl.UnsafeEnabled && x != nil { if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil { if ms.LoadMessageInfo() == nil {
...@@ -1604,7 +1684,7 @@ func (x *TagNode) ProtoReflect() protoreflect.Message { ...@@ -1604,7 +1684,7 @@ func (x *TagNode) ProtoReflect() protoreflect.Message {
// Deprecated: Use TagNode.ProtoReflect.Descriptor instead. // Deprecated: Use TagNode.ProtoReflect.Descriptor instead.
func (*TagNode) Descriptor() ([]byte, []int) { func (*TagNode) Descriptor() ([]byte, []int) {
return file_api_v2_markdown_service_proto_rawDescGZIP(), []int{21} return file_api_v2_markdown_service_proto_rawDescGZIP(), []int{22}
} }
func (x *TagNode) GetContent() string { func (x *TagNode) GetContent() string {
...@@ -1625,7 +1705,7 @@ type StrikethroughNode struct { ...@@ -1625,7 +1705,7 @@ type StrikethroughNode struct {
func (x *StrikethroughNode) Reset() { func (x *StrikethroughNode) Reset() {
*x = StrikethroughNode{} *x = StrikethroughNode{}
if protoimpl.UnsafeEnabled { if protoimpl.UnsafeEnabled {
mi := &file_api_v2_markdown_service_proto_msgTypes[22] mi := &file_api_v2_markdown_service_proto_msgTypes[23]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi) ms.StoreMessageInfo(mi)
} }
...@@ -1638,7 +1718,7 @@ func (x *StrikethroughNode) String() string { ...@@ -1638,7 +1718,7 @@ func (x *StrikethroughNode) String() string {
func (*StrikethroughNode) ProtoMessage() {} func (*StrikethroughNode) ProtoMessage() {}
func (x *StrikethroughNode) ProtoReflect() protoreflect.Message { func (x *StrikethroughNode) ProtoReflect() protoreflect.Message {
mi := &file_api_v2_markdown_service_proto_msgTypes[22] mi := &file_api_v2_markdown_service_proto_msgTypes[23]
if protoimpl.UnsafeEnabled && x != nil { if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil { if ms.LoadMessageInfo() == nil {
...@@ -1651,7 +1731,7 @@ func (x *StrikethroughNode) ProtoReflect() protoreflect.Message { ...@@ -1651,7 +1731,7 @@ func (x *StrikethroughNode) ProtoReflect() protoreflect.Message {
// Deprecated: Use StrikethroughNode.ProtoReflect.Descriptor instead. // Deprecated: Use StrikethroughNode.ProtoReflect.Descriptor instead.
func (*StrikethroughNode) Descriptor() ([]byte, []int) { func (*StrikethroughNode) Descriptor() ([]byte, []int) {
return file_api_v2_markdown_service_proto_rawDescGZIP(), []int{22} return file_api_v2_markdown_service_proto_rawDescGZIP(), []int{23}
} }
func (x *StrikethroughNode) GetContent() string { func (x *StrikethroughNode) GetContent() string {
...@@ -1672,7 +1752,7 @@ type EscapingCharacterNode struct { ...@@ -1672,7 +1752,7 @@ type EscapingCharacterNode struct {
func (x *EscapingCharacterNode) Reset() { func (x *EscapingCharacterNode) Reset() {
*x = EscapingCharacterNode{} *x = EscapingCharacterNode{}
if protoimpl.UnsafeEnabled { if protoimpl.UnsafeEnabled {
mi := &file_api_v2_markdown_service_proto_msgTypes[23] mi := &file_api_v2_markdown_service_proto_msgTypes[24]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi) ms.StoreMessageInfo(mi)
} }
...@@ -1685,7 +1765,7 @@ func (x *EscapingCharacterNode) String() string { ...@@ -1685,7 +1765,7 @@ func (x *EscapingCharacterNode) String() string {
func (*EscapingCharacterNode) ProtoMessage() {} func (*EscapingCharacterNode) ProtoMessage() {}
func (x *EscapingCharacterNode) ProtoReflect() protoreflect.Message { func (x *EscapingCharacterNode) ProtoReflect() protoreflect.Message {
mi := &file_api_v2_markdown_service_proto_msgTypes[23] mi := &file_api_v2_markdown_service_proto_msgTypes[24]
if protoimpl.UnsafeEnabled && x != nil { if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil { if ms.LoadMessageInfo() == nil {
...@@ -1698,7 +1778,7 @@ func (x *EscapingCharacterNode) ProtoReflect() protoreflect.Message { ...@@ -1698,7 +1778,7 @@ func (x *EscapingCharacterNode) ProtoReflect() protoreflect.Message {
// Deprecated: Use EscapingCharacterNode.ProtoReflect.Descriptor instead. // Deprecated: Use EscapingCharacterNode.ProtoReflect.Descriptor instead.
func (*EscapingCharacterNode) Descriptor() ([]byte, []int) { func (*EscapingCharacterNode) Descriptor() ([]byte, []int) {
return file_api_v2_markdown_service_proto_rawDescGZIP(), []int{23} return file_api_v2_markdown_service_proto_rawDescGZIP(), []int{24}
} }
func (x *EscapingCharacterNode) GetSymbol() string { func (x *EscapingCharacterNode) GetSymbol() string {
...@@ -1719,7 +1799,7 @@ type MathNode struct { ...@@ -1719,7 +1799,7 @@ type MathNode struct {
func (x *MathNode) Reset() { func (x *MathNode) Reset() {
*x = MathNode{} *x = MathNode{}
if protoimpl.UnsafeEnabled { if protoimpl.UnsafeEnabled {
mi := &file_api_v2_markdown_service_proto_msgTypes[24] mi := &file_api_v2_markdown_service_proto_msgTypes[25]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi) ms.StoreMessageInfo(mi)
} }
...@@ -1732,7 +1812,7 @@ func (x *MathNode) String() string { ...@@ -1732,7 +1812,7 @@ func (x *MathNode) String() string {
func (*MathNode) ProtoMessage() {} func (*MathNode) ProtoMessage() {}
func (x *MathNode) ProtoReflect() protoreflect.Message { func (x *MathNode) ProtoReflect() protoreflect.Message {
mi := &file_api_v2_markdown_service_proto_msgTypes[24] mi := &file_api_v2_markdown_service_proto_msgTypes[25]
if protoimpl.UnsafeEnabled && x != nil { if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil { if ms.LoadMessageInfo() == nil {
...@@ -1745,7 +1825,7 @@ func (x *MathNode) ProtoReflect() protoreflect.Message { ...@@ -1745,7 +1825,7 @@ func (x *MathNode) ProtoReflect() protoreflect.Message {
// Deprecated: Use MathNode.ProtoReflect.Descriptor instead. // Deprecated: Use MathNode.ProtoReflect.Descriptor instead.
func (*MathNode) Descriptor() ([]byte, []int) { func (*MathNode) Descriptor() ([]byte, []int) {
return file_api_v2_markdown_service_proto_rawDescGZIP(), []int{24} return file_api_v2_markdown_service_proto_rawDescGZIP(), []int{25}
} }
func (x *MathNode) GetContent() string { func (x *MathNode) GetContent() string {
...@@ -1766,7 +1846,7 @@ type HighlightNode struct { ...@@ -1766,7 +1846,7 @@ type HighlightNode struct {
func (x *HighlightNode) Reset() { func (x *HighlightNode) Reset() {
*x = HighlightNode{} *x = HighlightNode{}
if protoimpl.UnsafeEnabled { if protoimpl.UnsafeEnabled {
mi := &file_api_v2_markdown_service_proto_msgTypes[25] mi := &file_api_v2_markdown_service_proto_msgTypes[26]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi) ms.StoreMessageInfo(mi)
} }
...@@ -1779,7 +1859,7 @@ func (x *HighlightNode) String() string { ...@@ -1779,7 +1859,7 @@ func (x *HighlightNode) String() string {
func (*HighlightNode) ProtoMessage() {} func (*HighlightNode) ProtoMessage() {}
func (x *HighlightNode) ProtoReflect() protoreflect.Message { func (x *HighlightNode) ProtoReflect() protoreflect.Message {
mi := &file_api_v2_markdown_service_proto_msgTypes[25] mi := &file_api_v2_markdown_service_proto_msgTypes[26]
if protoimpl.UnsafeEnabled && x != nil { if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil { if ms.LoadMessageInfo() == nil {
...@@ -1792,7 +1872,7 @@ func (x *HighlightNode) ProtoReflect() protoreflect.Message { ...@@ -1792,7 +1872,7 @@ func (x *HighlightNode) ProtoReflect() protoreflect.Message {
// Deprecated: Use HighlightNode.ProtoReflect.Descriptor instead. // Deprecated: Use HighlightNode.ProtoReflect.Descriptor instead.
func (*HighlightNode) Descriptor() ([]byte, []int) { func (*HighlightNode) Descriptor() ([]byte, []int) {
return file_api_v2_markdown_service_proto_rawDescGZIP(), []int{25} return file_api_v2_markdown_service_proto_rawDescGZIP(), []int{26}
} }
func (x *HighlightNode) GetContent() string { func (x *HighlightNode) GetContent() string {
...@@ -1802,6 +1882,53 @@ func (x *HighlightNode) GetContent() string { ...@@ -1802,6 +1882,53 @@ func (x *HighlightNode) GetContent() string {
return "" return ""
} }
type TableNode_Row struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Cells []string `protobuf:"bytes,1,rep,name=cells,proto3" json:"cells,omitempty"`
}
func (x *TableNode_Row) Reset() {
*x = TableNode_Row{}
if protoimpl.UnsafeEnabled {
mi := &file_api_v2_markdown_service_proto_msgTypes[27]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *TableNode_Row) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*TableNode_Row) ProtoMessage() {}
func (x *TableNode_Row) ProtoReflect() protoreflect.Message {
mi := &file_api_v2_markdown_service_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 TableNode_Row.ProtoReflect.Descriptor instead.
func (*TableNode_Row) Descriptor() ([]byte, []int) {
return file_api_v2_markdown_service_proto_rawDescGZIP(), []int{13, 0}
}
func (x *TableNode_Row) GetCells() []string {
if x != nil {
return x.Cells
}
return nil
}
var File_api_v2_markdown_service_proto protoreflect.FileDescriptor var File_api_v2_markdown_service_proto protoreflect.FileDescriptor
var file_api_v2_markdown_service_proto_rawDesc = []byte{ var file_api_v2_markdown_service_proto_rawDesc = []byte{
...@@ -1817,7 +1944,7 @@ var file_api_v2_markdown_service_proto_rawDesc = []byte{ ...@@ -1817,7 +1944,7 @@ var file_api_v2_markdown_service_proto_rawDesc = []byte{
0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x28, 0x0a, 0x05, 0x6e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x28, 0x0a, 0x05, 0x6e, 0x6f, 0x64, 0x65,
0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x6d, 0x65, 0x6d, 0x6f, 0x73, 0x2e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x6d, 0x65, 0x6d, 0x6f, 0x73, 0x2e,
0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x05, 0x6e, 0x6f, 0x64, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x05, 0x6e, 0x6f, 0x64,
0x65, 0x73, 0x22, 0xdb, 0x0c, 0x0a, 0x04, 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x2a, 0x0a, 0x04, 0x74, 0x65, 0x73, 0x22, 0x95, 0x0d, 0x0a, 0x04, 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x2a, 0x0a, 0x04, 0x74,
0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x16, 0x2e, 0x6d, 0x65, 0x6d, 0x6f, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x16, 0x2e, 0x6d, 0x65, 0x6d, 0x6f,
0x73, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x54, 0x79, 0x70, 0x73, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x54, 0x79, 0x70,
0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x45, 0x0a, 0x0f, 0x6c, 0x69, 0x6e, 0x65, 0x5f, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x45, 0x0a, 0x0f, 0x6c, 0x69, 0x6e, 0x65, 0x5f,
...@@ -1866,193 +1993,207 @@ var file_api_v2_markdown_service_proto_rawDesc = []byte{ ...@@ -1866,193 +1993,207 @@ var file_api_v2_markdown_service_proto_rawDesc = []byte{
0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x6d, 0x65, 0x6d, 0x6f, 0x73, 0x2e, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x6d, 0x65, 0x6d, 0x6f, 0x73, 0x2e,
0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4d, 0x61, 0x74, 0x68, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4d, 0x61, 0x74, 0x68, 0x42, 0x6c, 0x6f, 0x63, 0x6b,
0x4e, 0x6f, 0x64, 0x65, 0x48, 0x00, 0x52, 0x0d, 0x6d, 0x61, 0x74, 0x68, 0x42, 0x6c, 0x6f, 0x63, 0x4e, 0x6f, 0x64, 0x65, 0x48, 0x00, 0x52, 0x0d, 0x6d, 0x61, 0x74, 0x68, 0x42, 0x6c, 0x6f, 0x63,
0x6b, 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x35, 0x0a, 0x09, 0x74, 0x65, 0x78, 0x74, 0x5f, 0x6e, 0x6f, 0x6b, 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x38, 0x0a, 0x0a, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x6e,
0x64, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x6d, 0x65, 0x6d, 0x6f, 0x73, 0x6f, 0x64, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x6d, 0x65, 0x6d, 0x6f,
0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x54, 0x65, 0x78, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x4e, 0x6f,
0x48, 0x00, 0x52, 0x08, 0x74, 0x65, 0x78, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x35, 0x0a, 0x09, 0x64, 0x65, 0x48, 0x00, 0x52, 0x09, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x12,
0x62, 0x6f, 0x6c, 0x64, 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x35, 0x0a, 0x09, 0x74, 0x65, 0x78, 0x74, 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x0d, 0x20, 0x01,
0x16, 0x2e, 0x6d, 0x65, 0x6d, 0x6f, 0x73, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x42, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x6d, 0x65, 0x6d, 0x6f, 0x73, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76,
0x6f, 0x6c, 0x64, 0x4e, 0x6f, 0x64, 0x65, 0x48, 0x00, 0x52, 0x08, 0x62, 0x6f, 0x6c, 0x64, 0x4e, 0x32, 0x2e, 0x54, 0x65, 0x78, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x48, 0x00, 0x52, 0x08, 0x74, 0x65,
0x6f, 0x64, 0x65, 0x12, 0x3b, 0x0a, 0x0b, 0x69, 0x74, 0x61, 0x6c, 0x69, 0x63, 0x5f, 0x6e, 0x6f, 0x78, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x35, 0x0a, 0x09, 0x62, 0x6f, 0x6c, 0x64, 0x5f, 0x6e,
0x64, 0x65, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x6d, 0x65, 0x6d, 0x6f, 0x73, 0x6f, 0x64, 0x65, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x6d, 0x65, 0x6d, 0x6f,
0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x49, 0x74, 0x61, 0x6c, 0x69, 0x63, 0x4e, 0x6f, 0x73, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x42, 0x6f, 0x6c, 0x64, 0x4e, 0x6f, 0x64,
0x64, 0x65, 0x48, 0x00, 0x52, 0x0a, 0x69, 0x74, 0x61, 0x6c, 0x69, 0x63, 0x4e, 0x6f, 0x64, 0x65, 0x65, 0x48, 0x00, 0x52, 0x08, 0x62, 0x6f, 0x6c, 0x64, 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x3b, 0x0a,
0x12, 0x48, 0x0a, 0x10, 0x62, 0x6f, 0x6c, 0x64, 0x5f, 0x69, 0x74, 0x61, 0x6c, 0x69, 0x63, 0x5f, 0x0b, 0x69, 0x74, 0x61, 0x6c, 0x69, 0x63, 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x0f, 0x20, 0x01,
0x6e, 0x6f, 0x64, 0x65, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x6d, 0x65, 0x6d, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x6d, 0x65, 0x6d, 0x6f, 0x73, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76,
0x6f, 0x73, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x42, 0x6f, 0x6c, 0x64, 0x49, 0x74, 0x32, 0x2e, 0x49, 0x74, 0x61, 0x6c, 0x69, 0x63, 0x4e, 0x6f, 0x64, 0x65, 0x48, 0x00, 0x52, 0x0a,
0x61, 0x6c, 0x69, 0x63, 0x4e, 0x6f, 0x64, 0x65, 0x48, 0x00, 0x52, 0x0e, 0x62, 0x6f, 0x6c, 0x64, 0x69, 0x74, 0x61, 0x6c, 0x69, 0x63, 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x48, 0x0a, 0x10, 0x62, 0x6f,
0x49, 0x74, 0x61, 0x6c, 0x69, 0x63, 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x35, 0x0a, 0x09, 0x63, 0x6f, 0x6c, 0x64, 0x5f, 0x69, 0x74, 0x61, 0x6c, 0x69, 0x63, 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x10,
0x64, 0x65, 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x6d, 0x65, 0x6d, 0x6f, 0x73, 0x2e, 0x61, 0x70, 0x69,
0x6d, 0x65, 0x6d, 0x6f, 0x73, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x43, 0x6f, 0x64, 0x2e, 0x76, 0x32, 0x2e, 0x42, 0x6f, 0x6c, 0x64, 0x49, 0x74, 0x61, 0x6c, 0x69, 0x63, 0x4e, 0x6f,
0x65, 0x4e, 0x6f, 0x64, 0x65, 0x48, 0x00, 0x52, 0x08, 0x63, 0x6f, 0x64, 0x65, 0x4e, 0x6f, 0x64, 0x64, 0x65, 0x48, 0x00, 0x52, 0x0e, 0x62, 0x6f, 0x6c, 0x64, 0x49, 0x74, 0x61, 0x6c, 0x69, 0x63,
0x65, 0x12, 0x38, 0x0a, 0x0a, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x35, 0x0a, 0x09, 0x63, 0x6f, 0x64, 0x65, 0x5f, 0x6e, 0x6f, 0x64,
0x11, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x6d, 0x65, 0x6d, 0x6f, 0x73, 0x2e, 0x61, 0x70, 0x65, 0x18, 0x11, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x6d, 0x65, 0x6d, 0x6f, 0x73, 0x2e,
0x69, 0x2e, 0x76, 0x32, 0x2e, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x48, 0x00, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x43, 0x6f, 0x64, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x48,
0x52, 0x09, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x35, 0x0a, 0x09, 0x6c, 0x00, 0x52, 0x08, 0x63, 0x6f, 0x64, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x38, 0x0a, 0x0a, 0x69,
0x69, 0x6e, 0x6b, 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x12, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x6d, 0x61, 0x67, 0x65, 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x12, 0x20, 0x01, 0x28, 0x0b, 0x32,
0x2e, 0x6d, 0x65, 0x6d, 0x6f, 0x73, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x17, 0x2e, 0x6d, 0x65, 0x6d, 0x6f, 0x73, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x49,
0x6e, 0x6b, 0x4e, 0x6f, 0x64, 0x65, 0x48, 0x00, 0x52, 0x08, 0x6c, 0x69, 0x6e, 0x6b, 0x4e, 0x6f, 0x6d, 0x61, 0x67, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x48, 0x00, 0x52, 0x09, 0x69, 0x6d, 0x61, 0x67,
0x64, 0x65, 0x12, 0x42, 0x0a, 0x0e, 0x61, 0x75, 0x74, 0x6f, 0x5f, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x35, 0x0a, 0x09, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x6e, 0x6f,
0x6e, 0x6f, 0x64, 0x65, 0x18, 0x13, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x6d, 0x65, 0x6d, 0x64, 0x65, 0x18, 0x13, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x6d, 0x65, 0x6d, 0x6f, 0x73,
0x6f, 0x73, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x41, 0x75, 0x74, 0x6f, 0x4c, 0x69, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x6e, 0x6b, 0x4e, 0x6f, 0x64, 0x65,
0x6e, 0x6b, 0x4e, 0x6f, 0x64, 0x65, 0x48, 0x00, 0x52, 0x0c, 0x61, 0x75, 0x74, 0x6f, 0x4c, 0x69, 0x48, 0x00, 0x52, 0x08, 0x6c, 0x69, 0x6e, 0x6b, 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x42, 0x0a, 0x0e,
0x6e, 0x6b, 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x32, 0x0a, 0x08, 0x74, 0x61, 0x67, 0x5f, 0x6e, 0x6f, 0x61, 0x75, 0x74, 0x6f, 0x5f, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x14,
0x64, 0x65, 0x18, 0x14, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x6d, 0x65, 0x6d, 0x6f, 0x73, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x6d, 0x65, 0x6d, 0x6f, 0x73, 0x2e, 0x61, 0x70, 0x69,
0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x54, 0x61, 0x67, 0x4e, 0x6f, 0x64, 0x65, 0x48, 0x2e, 0x76, 0x32, 0x2e, 0x41, 0x75, 0x74, 0x6f, 0x4c, 0x69, 0x6e, 0x6b, 0x4e, 0x6f, 0x64, 0x65,
0x00, 0x52, 0x07, 0x74, 0x61, 0x67, 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x50, 0x0a, 0x12, 0x73, 0x74, 0x48, 0x00, 0x52, 0x0c, 0x61, 0x75, 0x74, 0x6f, 0x4c, 0x69, 0x6e, 0x6b, 0x4e, 0x6f, 0x64, 0x65,
0x72, 0x69, 0x6b, 0x65, 0x74, 0x68, 0x72, 0x6f, 0x75, 0x67, 0x68, 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x12, 0x32, 0x0a, 0x08, 0x74, 0x61, 0x67, 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x15, 0x20, 0x01,
0x18, 0x15, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x6d, 0x65, 0x6d, 0x6f, 0x73, 0x2e, 0x61, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x6d, 0x65, 0x6d, 0x6f, 0x73, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76,
0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6b, 0x65, 0x74, 0x68, 0x72, 0x6f, 0x32, 0x2e, 0x54, 0x61, 0x67, 0x4e, 0x6f, 0x64, 0x65, 0x48, 0x00, 0x52, 0x07, 0x74, 0x61, 0x67,
0x75, 0x67, 0x68, 0x4e, 0x6f, 0x64, 0x65, 0x48, 0x00, 0x52, 0x11, 0x73, 0x74, 0x72, 0x69, 0x6b, 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x50, 0x0a, 0x12, 0x73, 0x74, 0x72, 0x69, 0x6b, 0x65, 0x74, 0x68,
0x65, 0x74, 0x68, 0x72, 0x6f, 0x75, 0x67, 0x68, 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x5d, 0x0a, 0x17, 0x72, 0x6f, 0x75, 0x67, 0x68, 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x16, 0x20, 0x01, 0x28, 0x0b,
0x65, 0x73, 0x63, 0x61, 0x70, 0x69, 0x6e, 0x67, 0x5f, 0x63, 0x68, 0x61, 0x72, 0x61, 0x63, 0x74, 0x32, 0x1f, 0x2e, 0x6d, 0x65, 0x6d, 0x6f, 0x73, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e,
0x65, 0x72, 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x16, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6b, 0x65, 0x74, 0x68, 0x72, 0x6f, 0x75, 0x67, 0x68, 0x4e, 0x6f, 0x64,
0x6d, 0x65, 0x6d, 0x6f, 0x73, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x45, 0x73, 0x63, 0x65, 0x48, 0x00, 0x52, 0x11, 0x73, 0x74, 0x72, 0x69, 0x6b, 0x65, 0x74, 0x68, 0x72, 0x6f, 0x75,
0x61, 0x70, 0x69, 0x6e, 0x67, 0x43, 0x68, 0x61, 0x72, 0x61, 0x63, 0x74, 0x65, 0x72, 0x4e, 0x6f, 0x67, 0x68, 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x5d, 0x0a, 0x17, 0x65, 0x73, 0x63, 0x61, 0x70, 0x69,
0x64, 0x65, 0x48, 0x00, 0x52, 0x15, 0x65, 0x73, 0x63, 0x61, 0x70, 0x69, 0x6e, 0x67, 0x43, 0x68, 0x6e, 0x67, 0x5f, 0x63, 0x68, 0x61, 0x72, 0x61, 0x63, 0x74, 0x65, 0x72, 0x5f, 0x6e, 0x6f, 0x64,
0x61, 0x72, 0x61, 0x63, 0x74, 0x65, 0x72, 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x35, 0x0a, 0x09, 0x6d, 0x65, 0x18, 0x17, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x6d, 0x65, 0x6d, 0x6f, 0x73, 0x2e,
0x61, 0x74, 0x68, 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x17, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x45, 0x73, 0x63, 0x61, 0x70, 0x69, 0x6e, 0x67, 0x43,
0x2e, 0x6d, 0x65, 0x6d, 0x6f, 0x73, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4d, 0x61, 0x68, 0x61, 0x72, 0x61, 0x63, 0x74, 0x65, 0x72, 0x4e, 0x6f, 0x64, 0x65, 0x48, 0x00, 0x52, 0x15,
0x74, 0x68, 0x4e, 0x6f, 0x64, 0x65, 0x48, 0x00, 0x52, 0x08, 0x6d, 0x61, 0x74, 0x68, 0x4e, 0x6f, 0x65, 0x73, 0x63, 0x61, 0x70, 0x69, 0x6e, 0x67, 0x43, 0x68, 0x61, 0x72, 0x61, 0x63, 0x74, 0x65,
0x64, 0x65, 0x12, 0x44, 0x0a, 0x0e, 0x68, 0x69, 0x67, 0x68, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x5f, 0x72, 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x35, 0x0a, 0x09, 0x6d, 0x61, 0x74, 0x68, 0x5f, 0x6e, 0x6f,
0x6e, 0x6f, 0x64, 0x65, 0x18, 0x18, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x6d, 0x65, 0x6d, 0x64, 0x65, 0x18, 0x18, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x6d, 0x65, 0x6d, 0x6f, 0x73,
0x6f, 0x73, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x48, 0x69, 0x67, 0x68, 0x6c, 0x69, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4d, 0x61, 0x74, 0x68, 0x4e, 0x6f, 0x64, 0x65,
0x67, 0x68, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x48, 0x00, 0x52, 0x0d, 0x68, 0x69, 0x67, 0x68, 0x6c, 0x48, 0x00, 0x52, 0x08, 0x6d, 0x61, 0x74, 0x68, 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x44, 0x0a, 0x0e,
0x69, 0x67, 0x68, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x42, 0x06, 0x0a, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x68, 0x69, 0x67, 0x68, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x19,
0x22, 0x0f, 0x0a, 0x0d, 0x4c, 0x69, 0x6e, 0x65, 0x42, 0x72, 0x65, 0x61, 0x6b, 0x4e, 0x6f, 0x64, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x6d, 0x65, 0x6d, 0x6f, 0x73, 0x2e, 0x61, 0x70, 0x69,
0x65, 0x22, 0x3f, 0x0a, 0x0d, 0x50, 0x61, 0x72, 0x61, 0x67, 0x72, 0x61, 0x70, 0x68, 0x4e, 0x6f, 0x2e, 0x76, 0x32, 0x2e, 0x48, 0x69, 0x67, 0x68, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x4e, 0x6f, 0x64,
0x64, 0x65, 0x12, 0x2e, 0x0a, 0x08, 0x63, 0x68, 0x69, 0x6c, 0x64, 0x72, 0x65, 0x6e, 0x18, 0x01, 0x65, 0x48, 0x00, 0x52, 0x0d, 0x68, 0x69, 0x67, 0x68, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x4e, 0x6f,
0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x6d, 0x65, 0x6d, 0x6f, 0x73, 0x2e, 0x61, 0x70, 0x69, 0x64, 0x65, 0x42, 0x06, 0x0a, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x22, 0x0f, 0x0a, 0x0d, 0x4c, 0x69,
0x2e, 0x76, 0x32, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x08, 0x63, 0x68, 0x69, 0x6c, 0x64, 0x72, 0x6e, 0x65, 0x42, 0x72, 0x65, 0x61, 0x6b, 0x4e, 0x6f, 0x64, 0x65, 0x22, 0x3f, 0x0a, 0x0d, 0x50,
0x65, 0x6e, 0x22, 0x45, 0x0a, 0x0d, 0x43, 0x6f, 0x64, 0x65, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x4e, 0x61, 0x72, 0x61, 0x67, 0x72, 0x61, 0x70, 0x68, 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x2e, 0x0a, 0x08,
0x6f, 0x64, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x18, 0x63, 0x68, 0x69, 0x6c, 0x64, 0x72, 0x65, 0x6e, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12,
0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x12, 0x2e, 0x6d, 0x65, 0x6d, 0x6f, 0x73, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4e, 0x6f,
0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x64, 0x65, 0x52, 0x08, 0x63, 0x68, 0x69, 0x6c, 0x64, 0x72, 0x65, 0x6e, 0x22, 0x45, 0x0a, 0x0d,
0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x22, 0x53, 0x0a, 0x0b, 0x48, 0x65, 0x61, 0x43, 0x6f, 0x64, 0x65, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x1a, 0x0a,
0x64, 0x69, 0x6e, 0x67, 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x65, 0x76, 0x65, 0x08, 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x2e, 0x08, 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6e,
0x0a, 0x08, 0x63, 0x68, 0x69, 0x6c, 0x64, 0x72, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74,
0x32, 0x12, 0x2e, 0x6d, 0x65, 0x6d, 0x6f, 0x73, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x65, 0x6e, 0x74, 0x22, 0x53, 0x0a, 0x0b, 0x48, 0x65, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x4e, 0x6f,
0x4e, 0x6f, 0x64, 0x65, 0x52, 0x08, 0x63, 0x68, 0x69, 0x6c, 0x64, 0x72, 0x65, 0x6e, 0x22, 0x2c, 0x64, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28,
0x0a, 0x12, 0x48, 0x6f, 0x72, 0x69, 0x7a, 0x6f, 0x6e, 0x74, 0x61, 0x6c, 0x52, 0x75, 0x6c, 0x65, 0x05, 0x52, 0x05, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x2e, 0x0a, 0x08, 0x63, 0x68, 0x69, 0x6c,
0x4e, 0x6f, 0x64, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x18, 0x01,
0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x22, 0x40, 0x0a, 0x0e,
0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x71, 0x75, 0x6f, 0x74, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x2e,
0x0a, 0x08, 0x63, 0x68, 0x69, 0x6c, 0x64, 0x72, 0x65, 0x6e, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b,
0x32, 0x12, 0x2e, 0x6d, 0x65, 0x6d, 0x6f, 0x73, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e,
0x4e, 0x6f, 0x64, 0x65, 0x52, 0x08, 0x63, 0x68, 0x69, 0x6c, 0x64, 0x72, 0x65, 0x6e, 0x22, 0x71,
0x0a, 0x0f, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x65, 0x64, 0x4c, 0x69, 0x73, 0x74, 0x4e, 0x6f, 0x64,
0x65, 0x12, 0x16, 0x0a, 0x06, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28,
0x09, 0x52, 0x06, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x69, 0x6e, 0x64,
0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x69, 0x6e, 0x64, 0x65, 0x6e,
0x74, 0x12, 0x2e, 0x0a, 0x08, 0x63, 0x68, 0x69, 0x6c, 0x64, 0x72, 0x65, 0x6e, 0x18, 0x03, 0x20,
0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x6d, 0x65, 0x6d, 0x6f, 0x73, 0x2e, 0x61, 0x70, 0x69, 0x2e,
0x76, 0x32, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x08, 0x63, 0x68, 0x69, 0x6c, 0x64, 0x72, 0x65,
0x6e, 0x22, 0x73, 0x0a, 0x11, 0x55, 0x6e, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x65, 0x64, 0x4c, 0x69,
0x73, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x79, 0x6d, 0x62, 0x6f, 0x6c,
0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x12, 0x16,
0x0a, 0x06, 0x69, 0x6e, 0x64, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06,
0x69, 0x6e, 0x64, 0x65, 0x6e, 0x74, 0x12, 0x2e, 0x0a, 0x08, 0x63, 0x68, 0x69, 0x6c, 0x64, 0x72,
0x65, 0x6e, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x6d, 0x65, 0x6d, 0x6f, 0x73,
0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x08, 0x63, 0x68,
0x69, 0x6c, 0x64, 0x72, 0x65, 0x6e, 0x22, 0x8a, 0x01, 0x0a, 0x0c, 0x54, 0x61, 0x73, 0x6b, 0x4c,
0x69, 0x73, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x79, 0x6d, 0x62, 0x6f,
0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x12,
0x16, 0x0a, 0x06, 0x69, 0x6e, 0x64, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52,
0x06, 0x69, 0x6e, 0x64, 0x65, 0x6e, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x6f, 0x6d, 0x70, 0x6c,
0x65, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x63, 0x6f, 0x6d, 0x70, 0x6c,
0x65, 0x74, 0x65, 0x12, 0x2e, 0x0a, 0x08, 0x63, 0x68, 0x69, 0x6c, 0x64, 0x72, 0x65, 0x6e, 0x18,
0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x6d, 0x65, 0x6d, 0x6f, 0x73, 0x2e, 0x61, 0x70,
0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x08, 0x63, 0x68, 0x69, 0x6c, 0x64,
0x72, 0x65, 0x6e, 0x22, 0x29, 0x0a, 0x0d, 0x4d, 0x61, 0x74, 0x68, 0x42, 0x6c, 0x6f, 0x63, 0x6b,
0x4e, 0x6f, 0x64, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18,
0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x22, 0x24,
0x0a, 0x08, 0x54, 0x65, 0x78, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f,
0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6e,
0x74, 0x65, 0x6e, 0x74, 0x22, 0x52, 0x0a, 0x08, 0x42, 0x6f, 0x6c, 0x64, 0x4e, 0x6f, 0x64, 0x65,
0x12, 0x16, 0x0a, 0x06, 0x73, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
0x52, 0x06, 0x73, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x12, 0x2e, 0x0a, 0x08, 0x63, 0x68, 0x69, 0x6c,
0x64, 0x72, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x6d, 0x65, 0x6d, 0x64, 0x72, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x6d, 0x65, 0x6d,
0x6f, 0x73, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x08, 0x6f, 0x73, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x08,
0x63, 0x68, 0x69, 0x6c, 0x64, 0x72, 0x65, 0x6e, 0x22, 0x3e, 0x0a, 0x0a, 0x49, 0x74, 0x61, 0x6c, 0x63, 0x68, 0x69, 0x6c, 0x64, 0x72, 0x65, 0x6e, 0x22, 0x2c, 0x0a, 0x12, 0x48, 0x6f, 0x72, 0x69,
0x7a, 0x6f, 0x6e, 0x74, 0x61, 0x6c, 0x52, 0x75, 0x6c, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x16,
0x0a, 0x06, 0x73, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06,
0x73, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x22, 0x40, 0x0a, 0x0e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x71,
0x75, 0x6f, 0x74, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x2e, 0x0a, 0x08, 0x63, 0x68, 0x69, 0x6c,
0x64, 0x72, 0x65, 0x6e, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x6d, 0x65, 0x6d,
0x6f, 0x73, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x08,
0x63, 0x68, 0x69, 0x6c, 0x64, 0x72, 0x65, 0x6e, 0x22, 0x71, 0x0a, 0x0f, 0x4f, 0x72, 0x64, 0x65,
0x72, 0x65, 0x64, 0x4c, 0x69, 0x73, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x6e,
0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6e, 0x75, 0x6d,
0x62, 0x65, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x69, 0x6e, 0x64, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20,
0x01, 0x28, 0x05, 0x52, 0x06, 0x69, 0x6e, 0x64, 0x65, 0x6e, 0x74, 0x12, 0x2e, 0x0a, 0x08, 0x63,
0x68, 0x69, 0x6c, 0x64, 0x72, 0x65, 0x6e, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e,
0x6d, 0x65, 0x6d, 0x6f, 0x73, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4e, 0x6f, 0x64,
0x65, 0x52, 0x08, 0x63, 0x68, 0x69, 0x6c, 0x64, 0x72, 0x65, 0x6e, 0x22, 0x73, 0x0a, 0x11, 0x55,
0x6e, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x65, 0x64, 0x4c, 0x69, 0x73, 0x74, 0x4e, 0x6f, 0x64, 0x65,
0x12, 0x16, 0x0a, 0x06, 0x73, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
0x52, 0x06, 0x73, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x12, 0x16, 0x0a, 0x06, 0x69, 0x6e, 0x64, 0x65,
0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x69, 0x6e, 0x64, 0x65, 0x6e, 0x74,
0x12, 0x2e, 0x0a, 0x08, 0x63, 0x68, 0x69, 0x6c, 0x64, 0x72, 0x65, 0x6e, 0x18, 0x03, 0x20, 0x03,
0x28, 0x0b, 0x32, 0x12, 0x2e, 0x6d, 0x65, 0x6d, 0x6f, 0x73, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76,
0x32, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x08, 0x63, 0x68, 0x69, 0x6c, 0x64, 0x72, 0x65, 0x6e,
0x22, 0x8a, 0x01, 0x0a, 0x0c, 0x54, 0x61, 0x73, 0x6b, 0x4c, 0x69, 0x73, 0x74, 0x4e, 0x6f, 0x64,
0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28,
0x09, 0x52, 0x06, 0x73, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x12, 0x16, 0x0a, 0x06, 0x69, 0x6e, 0x64,
0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x69, 0x6e, 0x64, 0x65, 0x6e,
0x74, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x18, 0x03, 0x20,
0x01, 0x28, 0x08, 0x52, 0x08, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x12, 0x2e, 0x0a,
0x08, 0x63, 0x68, 0x69, 0x6c, 0x64, 0x72, 0x65, 0x6e, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32,
0x12, 0x2e, 0x6d, 0x65, 0x6d, 0x6f, 0x73, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4e,
0x6f, 0x64, 0x65, 0x52, 0x08, 0x63, 0x68, 0x69, 0x6c, 0x64, 0x72, 0x65, 0x6e, 0x22, 0x29, 0x0a,
0x0d, 0x4d, 0x61, 0x74, 0x68, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x18,
0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x22, 0x8f, 0x01, 0x0a, 0x09, 0x54, 0x61, 0x62,
0x6c, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72,
0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x12, 0x1c,
0x0a, 0x09, 0x64, 0x65, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x65, 0x72, 0x18, 0x02, 0x20, 0x03, 0x28,
0x05, 0x52, 0x09, 0x64, 0x65, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x65, 0x72, 0x12, 0x2f, 0x0a, 0x04,
0x72, 0x6f, 0x77, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x6d, 0x65, 0x6d,
0x6f, 0x73, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x4e,
0x6f, 0x64, 0x65, 0x2e, 0x52, 0x6f, 0x77, 0x52, 0x04, 0x72, 0x6f, 0x77, 0x73, 0x1a, 0x1b, 0x0a,
0x03, 0x52, 0x6f, 0x77, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x65, 0x6c, 0x6c, 0x73, 0x18, 0x01, 0x20,
0x03, 0x28, 0x09, 0x52, 0x05, 0x63, 0x65, 0x6c, 0x6c, 0x73, 0x22, 0x24, 0x0a, 0x08, 0x54, 0x65,
0x78, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e,
0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74,
0x22, 0x52, 0x0a, 0x08, 0x42, 0x6f, 0x6c, 0x64, 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x16, 0x0a, 0x06,
0x73, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x79,
0x6d, 0x62, 0x6f, 0x6c, 0x12, 0x2e, 0x0a, 0x08, 0x63, 0x68, 0x69, 0x6c, 0x64, 0x72, 0x65, 0x6e,
0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x6d, 0x65, 0x6d, 0x6f, 0x73, 0x2e, 0x61,
0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x08, 0x63, 0x68, 0x69, 0x6c,
0x64, 0x72, 0x65, 0x6e, 0x22, 0x3e, 0x0a, 0x0a, 0x49, 0x74, 0x61, 0x6c, 0x69, 0x63, 0x4e, 0x6f,
0x64, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x18, 0x01, 0x20, 0x01,
0x28, 0x09, 0x52, 0x06, 0x73, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f,
0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6e,
0x74, 0x65, 0x6e, 0x74, 0x22, 0x42, 0x0a, 0x0e, 0x42, 0x6f, 0x6c, 0x64, 0x49, 0x74, 0x61, 0x6c,
0x69, 0x63, 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x69, 0x63, 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x79, 0x6d, 0x62, 0x6f, 0x6c,
0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x12, 0x18, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x12, 0x18,
0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52,
0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x22, 0x42, 0x0a, 0x0e, 0x42, 0x6f, 0x6c, 0x64, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x22, 0x24, 0x0a, 0x08, 0x43, 0x6f, 0x64, 0x65,
0x49, 0x74, 0x61, 0x6c, 0x69, 0x63, 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x79, 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18,
0x6d, 0x62, 0x6f, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x79, 0x6d, 0x62, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x22, 0x38,
0x6f, 0x6c, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x0a, 0x09, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x61,
0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x22, 0x24, 0x0a, 0x08, 0x6c, 0x74, 0x5f, 0x74, 0x65, 0x78, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61,
0x43, 0x6f, 0x64, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x6c, 0x74, 0x54, 0x65, 0x78, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x02, 0x20,
0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x22, 0x30, 0x0a, 0x08, 0x4c, 0x69, 0x6e, 0x6b,
0x4e, 0x6f, 0x64, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x65, 0x78, 0x74, 0x18, 0x01, 0x20, 0x01,
0x28, 0x09, 0x52, 0x04, 0x74, 0x65, 0x78, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18,
0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x22, 0x40, 0x0a, 0x0c, 0x41, 0x75,
0x74, 0x6f, 0x4c, 0x69, 0x6e, 0x6b, 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72,
0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x12, 0x1e, 0x0a, 0x0b,
0x69, 0x73, 0x5f, 0x72, 0x61, 0x77, 0x5f, 0x74, 0x65, 0x78, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28,
0x08, 0x52, 0x09, 0x69, 0x73, 0x52, 0x61, 0x77, 0x54, 0x65, 0x78, 0x74, 0x22, 0x23, 0x0a, 0x07,
0x54, 0x61, 0x67, 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65,
0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e,
0x74, 0x22, 0x2d, 0x0a, 0x11, 0x53, 0x74, 0x72, 0x69, 0x6b, 0x65, 0x74, 0x68, 0x72, 0x6f, 0x75,
0x67, 0x68, 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e,
0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74,
0x22, 0x2f, 0x0a, 0x15, 0x45, 0x73, 0x63, 0x61, 0x70, 0x69, 0x6e, 0x67, 0x43, 0x68, 0x61, 0x72,
0x61, 0x63, 0x74, 0x65, 0x72, 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x79, 0x6d,
0x62, 0x6f, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x79, 0x6d, 0x62, 0x6f,
0x6c, 0x22, 0x24, 0x0a, 0x08, 0x4d, 0x61, 0x74, 0x68, 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x18, 0x0a,
0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07,
0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x22, 0x29, 0x0a, 0x0d, 0x48, 0x69, 0x67, 0x68, 0x6c,
0x69, 0x67, 0x68, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74,
0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65,
0x6e, 0x74, 0x22, 0x38, 0x0a, 0x09, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x6e, 0x74, 0x2a, 0xfd, 0x02, 0x0a, 0x08, 0x4e, 0x6f, 0x64, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12,
0x19, 0x0a, 0x08, 0x61, 0x6c, 0x74, 0x5f, 0x74, 0x65, 0x78, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x14, 0x0a, 0x10, 0x4e, 0x4f, 0x44, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46,
0x09, 0x52, 0x07, 0x61, 0x6c, 0x74, 0x54, 0x65, 0x78, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0e, 0x0a, 0x0a, 0x4c, 0x49, 0x4e, 0x45, 0x5f, 0x42, 0x52,
0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x22, 0x30, 0x0a, 0x08, 0x45, 0x41, 0x4b, 0x10, 0x01, 0x12, 0x0d, 0x0a, 0x09, 0x50, 0x41, 0x52, 0x41, 0x47, 0x52, 0x41,
0x4c, 0x69, 0x6e, 0x6b, 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x65, 0x78, 0x74, 0x50, 0x48, 0x10, 0x02, 0x12, 0x0e, 0x0a, 0x0a, 0x43, 0x4f, 0x44, 0x45, 0x5f, 0x42, 0x4c, 0x4f,
0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x65, 0x78, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x43, 0x4b, 0x10, 0x03, 0x12, 0x0b, 0x0a, 0x07, 0x48, 0x45, 0x41, 0x44, 0x49, 0x4e, 0x47, 0x10,
0x75, 0x72, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x22, 0x40, 0x04, 0x12, 0x13, 0x0a, 0x0f, 0x48, 0x4f, 0x52, 0x49, 0x5a, 0x4f, 0x4e, 0x54, 0x41, 0x4c, 0x5f,
0x0a, 0x0c, 0x41, 0x75, 0x74, 0x6f, 0x4c, 0x69, 0x6e, 0x6b, 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x10, 0x52, 0x55, 0x4c, 0x45, 0x10, 0x05, 0x12, 0x0e, 0x0a, 0x0a, 0x42, 0x4c, 0x4f, 0x43, 0x4b, 0x51,
0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x55, 0x4f, 0x54, 0x45, 0x10, 0x06, 0x12, 0x10, 0x0a, 0x0c, 0x4f, 0x52, 0x44, 0x45, 0x52, 0x45,
0x12, 0x1e, 0x0a, 0x0b, 0x69, 0x73, 0x5f, 0x72, 0x61, 0x77, 0x5f, 0x74, 0x65, 0x78, 0x74, 0x18, 0x44, 0x5f, 0x4c, 0x49, 0x53, 0x54, 0x10, 0x07, 0x12, 0x12, 0x0a, 0x0e, 0x55, 0x4e, 0x4f, 0x52,
0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x69, 0x73, 0x52, 0x61, 0x77, 0x54, 0x65, 0x78, 0x74, 0x44, 0x45, 0x52, 0x45, 0x44, 0x5f, 0x4c, 0x49, 0x53, 0x54, 0x10, 0x08, 0x12, 0x0d, 0x0a, 0x09,
0x22, 0x23, 0x0a, 0x07, 0x54, 0x61, 0x67, 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x54, 0x41, 0x53, 0x4b, 0x5f, 0x4c, 0x49, 0x53, 0x54, 0x10, 0x09, 0x12, 0x0e, 0x0a, 0x0a, 0x4d,
0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x41, 0x54, 0x48, 0x5f, 0x42, 0x4c, 0x4f, 0x43, 0x4b, 0x10, 0x0a, 0x12, 0x09, 0x0a, 0x05, 0x54,
0x6e, 0x74, 0x65, 0x6e, 0x74, 0x22, 0x2d, 0x0a, 0x11, 0x53, 0x74, 0x72, 0x69, 0x6b, 0x65, 0x74, 0x41, 0x42, 0x4c, 0x45, 0x10, 0x0b, 0x12, 0x08, 0x0a, 0x04, 0x54, 0x45, 0x58, 0x54, 0x10, 0x0c,
0x68, 0x72, 0x6f, 0x75, 0x67, 0x68, 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x12, 0x08, 0x0a, 0x04, 0x42, 0x4f, 0x4c, 0x44, 0x10, 0x0d, 0x12, 0x0a, 0x0a, 0x06, 0x49, 0x54,
0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x41, 0x4c, 0x49, 0x43, 0x10, 0x0e, 0x12, 0x0f, 0x0a, 0x0b, 0x42, 0x4f, 0x4c, 0x44, 0x5f, 0x49,
0x74, 0x65, 0x6e, 0x74, 0x22, 0x2f, 0x0a, 0x15, 0x45, 0x73, 0x63, 0x61, 0x70, 0x69, 0x6e, 0x67, 0x54, 0x41, 0x4c, 0x49, 0x43, 0x10, 0x0f, 0x12, 0x08, 0x0a, 0x04, 0x43, 0x4f, 0x44, 0x45, 0x10,
0x43, 0x68, 0x61, 0x72, 0x61, 0x63, 0x74, 0x65, 0x72, 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x16, 0x0a, 0x10, 0x12, 0x09, 0x0a, 0x05, 0x49, 0x4d, 0x41, 0x47, 0x45, 0x10, 0x11, 0x12, 0x08, 0x0a, 0x04,
0x06, 0x73, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x4c, 0x49, 0x4e, 0x4b, 0x10, 0x12, 0x12, 0x0d, 0x0a, 0x09, 0x41, 0x55, 0x54, 0x4f, 0x5f, 0x4c,
0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x22, 0x24, 0x0a, 0x08, 0x4d, 0x61, 0x74, 0x68, 0x4e, 0x6f, 0x64, 0x49, 0x4e, 0x4b, 0x10, 0x13, 0x12, 0x07, 0x0a, 0x03, 0x54, 0x41, 0x47, 0x10, 0x14, 0x12, 0x11,
0x65, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x0a, 0x0d, 0x53, 0x54, 0x52, 0x49, 0x4b, 0x45, 0x54, 0x48, 0x52, 0x4f, 0x55, 0x47, 0x48, 0x10,
0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x22, 0x29, 0x0a, 0x0d, 0x48, 0x15, 0x12, 0x16, 0x0a, 0x12, 0x45, 0x53, 0x43, 0x41, 0x50, 0x49, 0x4e, 0x47, 0x5f, 0x43, 0x48,
0x69, 0x67, 0x68, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x41, 0x52, 0x41, 0x43, 0x54, 0x45, 0x52, 0x10, 0x16, 0x12, 0x08, 0x0a, 0x04, 0x4d, 0x41, 0x54,
0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x48, 0x10, 0x17, 0x12, 0x0d, 0x0a, 0x09, 0x48, 0x49, 0x47, 0x48, 0x4c, 0x49, 0x47, 0x48, 0x54,
0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2a, 0xf2, 0x02, 0x0a, 0x08, 0x4e, 0x6f, 0x64, 0x65, 0x54, 0x10, 0x18, 0x32, 0x88, 0x01, 0x0a, 0x0f, 0x4d, 0x61, 0x72, 0x6b, 0x64, 0x6f, 0x77, 0x6e, 0x53,
0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, 0x10, 0x4e, 0x4f, 0x44, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x75, 0x0a, 0x0d, 0x50, 0x61, 0x72, 0x73, 0x65, 0x4d,
0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0e, 0x0a, 0x0a, 0x4c, 0x49, 0x4e, 0x61, 0x72, 0x6b, 0x64, 0x6f, 0x77, 0x6e, 0x12, 0x22, 0x2e, 0x6d, 0x65, 0x6d, 0x6f, 0x73, 0x2e,
0x45, 0x5f, 0x42, 0x52, 0x45, 0x41, 0x4b, 0x10, 0x01, 0x12, 0x0d, 0x0a, 0x09, 0x50, 0x41, 0x52, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x61, 0x72, 0x73, 0x65, 0x4d, 0x61, 0x72, 0x6b,
0x41, 0x47, 0x52, 0x41, 0x50, 0x48, 0x10, 0x02, 0x12, 0x0e, 0x0a, 0x0a, 0x43, 0x4f, 0x44, 0x45, 0x64, 0x6f, 0x77, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x6d, 0x65,
0x5f, 0x42, 0x4c, 0x4f, 0x43, 0x4b, 0x10, 0x03, 0x12, 0x0b, 0x0a, 0x07, 0x48, 0x45, 0x41, 0x44, 0x6d, 0x6f, 0x73, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x61, 0x72, 0x73, 0x65,
0x49, 0x4e, 0x47, 0x10, 0x04, 0x12, 0x13, 0x0a, 0x0f, 0x48, 0x4f, 0x52, 0x49, 0x5a, 0x4f, 0x4e, 0x4d, 0x61, 0x72, 0x6b, 0x64, 0x6f, 0x77, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
0x54, 0x41, 0x4c, 0x5f, 0x52, 0x55, 0x4c, 0x45, 0x10, 0x05, 0x12, 0x0e, 0x0a, 0x0a, 0x42, 0x4c, 0x22, 0x1b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x15, 0x3a, 0x01, 0x2a, 0x22, 0x10, 0x2f, 0x61, 0x70,
0x4f, 0x43, 0x4b, 0x51, 0x55, 0x4f, 0x54, 0x45, 0x10, 0x06, 0x12, 0x10, 0x0a, 0x0c, 0x4f, 0x52, 0x69, 0x2f, 0x76, 0x32, 0x2f, 0x6d, 0x61, 0x72, 0x6b, 0x64, 0x6f, 0x77, 0x6e, 0x42, 0xac, 0x01,
0x44, 0x45, 0x52, 0x45, 0x44, 0x5f, 0x4c, 0x49, 0x53, 0x54, 0x10, 0x07, 0x12, 0x12, 0x0a, 0x0e, 0x0a, 0x10, 0x63, 0x6f, 0x6d, 0x2e, 0x6d, 0x65, 0x6d, 0x6f, 0x73, 0x2e, 0x61, 0x70, 0x69, 0x2e,
0x55, 0x4e, 0x4f, 0x52, 0x44, 0x45, 0x52, 0x45, 0x44, 0x5f, 0x4c, 0x49, 0x53, 0x54, 0x10, 0x08, 0x76, 0x32, 0x42, 0x14, 0x4d, 0x61, 0x72, 0x6b, 0x64, 0x6f, 0x77, 0x6e, 0x53, 0x65, 0x72, 0x76,
0x12, 0x0d, 0x0a, 0x09, 0x54, 0x41, 0x53, 0x4b, 0x5f, 0x4c, 0x49, 0x53, 0x54, 0x10, 0x09, 0x12, 0x69, 0x63, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x30, 0x67, 0x69, 0x74, 0x68,
0x0e, 0x0a, 0x0a, 0x4d, 0x41, 0x54, 0x48, 0x5f, 0x42, 0x4c, 0x4f, 0x43, 0x4b, 0x10, 0x0a, 0x12, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x75, 0x73, 0x65, 0x6d, 0x65, 0x6d, 0x6f, 0x73, 0x2f,
0x08, 0x0a, 0x04, 0x54, 0x45, 0x58, 0x54, 0x10, 0x0b, 0x12, 0x08, 0x0a, 0x04, 0x42, 0x4f, 0x4c, 0x6d, 0x65, 0x6d, 0x6f, 0x73, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x65, 0x6e, 0x2f,
0x44, 0x10, 0x0c, 0x12, 0x0a, 0x0a, 0x06, 0x49, 0x54, 0x41, 0x4c, 0x49, 0x43, 0x10, 0x0d, 0x12, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x32, 0x3b, 0x61, 0x70, 0x69, 0x76, 0x32, 0xa2, 0x02, 0x03, 0x4d,
0x0f, 0x0a, 0x0b, 0x42, 0x4f, 0x4c, 0x44, 0x5f, 0x49, 0x54, 0x41, 0x4c, 0x49, 0x43, 0x10, 0x0e, 0x41, 0x58, 0xaa, 0x02, 0x0c, 0x4d, 0x65, 0x6d, 0x6f, 0x73, 0x2e, 0x41, 0x70, 0x69, 0x2e, 0x56,
0x12, 0x08, 0x0a, 0x04, 0x43, 0x4f, 0x44, 0x45, 0x10, 0x0f, 0x12, 0x09, 0x0a, 0x05, 0x49, 0x4d, 0x32, 0xca, 0x02, 0x0c, 0x4d, 0x65, 0x6d, 0x6f, 0x73, 0x5c, 0x41, 0x70, 0x69, 0x5c, 0x56, 0x32,
0x41, 0x47, 0x45, 0x10, 0x10, 0x12, 0x08, 0x0a, 0x04, 0x4c, 0x49, 0x4e, 0x4b, 0x10, 0x11, 0x12, 0xe2, 0x02, 0x18, 0x4d, 0x65, 0x6d, 0x6f, 0x73, 0x5c, 0x41, 0x70, 0x69, 0x5c, 0x56, 0x32, 0x5c,
0x0d, 0x0a, 0x09, 0x41, 0x55, 0x54, 0x4f, 0x5f, 0x4c, 0x49, 0x4e, 0x4b, 0x10, 0x12, 0x12, 0x07, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x0e, 0x4d, 0x65,
0x0a, 0x03, 0x54, 0x41, 0x47, 0x10, 0x13, 0x12, 0x11, 0x0a, 0x0d, 0x53, 0x54, 0x52, 0x49, 0x4b, 0x6d, 0x6f, 0x73, 0x3a, 0x3a, 0x41, 0x70, 0x69, 0x3a, 0x3a, 0x56, 0x32, 0x62, 0x06, 0x70, 0x72,
0x45, 0x54, 0x48, 0x52, 0x4f, 0x55, 0x47, 0x48, 0x10, 0x14, 0x12, 0x16, 0x0a, 0x12, 0x45, 0x53, 0x6f, 0x74, 0x6f, 0x33,
0x43, 0x41, 0x50, 0x49, 0x4e, 0x47, 0x5f, 0x43, 0x48, 0x41, 0x52, 0x41, 0x43, 0x54, 0x45, 0x52,
0x10, 0x15, 0x12, 0x08, 0x0a, 0x04, 0x4d, 0x41, 0x54, 0x48, 0x10, 0x16, 0x12, 0x0d, 0x0a, 0x09,
0x48, 0x49, 0x47, 0x48, 0x4c, 0x49, 0x47, 0x48, 0x54, 0x10, 0x17, 0x32, 0x88, 0x01, 0x0a, 0x0f,
0x4d, 0x61, 0x72, 0x6b, 0x64, 0x6f, 0x77, 0x6e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12,
0x75, 0x0a, 0x0d, 0x50, 0x61, 0x72, 0x73, 0x65, 0x4d, 0x61, 0x72, 0x6b, 0x64, 0x6f, 0x77, 0x6e,
0x12, 0x22, 0x2e, 0x6d, 0x65, 0x6d, 0x6f, 0x73, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e,
0x50, 0x61, 0x72, 0x73, 0x65, 0x4d, 0x61, 0x72, 0x6b, 0x64, 0x6f, 0x77, 0x6e, 0x52, 0x65, 0x71,
0x75, 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x6d, 0x65, 0x6d, 0x6f, 0x73, 0x2e, 0x61, 0x70, 0x69,
0x2e, 0x76, 0x32, 0x2e, 0x50, 0x61, 0x72, 0x73, 0x65, 0x4d, 0x61, 0x72, 0x6b, 0x64, 0x6f, 0x77,
0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1b, 0x82, 0xd3, 0xe4, 0x93, 0x02,
0x15, 0x3a, 0x01, 0x2a, 0x22, 0x10, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x32, 0x2f, 0x6d, 0x61,
0x72, 0x6b, 0x64, 0x6f, 0x77, 0x6e, 0x42, 0xac, 0x01, 0x0a, 0x10, 0x63, 0x6f, 0x6d, 0x2e, 0x6d,
0x65, 0x6d, 0x6f, 0x73, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x42, 0x14, 0x4d, 0x61, 0x72,
0x6b, 0x64, 0x6f, 0x77, 0x6e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x50, 0x72, 0x6f, 0x74,
0x6f, 0x50, 0x01, 0x5a, 0x30, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f,
0x75, 0x73, 0x65, 0x6d, 0x65, 0x6d, 0x6f, 0x73, 0x2f, 0x6d, 0x65, 0x6d, 0x6f, 0x73, 0x2f, 0x70,
0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x65, 0x6e, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x32, 0x3b,
0x61, 0x70, 0x69, 0x76, 0x32, 0xa2, 0x02, 0x03, 0x4d, 0x41, 0x58, 0xaa, 0x02, 0x0c, 0x4d, 0x65,
0x6d, 0x6f, 0x73, 0x2e, 0x41, 0x70, 0x69, 0x2e, 0x56, 0x32, 0xca, 0x02, 0x0c, 0x4d, 0x65, 0x6d,
0x6f, 0x73, 0x5c, 0x41, 0x70, 0x69, 0x5c, 0x56, 0x32, 0xe2, 0x02, 0x18, 0x4d, 0x65, 0x6d, 0x6f,
0x73, 0x5c, 0x41, 0x70, 0x69, 0x5c, 0x56, 0x32, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61,
0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x0e, 0x4d, 0x65, 0x6d, 0x6f, 0x73, 0x3a, 0x3a, 0x41, 0x70,
0x69, 0x3a, 0x3a, 0x56, 0x32, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
} }
var ( var (
...@@ -2068,7 +2209,7 @@ func file_api_v2_markdown_service_proto_rawDescGZIP() []byte { ...@@ -2068,7 +2209,7 @@ func file_api_v2_markdown_service_proto_rawDescGZIP() []byte {
} }
var file_api_v2_markdown_service_proto_enumTypes = make([]protoimpl.EnumInfo, 1) var file_api_v2_markdown_service_proto_enumTypes = make([]protoimpl.EnumInfo, 1)
var file_api_v2_markdown_service_proto_msgTypes = make([]protoimpl.MessageInfo, 26) var file_api_v2_markdown_service_proto_msgTypes = make([]protoimpl.MessageInfo, 28)
var file_api_v2_markdown_service_proto_goTypes = []interface{}{ var file_api_v2_markdown_service_proto_goTypes = []interface{}{
(NodeType)(0), // 0: memos.api.v2.NodeType (NodeType)(0), // 0: memos.api.v2.NodeType
(*ParseMarkdownRequest)(nil), // 1: memos.api.v2.ParseMarkdownRequest (*ParseMarkdownRequest)(nil), // 1: memos.api.v2.ParseMarkdownRequest
...@@ -2084,19 +2225,21 @@ var file_api_v2_markdown_service_proto_goTypes = []interface{}{ ...@@ -2084,19 +2225,21 @@ var file_api_v2_markdown_service_proto_goTypes = []interface{}{
(*UnorderedListNode)(nil), // 11: memos.api.v2.UnorderedListNode (*UnorderedListNode)(nil), // 11: memos.api.v2.UnorderedListNode
(*TaskListNode)(nil), // 12: memos.api.v2.TaskListNode (*TaskListNode)(nil), // 12: memos.api.v2.TaskListNode
(*MathBlockNode)(nil), // 13: memos.api.v2.MathBlockNode (*MathBlockNode)(nil), // 13: memos.api.v2.MathBlockNode
(*TextNode)(nil), // 14: memos.api.v2.TextNode (*TableNode)(nil), // 14: memos.api.v2.TableNode
(*BoldNode)(nil), // 15: memos.api.v2.BoldNode (*TextNode)(nil), // 15: memos.api.v2.TextNode
(*ItalicNode)(nil), // 16: memos.api.v2.ItalicNode (*BoldNode)(nil), // 16: memos.api.v2.BoldNode
(*BoldItalicNode)(nil), // 17: memos.api.v2.BoldItalicNode (*ItalicNode)(nil), // 17: memos.api.v2.ItalicNode
(*CodeNode)(nil), // 18: memos.api.v2.CodeNode (*BoldItalicNode)(nil), // 18: memos.api.v2.BoldItalicNode
(*ImageNode)(nil), // 19: memos.api.v2.ImageNode (*CodeNode)(nil), // 19: memos.api.v2.CodeNode
(*LinkNode)(nil), // 20: memos.api.v2.LinkNode (*ImageNode)(nil), // 20: memos.api.v2.ImageNode
(*AutoLinkNode)(nil), // 21: memos.api.v2.AutoLinkNode (*LinkNode)(nil), // 21: memos.api.v2.LinkNode
(*TagNode)(nil), // 22: memos.api.v2.TagNode (*AutoLinkNode)(nil), // 22: memos.api.v2.AutoLinkNode
(*StrikethroughNode)(nil), // 23: memos.api.v2.StrikethroughNode (*TagNode)(nil), // 23: memos.api.v2.TagNode
(*EscapingCharacterNode)(nil), // 24: memos.api.v2.EscapingCharacterNode (*StrikethroughNode)(nil), // 24: memos.api.v2.StrikethroughNode
(*MathNode)(nil), // 25: memos.api.v2.MathNode (*EscapingCharacterNode)(nil), // 25: memos.api.v2.EscapingCharacterNode
(*HighlightNode)(nil), // 26: memos.api.v2.HighlightNode (*MathNode)(nil), // 26: memos.api.v2.MathNode
(*HighlightNode)(nil), // 27: memos.api.v2.HighlightNode
(*TableNode_Row)(nil), // 28: memos.api.v2.TableNode.Row
} }
var file_api_v2_markdown_service_proto_depIdxs = []int32{ var file_api_v2_markdown_service_proto_depIdxs = []int32{
3, // 0: memos.api.v2.ParseMarkdownResponse.nodes:type_name -> memos.api.v2.Node 3, // 0: memos.api.v2.ParseMarkdownResponse.nodes:type_name -> memos.api.v2.Node
...@@ -2111,33 +2254,35 @@ var file_api_v2_markdown_service_proto_depIdxs = []int32{ ...@@ -2111,33 +2254,35 @@ var file_api_v2_markdown_service_proto_depIdxs = []int32{
11, // 9: memos.api.v2.Node.unordered_list_node:type_name -> memos.api.v2.UnorderedListNode 11, // 9: memos.api.v2.Node.unordered_list_node:type_name -> memos.api.v2.UnorderedListNode
12, // 10: memos.api.v2.Node.task_list_node:type_name -> memos.api.v2.TaskListNode 12, // 10: memos.api.v2.Node.task_list_node:type_name -> memos.api.v2.TaskListNode
13, // 11: memos.api.v2.Node.math_block_node:type_name -> memos.api.v2.MathBlockNode 13, // 11: memos.api.v2.Node.math_block_node:type_name -> memos.api.v2.MathBlockNode
14, // 12: memos.api.v2.Node.text_node:type_name -> memos.api.v2.TextNode 14, // 12: memos.api.v2.Node.table_node:type_name -> memos.api.v2.TableNode
15, // 13: memos.api.v2.Node.bold_node:type_name -> memos.api.v2.BoldNode 15, // 13: memos.api.v2.Node.text_node:type_name -> memos.api.v2.TextNode
16, // 14: memos.api.v2.Node.italic_node:type_name -> memos.api.v2.ItalicNode 16, // 14: memos.api.v2.Node.bold_node:type_name -> memos.api.v2.BoldNode
17, // 15: memos.api.v2.Node.bold_italic_node:type_name -> memos.api.v2.BoldItalicNode 17, // 15: memos.api.v2.Node.italic_node:type_name -> memos.api.v2.ItalicNode
18, // 16: memos.api.v2.Node.code_node:type_name -> memos.api.v2.CodeNode 18, // 16: memos.api.v2.Node.bold_italic_node:type_name -> memos.api.v2.BoldItalicNode
19, // 17: memos.api.v2.Node.image_node:type_name -> memos.api.v2.ImageNode 19, // 17: memos.api.v2.Node.code_node:type_name -> memos.api.v2.CodeNode
20, // 18: memos.api.v2.Node.link_node:type_name -> memos.api.v2.LinkNode 20, // 18: memos.api.v2.Node.image_node:type_name -> memos.api.v2.ImageNode
21, // 19: memos.api.v2.Node.auto_link_node:type_name -> memos.api.v2.AutoLinkNode 21, // 19: memos.api.v2.Node.link_node:type_name -> memos.api.v2.LinkNode
22, // 20: memos.api.v2.Node.tag_node:type_name -> memos.api.v2.TagNode 22, // 20: memos.api.v2.Node.auto_link_node:type_name -> memos.api.v2.AutoLinkNode
23, // 21: memos.api.v2.Node.strikethrough_node:type_name -> memos.api.v2.StrikethroughNode 23, // 21: memos.api.v2.Node.tag_node:type_name -> memos.api.v2.TagNode
24, // 22: memos.api.v2.Node.escaping_character_node:type_name -> memos.api.v2.EscapingCharacterNode 24, // 22: memos.api.v2.Node.strikethrough_node:type_name -> memos.api.v2.StrikethroughNode
25, // 23: memos.api.v2.Node.math_node:type_name -> memos.api.v2.MathNode 25, // 23: memos.api.v2.Node.escaping_character_node:type_name -> memos.api.v2.EscapingCharacterNode
26, // 24: memos.api.v2.Node.highlight_node:type_name -> memos.api.v2.HighlightNode 26, // 24: memos.api.v2.Node.math_node:type_name -> memos.api.v2.MathNode
3, // 25: memos.api.v2.ParagraphNode.children:type_name -> memos.api.v2.Node 27, // 25: memos.api.v2.Node.highlight_node:type_name -> memos.api.v2.HighlightNode
3, // 26: memos.api.v2.HeadingNode.children:type_name -> memos.api.v2.Node 3, // 26: memos.api.v2.ParagraphNode.children:type_name -> memos.api.v2.Node
3, // 27: memos.api.v2.BlockquoteNode.children:type_name -> memos.api.v2.Node 3, // 27: memos.api.v2.HeadingNode.children:type_name -> memos.api.v2.Node
3, // 28: memos.api.v2.OrderedListNode.children:type_name -> memos.api.v2.Node 3, // 28: memos.api.v2.BlockquoteNode.children:type_name -> memos.api.v2.Node
3, // 29: memos.api.v2.UnorderedListNode.children:type_name -> memos.api.v2.Node 3, // 29: memos.api.v2.OrderedListNode.children:type_name -> memos.api.v2.Node
3, // 30: memos.api.v2.TaskListNode.children:type_name -> memos.api.v2.Node 3, // 30: memos.api.v2.UnorderedListNode.children:type_name -> memos.api.v2.Node
3, // 31: memos.api.v2.BoldNode.children:type_name -> memos.api.v2.Node 3, // 31: memos.api.v2.TaskListNode.children:type_name -> memos.api.v2.Node
1, // 32: memos.api.v2.MarkdownService.ParseMarkdown:input_type -> memos.api.v2.ParseMarkdownRequest 28, // 32: memos.api.v2.TableNode.rows:type_name -> memos.api.v2.TableNode.Row
2, // 33: memos.api.v2.MarkdownService.ParseMarkdown:output_type -> memos.api.v2.ParseMarkdownResponse 3, // 33: memos.api.v2.BoldNode.children:type_name -> memos.api.v2.Node
33, // [33:34] is the sub-list for method output_type 1, // 34: memos.api.v2.MarkdownService.ParseMarkdown:input_type -> memos.api.v2.ParseMarkdownRequest
32, // [32:33] is the sub-list for method input_type 2, // 35: memos.api.v2.MarkdownService.ParseMarkdown:output_type -> memos.api.v2.ParseMarkdownResponse
32, // [32:32] is the sub-list for extension type_name 35, // [35:36] is the sub-list for method output_type
32, // [32:32] is the sub-list for extension extendee 34, // [34:35] is the sub-list for method input_type
0, // [0:32] is the sub-list for field type_name 34, // [34:34] is the sub-list for extension type_name
34, // [34:34] is the sub-list for extension extendee
0, // [0:34] is the sub-list for field type_name
} }
func init() { file_api_v2_markdown_service_proto_init() } func init() { file_api_v2_markdown_service_proto_init() }
...@@ -2303,7 +2448,7 @@ func file_api_v2_markdown_service_proto_init() { ...@@ -2303,7 +2448,7 @@ func file_api_v2_markdown_service_proto_init() {
} }
} }
file_api_v2_markdown_service_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { file_api_v2_markdown_service_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*TextNode); i { switch v := v.(*TableNode); i {
case 0: case 0:
return &v.state return &v.state
case 1: case 1:
...@@ -2315,7 +2460,7 @@ func file_api_v2_markdown_service_proto_init() { ...@@ -2315,7 +2460,7 @@ func file_api_v2_markdown_service_proto_init() {
} }
} }
file_api_v2_markdown_service_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { file_api_v2_markdown_service_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*BoldNode); i { switch v := v.(*TextNode); i {
case 0: case 0:
return &v.state return &v.state
case 1: case 1:
...@@ -2327,7 +2472,7 @@ func file_api_v2_markdown_service_proto_init() { ...@@ -2327,7 +2472,7 @@ func file_api_v2_markdown_service_proto_init() {
} }
} }
file_api_v2_markdown_service_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { file_api_v2_markdown_service_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ItalicNode); i { switch v := v.(*BoldNode); i {
case 0: case 0:
return &v.state return &v.state
case 1: case 1:
...@@ -2339,7 +2484,7 @@ func file_api_v2_markdown_service_proto_init() { ...@@ -2339,7 +2484,7 @@ func file_api_v2_markdown_service_proto_init() {
} }
} }
file_api_v2_markdown_service_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { file_api_v2_markdown_service_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*BoldItalicNode); i { switch v := v.(*ItalicNode); i {
case 0: case 0:
return &v.state return &v.state
case 1: case 1:
...@@ -2351,7 +2496,7 @@ func file_api_v2_markdown_service_proto_init() { ...@@ -2351,7 +2496,7 @@ func file_api_v2_markdown_service_proto_init() {
} }
} }
file_api_v2_markdown_service_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { file_api_v2_markdown_service_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*CodeNode); i { switch v := v.(*BoldItalicNode); i {
case 0: case 0:
return &v.state return &v.state
case 1: case 1:
...@@ -2363,7 +2508,7 @@ func file_api_v2_markdown_service_proto_init() { ...@@ -2363,7 +2508,7 @@ func file_api_v2_markdown_service_proto_init() {
} }
} }
file_api_v2_markdown_service_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { file_api_v2_markdown_service_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ImageNode); i { switch v := v.(*CodeNode); i {
case 0: case 0:
return &v.state return &v.state
case 1: case 1:
...@@ -2375,7 +2520,7 @@ func file_api_v2_markdown_service_proto_init() { ...@@ -2375,7 +2520,7 @@ func file_api_v2_markdown_service_proto_init() {
} }
} }
file_api_v2_markdown_service_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { file_api_v2_markdown_service_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*LinkNode); i { switch v := v.(*ImageNode); i {
case 0: case 0:
return &v.state return &v.state
case 1: case 1:
...@@ -2387,7 +2532,7 @@ func file_api_v2_markdown_service_proto_init() { ...@@ -2387,7 +2532,7 @@ func file_api_v2_markdown_service_proto_init() {
} }
} }
file_api_v2_markdown_service_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { file_api_v2_markdown_service_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*AutoLinkNode); i { switch v := v.(*LinkNode); i {
case 0: case 0:
return &v.state return &v.state
case 1: case 1:
...@@ -2399,7 +2544,7 @@ func file_api_v2_markdown_service_proto_init() { ...@@ -2399,7 +2544,7 @@ func file_api_v2_markdown_service_proto_init() {
} }
} }
file_api_v2_markdown_service_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { file_api_v2_markdown_service_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*TagNode); i { switch v := v.(*AutoLinkNode); i {
case 0: case 0:
return &v.state return &v.state
case 1: case 1:
...@@ -2411,7 +2556,7 @@ func file_api_v2_markdown_service_proto_init() { ...@@ -2411,7 +2556,7 @@ func file_api_v2_markdown_service_proto_init() {
} }
} }
file_api_v2_markdown_service_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} { file_api_v2_markdown_service_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*StrikethroughNode); i { switch v := v.(*TagNode); i {
case 0: case 0:
return &v.state return &v.state
case 1: case 1:
...@@ -2423,7 +2568,7 @@ func file_api_v2_markdown_service_proto_init() { ...@@ -2423,7 +2568,7 @@ func file_api_v2_markdown_service_proto_init() {
} }
} }
file_api_v2_markdown_service_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} { file_api_v2_markdown_service_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*EscapingCharacterNode); i { switch v := v.(*StrikethroughNode); i {
case 0: case 0:
return &v.state return &v.state
case 1: case 1:
...@@ -2435,7 +2580,7 @@ func file_api_v2_markdown_service_proto_init() { ...@@ -2435,7 +2580,7 @@ func file_api_v2_markdown_service_proto_init() {
} }
} }
file_api_v2_markdown_service_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} { file_api_v2_markdown_service_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*MathNode); i { switch v := v.(*EscapingCharacterNode); i {
case 0: case 0:
return &v.state return &v.state
case 1: case 1:
...@@ -2447,6 +2592,18 @@ func file_api_v2_markdown_service_proto_init() { ...@@ -2447,6 +2592,18 @@ func file_api_v2_markdown_service_proto_init() {
} }
} }
file_api_v2_markdown_service_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} { file_api_v2_markdown_service_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*MathNode); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_api_v2_markdown_service_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*HighlightNode); i { switch v := v.(*HighlightNode); i {
case 0: case 0:
return &v.state return &v.state
...@@ -2458,6 +2615,18 @@ func file_api_v2_markdown_service_proto_init() { ...@@ -2458,6 +2615,18 @@ func file_api_v2_markdown_service_proto_init() {
return nil return nil
} }
} }
file_api_v2_markdown_service_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*TableNode_Row); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
} }
file_api_v2_markdown_service_proto_msgTypes[2].OneofWrappers = []interface{}{ file_api_v2_markdown_service_proto_msgTypes[2].OneofWrappers = []interface{}{
(*Node_LineBreakNode)(nil), (*Node_LineBreakNode)(nil),
...@@ -2470,6 +2639,7 @@ func file_api_v2_markdown_service_proto_init() { ...@@ -2470,6 +2639,7 @@ func file_api_v2_markdown_service_proto_init() {
(*Node_UnorderedListNode)(nil), (*Node_UnorderedListNode)(nil),
(*Node_TaskListNode)(nil), (*Node_TaskListNode)(nil),
(*Node_MathBlockNode)(nil), (*Node_MathBlockNode)(nil),
(*Node_TableNode)(nil),
(*Node_TextNode)(nil), (*Node_TextNode)(nil),
(*Node_BoldNode)(nil), (*Node_BoldNode)(nil),
(*Node_ItalicNode)(nil), (*Node_ItalicNode)(nil),
...@@ -2490,7 +2660,7 @@ func file_api_v2_markdown_service_proto_init() { ...@@ -2490,7 +2660,7 @@ func file_api_v2_markdown_service_proto_init() {
GoPackagePath: reflect.TypeOf(x{}).PkgPath(), GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
RawDescriptor: file_api_v2_markdown_service_proto_rawDesc, RawDescriptor: file_api_v2_markdown_service_proto_rawDesc,
NumEnums: 1, NumEnums: 1,
NumMessages: 26, NumMessages: 28,
NumExtensions: 0, NumExtensions: 0,
NumServices: 1, NumServices: 1,
}, },
......
...@@ -18,6 +18,7 @@ import { ...@@ -18,6 +18,7 @@ import {
OrderedListNode, OrderedListNode,
ParagraphNode, ParagraphNode,
StrikethroughNode, StrikethroughNode,
TableNode,
TagNode, TagNode,
TaskListNode, TaskListNode,
TextNode, TextNode,
...@@ -40,6 +41,7 @@ import Math from "./Math"; ...@@ -40,6 +41,7 @@ import Math from "./Math";
import OrderedList from "./OrderedList"; import OrderedList from "./OrderedList";
import Paragraph from "./Paragraph"; import Paragraph from "./Paragraph";
import Strikethrough from "./Strikethrough"; import Strikethrough from "./Strikethrough";
import Table from "./Table";
import Tag from "./Tag"; import Tag from "./Tag";
import TaskList from "./TaskList"; import TaskList from "./TaskList";
import Text from "./Text"; import Text from "./Text";
...@@ -72,6 +74,8 @@ const Renderer: React.FC<Props> = ({ index, node }: Props) => { ...@@ -72,6 +74,8 @@ const Renderer: React.FC<Props> = ({ index, node }: Props) => {
return <TaskList index={index} {...(node.taskListNode as TaskListNode)} />; return <TaskList index={index} {...(node.taskListNode as TaskListNode)} />;
case NodeType.MATH_BLOCK: case NodeType.MATH_BLOCK:
return <Math {...(node.mathBlockNode as MathNode)} block={true} />; return <Math {...(node.mathBlockNode as MathNode)} block={true} />;
case NodeType.TABLE:
return <Table {...(node.tableNode as TableNode)} />;
case NodeType.TEXT: case NodeType.TEXT:
return <Text {...(node.textNode as TextNode)} />; return <Text {...(node.textNode as TextNode)} />;
case NodeType.BOLD: case NodeType.BOLD:
......
import { TableNode_Row } from "@/types/proto/api/v2/markdown_service";
interface Props {
header: string[];
rows: TableNode_Row[];
}
const Table = ({ header, rows }: Props) => {
return (
<table className="w-auto max-w-full border border-gray-300 dark:border-zinc-600 divide-y divide-gray-300 dark:divide-zinc-600">
<thead className="text-sm font-semibold leading-5 text-left text-gray-900 dark:text-gray-400">
<tr className="divide-x divide-gray-300 dark:divide-zinc-600">
{header.map((h, i) => (
<th key={i} className="py-1 px-2">
{h}
</th>
))}
</tr>
</thead>
<tbody className="divide-y divide-gray-300 dark:divide-zinc-600 text-sm leading-5 text-left text-gray-900 dark:text-gray-400">
{rows.map((row, i) => (
<tr key={i} className="divide-x divide-gray-300 dark:divide-zinc-600">
{row.cells.map((r, j) => (
<td key={j} className="py-1 px-2">
{r}
</td>
))}
</tr>
))}
</tbody>
</table>
);
};
export default Table;
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment