From 0a9c803d4e7bf37a7d67a3e74609b8dd56399d09 Mon Sep 17 00:00:00 2001 From: Zhigao TONG Date: Fri, 18 Sep 2026 16:04:28 +0800 Subject: [PATCH 01/12] tipb: add minimal FTS query protocol --- go-tipb/analyze.pb.go | 5 + go-tipb/executor.pb.go | 6312 ++++++++++++++++++++++++-------------- go-tipb/expression.pb.go | 748 ++--- proto/executor.proto | 73 +- proto/expression.proto | 6 + 5 files changed, 4535 insertions(+), 2609 deletions(-) diff --git a/go-tipb/analyze.pb.go b/go-tipb/analyze.pb.go index f0083270..d2fb11fd 100644 --- a/go-tipb/analyze.pb.go +++ b/go-tipb/analyze.pb.go @@ -45,6 +45,11 @@ It has these top-level messages: EncodedBytesSlice ExchangeReceiver ANNQueryInfo + FTSBooleanTerm + FTSBooleanQuery + FTSBooleanNode + FTSQueryInfo + ColumnarIndexInfo TableScan PartitionTableScan Join diff --git a/go-tipb/executor.pb.go b/go-tipb/executor.pb.go index 28fcc23a..a19c4cc1 100644 --- a/go-tipb/executor.pb.go +++ b/go-tipb/executor.pb.go @@ -333,6 +333,197 @@ func (x *ANNQueryType) UnmarshalJSON(data []byte) error { } func (ANNQueryType) EnumDescriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{6} } +type FTSQueryType int32 + +const ( + FTSQueryType_FTSQueryTypeInvalid FTSQueryType = 0 + FTSQueryType_FTSQueryTypeNoScore FTSQueryType = 1 + FTSQueryType_FTSQueryTypeWithScore FTSQueryType = 2 +) + +var FTSQueryType_name = map[int32]string{ + 0: "FTSQueryTypeInvalid", + 1: "FTSQueryTypeNoScore", + 2: "FTSQueryTypeWithScore", +} +var FTSQueryType_value = map[string]int32{ + "FTSQueryTypeInvalid": 0, + "FTSQueryTypeNoScore": 1, + "FTSQueryTypeWithScore": 2, +} + +func (x FTSQueryType) Enum() *FTSQueryType { + p := new(FTSQueryType) + *p = x + return p +} +func (x FTSQueryType) String() string { + return proto.EnumName(FTSQueryType_name, int32(x)) +} +func (x *FTSQueryType) UnmarshalJSON(data []byte) error { + value, err := proto.UnmarshalJSONEnum(FTSQueryType_value, data, "FTSQueryType") + if err != nil { + return err + } + *x = FTSQueryType(value) + return nil +} +func (FTSQueryType) EnumDescriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{7} } + +type FTSBooleanOccur int32 + +const ( + FTSBooleanOccur_FTSBooleanOccurInvalid FTSBooleanOccur = 0 + FTSBooleanOccur_FTSBooleanOccurShould FTSBooleanOccur = 1 + FTSBooleanOccur_FTSBooleanOccurMust FTSBooleanOccur = 2 + FTSBooleanOccur_FTSBooleanOccurMustNot FTSBooleanOccur = 3 +) + +var FTSBooleanOccur_name = map[int32]string{ + 0: "FTSBooleanOccurInvalid", + 1: "FTSBooleanOccurShould", + 2: "FTSBooleanOccurMust", + 3: "FTSBooleanOccurMustNot", +} +var FTSBooleanOccur_value = map[string]int32{ + "FTSBooleanOccurInvalid": 0, + "FTSBooleanOccurShould": 1, + "FTSBooleanOccurMust": 2, + "FTSBooleanOccurMustNot": 3, +} + +func (x FTSBooleanOccur) Enum() *FTSBooleanOccur { + p := new(FTSBooleanOccur) + *p = x + return p +} +func (x FTSBooleanOccur) String() string { + return proto.EnumName(FTSBooleanOccur_name, int32(x)) +} +func (x *FTSBooleanOccur) UnmarshalJSON(data []byte) error { + value, err := proto.UnmarshalJSONEnum(FTSBooleanOccur_value, data, "FTSBooleanOccur") + if err != nil { + return err + } + *x = FTSBooleanOccur(value) + return nil +} +func (FTSBooleanOccur) EnumDescriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{8} } + +type FTSBooleanModifier int32 + +const ( + FTSBooleanModifier_FTSBooleanModifierNone FTSBooleanModifier = 0 + FTSBooleanModifier_FTSBooleanModifierBoost FTSBooleanModifier = 1 + FTSBooleanModifier_FTSBooleanModifierDeBoost FTSBooleanModifier = 2 + FTSBooleanModifier_FTSBooleanModifierNegate FTSBooleanModifier = 3 +) + +var FTSBooleanModifier_name = map[int32]string{ + 0: "FTSBooleanModifierNone", + 1: "FTSBooleanModifierBoost", + 2: "FTSBooleanModifierDeBoost", + 3: "FTSBooleanModifierNegate", +} +var FTSBooleanModifier_value = map[string]int32{ + "FTSBooleanModifierNone": 0, + "FTSBooleanModifierBoost": 1, + "FTSBooleanModifierDeBoost": 2, + "FTSBooleanModifierNegate": 3, +} + +func (x FTSBooleanModifier) Enum() *FTSBooleanModifier { + p := new(FTSBooleanModifier) + *p = x + return p +} +func (x FTSBooleanModifier) String() string { + return proto.EnumName(FTSBooleanModifier_name, int32(x)) +} +func (x *FTSBooleanModifier) UnmarshalJSON(data []byte) error { + value, err := proto.UnmarshalJSONEnum(FTSBooleanModifier_value, data, "FTSBooleanModifier") + if err != nil { + return err + } + *x = FTSBooleanModifier(value) + return nil +} +func (FTSBooleanModifier) EnumDescriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{9} } + +type FTSBooleanTermType int32 + +const ( + FTSBooleanTermType_FTSBooleanTermInvalid FTSBooleanTermType = 0 + FTSBooleanTermType_FTSBooleanTermWord FTSBooleanTermType = 1 + FTSBooleanTermType_FTSBooleanTermPhrase FTSBooleanTermType = 2 + FTSBooleanTermType_FTSBooleanTermPrefix FTSBooleanTermType = 3 +) + +var FTSBooleanTermType_name = map[int32]string{ + 0: "FTSBooleanTermInvalid", + 1: "FTSBooleanTermWord", + 2: "FTSBooleanTermPhrase", + 3: "FTSBooleanTermPrefix", +} +var FTSBooleanTermType_value = map[string]int32{ + "FTSBooleanTermInvalid": 0, + "FTSBooleanTermWord": 1, + "FTSBooleanTermPhrase": 2, + "FTSBooleanTermPrefix": 3, +} + +func (x FTSBooleanTermType) Enum() *FTSBooleanTermType { + p := new(FTSBooleanTermType) + *p = x + return p +} +func (x FTSBooleanTermType) String() string { + return proto.EnumName(FTSBooleanTermType_name, int32(x)) +} +func (x *FTSBooleanTermType) UnmarshalJSON(data []byte) error { + value, err := proto.UnmarshalJSONEnum(FTSBooleanTermType_value, data, "FTSBooleanTermType") + if err != nil { + return err + } + *x = FTSBooleanTermType(value) + return nil +} +func (FTSBooleanTermType) EnumDescriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{10} } + +type ColumnarIndexType int32 + +const ( + ColumnarIndexType_TypeInvalid ColumnarIndexType = 0 + ColumnarIndexType_TypeFulltext ColumnarIndexType = 3 +) + +var ColumnarIndexType_name = map[int32]string{ + 0: "TypeInvalid", + 3: "TypeFulltext", +} +var ColumnarIndexType_value = map[string]int32{ + "TypeInvalid": 0, + "TypeFulltext": 3, +} + +func (x ColumnarIndexType) Enum() *ColumnarIndexType { + p := new(ColumnarIndexType) + *p = x + return p +} +func (x ColumnarIndexType) String() string { + return proto.EnumName(ColumnarIndexType_name, int32(x)) +} +func (x *ColumnarIndexType) UnmarshalJSON(data []byte) error { + value, err := proto.UnmarshalJSONEnum(ColumnarIndexType_value, data, "ColumnarIndexType") + if err != nil { + return err + } + *x = ColumnarIndexType(value) + return nil +} +func (ColumnarIndexType) EnumDescriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{11} } + type JoinType int32 const ( @@ -380,7 +571,7 @@ func (x *JoinType) UnmarshalJSON(data []byte) error { *x = JoinType(value) return nil } -func (JoinType) EnumDescriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{7} } +func (JoinType) EnumDescriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{12} } type JoinExecType int32 @@ -411,7 +602,7 @@ func (x *JoinExecType) UnmarshalJSON(data []byte) error { *x = JoinExecType(value) return nil } -func (JoinExecType) EnumDescriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{8} } +func (JoinExecType) EnumDescriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{13} } type RuntimeFilterType int32 @@ -448,7 +639,7 @@ func (x *RuntimeFilterType) UnmarshalJSON(data []byte) error { *x = RuntimeFilterType(value) return nil } -func (RuntimeFilterType) EnumDescriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{9} } +func (RuntimeFilterType) EnumDescriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{14} } type RuntimeFilterMode int32 @@ -482,7 +673,7 @@ func (x *RuntimeFilterMode) UnmarshalJSON(data []byte) error { *x = RuntimeFilterMode(value) return nil } -func (RuntimeFilterMode) EnumDescriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{10} } +func (RuntimeFilterMode) EnumDescriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{15} } type TiFlashPreAggMode int32 @@ -519,7 +710,7 @@ func (x *TiFlashPreAggMode) UnmarshalJSON(data []byte) error { *x = TiFlashPreAggMode(value) return nil } -func (TiFlashPreAggMode) EnumDescriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{11} } +func (TiFlashPreAggMode) EnumDescriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{16} } type WindowBoundType int32 @@ -556,7 +747,7 @@ func (x *WindowBoundType) UnmarshalJSON(data []byte) error { *x = WindowBoundType(value) return nil } -func (WindowBoundType) EnumDescriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{12} } +func (WindowBoundType) EnumDescriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{17} } // Used for range frame's comparison when finding frame's boundary type RangeCmpDataType int32 @@ -600,7 +791,7 @@ func (x *RangeCmpDataType) UnmarshalJSON(data []byte) error { *x = RangeCmpDataType(value) return nil } -func (RangeCmpDataType) EnumDescriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{13} } +func (RangeCmpDataType) EnumDescriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{18} } type WindowFrameType int32 @@ -637,7 +828,7 @@ func (x *WindowFrameType) UnmarshalJSON(data []byte) error { *x = WindowFrameType(value) return nil } -func (WindowFrameType) EnumDescriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{14} } +func (WindowFrameType) EnumDescriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{19} } // It represents a Executor. type Executor struct { @@ -1092,2020 +1283,2076 @@ func (m *ANNQueryInfo) GetHnswEfSearch() uint32 { return 0 } -type TableScan struct { - TableId int64 `protobuf:"varint,1,opt,name=table_id,json=tableId" json:"table_id"` - Columns []*ColumnInfo `protobuf:"bytes,2,rep,name=columns" json:"columns,omitempty"` - Desc bool `protobuf:"varint,3,opt,name=desc" json:"desc"` - PrimaryColumnIds []int64 `protobuf:"varint,4,rep,name=primary_column_ids,json=primaryColumnIds" json:"primary_column_ids,omitempty"` - NextReadEngine EngineType `protobuf:"varint,5,opt,name=next_read_engine,json=nextReadEngine,enum=tipb.EngineType" json:"next_read_engine"` - Ranges []KeyRange `protobuf:"bytes,6,rep,name=ranges" json:"ranges"` - PrimaryPrefixColumnIds []int64 `protobuf:"varint,7,rep,name=primary_prefix_column_ids,json=primaryPrefixColumnIds" json:"primary_prefix_column_ids,omitempty"` - KeepOrder *bool `protobuf:"varint,8,opt,name=keep_order,json=keepOrder" json:"keep_order,omitempty"` - IsFastScan *bool `protobuf:"varint,9,opt,name=is_fast_scan,json=isFastScan" json:"is_fast_scan,omitempty"` - PushedDownFilterConditions []*Expr `protobuf:"bytes,10,rep,name=pushed_down_filter_conditions,json=pushedDownFilterConditions" json:"pushed_down_filter_conditions,omitempty"` - AnnQuery *ANNQueryInfo `protobuf:"bytes,13,opt,name=ann_query,json=annQuery" json:"ann_query,omitempty"` - RuntimeFilterList []*RuntimeFilter `protobuf:"bytes,11,rep,name=runtime_filter_list,json=runtimeFilterList" json:"runtime_filter_list,omitempty"` - MaxWaitTimeMs int32 `protobuf:"varint,12,opt,name=max_wait_time_ms,json=maxWaitTimeMs" json:"max_wait_time_ms"` - XXX_unrecognized []byte `json:"-"` +type FTSBooleanTerm struct { + TermType FTSBooleanTermType `protobuf:"varint,1,opt,name=term_type,json=termType,enum=tipb.FTSBooleanTermType" json:"term_type"` + Text string `protobuf:"bytes,2,opt,name=text" json:"text"` + PhraseDistance uint32 `protobuf:"varint,3,opt,name=phrase_distance,json=phraseDistance" json:"phrase_distance"` + XXX_unrecognized []byte `json:"-"` } -func (m *TableScan) Reset() { *m = TableScan{} } -func (m *TableScan) String() string { return proto.CompactTextString(m) } -func (*TableScan) ProtoMessage() {} -func (*TableScan) Descriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{6} } +func (m *FTSBooleanTerm) Reset() { *m = FTSBooleanTerm{} } +func (m *FTSBooleanTerm) String() string { return proto.CompactTextString(m) } +func (*FTSBooleanTerm) ProtoMessage() {} +func (*FTSBooleanTerm) Descriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{6} } -func (m *TableScan) GetTableId() int64 { +func (m *FTSBooleanTerm) GetTermType() FTSBooleanTermType { if m != nil { - return m.TableId + return m.TermType } - return 0 + return FTSBooleanTermType_FTSBooleanTermInvalid } -func (m *TableScan) GetColumns() []*ColumnInfo { +func (m *FTSBooleanTerm) GetText() string { if m != nil { - return m.Columns + return m.Text } - return nil + return "" } -func (m *TableScan) GetDesc() bool { +func (m *FTSBooleanTerm) GetPhraseDistance() uint32 { if m != nil { - return m.Desc + return m.PhraseDistance } - return false + return 0 } -func (m *TableScan) GetPrimaryColumnIds() []int64 { +type FTSBooleanQuery struct { + Nodes []*FTSBooleanNode `protobuf:"bytes,1,rep,name=nodes" json:"nodes,omitempty"` + XXX_unrecognized []byte `json:"-"` +} + +func (m *FTSBooleanQuery) Reset() { *m = FTSBooleanQuery{} } +func (m *FTSBooleanQuery) String() string { return proto.CompactTextString(m) } +func (*FTSBooleanQuery) ProtoMessage() {} +func (*FTSBooleanQuery) Descriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{7} } + +func (m *FTSBooleanQuery) GetNodes() []*FTSBooleanNode { if m != nil { - return m.PrimaryColumnIds + return m.Nodes } return nil } -func (m *TableScan) GetNextReadEngine() EngineType { - if m != nil { - return m.NextReadEngine - } - return EngineType_Local +type FTSBooleanNode struct { + Occur FTSBooleanOccur `protobuf:"varint,1,opt,name=occur,enum=tipb.FTSBooleanOccur" json:"occur"` + Modifier FTSBooleanModifier `protobuf:"varint,2,opt,name=modifier,enum=tipb.FTSBooleanModifier" json:"modifier"` + // Types that are valid to be assigned to Node: + // *FTSBooleanNode_Term + // *FTSBooleanNode_SubExpression + Node isFTSBooleanNode_Node `protobuf_oneof:"node"` + XXX_unrecognized []byte `json:"-"` } -func (m *TableScan) GetRanges() []KeyRange { +func (m *FTSBooleanNode) Reset() { *m = FTSBooleanNode{} } +func (m *FTSBooleanNode) String() string { return proto.CompactTextString(m) } +func (*FTSBooleanNode) ProtoMessage() {} +func (*FTSBooleanNode) Descriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{8} } + +type isFTSBooleanNode_Node interface { + isFTSBooleanNode_Node() + MarshalTo([]byte) (int, error) + Size() int +} + +type FTSBooleanNode_Term struct { + Term *FTSBooleanTerm `protobuf:"bytes,3,opt,name=term,oneof"` +} +type FTSBooleanNode_SubExpression struct { + SubExpression *FTSBooleanQuery `protobuf:"bytes,4,opt,name=sub_expression,json=subExpression,oneof"` +} + +func (*FTSBooleanNode_Term) isFTSBooleanNode_Node() {} +func (*FTSBooleanNode_SubExpression) isFTSBooleanNode_Node() {} + +func (m *FTSBooleanNode) GetNode() isFTSBooleanNode_Node { if m != nil { - return m.Ranges + return m.Node } return nil } -func (m *TableScan) GetPrimaryPrefixColumnIds() []int64 { +func (m *FTSBooleanNode) GetOccur() FTSBooleanOccur { if m != nil { - return m.PrimaryPrefixColumnIds + return m.Occur } - return nil + return FTSBooleanOccur_FTSBooleanOccurInvalid } -func (m *TableScan) GetKeepOrder() bool { - if m != nil && m.KeepOrder != nil { - return *m.KeepOrder +func (m *FTSBooleanNode) GetModifier() FTSBooleanModifier { + if m != nil { + return m.Modifier } - return false + return FTSBooleanModifier_FTSBooleanModifierNone } -func (m *TableScan) GetIsFastScan() bool { - if m != nil && m.IsFastScan != nil { - return *m.IsFastScan +func (m *FTSBooleanNode) GetTerm() *FTSBooleanTerm { + if x, ok := m.GetNode().(*FTSBooleanNode_Term); ok { + return x.Term } - return false + return nil } -func (m *TableScan) GetPushedDownFilterConditions() []*Expr { - if m != nil { - return m.PushedDownFilterConditions +func (m *FTSBooleanNode) GetSubExpression() *FTSBooleanQuery { + if x, ok := m.GetNode().(*FTSBooleanNode_SubExpression); ok { + return x.SubExpression } return nil } -func (m *TableScan) GetAnnQuery() *ANNQueryInfo { - if m != nil { - return m.AnnQuery +// XXX_OneofFuncs is for the internal use of the proto package. +func (*FTSBooleanNode) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { + return _FTSBooleanNode_OneofMarshaler, _FTSBooleanNode_OneofUnmarshaler, _FTSBooleanNode_OneofSizer, []interface{}{ + (*FTSBooleanNode_Term)(nil), + (*FTSBooleanNode_SubExpression)(nil), } - return nil } -func (m *TableScan) GetRuntimeFilterList() []*RuntimeFilter { - if m != nil { - return m.RuntimeFilterList +func _FTSBooleanNode_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { + m := msg.(*FTSBooleanNode) + // node + switch x := m.Node.(type) { + case *FTSBooleanNode_Term: + _ = b.EncodeVarint(3<<3 | proto.WireBytes) + if err := b.EncodeMessage(x.Term); err != nil { + return err + } + case *FTSBooleanNode_SubExpression: + _ = b.EncodeVarint(4<<3 | proto.WireBytes) + if err := b.EncodeMessage(x.SubExpression); err != nil { + return err + } + case nil: + default: + return fmt.Errorf("FTSBooleanNode.Node has unexpected type %T", x) } return nil } -func (m *TableScan) GetMaxWaitTimeMs() int32 { - if m != nil { - return m.MaxWaitTimeMs +func _FTSBooleanNode_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { + m := msg.(*FTSBooleanNode) + switch tag { + case 3: // node.term + if wire != proto.WireBytes { + return true, proto.ErrInternalBadWireType + } + msg := new(FTSBooleanTerm) + err := b.DecodeMessage(msg) + m.Node = &FTSBooleanNode_Term{msg} + return true, err + case 4: // node.sub_expression + if wire != proto.WireBytes { + return true, proto.ErrInternalBadWireType + } + msg := new(FTSBooleanQuery) + err := b.DecodeMessage(msg) + m.Node = &FTSBooleanNode_SubExpression{msg} + return true, err + default: + return false, nil } - return 0 } -type PartitionTableScan struct { - TableId int64 `protobuf:"varint,1,opt,name=table_id,json=tableId" json:"table_id"` - Columns []*ColumnInfo `protobuf:"bytes,2,rep,name=columns" json:"columns,omitempty"` - Desc bool `protobuf:"varint,3,opt,name=desc" json:"desc"` - PrimaryColumnIds []int64 `protobuf:"varint,4,rep,name=primary_column_ids,json=primaryColumnIds" json:"primary_column_ids,omitempty"` - PrimaryPrefixColumnIds []int64 `protobuf:"varint,5,rep,name=primary_prefix_column_ids,json=primaryPrefixColumnIds" json:"primary_prefix_column_ids,omitempty"` - PartitionIds []int64 `protobuf:"varint,6,rep,name=partition_ids,json=partitionIds" json:"partition_ids,omitempty"` - IsFastScan *bool `protobuf:"varint,7,opt,name=is_fast_scan,json=isFastScan" json:"is_fast_scan,omitempty"` - PushedDownFilterConditions []*Expr `protobuf:"bytes,8,rep,name=pushed_down_filter_conditions,json=pushedDownFilterConditions" json:"pushed_down_filter_conditions,omitempty"` - AnnQuery *ANNQueryInfo `protobuf:"bytes,11,opt,name=ann_query,json=annQuery" json:"ann_query,omitempty"` - RuntimeFilterList []*RuntimeFilter `protobuf:"bytes,9,rep,name=runtime_filter_list,json=runtimeFilterList" json:"runtime_filter_list,omitempty"` - MaxWaitTimeMs int32 `protobuf:"varint,10,opt,name=max_wait_time_ms,json=maxWaitTimeMs" json:"max_wait_time_ms"` - XXX_unrecognized []byte `json:"-"` +func _FTSBooleanNode_OneofSizer(msg proto.Message) (n int) { + m := msg.(*FTSBooleanNode) + // node + switch x := m.Node.(type) { + case *FTSBooleanNode_Term: + s := proto.Size(x.Term) + n += proto.SizeVarint(3<<3 | proto.WireBytes) + n += proto.SizeVarint(uint64(s)) + n += s + case *FTSBooleanNode_SubExpression: + s := proto.Size(x.SubExpression) + n += proto.SizeVarint(4<<3 | proto.WireBytes) + n += proto.SizeVarint(uint64(s)) + n += s + case nil: + default: + panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) + } + return n } -func (m *PartitionTableScan) Reset() { *m = PartitionTableScan{} } -func (m *PartitionTableScan) String() string { return proto.CompactTextString(m) } -func (*PartitionTableScan) ProtoMessage() {} -func (*PartitionTableScan) Descriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{7} } +type FTSQueryInfo struct { + QueryType FTSQueryType `protobuf:"varint,1,opt,name=query_type,json=queryType,enum=tipb.FTSQueryType" json:"query_type"` + IndexId int64 `protobuf:"varint,2,opt,name=index_id,json=indexId" json:"index_id"` + Columns []*ColumnInfo `protobuf:"bytes,3,rep,name=columns" json:"columns,omitempty"` + ColumnNames []string `protobuf:"bytes,4,rep,name=column_names,json=columnNames" json:"column_names,omitempty"` + QueryText string `protobuf:"bytes,5,opt,name=query_text,json=queryText" json:"query_text"` + QueryTokenizer string `protobuf:"bytes,6,opt,name=query_tokenizer,json=queryTokenizer" json:"query_tokenizer"` + TopK *uint32 `protobuf:"varint,10,opt,name=top_k,json=topK" json:"top_k,omitempty"` + QueryFunc ScalarFuncSig `protobuf:"varint,20,opt,name=query_func,json=queryFunc,enum=tipb.ScalarFuncSig" json:"query_func"` + BooleanQuery *FTSBooleanQuery `protobuf:"bytes,22,opt,name=boolean_query,json=booleanQuery" json:"boolean_query,omitempty"` + XXX_unrecognized []byte `json:"-"` +} -func (m *PartitionTableScan) GetTableId() int64 { +func (m *FTSQueryInfo) Reset() { *m = FTSQueryInfo{} } +func (m *FTSQueryInfo) String() string { return proto.CompactTextString(m) } +func (*FTSQueryInfo) ProtoMessage() {} +func (*FTSQueryInfo) Descriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{9} } + +func (m *FTSQueryInfo) GetQueryType() FTSQueryType { if m != nil { - return m.TableId + return m.QueryType } - return 0 + return FTSQueryType_FTSQueryTypeInvalid } -func (m *PartitionTableScan) GetColumns() []*ColumnInfo { +func (m *FTSQueryInfo) GetIndexId() int64 { if m != nil { - return m.Columns + return m.IndexId } - return nil + return 0 } -func (m *PartitionTableScan) GetDesc() bool { +func (m *FTSQueryInfo) GetColumns() []*ColumnInfo { if m != nil { - return m.Desc + return m.Columns } - return false + return nil } -func (m *PartitionTableScan) GetPrimaryColumnIds() []int64 { +func (m *FTSQueryInfo) GetColumnNames() []string { if m != nil { - return m.PrimaryColumnIds + return m.ColumnNames } return nil } -func (m *PartitionTableScan) GetPrimaryPrefixColumnIds() []int64 { +func (m *FTSQueryInfo) GetQueryText() string { if m != nil { - return m.PrimaryPrefixColumnIds + return m.QueryText } - return nil + return "" } -func (m *PartitionTableScan) GetPartitionIds() []int64 { +func (m *FTSQueryInfo) GetQueryTokenizer() string { if m != nil { - return m.PartitionIds + return m.QueryTokenizer } - return nil + return "" } -func (m *PartitionTableScan) GetIsFastScan() bool { - if m != nil && m.IsFastScan != nil { - return *m.IsFastScan +func (m *FTSQueryInfo) GetTopK() uint32 { + if m != nil && m.TopK != nil { + return *m.TopK } - return false + return 0 } -func (m *PartitionTableScan) GetPushedDownFilterConditions() []*Expr { +func (m *FTSQueryInfo) GetQueryFunc() ScalarFuncSig { if m != nil { - return m.PushedDownFilterConditions + return m.QueryFunc } - return nil + return ScalarFuncSig_Unspecified } -func (m *PartitionTableScan) GetAnnQuery() *ANNQueryInfo { +func (m *FTSQueryInfo) GetBooleanQuery() *FTSBooleanQuery { if m != nil { - return m.AnnQuery + return m.BooleanQuery } return nil } -func (m *PartitionTableScan) GetRuntimeFilterList() []*RuntimeFilter { - if m != nil { - return m.RuntimeFilterList - } - return nil +type ColumnarIndexInfo struct { + IndexType ColumnarIndexType `protobuf:"varint,1,opt,name=index_type,json=indexType,enum=tipb.ColumnarIndexType" json:"index_type"` + // Types that are valid to be assigned to Index: + // *ColumnarIndexInfo_FtsQueryInfo + Index isColumnarIndexInfo_Index `protobuf_oneof:"index"` + XXX_unrecognized []byte `json:"-"` } -func (m *PartitionTableScan) GetMaxWaitTimeMs() int32 { - if m != nil { - return m.MaxWaitTimeMs - } - return 0 +func (m *ColumnarIndexInfo) Reset() { *m = ColumnarIndexInfo{} } +func (m *ColumnarIndexInfo) String() string { return proto.CompactTextString(m) } +func (*ColumnarIndexInfo) ProtoMessage() {} +func (*ColumnarIndexInfo) Descriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{10} } + +type isColumnarIndexInfo_Index interface { + isColumnarIndexInfo_Index() + MarshalTo([]byte) (int, error) + Size() int } -type Join struct { - JoinType JoinType `protobuf:"varint,1,opt,name=join_type,json=joinType,enum=tipb.JoinType" json:"join_type"` - JoinExecType JoinExecType `protobuf:"varint,2,opt,name=join_exec_type,json=joinExecType,enum=tipb.JoinExecType" json:"join_exec_type"` - Children []*Executor `protobuf:"bytes,3,rep,name=children" json:"children,omitempty"` - InnerIdx int64 `protobuf:"varint,4,opt,name=inner_idx,json=innerIdx" json:"inner_idx"` - LeftJoinKeys []*Expr `protobuf:"bytes,5,rep,name=left_join_keys,json=leftJoinKeys" json:"left_join_keys,omitempty"` - RightJoinKeys []*Expr `protobuf:"bytes,6,rep,name=right_join_keys,json=rightJoinKeys" json:"right_join_keys,omitempty"` - // used by TiFlash join when new collation is enabled. - ProbeTypes []*FieldType `protobuf:"bytes,7,rep,name=probe_types,json=probeTypes" json:"probe_types,omitempty"` - BuildTypes []*FieldType `protobuf:"bytes,8,rep,name=build_types,json=buildTypes" json:"build_types,omitempty"` - LeftConditions []*Expr `protobuf:"bytes,9,rep,name=left_conditions,json=leftConditions" json:"left_conditions,omitempty"` - RightConditions []*Expr `protobuf:"bytes,10,rep,name=right_conditions,json=rightConditions" json:"right_conditions,omitempty"` - OtherConditions []*Expr `protobuf:"bytes,11,rep,name=other_conditions,json=otherConditions" json:"other_conditions,omitempty"` - OtherEqConditionsFromIn []*Expr `protobuf:"bytes,12,rep,name=other_eq_conditions_from_in,json=otherEqConditionsFromIn" json:"other_eq_conditions_from_in,omitempty"` - IsNullAwareSemiJoin *bool `protobuf:"varint,13,opt,name=is_null_aware_semi_join,json=isNullAwareSemiJoin" json:"is_null_aware_semi_join,omitempty"` - RuntimeFilterList []*RuntimeFilter `protobuf:"bytes,14,rep,name=runtime_filter_list,json=runtimeFilterList" json:"runtime_filter_list,omitempty"` - XXX_unrecognized []byte `json:"-"` +type ColumnarIndexInfo_FtsQueryInfo struct { + FtsQueryInfo *FTSQueryInfo `protobuf:"bytes,4,opt,name=fts_query_info,json=ftsQueryInfo,oneof"` } -func (m *Join) Reset() { *m = Join{} } -func (m *Join) String() string { return proto.CompactTextString(m) } -func (*Join) ProtoMessage() {} -func (*Join) Descriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{8} } +func (*ColumnarIndexInfo_FtsQueryInfo) isColumnarIndexInfo_Index() {} -func (m *Join) GetJoinType() JoinType { +func (m *ColumnarIndexInfo) GetIndex() isColumnarIndexInfo_Index { if m != nil { - return m.JoinType + return m.Index } - return JoinType_TypeInnerJoin + return nil } -func (m *Join) GetJoinExecType() JoinExecType { +func (m *ColumnarIndexInfo) GetIndexType() ColumnarIndexType { if m != nil { - return m.JoinExecType + return m.IndexType } - return JoinExecType_TypeHashJoin + return ColumnarIndexType_TypeInvalid } -func (m *Join) GetChildren() []*Executor { - if m != nil { - return m.Children +func (m *ColumnarIndexInfo) GetFtsQueryInfo() *FTSQueryInfo { + if x, ok := m.GetIndex().(*ColumnarIndexInfo_FtsQueryInfo); ok { + return x.FtsQueryInfo } return nil } -func (m *Join) GetInnerIdx() int64 { - if m != nil { - return m.InnerIdx +// XXX_OneofFuncs is for the internal use of the proto package. +func (*ColumnarIndexInfo) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { + return _ColumnarIndexInfo_OneofMarshaler, _ColumnarIndexInfo_OneofUnmarshaler, _ColumnarIndexInfo_OneofSizer, []interface{}{ + (*ColumnarIndexInfo_FtsQueryInfo)(nil), } - return 0 } -func (m *Join) GetLeftJoinKeys() []*Expr { - if m != nil { - return m.LeftJoinKeys +func _ColumnarIndexInfo_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { + m := msg.(*ColumnarIndexInfo) + // index + switch x := m.Index.(type) { + case *ColumnarIndexInfo_FtsQueryInfo: + _ = b.EncodeVarint(4<<3 | proto.WireBytes) + if err := b.EncodeMessage(x.FtsQueryInfo); err != nil { + return err + } + case nil: + default: + return fmt.Errorf("ColumnarIndexInfo.Index has unexpected type %T", x) } return nil } -func (m *Join) GetRightJoinKeys() []*Expr { - if m != nil { - return m.RightJoinKeys +func _ColumnarIndexInfo_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { + m := msg.(*ColumnarIndexInfo) + switch tag { + case 4: // index.fts_query_info + if wire != proto.WireBytes { + return true, proto.ErrInternalBadWireType + } + msg := new(FTSQueryInfo) + err := b.DecodeMessage(msg) + m.Index = &ColumnarIndexInfo_FtsQueryInfo{msg} + return true, err + default: + return false, nil } - return nil } -func (m *Join) GetProbeTypes() []*FieldType { - if m != nil { - return m.ProbeTypes +func _ColumnarIndexInfo_OneofSizer(msg proto.Message) (n int) { + m := msg.(*ColumnarIndexInfo) + // index + switch x := m.Index.(type) { + case *ColumnarIndexInfo_FtsQueryInfo: + s := proto.Size(x.FtsQueryInfo) + n += proto.SizeVarint(4<<3 | proto.WireBytes) + n += proto.SizeVarint(uint64(s)) + n += s + case nil: + default: + panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) } - return nil + return n } -func (m *Join) GetBuildTypes() []*FieldType { - if m != nil { - return m.BuildTypes - } - return nil +type TableScan struct { + TableId int64 `protobuf:"varint,1,opt,name=table_id,json=tableId" json:"table_id"` + Columns []*ColumnInfo `protobuf:"bytes,2,rep,name=columns" json:"columns,omitempty"` + Desc bool `protobuf:"varint,3,opt,name=desc" json:"desc"` + PrimaryColumnIds []int64 `protobuf:"varint,4,rep,name=primary_column_ids,json=primaryColumnIds" json:"primary_column_ids,omitempty"` + NextReadEngine EngineType `protobuf:"varint,5,opt,name=next_read_engine,json=nextReadEngine,enum=tipb.EngineType" json:"next_read_engine"` + Ranges []KeyRange `protobuf:"bytes,6,rep,name=ranges" json:"ranges"` + PrimaryPrefixColumnIds []int64 `protobuf:"varint,7,rep,name=primary_prefix_column_ids,json=primaryPrefixColumnIds" json:"primary_prefix_column_ids,omitempty"` + KeepOrder *bool `protobuf:"varint,8,opt,name=keep_order,json=keepOrder" json:"keep_order,omitempty"` + IsFastScan *bool `protobuf:"varint,9,opt,name=is_fast_scan,json=isFastScan" json:"is_fast_scan,omitempty"` + PushedDownFilterConditions []*Expr `protobuf:"bytes,10,rep,name=pushed_down_filter_conditions,json=pushedDownFilterConditions" json:"pushed_down_filter_conditions,omitempty"` + AnnQuery *ANNQueryInfo `protobuf:"bytes,13,opt,name=ann_query,json=annQuery" json:"ann_query,omitempty"` + RuntimeFilterList []*RuntimeFilter `protobuf:"bytes,11,rep,name=runtime_filter_list,json=runtimeFilterList" json:"runtime_filter_list,omitempty"` + MaxWaitTimeMs int32 `protobuf:"varint,12,opt,name=max_wait_time_ms,json=maxWaitTimeMs" json:"max_wait_time_ms"` + UsedColumnarIndexes []*ColumnarIndexInfo `protobuf:"bytes,14,rep,name=used_columnar_indexes,json=usedColumnarIndexes" json:"used_columnar_indexes,omitempty"` + XXX_unrecognized []byte `json:"-"` } -func (m *Join) GetLeftConditions() []*Expr { +func (m *TableScan) Reset() { *m = TableScan{} } +func (m *TableScan) String() string { return proto.CompactTextString(m) } +func (*TableScan) ProtoMessage() {} +func (*TableScan) Descriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{11} } + +func (m *TableScan) GetTableId() int64 { if m != nil { - return m.LeftConditions + return m.TableId } - return nil + return 0 } -func (m *Join) GetRightConditions() []*Expr { +func (m *TableScan) GetColumns() []*ColumnInfo { if m != nil { - return m.RightConditions + return m.Columns } return nil } -func (m *Join) GetOtherConditions() []*Expr { +func (m *TableScan) GetDesc() bool { if m != nil { - return m.OtherConditions + return m.Desc } - return nil + return false } -func (m *Join) GetOtherEqConditionsFromIn() []*Expr { +func (m *TableScan) GetPrimaryColumnIds() []int64 { if m != nil { - return m.OtherEqConditionsFromIn + return m.PrimaryColumnIds } return nil } -func (m *Join) GetIsNullAwareSemiJoin() bool { - if m != nil && m.IsNullAwareSemiJoin != nil { - return *m.IsNullAwareSemiJoin +func (m *TableScan) GetNextReadEngine() EngineType { + if m != nil { + return m.NextReadEngine } - return false + return EngineType_Local } -func (m *Join) GetRuntimeFilterList() []*RuntimeFilter { +func (m *TableScan) GetRanges() []KeyRange { if m != nil { - return m.RuntimeFilterList + return m.Ranges } return nil } -type RuntimeFilter struct { - Id int32 `protobuf:"varint,1,opt,name=id" json:"id"` - SourceExprList []*Expr `protobuf:"bytes,2,rep,name=source_expr_list,json=sourceExprList" json:"source_expr_list,omitempty"` - TargetExprList []*Expr `protobuf:"bytes,3,rep,name=target_expr_list,json=targetExprList" json:"target_expr_list,omitempty"` - SourceExecutorId string `protobuf:"bytes,4,opt,name=source_executor_id,json=sourceExecutorId" json:"source_executor_id"` - TargetExecutorId string `protobuf:"bytes,5,opt,name=target_executor_id,json=targetExecutorId" json:"target_executor_id"` - RfType RuntimeFilterType `protobuf:"varint,6,opt,name=rf_type,json=rfType,enum=tipb.RuntimeFilterType" json:"rf_type"` - RfMode RuntimeFilterMode `protobuf:"varint,7,opt,name=rf_mode,json=rfMode,enum=tipb.RuntimeFilterMode" json:"rf_mode"` - XXX_unrecognized []byte `json:"-"` +func (m *TableScan) GetPrimaryPrefixColumnIds() []int64 { + if m != nil { + return m.PrimaryPrefixColumnIds + } + return nil } -func (m *RuntimeFilter) Reset() { *m = RuntimeFilter{} } -func (m *RuntimeFilter) String() string { return proto.CompactTextString(m) } -func (*RuntimeFilter) ProtoMessage() {} -func (*RuntimeFilter) Descriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{9} } - -func (m *RuntimeFilter) GetId() int32 { - if m != nil { - return m.Id +func (m *TableScan) GetKeepOrder() bool { + if m != nil && m.KeepOrder != nil { + return *m.KeepOrder } - return 0 + return false } -func (m *RuntimeFilter) GetSourceExprList() []*Expr { - if m != nil { - return m.SourceExprList +func (m *TableScan) GetIsFastScan() bool { + if m != nil && m.IsFastScan != nil { + return *m.IsFastScan } - return nil + return false } -func (m *RuntimeFilter) GetTargetExprList() []*Expr { +func (m *TableScan) GetPushedDownFilterConditions() []*Expr { if m != nil { - return m.TargetExprList + return m.PushedDownFilterConditions } return nil } -func (m *RuntimeFilter) GetSourceExecutorId() string { +func (m *TableScan) GetAnnQuery() *ANNQueryInfo { if m != nil { - return m.SourceExecutorId + return m.AnnQuery } - return "" + return nil } -func (m *RuntimeFilter) GetTargetExecutorId() string { +func (m *TableScan) GetRuntimeFilterList() []*RuntimeFilter { if m != nil { - return m.TargetExecutorId + return m.RuntimeFilterList } - return "" + return nil } -func (m *RuntimeFilter) GetRfType() RuntimeFilterType { +func (m *TableScan) GetMaxWaitTimeMs() int32 { if m != nil { - return m.RfType + return m.MaxWaitTimeMs } - return RuntimeFilterType_IN + return 0 } -func (m *RuntimeFilter) GetRfMode() RuntimeFilterMode { +func (m *TableScan) GetUsedColumnarIndexes() []*ColumnarIndexInfo { if m != nil { - return m.RfMode + return m.UsedColumnarIndexes } - return RuntimeFilterMode_LOCAL + return nil } -type IndexScan struct { - TableId int64 `protobuf:"varint,1,opt,name=table_id,json=tableId" json:"table_id"` - IndexId int64 `protobuf:"varint,2,opt,name=index_id,json=indexId" json:"index_id"` - Columns []*ColumnInfo `protobuf:"bytes,3,rep,name=columns" json:"columns,omitempty"` - Desc bool `protobuf:"varint,4,opt,name=desc" json:"desc"` - Unique *bool `protobuf:"varint,5,opt,name=unique" json:"unique,omitempty"` - PrimaryColumnIds []int64 `protobuf:"varint,6,rep,name=primary_column_ids,json=primaryColumnIds" json:"primary_column_ids,omitempty"` - XXX_unrecognized []byte `json:"-"` +type PartitionTableScan struct { + TableId int64 `protobuf:"varint,1,opt,name=table_id,json=tableId" json:"table_id"` + Columns []*ColumnInfo `protobuf:"bytes,2,rep,name=columns" json:"columns,omitempty"` + Desc bool `protobuf:"varint,3,opt,name=desc" json:"desc"` + PrimaryColumnIds []int64 `protobuf:"varint,4,rep,name=primary_column_ids,json=primaryColumnIds" json:"primary_column_ids,omitempty"` + PrimaryPrefixColumnIds []int64 `protobuf:"varint,5,rep,name=primary_prefix_column_ids,json=primaryPrefixColumnIds" json:"primary_prefix_column_ids,omitempty"` + PartitionIds []int64 `protobuf:"varint,6,rep,name=partition_ids,json=partitionIds" json:"partition_ids,omitempty"` + IsFastScan *bool `protobuf:"varint,7,opt,name=is_fast_scan,json=isFastScan" json:"is_fast_scan,omitempty"` + PushedDownFilterConditions []*Expr `protobuf:"bytes,8,rep,name=pushed_down_filter_conditions,json=pushedDownFilterConditions" json:"pushed_down_filter_conditions,omitempty"` + AnnQuery *ANNQueryInfo `protobuf:"bytes,11,opt,name=ann_query,json=annQuery" json:"ann_query,omitempty"` + RuntimeFilterList []*RuntimeFilter `protobuf:"bytes,9,rep,name=runtime_filter_list,json=runtimeFilterList" json:"runtime_filter_list,omitempty"` + MaxWaitTimeMs int32 `protobuf:"varint,10,opt,name=max_wait_time_ms,json=maxWaitTimeMs" json:"max_wait_time_ms"` + UsedColumnarIndexes []*ColumnarIndexInfo `protobuf:"bytes,12,rep,name=used_columnar_indexes,json=usedColumnarIndexes" json:"used_columnar_indexes,omitempty"` + XXX_unrecognized []byte `json:"-"` } -func (m *IndexScan) Reset() { *m = IndexScan{} } -func (m *IndexScan) String() string { return proto.CompactTextString(m) } -func (*IndexScan) ProtoMessage() {} -func (*IndexScan) Descriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{10} } +func (m *PartitionTableScan) Reset() { *m = PartitionTableScan{} } +func (m *PartitionTableScan) String() string { return proto.CompactTextString(m) } +func (*PartitionTableScan) ProtoMessage() {} +func (*PartitionTableScan) Descriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{12} } -func (m *IndexScan) GetTableId() int64 { +func (m *PartitionTableScan) GetTableId() int64 { if m != nil { return m.TableId } return 0 } -func (m *IndexScan) GetIndexId() int64 { - if m != nil { - return m.IndexId - } - return 0 -} - -func (m *IndexScan) GetColumns() []*ColumnInfo { +func (m *PartitionTableScan) GetColumns() []*ColumnInfo { if m != nil { return m.Columns } return nil } -func (m *IndexScan) GetDesc() bool { +func (m *PartitionTableScan) GetDesc() bool { if m != nil { return m.Desc } return false } -func (m *IndexScan) GetUnique() bool { - if m != nil && m.Unique != nil { - return *m.Unique - } - return false -} - -func (m *IndexScan) GetPrimaryColumnIds() []int64 { +func (m *PartitionTableScan) GetPrimaryColumnIds() []int64 { if m != nil { return m.PrimaryColumnIds } return nil } -type Selection struct { - // Where conditions. - Conditions []*Expr `protobuf:"bytes,1,rep,name=conditions" json:"conditions,omitempty"` - RpnConditions []*RpnExpr `protobuf:"bytes,2,rep,name=rpn_conditions,json=rpnConditions" json:"rpn_conditions,omitempty"` - Child *Executor `protobuf:"bytes,3,opt,name=child" json:"child,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *Selection) Reset() { *m = Selection{} } -func (m *Selection) String() string { return proto.CompactTextString(m) } -func (*Selection) ProtoMessage() {} -func (*Selection) Descriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{11} } - -func (m *Selection) GetConditions() []*Expr { +func (m *PartitionTableScan) GetPrimaryPrefixColumnIds() []int64 { if m != nil { - return m.Conditions + return m.PrimaryPrefixColumnIds } return nil } -func (m *Selection) GetRpnConditions() []*RpnExpr { +func (m *PartitionTableScan) GetPartitionIds() []int64 { if m != nil { - return m.RpnConditions + return m.PartitionIds } return nil } -func (m *Selection) GetChild() *Executor { - if m != nil { - return m.Child +func (m *PartitionTableScan) GetIsFastScan() bool { + if m != nil && m.IsFastScan != nil { + return *m.IsFastScan } - return nil -} - -type Projection struct { - // Projection expressions. - Exprs []*Expr `protobuf:"bytes,1,rep,name=exprs" json:"exprs,omitempty"` - RpnExprs []*RpnExpr `protobuf:"bytes,2,rep,name=rpn_exprs,json=rpnExprs" json:"rpn_exprs,omitempty"` - Child *Executor `protobuf:"bytes,3,opt,name=child" json:"child,omitempty"` - XXX_unrecognized []byte `json:"-"` + return false } -func (m *Projection) Reset() { *m = Projection{} } -func (m *Projection) String() string { return proto.CompactTextString(m) } -func (*Projection) ProtoMessage() {} -func (*Projection) Descriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{12} } - -func (m *Projection) GetExprs() []*Expr { +func (m *PartitionTableScan) GetPushedDownFilterConditions() []*Expr { if m != nil { - return m.Exprs + return m.PushedDownFilterConditions } return nil } -func (m *Projection) GetRpnExprs() []*RpnExpr { +func (m *PartitionTableScan) GetAnnQuery() *ANNQueryInfo { if m != nil { - return m.RpnExprs + return m.AnnQuery } return nil } -func (m *Projection) GetChild() *Executor { +func (m *PartitionTableScan) GetRuntimeFilterList() []*RuntimeFilter { if m != nil { - return m.Child + return m.RuntimeFilterList } return nil } -type Aggregation struct { - // Group by clause. - GroupBy []*Expr `protobuf:"bytes,1,rep,name=group_by,json=groupBy" json:"group_by,omitempty"` - RpnGroupBy []*RpnExpr `protobuf:"bytes,4,rep,name=rpn_group_by,json=rpnGroupBy" json:"rpn_group_by,omitempty"` - // Aggregate functions. - AggFunc []*Expr `protobuf:"bytes,2,rep,name=agg_func,json=aggFunc" json:"agg_func,omitempty"` - RpnAggFunc []*RpnExpr `protobuf:"bytes,5,rep,name=rpn_agg_func,json=rpnAggFunc" json:"rpn_agg_func,omitempty"` - // If it is a stream aggregation. - Streamed bool `protobuf:"varint,3,opt,name=streamed" json:"streamed"` - Child *Executor `protobuf:"bytes,6,opt,name=child" json:"child,omitempty"` - PreAggMode *TiFlashPreAggMode `protobuf:"varint,7,opt,name=pre_agg_mode,json=preAggMode,enum=tipb.TiFlashPreAggMode" json:"pre_agg_mode,omitempty"` - XXX_unrecognized []byte `json:"-"` +func (m *PartitionTableScan) GetMaxWaitTimeMs() int32 { + if m != nil { + return m.MaxWaitTimeMs + } + return 0 } -func (m *Aggregation) Reset() { *m = Aggregation{} } -func (m *Aggregation) String() string { return proto.CompactTextString(m) } -func (*Aggregation) ProtoMessage() {} -func (*Aggregation) Descriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{13} } - -func (m *Aggregation) GetGroupBy() []*Expr { +func (m *PartitionTableScan) GetUsedColumnarIndexes() []*ColumnarIndexInfo { if m != nil { - return m.GroupBy + return m.UsedColumnarIndexes } return nil } -func (m *Aggregation) GetRpnGroupBy() []*RpnExpr { - if m != nil { - return m.RpnGroupBy +type Join struct { + JoinType JoinType `protobuf:"varint,1,opt,name=join_type,json=joinType,enum=tipb.JoinType" json:"join_type"` + JoinExecType JoinExecType `protobuf:"varint,2,opt,name=join_exec_type,json=joinExecType,enum=tipb.JoinExecType" json:"join_exec_type"` + Children []*Executor `protobuf:"bytes,3,rep,name=children" json:"children,omitempty"` + InnerIdx int64 `protobuf:"varint,4,opt,name=inner_idx,json=innerIdx" json:"inner_idx"` + LeftJoinKeys []*Expr `protobuf:"bytes,5,rep,name=left_join_keys,json=leftJoinKeys" json:"left_join_keys,omitempty"` + RightJoinKeys []*Expr `protobuf:"bytes,6,rep,name=right_join_keys,json=rightJoinKeys" json:"right_join_keys,omitempty"` + // used by TiFlash join when new collation is enabled. + ProbeTypes []*FieldType `protobuf:"bytes,7,rep,name=probe_types,json=probeTypes" json:"probe_types,omitempty"` + BuildTypes []*FieldType `protobuf:"bytes,8,rep,name=build_types,json=buildTypes" json:"build_types,omitempty"` + LeftConditions []*Expr `protobuf:"bytes,9,rep,name=left_conditions,json=leftConditions" json:"left_conditions,omitempty"` + RightConditions []*Expr `protobuf:"bytes,10,rep,name=right_conditions,json=rightConditions" json:"right_conditions,omitempty"` + OtherConditions []*Expr `protobuf:"bytes,11,rep,name=other_conditions,json=otherConditions" json:"other_conditions,omitempty"` + OtherEqConditionsFromIn []*Expr `protobuf:"bytes,12,rep,name=other_eq_conditions_from_in,json=otherEqConditionsFromIn" json:"other_eq_conditions_from_in,omitempty"` + IsNullAwareSemiJoin *bool `protobuf:"varint,13,opt,name=is_null_aware_semi_join,json=isNullAwareSemiJoin" json:"is_null_aware_semi_join,omitempty"` + RuntimeFilterList []*RuntimeFilter `protobuf:"bytes,14,rep,name=runtime_filter_list,json=runtimeFilterList" json:"runtime_filter_list,omitempty"` + XXX_unrecognized []byte `json:"-"` +} + +func (m *Join) Reset() { *m = Join{} } +func (m *Join) String() string { return proto.CompactTextString(m) } +func (*Join) ProtoMessage() {} +func (*Join) Descriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{13} } + +func (m *Join) GetJoinType() JoinType { + if m != nil { + return m.JoinType } - return nil + return JoinType_TypeInnerJoin } -func (m *Aggregation) GetAggFunc() []*Expr { +func (m *Join) GetJoinExecType() JoinExecType { if m != nil { - return m.AggFunc + return m.JoinExecType } - return nil + return JoinExecType_TypeHashJoin } -func (m *Aggregation) GetRpnAggFunc() []*RpnExpr { +func (m *Join) GetChildren() []*Executor { if m != nil { - return m.RpnAggFunc + return m.Children } return nil } -func (m *Aggregation) GetStreamed() bool { +func (m *Join) GetInnerIdx() int64 { if m != nil { - return m.Streamed + return m.InnerIdx } - return false + return 0 } -func (m *Aggregation) GetChild() *Executor { +func (m *Join) GetLeftJoinKeys() []*Expr { if m != nil { - return m.Child + return m.LeftJoinKeys } return nil } -func (m *Aggregation) GetPreAggMode() TiFlashPreAggMode { - if m != nil && m.PreAggMode != nil { - return *m.PreAggMode +func (m *Join) GetRightJoinKeys() []*Expr { + if m != nil { + return m.RightJoinKeys } - return TiFlashPreAggMode_ForcePreAgg -} - -type TopN struct { - // Order by clause. - OrderBy []*ByItem `protobuf:"bytes,1,rep,name=order_by,json=orderBy" json:"order_by,omitempty"` - Limit uint64 `protobuf:"varint,2,opt,name=limit" json:"limit"` - Child *Executor `protobuf:"bytes,3,opt,name=child" json:"child,omitempty"` - // If partition_by is not empty, it means need to return topN of each partition. - // Generally used in sqls like `where row_number() over (partition by ... order by ...) < X` - PartitionBy []*ByItem `protobuf:"bytes,4,rep,name=partition_by,json=partitionBy" json:"partition_by,omitempty"` - XXX_unrecognized []byte `json:"-"` + return nil } -func (m *TopN) Reset() { *m = TopN{} } -func (m *TopN) String() string { return proto.CompactTextString(m) } -func (*TopN) ProtoMessage() {} -func (*TopN) Descriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{14} } - -func (m *TopN) GetOrderBy() []*ByItem { +func (m *Join) GetProbeTypes() []*FieldType { if m != nil { - return m.OrderBy + return m.ProbeTypes } return nil } -func (m *TopN) GetLimit() uint64 { +func (m *Join) GetBuildTypes() []*FieldType { if m != nil { - return m.Limit + return m.BuildTypes } - return 0 + return nil } -func (m *TopN) GetChild() *Executor { +func (m *Join) GetLeftConditions() []*Expr { if m != nil { - return m.Child + return m.LeftConditions } return nil } -func (m *TopN) GetPartitionBy() []*ByItem { +func (m *Join) GetRightConditions() []*Expr { if m != nil { - return m.PartitionBy + return m.RightConditions } return nil } -type Limit struct { - // Limit the result to be returned. - Limit uint64 `protobuf:"varint,1,opt,name=limit" json:"limit"` - Child *Executor `protobuf:"bytes,2,opt,name=child" json:"child,omitempty"` - // If partition_by is not empty, it means need to return limitN of each partition. - // Generally used in sqls like `where row_number() over (partition by ...) < X` - PartitionBy []*ByItem `protobuf:"bytes,3,rep,name=partition_by,json=partitionBy" json:"partition_by,omitempty"` - TruncateKeyExpr []*Expr `protobuf:"bytes,4,rep,name=truncate_key_expr,json=truncateKeyExpr" json:"truncate_key_expr,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *Limit) Reset() { *m = Limit{} } -func (m *Limit) String() string { return proto.CompactTextString(m) } -func (*Limit) ProtoMessage() {} -func (*Limit) Descriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{15} } - -func (m *Limit) GetLimit() uint64 { +func (m *Join) GetOtherConditions() []*Expr { if m != nil { - return m.Limit + return m.OtherConditions } - return 0 + return nil } -func (m *Limit) GetChild() *Executor { +func (m *Join) GetOtherEqConditionsFromIn() []*Expr { if m != nil { - return m.Child + return m.OtherEqConditionsFromIn } return nil } -func (m *Limit) GetPartitionBy() []*ByItem { - if m != nil { - return m.PartitionBy +func (m *Join) GetIsNullAwareSemiJoin() bool { + if m != nil && m.IsNullAwareSemiJoin != nil { + return *m.IsNullAwareSemiJoin } - return nil + return false } -func (m *Limit) GetTruncateKeyExpr() []*Expr { +func (m *Join) GetRuntimeFilterList() []*RuntimeFilter { if m != nil { - return m.TruncateKeyExpr + return m.RuntimeFilterList } return nil } -type Kill struct { - ConnID uint64 `protobuf:"varint,1,opt,name=connID" json:"connID"` - // Query indicates whether terminate a single query on this connection or the whole connection. - // If Query is true, terminates the statement the connection is currently executing, but leaves the connection itself intact. - // If Query is false, terminates the connection associated with the given ConnectionID, after terminating any statement the connection is executing. - // See https://dev.mysql.com/doc/refman/8.0/en/kill.html. - Query bool `protobuf:"varint,2,opt,name=query" json:"query"` - XXX_unrecognized []byte `json:"-"` +type RuntimeFilter struct { + Id int32 `protobuf:"varint,1,opt,name=id" json:"id"` + SourceExprList []*Expr `protobuf:"bytes,2,rep,name=source_expr_list,json=sourceExprList" json:"source_expr_list,omitempty"` + TargetExprList []*Expr `protobuf:"bytes,3,rep,name=target_expr_list,json=targetExprList" json:"target_expr_list,omitempty"` + SourceExecutorId string `protobuf:"bytes,4,opt,name=source_executor_id,json=sourceExecutorId" json:"source_executor_id"` + TargetExecutorId string `protobuf:"bytes,5,opt,name=target_executor_id,json=targetExecutorId" json:"target_executor_id"` + RfType RuntimeFilterType `protobuf:"varint,6,opt,name=rf_type,json=rfType,enum=tipb.RuntimeFilterType" json:"rf_type"` + RfMode RuntimeFilterMode `protobuf:"varint,7,opt,name=rf_mode,json=rfMode,enum=tipb.RuntimeFilterMode" json:"rf_mode"` + XXX_unrecognized []byte `json:"-"` } -func (m *Kill) Reset() { *m = Kill{} } -func (m *Kill) String() string { return proto.CompactTextString(m) } -func (*Kill) ProtoMessage() {} -func (*Kill) Descriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{16} } +func (m *RuntimeFilter) Reset() { *m = RuntimeFilter{} } +func (m *RuntimeFilter) String() string { return proto.CompactTextString(m) } +func (*RuntimeFilter) ProtoMessage() {} +func (*RuntimeFilter) Descriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{14} } -func (m *Kill) GetConnID() uint64 { +func (m *RuntimeFilter) GetId() int32 { if m != nil { - return m.ConnID + return m.Id } return 0 } -func (m *Kill) GetQuery() bool { +func (m *RuntimeFilter) GetSourceExprList() []*Expr { if m != nil { - return m.Query + return m.SourceExprList } - return false + return nil } -type ExplainForConnection struct { - ConnectionId uint64 `protobuf:"varint,1,opt,name=connection_id,json=connectionId" json:"connection_id"` - XXX_unrecognized []byte `json:"-"` +func (m *RuntimeFilter) GetTargetExprList() []*Expr { + if m != nil { + return m.TargetExprList + } + return nil } -func (m *ExplainForConnection) Reset() { *m = ExplainForConnection{} } -func (m *ExplainForConnection) String() string { return proto.CompactTextString(m) } -func (*ExplainForConnection) ProtoMessage() {} -func (*ExplainForConnection) Descriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{17} } - -func (m *ExplainForConnection) GetConnectionId() uint64 { +func (m *RuntimeFilter) GetSourceExecutorId() string { if m != nil { - return m.ConnectionId + return m.SourceExecutorId } - return 0 + return "" } -type ExecutorExecutionSummary struct { - // Total time cost in this executor. Includes self time cost and children time cost. - TimeProcessedNs *uint64 `protobuf:"varint,1,opt,name=time_processed_ns,json=timeProcessedNs" json:"time_processed_ns,omitempty"` - // How many rows this executor produced totally. - NumProducedRows *uint64 `protobuf:"varint,2,opt,name=num_produced_rows,json=numProducedRows" json:"num_produced_rows,omitempty"` - // How many times executor's `next()` is called. - NumIterations *uint64 `protobuf:"varint,3,opt,name=num_iterations,json=numIterations" json:"num_iterations,omitempty"` - // Coresponding executor id - ExecutorId *string `protobuf:"bytes,4,opt,name=executor_id,json=executorId" json:"executor_id,omitempty"` - // The execution concurrency for this executor - Concurrency *uint64 `protobuf:"varint,5,opt,name=concurrency" json:"concurrency,omitempty"` - // Types that are valid to be assigned to DetailInfo: - // *ExecutorExecutionSummary_TiflashScanContext - DetailInfo isExecutorExecutionSummary_DetailInfo `protobuf_oneof:"DetailInfo"` - // Serialize kvproto resource_manager.Consumption to tell tidb the consumption info. For now it's only for tiflash. - // And it's the ru consumption of one MPPTask/cop/batchCop instead of one executor. - RuConsumption []byte `protobuf:"bytes,7,opt,name=ru_consumption,json=ruConsumption" json:"ru_consumption,omitempty"` - // Only for tiflash, records the wait info. - TiflashWaitSummary *TiFlashWaitSummary `protobuf:"bytes,8,opt,name=tiflash_wait_summary,json=tiflashWaitSummary" json:"tiflash_wait_summary,omitempty"` - XXX_unrecognized []byte `json:"-"` +func (m *RuntimeFilter) GetTargetExecutorId() string { + if m != nil { + return m.TargetExecutorId + } + return "" } -func (m *ExecutorExecutionSummary) Reset() { *m = ExecutorExecutionSummary{} } -func (m *ExecutorExecutionSummary) String() string { return proto.CompactTextString(m) } -func (*ExecutorExecutionSummary) ProtoMessage() {} -func (*ExecutorExecutionSummary) Descriptor() ([]byte, []int) { - return fileDescriptorExecutor, []int{18} +func (m *RuntimeFilter) GetRfType() RuntimeFilterType { + if m != nil { + return m.RfType + } + return RuntimeFilterType_IN } -type isExecutorExecutionSummary_DetailInfo interface { - isExecutorExecutionSummary_DetailInfo() - MarshalTo([]byte) (int, error) - Size() int +func (m *RuntimeFilter) GetRfMode() RuntimeFilterMode { + if m != nil { + return m.RfMode + } + return RuntimeFilterMode_LOCAL } -type ExecutorExecutionSummary_TiflashScanContext struct { - TiflashScanContext *TiFlashScanContext `protobuf:"bytes,6,opt,name=tiflash_scan_context,json=tiflashScanContext,oneof"` +type IndexScan struct { + TableId int64 `protobuf:"varint,1,opt,name=table_id,json=tableId" json:"table_id"` + IndexId int64 `protobuf:"varint,2,opt,name=index_id,json=indexId" json:"index_id"` + Columns []*ColumnInfo `protobuf:"bytes,3,rep,name=columns" json:"columns,omitempty"` + Desc bool `protobuf:"varint,4,opt,name=desc" json:"desc"` + Unique *bool `protobuf:"varint,5,opt,name=unique" json:"unique,omitempty"` + PrimaryColumnIds []int64 `protobuf:"varint,6,rep,name=primary_column_ids,json=primaryColumnIds" json:"primary_column_ids,omitempty"` + XXX_unrecognized []byte `json:"-"` } -func (*ExecutorExecutionSummary_TiflashScanContext) isExecutorExecutionSummary_DetailInfo() {} +func (m *IndexScan) Reset() { *m = IndexScan{} } +func (m *IndexScan) String() string { return proto.CompactTextString(m) } +func (*IndexScan) ProtoMessage() {} +func (*IndexScan) Descriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{15} } -func (m *ExecutorExecutionSummary) GetDetailInfo() isExecutorExecutionSummary_DetailInfo { +func (m *IndexScan) GetTableId() int64 { if m != nil { - return m.DetailInfo + return m.TableId } - return nil + return 0 } -func (m *ExecutorExecutionSummary) GetTimeProcessedNs() uint64 { - if m != nil && m.TimeProcessedNs != nil { - return *m.TimeProcessedNs +func (m *IndexScan) GetIndexId() int64 { + if m != nil { + return m.IndexId } return 0 } -func (m *ExecutorExecutionSummary) GetNumProducedRows() uint64 { - if m != nil && m.NumProducedRows != nil { - return *m.NumProducedRows +func (m *IndexScan) GetColumns() []*ColumnInfo { + if m != nil { + return m.Columns } - return 0 + return nil } -func (m *ExecutorExecutionSummary) GetNumIterations() uint64 { - if m != nil && m.NumIterations != nil { - return *m.NumIterations +func (m *IndexScan) GetDesc() bool { + if m != nil { + return m.Desc } - return 0 + return false } -func (m *ExecutorExecutionSummary) GetExecutorId() string { - if m != nil && m.ExecutorId != nil { - return *m.ExecutorId +func (m *IndexScan) GetUnique() bool { + if m != nil && m.Unique != nil { + return *m.Unique } - return "" + return false } -func (m *ExecutorExecutionSummary) GetConcurrency() uint64 { - if m != nil && m.Concurrency != nil { - return *m.Concurrency +func (m *IndexScan) GetPrimaryColumnIds() []int64 { + if m != nil { + return m.PrimaryColumnIds } - return 0 + return nil } -func (m *ExecutorExecutionSummary) GetTiflashScanContext() *TiFlashScanContext { - if x, ok := m.GetDetailInfo().(*ExecutorExecutionSummary_TiflashScanContext); ok { - return x.TiflashScanContext +type Selection struct { + // Where conditions. + Conditions []*Expr `protobuf:"bytes,1,rep,name=conditions" json:"conditions,omitempty"` + RpnConditions []*RpnExpr `protobuf:"bytes,2,rep,name=rpn_conditions,json=rpnConditions" json:"rpn_conditions,omitempty"` + Child *Executor `protobuf:"bytes,3,opt,name=child" json:"child,omitempty"` + XXX_unrecognized []byte `json:"-"` +} + +func (m *Selection) Reset() { *m = Selection{} } +func (m *Selection) String() string { return proto.CompactTextString(m) } +func (*Selection) ProtoMessage() {} +func (*Selection) Descriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{16} } + +func (m *Selection) GetConditions() []*Expr { + if m != nil { + return m.Conditions } return nil } -func (m *ExecutorExecutionSummary) GetRuConsumption() []byte { +func (m *Selection) GetRpnConditions() []*RpnExpr { if m != nil { - return m.RuConsumption + return m.RpnConditions } return nil } -func (m *ExecutorExecutionSummary) GetTiflashWaitSummary() *TiFlashWaitSummary { +func (m *Selection) GetChild() *Executor { if m != nil { - return m.TiflashWaitSummary + return m.Child } return nil } -// XXX_OneofFuncs is for the internal use of the proto package. -func (*ExecutorExecutionSummary) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { - return _ExecutorExecutionSummary_OneofMarshaler, _ExecutorExecutionSummary_OneofUnmarshaler, _ExecutorExecutionSummary_OneofSizer, []interface{}{ - (*ExecutorExecutionSummary_TiflashScanContext)(nil), - } +type Projection struct { + // Projection expressions. + Exprs []*Expr `protobuf:"bytes,1,rep,name=exprs" json:"exprs,omitempty"` + RpnExprs []*RpnExpr `protobuf:"bytes,2,rep,name=rpn_exprs,json=rpnExprs" json:"rpn_exprs,omitempty"` + Child *Executor `protobuf:"bytes,3,opt,name=child" json:"child,omitempty"` + XXX_unrecognized []byte `json:"-"` } -func _ExecutorExecutionSummary_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { - m := msg.(*ExecutorExecutionSummary) - // DetailInfo - switch x := m.DetailInfo.(type) { - case *ExecutorExecutionSummary_TiflashScanContext: - _ = b.EncodeVarint(6<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.TiflashScanContext); err != nil { - return err - } - case nil: - default: - return fmt.Errorf("ExecutorExecutionSummary.DetailInfo has unexpected type %T", x) +func (m *Projection) Reset() { *m = Projection{} } +func (m *Projection) String() string { return proto.CompactTextString(m) } +func (*Projection) ProtoMessage() {} +func (*Projection) Descriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{17} } + +func (m *Projection) GetExprs() []*Expr { + if m != nil { + return m.Exprs } return nil } -func _ExecutorExecutionSummary_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { - m := msg.(*ExecutorExecutionSummary) - switch tag { - case 6: // DetailInfo.tiflash_scan_context - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(TiFlashScanContext) - err := b.DecodeMessage(msg) - m.DetailInfo = &ExecutorExecutionSummary_TiflashScanContext{msg} - return true, err - default: - return false, nil +func (m *Projection) GetRpnExprs() []*RpnExpr { + if m != nil { + return m.RpnExprs } + return nil } -func _ExecutorExecutionSummary_OneofSizer(msg proto.Message) (n int) { - m := msg.(*ExecutorExecutionSummary) - // DetailInfo - switch x := m.DetailInfo.(type) { - case *ExecutorExecutionSummary_TiflashScanContext: - s := proto.Size(x.TiflashScanContext) - n += proto.SizeVarint(6<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case nil: - default: - panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) +func (m *Projection) GetChild() *Executor { + if m != nil { + return m.Child } - return n + return nil } -type TiFlashExecutionInfo struct { - // The execution summary of each executor, no order limitation. - ExecutionSummaries []*ExecutorExecutionSummary `protobuf:"bytes,1,rep,name=execution_summaries,json=executionSummaries" json:"execution_summaries,omitempty"` - XXX_unrecognized []byte `json:"-"` +type Aggregation struct { + // Group by clause. + GroupBy []*Expr `protobuf:"bytes,1,rep,name=group_by,json=groupBy" json:"group_by,omitempty"` + RpnGroupBy []*RpnExpr `protobuf:"bytes,4,rep,name=rpn_group_by,json=rpnGroupBy" json:"rpn_group_by,omitempty"` + // Aggregate functions. + AggFunc []*Expr `protobuf:"bytes,2,rep,name=agg_func,json=aggFunc" json:"agg_func,omitempty"` + RpnAggFunc []*RpnExpr `protobuf:"bytes,5,rep,name=rpn_agg_func,json=rpnAggFunc" json:"rpn_agg_func,omitempty"` + // If it is a stream aggregation. + Streamed bool `protobuf:"varint,3,opt,name=streamed" json:"streamed"` + Child *Executor `protobuf:"bytes,6,opt,name=child" json:"child,omitempty"` + PreAggMode *TiFlashPreAggMode `protobuf:"varint,7,opt,name=pre_agg_mode,json=preAggMode,enum=tipb.TiFlashPreAggMode" json:"pre_agg_mode,omitempty"` + XXX_unrecognized []byte `json:"-"` } -func (m *TiFlashExecutionInfo) Reset() { *m = TiFlashExecutionInfo{} } -func (m *TiFlashExecutionInfo) String() string { return proto.CompactTextString(m) } -func (*TiFlashExecutionInfo) ProtoMessage() {} -func (*TiFlashExecutionInfo) Descriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{19} } +func (m *Aggregation) Reset() { *m = Aggregation{} } +func (m *Aggregation) String() string { return proto.CompactTextString(m) } +func (*Aggregation) ProtoMessage() {} +func (*Aggregation) Descriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{18} } -func (m *TiFlashExecutionInfo) GetExecutionSummaries() []*ExecutorExecutionSummary { +func (m *Aggregation) GetGroupBy() []*Expr { if m != nil { - return m.ExecutionSummaries + return m.GroupBy } return nil } -type TiFlashRegionNumOfInstance struct { - InstanceId *string `protobuf:"bytes,1,opt,name=instance_id,json=instanceId" json:"instance_id,omitempty"` - RegionNum *uint64 `protobuf:"varint,2,opt,name=region_num,json=regionNum" json:"region_num,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *TiFlashRegionNumOfInstance) Reset() { *m = TiFlashRegionNumOfInstance{} } -func (m *TiFlashRegionNumOfInstance) String() string { return proto.CompactTextString(m) } -func (*TiFlashRegionNumOfInstance) ProtoMessage() {} -func (*TiFlashRegionNumOfInstance) Descriptor() ([]byte, []int) { - return fileDescriptorExecutor, []int{20} -} - -func (m *TiFlashRegionNumOfInstance) GetInstanceId() string { - if m != nil && m.InstanceId != nil { - return *m.InstanceId +func (m *Aggregation) GetRpnGroupBy() []*RpnExpr { + if m != nil { + return m.RpnGroupBy } - return "" + return nil } -func (m *TiFlashRegionNumOfInstance) GetRegionNum() uint64 { - if m != nil && m.RegionNum != nil { - return *m.RegionNum +func (m *Aggregation) GetAggFunc() []*Expr { + if m != nil { + return m.AggFunc } - return 0 -} - -type TiFlashScanContext struct { - DmfileScannedPacks *uint64 `protobuf:"varint,1,opt,name=dmfile_scanned_packs,json=dmfileScannedPacks" json:"dmfile_scanned_packs,omitempty"` - DmfileSkippedPacks *uint64 `protobuf:"varint,2,opt,name=dmfile_skipped_packs,json=dmfileSkippedPacks" json:"dmfile_skipped_packs,omitempty"` - DmfileDataScannedRows *uint64 `protobuf:"varint,3,opt,name=dmfile_data_scanned_rows,json=dmfileDataScannedRows" json:"dmfile_data_scanned_rows,omitempty"` - DmfileDataSkippedRows *uint64 `protobuf:"varint,4,opt,name=dmfile_data_skipped_rows,json=dmfileDataSkippedRows" json:"dmfile_data_skipped_rows,omitempty"` - TotalDmfileRsLoadMs *uint64 `protobuf:"varint,5,opt,name=total_dmfile_rs_load_ms,json=totalDmfileRsLoadMs" json:"total_dmfile_rs_load_ms,omitempty"` - TotalDmfileReadMs *uint64 `protobuf:"varint,6,opt,name=total_dmfile_read_ms,json=totalDmfileReadMs" json:"total_dmfile_read_ms,omitempty"` - TotalBuildSnapshotMs *uint64 `protobuf:"varint,7,opt,name=total_build_snapshot_ms,json=totalBuildSnapshotMs" json:"total_build_snapshot_ms,omitempty"` - LocalRegions *uint64 `protobuf:"varint,8,opt,name=local_regions,json=localRegions" json:"local_regions,omitempty"` - RemoteRegions *uint64 `protobuf:"varint,9,opt,name=remote_regions,json=remoteRegions" json:"remote_regions,omitempty"` - UserReadBytes *uint64 `protobuf:"varint,10,opt,name=user_read_bytes,json=userReadBytes" json:"user_read_bytes,omitempty"` - TotalLearnerReadMs *uint64 `protobuf:"varint,11,opt,name=total_learner_read_ms,json=totalLearnerReadMs" json:"total_learner_read_ms,omitempty"` - DisaggReadCacheHitBytes *uint64 `protobuf:"varint,12,opt,name=disagg_read_cache_hit_bytes,json=disaggReadCacheHitBytes" json:"disagg_read_cache_hit_bytes,omitempty"` - DisaggReadCacheMissBytes *uint64 `protobuf:"varint,13,opt,name=disagg_read_cache_miss_bytes,json=disaggReadCacheMissBytes" json:"disagg_read_cache_miss_bytes,omitempty"` - TotalDmfileRsCheckMs *uint64 `protobuf:"varint,14,opt,name=total_dmfile_rs_check_ms,json=totalDmfileRsCheckMs" json:"total_dmfile_rs_check_ms,omitempty"` - StaleReadRegions *uint64 `protobuf:"varint,15,opt,name=stale_read_regions,json=staleReadRegions" json:"stale_read_regions,omitempty"` - Segments *uint64 `protobuf:"varint,16,opt,name=segments" json:"segments,omitempty"` - ReadTasks *uint64 `protobuf:"varint,17,opt,name=read_tasks,json=readTasks" json:"read_tasks,omitempty"` - DeltaRows *uint64 `protobuf:"varint,18,opt,name=delta_rows,json=deltaRows" json:"delta_rows,omitempty"` - DeltaBytes *uint64 `protobuf:"varint,19,opt,name=delta_bytes,json=deltaBytes" json:"delta_bytes,omitempty"` - MvccInputRows *uint64 `protobuf:"varint,20,opt,name=mvcc_input_rows,json=mvccInputRows" json:"mvcc_input_rows,omitempty"` - MvccInputBytes *uint64 `protobuf:"varint,21,opt,name=mvcc_input_bytes,json=mvccInputBytes" json:"mvcc_input_bytes,omitempty"` - MvccOutputRows *uint64 `protobuf:"varint,22,opt,name=mvcc_output_rows,json=mvccOutputRows" json:"mvcc_output_rows,omitempty"` - LmSkipRows *uint64 `protobuf:"varint,23,opt,name=lm_skip_rows,json=lmSkipRows" json:"lm_skip_rows,omitempty"` - TotalBuildInputstreamMs *uint64 `protobuf:"varint,24,opt,name=total_build_inputstream_ms,json=totalBuildInputstreamMs" json:"total_build_inputstream_ms,omitempty"` - TotalBuildBitmapMs *uint64 `protobuf:"varint,25,opt,name=total_build_bitmap_ms,json=totalBuildBitmapMs" json:"total_build_bitmap_ms,omitempty"` - MinLocalStreamMs *uint64 `protobuf:"varint,26,opt,name=min_local_stream_ms,json=minLocalStreamMs" json:"min_local_stream_ms,omitempty"` - MaxLocalStreamMs *uint64 `protobuf:"varint,27,opt,name=max_local_stream_ms,json=maxLocalStreamMs" json:"max_local_stream_ms,omitempty"` - MinRemoteStreamMs *uint64 `protobuf:"varint,28,opt,name=min_remote_stream_ms,json=minRemoteStreamMs" json:"min_remote_stream_ms,omitempty"` - MaxRemoteStreamMs *uint64 `protobuf:"varint,29,opt,name=max_remote_stream_ms,json=maxRemoteStreamMs" json:"max_remote_stream_ms,omitempty"` - RegionsOfInstance []*TiFlashRegionNumOfInstance `protobuf:"bytes,30,rep,name=regions_of_instance,json=regionsOfInstance" json:"regions_of_instance,omitempty"` - DmfileMvccScannedRows *uint64 `protobuf:"varint,31,opt,name=dmfile_mvcc_scanned_rows,json=dmfileMvccScannedRows" json:"dmfile_mvcc_scanned_rows,omitempty"` - DmfileMvccSkippedRows *uint64 `protobuf:"varint,32,opt,name=dmfile_mvcc_skipped_rows,json=dmfileMvccSkippedRows" json:"dmfile_mvcc_skipped_rows,omitempty"` - DmfileLmFilterScannedRows *uint64 `protobuf:"varint,33,opt,name=dmfile_lm_filter_scanned_rows,json=dmfileLmFilterScannedRows" json:"dmfile_lm_filter_scanned_rows,omitempty"` - DmfileLmFilterSkippedRows *uint64 `protobuf:"varint,34,opt,name=dmfile_lm_filter_skipped_rows,json=dmfileLmFilterSkippedRows" json:"dmfile_lm_filter_skipped_rows,omitempty"` - TotalVectorIdxLoadFromS3 *uint64 `protobuf:"varint,100,opt,name=total_vector_idx_load_from_s3,json=totalVectorIdxLoadFromS3" json:"total_vector_idx_load_from_s3,omitempty"` - TotalVectorIdxLoadFromDisk *uint64 `protobuf:"varint,101,opt,name=total_vector_idx_load_from_disk,json=totalVectorIdxLoadFromDisk" json:"total_vector_idx_load_from_disk,omitempty"` - TotalVectorIdxLoadFromCache *uint64 `protobuf:"varint,102,opt,name=total_vector_idx_load_from_cache,json=totalVectorIdxLoadFromCache" json:"total_vector_idx_load_from_cache,omitempty"` - TotalVectorIdxLoadTimeMs *uint64 `protobuf:"varint,103,opt,name=total_vector_idx_load_time_ms,json=totalVectorIdxLoadTimeMs" json:"total_vector_idx_load_time_ms,omitempty"` - TotalVectorIdxSearchTimeMs *uint64 `protobuf:"varint,104,opt,name=total_vector_idx_search_time_ms,json=totalVectorIdxSearchTimeMs" json:"total_vector_idx_search_time_ms,omitempty"` - TotalVectorIdxSearchVisitedNodes *uint64 `protobuf:"varint,105,opt,name=total_vector_idx_search_visited_nodes,json=totalVectorIdxSearchVisitedNodes" json:"total_vector_idx_search_visited_nodes,omitempty"` - TotalVectorIdxSearchDiscardedNodes *uint64 `protobuf:"varint,106,opt,name=total_vector_idx_search_discarded_nodes,json=totalVectorIdxSearchDiscardedNodes" json:"total_vector_idx_search_discarded_nodes,omitempty"` - TotalVectorIdxReadVecTimeMs *uint64 `protobuf:"varint,107,opt,name=total_vector_idx_read_vec_time_ms,json=totalVectorIdxReadVecTimeMs" json:"total_vector_idx_read_vec_time_ms,omitempty"` - TotalVectorIdxReadOthersTimeMs *uint64 `protobuf:"varint,108,opt,name=total_vector_idx_read_others_time_ms,json=totalVectorIdxReadOthersTimeMs" json:"total_vector_idx_read_others_time_ms,omitempty"` - XXX_unrecognized []byte `json:"-"` + return nil } -func (m *TiFlashScanContext) Reset() { *m = TiFlashScanContext{} } -func (m *TiFlashScanContext) String() string { return proto.CompactTextString(m) } -func (*TiFlashScanContext) ProtoMessage() {} -func (*TiFlashScanContext) Descriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{21} } - -func (m *TiFlashScanContext) GetDmfileScannedPacks() uint64 { - if m != nil && m.DmfileScannedPacks != nil { - return *m.DmfileScannedPacks +func (m *Aggregation) GetRpnAggFunc() []*RpnExpr { + if m != nil { + return m.RpnAggFunc } - return 0 + return nil } -func (m *TiFlashScanContext) GetDmfileSkippedPacks() uint64 { - if m != nil && m.DmfileSkippedPacks != nil { - return *m.DmfileSkippedPacks +func (m *Aggregation) GetStreamed() bool { + if m != nil { + return m.Streamed } - return 0 + return false } -func (m *TiFlashScanContext) GetDmfileDataScannedRows() uint64 { - if m != nil && m.DmfileDataScannedRows != nil { - return *m.DmfileDataScannedRows +func (m *Aggregation) GetChild() *Executor { + if m != nil { + return m.Child } - return 0 + return nil } -func (m *TiFlashScanContext) GetDmfileDataSkippedRows() uint64 { - if m != nil && m.DmfileDataSkippedRows != nil { - return *m.DmfileDataSkippedRows +func (m *Aggregation) GetPreAggMode() TiFlashPreAggMode { + if m != nil && m.PreAggMode != nil { + return *m.PreAggMode } - return 0 + return TiFlashPreAggMode_ForcePreAgg } -func (m *TiFlashScanContext) GetTotalDmfileRsLoadMs() uint64 { - if m != nil && m.TotalDmfileRsLoadMs != nil { - return *m.TotalDmfileRsLoadMs - } - return 0 -} +type TopN struct { + // Order by clause. + OrderBy []*ByItem `protobuf:"bytes,1,rep,name=order_by,json=orderBy" json:"order_by,omitempty"` + Limit uint64 `protobuf:"varint,2,opt,name=limit" json:"limit"` + Child *Executor `protobuf:"bytes,3,opt,name=child" json:"child,omitempty"` + // If partition_by is not empty, it means need to return topN of each partition. + // Generally used in sqls like `where row_number() over (partition by ... order by ...) < X` + PartitionBy []*ByItem `protobuf:"bytes,4,rep,name=partition_by,json=partitionBy" json:"partition_by,omitempty"` + XXX_unrecognized []byte `json:"-"` +} -func (m *TiFlashScanContext) GetTotalDmfileReadMs() uint64 { - if m != nil && m.TotalDmfileReadMs != nil { - return *m.TotalDmfileReadMs +func (m *TopN) Reset() { *m = TopN{} } +func (m *TopN) String() string { return proto.CompactTextString(m) } +func (*TopN) ProtoMessage() {} +func (*TopN) Descriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{19} } + +func (m *TopN) GetOrderBy() []*ByItem { + if m != nil { + return m.OrderBy } - return 0 + return nil } -func (m *TiFlashScanContext) GetTotalBuildSnapshotMs() uint64 { - if m != nil && m.TotalBuildSnapshotMs != nil { - return *m.TotalBuildSnapshotMs +func (m *TopN) GetLimit() uint64 { + if m != nil { + return m.Limit } return 0 } -func (m *TiFlashScanContext) GetLocalRegions() uint64 { - if m != nil && m.LocalRegions != nil { - return *m.LocalRegions +func (m *TopN) GetChild() *Executor { + if m != nil { + return m.Child } - return 0 + return nil } -func (m *TiFlashScanContext) GetRemoteRegions() uint64 { - if m != nil && m.RemoteRegions != nil { - return *m.RemoteRegions +func (m *TopN) GetPartitionBy() []*ByItem { + if m != nil { + return m.PartitionBy } - return 0 + return nil } -func (m *TiFlashScanContext) GetUserReadBytes() uint64 { - if m != nil && m.UserReadBytes != nil { - return *m.UserReadBytes - } - return 0 +type Limit struct { + // Limit the result to be returned. + Limit uint64 `protobuf:"varint,1,opt,name=limit" json:"limit"` + Child *Executor `protobuf:"bytes,2,opt,name=child" json:"child,omitempty"` + // If partition_by is not empty, it means need to return limitN of each partition. + // Generally used in sqls like `where row_number() over (partition by ...) < X` + PartitionBy []*ByItem `protobuf:"bytes,3,rep,name=partition_by,json=partitionBy" json:"partition_by,omitempty"` + TruncateKeyExpr []*Expr `protobuf:"bytes,4,rep,name=truncate_key_expr,json=truncateKeyExpr" json:"truncate_key_expr,omitempty"` + XXX_unrecognized []byte `json:"-"` } -func (m *TiFlashScanContext) GetTotalLearnerReadMs() uint64 { - if m != nil && m.TotalLearnerReadMs != nil { - return *m.TotalLearnerReadMs +func (m *Limit) Reset() { *m = Limit{} } +func (m *Limit) String() string { return proto.CompactTextString(m) } +func (*Limit) ProtoMessage() {} +func (*Limit) Descriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{20} } + +func (m *Limit) GetLimit() uint64 { + if m != nil { + return m.Limit } return 0 } -func (m *TiFlashScanContext) GetDisaggReadCacheHitBytes() uint64 { - if m != nil && m.DisaggReadCacheHitBytes != nil { - return *m.DisaggReadCacheHitBytes +func (m *Limit) GetChild() *Executor { + if m != nil { + return m.Child } - return 0 + return nil } -func (m *TiFlashScanContext) GetDisaggReadCacheMissBytes() uint64 { - if m != nil && m.DisaggReadCacheMissBytes != nil { - return *m.DisaggReadCacheMissBytes +func (m *Limit) GetPartitionBy() []*ByItem { + if m != nil { + return m.PartitionBy } - return 0 + return nil } -func (m *TiFlashScanContext) GetTotalDmfileRsCheckMs() uint64 { - if m != nil && m.TotalDmfileRsCheckMs != nil { - return *m.TotalDmfileRsCheckMs +func (m *Limit) GetTruncateKeyExpr() []*Expr { + if m != nil { + return m.TruncateKeyExpr } - return 0 + return nil } -func (m *TiFlashScanContext) GetStaleReadRegions() uint64 { - if m != nil && m.StaleReadRegions != nil { - return *m.StaleReadRegions - } - return 0 +type Kill struct { + ConnID uint64 `protobuf:"varint,1,opt,name=connID" json:"connID"` + // Query indicates whether terminate a single query on this connection or the whole connection. + // If Query is true, terminates the statement the connection is currently executing, but leaves the connection itself intact. + // If Query is false, terminates the connection associated with the given ConnectionID, after terminating any statement the connection is executing. + // See https://dev.mysql.com/doc/refman/8.0/en/kill.html. + Query bool `protobuf:"varint,2,opt,name=query" json:"query"` + XXX_unrecognized []byte `json:"-"` } -func (m *TiFlashScanContext) GetSegments() uint64 { - if m != nil && m.Segments != nil { - return *m.Segments +func (m *Kill) Reset() { *m = Kill{} } +func (m *Kill) String() string { return proto.CompactTextString(m) } +func (*Kill) ProtoMessage() {} +func (*Kill) Descriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{21} } + +func (m *Kill) GetConnID() uint64 { + if m != nil { + return m.ConnID } return 0 } -func (m *TiFlashScanContext) GetReadTasks() uint64 { - if m != nil && m.ReadTasks != nil { - return *m.ReadTasks +func (m *Kill) GetQuery() bool { + if m != nil { + return m.Query } - return 0 + return false } -func (m *TiFlashScanContext) GetDeltaRows() uint64 { - if m != nil && m.DeltaRows != nil { - return *m.DeltaRows - } - return 0 +type ExplainForConnection struct { + ConnectionId uint64 `protobuf:"varint,1,opt,name=connection_id,json=connectionId" json:"connection_id"` + XXX_unrecognized []byte `json:"-"` } -func (m *TiFlashScanContext) GetDeltaBytes() uint64 { - if m != nil && m.DeltaBytes != nil { - return *m.DeltaBytes +func (m *ExplainForConnection) Reset() { *m = ExplainForConnection{} } +func (m *ExplainForConnection) String() string { return proto.CompactTextString(m) } +func (*ExplainForConnection) ProtoMessage() {} +func (*ExplainForConnection) Descriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{22} } + +func (m *ExplainForConnection) GetConnectionId() uint64 { + if m != nil { + return m.ConnectionId } return 0 } -func (m *TiFlashScanContext) GetMvccInputRows() uint64 { - if m != nil && m.MvccInputRows != nil { - return *m.MvccInputRows - } - return 0 +type ExecutorExecutionSummary struct { + // Total time cost in this executor. Includes self time cost and children time cost. + TimeProcessedNs *uint64 `protobuf:"varint,1,opt,name=time_processed_ns,json=timeProcessedNs" json:"time_processed_ns,omitempty"` + // How many rows this executor produced totally. + NumProducedRows *uint64 `protobuf:"varint,2,opt,name=num_produced_rows,json=numProducedRows" json:"num_produced_rows,omitempty"` + // How many times executor's `next()` is called. + NumIterations *uint64 `protobuf:"varint,3,opt,name=num_iterations,json=numIterations" json:"num_iterations,omitempty"` + // Coresponding executor id + ExecutorId *string `protobuf:"bytes,4,opt,name=executor_id,json=executorId" json:"executor_id,omitempty"` + // The execution concurrency for this executor + Concurrency *uint64 `protobuf:"varint,5,opt,name=concurrency" json:"concurrency,omitempty"` + // Types that are valid to be assigned to DetailInfo: + // *ExecutorExecutionSummary_TiflashScanContext + DetailInfo isExecutorExecutionSummary_DetailInfo `protobuf_oneof:"DetailInfo"` + // Serialize kvproto resource_manager.Consumption to tell tidb the consumption info. For now it's only for tiflash. + // And it's the ru consumption of one MPPTask/cop/batchCop instead of one executor. + RuConsumption []byte `protobuf:"bytes,7,opt,name=ru_consumption,json=ruConsumption" json:"ru_consumption,omitempty"` + // Only for tiflash, records the wait info. + TiflashWaitSummary *TiFlashWaitSummary `protobuf:"bytes,8,opt,name=tiflash_wait_summary,json=tiflashWaitSummary" json:"tiflash_wait_summary,omitempty"` + XXX_unrecognized []byte `json:"-"` } -func (m *TiFlashScanContext) GetMvccInputBytes() uint64 { - if m != nil && m.MvccInputBytes != nil { - return *m.MvccInputBytes - } - return 0 +func (m *ExecutorExecutionSummary) Reset() { *m = ExecutorExecutionSummary{} } +func (m *ExecutorExecutionSummary) String() string { return proto.CompactTextString(m) } +func (*ExecutorExecutionSummary) ProtoMessage() {} +func (*ExecutorExecutionSummary) Descriptor() ([]byte, []int) { + return fileDescriptorExecutor, []int{23} } -func (m *TiFlashScanContext) GetMvccOutputRows() uint64 { - if m != nil && m.MvccOutputRows != nil { - return *m.MvccOutputRows - } - return 0 +type isExecutorExecutionSummary_DetailInfo interface { + isExecutorExecutionSummary_DetailInfo() + MarshalTo([]byte) (int, error) + Size() int } -func (m *TiFlashScanContext) GetLmSkipRows() uint64 { - if m != nil && m.LmSkipRows != nil { - return *m.LmSkipRows - } - return 0 +type ExecutorExecutionSummary_TiflashScanContext struct { + TiflashScanContext *TiFlashScanContext `protobuf:"bytes,6,opt,name=tiflash_scan_context,json=tiflashScanContext,oneof"` } -func (m *TiFlashScanContext) GetTotalBuildInputstreamMs() uint64 { - if m != nil && m.TotalBuildInputstreamMs != nil { - return *m.TotalBuildInputstreamMs +func (*ExecutorExecutionSummary_TiflashScanContext) isExecutorExecutionSummary_DetailInfo() {} + +func (m *ExecutorExecutionSummary) GetDetailInfo() isExecutorExecutionSummary_DetailInfo { + if m != nil { + return m.DetailInfo } - return 0 + return nil } -func (m *TiFlashScanContext) GetTotalBuildBitmapMs() uint64 { - if m != nil && m.TotalBuildBitmapMs != nil { - return *m.TotalBuildBitmapMs +func (m *ExecutorExecutionSummary) GetTimeProcessedNs() uint64 { + if m != nil && m.TimeProcessedNs != nil { + return *m.TimeProcessedNs } return 0 } -func (m *TiFlashScanContext) GetMinLocalStreamMs() uint64 { - if m != nil && m.MinLocalStreamMs != nil { - return *m.MinLocalStreamMs +func (m *ExecutorExecutionSummary) GetNumProducedRows() uint64 { + if m != nil && m.NumProducedRows != nil { + return *m.NumProducedRows } return 0 } -func (m *TiFlashScanContext) GetMaxLocalStreamMs() uint64 { - if m != nil && m.MaxLocalStreamMs != nil { - return *m.MaxLocalStreamMs +func (m *ExecutorExecutionSummary) GetNumIterations() uint64 { + if m != nil && m.NumIterations != nil { + return *m.NumIterations } return 0 } -func (m *TiFlashScanContext) GetMinRemoteStreamMs() uint64 { - if m != nil && m.MinRemoteStreamMs != nil { - return *m.MinRemoteStreamMs +func (m *ExecutorExecutionSummary) GetExecutorId() string { + if m != nil && m.ExecutorId != nil { + return *m.ExecutorId } - return 0 + return "" } -func (m *TiFlashScanContext) GetMaxRemoteStreamMs() uint64 { - if m != nil && m.MaxRemoteStreamMs != nil { - return *m.MaxRemoteStreamMs +func (m *ExecutorExecutionSummary) GetConcurrency() uint64 { + if m != nil && m.Concurrency != nil { + return *m.Concurrency } return 0 } -func (m *TiFlashScanContext) GetRegionsOfInstance() []*TiFlashRegionNumOfInstance { - if m != nil { - return m.RegionsOfInstance +func (m *ExecutorExecutionSummary) GetTiflashScanContext() *TiFlashScanContext { + if x, ok := m.GetDetailInfo().(*ExecutorExecutionSummary_TiflashScanContext); ok { + return x.TiflashScanContext } return nil } -func (m *TiFlashScanContext) GetDmfileMvccScannedRows() uint64 { - if m != nil && m.DmfileMvccScannedRows != nil { - return *m.DmfileMvccScannedRows +func (m *ExecutorExecutionSummary) GetRuConsumption() []byte { + if m != nil { + return m.RuConsumption } - return 0 + return nil } -func (m *TiFlashScanContext) GetDmfileMvccSkippedRows() uint64 { - if m != nil && m.DmfileMvccSkippedRows != nil { - return *m.DmfileMvccSkippedRows +func (m *ExecutorExecutionSummary) GetTiflashWaitSummary() *TiFlashWaitSummary { + if m != nil { + return m.TiflashWaitSummary } - return 0 + return nil } -func (m *TiFlashScanContext) GetDmfileLmFilterScannedRows() uint64 { - if m != nil && m.DmfileLmFilterScannedRows != nil { - return *m.DmfileLmFilterScannedRows +// XXX_OneofFuncs is for the internal use of the proto package. +func (*ExecutorExecutionSummary) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { + return _ExecutorExecutionSummary_OneofMarshaler, _ExecutorExecutionSummary_OneofUnmarshaler, _ExecutorExecutionSummary_OneofSizer, []interface{}{ + (*ExecutorExecutionSummary_TiflashScanContext)(nil), } - return 0 } -func (m *TiFlashScanContext) GetDmfileLmFilterSkippedRows() uint64 { - if m != nil && m.DmfileLmFilterSkippedRows != nil { - return *m.DmfileLmFilterSkippedRows +func _ExecutorExecutionSummary_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { + m := msg.(*ExecutorExecutionSummary) + // DetailInfo + switch x := m.DetailInfo.(type) { + case *ExecutorExecutionSummary_TiflashScanContext: + _ = b.EncodeVarint(6<<3 | proto.WireBytes) + if err := b.EncodeMessage(x.TiflashScanContext); err != nil { + return err + } + case nil: + default: + return fmt.Errorf("ExecutorExecutionSummary.DetailInfo has unexpected type %T", x) } - return 0 + return nil } -func (m *TiFlashScanContext) GetTotalVectorIdxLoadFromS3() uint64 { - if m != nil && m.TotalVectorIdxLoadFromS3 != nil { - return *m.TotalVectorIdxLoadFromS3 +func _ExecutorExecutionSummary_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { + m := msg.(*ExecutorExecutionSummary) + switch tag { + case 6: // DetailInfo.tiflash_scan_context + if wire != proto.WireBytes { + return true, proto.ErrInternalBadWireType + } + msg := new(TiFlashScanContext) + err := b.DecodeMessage(msg) + m.DetailInfo = &ExecutorExecutionSummary_TiflashScanContext{msg} + return true, err + default: + return false, nil } - return 0 } -func (m *TiFlashScanContext) GetTotalVectorIdxLoadFromDisk() uint64 { - if m != nil && m.TotalVectorIdxLoadFromDisk != nil { - return *m.TotalVectorIdxLoadFromDisk +func _ExecutorExecutionSummary_OneofSizer(msg proto.Message) (n int) { + m := msg.(*ExecutorExecutionSummary) + // DetailInfo + switch x := m.DetailInfo.(type) { + case *ExecutorExecutionSummary_TiflashScanContext: + s := proto.Size(x.TiflashScanContext) + n += proto.SizeVarint(6<<3 | proto.WireBytes) + n += proto.SizeVarint(uint64(s)) + n += s + case nil: + default: + panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) } - return 0 + return n } -func (m *TiFlashScanContext) GetTotalVectorIdxLoadFromCache() uint64 { - if m != nil && m.TotalVectorIdxLoadFromCache != nil { - return *m.TotalVectorIdxLoadFromCache +type TiFlashExecutionInfo struct { + // The execution summary of each executor, no order limitation. + ExecutionSummaries []*ExecutorExecutionSummary `protobuf:"bytes,1,rep,name=execution_summaries,json=executionSummaries" json:"execution_summaries,omitempty"` + XXX_unrecognized []byte `json:"-"` +} + +func (m *TiFlashExecutionInfo) Reset() { *m = TiFlashExecutionInfo{} } +func (m *TiFlashExecutionInfo) String() string { return proto.CompactTextString(m) } +func (*TiFlashExecutionInfo) ProtoMessage() {} +func (*TiFlashExecutionInfo) Descriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{24} } + +func (m *TiFlashExecutionInfo) GetExecutionSummaries() []*ExecutorExecutionSummary { + if m != nil { + return m.ExecutionSummaries } - return 0 + return nil } -func (m *TiFlashScanContext) GetTotalVectorIdxLoadTimeMs() uint64 { - if m != nil && m.TotalVectorIdxLoadTimeMs != nil { - return *m.TotalVectorIdxLoadTimeMs +type TiFlashRegionNumOfInstance struct { + InstanceId *string `protobuf:"bytes,1,opt,name=instance_id,json=instanceId" json:"instance_id,omitempty"` + RegionNum *uint64 `protobuf:"varint,2,opt,name=region_num,json=regionNum" json:"region_num,omitempty"` + XXX_unrecognized []byte `json:"-"` +} + +func (m *TiFlashRegionNumOfInstance) Reset() { *m = TiFlashRegionNumOfInstance{} } +func (m *TiFlashRegionNumOfInstance) String() string { return proto.CompactTextString(m) } +func (*TiFlashRegionNumOfInstance) ProtoMessage() {} +func (*TiFlashRegionNumOfInstance) Descriptor() ([]byte, []int) { + return fileDescriptorExecutor, []int{25} +} + +func (m *TiFlashRegionNumOfInstance) GetInstanceId() string { + if m != nil && m.InstanceId != nil { + return *m.InstanceId } - return 0 + return "" } -func (m *TiFlashScanContext) GetTotalVectorIdxSearchTimeMs() uint64 { - if m != nil && m.TotalVectorIdxSearchTimeMs != nil { - return *m.TotalVectorIdxSearchTimeMs +func (m *TiFlashRegionNumOfInstance) GetRegionNum() uint64 { + if m != nil && m.RegionNum != nil { + return *m.RegionNum } return 0 } -func (m *TiFlashScanContext) GetTotalVectorIdxSearchVisitedNodes() uint64 { - if m != nil && m.TotalVectorIdxSearchVisitedNodes != nil { - return *m.TotalVectorIdxSearchVisitedNodes +type TiFlashScanContext struct { + DmfileScannedPacks *uint64 `protobuf:"varint,1,opt,name=dmfile_scanned_packs,json=dmfileScannedPacks" json:"dmfile_scanned_packs,omitempty"` + DmfileSkippedPacks *uint64 `protobuf:"varint,2,opt,name=dmfile_skipped_packs,json=dmfileSkippedPacks" json:"dmfile_skipped_packs,omitempty"` + DmfileDataScannedRows *uint64 `protobuf:"varint,3,opt,name=dmfile_data_scanned_rows,json=dmfileDataScannedRows" json:"dmfile_data_scanned_rows,omitempty"` + DmfileDataSkippedRows *uint64 `protobuf:"varint,4,opt,name=dmfile_data_skipped_rows,json=dmfileDataSkippedRows" json:"dmfile_data_skipped_rows,omitempty"` + TotalDmfileRsLoadMs *uint64 `protobuf:"varint,5,opt,name=total_dmfile_rs_load_ms,json=totalDmfileRsLoadMs" json:"total_dmfile_rs_load_ms,omitempty"` + TotalDmfileReadMs *uint64 `protobuf:"varint,6,opt,name=total_dmfile_read_ms,json=totalDmfileReadMs" json:"total_dmfile_read_ms,omitempty"` + TotalBuildSnapshotMs *uint64 `protobuf:"varint,7,opt,name=total_build_snapshot_ms,json=totalBuildSnapshotMs" json:"total_build_snapshot_ms,omitempty"` + LocalRegions *uint64 `protobuf:"varint,8,opt,name=local_regions,json=localRegions" json:"local_regions,omitempty"` + RemoteRegions *uint64 `protobuf:"varint,9,opt,name=remote_regions,json=remoteRegions" json:"remote_regions,omitempty"` + UserReadBytes *uint64 `protobuf:"varint,10,opt,name=user_read_bytes,json=userReadBytes" json:"user_read_bytes,omitempty"` + TotalLearnerReadMs *uint64 `protobuf:"varint,11,opt,name=total_learner_read_ms,json=totalLearnerReadMs" json:"total_learner_read_ms,omitempty"` + DisaggReadCacheHitBytes *uint64 `protobuf:"varint,12,opt,name=disagg_read_cache_hit_bytes,json=disaggReadCacheHitBytes" json:"disagg_read_cache_hit_bytes,omitempty"` + DisaggReadCacheMissBytes *uint64 `protobuf:"varint,13,opt,name=disagg_read_cache_miss_bytes,json=disaggReadCacheMissBytes" json:"disagg_read_cache_miss_bytes,omitempty"` + TotalDmfileRsCheckMs *uint64 `protobuf:"varint,14,opt,name=total_dmfile_rs_check_ms,json=totalDmfileRsCheckMs" json:"total_dmfile_rs_check_ms,omitempty"` + StaleReadRegions *uint64 `protobuf:"varint,15,opt,name=stale_read_regions,json=staleReadRegions" json:"stale_read_regions,omitempty"` + Segments *uint64 `protobuf:"varint,16,opt,name=segments" json:"segments,omitempty"` + ReadTasks *uint64 `protobuf:"varint,17,opt,name=read_tasks,json=readTasks" json:"read_tasks,omitempty"` + DeltaRows *uint64 `protobuf:"varint,18,opt,name=delta_rows,json=deltaRows" json:"delta_rows,omitempty"` + DeltaBytes *uint64 `protobuf:"varint,19,opt,name=delta_bytes,json=deltaBytes" json:"delta_bytes,omitempty"` + MvccInputRows *uint64 `protobuf:"varint,20,opt,name=mvcc_input_rows,json=mvccInputRows" json:"mvcc_input_rows,omitempty"` + MvccInputBytes *uint64 `protobuf:"varint,21,opt,name=mvcc_input_bytes,json=mvccInputBytes" json:"mvcc_input_bytes,omitempty"` + MvccOutputRows *uint64 `protobuf:"varint,22,opt,name=mvcc_output_rows,json=mvccOutputRows" json:"mvcc_output_rows,omitempty"` + LmSkipRows *uint64 `protobuf:"varint,23,opt,name=lm_skip_rows,json=lmSkipRows" json:"lm_skip_rows,omitempty"` + TotalBuildInputstreamMs *uint64 `protobuf:"varint,24,opt,name=total_build_inputstream_ms,json=totalBuildInputstreamMs" json:"total_build_inputstream_ms,omitempty"` + TotalBuildBitmapMs *uint64 `protobuf:"varint,25,opt,name=total_build_bitmap_ms,json=totalBuildBitmapMs" json:"total_build_bitmap_ms,omitempty"` + MinLocalStreamMs *uint64 `protobuf:"varint,26,opt,name=min_local_stream_ms,json=minLocalStreamMs" json:"min_local_stream_ms,omitempty"` + MaxLocalStreamMs *uint64 `protobuf:"varint,27,opt,name=max_local_stream_ms,json=maxLocalStreamMs" json:"max_local_stream_ms,omitempty"` + MinRemoteStreamMs *uint64 `protobuf:"varint,28,opt,name=min_remote_stream_ms,json=minRemoteStreamMs" json:"min_remote_stream_ms,omitempty"` + MaxRemoteStreamMs *uint64 `protobuf:"varint,29,opt,name=max_remote_stream_ms,json=maxRemoteStreamMs" json:"max_remote_stream_ms,omitempty"` + RegionsOfInstance []*TiFlashRegionNumOfInstance `protobuf:"bytes,30,rep,name=regions_of_instance,json=regionsOfInstance" json:"regions_of_instance,omitempty"` + DmfileMvccScannedRows *uint64 `protobuf:"varint,31,opt,name=dmfile_mvcc_scanned_rows,json=dmfileMvccScannedRows" json:"dmfile_mvcc_scanned_rows,omitempty"` + DmfileMvccSkippedRows *uint64 `protobuf:"varint,32,opt,name=dmfile_mvcc_skipped_rows,json=dmfileMvccSkippedRows" json:"dmfile_mvcc_skipped_rows,omitempty"` + DmfileLmFilterScannedRows *uint64 `protobuf:"varint,33,opt,name=dmfile_lm_filter_scanned_rows,json=dmfileLmFilterScannedRows" json:"dmfile_lm_filter_scanned_rows,omitempty"` + DmfileLmFilterSkippedRows *uint64 `protobuf:"varint,34,opt,name=dmfile_lm_filter_skipped_rows,json=dmfileLmFilterSkippedRows" json:"dmfile_lm_filter_skipped_rows,omitempty"` + TotalVectorIdxLoadFromS3 *uint64 `protobuf:"varint,100,opt,name=total_vector_idx_load_from_s3,json=totalVectorIdxLoadFromS3" json:"total_vector_idx_load_from_s3,omitempty"` + TotalVectorIdxLoadFromDisk *uint64 `protobuf:"varint,101,opt,name=total_vector_idx_load_from_disk,json=totalVectorIdxLoadFromDisk" json:"total_vector_idx_load_from_disk,omitempty"` + TotalVectorIdxLoadFromCache *uint64 `protobuf:"varint,102,opt,name=total_vector_idx_load_from_cache,json=totalVectorIdxLoadFromCache" json:"total_vector_idx_load_from_cache,omitempty"` + TotalVectorIdxLoadTimeMs *uint64 `protobuf:"varint,103,opt,name=total_vector_idx_load_time_ms,json=totalVectorIdxLoadTimeMs" json:"total_vector_idx_load_time_ms,omitempty"` + TotalVectorIdxSearchTimeMs *uint64 `protobuf:"varint,104,opt,name=total_vector_idx_search_time_ms,json=totalVectorIdxSearchTimeMs" json:"total_vector_idx_search_time_ms,omitempty"` + TotalVectorIdxSearchVisitedNodes *uint64 `protobuf:"varint,105,opt,name=total_vector_idx_search_visited_nodes,json=totalVectorIdxSearchVisitedNodes" json:"total_vector_idx_search_visited_nodes,omitempty"` + TotalVectorIdxSearchDiscardedNodes *uint64 `protobuf:"varint,106,opt,name=total_vector_idx_search_discarded_nodes,json=totalVectorIdxSearchDiscardedNodes" json:"total_vector_idx_search_discarded_nodes,omitempty"` + TotalVectorIdxReadVecTimeMs *uint64 `protobuf:"varint,107,opt,name=total_vector_idx_read_vec_time_ms,json=totalVectorIdxReadVecTimeMs" json:"total_vector_idx_read_vec_time_ms,omitempty"` + TotalVectorIdxReadOthersTimeMs *uint64 `protobuf:"varint,108,opt,name=total_vector_idx_read_others_time_ms,json=totalVectorIdxReadOthersTimeMs" json:"total_vector_idx_read_others_time_ms,omitempty"` + XXX_unrecognized []byte `json:"-"` +} + +func (m *TiFlashScanContext) Reset() { *m = TiFlashScanContext{} } +func (m *TiFlashScanContext) String() string { return proto.CompactTextString(m) } +func (*TiFlashScanContext) ProtoMessage() {} +func (*TiFlashScanContext) Descriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{26} } + +func (m *TiFlashScanContext) GetDmfileScannedPacks() uint64 { + if m != nil && m.DmfileScannedPacks != nil { + return *m.DmfileScannedPacks } return 0 } -func (m *TiFlashScanContext) GetTotalVectorIdxSearchDiscardedNodes() uint64 { - if m != nil && m.TotalVectorIdxSearchDiscardedNodes != nil { - return *m.TotalVectorIdxSearchDiscardedNodes +func (m *TiFlashScanContext) GetDmfileSkippedPacks() uint64 { + if m != nil && m.DmfileSkippedPacks != nil { + return *m.DmfileSkippedPacks } return 0 } -func (m *TiFlashScanContext) GetTotalVectorIdxReadVecTimeMs() uint64 { - if m != nil && m.TotalVectorIdxReadVecTimeMs != nil { - return *m.TotalVectorIdxReadVecTimeMs +func (m *TiFlashScanContext) GetDmfileDataScannedRows() uint64 { + if m != nil && m.DmfileDataScannedRows != nil { + return *m.DmfileDataScannedRows } return 0 } -func (m *TiFlashScanContext) GetTotalVectorIdxReadOthersTimeMs() uint64 { - if m != nil && m.TotalVectorIdxReadOthersTimeMs != nil { - return *m.TotalVectorIdxReadOthersTimeMs +func (m *TiFlashScanContext) GetDmfileDataSkippedRows() uint64 { + if m != nil && m.DmfileDataSkippedRows != nil { + return *m.DmfileDataSkippedRows } return 0 } -type TiFlashWaitSummary struct { - MinTSOWaitNs *uint64 `protobuf:"varint,1,opt,name=minTSO_wait_ns,json=minTSOWaitNs" json:"minTSO_wait_ns,omitempty"` - PipelineQueueWaitNs *uint64 `protobuf:"varint,2,opt,name=pipeline_queue_wait_ns,json=pipelineQueueWaitNs" json:"pipeline_queue_wait_ns,omitempty"` - PipelineBreakerWaitNs *uint64 `protobuf:"varint,3,opt,name=pipeline_breaker_wait_ns,json=pipelineBreakerWaitNs" json:"pipeline_breaker_wait_ns,omitempty"` - XXX_unrecognized []byte `json:"-"` +func (m *TiFlashScanContext) GetTotalDmfileRsLoadMs() uint64 { + if m != nil && m.TotalDmfileRsLoadMs != nil { + return *m.TotalDmfileRsLoadMs + } + return 0 } -func (m *TiFlashWaitSummary) Reset() { *m = TiFlashWaitSummary{} } -func (m *TiFlashWaitSummary) String() string { return proto.CompactTextString(m) } -func (*TiFlashWaitSummary) ProtoMessage() {} -func (*TiFlashWaitSummary) Descriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{22} } - -func (m *TiFlashWaitSummary) GetMinTSOWaitNs() uint64 { - if m != nil && m.MinTSOWaitNs != nil { - return *m.MinTSOWaitNs +func (m *TiFlashScanContext) GetTotalDmfileReadMs() uint64 { + if m != nil && m.TotalDmfileReadMs != nil { + return *m.TotalDmfileReadMs } return 0 } -func (m *TiFlashWaitSummary) GetPipelineQueueWaitNs() uint64 { - if m != nil && m.PipelineQueueWaitNs != nil { - return *m.PipelineQueueWaitNs +func (m *TiFlashScanContext) GetTotalBuildSnapshotMs() uint64 { + if m != nil && m.TotalBuildSnapshotMs != nil { + return *m.TotalBuildSnapshotMs } return 0 } -func (m *TiFlashWaitSummary) GetPipelineBreakerWaitNs() uint64 { - if m != nil && m.PipelineBreakerWaitNs != nil { - return *m.PipelineBreakerWaitNs +func (m *TiFlashScanContext) GetLocalRegions() uint64 { + if m != nil && m.LocalRegions != nil { + return *m.LocalRegions } return 0 } -type Sort struct { - ByItems []*ByItem `protobuf:"bytes,1,rep,name=byItems" json:"byItems,omitempty"` - IsPartialSort *bool `protobuf:"varint,2,opt,name=isPartialSort" json:"isPartialSort,omitempty"` - Child *Executor `protobuf:"bytes,3,opt,name=child" json:"child,omitempty"` - XXX_unrecognized []byte `json:"-"` +func (m *TiFlashScanContext) GetRemoteRegions() uint64 { + if m != nil && m.RemoteRegions != nil { + return *m.RemoteRegions + } + return 0 } -func (m *Sort) Reset() { *m = Sort{} } -func (m *Sort) String() string { return proto.CompactTextString(m) } -func (*Sort) ProtoMessage() {} -func (*Sort) Descriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{23} } +func (m *TiFlashScanContext) GetUserReadBytes() uint64 { + if m != nil && m.UserReadBytes != nil { + return *m.UserReadBytes + } + return 0 +} -func (m *Sort) GetByItems() []*ByItem { - if m != nil { - return m.ByItems +func (m *TiFlashScanContext) GetTotalLearnerReadMs() uint64 { + if m != nil && m.TotalLearnerReadMs != nil { + return *m.TotalLearnerReadMs } - return nil + return 0 } -func (m *Sort) GetIsPartialSort() bool { - if m != nil && m.IsPartialSort != nil { - return *m.IsPartialSort +func (m *TiFlashScanContext) GetDisaggReadCacheHitBytes() uint64 { + if m != nil && m.DisaggReadCacheHitBytes != nil { + return *m.DisaggReadCacheHitBytes } - return false + return 0 } -func (m *Sort) GetChild() *Executor { - if m != nil { - return m.Child +func (m *TiFlashScanContext) GetDisaggReadCacheMissBytes() uint64 { + if m != nil && m.DisaggReadCacheMissBytes != nil { + return *m.DisaggReadCacheMissBytes } - return nil + return 0 } -type WindowFrameBound struct { - Type WindowBoundType `protobuf:"varint,1,opt,name=type,enum=tipb.WindowBoundType" json:"type"` - Unbounded bool `protobuf:"varint,2,opt,name=unbounded" json:"unbounded"` - Offset *uint64 `protobuf:"varint,3,opt,name=offset" json:"offset,omitempty"` - CalcFuncs []*Expr `protobuf:"bytes,4,rep,name=calcFuncs" json:"calcFuncs,omitempty"` - FrameRange *Expr `protobuf:"bytes,5,opt,name=frame_range,json=frameRange" json:"frame_range,omitempty"` - CmpDataType *RangeCmpDataType `protobuf:"varint,6,opt,name=cmp_data_type,json=cmpDataType,enum=tipb.RangeCmpDataType" json:"cmp_data_type,omitempty"` - XXX_unrecognized []byte `json:"-"` +func (m *TiFlashScanContext) GetTotalDmfileRsCheckMs() uint64 { + if m != nil && m.TotalDmfileRsCheckMs != nil { + return *m.TotalDmfileRsCheckMs + } + return 0 } -func (m *WindowFrameBound) Reset() { *m = WindowFrameBound{} } -func (m *WindowFrameBound) String() string { return proto.CompactTextString(m) } -func (*WindowFrameBound) ProtoMessage() {} -func (*WindowFrameBound) Descriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{24} } - -func (m *WindowFrameBound) GetType() WindowBoundType { - if m != nil { - return m.Type +func (m *TiFlashScanContext) GetStaleReadRegions() uint64 { + if m != nil && m.StaleReadRegions != nil { + return *m.StaleReadRegions } - return WindowBoundType_Following + return 0 } -func (m *WindowFrameBound) GetUnbounded() bool { - if m != nil { - return m.Unbounded +func (m *TiFlashScanContext) GetSegments() uint64 { + if m != nil && m.Segments != nil { + return *m.Segments } - return false + return 0 } -func (m *WindowFrameBound) GetOffset() uint64 { - if m != nil && m.Offset != nil { - return *m.Offset +func (m *TiFlashScanContext) GetReadTasks() uint64 { + if m != nil && m.ReadTasks != nil { + return *m.ReadTasks } return 0 } -func (m *WindowFrameBound) GetCalcFuncs() []*Expr { - if m != nil { - return m.CalcFuncs +func (m *TiFlashScanContext) GetDeltaRows() uint64 { + if m != nil && m.DeltaRows != nil { + return *m.DeltaRows } - return nil + return 0 } -func (m *WindowFrameBound) GetFrameRange() *Expr { - if m != nil { - return m.FrameRange +func (m *TiFlashScanContext) GetDeltaBytes() uint64 { + if m != nil && m.DeltaBytes != nil { + return *m.DeltaBytes } - return nil + return 0 } -func (m *WindowFrameBound) GetCmpDataType() RangeCmpDataType { - if m != nil && m.CmpDataType != nil { - return *m.CmpDataType +func (m *TiFlashScanContext) GetMvccInputRows() uint64 { + if m != nil && m.MvccInputRows != nil { + return *m.MvccInputRows } - return RangeCmpDataType_Int + return 0 } -type WindowFrame struct { - Type WindowFrameType `protobuf:"varint,1,opt,name=type,enum=tipb.WindowFrameType" json:"type"` - Start *WindowFrameBound `protobuf:"bytes,2,opt,name=start" json:"start,omitempty"` - End *WindowFrameBound `protobuf:"bytes,3,opt,name=end" json:"end,omitempty"` - XXX_unrecognized []byte `json:"-"` +func (m *TiFlashScanContext) GetMvccInputBytes() uint64 { + if m != nil && m.MvccInputBytes != nil { + return *m.MvccInputBytes + } + return 0 } -func (m *WindowFrame) Reset() { *m = WindowFrame{} } -func (m *WindowFrame) String() string { return proto.CompactTextString(m) } -func (*WindowFrame) ProtoMessage() {} -func (*WindowFrame) Descriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{25} } - -func (m *WindowFrame) GetType() WindowFrameType { - if m != nil { - return m.Type +func (m *TiFlashScanContext) GetMvccOutputRows() uint64 { + if m != nil && m.MvccOutputRows != nil { + return *m.MvccOutputRows } - return WindowFrameType_Rows + return 0 } -func (m *WindowFrame) GetStart() *WindowFrameBound { - if m != nil { - return m.Start +func (m *TiFlashScanContext) GetLmSkipRows() uint64 { + if m != nil && m.LmSkipRows != nil { + return *m.LmSkipRows } - return nil + return 0 } -func (m *WindowFrame) GetEnd() *WindowFrameBound { - if m != nil { - return m.End +func (m *TiFlashScanContext) GetTotalBuildInputstreamMs() uint64 { + if m != nil && m.TotalBuildInputstreamMs != nil { + return *m.TotalBuildInputstreamMs } - return nil + return 0 } -type Window struct { - FuncDesc []*Expr `protobuf:"bytes,1,rep,name=func_desc,json=funcDesc" json:"func_desc,omitempty"` - PartitionBy []*ByItem `protobuf:"bytes,2,rep,name=partition_by,json=partitionBy" json:"partition_by,omitempty"` - OrderBy []*ByItem `protobuf:"bytes,3,rep,name=order_by,json=orderBy" json:"order_by,omitempty"` - Frame *WindowFrame `protobuf:"bytes,4,opt,name=frame" json:"frame,omitempty"` - Child *Executor `protobuf:"bytes,5,opt,name=child" json:"child,omitempty"` - XXX_unrecognized []byte `json:"-"` +func (m *TiFlashScanContext) GetTotalBuildBitmapMs() uint64 { + if m != nil && m.TotalBuildBitmapMs != nil { + return *m.TotalBuildBitmapMs + } + return 0 } -func (m *Window) Reset() { *m = Window{} } -func (m *Window) String() string { return proto.CompactTextString(m) } -func (*Window) ProtoMessage() {} -func (*Window) Descriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{26} } - -func (m *Window) GetFuncDesc() []*Expr { - if m != nil { - return m.FuncDesc +func (m *TiFlashScanContext) GetMinLocalStreamMs() uint64 { + if m != nil && m.MinLocalStreamMs != nil { + return *m.MinLocalStreamMs } - return nil + return 0 } -func (m *Window) GetPartitionBy() []*ByItem { - if m != nil { - return m.PartitionBy +func (m *TiFlashScanContext) GetMaxLocalStreamMs() uint64 { + if m != nil && m.MaxLocalStreamMs != nil { + return *m.MaxLocalStreamMs } - return nil + return 0 } -func (m *Window) GetOrderBy() []*ByItem { - if m != nil { - return m.OrderBy +func (m *TiFlashScanContext) GetMinRemoteStreamMs() uint64 { + if m != nil && m.MinRemoteStreamMs != nil { + return *m.MinRemoteStreamMs } - return nil + return 0 } -func (m *Window) GetFrame() *WindowFrame { - if m != nil { - return m.Frame +func (m *TiFlashScanContext) GetMaxRemoteStreamMs() uint64 { + if m != nil && m.MaxRemoteStreamMs != nil { + return *m.MaxRemoteStreamMs } - return nil + return 0 } -func (m *Window) GetChild() *Executor { +func (m *TiFlashScanContext) GetRegionsOfInstance() []*TiFlashRegionNumOfInstance { if m != nil { - return m.Child + return m.RegionsOfInstance } return nil } -type GroupingExpr struct { - GroupingExpr []*Expr `protobuf:"bytes,1,rep,name=grouping_expr,json=groupingExpr" json:"grouping_expr,omitempty"` - XXX_unrecognized []byte `json:"-"` +func (m *TiFlashScanContext) GetDmfileMvccScannedRows() uint64 { + if m != nil && m.DmfileMvccScannedRows != nil { + return *m.DmfileMvccScannedRows + } + return 0 } -func (m *GroupingExpr) Reset() { *m = GroupingExpr{} } -func (m *GroupingExpr) String() string { return proto.CompactTextString(m) } -func (*GroupingExpr) ProtoMessage() {} -func (*GroupingExpr) Descriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{27} } - -func (m *GroupingExpr) GetGroupingExpr() []*Expr { - if m != nil { - return m.GroupingExpr +func (m *TiFlashScanContext) GetDmfileMvccSkippedRows() uint64 { + if m != nil && m.DmfileMvccSkippedRows != nil { + return *m.DmfileMvccSkippedRows } - return nil + return 0 } -type GroupingSet struct { - GroupingExprs []*GroupingExpr `protobuf:"bytes,1,rep,name=grouping_exprs,json=groupingExprs" json:"grouping_exprs,omitempty"` - XXX_unrecognized []byte `json:"-"` +func (m *TiFlashScanContext) GetDmfileLmFilterScannedRows() uint64 { + if m != nil && m.DmfileLmFilterScannedRows != nil { + return *m.DmfileLmFilterScannedRows + } + return 0 } -func (m *GroupingSet) Reset() { *m = GroupingSet{} } -func (m *GroupingSet) String() string { return proto.CompactTextString(m) } -func (*GroupingSet) ProtoMessage() {} -func (*GroupingSet) Descriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{28} } - -func (m *GroupingSet) GetGroupingExprs() []*GroupingExpr { - if m != nil { - return m.GroupingExprs +func (m *TiFlashScanContext) GetDmfileLmFilterSkippedRows() uint64 { + if m != nil && m.DmfileLmFilterSkippedRows != nil { + return *m.DmfileLmFilterSkippedRows } - return nil + return 0 } -// Deprecated in the nearly feature usage -type Expand struct { - GroupingSets []*GroupingSet `protobuf:"bytes,1,rep,name=grouping_sets,json=groupingSets" json:"grouping_sets,omitempty"` - Child *Executor `protobuf:"bytes,2,opt,name=child" json:"child,omitempty"` - Version *uint64 `protobuf:"varint,3,opt,name=version" json:"version,omitempty"` - XXX_unrecognized []byte `json:"-"` +func (m *TiFlashScanContext) GetTotalVectorIdxLoadFromS3() uint64 { + if m != nil && m.TotalVectorIdxLoadFromS3 != nil { + return *m.TotalVectorIdxLoadFromS3 + } + return 0 } -func (m *Expand) Reset() { *m = Expand{} } -func (m *Expand) String() string { return proto.CompactTextString(m) } -func (*Expand) ProtoMessage() {} -func (*Expand) Descriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{29} } - -func (m *Expand) GetGroupingSets() []*GroupingSet { - if m != nil { - return m.GroupingSets +func (m *TiFlashScanContext) GetTotalVectorIdxLoadFromDisk() uint64 { + if m != nil && m.TotalVectorIdxLoadFromDisk != nil { + return *m.TotalVectorIdxLoadFromDisk } - return nil + return 0 } -func (m *Expand) GetChild() *Executor { - if m != nil { - return m.Child +func (m *TiFlashScanContext) GetTotalVectorIdxLoadFromCache() uint64 { + if m != nil && m.TotalVectorIdxLoadFromCache != nil { + return *m.TotalVectorIdxLoadFromCache } - return nil + return 0 } -func (m *Expand) GetVersion() uint64 { - if m != nil && m.Version != nil { - return *m.Version +func (m *TiFlashScanContext) GetTotalVectorIdxLoadTimeMs() uint64 { + if m != nil && m.TotalVectorIdxLoadTimeMs != nil { + return *m.TotalVectorIdxLoadTimeMs } return 0 } -type ExprSlice struct { - Exprs []*Expr `protobuf:"bytes,1,rep,name=exprs" json:"exprs,omitempty"` - XXX_unrecognized []byte `json:"-"` +func (m *TiFlashScanContext) GetTotalVectorIdxSearchTimeMs() uint64 { + if m != nil && m.TotalVectorIdxSearchTimeMs != nil { + return *m.TotalVectorIdxSearchTimeMs + } + return 0 } -func (m *ExprSlice) Reset() { *m = ExprSlice{} } -func (m *ExprSlice) String() string { return proto.CompactTextString(m) } -func (*ExprSlice) ProtoMessage() {} -func (*ExprSlice) Descriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{30} } - -func (m *ExprSlice) GetExprs() []*Expr { - if m != nil { - return m.Exprs +func (m *TiFlashScanContext) GetTotalVectorIdxSearchVisitedNodes() uint64 { + if m != nil && m.TotalVectorIdxSearchVisitedNodes != nil { + return *m.TotalVectorIdxSearchVisitedNodes } - return nil + return 0 } -type Expand2 struct { - ProjExprs []*ExprSlice `protobuf:"bytes,1,rep,name=proj_exprs,json=projExprs" json:"proj_exprs,omitempty"` - GeneratedOutputNames []string `protobuf:"bytes,2,rep,name=generated_output_names,json=generatedOutputNames" json:"generated_output_names,omitempty"` - Child *Executor `protobuf:"bytes,3,opt,name=child" json:"child,omitempty"` - XXX_unrecognized []byte `json:"-"` +func (m *TiFlashScanContext) GetTotalVectorIdxSearchDiscardedNodes() uint64 { + if m != nil && m.TotalVectorIdxSearchDiscardedNodes != nil { + return *m.TotalVectorIdxSearchDiscardedNodes + } + return 0 } -func (m *Expand2) Reset() { *m = Expand2{} } -func (m *Expand2) String() string { return proto.CompactTextString(m) } -func (*Expand2) ProtoMessage() {} -func (*Expand2) Descriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{31} } +func (m *TiFlashScanContext) GetTotalVectorIdxReadVecTimeMs() uint64 { + if m != nil && m.TotalVectorIdxReadVecTimeMs != nil { + return *m.TotalVectorIdxReadVecTimeMs + } + return 0 +} -func (m *Expand2) GetProjExprs() []*ExprSlice { - if m != nil { - return m.ProjExprs +func (m *TiFlashScanContext) GetTotalVectorIdxReadOthersTimeMs() uint64 { + if m != nil && m.TotalVectorIdxReadOthersTimeMs != nil { + return *m.TotalVectorIdxReadOthersTimeMs } - return nil + return 0 } -func (m *Expand2) GetGeneratedOutputNames() []string { +type TiFlashWaitSummary struct { + MinTSOWaitNs *uint64 `protobuf:"varint,1,opt,name=minTSO_wait_ns,json=minTSOWaitNs" json:"minTSO_wait_ns,omitempty"` + PipelineQueueWaitNs *uint64 `protobuf:"varint,2,opt,name=pipeline_queue_wait_ns,json=pipelineQueueWaitNs" json:"pipeline_queue_wait_ns,omitempty"` + PipelineBreakerWaitNs *uint64 `protobuf:"varint,3,opt,name=pipeline_breaker_wait_ns,json=pipelineBreakerWaitNs" json:"pipeline_breaker_wait_ns,omitempty"` + XXX_unrecognized []byte `json:"-"` +} + +func (m *TiFlashWaitSummary) Reset() { *m = TiFlashWaitSummary{} } +func (m *TiFlashWaitSummary) String() string { return proto.CompactTextString(m) } +func (*TiFlashWaitSummary) ProtoMessage() {} +func (*TiFlashWaitSummary) Descriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{27} } + +func (m *TiFlashWaitSummary) GetMinTSOWaitNs() uint64 { + if m != nil && m.MinTSOWaitNs != nil { + return *m.MinTSOWaitNs + } + return 0 +} + +func (m *TiFlashWaitSummary) GetPipelineQueueWaitNs() uint64 { + if m != nil && m.PipelineQueueWaitNs != nil { + return *m.PipelineQueueWaitNs + } + return 0 +} + +func (m *TiFlashWaitSummary) GetPipelineBreakerWaitNs() uint64 { + if m != nil && m.PipelineBreakerWaitNs != nil { + return *m.PipelineBreakerWaitNs + } + return 0 +} + +type Sort struct { + ByItems []*ByItem `protobuf:"bytes,1,rep,name=byItems" json:"byItems,omitempty"` + IsPartialSort *bool `protobuf:"varint,2,opt,name=isPartialSort" json:"isPartialSort,omitempty"` + Child *Executor `protobuf:"bytes,3,opt,name=child" json:"child,omitempty"` + XXX_unrecognized []byte `json:"-"` +} + +func (m *Sort) Reset() { *m = Sort{} } +func (m *Sort) String() string { return proto.CompactTextString(m) } +func (*Sort) ProtoMessage() {} +func (*Sort) Descriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{28} } + +func (m *Sort) GetByItems() []*ByItem { if m != nil { - return m.GeneratedOutputNames + return m.ByItems } return nil } -func (m *Expand2) GetChild() *Executor { +func (m *Sort) GetIsPartialSort() bool { + if m != nil && m.IsPartialSort != nil { + return *m.IsPartialSort + } + return false +} + +func (m *Sort) GetChild() *Executor { if m != nil { return m.Child } return nil } -type BroadcastQuery struct { - Query *string `protobuf:"bytes,1,opt,name=query" json:"query,omitempty"` - XXX_unrecognized []byte `json:"-"` +type WindowFrameBound struct { + Type WindowBoundType `protobuf:"varint,1,opt,name=type,enum=tipb.WindowBoundType" json:"type"` + Unbounded bool `protobuf:"varint,2,opt,name=unbounded" json:"unbounded"` + Offset *uint64 `protobuf:"varint,3,opt,name=offset" json:"offset,omitempty"` + CalcFuncs []*Expr `protobuf:"bytes,4,rep,name=calcFuncs" json:"calcFuncs,omitempty"` + FrameRange *Expr `protobuf:"bytes,5,opt,name=frame_range,json=frameRange" json:"frame_range,omitempty"` + CmpDataType *RangeCmpDataType `protobuf:"varint,6,opt,name=cmp_data_type,json=cmpDataType,enum=tipb.RangeCmpDataType" json:"cmp_data_type,omitempty"` + XXX_unrecognized []byte `json:"-"` } -func (m *BroadcastQuery) Reset() { *m = BroadcastQuery{} } -func (m *BroadcastQuery) String() string { return proto.CompactTextString(m) } -func (*BroadcastQuery) ProtoMessage() {} -func (*BroadcastQuery) Descriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{32} } +func (m *WindowFrameBound) Reset() { *m = WindowFrameBound{} } +func (m *WindowFrameBound) String() string { return proto.CompactTextString(m) } +func (*WindowFrameBound) ProtoMessage() {} +func (*WindowFrameBound) Descriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{29} } -func (m *BroadcastQuery) GetQuery() string { - if m != nil && m.Query != nil { - return *m.Query +func (m *WindowFrameBound) GetType() WindowBoundType { + if m != nil { + return m.Type } - return "" + return WindowBoundType_Following } -func init() { - proto.RegisterType((*Executor)(nil), "tipb.Executor") - proto.RegisterType((*ExchangeSender)(nil), "tipb.ExchangeSender") - proto.RegisterType((*IndexLookUp)(nil), "tipb.IndexLookUp") - proto.RegisterType((*EncodedBytesSlice)(nil), "tipb.EncodedBytesSlice") - proto.RegisterType((*ExchangeReceiver)(nil), "tipb.ExchangeReceiver") - proto.RegisterType((*ANNQueryInfo)(nil), "tipb.ANNQueryInfo") - proto.RegisterType((*TableScan)(nil), "tipb.TableScan") - proto.RegisterType((*PartitionTableScan)(nil), "tipb.PartitionTableScan") - proto.RegisterType((*Join)(nil), "tipb.Join") - proto.RegisterType((*RuntimeFilter)(nil), "tipb.RuntimeFilter") - proto.RegisterType((*IndexScan)(nil), "tipb.IndexScan") - proto.RegisterType((*Selection)(nil), "tipb.Selection") - proto.RegisterType((*Projection)(nil), "tipb.Projection") - proto.RegisterType((*Aggregation)(nil), "tipb.Aggregation") - proto.RegisterType((*TopN)(nil), "tipb.TopN") - proto.RegisterType((*Limit)(nil), "tipb.Limit") - proto.RegisterType((*Kill)(nil), "tipb.Kill") - proto.RegisterType((*ExplainForConnection)(nil), "tipb.ExplainForConnection") - proto.RegisterType((*ExecutorExecutionSummary)(nil), "tipb.ExecutorExecutionSummary") - proto.RegisterType((*TiFlashExecutionInfo)(nil), "tipb.TiFlashExecutionInfo") - proto.RegisterType((*TiFlashRegionNumOfInstance)(nil), "tipb.TiFlashRegionNumOfInstance") - proto.RegisterType((*TiFlashScanContext)(nil), "tipb.TiFlashScanContext") - proto.RegisterType((*TiFlashWaitSummary)(nil), "tipb.TiFlashWaitSummary") - proto.RegisterType((*Sort)(nil), "tipb.Sort") - proto.RegisterType((*WindowFrameBound)(nil), "tipb.WindowFrameBound") - proto.RegisterType((*WindowFrame)(nil), "tipb.WindowFrame") - proto.RegisterType((*Window)(nil), "tipb.Window") - proto.RegisterType((*GroupingExpr)(nil), "tipb.GroupingExpr") - proto.RegisterType((*GroupingSet)(nil), "tipb.GroupingSet") - proto.RegisterType((*Expand)(nil), "tipb.Expand") - proto.RegisterType((*ExprSlice)(nil), "tipb.ExprSlice") - proto.RegisterType((*Expand2)(nil), "tipb.Expand2") - proto.RegisterType((*BroadcastQuery)(nil), "tipb.BroadcastQuery") - proto.RegisterEnum("tipb.ExecType", ExecType_name, ExecType_value) - proto.RegisterEnum("tipb.ExchangeType", ExchangeType_name, ExchangeType_value) - proto.RegisterEnum("tipb.CompressionMode", CompressionMode_name, CompressionMode_value) - proto.RegisterEnum("tipb.EngineType", EngineType_name, EngineType_value) - proto.RegisterEnum("tipb.VectorIndexKind", VectorIndexKind_name, VectorIndexKind_value) - proto.RegisterEnum("tipb.VectorDistanceMetric", VectorDistanceMetric_name, VectorDistanceMetric_value) - proto.RegisterEnum("tipb.ANNQueryType", ANNQueryType_name, ANNQueryType_value) - proto.RegisterEnum("tipb.JoinType", JoinType_name, JoinType_value) - proto.RegisterEnum("tipb.JoinExecType", JoinExecType_name, JoinExecType_value) - proto.RegisterEnum("tipb.RuntimeFilterType", RuntimeFilterType_name, RuntimeFilterType_value) - proto.RegisterEnum("tipb.RuntimeFilterMode", RuntimeFilterMode_name, RuntimeFilterMode_value) - proto.RegisterEnum("tipb.TiFlashPreAggMode", TiFlashPreAggMode_name, TiFlashPreAggMode_value) - proto.RegisterEnum("tipb.WindowBoundType", WindowBoundType_name, WindowBoundType_value) - proto.RegisterEnum("tipb.RangeCmpDataType", RangeCmpDataType_name, RangeCmpDataType_value) - proto.RegisterEnum("tipb.WindowFrameType", WindowFrameType_name, WindowFrameType_value) +func (m *WindowFrameBound) GetUnbounded() bool { + if m != nil { + return m.Unbounded + } + return false } -func (m *Executor) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalTo(dAtA) - if err != nil { - return nil, err + +func (m *WindowFrameBound) GetOffset() uint64 { + if m != nil && m.Offset != nil { + return *m.Offset } - return dAtA[:n], nil + return 0 } -func (m *Executor) MarshalTo(dAtA []byte) (int, error) { - var i int - _ = i - var l int - _ = l - dAtA[i] = 0x8 - i++ - i = encodeVarintExecutor(dAtA, i, uint64(m.Tp)) - if m.TblScan != nil { - dAtA[i] = 0x12 - i++ - i = encodeVarintExecutor(dAtA, i, uint64(m.TblScan.Size())) - n1, err := m.TblScan.MarshalTo(dAtA[i:]) - if err != nil { - return 0, err - } - i += n1 +func (m *WindowFrameBound) GetCalcFuncs() []*Expr { + if m != nil { + return m.CalcFuncs } - if m.IdxScan != nil { - dAtA[i] = 0x1a - i++ - i = encodeVarintExecutor(dAtA, i, uint64(m.IdxScan.Size())) - n2, err := m.IdxScan.MarshalTo(dAtA[i:]) - if err != nil { - return 0, err - } - i += n2 + return nil +} + +func (m *WindowFrameBound) GetFrameRange() *Expr { + if m != nil { + return m.FrameRange } - if m.Selection != nil { - dAtA[i] = 0x22 - i++ - i = encodeVarintExecutor(dAtA, i, uint64(m.Selection.Size())) - n3, err := m.Selection.MarshalTo(dAtA[i:]) - if err != nil { - return 0, err - } - i += n3 + return nil +} + +func (m *WindowFrameBound) GetCmpDataType() RangeCmpDataType { + if m != nil && m.CmpDataType != nil { + return *m.CmpDataType } - if m.Aggregation != nil { - dAtA[i] = 0x2a - i++ - i = encodeVarintExecutor(dAtA, i, uint64(m.Aggregation.Size())) - n4, err := m.Aggregation.MarshalTo(dAtA[i:]) - if err != nil { - return 0, err - } - i += n4 + return RangeCmpDataType_Int +} + +type WindowFrame struct { + Type WindowFrameType `protobuf:"varint,1,opt,name=type,enum=tipb.WindowFrameType" json:"type"` + Start *WindowFrameBound `protobuf:"bytes,2,opt,name=start" json:"start,omitempty"` + End *WindowFrameBound `protobuf:"bytes,3,opt,name=end" json:"end,omitempty"` + XXX_unrecognized []byte `json:"-"` +} + +func (m *WindowFrame) Reset() { *m = WindowFrame{} } +func (m *WindowFrame) String() string { return proto.CompactTextString(m) } +func (*WindowFrame) ProtoMessage() {} +func (*WindowFrame) Descriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{30} } + +func (m *WindowFrame) GetType() WindowFrameType { + if m != nil { + return m.Type } - if m.TopN != nil { - dAtA[i] = 0x32 - i++ - i = encodeVarintExecutor(dAtA, i, uint64(m.TopN.Size())) - n5, err := m.TopN.MarshalTo(dAtA[i:]) - if err != nil { - return 0, err - } - i += n5 + return WindowFrameType_Rows +} + +func (m *WindowFrame) GetStart() *WindowFrameBound { + if m != nil { + return m.Start } - if m.Limit != nil { - dAtA[i] = 0x3a - i++ - i = encodeVarintExecutor(dAtA, i, uint64(m.Limit.Size())) - n6, err := m.Limit.MarshalTo(dAtA[i:]) - if err != nil { - return 0, err - } - i += n6 - } - if m.ExchangeReceiver != nil { - dAtA[i] = 0x42 - i++ - i = encodeVarintExecutor(dAtA, i, uint64(m.ExchangeReceiver.Size())) - n7, err := m.ExchangeReceiver.MarshalTo(dAtA[i:]) - if err != nil { - return 0, err - } - i += n7 - } - if m.Join != nil { - dAtA[i] = 0x4a - i++ - i = encodeVarintExecutor(dAtA, i, uint64(m.Join.Size())) - n8, err := m.Join.MarshalTo(dAtA[i:]) - if err != nil { - return 0, err - } - i += n8 - } - if m.ExecutorId != nil { - dAtA[i] = 0x52 - i++ - i = encodeVarintExecutor(dAtA, i, uint64(len(*m.ExecutorId))) - i += copy(dAtA[i:], *m.ExecutorId) - } - if m.Kill != nil { - dAtA[i] = 0x5a - i++ - i = encodeVarintExecutor(dAtA, i, uint64(m.Kill.Size())) - n9, err := m.Kill.MarshalTo(dAtA[i:]) - if err != nil { - return 0, err - } - i += n9 - } - if m.ExchangeSender != nil { - dAtA[i] = 0x62 - i++ - i = encodeVarintExecutor(dAtA, i, uint64(m.ExchangeSender.Size())) - n10, err := m.ExchangeSender.MarshalTo(dAtA[i:]) - if err != nil { - return 0, err - } - i += n10 - } - if m.Projection != nil { - dAtA[i] = 0x6a - i++ - i = encodeVarintExecutor(dAtA, i, uint64(m.Projection.Size())) - n11, err := m.Projection.MarshalTo(dAtA[i:]) - if err != nil { - return 0, err - } - i += n11 - } - if m.PartitionTableScan != nil { - dAtA[i] = 0x72 - i++ - i = encodeVarintExecutor(dAtA, i, uint64(m.PartitionTableScan.Size())) - n12, err := m.PartitionTableScan.MarshalTo(dAtA[i:]) - if err != nil { - return 0, err - } - i += n12 - } - if m.Sort != nil { - dAtA[i] = 0x7a - i++ - i = encodeVarintExecutor(dAtA, i, uint64(m.Sort.Size())) - n13, err := m.Sort.MarshalTo(dAtA[i:]) - if err != nil { - return 0, err - } - i += n13 - } - if m.Window != nil { - dAtA[i] = 0x82 - i++ - dAtA[i] = 0x1 - i++ - i = encodeVarintExecutor(dAtA, i, uint64(m.Window.Size())) - n14, err := m.Window.MarshalTo(dAtA[i:]) - if err != nil { - return 0, err - } - i += n14 - } - dAtA[i] = 0x88 - i++ - dAtA[i] = 0x1 - i++ - i = encodeVarintExecutor(dAtA, i, uint64(m.FineGrainedShuffleStreamCount)) - dAtA[i] = 0x90 - i++ - dAtA[i] = 0x1 - i++ - i = encodeVarintExecutor(dAtA, i, uint64(m.FineGrainedShuffleBatchSize)) - if m.Expand != nil { - dAtA[i] = 0x9a - i++ - dAtA[i] = 0x1 - i++ - i = encodeVarintExecutor(dAtA, i, uint64(m.Expand.Size())) - n15, err := m.Expand.MarshalTo(dAtA[i:]) - if err != nil { - return 0, err - } - i += n15 + return nil +} + +func (m *WindowFrame) GetEnd() *WindowFrameBound { + if m != nil { + return m.End } - if m.Expand2 != nil { - dAtA[i] = 0xa2 - i++ - dAtA[i] = 0x1 - i++ - i = encodeVarintExecutor(dAtA, i, uint64(m.Expand2.Size())) - n16, err := m.Expand2.MarshalTo(dAtA[i:]) - if err != nil { - return 0, err - } - i += n16 + return nil +} + +type Window struct { + FuncDesc []*Expr `protobuf:"bytes,1,rep,name=func_desc,json=funcDesc" json:"func_desc,omitempty"` + PartitionBy []*ByItem `protobuf:"bytes,2,rep,name=partition_by,json=partitionBy" json:"partition_by,omitempty"` + OrderBy []*ByItem `protobuf:"bytes,3,rep,name=order_by,json=orderBy" json:"order_by,omitempty"` + Frame *WindowFrame `protobuf:"bytes,4,opt,name=frame" json:"frame,omitempty"` + Child *Executor `protobuf:"bytes,5,opt,name=child" json:"child,omitempty"` + XXX_unrecognized []byte `json:"-"` +} + +func (m *Window) Reset() { *m = Window{} } +func (m *Window) String() string { return proto.CompactTextString(m) } +func (*Window) ProtoMessage() {} +func (*Window) Descriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{31} } + +func (m *Window) GetFuncDesc() []*Expr { + if m != nil { + return m.FuncDesc } - if m.BroadcastQuery != nil { - dAtA[i] = 0xaa - i++ - dAtA[i] = 0x1 - i++ - i = encodeVarintExecutor(dAtA, i, uint64(m.BroadcastQuery.Size())) - n17, err := m.BroadcastQuery.MarshalTo(dAtA[i:]) - if err != nil { - return 0, err - } - i += n17 + return nil +} + +func (m *Window) GetPartitionBy() []*ByItem { + if m != nil { + return m.PartitionBy } - if m.IndexLookup != nil { - dAtA[i] = 0xc2 - i++ - dAtA[i] = 0x1 - i++ - i = encodeVarintExecutor(dAtA, i, uint64(m.IndexLookup.Size())) - n18, err := m.IndexLookup.MarshalTo(dAtA[i:]) - if err != nil { - return 0, err - } - i += n18 + return nil +} + +func (m *Window) GetOrderBy() []*ByItem { + if m != nil { + return m.OrderBy } - if m.ParentIdx != nil { - dAtA[i] = 0xc8 - i++ - dAtA[i] = 0x1 - i++ - i = encodeVarintExecutor(dAtA, i, uint64(*m.ParentIdx)) + return nil +} + +func (m *Window) GetFrame() *WindowFrame { + if m != nil { + return m.Frame } - if m.ExplainForConnection != nil { - dAtA[i] = 0xd2 - i++ - dAtA[i] = 0x1 - i++ - i = encodeVarintExecutor(dAtA, i, uint64(m.ExplainForConnection.Size())) - n19, err := m.ExplainForConnection.MarshalTo(dAtA[i:]) - if err != nil { - return 0, err - } - i += n19 + return nil +} + +func (m *Window) GetChild() *Executor { + if m != nil { + return m.Child } - if m.XXX_unrecognized != nil { - i += copy(dAtA[i:], m.XXX_unrecognized) + return nil +} + +type GroupingExpr struct { + GroupingExpr []*Expr `protobuf:"bytes,1,rep,name=grouping_expr,json=groupingExpr" json:"grouping_expr,omitempty"` + XXX_unrecognized []byte `json:"-"` +} + +func (m *GroupingExpr) Reset() { *m = GroupingExpr{} } +func (m *GroupingExpr) String() string { return proto.CompactTextString(m) } +func (*GroupingExpr) ProtoMessage() {} +func (*GroupingExpr) Descriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{32} } + +func (m *GroupingExpr) GetGroupingExpr() []*Expr { + if m != nil { + return m.GroupingExpr } - return i, nil + return nil } -func (m *ExchangeSender) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalTo(dAtA) - if err != nil { - return nil, err +type GroupingSet struct { + GroupingExprs []*GroupingExpr `protobuf:"bytes,1,rep,name=grouping_exprs,json=groupingExprs" json:"grouping_exprs,omitempty"` + XXX_unrecognized []byte `json:"-"` +} + +func (m *GroupingSet) Reset() { *m = GroupingSet{} } +func (m *GroupingSet) String() string { return proto.CompactTextString(m) } +func (*GroupingSet) ProtoMessage() {} +func (*GroupingSet) Descriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{33} } + +func (m *GroupingSet) GetGroupingExprs() []*GroupingExpr { + if m != nil { + return m.GroupingExprs } - return dAtA[:n], nil + return nil } -func (m *ExchangeSender) MarshalTo(dAtA []byte) (int, error) { - var i int - _ = i - var l int - _ = l - dAtA[i] = 0x8 - i++ - i = encodeVarintExecutor(dAtA, i, uint64(m.Tp)) - if len(m.EncodedTaskMeta) > 0 { - for _, b := range m.EncodedTaskMeta { - dAtA[i] = 0x12 - i++ - i = encodeVarintExecutor(dAtA, i, uint64(len(b))) - i += copy(dAtA[i:], b) - } +// Deprecated in the nearly feature usage +type Expand struct { + GroupingSets []*GroupingSet `protobuf:"bytes,1,rep,name=grouping_sets,json=groupingSets" json:"grouping_sets,omitempty"` + Child *Executor `protobuf:"bytes,2,opt,name=child" json:"child,omitempty"` + Version *uint64 `protobuf:"varint,3,opt,name=version" json:"version,omitempty"` + XXX_unrecognized []byte `json:"-"` +} + +func (m *Expand) Reset() { *m = Expand{} } +func (m *Expand) String() string { return proto.CompactTextString(m) } +func (*Expand) ProtoMessage() {} +func (*Expand) Descriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{34} } + +func (m *Expand) GetGroupingSets() []*GroupingSet { + if m != nil { + return m.GroupingSets } - if len(m.PartitionKeys) > 0 { - for _, msg := range m.PartitionKeys { - dAtA[i] = 0x1a - i++ - i = encodeVarintExecutor(dAtA, i, uint64(msg.Size())) - n, err := msg.MarshalTo(dAtA[i:]) - if err != nil { - return 0, err - } - i += n - } + return nil +} + +func (m *Expand) GetChild() *Executor { + if m != nil { + return m.Child } - if m.Child != nil { - dAtA[i] = 0x22 - i++ - i = encodeVarintExecutor(dAtA, i, uint64(m.Child.Size())) - n20, err := m.Child.MarshalTo(dAtA[i:]) - if err != nil { - return 0, err - } - i += n20 + return nil +} + +func (m *Expand) GetVersion() uint64 { + if m != nil && m.Version != nil { + return *m.Version } - if len(m.Types) > 0 { - for _, msg := range m.Types { - dAtA[i] = 0x2a - i++ - i = encodeVarintExecutor(dAtA, i, uint64(msg.Size())) - n, err := msg.MarshalTo(dAtA[i:]) - if err != nil { - return 0, err - } - i += n - } + return 0 +} + +type ExprSlice struct { + Exprs []*Expr `protobuf:"bytes,1,rep,name=exprs" json:"exprs,omitempty"` + XXX_unrecognized []byte `json:"-"` +} + +func (m *ExprSlice) Reset() { *m = ExprSlice{} } +func (m *ExprSlice) String() string { return proto.CompactTextString(m) } +func (*ExprSlice) ProtoMessage() {} +func (*ExprSlice) Descriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{35} } + +func (m *ExprSlice) GetExprs() []*Expr { + if m != nil { + return m.Exprs } - if len(m.AllFieldTypes) > 0 { - for _, msg := range m.AllFieldTypes { - dAtA[i] = 0x32 - i++ - i = encodeVarintExecutor(dAtA, i, uint64(msg.Size())) - n, err := msg.MarshalTo(dAtA[i:]) - if err != nil { - return 0, err - } - i += n - } + return nil +} + +type Expand2 struct { + ProjExprs []*ExprSlice `protobuf:"bytes,1,rep,name=proj_exprs,json=projExprs" json:"proj_exprs,omitempty"` + GeneratedOutputNames []string `protobuf:"bytes,2,rep,name=generated_output_names,json=generatedOutputNames" json:"generated_output_names,omitempty"` + Child *Executor `protobuf:"bytes,3,opt,name=child" json:"child,omitempty"` + XXX_unrecognized []byte `json:"-"` +} + +func (m *Expand2) Reset() { *m = Expand2{} } +func (m *Expand2) String() string { return proto.CompactTextString(m) } +func (*Expand2) ProtoMessage() {} +func (*Expand2) Descriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{36} } + +func (m *Expand2) GetProjExprs() []*ExprSlice { + if m != nil { + return m.ProjExprs } - dAtA[i] = 0x38 - i++ - i = encodeVarintExecutor(dAtA, i, uint64(m.Compression)) - if len(m.UpstreamCteTaskMeta) > 0 { - for _, msg := range m.UpstreamCteTaskMeta { - dAtA[i] = 0x42 - i++ - i = encodeVarintExecutor(dAtA, i, uint64(msg.Size())) - n, err := msg.MarshalTo(dAtA[i:]) - if err != nil { - return 0, err - } - i += n - } + return nil +} + +func (m *Expand2) GetGeneratedOutputNames() []string { + if m != nil { + return m.GeneratedOutputNames } - if m.XXX_unrecognized != nil { - i += copy(dAtA[i:], m.XXX_unrecognized) + return nil +} + +func (m *Expand2) GetChild() *Executor { + if m != nil { + return m.Child } - return i, nil + return nil } -func (m *IndexLookUp) Marshal() (dAtA []byte, err error) { +type BroadcastQuery struct { + Query *string `protobuf:"bytes,1,opt,name=query" json:"query,omitempty"` + XXX_unrecognized []byte `json:"-"` +} + +func (m *BroadcastQuery) Reset() { *m = BroadcastQuery{} } +func (m *BroadcastQuery) String() string { return proto.CompactTextString(m) } +func (*BroadcastQuery) ProtoMessage() {} +func (*BroadcastQuery) Descriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{37} } + +func (m *BroadcastQuery) GetQuery() string { + if m != nil && m.Query != nil { + return *m.Query + } + return "" +} + +func init() { + proto.RegisterType((*Executor)(nil), "tipb.Executor") + proto.RegisterType((*ExchangeSender)(nil), "tipb.ExchangeSender") + proto.RegisterType((*IndexLookUp)(nil), "tipb.IndexLookUp") + proto.RegisterType((*EncodedBytesSlice)(nil), "tipb.EncodedBytesSlice") + proto.RegisterType((*ExchangeReceiver)(nil), "tipb.ExchangeReceiver") + proto.RegisterType((*ANNQueryInfo)(nil), "tipb.ANNQueryInfo") + proto.RegisterType((*FTSBooleanTerm)(nil), "tipb.FTSBooleanTerm") + proto.RegisterType((*FTSBooleanQuery)(nil), "tipb.FTSBooleanQuery") + proto.RegisterType((*FTSBooleanNode)(nil), "tipb.FTSBooleanNode") + proto.RegisterType((*FTSQueryInfo)(nil), "tipb.FTSQueryInfo") + proto.RegisterType((*ColumnarIndexInfo)(nil), "tipb.ColumnarIndexInfo") + proto.RegisterType((*TableScan)(nil), "tipb.TableScan") + proto.RegisterType((*PartitionTableScan)(nil), "tipb.PartitionTableScan") + proto.RegisterType((*Join)(nil), "tipb.Join") + proto.RegisterType((*RuntimeFilter)(nil), "tipb.RuntimeFilter") + proto.RegisterType((*IndexScan)(nil), "tipb.IndexScan") + proto.RegisterType((*Selection)(nil), "tipb.Selection") + proto.RegisterType((*Projection)(nil), "tipb.Projection") + proto.RegisterType((*Aggregation)(nil), "tipb.Aggregation") + proto.RegisterType((*TopN)(nil), "tipb.TopN") + proto.RegisterType((*Limit)(nil), "tipb.Limit") + proto.RegisterType((*Kill)(nil), "tipb.Kill") + proto.RegisterType((*ExplainForConnection)(nil), "tipb.ExplainForConnection") + proto.RegisterType((*ExecutorExecutionSummary)(nil), "tipb.ExecutorExecutionSummary") + proto.RegisterType((*TiFlashExecutionInfo)(nil), "tipb.TiFlashExecutionInfo") + proto.RegisterType((*TiFlashRegionNumOfInstance)(nil), "tipb.TiFlashRegionNumOfInstance") + proto.RegisterType((*TiFlashScanContext)(nil), "tipb.TiFlashScanContext") + proto.RegisterType((*TiFlashWaitSummary)(nil), "tipb.TiFlashWaitSummary") + proto.RegisterType((*Sort)(nil), "tipb.Sort") + proto.RegisterType((*WindowFrameBound)(nil), "tipb.WindowFrameBound") + proto.RegisterType((*WindowFrame)(nil), "tipb.WindowFrame") + proto.RegisterType((*Window)(nil), "tipb.Window") + proto.RegisterType((*GroupingExpr)(nil), "tipb.GroupingExpr") + proto.RegisterType((*GroupingSet)(nil), "tipb.GroupingSet") + proto.RegisterType((*Expand)(nil), "tipb.Expand") + proto.RegisterType((*ExprSlice)(nil), "tipb.ExprSlice") + proto.RegisterType((*Expand2)(nil), "tipb.Expand2") + proto.RegisterType((*BroadcastQuery)(nil), "tipb.BroadcastQuery") + proto.RegisterEnum("tipb.ExecType", ExecType_name, ExecType_value) + proto.RegisterEnum("tipb.ExchangeType", ExchangeType_name, ExchangeType_value) + proto.RegisterEnum("tipb.CompressionMode", CompressionMode_name, CompressionMode_value) + proto.RegisterEnum("tipb.EngineType", EngineType_name, EngineType_value) + proto.RegisterEnum("tipb.VectorIndexKind", VectorIndexKind_name, VectorIndexKind_value) + proto.RegisterEnum("tipb.VectorDistanceMetric", VectorDistanceMetric_name, VectorDistanceMetric_value) + proto.RegisterEnum("tipb.ANNQueryType", ANNQueryType_name, ANNQueryType_value) + proto.RegisterEnum("tipb.FTSQueryType", FTSQueryType_name, FTSQueryType_value) + proto.RegisterEnum("tipb.FTSBooleanOccur", FTSBooleanOccur_name, FTSBooleanOccur_value) + proto.RegisterEnum("tipb.FTSBooleanModifier", FTSBooleanModifier_name, FTSBooleanModifier_value) + proto.RegisterEnum("tipb.FTSBooleanTermType", FTSBooleanTermType_name, FTSBooleanTermType_value) + proto.RegisterEnum("tipb.ColumnarIndexType", ColumnarIndexType_name, ColumnarIndexType_value) + proto.RegisterEnum("tipb.JoinType", JoinType_name, JoinType_value) + proto.RegisterEnum("tipb.JoinExecType", JoinExecType_name, JoinExecType_value) + proto.RegisterEnum("tipb.RuntimeFilterType", RuntimeFilterType_name, RuntimeFilterType_value) + proto.RegisterEnum("tipb.RuntimeFilterMode", RuntimeFilterMode_name, RuntimeFilterMode_value) + proto.RegisterEnum("tipb.TiFlashPreAggMode", TiFlashPreAggMode_name, TiFlashPreAggMode_value) + proto.RegisterEnum("tipb.WindowBoundType", WindowBoundType_name, WindowBoundType_value) + proto.RegisterEnum("tipb.RangeCmpDataType", RangeCmpDataType_name, RangeCmpDataType_value) + proto.RegisterEnum("tipb.WindowFrameType", WindowFrameType_name, WindowFrameType_value) +} +func (m *Executor) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) n, err := m.MarshalTo(dAtA) @@ -3115,68 +3362,238 @@ func (m *IndexLookUp) Marshal() (dAtA []byte, err error) { return dAtA[:n], nil } -func (m *IndexLookUp) MarshalTo(dAtA []byte) (int, error) { +func (m *Executor) MarshalTo(dAtA []byte) (int, error) { var i int _ = i var l int _ = l - if len(m.IndexHandleOffsets) > 0 { - for _, num := range m.IndexHandleOffsets { - dAtA[i] = 0x8 - i++ - i = encodeVarintExecutor(dAtA, i, uint64(num)) + dAtA[i] = 0x8 + i++ + i = encodeVarintExecutor(dAtA, i, uint64(m.Tp)) + if m.TblScan != nil { + dAtA[i] = 0x12 + i++ + i = encodeVarintExecutor(dAtA, i, uint64(m.TblScan.Size())) + n1, err := m.TblScan.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err } + i += n1 } - if m.KeepOrder != nil { - dAtA[i] = 0x10 + if m.IdxScan != nil { + dAtA[i] = 0x1a i++ - if *m.KeepOrder { - dAtA[i] = 1 - } else { - dAtA[i] = 0 + i = encodeVarintExecutor(dAtA, i, uint64(m.IdxScan.Size())) + n2, err := m.IdxScan.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err } + i += n2 + } + if m.Selection != nil { + dAtA[i] = 0x22 i++ + i = encodeVarintExecutor(dAtA, i, uint64(m.Selection.Size())) + n3, err := m.Selection.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n3 } - if len(m.Children) > 0 { - for _, msg := range m.Children { - dAtA[i] = 0x1a - i++ - i = encodeVarintExecutor(dAtA, i, uint64(msg.Size())) - n, err := msg.MarshalTo(dAtA[i:]) - if err != nil { - return 0, err - } - i += n + if m.Aggregation != nil { + dAtA[i] = 0x2a + i++ + i = encodeVarintExecutor(dAtA, i, uint64(m.Aggregation.Size())) + n4, err := m.Aggregation.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err } + i += n4 } - if m.XXX_unrecognized != nil { - i += copy(dAtA[i:], m.XXX_unrecognized) + if m.TopN != nil { + dAtA[i] = 0x32 + i++ + i = encodeVarintExecutor(dAtA, i, uint64(m.TopN.Size())) + n5, err := m.TopN.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n5 } - return i, nil -} - -func (m *EncodedBytesSlice) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalTo(dAtA) - if err != nil { - return nil, err + if m.Limit != nil { + dAtA[i] = 0x3a + i++ + i = encodeVarintExecutor(dAtA, i, uint64(m.Limit.Size())) + n6, err := m.Limit.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n6 } - return dAtA[:n], nil -} - -func (m *EncodedBytesSlice) MarshalTo(dAtA []byte) (int, error) { - var i int - _ = i - var l int - _ = l - if len(m.EncodedTasks) > 0 { - for _, b := range m.EncodedTasks { - dAtA[i] = 0xa - i++ - i = encodeVarintExecutor(dAtA, i, uint64(len(b))) - i += copy(dAtA[i:], b) + if m.ExchangeReceiver != nil { + dAtA[i] = 0x42 + i++ + i = encodeVarintExecutor(dAtA, i, uint64(m.ExchangeReceiver.Size())) + n7, err := m.ExchangeReceiver.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n7 + } + if m.Join != nil { + dAtA[i] = 0x4a + i++ + i = encodeVarintExecutor(dAtA, i, uint64(m.Join.Size())) + n8, err := m.Join.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n8 + } + if m.ExecutorId != nil { + dAtA[i] = 0x52 + i++ + i = encodeVarintExecutor(dAtA, i, uint64(len(*m.ExecutorId))) + i += copy(dAtA[i:], *m.ExecutorId) + } + if m.Kill != nil { + dAtA[i] = 0x5a + i++ + i = encodeVarintExecutor(dAtA, i, uint64(m.Kill.Size())) + n9, err := m.Kill.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n9 + } + if m.ExchangeSender != nil { + dAtA[i] = 0x62 + i++ + i = encodeVarintExecutor(dAtA, i, uint64(m.ExchangeSender.Size())) + n10, err := m.ExchangeSender.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n10 + } + if m.Projection != nil { + dAtA[i] = 0x6a + i++ + i = encodeVarintExecutor(dAtA, i, uint64(m.Projection.Size())) + n11, err := m.Projection.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n11 + } + if m.PartitionTableScan != nil { + dAtA[i] = 0x72 + i++ + i = encodeVarintExecutor(dAtA, i, uint64(m.PartitionTableScan.Size())) + n12, err := m.PartitionTableScan.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n12 + } + if m.Sort != nil { + dAtA[i] = 0x7a + i++ + i = encodeVarintExecutor(dAtA, i, uint64(m.Sort.Size())) + n13, err := m.Sort.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n13 + } + if m.Window != nil { + dAtA[i] = 0x82 + i++ + dAtA[i] = 0x1 + i++ + i = encodeVarintExecutor(dAtA, i, uint64(m.Window.Size())) + n14, err := m.Window.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n14 + } + dAtA[i] = 0x88 + i++ + dAtA[i] = 0x1 + i++ + i = encodeVarintExecutor(dAtA, i, uint64(m.FineGrainedShuffleStreamCount)) + dAtA[i] = 0x90 + i++ + dAtA[i] = 0x1 + i++ + i = encodeVarintExecutor(dAtA, i, uint64(m.FineGrainedShuffleBatchSize)) + if m.Expand != nil { + dAtA[i] = 0x9a + i++ + dAtA[i] = 0x1 + i++ + i = encodeVarintExecutor(dAtA, i, uint64(m.Expand.Size())) + n15, err := m.Expand.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n15 + } + if m.Expand2 != nil { + dAtA[i] = 0xa2 + i++ + dAtA[i] = 0x1 + i++ + i = encodeVarintExecutor(dAtA, i, uint64(m.Expand2.Size())) + n16, err := m.Expand2.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n16 + } + if m.BroadcastQuery != nil { + dAtA[i] = 0xaa + i++ + dAtA[i] = 0x1 + i++ + i = encodeVarintExecutor(dAtA, i, uint64(m.BroadcastQuery.Size())) + n17, err := m.BroadcastQuery.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n17 + } + if m.IndexLookup != nil { + dAtA[i] = 0xc2 + i++ + dAtA[i] = 0x1 + i++ + i = encodeVarintExecutor(dAtA, i, uint64(m.IndexLookup.Size())) + n18, err := m.IndexLookup.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n18 + } + if m.ParentIdx != nil { + dAtA[i] = 0xc8 + i++ + dAtA[i] = 0x1 + i++ + i = encodeVarintExecutor(dAtA, i, uint64(*m.ParentIdx)) + } + if m.ExplainForConnection != nil { + dAtA[i] = 0xd2 + i++ + dAtA[i] = 0x1 + i++ + i = encodeVarintExecutor(dAtA, i, uint64(m.ExplainForConnection.Size())) + n19, err := m.ExplainForConnection.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err } + i += n19 } if m.XXX_unrecognized != nil { i += copy(dAtA[i:], m.XXX_unrecognized) @@ -3184,7 +3601,7 @@ func (m *EncodedBytesSlice) MarshalTo(dAtA []byte) (int, error) { return i, nil } -func (m *ExchangeReceiver) Marshal() (dAtA []byte, err error) { +func (m *ExchangeSender) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) n, err := m.MarshalTo(dAtA) @@ -3194,22 +3611,25 @@ func (m *ExchangeReceiver) Marshal() (dAtA []byte, err error) { return dAtA[:n], nil } -func (m *ExchangeReceiver) MarshalTo(dAtA []byte) (int, error) { +func (m *ExchangeSender) MarshalTo(dAtA []byte) (int, error) { var i int _ = i var l int _ = l + dAtA[i] = 0x8 + i++ + i = encodeVarintExecutor(dAtA, i, uint64(m.Tp)) if len(m.EncodedTaskMeta) > 0 { for _, b := range m.EncodedTaskMeta { - dAtA[i] = 0xa + dAtA[i] = 0x12 i++ i = encodeVarintExecutor(dAtA, i, uint64(len(b))) i += copy(dAtA[i:], b) } } - if len(m.FieldTypes) > 0 { - for _, msg := range m.FieldTypes { - dAtA[i] = 0x12 + if len(m.PartitionKeys) > 0 { + for _, msg := range m.PartitionKeys { + dAtA[i] = 0x1a i++ i = encodeVarintExecutor(dAtA, i, uint64(msg.Size())) n, err := msg.MarshalTo(dAtA[i:]) @@ -3219,21 +3639,190 @@ func (m *ExchangeReceiver) MarshalTo(dAtA []byte) (int, error) { i += n } } - if m.Tp != nil { - dAtA[i] = 0x18 + if m.Child != nil { + dAtA[i] = 0x22 i++ - i = encodeVarintExecutor(dAtA, i, uint64(*m.Tp)) - } - if len(m.OriginalCtePrdocuerTaskMeta) > 0 { - for _, b := range m.OriginalCtePrdocuerTaskMeta { - dAtA[i] = 0x22 - i++ - i = encodeVarintExecutor(dAtA, i, uint64(len(b))) - i += copy(dAtA[i:], b) + i = encodeVarintExecutor(dAtA, i, uint64(m.Child.Size())) + n20, err := m.Child.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err } + i += n20 } - if m.XXX_unrecognized != nil { - i += copy(dAtA[i:], m.XXX_unrecognized) + if len(m.Types) > 0 { + for _, msg := range m.Types { + dAtA[i] = 0x2a + i++ + i = encodeVarintExecutor(dAtA, i, uint64(msg.Size())) + n, err := msg.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n + } + } + if len(m.AllFieldTypes) > 0 { + for _, msg := range m.AllFieldTypes { + dAtA[i] = 0x32 + i++ + i = encodeVarintExecutor(dAtA, i, uint64(msg.Size())) + n, err := msg.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n + } + } + dAtA[i] = 0x38 + i++ + i = encodeVarintExecutor(dAtA, i, uint64(m.Compression)) + if len(m.UpstreamCteTaskMeta) > 0 { + for _, msg := range m.UpstreamCteTaskMeta { + dAtA[i] = 0x42 + i++ + i = encodeVarintExecutor(dAtA, i, uint64(msg.Size())) + n, err := msg.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n + } + } + if m.XXX_unrecognized != nil { + i += copy(dAtA[i:], m.XXX_unrecognized) + } + return i, nil +} + +func (m *IndexLookUp) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *IndexLookUp) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if len(m.IndexHandleOffsets) > 0 { + for _, num := range m.IndexHandleOffsets { + dAtA[i] = 0x8 + i++ + i = encodeVarintExecutor(dAtA, i, uint64(num)) + } + } + if m.KeepOrder != nil { + dAtA[i] = 0x10 + i++ + if *m.KeepOrder { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i++ + } + if len(m.Children) > 0 { + for _, msg := range m.Children { + dAtA[i] = 0x1a + i++ + i = encodeVarintExecutor(dAtA, i, uint64(msg.Size())) + n, err := msg.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n + } + } + if m.XXX_unrecognized != nil { + i += copy(dAtA[i:], m.XXX_unrecognized) + } + return i, nil +} + +func (m *EncodedBytesSlice) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *EncodedBytesSlice) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if len(m.EncodedTasks) > 0 { + for _, b := range m.EncodedTasks { + dAtA[i] = 0xa + i++ + i = encodeVarintExecutor(dAtA, i, uint64(len(b))) + i += copy(dAtA[i:], b) + } + } + if m.XXX_unrecognized != nil { + i += copy(dAtA[i:], m.XXX_unrecognized) + } + return i, nil +} + +func (m *ExchangeReceiver) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *ExchangeReceiver) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if len(m.EncodedTaskMeta) > 0 { + for _, b := range m.EncodedTaskMeta { + dAtA[i] = 0xa + i++ + i = encodeVarintExecutor(dAtA, i, uint64(len(b))) + i += copy(dAtA[i:], b) + } + } + if len(m.FieldTypes) > 0 { + for _, msg := range m.FieldTypes { + dAtA[i] = 0x12 + i++ + i = encodeVarintExecutor(dAtA, i, uint64(msg.Size())) + n, err := msg.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n + } + } + if m.Tp != nil { + dAtA[i] = 0x18 + i++ + i = encodeVarintExecutor(dAtA, i, uint64(*m.Tp)) + } + if len(m.OriginalCtePrdocuerTaskMeta) > 0 { + for _, b := range m.OriginalCtePrdocuerTaskMeta { + dAtA[i] = 0x22 + i++ + i = encodeVarintExecutor(dAtA, i, uint64(len(b))) + i += copy(dAtA[i:], b) + } + } + if m.XXX_unrecognized != nil { + i += copy(dAtA[i:], m.XXX_unrecognized) } return i, nil } @@ -3293,7 +3882,7 @@ func (m *ANNQueryInfo) MarshalTo(dAtA []byte) (int, error) { return i, nil } -func (m *TableScan) Marshal() (dAtA []byte, err error) { +func (m *FTSBooleanTerm) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) n, err := m.MarshalTo(dAtA) @@ -3303,47 +3892,45 @@ func (m *TableScan) Marshal() (dAtA []byte, err error) { return dAtA[:n], nil } -func (m *TableScan) MarshalTo(dAtA []byte) (int, error) { +func (m *FTSBooleanTerm) MarshalTo(dAtA []byte) (int, error) { var i int _ = i var l int _ = l dAtA[i] = 0x8 i++ - i = encodeVarintExecutor(dAtA, i, uint64(m.TableId)) - if len(m.Columns) > 0 { - for _, msg := range m.Columns { - dAtA[i] = 0x12 - i++ - i = encodeVarintExecutor(dAtA, i, uint64(msg.Size())) - n, err := msg.MarshalTo(dAtA[i:]) - if err != nil { - return 0, err - } - i += n - } - } + i = encodeVarintExecutor(dAtA, i, uint64(m.TermType)) + dAtA[i] = 0x12 + i++ + i = encodeVarintExecutor(dAtA, i, uint64(len(m.Text))) + i += copy(dAtA[i:], m.Text) dAtA[i] = 0x18 i++ - if m.Desc { - dAtA[i] = 1 - } else { - dAtA[i] = 0 + i = encodeVarintExecutor(dAtA, i, uint64(m.PhraseDistance)) + if m.XXX_unrecognized != nil { + i += copy(dAtA[i:], m.XXX_unrecognized) } - i++ - if len(m.PrimaryColumnIds) > 0 { - for _, num := range m.PrimaryColumnIds { - dAtA[i] = 0x20 - i++ - i = encodeVarintExecutor(dAtA, i, uint64(num)) - } + return i, nil +} + +func (m *FTSBooleanQuery) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err } - dAtA[i] = 0x28 - i++ - i = encodeVarintExecutor(dAtA, i, uint64(m.NextReadEngine)) - if len(m.Ranges) > 0 { - for _, msg := range m.Ranges { - dAtA[i] = 0x32 + return dAtA[:n], nil +} + +func (m *FTSBooleanQuery) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if len(m.Nodes) > 0 { + for _, msg := range m.Nodes { + dAtA[i] = 0xa i++ i = encodeVarintExecutor(dAtA, i, uint64(msg.Size())) n, err := msg.MarshalTo(dAtA[i:]) @@ -3353,29 +3940,286 @@ func (m *TableScan) MarshalTo(dAtA []byte) (int, error) { i += n } } - if len(m.PrimaryPrefixColumnIds) > 0 { - for _, num := range m.PrimaryPrefixColumnIds { - dAtA[i] = 0x38 - i++ - i = encodeVarintExecutor(dAtA, i, uint64(num)) - } + if m.XXX_unrecognized != nil { + i += copy(dAtA[i:], m.XXX_unrecognized) } - if m.KeepOrder != nil { - dAtA[i] = 0x40 - i++ - if *m.KeepOrder { - dAtA[i] = 1 - } else { - dAtA[i] = 0 - } - i++ + return i, nil +} + +func (m *FTSBooleanNode) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err } - if m.IsFastScan != nil { - dAtA[i] = 0x48 - i++ - if *m.IsFastScan { - dAtA[i] = 1 - } else { + return dAtA[:n], nil +} + +func (m *FTSBooleanNode) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0x8 + i++ + i = encodeVarintExecutor(dAtA, i, uint64(m.Occur)) + dAtA[i] = 0x10 + i++ + i = encodeVarintExecutor(dAtA, i, uint64(m.Modifier)) + if m.Node != nil { + nn21, err := m.Node.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += nn21 + } + if m.XXX_unrecognized != nil { + i += copy(dAtA[i:], m.XXX_unrecognized) + } + return i, nil +} + +func (m *FTSBooleanNode_Term) MarshalTo(dAtA []byte) (int, error) { + i := 0 + if m.Term != nil { + dAtA[i] = 0x1a + i++ + i = encodeVarintExecutor(dAtA, i, uint64(m.Term.Size())) + n22, err := m.Term.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n22 + } + return i, nil +} +func (m *FTSBooleanNode_SubExpression) MarshalTo(dAtA []byte) (int, error) { + i := 0 + if m.SubExpression != nil { + dAtA[i] = 0x22 + i++ + i = encodeVarintExecutor(dAtA, i, uint64(m.SubExpression.Size())) + n23, err := m.SubExpression.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n23 + } + return i, nil +} +func (m *FTSQueryInfo) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *FTSQueryInfo) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0x8 + i++ + i = encodeVarintExecutor(dAtA, i, uint64(m.QueryType)) + dAtA[i] = 0x10 + i++ + i = encodeVarintExecutor(dAtA, i, uint64(m.IndexId)) + if len(m.Columns) > 0 { + for _, msg := range m.Columns { + dAtA[i] = 0x1a + i++ + i = encodeVarintExecutor(dAtA, i, uint64(msg.Size())) + n, err := msg.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n + } + } + if len(m.ColumnNames) > 0 { + for _, s := range m.ColumnNames { + dAtA[i] = 0x22 + i++ + l = len(s) + for l >= 1<<7 { + dAtA[i] = uint8(uint64(l)&0x7f | 0x80) + l >>= 7 + i++ + } + dAtA[i] = uint8(l) + i++ + i += copy(dAtA[i:], s) + } + } + dAtA[i] = 0x2a + i++ + i = encodeVarintExecutor(dAtA, i, uint64(len(m.QueryText))) + i += copy(dAtA[i:], m.QueryText) + dAtA[i] = 0x32 + i++ + i = encodeVarintExecutor(dAtA, i, uint64(len(m.QueryTokenizer))) + i += copy(dAtA[i:], m.QueryTokenizer) + if m.TopK != nil { + dAtA[i] = 0x50 + i++ + i = encodeVarintExecutor(dAtA, i, uint64(*m.TopK)) + } + dAtA[i] = 0xa0 + i++ + dAtA[i] = 0x1 + i++ + i = encodeVarintExecutor(dAtA, i, uint64(m.QueryFunc)) + if m.BooleanQuery != nil { + dAtA[i] = 0xb2 + i++ + dAtA[i] = 0x1 + i++ + i = encodeVarintExecutor(dAtA, i, uint64(m.BooleanQuery.Size())) + n24, err := m.BooleanQuery.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n24 + } + if m.XXX_unrecognized != nil { + i += copy(dAtA[i:], m.XXX_unrecognized) + } + return i, nil +} + +func (m *ColumnarIndexInfo) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *ColumnarIndexInfo) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0x8 + i++ + i = encodeVarintExecutor(dAtA, i, uint64(m.IndexType)) + if m.Index != nil { + nn25, err := m.Index.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += nn25 + } + if m.XXX_unrecognized != nil { + i += copy(dAtA[i:], m.XXX_unrecognized) + } + return i, nil +} + +func (m *ColumnarIndexInfo_FtsQueryInfo) MarshalTo(dAtA []byte) (int, error) { + i := 0 + if m.FtsQueryInfo != nil { + dAtA[i] = 0x22 + i++ + i = encodeVarintExecutor(dAtA, i, uint64(m.FtsQueryInfo.Size())) + n26, err := m.FtsQueryInfo.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n26 + } + return i, nil +} +func (m *TableScan) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *TableScan) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0x8 + i++ + i = encodeVarintExecutor(dAtA, i, uint64(m.TableId)) + if len(m.Columns) > 0 { + for _, msg := range m.Columns { + dAtA[i] = 0x12 + i++ + i = encodeVarintExecutor(dAtA, i, uint64(msg.Size())) + n, err := msg.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n + } + } + dAtA[i] = 0x18 + i++ + if m.Desc { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i++ + if len(m.PrimaryColumnIds) > 0 { + for _, num := range m.PrimaryColumnIds { + dAtA[i] = 0x20 + i++ + i = encodeVarintExecutor(dAtA, i, uint64(num)) + } + } + dAtA[i] = 0x28 + i++ + i = encodeVarintExecutor(dAtA, i, uint64(m.NextReadEngine)) + if len(m.Ranges) > 0 { + for _, msg := range m.Ranges { + dAtA[i] = 0x32 + i++ + i = encodeVarintExecutor(dAtA, i, uint64(msg.Size())) + n, err := msg.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n + } + } + if len(m.PrimaryPrefixColumnIds) > 0 { + for _, num := range m.PrimaryPrefixColumnIds { + dAtA[i] = 0x38 + i++ + i = encodeVarintExecutor(dAtA, i, uint64(num)) + } + } + if m.KeepOrder != nil { + dAtA[i] = 0x40 + i++ + if *m.KeepOrder { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i++ + } + if m.IsFastScan != nil { + dAtA[i] = 0x48 + i++ + if *m.IsFastScan { + dAtA[i] = 1 + } else { dAtA[i] = 0 } i++ @@ -3411,11 +4255,23 @@ func (m *TableScan) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x6a i++ i = encodeVarintExecutor(dAtA, i, uint64(m.AnnQuery.Size())) - n21, err := m.AnnQuery.MarshalTo(dAtA[i:]) + n27, err := m.AnnQuery.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n21 + i += n27 + } + if len(m.UsedColumnarIndexes) > 0 { + for _, msg := range m.UsedColumnarIndexes { + dAtA[i] = 0x72 + i++ + i = encodeVarintExecutor(dAtA, i, uint64(msg.Size())) + n, err := msg.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n + } } if m.XXX_unrecognized != nil { i += copy(dAtA[i:], m.XXX_unrecognized) @@ -3523,11 +4379,23 @@ func (m *PartitionTableScan) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x5a i++ i = encodeVarintExecutor(dAtA, i, uint64(m.AnnQuery.Size())) - n22, err := m.AnnQuery.MarshalTo(dAtA[i:]) + n28, err := m.AnnQuery.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n22 + i += n28 + } + if len(m.UsedColumnarIndexes) > 0 { + for _, msg := range m.UsedColumnarIndexes { + dAtA[i] = 0x62 + i++ + i = encodeVarintExecutor(dAtA, i, uint64(msg.Size())) + n, err := msg.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n + } } if m.XXX_unrecognized != nil { i += copy(dAtA[i:], m.XXX_unrecognized) @@ -3864,11 +4732,11 @@ func (m *Selection) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x1a i++ i = encodeVarintExecutor(dAtA, i, uint64(m.Child.Size())) - n23, err := m.Child.MarshalTo(dAtA[i:]) + n29, err := m.Child.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n23 + i += n29 } if m.XXX_unrecognized != nil { i += copy(dAtA[i:], m.XXX_unrecognized) @@ -3919,11 +4787,11 @@ func (m *Projection) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x1a i++ i = encodeVarintExecutor(dAtA, i, uint64(m.Child.Size())) - n24, err := m.Child.MarshalTo(dAtA[i:]) + n30, err := m.Child.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n24 + i += n30 } if m.XXX_unrecognized != nil { i += copy(dAtA[i:], m.XXX_unrecognized) @@ -4006,11 +4874,11 @@ func (m *Aggregation) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x32 i++ i = encodeVarintExecutor(dAtA, i, uint64(m.Child.Size())) - n25, err := m.Child.MarshalTo(dAtA[i:]) + n31, err := m.Child.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n25 + i += n31 } if m.PreAggMode != nil { dAtA[i] = 0x38 @@ -4057,11 +4925,11 @@ func (m *TopN) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x1a i++ i = encodeVarintExecutor(dAtA, i, uint64(m.Child.Size())) - n26, err := m.Child.MarshalTo(dAtA[i:]) + n32, err := m.Child.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n26 + i += n32 } if len(m.PartitionBy) > 0 { for _, msg := range m.PartitionBy { @@ -4103,11 +4971,11 @@ func (m *Limit) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x12 i++ i = encodeVarintExecutor(dAtA, i, uint64(m.Child.Size())) - n27, err := m.Child.MarshalTo(dAtA[i:]) + n33, err := m.Child.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n27 + i += n33 } if len(m.PartitionBy) > 0 { for _, msg := range m.PartitionBy { @@ -4237,11 +5105,11 @@ func (m *ExecutorExecutionSummary) MarshalTo(dAtA []byte) (int, error) { i = encodeVarintExecutor(dAtA, i, uint64(*m.Concurrency)) } if m.DetailInfo != nil { - nn28, err := m.DetailInfo.MarshalTo(dAtA[i:]) + nn34, err := m.DetailInfo.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += nn28 + i += nn34 } if m.RuConsumption != nil { dAtA[i] = 0x3a @@ -4253,11 +5121,11 @@ func (m *ExecutorExecutionSummary) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x42 i++ i = encodeVarintExecutor(dAtA, i, uint64(m.TiflashWaitSummary.Size())) - n29, err := m.TiflashWaitSummary.MarshalTo(dAtA[i:]) + n35, err := m.TiflashWaitSummary.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n29 + i += n35 } if m.XXX_unrecognized != nil { i += copy(dAtA[i:], m.XXX_unrecognized) @@ -4271,11 +5139,11 @@ func (m *ExecutorExecutionSummary_TiflashScanContext) MarshalTo(dAtA []byte) (in dAtA[i] = 0x32 i++ i = encodeVarintExecutor(dAtA, i, uint64(m.TiflashScanContext.Size())) - n30, err := m.TiflashScanContext.MarshalTo(dAtA[i:]) + n36, err := m.TiflashScanContext.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n30 + i += n36 } return i, nil } @@ -4720,11 +5588,11 @@ func (m *Sort) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x1a i++ i = encodeVarintExecutor(dAtA, i, uint64(m.Child.Size())) - n31, err := m.Child.MarshalTo(dAtA[i:]) + n37, err := m.Child.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n31 + i += n37 } if m.XXX_unrecognized != nil { i += copy(dAtA[i:], m.XXX_unrecognized) @@ -4779,11 +5647,11 @@ func (m *WindowFrameBound) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x2a i++ i = encodeVarintExecutor(dAtA, i, uint64(m.FrameRange.Size())) - n32, err := m.FrameRange.MarshalTo(dAtA[i:]) + n38, err := m.FrameRange.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n32 + i += n38 } if m.CmpDataType != nil { dAtA[i] = 0x30 @@ -4818,21 +5686,21 @@ func (m *WindowFrame) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x12 i++ i = encodeVarintExecutor(dAtA, i, uint64(m.Start.Size())) - n33, err := m.Start.MarshalTo(dAtA[i:]) + n39, err := m.Start.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n33 + i += n39 } if m.End != nil { dAtA[i] = 0x1a i++ i = encodeVarintExecutor(dAtA, i, uint64(m.End.Size())) - n34, err := m.End.MarshalTo(dAtA[i:]) + n40, err := m.End.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n34 + i += n40 } if m.XXX_unrecognized != nil { i += copy(dAtA[i:], m.XXX_unrecognized) @@ -4895,21 +5763,21 @@ func (m *Window) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x22 i++ i = encodeVarintExecutor(dAtA, i, uint64(m.Frame.Size())) - n35, err := m.Frame.MarshalTo(dAtA[i:]) + n41, err := m.Frame.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n35 + i += n41 } if m.Child != nil { dAtA[i] = 0x2a i++ i = encodeVarintExecutor(dAtA, i, uint64(m.Child.Size())) - n36, err := m.Child.MarshalTo(dAtA[i:]) + n42, err := m.Child.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n36 + i += n42 } if m.XXX_unrecognized != nil { i += copy(dAtA[i:], m.XXX_unrecognized) @@ -5014,11 +5882,11 @@ func (m *Expand) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x12 i++ i = encodeVarintExecutor(dAtA, i, uint64(m.Child.Size())) - n37, err := m.Child.MarshalTo(dAtA[i:]) + n43, err := m.Child.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n37 + i += n43 } if m.Version != nil { dAtA[i] = 0x18 @@ -5110,11 +5978,11 @@ func (m *Expand2) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x1a i++ i = encodeVarintExecutor(dAtA, i, uint64(m.Child.Size())) - n38, err := m.Child.MarshalTo(dAtA[i:]) + n44, err := m.Child.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n38 + i += n44 } if m.XXX_unrecognized != nil { i += copy(dAtA[i:], m.XXX_unrecognized) @@ -5388,6 +6256,123 @@ func (m *ANNQueryInfo) Size() (n int) { return n } +func (m *FTSBooleanTerm) Size() (n int) { + var l int + _ = l + n += 1 + sovExecutor(uint64(m.TermType)) + l = len(m.Text) + n += 1 + l + sovExecutor(uint64(l)) + n += 1 + sovExecutor(uint64(m.PhraseDistance)) + if m.XXX_unrecognized != nil { + n += len(m.XXX_unrecognized) + } + return n +} + +func (m *FTSBooleanQuery) Size() (n int) { + var l int + _ = l + if len(m.Nodes) > 0 { + for _, e := range m.Nodes { + l = e.Size() + n += 1 + l + sovExecutor(uint64(l)) + } + } + if m.XXX_unrecognized != nil { + n += len(m.XXX_unrecognized) + } + return n +} + +func (m *FTSBooleanNode) Size() (n int) { + var l int + _ = l + n += 1 + sovExecutor(uint64(m.Occur)) + n += 1 + sovExecutor(uint64(m.Modifier)) + if m.Node != nil { + n += m.Node.Size() + } + if m.XXX_unrecognized != nil { + n += len(m.XXX_unrecognized) + } + return n +} + +func (m *FTSBooleanNode_Term) Size() (n int) { + var l int + _ = l + if m.Term != nil { + l = m.Term.Size() + n += 1 + l + sovExecutor(uint64(l)) + } + return n +} +func (m *FTSBooleanNode_SubExpression) Size() (n int) { + var l int + _ = l + if m.SubExpression != nil { + l = m.SubExpression.Size() + n += 1 + l + sovExecutor(uint64(l)) + } + return n +} +func (m *FTSQueryInfo) Size() (n int) { + var l int + _ = l + n += 1 + sovExecutor(uint64(m.QueryType)) + n += 1 + sovExecutor(uint64(m.IndexId)) + if len(m.Columns) > 0 { + for _, e := range m.Columns { + l = e.Size() + n += 1 + l + sovExecutor(uint64(l)) + } + } + if len(m.ColumnNames) > 0 { + for _, s := range m.ColumnNames { + l = len(s) + n += 1 + l + sovExecutor(uint64(l)) + } + } + l = len(m.QueryText) + n += 1 + l + sovExecutor(uint64(l)) + l = len(m.QueryTokenizer) + n += 1 + l + sovExecutor(uint64(l)) + if m.TopK != nil { + n += 1 + sovExecutor(uint64(*m.TopK)) + } + n += 2 + sovExecutor(uint64(m.QueryFunc)) + if m.BooleanQuery != nil { + l = m.BooleanQuery.Size() + n += 2 + l + sovExecutor(uint64(l)) + } + if m.XXX_unrecognized != nil { + n += len(m.XXX_unrecognized) + } + return n +} + +func (m *ColumnarIndexInfo) Size() (n int) { + var l int + _ = l + n += 1 + sovExecutor(uint64(m.IndexType)) + if m.Index != nil { + n += m.Index.Size() + } + if m.XXX_unrecognized != nil { + n += len(m.XXX_unrecognized) + } + return n +} + +func (m *ColumnarIndexInfo_FtsQueryInfo) Size() (n int) { + var l int + _ = l + if m.FtsQueryInfo != nil { + l = m.FtsQueryInfo.Size() + n += 1 + l + sovExecutor(uint64(l)) + } + return n +} func (m *TableScan) Size() (n int) { var l int _ = l @@ -5439,6 +6424,12 @@ func (m *TableScan) Size() (n int) { l = m.AnnQuery.Size() n += 1 + l + sovExecutor(uint64(l)) } + if len(m.UsedColumnarIndexes) > 0 { + for _, e := range m.UsedColumnarIndexes { + l = e.Size() + n += 1 + l + sovExecutor(uint64(l)) + } + } if m.XXX_unrecognized != nil { n += len(m.XXX_unrecognized) } @@ -5491,6 +6482,12 @@ func (m *PartitionTableScan) Size() (n int) { l = m.AnnQuery.Size() n += 1 + l + sovExecutor(uint64(l)) } + if len(m.UsedColumnarIndexes) > 0 { + for _, e := range m.UsedColumnarIndexes { + l = e.Size() + n += 1 + l + sovExecutor(uint64(l)) + } + } if m.XXX_unrecognized != nil { n += len(m.XXX_unrecognized) } @@ -6278,7 +7275,386 @@ func (m *Executor) Unmarshal(dAtA []byte) error { if wireType != 0 { return fmt.Errorf("proto: wrong wireType = %d for field Tp", wireType) } - m.Tp = 0 + m.Tp = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowExecutor + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.Tp |= (ExecType(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field TblScan", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowExecutor + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthExecutor + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.TblScan == nil { + m.TblScan = &TableScan{} + } + if err := m.TblScan.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field IdxScan", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowExecutor + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthExecutor + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.IdxScan == nil { + m.IdxScan = &IndexScan{} + } + if err := m.IdxScan.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Selection", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowExecutor + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthExecutor + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Selection == nil { + m.Selection = &Selection{} + } + if err := m.Selection.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Aggregation", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowExecutor + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthExecutor + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Aggregation == nil { + m.Aggregation = &Aggregation{} + } + if err := m.Aggregation.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 6: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field TopN", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowExecutor + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthExecutor + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.TopN == nil { + m.TopN = &TopN{} + } + if err := m.TopN.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 7: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Limit", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowExecutor + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthExecutor + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Limit == nil { + m.Limit = &Limit{} + } + if err := m.Limit.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 8: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ExchangeReceiver", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowExecutor + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthExecutor + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.ExchangeReceiver == nil { + m.ExchangeReceiver = &ExchangeReceiver{} + } + if err := m.ExchangeReceiver.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 9: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Join", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowExecutor + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthExecutor + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Join == nil { + m.Join = &Join{} + } + if err := m.Join.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 10: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ExecutorId", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowExecutor + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthExecutor + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + s := string(dAtA[iNdEx:postIndex]) + m.ExecutorId = &s + iNdEx = postIndex + case 11: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Kill", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowExecutor + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthExecutor + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Kill == nil { + m.Kill = &Kill{} + } + if err := m.Kill.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 12: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ExchangeSender", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowExecutor + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthExecutor + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.ExchangeSender == nil { + m.ExchangeSender = &ExchangeSender{} + } + if err := m.ExchangeSender.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 13: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Projection", wireType) + } + var msglen int for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowExecutor @@ -6288,14 +7664,28 @@ func (m *Executor) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.Tp |= (ExecType(b) & 0x7F) << shift + msglen |= (int(b) & 0x7F) << shift if b < 0x80 { break } } - case 2: + if msglen < 0 { + return ErrInvalidLengthExecutor + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Projection == nil { + m.Projection = &Projection{} + } + if err := m.Projection.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 14: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field TblScan", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field PartitionTableScan", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -6319,16 +7709,16 @@ func (m *Executor) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if m.TblScan == nil { - m.TblScan = &TableScan{} + if m.PartitionTableScan == nil { + m.PartitionTableScan = &PartitionTableScan{} } - if err := m.TblScan.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if err := m.PartitionTableScan.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex - case 3: + case 15: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field IdxScan", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Sort", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -6352,16 +7742,16 @@ func (m *Executor) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if m.IdxScan == nil { - m.IdxScan = &IndexScan{} + if m.Sort == nil { + m.Sort = &Sort{} } - if err := m.IdxScan.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if err := m.Sort.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex - case 4: + case 16: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Selection", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Window", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -6385,16 +7775,54 @@ func (m *Executor) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if m.Selection == nil { - m.Selection = &Selection{} + if m.Window == nil { + m.Window = &Window{} } - if err := m.Selection.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if err := m.Window.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex - case 5: + case 17: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field FineGrainedShuffleStreamCount", wireType) + } + m.FineGrainedShuffleStreamCount = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowExecutor + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.FineGrainedShuffleStreamCount |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + case 18: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field FineGrainedShuffleBatchSize", wireType) + } + m.FineGrainedShuffleBatchSize = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowExecutor + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.FineGrainedShuffleBatchSize |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + case 19: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Aggregation", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Expand", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -6418,16 +7846,16 @@ func (m *Executor) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if m.Aggregation == nil { - m.Aggregation = &Aggregation{} + if m.Expand == nil { + m.Expand = &Expand{} } - if err := m.Aggregation.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if err := m.Expand.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex - case 6: + case 20: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field TopN", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Expand2", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -6451,16 +7879,16 @@ func (m *Executor) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if m.TopN == nil { - m.TopN = &TopN{} + if m.Expand2 == nil { + m.Expand2 = &Expand2{} } - if err := m.TopN.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if err := m.Expand2.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex - case 7: + case 21: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Limit", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field BroadcastQuery", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -6484,16 +7912,16 @@ func (m *Executor) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if m.Limit == nil { - m.Limit = &Limit{} + if m.BroadcastQuery == nil { + m.BroadcastQuery = &BroadcastQuery{} } - if err := m.Limit.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if err := m.BroadcastQuery.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex - case 8: + case 24: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field ExchangeReceiver", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field IndexLookup", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -6517,16 +7945,36 @@ func (m *Executor) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if m.ExchangeReceiver == nil { - m.ExchangeReceiver = &ExchangeReceiver{} + if m.IndexLookup == nil { + m.IndexLookup = &IndexLookUp{} } - if err := m.ExchangeReceiver.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if err := m.IndexLookup.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex - case 9: + case 25: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field ParentIdx", wireType) + } + var v uint32 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowExecutor + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= (uint32(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + m.ParentIdx = &v + case 26: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Join", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field ExplainForConnection", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -6550,18 +7998,88 @@ func (m *Executor) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if m.Join == nil { - m.Join = &Join{} + if m.ExplainForConnection == nil { + m.ExplainForConnection = &ExplainForConnection{} } - if err := m.Join.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if err := m.ExplainForConnection.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex - case 10: + default: + iNdEx = preIndex + skippy, err := skipExecutor(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthExecutor + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *ExchangeSender) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowExecutor + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ExchangeSender: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ExchangeSender: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Tp", wireType) + } + m.Tp = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowExecutor + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.Tp |= (ExchangeType(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + case 2: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field ExecutorId", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field EncodedTaskMeta", wireType) } - var stringLen uint64 + var byteLen int for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowExecutor @@ -6571,25 +8089,24 @@ func (m *Executor) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= (uint64(b) & 0x7F) << shift + byteLen |= (int(b) & 0x7F) << shift if b < 0x80 { break } } - intStringLen := int(stringLen) - if intStringLen < 0 { + if byteLen < 0 { return ErrInvalidLengthExecutor } - postIndex := iNdEx + intStringLen + postIndex := iNdEx + byteLen if postIndex > l { return io.ErrUnexpectedEOF } - s := string(dAtA[iNdEx:postIndex]) - m.ExecutorId = &s + m.EncodedTaskMeta = append(m.EncodedTaskMeta, make([]byte, postIndex-iNdEx)) + copy(m.EncodedTaskMeta[len(m.EncodedTaskMeta)-1], dAtA[iNdEx:postIndex]) iNdEx = postIndex - case 11: + case 3: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Kill", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field PartitionKeys", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -6613,16 +8130,14 @@ func (m *Executor) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if m.Kill == nil { - m.Kill = &Kill{} - } - if err := m.Kill.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + m.PartitionKeys = append(m.PartitionKeys, &Expr{}) + if err := m.PartitionKeys[len(m.PartitionKeys)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex - case 12: + case 4: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field ExchangeSender", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Child", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -6646,16 +8161,16 @@ func (m *Executor) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if m.ExchangeSender == nil { - m.ExchangeSender = &ExchangeSender{} + if m.Child == nil { + m.Child = &Executor{} } - if err := m.ExchangeSender.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if err := m.Child.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex - case 13: + case 5: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Projection", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Types", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -6679,16 +8194,14 @@ func (m *Executor) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if m.Projection == nil { - m.Projection = &Projection{} - } - if err := m.Projection.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + m.Types = append(m.Types, &FieldType{}) + if err := m.Types[len(m.Types)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex - case 14: + case 6: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field PartitionTableScan", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field AllFieldTypes", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -6712,18 +8225,16 @@ func (m *Executor) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if m.PartitionTableScan == nil { - m.PartitionTableScan = &PartitionTableScan{} - } - if err := m.PartitionTableScan.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + m.AllFieldTypes = append(m.AllFieldTypes, &FieldType{}) + if err := m.AllFieldTypes[len(m.AllFieldTypes)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex - case 15: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Sort", wireType) + case 7: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Compression", wireType) } - var msglen int + m.Compression = 0 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowExecutor @@ -6733,28 +8244,14 @@ func (m *Executor) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= (int(b) & 0x7F) << shift + m.Compression |= (CompressionMode(b) & 0x7F) << shift if b < 0x80 { break } } - if msglen < 0 { - return ErrInvalidLengthExecutor - } - postIndex := iNdEx + msglen - if postIndex > l { - return io.ErrUnexpectedEOF - } - if m.Sort == nil { - m.Sort = &Sort{} - } - if err := m.Sort.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - case 16: + case 8: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Window", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field UpstreamCteTaskMeta", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -6778,18 +8275,129 @@ func (m *Executor) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if m.Window == nil { - m.Window = &Window{} - } - if err := m.Window.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + m.UpstreamCteTaskMeta = append(m.UpstreamCteTaskMeta, &EncodedBytesSlice{}) + if err := m.UpstreamCteTaskMeta[len(m.UpstreamCteTaskMeta)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex - case 17: + default: + iNdEx = preIndex + skippy, err := skipExecutor(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthExecutor + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *IndexLookUp) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowExecutor + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: IndexLookUp: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: IndexLookUp: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType == 0 { + var v uint32 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowExecutor + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= (uint32(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + m.IndexHandleOffsets = append(m.IndexHandleOffsets, v) + } else if wireType == 2 { + var packedLen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowExecutor + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + packedLen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if packedLen < 0 { + return ErrInvalidLengthExecutor + } + postIndex := iNdEx + packedLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + for iNdEx < postIndex { + var v uint32 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowExecutor + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= (uint32(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + m.IndexHandleOffsets = append(m.IndexHandleOffsets, v) + } + } else { + return fmt.Errorf("proto: wrong wireType = %d for field IndexHandleOffsets", wireType) + } + case 2: if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field FineGrainedShuffleStreamCount", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field KeepOrder", wireType) } - m.FineGrainedShuffleStreamCount = 0 + var v int for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowExecutor @@ -6799,16 +8407,18 @@ func (m *Executor) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.FineGrainedShuffleStreamCount |= (uint64(b) & 0x7F) << shift + v |= (int(b) & 0x7F) << shift if b < 0x80 { break } } - case 18: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field FineGrainedShuffleBatchSize", wireType) + b := bool(v != 0) + m.KeepOrder = &b + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Children", wireType) } - m.FineGrainedShuffleBatchSize = 0 + var msglen int for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowExecutor @@ -6818,16 +8428,79 @@ func (m *Executor) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.FineGrainedShuffleBatchSize |= (uint64(b) & 0x7F) << shift + msglen |= (int(b) & 0x7F) << shift if b < 0x80 { break } } - case 19: + if msglen < 0 { + return ErrInvalidLengthExecutor + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Children = append(m.Children, &Executor{}) + if err := m.Children[len(m.Children)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipExecutor(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthExecutor + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *EncodedBytesSlice) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowExecutor + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: EncodedBytesSlice: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: EncodedBytesSlice: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Expand", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field EncodedTasks", wireType) } - var msglen int + var byteLen int for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowExecutor @@ -6837,63 +8510,77 @@ func (m *Executor) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= (int(b) & 0x7F) << shift + byteLen |= (int(b) & 0x7F) << shift if b < 0x80 { break } } - if msglen < 0 { + if byteLen < 0 { return ErrInvalidLengthExecutor } - postIndex := iNdEx + msglen + postIndex := iNdEx + byteLen if postIndex > l { return io.ErrUnexpectedEOF } - if m.Expand == nil { - m.Expand = &Expand{} - } - if err := m.Expand.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } + m.EncodedTasks = append(m.EncodedTasks, make([]byte, postIndex-iNdEx)) + copy(m.EncodedTasks[len(m.EncodedTasks)-1], dAtA[iNdEx:postIndex]) iNdEx = postIndex - case 20: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Expand2", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowExecutor - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= (int(b) & 0x7F) << shift - if b < 0x80 { - break - } + default: + iNdEx = preIndex + skippy, err := skipExecutor(dAtA[iNdEx:]) + if err != nil { + return err } - if msglen < 0 { + if skippy < 0 { return ErrInvalidLengthExecutor } - postIndex := iNdEx + msglen - if postIndex > l { + if (iNdEx + skippy) > l { return io.ErrUnexpectedEOF } - if m.Expand2 == nil { - m.Expand2 = &Expand2{} + m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *ExchangeReceiver) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowExecutor } - if err := m.Expand2.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err + if iNdEx >= l { + return io.ErrUnexpectedEOF } - iNdEx = postIndex - case 21: + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ExchangeReceiver: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ExchangeReceiver: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field BroadcastQuery", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field EncodedTaskMeta", wireType) } - var msglen int + var byteLen int for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowExecutor @@ -6903,28 +8590,24 @@ func (m *Executor) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= (int(b) & 0x7F) << shift + byteLen |= (int(b) & 0x7F) << shift if b < 0x80 { break } } - if msglen < 0 { + if byteLen < 0 { return ErrInvalidLengthExecutor } - postIndex := iNdEx + msglen + postIndex := iNdEx + byteLen if postIndex > l { return io.ErrUnexpectedEOF } - if m.BroadcastQuery == nil { - m.BroadcastQuery = &BroadcastQuery{} - } - if err := m.BroadcastQuery.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } + m.EncodedTaskMeta = append(m.EncodedTaskMeta, make([]byte, postIndex-iNdEx)) + copy(m.EncodedTaskMeta[len(m.EncodedTaskMeta)-1], dAtA[iNdEx:postIndex]) iNdEx = postIndex - case 24: + case 2: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field IndexLookup", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field FieldTypes", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -6948,18 +8631,16 @@ func (m *Executor) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if m.IndexLookup == nil { - m.IndexLookup = &IndexLookUp{} - } - if err := m.IndexLookup.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + m.FieldTypes = append(m.FieldTypes, &FieldType{}) + if err := m.FieldTypes[len(m.FieldTypes)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex - case 25: + case 3: if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field ParentIdx", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Tp", wireType) } - var v uint32 + var v ExchangeType for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowExecutor @@ -6969,17 +8650,17 @@ func (m *Executor) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - v |= (uint32(b) & 0x7F) << shift + v |= (ExchangeType(b) & 0x7F) << shift if b < 0x80 { break } } - m.ParentIdx = &v - case 26: + m.Tp = &v + case 4: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field ExplainForConnection", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field OriginalCtePrdocuerTaskMeta", wireType) } - var msglen int + var byteLen int for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowExecutor @@ -6989,24 +8670,20 @@ func (m *Executor) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= (int(b) & 0x7F) << shift + byteLen |= (int(b) & 0x7F) << shift if b < 0x80 { break } } - if msglen < 0 { + if byteLen < 0 { return ErrInvalidLengthExecutor } - postIndex := iNdEx + msglen + postIndex := iNdEx + byteLen if postIndex > l { return io.ErrUnexpectedEOF } - if m.ExplainForConnection == nil { - m.ExplainForConnection = &ExplainForConnection{} - } - if err := m.ExplainForConnection.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } + m.OriginalCtePrdocuerTaskMeta = append(m.OriginalCtePrdocuerTaskMeta, make([]byte, postIndex-iNdEx)) + copy(m.OriginalCtePrdocuerTaskMeta[len(m.OriginalCtePrdocuerTaskMeta)-1], dAtA[iNdEx:postIndex]) iNdEx = postIndex default: iNdEx = preIndex @@ -7030,7 +8707,7 @@ func (m *Executor) Unmarshal(dAtA []byte) error { } return nil } -func (m *ExchangeSender) Unmarshal(dAtA []byte) error { +func (m *ANNQueryInfo) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -7053,17 +8730,17 @@ func (m *ExchangeSender) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: ExchangeSender: wiretype end group for non-group") + return fmt.Errorf("proto: ANNQueryInfo: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: ExchangeSender: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: ANNQueryInfo: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field Tp", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field QueryType", wireType) } - m.Tp = 0 + m.QueryType = 0 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowExecutor @@ -7073,16 +8750,16 @@ func (m *ExchangeSender) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.Tp |= (ExchangeType(b) & 0x7F) << shift + m.QueryType |= (ANNQueryType(b) & 0x7F) << shift if b < 0x80 { break } } case 2: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field EncodedTaskMeta", wireType) + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field DistanceMetric", wireType) } - var byteLen int + m.DistanceMetric = 0 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowExecutor @@ -7092,26 +8769,16 @@ func (m *ExchangeSender) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - byteLen |= (int(b) & 0x7F) << shift + m.DistanceMetric |= (VectorDistanceMetric(b) & 0x7F) << shift if b < 0x80 { break } } - if byteLen < 0 { - return ErrInvalidLengthExecutor - } - postIndex := iNdEx + byteLen - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.EncodedTaskMeta = append(m.EncodedTaskMeta, make([]byte, postIndex-iNdEx)) - copy(m.EncodedTaskMeta[len(m.EncodedTaskMeta)-1], dAtA[iNdEx:postIndex]) - iNdEx = postIndex case 3: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field PartitionKeys", wireType) + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field TopK", wireType) } - var msglen int + m.TopK = 0 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowExecutor @@ -7121,28 +8788,16 @@ func (m *ExchangeSender) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= (int(b) & 0x7F) << shift + m.TopK |= (uint32(b) & 0x7F) << shift if b < 0x80 { break } } - if msglen < 0 { - return ErrInvalidLengthExecutor - } - postIndex := iNdEx + msglen - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.PartitionKeys = append(m.PartitionKeys, &Expr{}) - if err := m.PartitionKeys[len(m.PartitionKeys)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex case 4: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Child", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field ColumnName", wireType) } - var msglen int + var stringLen uint64 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowExecutor @@ -7152,61 +8807,45 @@ func (m *ExchangeSender) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= (int(b) & 0x7F) << shift + stringLen |= (uint64(b) & 0x7F) << shift if b < 0x80 { break } } - if msglen < 0 { + intStringLen := int(stringLen) + if intStringLen < 0 { return ErrInvalidLengthExecutor } - postIndex := iNdEx + msglen + postIndex := iNdEx + intStringLen if postIndex > l { return io.ErrUnexpectedEOF } - if m.Child == nil { - m.Child = &Executor{} - } - if err := m.Child.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } + m.ColumnName = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex case 5: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Types", wireType) + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field ColumnId", wireType) } - var msglen int + m.ColumnId = 0 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowExecutor - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= (int(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthExecutor - } - postIndex := iNdEx + msglen - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Types = append(m.Types, &FieldType{}) - if err := m.Types[len(m.Types)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.ColumnId |= (int64(b) & 0x7F) << shift + if b < 0x80 { + break + } } - iNdEx = postIndex case 6: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field AllFieldTypes", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field RefVecF32", wireType) } - var msglen int + var byteLen int for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowExecutor @@ -7216,28 +8855,28 @@ func (m *ExchangeSender) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= (int(b) & 0x7F) << shift + byteLen |= (int(b) & 0x7F) << shift if b < 0x80 { break } } - if msglen < 0 { + if byteLen < 0 { return ErrInvalidLengthExecutor } - postIndex := iNdEx + msglen + postIndex := iNdEx + byteLen if postIndex > l { return io.ErrUnexpectedEOF } - m.AllFieldTypes = append(m.AllFieldTypes, &FieldType{}) - if err := m.AllFieldTypes[len(m.AllFieldTypes)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err + m.RefVecF32 = append(m.RefVecF32[:0], dAtA[iNdEx:postIndex]...) + if m.RefVecF32 == nil { + m.RefVecF32 = []byte{} } iNdEx = postIndex - case 7: + case 8: if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field Compression", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field IndexId", wireType) } - m.Compression = 0 + m.IndexId = 0 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowExecutor @@ -7247,16 +8886,27 @@ func (m *ExchangeSender) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.Compression |= (CompressionMode(b) & 0x7F) << shift + m.IndexId |= (int64(b) & 0x7F) << shift if b < 0x80 { break } } - case 8: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field UpstreamCteTaskMeta", wireType) + case 10: + if wireType != 1 { + return fmt.Errorf("proto: wrong wireType = %d for field MaxDistance", wireType) } - var msglen int + var v uint64 + if (iNdEx + 8) > l { + return io.ErrUnexpectedEOF + } + v = uint64(encoding_binary.LittleEndian.Uint64(dAtA[iNdEx:])) + iNdEx += 8 + m.MaxDistance = float64(math.Float64frombits(v)) + case 20: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field HnswEfSearch", wireType) + } + m.HnswEfSearch = 0 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowExecutor @@ -7266,23 +8916,11 @@ func (m *ExchangeSender) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= (int(b) & 0x7F) << shift + m.HnswEfSearch |= (uint32(b) & 0x7F) << shift if b < 0x80 { break } } - if msglen < 0 { - return ErrInvalidLengthExecutor - } - postIndex := iNdEx + msglen - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.UpstreamCteTaskMeta = append(m.UpstreamCteTaskMeta, &EncodedBytesSlice{}) - if err := m.UpstreamCteTaskMeta[len(m.UpstreamCteTaskMeta)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipExecutor(dAtA[iNdEx:]) @@ -7305,7 +8943,7 @@ func (m *ExchangeSender) Unmarshal(dAtA []byte) error { } return nil } -func (m *IndexLookUp) Unmarshal(dAtA []byte) error { +func (m *FTSBooleanTerm) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -7328,79 +8966,17 @@ func (m *IndexLookUp) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: IndexLookUp: wiretype end group for non-group") + return fmt.Errorf("proto: FTSBooleanTerm: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: IndexLookUp: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: FTSBooleanTerm: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: - if wireType == 0 { - var v uint32 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowExecutor - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - v |= (uint32(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - m.IndexHandleOffsets = append(m.IndexHandleOffsets, v) - } else if wireType == 2 { - var packedLen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowExecutor - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - packedLen |= (int(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - if packedLen < 0 { - return ErrInvalidLengthExecutor - } - postIndex := iNdEx + packedLen - if postIndex > l { - return io.ErrUnexpectedEOF - } - for iNdEx < postIndex { - var v uint32 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowExecutor - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - v |= (uint32(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - m.IndexHandleOffsets = append(m.IndexHandleOffsets, v) - } - } else { - return fmt.Errorf("proto: wrong wireType = %d for field IndexHandleOffsets", wireType) - } - case 2: if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field KeepOrder", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field TermType", wireType) } - var v int + m.TermType = 0 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowExecutor @@ -7410,18 +8986,16 @@ func (m *IndexLookUp) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - v |= (int(b) & 0x7F) << shift + m.TermType |= (FTSBooleanTermType(b) & 0x7F) << shift if b < 0x80 { break } } - b := bool(v != 0) - m.KeepOrder = &b - case 3: + case 2: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Children", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Text", wireType) } - var msglen int + var stringLen uint64 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowExecutor @@ -7431,23 +9005,40 @@ func (m *IndexLookUp) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= (int(b) & 0x7F) << shift + stringLen |= (uint64(b) & 0x7F) << shift if b < 0x80 { break } } - if msglen < 0 { + intStringLen := int(stringLen) + if intStringLen < 0 { return ErrInvalidLengthExecutor } - postIndex := iNdEx + msglen + postIndex := iNdEx + intStringLen if postIndex > l { return io.ErrUnexpectedEOF } - m.Children = append(m.Children, &Executor{}) - if err := m.Children[len(m.Children)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } + m.Text = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex + case 3: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field PhraseDistance", wireType) + } + m.PhraseDistance = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowExecutor + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.PhraseDistance |= (uint32(b) & 0x7F) << shift + if b < 0x80 { + break + } + } default: iNdEx = preIndex skippy, err := skipExecutor(dAtA[iNdEx:]) @@ -7470,7 +9061,7 @@ func (m *IndexLookUp) Unmarshal(dAtA []byte) error { } return nil } -func (m *EncodedBytesSlice) Unmarshal(dAtA []byte) error { +func (m *FTSBooleanQuery) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -7493,17 +9084,17 @@ func (m *EncodedBytesSlice) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: EncodedBytesSlice: wiretype end group for non-group") + return fmt.Errorf("proto: FTSBooleanQuery: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: EncodedBytesSlice: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: FTSBooleanQuery: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field EncodedTasks", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Nodes", wireType) } - var byteLen int + var msglen int for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowExecutor @@ -7513,20 +9104,22 @@ func (m *EncodedBytesSlice) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - byteLen |= (int(b) & 0x7F) << shift + msglen |= (int(b) & 0x7F) << shift if b < 0x80 { break } } - if byteLen < 0 { + if msglen < 0 { return ErrInvalidLengthExecutor } - postIndex := iNdEx + byteLen + postIndex := iNdEx + msglen if postIndex > l { return io.ErrUnexpectedEOF } - m.EncodedTasks = append(m.EncodedTasks, make([]byte, postIndex-iNdEx)) - copy(m.EncodedTasks[len(m.EncodedTasks)-1], dAtA[iNdEx:postIndex]) + m.Nodes = append(m.Nodes, &FTSBooleanNode{}) + if err := m.Nodes[len(m.Nodes)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } iNdEx = postIndex default: iNdEx = preIndex @@ -7550,7 +9143,7 @@ func (m *EncodedBytesSlice) Unmarshal(dAtA []byte) error { } return nil } -func (m *ExchangeReceiver) Unmarshal(dAtA []byte) error { +func (m *FTSBooleanNode) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -7573,17 +9166,17 @@ func (m *ExchangeReceiver) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: ExchangeReceiver: wiretype end group for non-group") + return fmt.Errorf("proto: FTSBooleanNode: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: ExchangeReceiver: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: FTSBooleanNode: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field EncodedTaskMeta", wireType) + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Occur", wireType) } - var byteLen int + m.Occur = 0 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowExecutor @@ -7593,26 +9186,16 @@ func (m *ExchangeReceiver) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - byteLen |= (int(b) & 0x7F) << shift + m.Occur |= (FTSBooleanOccur(b) & 0x7F) << shift if b < 0x80 { break } } - if byteLen < 0 { - return ErrInvalidLengthExecutor - } - postIndex := iNdEx + byteLen - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.EncodedTaskMeta = append(m.EncodedTaskMeta, make([]byte, postIndex-iNdEx)) - copy(m.EncodedTaskMeta[len(m.EncodedTaskMeta)-1], dAtA[iNdEx:postIndex]) - iNdEx = postIndex case 2: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field FieldTypes", wireType) + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Modifier", wireType) } - var msglen int + m.Modifier = 0 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowExecutor @@ -7622,28 +9205,16 @@ func (m *ExchangeReceiver) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= (int(b) & 0x7F) << shift + m.Modifier |= (FTSBooleanModifier(b) & 0x7F) << shift if b < 0x80 { break } } - if msglen < 0 { - return ErrInvalidLengthExecutor - } - postIndex := iNdEx + msglen - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.FieldTypes = append(m.FieldTypes, &FieldType{}) - if err := m.FieldTypes[len(m.FieldTypes)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex case 3: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field Tp", wireType) + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Term", wireType) } - var v ExchangeType + var msglen int for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowExecutor @@ -7653,17 +9224,29 @@ func (m *ExchangeReceiver) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - v |= (ExchangeType(b) & 0x7F) << shift + msglen |= (int(b) & 0x7F) << shift if b < 0x80 { break } } - m.Tp = &v + if msglen < 0 { + return ErrInvalidLengthExecutor + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + v := &FTSBooleanTerm{} + if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + m.Node = &FTSBooleanNode_Term{v} + iNdEx = postIndex case 4: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field OriginalCtePrdocuerTaskMeta", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field SubExpression", wireType) } - var byteLen int + var msglen int for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowExecutor @@ -7673,20 +9256,23 @@ func (m *ExchangeReceiver) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - byteLen |= (int(b) & 0x7F) << shift + msglen |= (int(b) & 0x7F) << shift if b < 0x80 { break } } - if byteLen < 0 { + if msglen < 0 { return ErrInvalidLengthExecutor } - postIndex := iNdEx + byteLen + postIndex := iNdEx + msglen if postIndex > l { return io.ErrUnexpectedEOF } - m.OriginalCtePrdocuerTaskMeta = append(m.OriginalCtePrdocuerTaskMeta, make([]byte, postIndex-iNdEx)) - copy(m.OriginalCtePrdocuerTaskMeta[len(m.OriginalCtePrdocuerTaskMeta)-1], dAtA[iNdEx:postIndex]) + v := &FTSBooleanQuery{} + if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + m.Node = &FTSBooleanNode_SubExpression{v} iNdEx = postIndex default: iNdEx = preIndex @@ -7710,7 +9296,7 @@ func (m *ExchangeReceiver) Unmarshal(dAtA []byte) error { } return nil } -func (m *ANNQueryInfo) Unmarshal(dAtA []byte) error { +func (m *FTSQueryInfo) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -7733,10 +9319,10 @@ func (m *ANNQueryInfo) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: ANNQueryInfo: wiretype end group for non-group") + return fmt.Errorf("proto: FTSQueryInfo: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: ANNQueryInfo: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: FTSQueryInfo: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: @@ -7753,16 +9339,16 @@ func (m *ANNQueryInfo) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.QueryType |= (ANNQueryType(b) & 0x7F) << shift + m.QueryType |= (FTSQueryType(b) & 0x7F) << shift if b < 0x80 { break } } case 2: if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field DistanceMetric", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field IndexId", wireType) } - m.DistanceMetric = 0 + m.IndexId = 0 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowExecutor @@ -7772,16 +9358,16 @@ func (m *ANNQueryInfo) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.DistanceMetric |= (VectorDistanceMetric(b) & 0x7F) << shift + m.IndexId |= (int64(b) & 0x7F) << shift if b < 0x80 { break } } case 3: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field TopK", wireType) + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Columns", wireType) } - m.TopK = 0 + var msglen int for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowExecutor @@ -7791,14 +9377,26 @@ func (m *ANNQueryInfo) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.TopK |= (uint32(b) & 0x7F) << shift + msglen |= (int(b) & 0x7F) << shift if b < 0x80 { break } } + if msglen < 0 { + return ErrInvalidLengthExecutor + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Columns = append(m.Columns, &ColumnInfo{}) + if err := m.Columns[len(m.Columns)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex case 4: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field ColumnName", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field ColumnNames", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -7823,13 +9421,13 @@ func (m *ANNQueryInfo) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.ColumnName = string(dAtA[iNdEx:postIndex]) + m.ColumnNames = append(m.ColumnNames, string(dAtA[iNdEx:postIndex])) iNdEx = postIndex case 5: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field ColumnId", wireType) + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field QueryText", wireType) } - m.ColumnId = 0 + var stringLen uint64 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowExecutor @@ -7839,16 +9437,26 @@ func (m *ANNQueryInfo) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.ColumnId |= (int64(b) & 0x7F) << shift + stringLen |= (uint64(b) & 0x7F) << shift if b < 0x80 { break } } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthExecutor + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.QueryText = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex case 6: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field RefVecF32", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field QueryTokenizer", wireType) } - var byteLen int + var stringLen uint64 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowExecutor @@ -7858,28 +9466,26 @@ func (m *ANNQueryInfo) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - byteLen |= (int(b) & 0x7F) << shift + stringLen |= (uint64(b) & 0x7F) << shift if b < 0x80 { break } } - if byteLen < 0 { + intStringLen := int(stringLen) + if intStringLen < 0 { return ErrInvalidLengthExecutor } - postIndex := iNdEx + byteLen + postIndex := iNdEx + intStringLen if postIndex > l { return io.ErrUnexpectedEOF } - m.RefVecF32 = append(m.RefVecF32[:0], dAtA[iNdEx:postIndex]...) - if m.RefVecF32 == nil { - m.RefVecF32 = []byte{} - } + m.QueryTokenizer = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex - case 8: + case 10: if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field IndexId", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field TopK", wireType) } - m.IndexId = 0 + var v uint32 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowExecutor @@ -7889,27 +9495,120 @@ func (m *ANNQueryInfo) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.IndexId |= (int64(b) & 0x7F) << shift + v |= (uint32(b) & 0x7F) << shift if b < 0x80 { break } } - case 10: - if wireType != 1 { - return fmt.Errorf("proto: wrong wireType = %d for field MaxDistance", wireType) + m.TopK = &v + case 20: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field QueryFunc", wireType) } - var v uint64 - if (iNdEx + 8) > l { + m.QueryFunc = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowExecutor + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.QueryFunc |= (ScalarFuncSig(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + case 22: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field BooleanQuery", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowExecutor + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthExecutor + } + postIndex := iNdEx + msglen + if postIndex > l { return io.ErrUnexpectedEOF } - v = uint64(encoding_binary.LittleEndian.Uint64(dAtA[iNdEx:])) - iNdEx += 8 - m.MaxDistance = float64(math.Float64frombits(v)) - case 20: + if m.BooleanQuery == nil { + m.BooleanQuery = &FTSBooleanQuery{} + } + if err := m.BooleanQuery.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipExecutor(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthExecutor + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *ColumnarIndexInfo) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowExecutor + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ColumnarIndexInfo: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ColumnarIndexInfo: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field HnswEfSearch", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field IndexType", wireType) } - m.HnswEfSearch = 0 + m.IndexType = 0 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowExecutor @@ -7919,11 +9618,43 @@ func (m *ANNQueryInfo) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.HnswEfSearch |= (uint32(b) & 0x7F) << shift + m.IndexType |= (ColumnarIndexType(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field FtsQueryInfo", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowExecutor + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift if b < 0x80 { break } } + if msglen < 0 { + return ErrInvalidLengthExecutor + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + v := &FTSQueryInfo{} + if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + m.Index = &ColumnarIndexInfo_FtsQueryInfo{v} + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipExecutor(dAtA[iNdEx:]) @@ -8375,6 +10106,37 @@ func (m *TableScan) Unmarshal(dAtA []byte) error { return err } iNdEx = postIndex + case 14: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field UsedColumnarIndexes", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowExecutor + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthExecutor + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.UsedColumnarIndexes = append(m.UsedColumnarIndexes, &ColumnarIndexInfo{}) + if err := m.UsedColumnarIndexes[len(m.UsedColumnarIndexes)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipExecutor(dAtA[iNdEx:]) @@ -8817,6 +10579,37 @@ func (m *PartitionTableScan) Unmarshal(dAtA []byte) error { return err } iNdEx = postIndex + case 12: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field UsedColumnarIndexes", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowExecutor + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthExecutor + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.UsedColumnarIndexes = append(m.UsedColumnarIndexes, &ColumnarIndexInfo{}) + if err := m.UsedColumnarIndexes[len(m.UsedColumnarIndexes)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipExecutor(dAtA[iNdEx:]) @@ -13622,291 +15415,326 @@ var ( func init() { proto.RegisterFile("executor.proto", fileDescriptorExecutor) } var fileDescriptorExecutor = []byte{ - // 4569 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x5a, 0x4b, 0x73, 0x1c, 0x47, - 0x72, 0x66, 0xcf, 0x03, 0x98, 0xc9, 0x79, 0xa0, 0x51, 0x00, 0xc1, 0x26, 0x28, 0x92, 0xd0, 0x2c, - 0x25, 0x61, 0x61, 0x89, 0xa2, 0x40, 0xae, 0x1e, 0xbb, 0xde, 0x95, 0xf0, 0x14, 0x87, 0x04, 0x06, - 0xd8, 0x1e, 0x2c, 0xb5, 0x07, 0x47, 0x74, 0x34, 0xba, 0x6b, 0x06, 0x45, 0x74, 0x57, 0x37, 0xfb, - 0x41, 0x0e, 0x74, 0xd2, 0xd9, 0x27, 0x87, 0x37, 0xec, 0xf0, 0xcd, 0x11, 0x3e, 0xd9, 0x61, 0x87, - 0x0f, 0xfe, 0x03, 0xf6, 0x71, 0x8f, 0xbe, 0x7a, 0x0f, 0x0e, 0x87, 0x7c, 0xf2, 0x5f, 0xf0, 0xc9, - 0x51, 0x59, 0xd5, 0x3d, 0x3d, 0x98, 0x01, 0x44, 0x85, 0x7d, 0xf0, 0x69, 0xa6, 0x32, 0xbf, 0xcc, - 0x7a, 0x65, 0x66, 0x65, 0x65, 0x17, 0xb4, 0xe9, 0x88, 0x3a, 0x69, 0x12, 0x44, 0x0f, 0xc3, 0x28, - 0x48, 0x02, 0x52, 0x49, 0x58, 0x78, 0xba, 0xaa, 0xd3, 0x51, 0x18, 0xd1, 0x38, 0x66, 0x01, 0x97, - 0xf4, 0xd5, 0x66, 0xec, 0x9c, 0x51, 0xdf, 0x56, 0xad, 0xe5, 0x61, 0x30, 0x0c, 0xf0, 0xef, 0xc7, - 0xe2, 0x9f, 0xa4, 0x76, 0xfe, 0xae, 0x0e, 0xb5, 0x3d, 0xa5, 0x8e, 0x3c, 0x80, 0x52, 0x12, 0x1a, - 0xda, 0x9a, 0xb6, 0xde, 0xde, 0x6c, 0x3f, 0x14, 0x5a, 0x1f, 0x0a, 0xde, 0xc9, 0x45, 0x48, 0xb7, - 0x2b, 0xbf, 0xff, 0xf7, 0xfb, 0x37, 0xcc, 0x52, 0x12, 0x92, 0x0d, 0xa8, 0x25, 0xa7, 0x9e, 0x15, - 0x3b, 0x36, 0x37, 0x4a, 0x6b, 0xda, 0x7a, 0x63, 0x73, 0x41, 0x62, 0x4f, 0xec, 0x53, 0x8f, 0xf6, - 0x1d, 0x9b, 0x9b, 0xf3, 0xc9, 0xa9, 0x27, 0xfe, 0x08, 0x2c, 0x73, 0x47, 0x12, 0x5b, 0x2e, 0x62, - 0xbb, 0xdc, 0xa5, 0x23, 0x89, 0x65, 0x2e, 0xfe, 0x21, 0x1f, 0x41, 0x3d, 0xa6, 0x1e, 0x75, 0x12, - 0x16, 0x70, 0xa3, 0x52, 0x04, 0xf7, 0x33, 0xb2, 0x39, 0x46, 0x90, 0xc7, 0xd0, 0xb0, 0x87, 0xc3, - 0x88, 0x0e, 0x6d, 0x14, 0xa8, 0xa2, 0xc0, 0xa2, 0x14, 0xd8, 0x1a, 0x33, 0xcc, 0x22, 0x8a, 0xdc, - 0x83, 0x4a, 0x12, 0x84, 0x3d, 0x63, 0x0e, 0xd1, 0xa0, 0xc6, 0x1d, 0x84, 0x3d, 0x13, 0xe9, 0xe4, - 0x5d, 0xa8, 0x7a, 0xcc, 0x67, 0x89, 0x31, 0x8f, 0x80, 0x86, 0x04, 0x1c, 0x08, 0x92, 0x29, 0x39, - 0x64, 0x07, 0x16, 0xe9, 0xc8, 0x39, 0xb3, 0xf9, 0x90, 0x5a, 0x11, 0x75, 0x28, 0x7b, 0x4d, 0x23, - 0xa3, 0x86, 0xf0, 0x95, 0x6c, 0xcd, 0x24, 0xdb, 0x54, 0x5c, 0x53, 0xa7, 0x97, 0x28, 0x62, 0x1c, - 0x2f, 0x03, 0xc6, 0x8d, 0x7a, 0x71, 0x1c, 0xcf, 0x02, 0xc6, 0x4d, 0xa4, 0x93, 0xfb, 0xd0, 0xc8, - 0x36, 0xd9, 0x62, 0xae, 0x01, 0x6b, 0xda, 0x7a, 0xdd, 0x84, 0x8c, 0xd4, 0x75, 0x85, 0x82, 0x73, - 0xe6, 0x79, 0x46, 0xa3, 0xa8, 0xe0, 0x39, 0xf3, 0x3c, 0x13, 0xe9, 0xe4, 0x97, 0xb0, 0x90, 0x8f, - 0x32, 0xa6, 0xdc, 0xa5, 0x91, 0xd1, 0x44, 0xe8, 0xf2, 0xe4, 0x18, 0xfb, 0xc8, 0x33, 0xdb, 0x74, - 0xa2, 0x4d, 0x1e, 0x01, 0x1c, 0x47, 0xc1, 0x4b, 0xb5, 0x19, 0x2d, 0x94, 0xd4, 0xa5, 0xe4, 0x98, - 0x6e, 0x16, 0x30, 0xe4, 0x19, 0x2c, 0x87, 0x76, 0x94, 0x30, 0xd1, 0xb0, 0x12, 0x61, 0x09, 0x72, - 0xd7, 0xdb, 0x28, 0x6b, 0x28, 0xd9, 0x0c, 0x31, 0x36, 0x15, 0x12, 0x4e, 0xd1, 0xc4, 0xe4, 0xe2, - 0x20, 0x4a, 0x8c, 0x85, 0xe2, 0xe4, 0xfa, 0x41, 0x94, 0x98, 0x48, 0x27, 0x0f, 0x60, 0xee, 0x0d, - 0xe3, 0x6e, 0xf0, 0xc6, 0xd0, 0x11, 0xd1, 0x94, 0x88, 0x6f, 0x90, 0x66, 0x2a, 0x1e, 0xe9, 0xc1, - 0xbb, 0x03, 0xc6, 0xa9, 0x35, 0x8c, 0x6c, 0xc6, 0xa9, 0x6b, 0xc5, 0x67, 0xe9, 0x60, 0x20, 0x86, - 0x95, 0x44, 0xd4, 0xf6, 0x2d, 0x27, 0x48, 0x79, 0x62, 0x2c, 0xae, 0x69, 0xeb, 0x15, 0x65, 0xdc, - 0x77, 0x05, 0xfc, 0x6b, 0x89, 0xee, 0x4b, 0x70, 0x1f, 0xb1, 0x3b, 0x02, 0x4a, 0x9e, 0xc1, 0xfd, - 0x99, 0xfa, 0x4e, 0xed, 0xc4, 0x39, 0xb3, 0x62, 0xf6, 0x2d, 0x35, 0x48, 0x41, 0xdb, 0x9d, 0x69, - 0x6d, 0xdb, 0x02, 0xd9, 0x67, 0xdf, 0x52, 0x31, 0x03, 0x3a, 0x0a, 0x6d, 0xee, 0x1a, 0x4b, 0xc5, - 0x19, 0xec, 0x21, 0xcd, 0x54, 0x3c, 0xf2, 0x01, 0xcc, 0xcb, 0x7f, 0x9b, 0xc6, 0x32, 0xc2, 0x5a, - 0x45, 0xd8, 0xa6, 0x99, 0x71, 0xc5, 0x6e, 0x9f, 0x46, 0x81, 0xed, 0x3a, 0x76, 0x9c, 0x58, 0xaf, - 0x52, 0x1a, 0x5d, 0x18, 0x37, 0x8b, 0xbb, 0xbd, 0x9d, 0x31, 0x7f, 0x2d, 0x78, 0x66, 0xfb, 0x74, - 0xa2, 0x4d, 0x9e, 0x40, 0x93, 0x09, 0x7f, 0xb4, 0xbc, 0x20, 0x38, 0x4f, 0x43, 0xc3, 0x28, 0xfa, - 0x12, 0x7a, 0xea, 0x41, 0x10, 0x9c, 0xff, 0x26, 0x34, 0x1b, 0x2c, 0x6b, 0xa4, 0x21, 0xb9, 0x0b, - 0x10, 0xda, 0x11, 0xe5, 0x89, 0xc5, 0xdc, 0x91, 0x71, 0x7b, 0x4d, 0x5b, 0x6f, 0x99, 0x75, 0x49, - 0xe9, 0xba, 0x23, 0x72, 0x0c, 0x2b, 0x74, 0x14, 0x7a, 0x36, 0xe3, 0xd6, 0x20, 0x88, 0x2c, 0x27, - 0xe0, 0x5c, 0x99, 0xd3, 0x2a, 0xaa, 0x5f, 0xcd, 0xe7, 0x22, 0x30, 0xfb, 0x41, 0xb4, 0x93, 0x23, - 0xcc, 0x65, 0x3a, 0x83, 0xda, 0xf9, 0x87, 0x32, 0xb4, 0x27, 0xed, 0x96, 0xac, 0x17, 0x22, 0x16, - 0x99, 0xb4, 0xec, 0xa9, 0xa8, 0xb5, 0x48, 0xb9, 0x13, 0xb8, 0xd4, 0xb5, 0x12, 0x3b, 0x3e, 0xb7, - 0x7c, 0x9a, 0xd8, 0x46, 0x69, 0xad, 0xbc, 0xde, 0x34, 0x17, 0x14, 0xe3, 0xc4, 0x8e, 0xcf, 0x0f, - 0x69, 0x62, 0x93, 0x4f, 0xa0, 0x3d, 0xb6, 0xe5, 0x73, 0x7a, 0x11, 0x1b, 0xe5, 0xb5, 0xf2, 0xd8, - 0x12, 0xf7, 0x46, 0x61, 0x64, 0xb6, 0x72, 0xc4, 0x73, 0x7a, 0x11, 0x93, 0x07, 0x50, 0x75, 0xce, - 0x98, 0xe7, 0xaa, 0xc0, 0x55, 0x88, 0x9e, 0xc2, 0x61, 0x4d, 0xc9, 0x24, 0xef, 0x41, 0x35, 0xb9, - 0x08, 0x69, 0x6c, 0x54, 0x51, 0x9f, 0x0a, 0x6f, 0xfb, 0x8c, 0x7a, 0xae, 0x18, 0xae, 0x29, 0xb9, - 0xe4, 0x33, 0x58, 0xb0, 0x3d, 0xcf, 0x1a, 0x08, 0xba, 0x25, 0x05, 0xe6, 0x66, 0x0b, 0xb4, 0x6c, - 0xcf, 0xcb, 0x5b, 0x31, 0xf9, 0x25, 0x34, 0x9c, 0xc0, 0xcf, 0x8e, 0x01, 0x0c, 0x62, 0xed, 0xcd, - 0x9b, 0x52, 0x68, 0x67, 0xcc, 0x38, 0x0c, 0xdc, 0x6c, 0x69, 0x8a, 0x78, 0x72, 0x00, 0x2b, 0x69, - 0x98, 0xb9, 0x47, 0x42, 0x0b, 0x0b, 0x55, 0xc3, 0xee, 0x6f, 0xa9, 0x59, 0xc9, 0xe5, 0xda, 0xbe, - 0x48, 0x68, 0xdc, 0xf7, 0x98, 0x43, 0xcd, 0xa5, 0x4c, 0x6c, 0x27, 0xa1, 0xd9, 0x2a, 0x76, 0xfe, - 0x54, 0x83, 0x46, 0xc1, 0x78, 0xc8, 0x23, 0x58, 0x96, 0x56, 0x76, 0x66, 0x73, 0xd7, 0xa3, 0x56, - 0x30, 0x18, 0xc4, 0x34, 0x89, 0x0d, 0x6d, 0xad, 0xbc, 0xde, 0x32, 0x09, 0xf2, 0x9e, 0x22, 0xeb, - 0x48, 0x72, 0x84, 0x85, 0x9d, 0x53, 0x1a, 0x5a, 0x41, 0x24, 0xe2, 0x97, 0x38, 0x6b, 0x6a, 0x66, - 0x5d, 0x50, 0x8e, 0x04, 0x41, 0x1c, 0x2e, 0xb8, 0xac, 0x11, 0xe5, 0x6a, 0x83, 0x2e, 0x2f, 0x7b, - 0xce, 0xef, 0x7c, 0x0e, 0x8b, 0x53, 0xc3, 0x26, 0x3f, 0x81, 0x56, 0xd1, 0x26, 0xe4, 0x50, 0x9a, - 0x66, 0xb3, 0x60, 0x0f, 0x71, 0xe7, 0x0f, 0x1a, 0xe8, 0x97, 0x23, 0xfa, 0x6c, 0x6b, 0xd2, 0x66, - 0x5b, 0xd3, 0x23, 0x68, 0x14, 0x77, 0xb2, 0x34, 0x7b, 0x27, 0x61, 0x30, 0xde, 0xc6, 0x0e, 0x5a, - 0x75, 0xf9, 0x2a, 0xab, 0x46, 0x7b, 0xde, 0x85, 0xfb, 0x41, 0xc4, 0x86, 0x8c, 0xdb, 0x1e, 0xee, - 0x55, 0x18, 0xb9, 0x81, 0x93, 0xd2, 0xa8, 0x30, 0x9e, 0x0a, 0x8e, 0xe7, 0x4e, 0x06, 0xdb, 0x49, - 0xe8, 0xb1, 0x02, 0xe5, 0x7b, 0xf4, 0xbb, 0x32, 0x34, 0xb7, 0x7a, 0x3d, 0x0c, 0x03, 0x5d, 0x3e, - 0x08, 0xc8, 0x67, 0x00, 0x18, 0x3f, 0x70, 0xb0, 0x93, 0x8e, 0x95, 0xe1, 0x0a, 0x8e, 0x55, 0x7f, - 0x95, 0x11, 0x48, 0x17, 0x16, 0x5c, 0x16, 0x27, 0x36, 0x77, 0xa8, 0xe8, 0x3d, 0x62, 0x0e, 0x6e, - 0x58, 0x3b, 0xf3, 0xf3, 0x17, 0xd4, 0x49, 0x82, 0x68, 0x57, 0x41, 0x0e, 0x11, 0xa1, 0xb4, 0xb4, - 0xdd, 0x09, 0x2a, 0xb9, 0x0d, 0xd5, 0x24, 0x08, 0xad, 0x73, 0x5c, 0x81, 0x96, 0x02, 0x89, 0xf3, - 0xf9, 0x39, 0x79, 0x4f, 0x18, 0xb8, 0x97, 0xfa, 0xdc, 0xe2, 0xb6, 0x4f, 0xd1, 0xd9, 0xea, 0x0a, - 0x00, 0x92, 0xd1, 0xb3, 0x7d, 0x4a, 0xde, 0x85, 0xba, 0x82, 0x31, 0x17, 0x33, 0x83, 0xb2, 0x02, - 0xd5, 0x24, 0x19, 0x0f, 0xd0, 0x46, 0x44, 0x07, 0xd6, 0x6b, 0xea, 0x58, 0x83, 0xc7, 0x9b, 0x98, - 0x10, 0x34, 0xcd, 0x7a, 0x44, 0x07, 0x2f, 0xa8, 0xb3, 0xff, 0x78, 0x93, 0xdc, 0x87, 0x9a, 0xb4, - 0x56, 0xe6, 0xe2, 0xe9, 0x9e, 0x69, 0x98, 0x47, 0x6a, 0x57, 0x04, 0xe7, 0xa6, 0x6f, 0x8f, 0xac, - 0x6c, 0xec, 0x78, 0x46, 0x6b, 0x99, 0x57, 0xf9, 0xf6, 0x28, 0x9b, 0x2a, 0xd9, 0x80, 0xf6, 0x19, - 0x8f, 0xdf, 0x58, 0x74, 0x60, 0xc5, 0xd4, 0x8e, 0x9c, 0x33, 0x0c, 0xe6, 0xd9, 0xbc, 0x9a, 0x82, - 0xb7, 0x37, 0xe8, 0x23, 0xe7, 0x59, 0xa5, 0x36, 0xaf, 0xd7, 0x3a, 0xdf, 0x55, 0xa1, 0x3e, 0x3e, - 0x0d, 0xef, 0x43, 0x4d, 0x9e, 0xa7, 0xcc, 0xc5, 0x0d, 0xc9, 0x47, 0x82, 0xd4, 0xae, 0x4b, 0x36, - 0x60, 0x5e, 0x4e, 0x2b, 0x33, 0x2e, 0x3d, 0xf3, 0x78, 0x9c, 0x2b, 0x1f, 0x04, 0x66, 0x06, 0x20, - 0x06, 0x54, 0x5c, 0x1a, 0x3b, 0xb8, 0xb4, 0xb5, 0x6c, 0x69, 0x05, 0x85, 0x7c, 0x08, 0x24, 0x8c, - 0x98, 0x6f, 0x47, 0x17, 0x56, 0xbe, 0x76, 0x31, 0xda, 0x50, 0xd9, 0xd4, 0x15, 0x47, 0x69, 0x74, - 0x63, 0xf2, 0x15, 0xe8, 0x9c, 0x8e, 0x12, 0x2b, 0xa2, 0xb6, 0x6b, 0x51, 0x3e, 0x64, 0x9c, 0xe2, - 0x42, 0xb7, 0xb3, 0xce, 0xf7, 0x90, 0x56, 0xb0, 0x95, 0xb6, 0xc0, 0x9b, 0xd4, 0x76, 0x25, 0x87, - 0x7c, 0x08, 0x73, 0x91, 0xb0, 0xe8, 0x2c, 0xb6, 0x29, 0xdf, 0x7d, 0x4e, 0x2f, 0x4c, 0x41, 0x56, - 0x52, 0x0a, 0x43, 0xbe, 0x80, 0xdb, 0xd9, 0xe8, 0xc2, 0x88, 0x0e, 0xd8, 0xa8, 0x38, 0xc8, 0x79, - 0x1c, 0xe4, 0x8a, 0x02, 0x1c, 0x23, 0x7f, 0x3c, 0xd4, 0xc9, 0x28, 0x52, 0xbb, 0x1c, 0x45, 0xd6, - 0xa0, 0xc9, 0x62, 0x6b, 0x20, 0x4e, 0x4e, 0x4c, 0x58, 0xea, 0x08, 0x00, 0x16, 0xef, 0xdb, 0x71, - 0x82, 0x1b, 0x70, 0x08, 0x77, 0xc3, 0x34, 0x3e, 0xa3, 0xae, 0xe5, 0x06, 0x6f, 0xb8, 0x35, 0x60, - 0x5e, 0x42, 0xf1, 0x40, 0x73, 0x31, 0xfe, 0xc7, 0x06, 0x4c, 0x9d, 0x0e, 0xab, 0x52, 0x60, 0x37, - 0x78, 0xc3, 0xf7, 0x11, 0xbe, 0x93, 0xa3, 0xc9, 0x0e, 0x2c, 0x45, 0x29, 0x4f, 0x98, 0x4f, 0x33, - 0x55, 0x1e, 0x8b, 0x13, 0xa3, 0x81, 0x4a, 0x96, 0xa4, 0x12, 0x53, 0x02, 0xa4, 0xac, 0xb9, 0x18, - 0x15, 0x9b, 0x07, 0x2c, 0x4e, 0xc8, 0x47, 0xa0, 0x0b, 0xeb, 0x7b, 0x63, 0xb3, 0xc4, 0x42, 0x55, - 0x7e, 0x8c, 0x09, 0x5e, 0x55, 0xad, 0x5b, 0xcb, 0xb7, 0x47, 0xdf, 0xd8, 0x2c, 0x39, 0x61, 0x3e, - 0x3d, 0x8c, 0xc9, 0xc7, 0x50, 0xb7, 0x39, 0x57, 0xa9, 0x81, 0x4c, 0xe7, 0x2e, 0x79, 0x35, 0x9a, - 0x49, 0xcd, 0xe6, 0x1c, 0x5b, 0x9d, 0xbf, 0xae, 0x00, 0x99, 0xce, 0xd6, 0xfe, 0x7f, 0xda, 0xe2, - 0xb5, 0xb6, 0x51, 0xbd, 0xd6, 0x36, 0x7e, 0x02, 0xe3, 0x73, 0x1c, 0xe1, 0x73, 0x08, 0x6f, 0xe6, - 0x44, 0x01, 0xba, 0x6c, 0x21, 0xf3, 0x3f, 0xde, 0x42, 0x6a, 0xff, 0x17, 0x16, 0x52, 0xff, 0x5f, - 0x5b, 0x08, 0xbc, 0xa5, 0x85, 0x34, 0xde, 0xc2, 0x42, 0xfe, 0xbb, 0x0a, 0x15, 0x71, 0x63, 0x21, - 0x9f, 0x40, 0x5d, 0xdc, 0x59, 0x8a, 0x27, 0x46, 0x7b, 0x7c, 0xa1, 0x29, 0x44, 0x80, 0xda, 0x4b, - 0xd5, 0x26, 0xbf, 0x82, 0x36, 0x8a, 0x88, 0x0b, 0x8d, 0x94, 0x2b, 0x15, 0x4f, 0x1a, 0x21, 0x77, - 0xe9, 0xe2, 0xd9, 0x7c, 0x59, 0xa0, 0xfd, 0x98, 0x93, 0x5f, 0x9c, 0x05, 0x8c, 0x73, 0x1a, 0x61, - 0x96, 0x5a, 0x29, 0x9e, 0x05, 0x48, 0x16, 0xa9, 0xea, 0x23, 0x68, 0x7b, 0x74, 0x90, 0x58, 0x38, - 0x26, 0xcc, 0xf7, 0xaa, 0x53, 0xfb, 0xd5, 0x14, 0x08, 0x31, 0x30, 0x4c, 0xf7, 0x36, 0x61, 0x21, - 0x62, 0xc3, 0xb3, 0xa2, 0xc8, 0xdc, 0x74, 0x8a, 0x88, 0x90, 0x5c, 0xe6, 0x11, 0x34, 0xc2, 0x28, - 0x38, 0xa5, 0x2a, 0x0f, 0x98, 0xbf, 0x22, 0x0f, 0x40, 0x8c, 0xcc, 0x03, 0x1e, 0x41, 0xe3, 0x34, - 0x65, 0x79, 0xe6, 0x50, 0xbb, 0x42, 0x02, 0x31, 0x52, 0xe2, 0x31, 0x2c, 0xe0, 0x4c, 0x0a, 0xa6, - 0x57, 0x9f, 0x1a, 0x17, 0x4e, 0xb6, 0x60, 0x6e, 0x3f, 0x03, 0x5d, 0x4e, 0xe6, 0xda, 0x90, 0x26, - 0x27, 0x3c, 0x29, 0x16, 0x24, 0x67, 0x93, 0x76, 0xde, 0x98, 0x16, 0x43, 0x4c, 0x41, 0xec, 0x29, - 0xdc, 0x91, 0x62, 0xf4, 0x55, 0x41, 0xd2, 0x1a, 0x44, 0x81, 0x6f, 0x31, 0x6e, 0x34, 0xa7, 0x34, - 0xdc, 0x42, 0xf8, 0xde, 0xab, 0xb1, 0x8e, 0xfd, 0x28, 0xf0, 0xbb, 0x9c, 0x3c, 0x81, 0x5b, 0x2c, - 0xb6, 0x78, 0xea, 0x79, 0x96, 0xfd, 0xc6, 0x8e, 0xc4, 0x45, 0xd7, 0x67, 0xb8, 0x23, 0x18, 0xe2, - 0x6a, 0xe6, 0x12, 0x8b, 0x7b, 0xa9, 0xe7, 0x6d, 0x09, 0x66, 0x9f, 0xfa, 0x0c, 0xcd, 0xf5, 0x0a, - 0xe7, 0x6a, 0xff, 0x18, 0xe7, 0xea, 0xfc, 0x57, 0x09, 0x5a, 0x13, 0x20, 0xb2, 0x0c, 0x25, 0x15, - 0x13, 0x33, 0x07, 0x2b, 0x31, 0x97, 0x3c, 0x01, 0x3d, 0x0e, 0xd2, 0xc8, 0xa1, 0x16, 0x1d, 0x85, - 0xaa, 0xa7, 0xd2, 0xf4, 0x86, 0x48, 0x8c, 0xf8, 0x8f, 0xae, 0xfb, 0x04, 0xf4, 0xc4, 0x8e, 0x86, - 0x34, 0x29, 0x48, 0x4d, 0xdf, 0x40, 0xda, 0x12, 0x93, 0x4b, 0x6d, 0x02, 0xc9, 0xfb, 0x1a, 0x97, - 0x0e, 0x8a, 0x29, 0x92, 0x9e, 0xf5, 0x93, 0x97, 0x11, 0x36, 0x81, 0xe4, 0x3d, 0x8d, 0x65, 0xaa, - 0x45, 0x99, 0xac, 0x97, 0x5c, 0xe6, 0x53, 0x98, 0x8f, 0x06, 0xd2, 0x6b, 0xe7, 0xd0, 0x6b, 0x6f, - 0xcd, 0x58, 0xb4, 0x82, 0xeb, 0xce, 0x45, 0x03, 0x74, 0x5a, 0x29, 0xe7, 0x07, 0x2e, 0x55, 0x17, - 0x93, 0x59, 0x72, 0x85, 0xab, 0xc9, 0x5c, 0x34, 0x10, 0xad, 0xce, 0xbf, 0x69, 0x50, 0xcf, 0xcb, - 0x45, 0x3f, 0x7c, 0x02, 0x15, 0x13, 0xb7, 0xd2, 0xac, 0xc4, 0xad, 0x70, 0x44, 0x95, 0xdf, 0xf6, - 0x88, 0xaa, 0x4c, 0x1d, 0x51, 0x2b, 0x30, 0x97, 0x72, 0xf6, 0x2a, 0x95, 0x69, 0x4f, 0xcd, 0x54, - 0xad, 0x2b, 0x8e, 0xae, 0xb9, 0xd9, 0x47, 0x57, 0xe7, 0x77, 0x1a, 0xd4, 0xf3, 0xea, 0x16, 0xd9, - 0x00, 0x28, 0xf8, 0x92, 0x36, 0xb5, 0xe3, 0x05, 0x2e, 0x79, 0x02, 0xed, 0x28, 0xe4, 0x45, 0xdf, - 0x93, 0x76, 0xa5, 0x4a, 0x04, 0x66, 0xc8, 0x55, 0x0c, 0x0a, 0x79, 0xc1, 0xf9, 0xf2, 0x6b, 0x6a, - 0xf9, 0x9a, 0x6b, 0x6a, 0xe7, 0x3b, 0xad, 0x58, 0xfe, 0x21, 0x6b, 0x50, 0x15, 0x76, 0x38, 0x6b, - 0x44, 0x92, 0x41, 0x36, 0xa0, 0x2e, 0x06, 0x23, 0x51, 0x33, 0xc7, 0x51, 0x8b, 0xe4, 0x9f, 0xb7, - 0x1d, 0xc2, 0xbf, 0x94, 0xa0, 0x51, 0xa8, 0xe2, 0x91, 0xf7, 0xa0, 0x36, 0x8c, 0x82, 0x34, 0xb4, - 0x4e, 0x2f, 0x66, 0x0c, 0x63, 0x1e, 0x79, 0xdb, 0x17, 0x02, 0x66, 0x0f, 0x87, 0xd6, 0x20, 0xe5, - 0xce, 0x0c, 0x3f, 0x9b, 0xb7, 0x87, 0xc3, 0xfd, 0x94, 0x3b, 0x64, 0x0d, 0x6a, 0xf2, 0xbe, 0x4a, - 0xdd, 0x89, 0xec, 0x23, 0xa7, 0x92, 0x8f, 0xa1, 0x29, 0x66, 0x94, 0xf7, 0x59, 0x99, 0x35, 0x29, - 0x88, 0x42, 0xfe, 0xb5, 0xea, 0x59, 0x09, 0xe4, 0xbd, 0x57, 0xaf, 0x12, 0xd8, 0x52, 0x63, 0xc8, - 0xd7, 0x61, 0xee, 0xba, 0x8a, 0xc1, 0x17, 0xd0, 0x0c, 0x23, 0x8a, 0x6a, 0xa7, 0x3d, 0xe7, 0x84, - 0xed, 0x7b, 0x76, 0x7c, 0x76, 0x1c, 0xd1, 0xad, 0xe1, 0x50, 0xf8, 0x8a, 0x38, 0x3d, 0xb2, 0xff, - 0x9d, 0xbf, 0xd1, 0xa0, 0x72, 0x12, 0x84, 0x3d, 0xf2, 0x01, 0xd4, 0x30, 0xf7, 0x1d, 0xaf, 0x9d, - 0x2a, 0x37, 0x6d, 0x5f, 0x74, 0x13, 0xea, 0x9b, 0xf3, 0xc8, 0xdd, 0xbe, 0x20, 0xab, 0x59, 0xf5, - 0xb3, 0x54, 0xa8, 0x63, 0xa9, 0xb2, 0xe7, 0x5b, 0x6d, 0x9b, 0x58, 0x85, 0x71, 0x3e, 0x95, 0x2f, - 0xdb, 0x64, 0x77, 0x8d, 0x1c, 0xb1, 0x7d, 0xd1, 0xf9, 0x27, 0x0d, 0xaa, 0x58, 0x5e, 0x1d, 0x77, - 0xae, 0x5d, 0xd3, 0x79, 0xe9, 0xc7, 0x74, 0x5e, 0xfe, 0x81, 0xce, 0xc9, 0xa7, 0xb0, 0x98, 0x44, - 0x29, 0x77, 0xec, 0x84, 0x8a, 0x33, 0x1c, 0xed, 0x57, 0x0d, 0x79, 0xe2, 0x08, 0xcb, 0x40, 0xcf, - 0xe9, 0x85, 0x20, 0x74, 0xbe, 0x82, 0xca, 0x73, 0xe6, 0x79, 0xe4, 0x1d, 0x98, 0x73, 0x02, 0xce, - 0xbb, 0xbb, 0x13, 0x63, 0x56, 0x34, 0x31, 0x21, 0x99, 0x4d, 0x95, 0x0a, 0x16, 0x26, 0x49, 0x9d, - 0x2d, 0x58, 0x9e, 0x55, 0xf8, 0x22, 0x3f, 0x85, 0xd6, 0xb8, 0x50, 0x96, 0x85, 0xb8, 0x4c, 0x71, - 0x73, 0xcc, 0xea, 0xba, 0x9d, 0xbf, 0x2f, 0x83, 0x91, 0xad, 0x80, 0xfc, 0x65, 0x01, 0xef, 0xa7, - 0xbe, 0x08, 0x30, 0x64, 0x03, 0x16, 0xf1, 0x84, 0x0b, 0xa3, 0xc0, 0xa1, 0x71, 0x4c, 0x5d, 0x0b, - 0x03, 0x8a, 0xb6, 0x5e, 0x31, 0x17, 0x04, 0xe3, 0x38, 0xa3, 0xf7, 0x84, 0xf3, 0x2e, 0xf2, 0xd4, - 0x17, 0x50, 0x37, 0x75, 0xa8, 0x6b, 0x45, 0xc1, 0x9b, 0x58, 0x5a, 0x80, 0xb9, 0xc0, 0x53, 0xff, - 0x58, 0xd1, 0xcd, 0xe0, 0x4d, 0x4c, 0xde, 0x83, 0xb6, 0xc0, 0xb2, 0x84, 0x46, 0xb6, 0x8c, 0x3a, - 0x65, 0x04, 0xb6, 0x78, 0xea, 0x77, 0x73, 0xe2, 0xe5, 0xf2, 0x75, 0x65, 0xaa, 0x7c, 0xbd, 0x26, - 0xee, 0xf1, 0xdc, 0x49, 0xa3, 0x88, 0x72, 0xe7, 0x02, 0x43, 0x68, 0xc5, 0x2c, 0x92, 0xc8, 0x01, - 0x2c, 0x27, 0x6c, 0x20, 0xcc, 0x1b, 0x93, 0x6e, 0x11, 0xe8, 0x12, 0x3a, 0x4a, 0x94, 0xb7, 0x18, - 0x13, 0x0e, 0x20, 0x0e, 0x86, 0x1d, 0xc9, 0x7f, 0x7a, 0xc3, 0x24, 0x4a, 0xae, 0x40, 0x15, 0xe3, - 0x8e, 0x52, 0xa1, 0x23, 0x4e, 0xfd, 0x30, 0xc9, 0x6a, 0x63, 0x4d, 0xb3, 0x15, 0xa5, 0x3b, 0x63, - 0x22, 0x79, 0x36, 0xee, 0x14, 0xf3, 0xe6, 0x58, 0x2e, 0xa7, 0x2a, 0xef, 0x4f, 0x76, 0x2a, 0x72, - 0x67, 0xb5, 0xdc, 0x79, 0x97, 0x05, 0xda, 0x76, 0x13, 0x60, 0x97, 0x26, 0x36, 0xf3, 0xc4, 0x89, - 0xd2, 0x19, 0xc2, 0xb2, 0x92, 0xcb, 0xf7, 0x0a, 0xeb, 0x2d, 0x47, 0xb0, 0x44, 0x33, 0x82, 0xea, - 0x8e, 0xd1, 0x2c, 0xd2, 0xde, 0x9b, 0xb4, 0xf3, 0xcb, 0xbb, 0x6c, 0x12, 0x3a, 0x49, 0x61, 0x34, - 0xee, 0xfc, 0x09, 0xac, 0xaa, 0x8e, 0x4c, 0x3a, 0x64, 0x01, 0xef, 0xa5, 0xfe, 0xd1, 0xa0, 0xcb, - 0x55, 0x2d, 0xe2, 0x3e, 0x34, 0x98, 0xfa, 0x9f, 0x59, 0x57, 0xdd, 0x84, 0x8c, 0xd4, 0x75, 0xc5, - 0x65, 0x39, 0x42, 0x39, 0x8b, 0xa7, 0xbe, 0xb2, 0x82, 0x7a, 0x94, 0x69, 0xea, 0xfc, 0x33, 0x01, - 0x32, 0xbd, 0xe8, 0xe4, 0x09, 0x2c, 0xbb, 0xfe, 0x80, 0xa9, 0x9a, 0x3f, 0xa7, 0xae, 0x15, 0xda, - 0xce, 0xb9, 0xb2, 0xb8, 0xed, 0x92, 0xa1, 0x99, 0x44, 0xf2, 0xfb, 0x92, 0x7d, 0x2c, 0xb8, 0x45, - 0xa9, 0x73, 0x16, 0x86, 0xb9, 0x54, 0x69, 0x4a, 0x4a, 0xb2, 0xa5, 0xd4, 0x67, 0x60, 0x28, 0x29, - 0xd7, 0x4e, 0xec, 0xbc, 0x43, 0xb4, 0x5a, 0x69, 0x8c, 0x37, 0x25, 0x7f, 0xd7, 0x4e, 0x6c, 0xd5, - 0x1f, 0xda, 0xee, 0x65, 0x41, 0xd5, 0x27, 0x0a, 0x56, 0xa6, 0x04, 0x25, 0x17, 0x05, 0x3f, 0x87, - 0x5b, 0x49, 0x90, 0xd8, 0x9e, 0xa5, 0xc4, 0xa3, 0xd8, 0xf2, 0x02, 0xdb, 0x15, 0x17, 0xaa, 0x6a, - 0x3e, 0xd4, 0x25, 0x84, 0xec, 0x22, 0xc2, 0x8c, 0x0f, 0x02, 0xdb, 0xc5, 0x4b, 0xd5, 0xf2, 0xa4, - 0x24, 0x95, 0x62, 0x73, 0xd8, 0xdd, 0x62, 0x51, 0x84, 0xa2, 0xc0, 0xcf, 0xb2, 0xae, 0x64, 0xde, - 0x1f, 0x73, 0x3b, 0x8c, 0xcf, 0x82, 0x44, 0xc8, 0xcc, 0xa3, 0x8c, 0xd4, 0xb7, 0x2d, 0xb8, 0x7d, - 0xc5, 0x3c, 0xc4, 0x6b, 0xac, 0x17, 0x38, 0xb6, 0x67, 0xc9, 0x9d, 0x8a, 0xd1, 0x60, 0x2b, 0x66, - 0x13, 0x89, 0xd2, 0x0e, 0xd0, 0x77, 0x23, 0xea, 0x07, 0x09, 0xcd, 0x51, 0x75, 0xe9, 0xbb, 0x92, - 0x9a, 0xc1, 0xde, 0x87, 0x85, 0x34, 0xa6, 0x91, 0x1c, 0xeb, 0xe9, 0x45, 0x42, 0xe5, 0xb5, 0xb1, - 0x62, 0xb6, 0x04, 0x59, 0x8c, 0x13, 0x2b, 0xa8, 0xe4, 0x13, 0xb8, 0x29, 0x87, 0xea, 0x51, 0x3b, - 0xe2, 0x99, 0x80, 0x1f, 0xe3, 0xe5, 0xb1, 0x62, 0x12, 0x64, 0x1e, 0x48, 0x9e, 0x9a, 0xdd, 0x1f, - 0xc3, 0x1d, 0x97, 0xc5, 0xe2, 0x2c, 0x43, 0xac, 0x63, 0x3b, 0x67, 0xd4, 0x3a, 0x63, 0x89, 0xea, - 0xa6, 0x89, 0x82, 0xb7, 0x24, 0x44, 0x88, 0xec, 0x08, 0xc0, 0x53, 0x96, 0xc8, 0x0e, 0x7f, 0x05, - 0xef, 0x4c, 0x4b, 0xfb, 0x2c, 0x8e, 0x95, 0x78, 0x0b, 0xc5, 0x8d, 0x4b, 0xe2, 0x87, 0x2c, 0x8e, - 0xa5, 0xfc, 0xa7, 0x60, 0x5c, 0xde, 0x46, 0xe7, 0x8c, 0x3a, 0xe7, 0x62, 0xcc, 0xed, 0xc2, 0xe2, - 0x66, 0x7b, 0xb8, 0x23, 0x98, 0x87, 0xb1, 0xc8, 0xe8, 0xe2, 0xc4, 0xce, 0x76, 0x2f, 0x5b, 0xbb, - 0x05, 0x94, 0xd0, 0x91, 0x23, 0x3a, 0xcb, 0x96, 0x6f, 0x15, 0x6a, 0x31, 0x1d, 0xfa, 0x94, 0x27, - 0x31, 0x7e, 0x9d, 0xaa, 0x98, 0x79, 0x5b, 0x3a, 0x97, 0x9d, 0x15, 0x9b, 0x17, 0x33, 0xe7, 0xb2, - 0x65, 0xa5, 0x59, 0xb0, 0x5d, 0xea, 0x25, 0xb6, 0x34, 0x49, 0x22, 0xd9, 0x48, 0x41, 0x33, 0xbc, - 0x0f, 0x0d, 0xc9, 0x96, 0xd3, 0x5d, 0x42, 0xbe, 0x94, 0x90, 0x13, 0x7c, 0x1f, 0x16, 0xfc, 0xd7, - 0x8e, 0x63, 0x31, 0x1e, 0xa6, 0x89, 0x54, 0xb2, 0x2c, 0x77, 0x4e, 0x90, 0xbb, 0x82, 0x8a, 0x8a, - 0xd6, 0x41, 0x2f, 0xe0, 0xa4, 0xb6, 0x9b, 0x08, 0x6c, 0xe7, 0x40, 0xa9, 0x31, 0x43, 0x06, 0x69, - 0x92, 0xab, 0x5c, 0x19, 0x23, 0x8f, 0x90, 0x8c, 0x3a, 0xd7, 0xa0, 0xe9, 0xf9, 0xe8, 0x53, 0x12, - 0x75, 0x4b, 0x8e, 0xce, 0xf3, 0x85, 0x23, 0x21, 0xe2, 0x17, 0xb0, 0x5a, 0x34, 0x6d, 0xec, 0x5c, - 0x7d, 0x6b, 0xf0, 0x63, 0xfc, 0xe4, 0x54, 0x31, 0x6f, 0x8d, 0xad, 0xbb, 0x3b, 0xe6, 0x1f, 0x16, - 0x8c, 0x4d, 0x0a, 0x9f, 0xb2, 0xc4, 0xb7, 0x43, 0x21, 0x77, 0xbb, 0x60, 0x6c, 0x28, 0xb7, 0x8d, - 0xac, 0xc3, 0x98, 0x7c, 0x04, 0x4b, 0x3e, 0xe3, 0x96, 0xf4, 0x8b, 0x71, 0x47, 0xab, 0x72, 0xdf, - 0x7c, 0xc6, 0x0f, 0x04, 0xa7, 0x9f, 0xf5, 0x20, 0xe0, 0xf6, 0x68, 0x0a, 0x7e, 0x47, 0xc1, 0xed, - 0xd1, 0x24, 0xfc, 0x63, 0x58, 0x16, 0xda, 0x95, 0x43, 0x8d, 0xf1, 0xef, 0x48, 0xcf, 0xf6, 0x19, - 0x37, 0x91, 0x35, 0x21, 0x60, 0x8f, 0xa6, 0x05, 0xee, 0x2a, 0x01, 0x7b, 0x74, 0x49, 0xe0, 0x18, - 0x96, 0x94, 0xad, 0x59, 0xc1, 0xc0, 0xca, 0x42, 0xb4, 0x71, 0x0f, 0x4f, 0x86, 0xb5, 0x89, 0xa3, - 0x68, 0x46, 0xa4, 0x37, 0x17, 0x95, 0x70, 0x21, 0xf8, 0x8f, 0x03, 0x20, 0x6e, 0xea, 0x44, 0xe4, - 0xbc, 0x5f, 0x0c, 0x80, 0x87, 0xaf, 0x1d, 0x67, 0x76, 0xe4, 0x94, 0x82, 0xc5, 0xc8, 0xb9, 0x36, - 0x25, 0x58, 0x88, 0x9c, 0x5f, 0xc1, 0x5d, 0x25, 0xe8, 0xf9, 0xd9, 0x6d, 0x7b, 0xa2, 0xdb, 0x77, - 0x51, 0xfa, 0xb6, 0x04, 0x1d, 0xf8, 0xf2, 0x0e, 0x58, 0xec, 0x7a, 0xa6, 0x86, 0x62, 0xff, 0x9d, - 0x99, 0x1a, 0x0a, 0x63, 0xf8, 0x12, 0xee, 0x4a, 0xd3, 0x79, 0x8d, 0x5f, 0x20, 0x2c, 0xe6, 0x8e, - 0x64, 0xf8, 0xc6, 0x8a, 0x43, 0xfc, 0xd8, 0x70, 0x65, 0xdc, 0x40, 0x90, 0xfc, 0x4a, 0xd1, 0x75, - 0x47, 0x22, 0x80, 0xef, 0x47, 0x81, 0xdf, 0x7f, 0x4c, 0x76, 0xe0, 0xfe, 0x35, 0x0a, 0x5c, 0x16, - 0x9f, 0x1b, 0x14, 0x55, 0xac, 0xce, 0x56, 0xb1, 0xcb, 0xe2, 0x73, 0xb2, 0x07, 0x6b, 0xd7, 0x28, - 0xc1, 0x58, 0x66, 0x0c, 0x50, 0xcb, 0x9d, 0xd9, 0x5a, 0x30, 0x98, 0x5d, 0x3d, 0x99, 0xac, 0xc2, - 0x37, 0xbc, 0x6a, 0x32, 0xaa, 0xcc, 0x37, 0x6b, 0x32, 0xf2, 0xab, 0x44, 0xae, 0xe2, 0x6c, 0xd6, - 0x64, 0xe4, 0xf7, 0x09, 0xa5, 0xe4, 0x08, 0xde, 0xbb, 0x4a, 0xc9, 0x6b, 0x16, 0xb3, 0x44, 0xa4, - 0x9b, 0x81, 0x4b, 0x63, 0x83, 0xa1, 0xaa, 0xb5, 0x59, 0xaa, 0x5e, 0x48, 0x60, 0x4f, 0xe0, 0x48, - 0x1f, 0x3e, 0xb8, 0x4a, 0xa1, 0xcb, 0x62, 0xc7, 0x8e, 0xdc, 0x5c, 0xe5, 0x4b, 0x54, 0xd9, 0x99, - 0xa5, 0x72, 0x37, 0x83, 0x4a, 0xa5, 0xfb, 0xf0, 0xee, 0x94, 0x52, 0x0c, 0xbf, 0xaf, 0xa9, 0x93, - 0x4f, 0xf6, 0x7c, 0xd6, 0x9a, 0x8b, 0x78, 0xfe, 0x82, 0x3a, 0x6a, 0xb6, 0x07, 0xf0, 0x60, 0xb6, - 0x1e, 0xac, 0x4b, 0xc5, 0xb9, 0x2a, 0x0f, 0x55, 0xdd, 0x9b, 0x56, 0x75, 0x84, 0x38, 0xa9, 0xad, - 0xf3, 0xb7, 0x5a, 0x9e, 0x41, 0x15, 0xb2, 0x45, 0xf2, 0x00, 0xda, 0x3e, 0xe3, 0x27, 0xfd, 0x23, - 0x99, 0x78, 0xe6, 0xd9, 0x7a, 0x53, 0x52, 0x05, 0xb4, 0x17, 0x93, 0xc7, 0xb0, 0x12, 0xb2, 0x90, - 0x7a, 0x8c, 0x53, 0xeb, 0x55, 0x4a, 0x53, 0x9a, 0xa3, 0x65, 0xa6, 0xb6, 0x94, 0x71, 0x7f, 0x2d, - 0x98, 0x4a, 0xe8, 0x33, 0x30, 0x72, 0xa1, 0xd3, 0x88, 0xda, 0xe7, 0x34, 0xca, 0xc5, 0x54, 0xc2, - 0x94, 0xf1, 0xb7, 0x25, 0x5b, 0x0a, 0x76, 0xbe, 0x85, 0x4a, 0x3f, 0x88, 0x12, 0xf2, 0x3e, 0xcc, - 0x9f, 0xe2, 0xed, 0x29, 0x9e, 0x7d, 0x7d, 0x54, 0x4c, 0xf2, 0x00, 0x5a, 0x2c, 0xc6, 0x8f, 0x06, - 0xb6, 0x27, 0x04, 0xd5, 0x17, 0xdb, 0x49, 0xe2, 0x5b, 0xde, 0xff, 0xff, 0xbc, 0x04, 0xba, 0x7c, - 0xcf, 0xb1, 0x1f, 0xd9, 0x3e, 0xdd, 0x0e, 0x52, 0x2e, 0x2e, 0x78, 0x95, 0x42, 0x91, 0xf9, 0x66, - 0xf1, 0xd5, 0x07, 0x02, 0x0a, 0x45, 0x27, 0x04, 0x92, 0x0e, 0xd4, 0x53, 0x7e, 0x2a, 0x58, 0xd4, - 0x9d, 0xb8, 0x86, 0x8d, 0xc9, 0x64, 0x05, 0xe6, 0xe4, 0x97, 0x68, 0xb5, 0x18, 0xaa, 0x45, 0xd6, - 0xa1, 0xee, 0xd8, 0x9e, 0x23, 0xee, 0xea, 0xf1, 0x8c, 0x4b, 0xe1, 0x98, 0x49, 0xfe, 0x08, 0x1a, - 0x03, 0x31, 0x48, 0x0b, 0xbf, 0x55, 0xa9, 0x97, 0x48, 0x13, 0x75, 0x1b, 0x64, 0xe3, 0x67, 0x2d, - 0xf2, 0x73, 0x68, 0x39, 0x7e, 0x28, 0x53, 0xd0, 0x42, 0x0d, 0x4d, 0x3d, 0x1d, 0x42, 0xcc, 0x8e, - 0x1f, 0x8a, 0x14, 0x14, 0x8b, 0xbb, 0x0d, 0x67, 0xdc, 0xe8, 0xfc, 0xa5, 0x06, 0x8d, 0xc2, 0xa2, - 0x5c, 0xb7, 0x1e, 0x08, 0x98, 0x5a, 0x8f, 0x0f, 0xa1, 0x1a, 0x27, 0xb6, 0xda, 0x99, 0xfc, 0xbd, - 0xd2, 0xe5, 0x75, 0x36, 0x25, 0x88, 0xac, 0x43, 0x99, 0xf2, 0x6c, 0x9f, 0xae, 0xc2, 0x0a, 0x48, - 0xe7, 0x0f, 0x1a, 0xcc, 0x49, 0x0e, 0xf9, 0x00, 0xea, 0x83, 0x94, 0x3b, 0x16, 0x96, 0xcd, 0xa6, - 0x2b, 0x35, 0x35, 0xc1, 0xdc, 0xa5, 0xb1, 0x33, 0x75, 0x5b, 0x2f, 0xfd, 0xd0, 0x6d, 0xbd, 0x58, - 0xc6, 0x28, 0x5f, 0x57, 0xc6, 0xf8, 0x00, 0xaa, 0xb8, 0xe0, 0xea, 0x2d, 0xc6, 0xe2, 0xd4, 0xc8, - 0x4d, 0xc9, 0x1f, 0x9b, 0x62, 0xf5, 0x3a, 0x53, 0xfc, 0x12, 0x9a, 0x58, 0xe4, 0x61, 0x7c, 0x28, - 0xa6, 0x40, 0x3e, 0x86, 0xd6, 0x50, 0xb5, 0x65, 0xc5, 0x60, 0x7a, 0x96, 0xcd, 0x61, 0x41, 0xa0, - 0xf3, 0x14, 0x1a, 0x99, 0x82, 0x3e, 0x4d, 0xc8, 0x17, 0xd0, 0x9e, 0x90, 0xcf, 0xbc, 0x4a, 0x7d, - 0xfc, 0x28, 0xf6, 0x65, 0xb6, 0x8a, 0x8a, 0xe2, 0xce, 0x77, 0x1a, 0xcc, 0xc9, 0xc7, 0x3f, 0xe4, - 0xd3, 0xc2, 0x28, 0xf2, 0x67, 0x14, 0xf9, 0x64, 0x0b, 0xfd, 0x8d, 0x07, 0xd3, 0xa7, 0x49, 0xfc, - 0x96, 0xa5, 0x14, 0x03, 0xe6, 0x5f, 0xd3, 0x08, 0x1f, 0x91, 0x48, 0xaf, 0xc8, 0x9a, 0x9d, 0x8f, - 0xa0, 0x2e, 0xc6, 0x22, 0x1f, 0x50, 0xfc, 0x60, 0x65, 0xb0, 0xf3, 0x17, 0x1a, 0xcc, 0xab, 0xe7, - 0x4a, 0xe4, 0x21, 0x40, 0x18, 0x05, 0x2f, 0x27, 0x26, 0xbd, 0x30, 0x16, 0x91, 0x4f, 0x49, 0xea, - 0x02, 0x22, 0x2b, 0x85, 0x4f, 0x60, 0x65, 0x48, 0x39, 0x8d, 0x6c, 0x71, 0xa0, 0xa8, 0x14, 0x94, - 0xdb, 0xbe, 0x7a, 0x43, 0x51, 0x37, 0x97, 0x73, 0xae, 0x4c, 0x44, 0x7b, 0x82, 0xf7, 0x96, 0xf1, - 0xe5, 0x7d, 0x68, 0x4f, 0x3e, 0x8a, 0x22, 0xcb, 0x59, 0xb9, 0x46, 0x5e, 0x8a, 0x65, 0x63, 0xe3, - 0xcf, 0xca, 0xf2, 0x7d, 0x24, 0x56, 0xb0, 0x17, 0xa1, 0x25, 0x7e, 0xf3, 0xcf, 0xa1, 0xfa, 0x8d, - 0x8c, 0x94, 0xd7, 0xa7, 0x75, 0x2d, 0x23, 0xe5, 0x65, 0x5d, 0xbd, 0x44, 0x96, 0x60, 0x41, 0x90, - 0x0a, 0x05, 0x4d, 0xbd, 0x4c, 0x9a, 0x50, 0x43, 0x6d, 0x41, 0xd8, 0xd3, 0x2b, 0xa4, 0x05, 0x75, - 0xd1, 0xc2, 0x5a, 0x98, 0x5e, 0xcd, 0x95, 0x60, 0x36, 0xb8, 0x35, 0x1c, 0xea, 0x73, 0x19, 0xfe, - 0x59, 0xc0, 0xb8, 0x3e, 0x9f, 0xb5, 0x9e, 0x33, 0xcf, 0xd3, 0x6b, 0x64, 0x05, 0x88, 0x68, 0x4d, - 0xbe, 0x8e, 0xd2, 0xeb, 0xc4, 0x80, 0xe5, 0x22, 0x3d, 0x7b, 0xbf, 0xa2, 0x03, 0x21, 0xd0, 0x16, - 0x9c, 0x71, 0x99, 0x57, 0x6f, 0x90, 0x55, 0x58, 0x41, 0xda, 0xd4, 0x77, 0x5f, 0xbd, 0x99, 0xf5, - 0x27, 0x42, 0xb8, 0xde, 0x22, 0x6d, 0x00, 0xd1, 0x92, 0x3e, 0xa5, 0xb7, 0xb3, 0xb6, 0xdc, 0x69, - 0x7d, 0x81, 0x2c, 0x40, 0x63, 0xdc, 0xde, 0xd4, 0xf5, 0x6c, 0x80, 0x93, 0x6b, 0xae, 0x2f, 0x66, - 0x2b, 0x53, 0x78, 0x27, 0xa4, 0x2f, 0x93, 0x77, 0xc0, 0x50, 0xd2, 0x53, 0x15, 0x32, 0xfd, 0xe6, - 0xc6, 0xe7, 0xd0, 0x2c, 0xbe, 0x86, 0x11, 0x7d, 0x1d, 0xdb, 0x71, 0x7c, 0x72, 0x16, 0x05, 0xe9, - 0xf0, 0x4c, 0xbf, 0x21, 0x96, 0x32, 0xef, 0x47, 0xd7, 0x48, 0x0d, 0x2a, 0x4f, 0xed, 0xf8, 0x4c, - 0x2f, 0x6d, 0xfc, 0x02, 0x16, 0x2e, 0xbd, 0x82, 0x12, 0xcc, 0xde, 0x51, 0x6f, 0x4f, 0xbf, 0x21, - 0xfe, 0xed, 0x6f, 0xf5, 0x4f, 0x74, 0x8d, 0x2c, 0x83, 0xfe, 0xb4, 0xfb, 0xf5, 0x53, 0x6b, 0xe7, - 0xe8, 0xf0, 0xd8, 0xdc, 0xeb, 0xf7, 0xbb, 0x47, 0x3d, 0xbd, 0xb4, 0xf1, 0x10, 0x60, 0xfc, 0xa6, - 0x81, 0xd4, 0xa1, 0x8a, 0x17, 0x02, 0x29, 0x78, 0xc2, 0x9e, 0xbf, 0xd0, 0x35, 0xd2, 0x80, 0x79, - 0x75, 0xb4, 0xeb, 0xa5, 0x8d, 0xc7, 0xb0, 0xa0, 0xb2, 0x00, 0x31, 0xb7, 0xe7, 0x8c, 0x8b, 0xa3, - 0x86, 0x74, 0x7b, 0x2f, 0xb6, 0x0e, 0xba, 0xbb, 0x56, 0xb7, 0xb7, 0xbb, 0xf7, 0x5b, 0xeb, 0x79, - 0xb7, 0xb7, 0x2b, 0x35, 0x3c, 0xed, 0xf5, 0xbf, 0xd1, 0xb5, 0x8d, 0x53, 0x58, 0x9e, 0xf5, 0x50, - 0x86, 0xdc, 0x81, 0x5b, 0x99, 0xe4, 0x6e, 0xb7, 0x7f, 0xb2, 0xd5, 0xdb, 0xd9, 0xb3, 0x0e, 0xf7, - 0x4e, 0xcc, 0xee, 0x8e, 0x7e, 0x83, 0xcc, 0x41, 0xe9, 0xe0, 0x13, 0x5d, 0xc3, 0xdf, 0x4d, 0xbd, - 0x44, 0x00, 0xe6, 0x76, 0x8e, 0xfa, 0xdd, 0xde, 0x9e, 0x5e, 0x16, 0x76, 0xd4, 0xed, 0xf5, 0xf6, - 0x4c, 0xeb, 0xd8, 0x3c, 0xda, 0xfd, 0xcd, 0xce, 0x89, 0x5e, 0xd9, 0xf8, 0x64, 0xfc, 0xe4, 0x07, - 0xa7, 0xb2, 0x0c, 0x7a, 0x97, 0xbf, 0xb6, 0x3d, 0xe6, 0xe6, 0x34, 0xfd, 0x86, 0x98, 0xcb, 0x91, - 0x8c, 0xa7, 0xba, 0xb6, 0xf1, 0x8f, 0x1a, 0xd4, 0xb2, 0x8f, 0xb9, 0x63, 0x93, 0xe7, 0x34, 0x42, - 0x63, 0xbc, 0x41, 0x6e, 0xc2, 0x22, 0x1a, 0x2f, 0x1d, 0x24, 0x47, 0x69, 0xa2, 0xc8, 0x5a, 0xb6, - 0xe9, 0x26, 0x1b, 0x9e, 0x15, 0xe8, 0x25, 0xa2, 0x43, 0x53, 0x7a, 0x88, 0xfc, 0x24, 0xa7, 0x97, - 0xc5, 0x18, 0xd0, 0x41, 0x78, 0xc2, 0x72, 0x6a, 0x85, 0xdc, 0x86, 0x9b, 0x13, 0x6a, 0x73, 0x56, - 0x95, 0xdc, 0x85, 0xdb, 0x99, 0xc0, 0x34, 0x7b, 0x6e, 0x63, 0x0d, 0x9a, 0xc5, 0x8f, 0xc8, 0x59, - 0x8f, 0xc2, 0x0e, 0xe4, 0x90, 0x37, 0x7e, 0x0e, 0x8b, 0x53, 0x1f, 0xac, 0xc4, 0x0a, 0x76, 0x7b, - 0x72, 0xf2, 0x87, 0xdd, 0x9e, 0x75, 0xb8, 0xf5, 0x5b, 0x5d, 0x13, 0xb2, 0xdb, 0x07, 0x47, 0x47, - 0x87, 0xd6, 0x7e, 0xf7, 0xe0, 0x64, 0xcf, 0xd4, 0x4b, 0x1b, 0x1b, 0x97, 0x64, 0xd1, 0x92, 0x84, - 0x45, 0x1c, 0xed, 0x6c, 0x1d, 0xe8, 0x37, 0xc4, 0x06, 0x7c, 0x7d, 0x70, 0xb4, 0xbd, 0x75, 0xa0, - 0x6b, 0x1b, 0xdb, 0xb0, 0x38, 0x55, 0xa6, 0x17, 0x26, 0xbb, 0x1f, 0x44, 0x0e, 0x95, 0x24, 0x69, - 0x01, 0x5b, 0x69, 0x12, 0xe8, 0x9a, 0xf0, 0x4b, 0x64, 0x49, 0xcf, 0x67, 0x7c, 0xa8, 0x97, 0x36, - 0xbe, 0x84, 0x85, 0x4b, 0x59, 0x8e, 0xb0, 0xf1, 0xfd, 0xc0, 0xf3, 0x82, 0x37, 0x02, 0x81, 0x26, - 0x7f, 0x1c, 0x51, 0x87, 0xba, 0xa2, 0xa9, 0x09, 0x77, 0xdc, 0xc1, 0x42, 0xaa, 0xb8, 0x9c, 0xeb, - 0xa5, 0x8d, 0x23, 0xd0, 0x2f, 0x67, 0x16, 0x64, 0x1e, 0xca, 0x5d, 0x9e, 0xe8, 0x37, 0xc4, 0xc0, - 0xf7, 0xbd, 0xc0, 0x4e, 0xa4, 0x01, 0xef, 0x52, 0x87, 0xf9, 0xb6, 0xa7, 0x97, 0x84, 0xc7, 0xef, - 0xda, 0x09, 0x15, 0x79, 0xab, 0x8c, 0x56, 0xbb, 0xa9, 0xac, 0xef, 0xea, 0x15, 0x61, 0xdc, 0x97, - 0xf2, 0x0c, 0x31, 0x05, 0x71, 0xdf, 0x92, 0xd3, 0xc7, 0xde, 0x62, 0x5d, 0xc3, 0xa5, 0x10, 0xc7, - 0x4f, 0xac, 0x97, 0xb6, 0x7f, 0xfa, 0xfb, 0xef, 0xef, 0x69, 0xff, 0xfa, 0xfd, 0x3d, 0xed, 0x3f, - 0xbe, 0xbf, 0xa7, 0xfd, 0xd5, 0x7f, 0xde, 0xbb, 0x01, 0x37, 0x9d, 0xc0, 0x7f, 0x28, 0x8e, 0x26, - 0xc7, 0x0e, 0x1f, 0x26, 0xcc, 0x3d, 0xc5, 0x60, 0x7d, 0xac, 0xfd, 0x4f, 0x00, 0x00, 0x00, 0xff, - 0xff, 0x54, 0xc0, 0x25, 0x07, 0xe3, 0x2e, 0x00, 0x00, + // 5123 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x7a, 0xcb, 0x6f, 0x1c, 0x49, + 0x72, 0x37, 0xfb, 0x45, 0x76, 0x47, 0x3f, 0x58, 0x4c, 0x52, 0x54, 0x4b, 0x1a, 0x49, 0x9c, 0xde, + 0x79, 0x68, 0xfb, 0xdb, 0xd1, 0xcc, 0x50, 0xda, 0x99, 0xd9, 0xd9, 0x27, 0x9f, 0xa3, 0x96, 0xc8, + 0x26, 0xb7, 0x9a, 0x3b, 0xb3, 0xc0, 0x67, 0xa0, 0x50, 0xac, 0xca, 0x6e, 0xa6, 0x58, 0xaf, 0xa9, + 0x87, 0xd4, 0x1c, 0xc3, 0xc0, 0x9e, 0xf7, 0x64, 0x78, 0xe1, 0x85, 0xcf, 0x3e, 0xd9, 0xb0, 0xe1, + 0x83, 0xff, 0x01, 0xfb, 0xb8, 0x17, 0x03, 0xbe, 0x7a, 0x0f, 0x86, 0xb1, 0x3e, 0x19, 0xf0, 0xcd, + 0x37, 0x9f, 0x8c, 0x8c, 0xcc, 0xac, 0xce, 0x7e, 0x88, 0xa3, 0xf1, 0xee, 0xc1, 0xa7, 0xee, 0x8a, + 0xf8, 0x45, 0xe4, 0x2b, 0x22, 0x32, 0x32, 0x32, 0xa1, 0x45, 0xc7, 0xd4, 0xc9, 0xd2, 0x30, 0x7e, + 0x18, 0xc5, 0x61, 0x1a, 0x92, 0x72, 0xca, 0xa2, 0xf3, 0xdb, 0x06, 0x1d, 0x47, 0x31, 0x4d, 0x12, + 0x16, 0x06, 0x82, 0x7e, 0xbb, 0x91, 0x38, 0x17, 0xd4, 0xb7, 0xe5, 0xd7, 0xc6, 0x28, 0x1c, 0x85, + 0xf8, 0xf7, 0x7d, 0xfe, 0x4f, 0x50, 0x3b, 0x7f, 0x5d, 0x83, 0xea, 0x81, 0x54, 0x47, 0xde, 0x82, + 0x62, 0x1a, 0xb5, 0x0b, 0x5b, 0x85, 0x07, 0xad, 0xed, 0xd6, 0x43, 0xae, 0xf5, 0x21, 0xe7, 0x9d, + 0x5d, 0x45, 0x74, 0xb7, 0xfc, 0x9b, 0x7f, 0xbd, 0xbf, 0x64, 0x16, 0xd3, 0x88, 0x74, 0xa1, 0x9a, + 0x9e, 0x7b, 0x56, 0xe2, 0xd8, 0x41, 0xbb, 0xb8, 0x55, 0x78, 0x50, 0xdf, 0x5e, 0x15, 0xd8, 0x33, + 0xfb, 0xdc, 0xa3, 0x03, 0xc7, 0x0e, 0xcc, 0x95, 0xf4, 0xdc, 0xe3, 0x7f, 0x38, 0x96, 0xb9, 0x63, + 0x81, 0x2d, 0xe9, 0xd8, 0x5e, 0xe0, 0xd2, 0xb1, 0xc0, 0x32, 0x17, 0xff, 0x90, 0xf7, 0xa0, 0x96, + 0x50, 0x8f, 0x3a, 0x29, 0x0b, 0x83, 0x76, 0x59, 0x07, 0x0f, 0x14, 0xd9, 0x9c, 0x20, 0xc8, 0x23, + 0xa8, 0xdb, 0xa3, 0x51, 0x4c, 0x47, 0x36, 0x0a, 0x54, 0x50, 0x60, 0x4d, 0x08, 0xec, 0x4c, 0x18, + 0xa6, 0x8e, 0x22, 0xf7, 0xa0, 0x9c, 0x86, 0x51, 0xbf, 0xbd, 0x8c, 0x68, 0x90, 0xfd, 0x0e, 0xa3, + 0xbe, 0x89, 0x74, 0xf2, 0x26, 0x54, 0x3c, 0xe6, 0xb3, 0xb4, 0xbd, 0x82, 0x80, 0xba, 0x00, 0x1c, + 0x71, 0x92, 0x29, 0x38, 0x64, 0x0f, 0xd6, 0xe8, 0xd8, 0xb9, 0xb0, 0x83, 0x11, 0xb5, 0x62, 0xea, + 0x50, 0xf6, 0x82, 0xc6, 0xed, 0x2a, 0xc2, 0x37, 0xd5, 0x9c, 0x09, 0xb6, 0x29, 0xb9, 0xa6, 0x41, + 0x67, 0x28, 0xbc, 0x1f, 0xcf, 0x43, 0x16, 0xb4, 0x6b, 0x7a, 0x3f, 0x9e, 0x86, 0x2c, 0x30, 0x91, + 0x4e, 0xee, 0x43, 0x5d, 0x2d, 0xb2, 0xc5, 0xdc, 0x36, 0x6c, 0x15, 0x1e, 0xd4, 0x4c, 0x50, 0xa4, + 0x9e, 0xcb, 0x15, 0x5c, 0x32, 0xcf, 0x6b, 0xd7, 0x75, 0x05, 0xcf, 0x98, 0xe7, 0x99, 0x48, 0x27, + 0x3f, 0x84, 0xd5, 0xbc, 0x97, 0x09, 0x0d, 0x5c, 0x1a, 0xb7, 0x1b, 0x08, 0xdd, 0x98, 0xee, 0xe3, + 0x00, 0x79, 0x66, 0x8b, 0x4e, 0x7d, 0x93, 0x0f, 0x00, 0x4e, 0xe3, 0xf0, 0xb9, 0x5c, 0x8c, 0x26, + 0x4a, 0x1a, 0x42, 0x72, 0x42, 0x37, 0x35, 0x0c, 0x79, 0x0a, 0x1b, 0x91, 0x1d, 0xa7, 0x8c, 0x7f, + 0x58, 0x29, 0xb7, 0x04, 0xb1, 0xea, 0x2d, 0x94, 0x6d, 0x4b, 0x59, 0x85, 0x98, 0x98, 0x0a, 0x89, + 0xe6, 0x68, 0x7c, 0x70, 0x49, 0x18, 0xa7, 0xed, 0x55, 0x7d, 0x70, 0x83, 0x30, 0x4e, 0x4d, 0xa4, + 0x93, 0xb7, 0x60, 0xf9, 0x25, 0x0b, 0xdc, 0xf0, 0x65, 0xdb, 0x40, 0x44, 0x43, 0x20, 0xbe, 0x40, + 0x9a, 0x29, 0x79, 0xa4, 0x0f, 0x6f, 0x0e, 0x59, 0x40, 0xad, 0x51, 0x6c, 0xb3, 0x80, 0xba, 0x56, + 0x72, 0x91, 0x0d, 0x87, 0xbc, 0x5b, 0x69, 0x4c, 0x6d, 0xdf, 0x72, 0xc2, 0x2c, 0x48, 0xdb, 0x6b, + 0x5b, 0x85, 0x07, 0x65, 0x69, 0xdc, 0x77, 0x39, 0xfc, 0x33, 0x81, 0x1e, 0x08, 0xf0, 0x00, 0xb1, + 0x7b, 0x1c, 0x4a, 0x9e, 0xc2, 0xfd, 0x85, 0xfa, 0xce, 0xed, 0xd4, 0xb9, 0xb0, 0x12, 0xf6, 0x15, + 0x6d, 0x13, 0x4d, 0xdb, 0x9d, 0x79, 0x6d, 0xbb, 0x1c, 0x39, 0x60, 0x5f, 0x51, 0x3e, 0x02, 0x3a, + 0x8e, 0xec, 0xc0, 0x6d, 0xaf, 0xeb, 0x23, 0x38, 0x40, 0x9a, 0x29, 0x79, 0xe4, 0x5d, 0x58, 0x11, + 0xff, 0xb6, 0xdb, 0x1b, 0x08, 0x6b, 0xea, 0xb0, 0x6d, 0x53, 0x71, 0xf9, 0x6a, 0x9f, 0xc7, 0xa1, + 0xed, 0x3a, 0x76, 0x92, 0x5a, 0x5f, 0x66, 0x34, 0xbe, 0x6a, 0xdf, 0xd0, 0x57, 0x7b, 0x57, 0x31, + 0x7f, 0xca, 0x79, 0x66, 0xeb, 0x7c, 0xea, 0x9b, 0x3c, 0x86, 0x06, 0xe3, 0xfe, 0x68, 0x79, 0x61, + 0x78, 0x99, 0x45, 0xed, 0xb6, 0xee, 0x4b, 0xe8, 0xa9, 0x47, 0x61, 0x78, 0xf9, 0xb3, 0xc8, 0xac, + 0x33, 0xf5, 0x91, 0x45, 0xe4, 0x2e, 0x40, 0x64, 0xc7, 0x34, 0x48, 0x2d, 0xe6, 0x8e, 0xdb, 0xb7, + 0xb6, 0x0a, 0x0f, 0x9a, 0x66, 0x4d, 0x50, 0x7a, 0xee, 0x98, 0x9c, 0xc2, 0x26, 0x1d, 0x47, 0x9e, + 0xcd, 0x02, 0x6b, 0x18, 0xc6, 0x96, 0x13, 0x06, 0x81, 0x34, 0xa7, 0xdb, 0xa8, 0xfe, 0x76, 0x3e, + 0x16, 0x8e, 0x39, 0x0c, 0xe3, 0xbd, 0x1c, 0x61, 0x6e, 0xd0, 0x05, 0xd4, 0xce, 0xdf, 0x96, 0xa0, + 0x35, 0x6d, 0xb7, 0xe4, 0x81, 0x16, 0xb1, 0xc8, 0xb4, 0x65, 0xcf, 0x45, 0xad, 0x35, 0x1a, 0x38, + 0xa1, 0x4b, 0x5d, 0x2b, 0xb5, 0x93, 0x4b, 0xcb, 0xa7, 0xa9, 0xdd, 0x2e, 0x6e, 0x95, 0x1e, 0x34, + 0xcc, 0x55, 0xc9, 0x38, 0xb3, 0x93, 0xcb, 0x63, 0x9a, 0xda, 0xe4, 0x43, 0x68, 0x4d, 0x6c, 0xf9, + 0x92, 0x5e, 0x25, 0xed, 0xd2, 0x56, 0x69, 0x62, 0x89, 0x07, 0xe3, 0x28, 0x36, 0x9b, 0x39, 0xe2, + 0x19, 0xbd, 0x4a, 0xc8, 0x5b, 0x50, 0x71, 0x2e, 0x98, 0xe7, 0xca, 0xc0, 0xa5, 0x45, 0x4f, 0xee, + 0xb0, 0xa6, 0x60, 0x92, 0xb7, 0xa1, 0x92, 0x5e, 0x45, 0x34, 0x69, 0x57, 0x50, 0x9f, 0x0c, 0x6f, + 0x87, 0x8c, 0x7a, 0x2e, 0xef, 0xae, 0x29, 0xb8, 0xe4, 0x63, 0x58, 0xb5, 0x3d, 0xcf, 0x1a, 0x72, + 0xba, 0x25, 0x04, 0x96, 0x17, 0x0b, 0x34, 0x6d, 0xcf, 0xcb, 0xbf, 0x12, 0xf2, 0x43, 0xa8, 0x3b, + 0xa1, 0xaf, 0xb6, 0x01, 0x0c, 0x62, 0xad, 0xed, 0x1b, 0x42, 0x68, 0x6f, 0xc2, 0x38, 0x0e, 0x5d, + 0x35, 0x35, 0x3a, 0x9e, 0x1c, 0xc1, 0x66, 0x16, 0x29, 0xf7, 0x48, 0xa9, 0x36, 0x51, 0x55, 0x6c, + 0xfe, 0xa6, 0x1c, 0x95, 0x98, 0xae, 0xdd, 0xab, 0x94, 0x26, 0x03, 0x8f, 0x39, 0xd4, 0x5c, 0x57, + 0x62, 0x7b, 0x29, 0x55, 0xb3, 0xd8, 0xf9, 0x65, 0x01, 0xea, 0x9a, 0xf1, 0x90, 0x0f, 0x60, 0x43, + 0x58, 0xd9, 0x85, 0x1d, 0xb8, 0x1e, 0xb5, 0xc2, 0xe1, 0x30, 0xa1, 0x69, 0xd2, 0x2e, 0x6c, 0x95, + 0x1e, 0x34, 0x4d, 0x82, 0xbc, 0x27, 0xc8, 0x3a, 0x11, 0x1c, 0x6e, 0x61, 0x97, 0x94, 0x46, 0x56, + 0x18, 0xf3, 0xf8, 0xc5, 0xf7, 0x9a, 0xaa, 0x59, 0xe3, 0x94, 0x13, 0x4e, 0xe0, 0x9b, 0x0b, 0x4e, + 0x6b, 0x4c, 0x03, 0xb9, 0x40, 0xb3, 0xd3, 0x9e, 0xf3, 0x3b, 0x9f, 0xc0, 0xda, 0x5c, 0xb7, 0xc9, + 0xb7, 0xa0, 0xa9, 0xdb, 0x84, 0xe8, 0x4a, 0xc3, 0x6c, 0x68, 0xf6, 0x90, 0x74, 0x7e, 0x5b, 0x00, + 0x63, 0x36, 0xa2, 0x2f, 0xb6, 0xa6, 0xc2, 0x62, 0x6b, 0xfa, 0x00, 0xea, 0xfa, 0x4a, 0x16, 0x17, + 0xaf, 0x24, 0x0c, 0x27, 0xcb, 0xd8, 0x41, 0xab, 0x2e, 0xbd, 0xca, 0xaa, 0xd1, 0x9e, 0xf7, 0xe1, + 0x7e, 0x18, 0xb3, 0x11, 0x0b, 0x6c, 0x0f, 0xd7, 0x2a, 0x8a, 0xdd, 0xd0, 0xc9, 0x68, 0xac, 0xf5, + 0xa7, 0x8c, 0xfd, 0xb9, 0xa3, 0x60, 0x7b, 0x29, 0x3d, 0x95, 0xa0, 0x7c, 0x8d, 0x7e, 0x55, 0x82, + 0xc6, 0x4e, 0xbf, 0x8f, 0x61, 0xa0, 0x17, 0x0c, 0x43, 0xf2, 0x31, 0x00, 0xc6, 0x0f, 0xec, 0xec, + 0xb4, 0x63, 0x29, 0x9c, 0xe6, 0x58, 0xb5, 0x2f, 0x15, 0x81, 0xf4, 0x60, 0xd5, 0x65, 0x49, 0x6a, + 0x07, 0x0e, 0xe5, 0xad, 0xc7, 0xcc, 0xc1, 0x05, 0x6b, 0x29, 0x3f, 0xff, 0x9c, 0x3a, 0x69, 0x18, + 0xef, 0x4b, 0xc8, 0x31, 0x22, 0xa4, 0x96, 0x96, 0x3b, 0x45, 0x25, 0xb7, 0xa0, 0x92, 0x86, 0x91, + 0x75, 0x89, 0x33, 0xd0, 0x94, 0x20, 0xbe, 0x3f, 0x3f, 0x23, 0x6f, 0x73, 0x03, 0xf7, 0x32, 0x3f, + 0xb0, 0x02, 0xdb, 0xa7, 0xe8, 0x6c, 0x35, 0x09, 0x00, 0xc1, 0xe8, 0xdb, 0x3e, 0x25, 0x6f, 0x42, + 0x4d, 0xc2, 0x98, 0x8b, 0x99, 0x41, 0x49, 0x82, 0xaa, 0x82, 0x8c, 0x1b, 0x68, 0x3d, 0xa6, 0x43, + 0xeb, 0x05, 0x75, 0xac, 0xe1, 0xa3, 0x6d, 0x4c, 0x08, 0x1a, 0x66, 0x2d, 0xa6, 0xc3, 0xcf, 0xa9, + 0x73, 0xf8, 0x68, 0x9b, 0xdc, 0x87, 0xaa, 0xb0, 0x56, 0xe6, 0xe2, 0xee, 0xae, 0x34, 0xac, 0x20, + 0xb5, 0xc7, 0x83, 0x73, 0xc3, 0xb7, 0xc7, 0x96, 0xea, 0x3b, 0xee, 0xd1, 0x05, 0xe5, 0x55, 0xbe, + 0x3d, 0x56, 0x43, 0x25, 0x5d, 0x68, 0x5d, 0x04, 0xc9, 0x4b, 0x8b, 0x0e, 0xad, 0x84, 0xda, 0xb1, + 0x73, 0x81, 0xc1, 0x5c, 0x8d, 0xab, 0xc1, 0x79, 0x07, 0xc3, 0x01, 0x72, 0x9e, 0x96, 0xab, 0x2b, + 0x46, 0xb5, 0xf3, 0xeb, 0x02, 0xb4, 0x0e, 0xcf, 0x06, 0xbb, 0x61, 0xe8, 0x51, 0x3b, 0x38, 0xa3, + 0xb1, 0x4f, 0xbe, 0x0f, 0xb5, 0x94, 0xc6, 0xbe, 0xbe, 0x2c, 0x72, 0x4f, 0x9d, 0x06, 0x6a, 0x8b, + 0x53, 0x4d, 0xe5, 0x37, 0x69, 0x43, 0x39, 0xa5, 0xe3, 0x14, 0x17, 0xa4, 0x96, 0xcf, 0x27, 0x1d, + 0xa7, 0xe4, 0x3d, 0x58, 0x8d, 0x2e, 0x62, 0x3b, 0xa1, 0x93, 0x71, 0xe8, 0x93, 0xde, 0x12, 0x4c, + 0x35, 0x94, 0xce, 0x0f, 0x61, 0x75, 0xd2, 0x9c, 0xd8, 0x3b, 0xba, 0x50, 0x09, 0x42, 0x97, 0x0a, + 0xdf, 0xc9, 0x37, 0x9c, 0x09, 0xaa, 0x1f, 0xba, 0xd4, 0x14, 0x90, 0xce, 0x7f, 0x4d, 0x8d, 0x8b, + 0x73, 0xc8, 0x87, 0x50, 0x09, 0x1d, 0x27, 0x8b, 0xe5, 0x98, 0x6e, 0xcc, 0x8a, 0x9f, 0x70, 0xa6, + 0xec, 0x8d, 0x40, 0x92, 0x4f, 0xa1, 0xea, 0x87, 0x2e, 0x1b, 0x32, 0x19, 0x13, 0x16, 0xcc, 0xc4, + 0xb1, 0xe4, 0xab, 0x99, 0x50, 0x78, 0xd2, 0xe5, 0x33, 0x11, 0xfb, 0x32, 0x17, 0xdd, 0x58, 0x34, + 0x83, 0x4f, 0x70, 0x6e, 0x62, 0x9f, 0xfc, 0x08, 0x5a, 0x49, 0x76, 0x6e, 0x4d, 0xd2, 0x6a, 0x19, + 0xdb, 0xe7, 0xfa, 0x88, 0x13, 0xf1, 0x64, 0xc9, 0x6c, 0x26, 0xd9, 0xf9, 0x41, 0x8e, 0xde, 0x5d, + 0x86, 0x32, 0x1f, 0x76, 0xe7, 0xd7, 0x25, 0x68, 0x1c, 0x9e, 0x0d, 0x5e, 0xcb, 0xc7, 0x14, 0x6e, + 0xb1, 0x8f, 0xe9, 0x36, 0x59, 0x5c, 0x64, 0x93, 0x5d, 0x58, 0x11, 0x06, 0xae, 0x76, 0x2c, 0x43, + 0xc5, 0x7e, 0xb4, 0xfa, 0x60, 0x18, 0x9a, 0x0a, 0x40, 0xde, 0x84, 0x86, 0xe6, 0x4a, 0x09, 0x46, + 0x8b, 0x9a, 0x59, 0x9f, 0x78, 0x51, 0x42, 0xbe, 0x95, 0x77, 0x94, 0x5b, 0x4f, 0x45, 0xb3, 0x1e, + 0xd9, 0x29, 0x69, 0x42, 0x12, 0x14, 0x5e, 0xd2, 0x80, 0x7d, 0x45, 0x63, 0x74, 0x26, 0x85, 0x6c, + 0x09, 0xa4, 0xe2, 0x91, 0x75, 0xe5, 0xdc, 0x80, 0x09, 0x83, 0x70, 0xeb, 0x4f, 0x54, 0x43, 0xc3, + 0x2c, 0x70, 0xd0, 0x3d, 0x5a, 0xdb, 0xeb, 0x32, 0xed, 0x73, 0x6c, 0xcf, 0x8e, 0x0f, 0xb3, 0xc0, + 0x19, 0xb0, 0xd1, 0x54, 0xeb, 0x9c, 0x46, 0x3e, 0x85, 0xe6, 0xb9, 0x58, 0x05, 0x99, 0xf7, 0x6c, + 0x5e, 0xb3, 0x46, 0x66, 0xe3, 0x5c, 0xfb, 0xe2, 0x6e, 0xb6, 0x26, 0x66, 0xc6, 0x8e, 0x71, 0xa3, + 0xc2, 0xd5, 0xf9, 0x01, 0x80, 0x98, 0x64, 0x6d, 0x75, 0x6e, 0xea, 0xd3, 0x28, 0xc1, 0xfa, 0x12, + 0x31, 0x45, 0x20, 0x9f, 0x42, 0x6b, 0x98, 0x26, 0xa2, 0x2f, 0x16, 0x0b, 0x86, 0xa1, 0x34, 0x9a, + 0x99, 0xf5, 0xe5, 0x2d, 0x3d, 0x59, 0x32, 0x1b, 0xc3, 0x34, 0xc9, 0xbf, 0x77, 0x57, 0xa0, 0x82, + 0x8a, 0x3a, 0xff, 0x54, 0x81, 0xda, 0x24, 0x1b, 0xbe, 0x0f, 0x55, 0x91, 0x4f, 0x33, 0x17, 0xbb, + 0x93, 0xaf, 0x3a, 0x52, 0xa7, 0x57, 0xbd, 0xf8, 0x75, 0xab, 0xde, 0x86, 0xb2, 0x4b, 0x13, 0x07, + 0x1d, 0xa0, 0xaa, 0x42, 0x01, 0xa7, 0x90, 0xef, 0x00, 0x89, 0x62, 0xe6, 0xdb, 0xf1, 0x95, 0x95, + 0xc7, 0x4e, 0x61, 0x15, 0x25, 0xd3, 0x90, 0x1c, 0xa9, 0xd1, 0x4d, 0xc8, 0x4f, 0xc0, 0x08, 0xe8, + 0x38, 0xb5, 0x62, 0x6a, 0xbb, 0x16, 0x0d, 0x46, 0x2c, 0xa0, 0x68, 0x20, 0x2d, 0xd5, 0xf8, 0x01, + 0xd2, 0xb4, 0x49, 0x6a, 0x71, 0xbc, 0x49, 0x6d, 0x57, 0x70, 0xc8, 0x77, 0x60, 0x39, 0xe6, 0x3b, + 0x9a, 0xca, 0x6d, 0xe4, 0xde, 0xfd, 0x8c, 0x5e, 0x99, 0x9c, 0x2c, 0xa5, 0x24, 0x86, 0x7c, 0x0f, + 0x6e, 0xa9, 0xde, 0x45, 0x31, 0x1d, 0xb2, 0xb1, 0xde, 0xc9, 0x15, 0xec, 0xe4, 0xa6, 0x04, 0x9c, + 0x22, 0x7f, 0xd2, 0xd5, 0xe9, 0x2c, 0xa2, 0x3a, 0x9b, 0x45, 0x6c, 0x41, 0x83, 0x25, 0xd6, 0x90, + 0x67, 0xce, 0x78, 0x60, 0xa9, 0x21, 0x00, 0x58, 0x72, 0x68, 0x27, 0x29, 0x2e, 0xc0, 0x31, 0xdc, + 0x8d, 0xb2, 0xe4, 0x82, 0xba, 0x96, 0x1b, 0xbe, 0x0c, 0xac, 0x21, 0xf3, 0x52, 0x8a, 0x09, 0xad, + 0x8b, 0xf9, 0x5f, 0xd2, 0x86, 0xb9, 0xec, 0xf0, 0xb6, 0x10, 0xd8, 0x0f, 0x5f, 0x06, 0x87, 0x08, + 0xdf, 0xcb, 0xd1, 0x64, 0x0f, 0xd6, 0xe3, 0x2c, 0x48, 0x99, 0x4f, 0x95, 0x2a, 0x8f, 0x25, 0x69, + 0xbb, 0x8e, 0x4a, 0xa4, 0xd5, 0x9b, 0x02, 0x20, 0x64, 0xcd, 0xb5, 0x58, 0xff, 0x3c, 0x62, 0x09, + 0xf7, 0x3a, 0x83, 0xef, 0x3e, 0x2f, 0x6d, 0x96, 0x5a, 0xa8, 0xca, 0x4f, 0xf0, 0x80, 0x57, 0x91, + 0xf3, 0xd6, 0xf4, 0xed, 0xf1, 0x17, 0x36, 0x4b, 0xcf, 0x98, 0x4f, 0x8f, 0x13, 0xf2, 0x3e, 0xd4, + 0xec, 0x40, 0xb9, 0x48, 0x53, 0xb7, 0x48, 0x7d, 0xf7, 0x37, 0xab, 0x76, 0x20, 0xc3, 0xfa, 0x33, + 0xb8, 0x91, 0x25, 0xd4, 0x95, 0xb3, 0x6c, 0xc7, 0x16, 0x5a, 0x26, 0x4d, 0xda, 0x2d, 0x3d, 0x13, + 0x9c, 0xf3, 0x1e, 0x73, 0x9d, 0x4b, 0x4d, 0x91, 0x69, 0xd2, 0xf9, 0xcf, 0x32, 0x90, 0xf9, 0xa3, + 0xdf, 0xff, 0x4d, 0xc3, 0xbe, 0xd6, 0xd0, 0x2a, 0xd7, 0x1a, 0xda, 0xb7, 0x60, 0x72, 0x28, 0x40, + 0xf8, 0x32, 0xc2, 0x1b, 0x39, 0x91, 0x83, 0x66, 0xcd, 0x6d, 0xe5, 0x9b, 0x9b, 0x5b, 0xf5, 0x0f, + 0x61, 0x6e, 0xb5, 0xdf, 0xdb, 0xdc, 0xe0, 0x35, 0xcd, 0xad, 0xfe, 0xfb, 0x98, 0x5b, 0xe3, 0x7f, + 0x61, 0x6e, 0xff, 0x5d, 0x81, 0xf2, 0xd3, 0x90, 0x05, 0xe4, 0x43, 0xa8, 0x3d, 0x0f, 0x59, 0xa0, + 0x47, 0xf2, 0xd6, 0xa4, 0xd4, 0xa2, 0xa7, 0x4a, 0xcf, 0xe5, 0x37, 0xdf, 0xf4, 0x51, 0x84, 0x8e, + 0xa9, 0x23, 0xe4, 0x8a, 0xfa, 0xfe, 0xcc, 0xe5, 0x66, 0x4a, 0x62, 0x8d, 0xe7, 0x1a, 0xed, 0x9b, + 0x9c, 0x49, 0x78, 0x96, 0xca, 0x82, 0x80, 0xc6, 0x78, 0x7e, 0x2e, 0xeb, 0x59, 0x2a, 0x92, 0xf9, + 0x21, 0xfa, 0x03, 0x68, 0x79, 0x74, 0x98, 0x5a, 0xd8, 0x27, 0x3c, 0x89, 0x56, 0xe6, 0x16, 0xbf, + 0xc1, 0x11, 0xbc, 0x63, 0x78, 0x10, 0xdd, 0x86, 0xd5, 0x98, 0x8d, 0x2e, 0x74, 0x91, 0xe5, 0xf9, + 0xc3, 0x2b, 0x42, 0x72, 0x99, 0x0f, 0xa0, 0x1e, 0xc5, 0xe1, 0x39, 0x95, 0x27, 0x94, 0x95, 0x57, + 0x9c, 0x50, 0x10, 0x23, 0x4e, 0x28, 0x1f, 0x40, 0xfd, 0x3c, 0x63, 0xf9, 0x99, 0xa6, 0xfa, 0x0a, + 0x09, 0xc4, 0x08, 0x89, 0x47, 0xb0, 0x8a, 0x23, 0xd1, 0xec, 0xb8, 0x36, 0xd7, 0x2f, 0x1c, 0xac, + 0x66, 0xbb, 0xdf, 0x05, 0x43, 0x0c, 0xe6, 0xda, 0x60, 0x2b, 0x06, 0x3c, 0x2d, 0x16, 0xa6, 0x17, + 0xd3, 0x4e, 0x53, 0x9f, 0x17, 0x43, 0x8c, 0x26, 0xf6, 0x04, 0xee, 0x08, 0x31, 0xfa, 0xa5, 0x26, + 0x69, 0x0d, 0xe3, 0xd0, 0xb7, 0x58, 0x20, 0x4d, 0x51, 0xd7, 0x70, 0x13, 0xe1, 0x07, 0x5f, 0x4e, + 0x74, 0x1c, 0xc6, 0xa1, 0xdf, 0x0b, 0xc8, 0x63, 0xb8, 0xc9, 0x12, 0x2b, 0xc8, 0x3c, 0xcf, 0xb2, + 0x5f, 0xda, 0x31, 0xb5, 0x12, 0xea, 0x33, 0x5c, 0x11, 0x0c, 0xbe, 0x55, 0x73, 0x9d, 0x25, 0xfd, + 0xcc, 0xf3, 0x76, 0x38, 0x73, 0x40, 0x7d, 0x86, 0xe6, 0xfa, 0x0a, 0x4f, 0x6d, 0x7d, 0x13, 0x4f, + 0xed, 0xfc, 0x47, 0x11, 0x9a, 0x53, 0x20, 0xb2, 0x01, 0x45, 0x19, 0x60, 0x95, 0xb7, 0x16, 0x99, + 0x4b, 0x1e, 0x83, 0x91, 0x84, 0x59, 0xec, 0x50, 0x4c, 0x70, 0x45, 0x4b, 0xc5, 0xf9, 0x05, 0x11, + 0x18, 0xfe, 0x1f, 0xe3, 0xc0, 0x63, 0x30, 0x52, 0x3b, 0x1e, 0xd1, 0x54, 0x93, 0x9a, 0xaf, 0x8d, + 0xb4, 0x04, 0x26, 0x97, 0xda, 0x06, 0x92, 0xb7, 0x35, 0x29, 0x6a, 0xea, 0x87, 0x37, 0x43, 0xb5, + 0x93, 0x17, 0x38, 0xb7, 0x81, 0xe4, 0x2d, 0x4d, 0x64, 0xf4, 0x1c, 0xd4, 0x50, 0xad, 0xe4, 0x32, + 0x1f, 0xc1, 0x4a, 0x3c, 0x14, 0x5e, 0xbb, 0xac, 0xe7, 0x6d, 0x53, 0xf3, 0xa1, 0xb9, 0xee, 0x72, + 0x3c, 0x44, 0xa7, 0x15, 0x72, 0x7e, 0xe8, 0x52, 0x59, 0x32, 0x59, 0x24, 0xa7, 0x15, 0x4d, 0x96, + 0xe3, 0x21, 0xff, 0xea, 0xfc, 0x4b, 0x01, 0x6a, 0x79, 0x21, 0xfb, 0xeb, 0xb7, 0xb3, 0x3f, 0x68, + 0xfa, 0xae, 0xf6, 0xbb, 0xf2, 0xdc, 0x7e, 0xb7, 0x09, 0xcb, 0x59, 0xc0, 0xbe, 0xcc, 0x44, 0x42, + 0x56, 0x35, 0xe5, 0xd7, 0x2b, 0xf6, 0xc1, 0xe5, 0xc5, 0xfb, 0x60, 0xe7, 0x57, 0x05, 0xa8, 0xe5, + 0x75, 0x77, 0xd2, 0x05, 0xd0, 0x7c, 0xa9, 0x30, 0xb7, 0xe2, 0x1a, 0x97, 0x3c, 0x86, 0x56, 0x1c, + 0x05, 0xba, 0xef, 0x09, 0xbb, 0x92, 0xc5, 0x4b, 0x33, 0x0a, 0x64, 0x0c, 0x8a, 0x02, 0xcd, 0xf9, + 0xf2, 0x02, 0x5a, 0xe9, 0x9a, 0x02, 0x5a, 0xe7, 0x17, 0x05, 0xbd, 0x30, 0x4d, 0xb6, 0xa0, 0xc2, + 0xed, 0x70, 0x51, 0x8f, 0x04, 0x83, 0x74, 0xa1, 0xc6, 0x3b, 0x23, 0x50, 0x0b, 0xfb, 0x51, 0x8d, + 0xc5, 0x9f, 0xd7, 0xed, 0xc2, 0x3f, 0x16, 0xa1, 0xae, 0xdd, 0x2f, 0x90, 0xb7, 0xa1, 0x3a, 0x8a, + 0xc3, 0x2c, 0xb2, 0xce, 0xaf, 0x16, 0x74, 0x63, 0x05, 0x79, 0xbb, 0x57, 0x1c, 0x66, 0x8f, 0x46, + 0xe2, 0x80, 0x33, 0xef, 0x67, 0x2b, 0xf6, 0x68, 0x84, 0xe7, 0x99, 0x2d, 0xa8, 0x8a, 0x4a, 0x1a, + 0x75, 0xa7, 0x52, 0x99, 0x9c, 0x4a, 0xde, 0x87, 0x06, 0x1f, 0x51, 0xde, 0x66, 0x79, 0xd1, 0xa0, + 0x20, 0x8e, 0x82, 0xcf, 0x64, 0xcb, 0x52, 0x20, 0x6f, 0xbd, 0xf2, 0x2a, 0x81, 0x1d, 0xd9, 0x87, + 0x7c, 0x1e, 0x96, 0xaf, 0xab, 0x65, 0x7e, 0x0f, 0x1a, 0x51, 0x4c, 0x51, 0xed, 0xbc, 0xe7, 0x9c, + 0xb1, 0x43, 0xcf, 0x4e, 0x2e, 0x4e, 0x63, 0xba, 0x33, 0x1a, 0x71, 0x5f, 0xe1, 0xbb, 0x87, 0xfa, + 0xdf, 0xf9, 0xcb, 0x02, 0x94, 0xcf, 0xc2, 0xa8, 0x4f, 0xde, 0x85, 0x2a, 0x66, 0xe5, 0x93, 0xb9, + 0x93, 0x85, 0xf0, 0xdd, 0xab, 0x5e, 0x4a, 0x7d, 0x73, 0x05, 0xb9, 0xbb, 0x57, 0xe4, 0xb6, 0xba, + 0x97, 0x29, 0x6a, 0x15, 0x76, 0x79, 0x21, 0xf3, 0x5a, 0xcb, 0xc6, 0x67, 0x61, 0x92, 0x9c, 0xe5, + 0xd3, 0x36, 0xdd, 0x5c, 0x3d, 0x47, 0xec, 0x5e, 0x75, 0xfe, 0xbe, 0x00, 0x15, 0xbc, 0xf8, 0x99, + 0x34, 0x5e, 0xb8, 0xa6, 0xf1, 0xe2, 0x37, 0x69, 0xbc, 0xf4, 0x35, 0x8d, 0x93, 0x8f, 0x60, 0x2d, + 0x8d, 0xb3, 0xc0, 0xb1, 0x53, 0xca, 0xf7, 0x70, 0xb4, 0x5f, 0xd9, 0xe5, 0xa9, 0x2d, 0x4c, 0x81, + 0x9e, 0xd1, 0x2b, 0x4e, 0xe8, 0xfc, 0x04, 0xca, 0xcf, 0x98, 0xe7, 0x91, 0x37, 0x60, 0xd9, 0x09, + 0x83, 0xa0, 0xb7, 0x3f, 0xd5, 0x67, 0x49, 0xe3, 0x03, 0x12, 0xa9, 0x59, 0x51, 0xb3, 0x30, 0x41, + 0xea, 0xec, 0xc0, 0xc6, 0xa2, 0x92, 0x3c, 0xf9, 0x36, 0x34, 0x27, 0x25, 0x7c, 0x15, 0xe2, 0x94, + 0xe2, 0xc6, 0x84, 0xd5, 0x73, 0x3b, 0x7f, 0x53, 0x82, 0xb6, 0x9a, 0x01, 0xf1, 0xcb, 0xc2, 0x60, + 0x90, 0xf9, 0x3c, 0xc0, 0x90, 0x2e, 0xac, 0xe1, 0x0e, 0x17, 0xc5, 0xa1, 0x43, 0x13, 0x9e, 0xf3, + 0x61, 0x40, 0x29, 0x3c, 0x28, 0x9b, 0xab, 0x9c, 0x71, 0xaa, 0xe8, 0x7d, 0xee, 0xbc, 0x6b, 0x41, + 0xe6, 0x73, 0xa8, 0x9b, 0x39, 0xd4, 0xb5, 0xe2, 0xf0, 0x65, 0x22, 0x2c, 0xc0, 0x5c, 0x0d, 0x32, + 0xff, 0x54, 0xd2, 0xcd, 0xf0, 0x65, 0x42, 0xde, 0x86, 0x16, 0xc7, 0xb2, 0x94, 0xc6, 0xb6, 0x88, + 0x3a, 0x25, 0x04, 0x36, 0x83, 0xcc, 0xef, 0xe5, 0xc4, 0xd9, 0x8b, 0xb5, 0xf2, 0xdc, 0xc5, 0xda, + 0x16, 0xd4, 0x9d, 0x30, 0x70, 0xb2, 0x38, 0xa6, 0x81, 0x73, 0x85, 0x21, 0xb4, 0x6c, 0xea, 0x24, + 0x72, 0x04, 0x1b, 0x29, 0x1b, 0x72, 0xf3, 0xc6, 0x0c, 0x9e, 0x07, 0x3a, 0xac, 0x8f, 0x2c, 0xeb, + 0x37, 0x5d, 0xd2, 0x01, 0xf8, 0xc6, 0xb0, 0x27, 0xf8, 0x4f, 0x96, 0x4c, 0x22, 0xe5, 0x34, 0x2a, + 0xef, 0x77, 0x9c, 0x71, 0x1d, 0x49, 0xe6, 0x47, 0xa9, 0xaa, 0xda, 0x37, 0xcc, 0x66, 0x9c, 0xed, + 0x4d, 0x88, 0xe4, 0xe9, 0xa4, 0x51, 0x4c, 0xc2, 0x13, 0x31, 0x9d, 0xf2, 0xe2, 0x71, 0xba, 0x51, + 0x9e, 0x88, 0xcb, 0xe9, 0xce, 0x9b, 0xd4, 0x68, 0xbb, 0x0d, 0x80, 0x7d, 0x9a, 0xda, 0xcc, 0xe3, + 0x3b, 0x4a, 0x67, 0x04, 0x1b, 0x52, 0x2e, 0x5f, 0x2b, 0xac, 0x83, 0x9c, 0xc0, 0x3a, 0x55, 0x04, + 0xd9, 0x1c, 0xcb, 0xcb, 0x7c, 0xf7, 0xa6, 0xed, 0x7c, 0x76, 0x95, 0x4d, 0x42, 0xa7, 0x29, 0x8c, + 0x26, 0x9d, 0x3f, 0x82, 0xdb, 0xb2, 0x21, 0x93, 0x8e, 0x58, 0x18, 0xf4, 0x33, 0xff, 0x64, 0xd8, + 0x0b, 0x64, 0x95, 0xf4, 0x3e, 0xd4, 0x99, 0xfc, 0xaf, 0xac, 0xab, 0x66, 0x82, 0x22, 0xf5, 0x5c, + 0x7e, 0x8c, 0x8f, 0x51, 0xce, 0x0a, 0x32, 0x5f, 0x5a, 0x41, 0x2d, 0x56, 0x9a, 0x3a, 0xff, 0x40, + 0x80, 0xcc, 0x4f, 0x3a, 0x79, 0x0c, 0x1b, 0xae, 0x3f, 0x64, 0xf2, 0x36, 0x32, 0xa0, 0xae, 0x15, + 0xd9, 0xce, 0xa5, 0xb4, 0xb8, 0xdd, 0x62, 0xbb, 0x60, 0x12, 0xc1, 0x1f, 0x08, 0xf6, 0x29, 0xe7, + 0xea, 0x52, 0x97, 0x2c, 0x8a, 0x72, 0xa9, 0xe2, 0x9c, 0x94, 0x60, 0x0b, 0xa9, 0x8f, 0xa1, 0x2d, + 0xa5, 0x5c, 0x3b, 0xb5, 0xf3, 0x06, 0xd1, 0x6a, 0x85, 0x31, 0xde, 0x10, 0xfc, 0x7d, 0x3b, 0xb5, + 0x65, 0x7b, 0x68, 0xbb, 0xb3, 0x82, 0xb2, 0x4d, 0x14, 0x2c, 0xcf, 0x09, 0x0a, 0x2e, 0x0a, 0x7e, + 0x02, 0x37, 0xd3, 0x30, 0xb5, 0x3d, 0x4b, 0x8a, 0xc7, 0x89, 0xe5, 0x85, 0xb6, 0xcb, 0x4f, 0x67, + 0x95, 0xbc, 0xab, 0xeb, 0x08, 0xd9, 0x47, 0x84, 0x99, 0x1c, 0x85, 0xb6, 0x8b, 0x27, 0xb4, 0x8d, + 0x69, 0x49, 0x2a, 0xc4, 0x96, 0xb1, 0xb9, 0x35, 0x5d, 0x84, 0xa2, 0xc0, 0x77, 0x55, 0x53, 0x22, + 0xef, 0x4f, 0x02, 0x3b, 0x4a, 0x2e, 0xc2, 0x94, 0xcb, 0xac, 0xa0, 0x8c, 0xd0, 0xb7, 0xcb, 0xb9, + 0x03, 0xc9, 0x3c, 0xc6, 0x33, 0xb1, 0x17, 0x3a, 0xb6, 0x67, 0x89, 0x95, 0x4a, 0xd0, 0x60, 0xcb, + 0x66, 0x03, 0x89, 0xc2, 0x0e, 0xd0, 0x77, 0x63, 0xea, 0x87, 0x29, 0xcd, 0x51, 0x35, 0xe1, 0xbb, + 0x82, 0xaa, 0x60, 0xef, 0xc0, 0x6a, 0x96, 0xd0, 0x58, 0xf4, 0xf5, 0xfc, 0x2a, 0xa5, 0xe2, 0x0c, + 0x5a, 0x36, 0x9b, 0x9c, 0xcc, 0xfb, 0x89, 0x77, 0x3b, 0xe4, 0x43, 0xb8, 0x21, 0xba, 0xea, 0x51, + 0x3b, 0x0e, 0x94, 0x80, 0x9f, 0xe0, 0x49, 0xb4, 0x6c, 0x12, 0x64, 0x1e, 0x09, 0x9e, 0x1c, 0xdd, + 0x0f, 0xe0, 0x8e, 0xcb, 0x12, 0xbe, 0x97, 0x21, 0xd6, 0xb1, 0x9d, 0x0b, 0x6a, 0x5d, 0xb0, 0x54, + 0x36, 0xd3, 0x40, 0xc1, 0x9b, 0x02, 0xc2, 0x45, 0xf6, 0x38, 0xe0, 0x09, 0x4b, 0x45, 0x83, 0x3f, + 0x82, 0x37, 0xe6, 0xa5, 0x7d, 0x96, 0x24, 0x52, 0xbc, 0x89, 0xe2, 0xed, 0x19, 0xf1, 0x63, 0x96, + 0x24, 0x42, 0xfe, 0x23, 0x68, 0xcf, 0x2e, 0xa3, 0x73, 0x41, 0x9d, 0x4b, 0xde, 0xe7, 0x96, 0x36, + 0xb9, 0x6a, 0x0d, 0xf7, 0x38, 0xf3, 0x38, 0xe1, 0x19, 0x5d, 0x92, 0xda, 0x6a, 0xf5, 0xd4, 0xdc, + 0xad, 0xa2, 0x84, 0x81, 0x1c, 0xde, 0x98, 0x9a, 0xbe, 0xdb, 0x50, 0x4d, 0xe8, 0xc8, 0xa7, 0x41, + 0x9a, 0xe0, 0xbd, 0x79, 0xd9, 0xcc, 0xbf, 0x85, 0x73, 0xd9, 0xea, 0x1a, 0x6c, 0x4d, 0x39, 0x97, + 0x2d, 0xee, 0xc0, 0x38, 0xdb, 0xa5, 0x5e, 0x6a, 0x0b, 0x93, 0x24, 0x82, 0x8d, 0x14, 0x34, 0xc3, + 0xfb, 0x50, 0x17, 0x6c, 0x31, 0xdc, 0x75, 0xe4, 0x0b, 0x09, 0x31, 0xc0, 0x77, 0x60, 0xd5, 0x7f, + 0xe1, 0x38, 0x16, 0x0b, 0xa2, 0x2c, 0x15, 0x4a, 0x36, 0xc4, 0xca, 0x71, 0x72, 0x8f, 0x53, 0x51, + 0xd1, 0x03, 0x30, 0x34, 0x9c, 0xd0, 0x76, 0x03, 0x81, 0xad, 0x1c, 0x28, 0x34, 0x2a, 0x64, 0x98, + 0xa5, 0xb9, 0xca, 0xcd, 0x09, 0xf2, 0x04, 0xc9, 0xa8, 0x73, 0x0b, 0x1a, 0x9e, 0x8f, 0x3e, 0x25, + 0x50, 0x37, 0x45, 0xef, 0x3c, 0x9f, 0x3b, 0x12, 0x22, 0xbe, 0x0f, 0xb7, 0x75, 0xd3, 0xc6, 0xc6, + 0xe5, 0x2d, 0xa8, 0x9f, 0xe0, 0x65, 0x78, 0xd9, 0xbc, 0x39, 0xb1, 0xee, 0xde, 0x84, 0x7f, 0xac, + 0x19, 0x9b, 0x10, 0x3e, 0x67, 0xa9, 0x6f, 0x47, 0x5c, 0xee, 0x96, 0x66, 0x6c, 0x28, 0xb7, 0x8b, + 0xac, 0xe3, 0x84, 0xbc, 0x07, 0xeb, 0x3e, 0x0b, 0x2c, 0xe1, 0x17, 0x93, 0x86, 0x6e, 0x8b, 0x75, + 0xf3, 0x59, 0x70, 0xc4, 0x39, 0x03, 0xd5, 0x02, 0x87, 0xdb, 0xe3, 0x39, 0xf8, 0x1d, 0x09, 0xb7, + 0xc7, 0xd3, 0xf0, 0xf7, 0x61, 0x83, 0x6b, 0x97, 0x0e, 0x35, 0xc1, 0xbf, 0x21, 0x3c, 0xdb, 0x67, + 0x81, 0x89, 0xac, 0x29, 0x01, 0x7b, 0x3c, 0x2f, 0x70, 0x57, 0x0a, 0xd8, 0xe3, 0x19, 0x81, 0x53, + 0x58, 0x97, 0xb6, 0x66, 0x85, 0x43, 0x4b, 0x85, 0xe8, 0xf6, 0x3d, 0xdc, 0x19, 0xb6, 0xa6, 0xb6, + 0xa2, 0x05, 0x91, 0xde, 0x5c, 0x93, 0xc2, 0x5a, 0xf0, 0x9f, 0x04, 0x40, 0x5c, 0xd4, 0xa9, 0xc8, + 0x79, 0x5f, 0x0f, 0x80, 0xc7, 0x2f, 0x1c, 0x67, 0x71, 0xe4, 0x14, 0x82, 0x7a, 0xe4, 0xdc, 0x9a, + 0x13, 0xd4, 0x22, 0xe7, 0x4f, 0xe0, 0xae, 0x14, 0xf4, 0x7c, 0x75, 0xda, 0x9e, 0x6a, 0xf6, 0x4d, + 0x94, 0xbe, 0x25, 0x40, 0x47, 0xbe, 0x38, 0x03, 0xea, 0x4d, 0x2f, 0xd4, 0xa0, 0xb7, 0xdf, 0x59, + 0xa8, 0x41, 0xeb, 0xc3, 0x8f, 0xe1, 0xae, 0x30, 0x9d, 0x17, 0x78, 0x37, 0x6a, 0x31, 0x77, 0x2c, + 0xc2, 0x37, 0x56, 0x1c, 0x92, 0x47, 0x6d, 0x57, 0xc4, 0x0d, 0x04, 0x89, 0xfb, 0xd3, 0x9e, 0x3b, + 0xe6, 0x01, 0xfc, 0x30, 0x0e, 0xfd, 0xc1, 0x23, 0xb2, 0x07, 0xf7, 0xaf, 0x51, 0xe0, 0xb2, 0xe4, + 0xb2, 0x4d, 0x51, 0xc5, 0xed, 0xc5, 0x2a, 0xf6, 0x59, 0x72, 0x49, 0x0e, 0x60, 0xeb, 0x1a, 0x25, + 0x18, 0xcb, 0xda, 0x43, 0xd4, 0x72, 0x67, 0xb1, 0x16, 0x0c, 0x66, 0xaf, 0x1e, 0x8c, 0x2a, 0x17, + 0x8e, 0x5e, 0x35, 0x18, 0x59, 0x33, 0x5c, 0x34, 0x18, 0x71, 0x5f, 0x9a, 0xab, 0xb8, 0x58, 0x34, + 0x18, 0x71, 0x73, 0x2a, 0x95, 0x9c, 0xc0, 0xdb, 0xaf, 0x52, 0xf2, 0x82, 0x25, 0x2c, 0xe5, 0xe9, + 0x26, 0xde, 0x56, 0x32, 0x54, 0xb5, 0xb5, 0x48, 0xd5, 0xe7, 0x02, 0xd8, 0xe7, 0x38, 0x32, 0x80, + 0x77, 0x5f, 0xa5, 0xd0, 0x65, 0x89, 0x63, 0xc7, 0x6e, 0xae, 0xf2, 0x39, 0xaa, 0xec, 0x2c, 0x52, + 0xb9, 0xaf, 0xa0, 0x42, 0xe9, 0x21, 0xbc, 0x39, 0xa7, 0x14, 0xc3, 0xef, 0x0b, 0xea, 0xe4, 0x83, + 0xbd, 0x5c, 0x34, 0xe7, 0x3c, 0x9e, 0x7f, 0x4e, 0x1d, 0x39, 0xda, 0x23, 0x78, 0x6b, 0xb1, 0x1e, + 0xac, 0x4b, 0x25, 0xb9, 0x2a, 0x0f, 0x55, 0xdd, 0x9b, 0x57, 0x75, 0x82, 0x38, 0xa1, 0xad, 0xf3, + 0x57, 0x85, 0x3c, 0x83, 0xd2, 0xb2, 0x45, 0xf2, 0x16, 0xb4, 0x7c, 0x16, 0x9c, 0x0d, 0x4e, 0x44, + 0xe2, 0x99, 0x67, 0xeb, 0x0d, 0x41, 0xe5, 0xd0, 0x7e, 0x42, 0x1e, 0xc1, 0x66, 0xc4, 0x22, 0xea, + 0xb1, 0x80, 0x5a, 0x5f, 0x66, 0x34, 0xa3, 0x39, 0x5a, 0x64, 0x6a, 0xeb, 0x8a, 0xfb, 0x53, 0xce, + 0x94, 0x42, 0x1f, 0x43, 0x3b, 0x17, 0x3a, 0x8f, 0xa9, 0x7d, 0x49, 0xe3, 0x5c, 0x4c, 0x26, 0x4c, + 0x8a, 0xbf, 0x2b, 0xd8, 0x42, 0xb0, 0xf3, 0x15, 0x94, 0x07, 0x61, 0x9c, 0x92, 0x77, 0x60, 0xe5, + 0x1c, 0x4f, 0x4f, 0xc9, 0xe2, 0xe3, 0xa3, 0x64, 0x92, 0xb7, 0xa0, 0xc9, 0x12, 0xbc, 0x81, 0xb0, + 0x3d, 0x2e, 0x28, 0xdf, 0x92, 0x4c, 0x13, 0x5f, 0xf3, 0xfc, 0xff, 0x67, 0x45, 0x30, 0xc4, 0x4b, + 0xb3, 0xc3, 0xd8, 0xf6, 0xe9, 0x6e, 0x98, 0x05, 0xfc, 0x80, 0x57, 0xd6, 0x8a, 0xcc, 0x37, 0xf4, + 0xf7, 0x68, 0x08, 0xd0, 0x8a, 0x4e, 0x08, 0x24, 0x1d, 0xa8, 0x65, 0xc1, 0x39, 0x67, 0x51, 0x77, + 0xea, 0x18, 0x36, 0x21, 0x93, 0x4d, 0x58, 0x16, 0x6f, 0x64, 0xe4, 0x64, 0xc8, 0x2f, 0xf2, 0x00, + 0x6a, 0x8e, 0xed, 0x39, 0xfc, 0xac, 0x9e, 0x2c, 0x38, 0x14, 0x4e, 0x98, 0xe4, 0xff, 0x41, 0x7d, + 0xc8, 0x3b, 0x69, 0xe1, 0x2d, 0x9a, 0x7c, 0x23, 0x39, 0x55, 0xb7, 0x41, 0x36, 0x5e, 0xb8, 0x91, + 0x4f, 0xa1, 0xe9, 0xf8, 0x91, 0x48, 0x41, 0xb5, 0x1a, 0x9a, 0x7c, 0xd4, 0x88, 0x98, 0x3d, 0x3f, + 0xe2, 0x29, 0x28, 0x16, 0x77, 0xeb, 0xce, 0xe4, 0xa3, 0xf3, 0xeb, 0x02, 0xd4, 0xb5, 0x49, 0xb9, + 0x6e, 0x3e, 0x10, 0x30, 0x37, 0x1f, 0xdf, 0x81, 0x4a, 0x92, 0xda, 0x72, 0x65, 0xf2, 0x97, 0x94, + 0xb3, 0xf3, 0x6c, 0x0a, 0x10, 0x79, 0x00, 0x25, 0x1a, 0xa8, 0x75, 0x7a, 0x15, 0x96, 0x43, 0x3a, + 0xbf, 0x2d, 0xc0, 0xb2, 0xe0, 0x90, 0x77, 0xa1, 0x36, 0xcc, 0x02, 0xc7, 0xc2, 0xb2, 0xd9, 0x7c, + 0xa5, 0xa6, 0xca, 0x99, 0xfb, 0x34, 0x71, 0xe6, 0x4e, 0xeb, 0xc5, 0xaf, 0x3b, 0xad, 0xeb, 0x65, + 0x8c, 0xd2, 0x75, 0x65, 0x8c, 0x77, 0xa1, 0x82, 0x13, 0x2e, 0x2f, 0x85, 0xd7, 0xe6, 0x7a, 0x6e, + 0x0a, 0xfe, 0xc4, 0x14, 0x2b, 0xd7, 0x99, 0xe2, 0x8f, 0xa1, 0x81, 0x45, 0x1e, 0x16, 0x8c, 0xf8, + 0x10, 0xc8, 0xfb, 0xd0, 0x1c, 0xc9, 0x6f, 0x51, 0x31, 0x98, 0x1f, 0x65, 0x63, 0xa4, 0x09, 0x74, + 0x9e, 0x40, 0x5d, 0x29, 0x18, 0xd0, 0x94, 0x7c, 0x0f, 0x5a, 0x53, 0xf2, 0xca, 0xab, 0xe4, 0xe5, + 0x87, 0xde, 0x96, 0xd9, 0xd4, 0x15, 0x25, 0x9d, 0x5f, 0x14, 0x60, 0x59, 0x3c, 0x4b, 0x24, 0x1f, + 0x69, 0xbd, 0xc8, 0x1f, 0x78, 0xe5, 0x83, 0xd5, 0xda, 0x9b, 0x74, 0x66, 0x40, 0xd3, 0xe4, 0x35, + 0x4b, 0x29, 0x6d, 0x58, 0x79, 0x41, 0x63, 0x7c, 0x8e, 0x21, 0xbc, 0x42, 0x7d, 0x76, 0xde, 0x83, + 0x1a, 0xef, 0x8b, 0x78, 0xda, 0xf5, 0xb5, 0x95, 0xc1, 0xce, 0x9f, 0x17, 0x60, 0x45, 0x3e, 0xa4, + 0x24, 0x0f, 0x01, 0xa2, 0x38, 0x7c, 0x3e, 0x35, 0xe8, 0xd5, 0x89, 0x88, 0x78, 0xe4, 0x56, 0xe3, + 0x10, 0x51, 0x29, 0x7c, 0x0c, 0x9b, 0x23, 0x1a, 0xd0, 0xd8, 0xe6, 0x1b, 0x8a, 0x4c, 0x41, 0xc5, + 0x2b, 0x8a, 0x22, 0xbe, 0xa2, 0xd8, 0xc8, 0xb9, 0x22, 0x11, 0x15, 0xcf, 0x29, 0x5e, 0x2f, 0xbe, + 0xbc, 0x03, 0xad, 0xe9, 0xe7, 0x9a, 0x64, 0x43, 0x95, 0x6b, 0xc4, 0xa1, 0x58, 0x7c, 0x74, 0xff, + 0xb4, 0x24, 0x5e, 0x6e, 0x63, 0x05, 0x7b, 0x0d, 0x9a, 0xfc, 0x37, 0xbf, 0x5b, 0x35, 0x96, 0x14, + 0x29, 0xaf, 0x4f, 0x1b, 0x05, 0x45, 0xca, 0xcb, 0xba, 0x46, 0x91, 0xac, 0xc3, 0x2a, 0x27, 0x69, + 0x05, 0x4d, 0xa3, 0x44, 0x1a, 0x50, 0x45, 0x6d, 0x61, 0xd4, 0x37, 0xca, 0xa4, 0x09, 0x35, 0xfe, + 0x85, 0xb5, 0x30, 0xa3, 0x92, 0x2b, 0xc1, 0x6c, 0x70, 0x67, 0x34, 0x32, 0x96, 0x15, 0xfe, 0x69, + 0xc8, 0x02, 0x63, 0x45, 0x7d, 0x3d, 0x63, 0x9e, 0x67, 0x54, 0xc9, 0x26, 0x10, 0xfe, 0x35, 0xfd, + 0x6e, 0xd3, 0xa8, 0x91, 0x36, 0x6c, 0xe8, 0x74, 0xf5, 0xb2, 0xce, 0x00, 0x42, 0xa0, 0xc5, 0x39, + 0x93, 0x32, 0xaf, 0x51, 0x27, 0xb7, 0x61, 0x13, 0x69, 0x73, 0x97, 0xc8, 0x46, 0x43, 0xb5, 0xc7, + 0x43, 0xb8, 0xd1, 0x24, 0x2d, 0x00, 0xfe, 0x25, 0x7c, 0xca, 0x68, 0xa9, 0x6f, 0xb1, 0xd2, 0xc6, + 0x2a, 0x59, 0x85, 0xfa, 0xe4, 0x7b, 0xdb, 0x30, 0x54, 0x07, 0xa7, 0xe7, 0xdc, 0x58, 0x53, 0x33, + 0xa3, 0xbd, 0x60, 0x34, 0x36, 0xc8, 0x1b, 0xd0, 0x96, 0xd2, 0x73, 0x15, 0x32, 0xe3, 0x46, 0xf7, + 0x13, 0x68, 0xe8, 0xef, 0xf4, 0x78, 0x5b, 0xa7, 0x76, 0x92, 0x9c, 0x5d, 0xc4, 0x61, 0x36, 0xba, + 0x30, 0x96, 0xf8, 0x54, 0xe6, 0xed, 0x18, 0x05, 0x52, 0x85, 0xf2, 0x13, 0x3b, 0xb9, 0x30, 0x8a, + 0xdd, 0xef, 0xc3, 0xea, 0xcc, 0xfb, 0x4c, 0xce, 0xec, 0x9f, 0xf4, 0x0f, 0x8c, 0x25, 0xfe, 0xef, + 0x70, 0x67, 0x70, 0x66, 0x14, 0xc8, 0x06, 0x18, 0x4f, 0x7a, 0x9f, 0x3d, 0xb1, 0xf6, 0x4e, 0x8e, + 0x4f, 0xcd, 0x83, 0xc1, 0xa0, 0x77, 0xd2, 0x37, 0x8a, 0xdd, 0x87, 0x00, 0x93, 0xd7, 0x16, 0xa4, + 0x06, 0x15, 0x3c, 0x10, 0x08, 0xc1, 0x33, 0xf6, 0xec, 0x73, 0xa3, 0x40, 0xea, 0xb0, 0x22, 0xb7, + 0x76, 0xa3, 0xd8, 0x7d, 0x04, 0xab, 0x32, 0x0b, 0xe0, 0x63, 0x7b, 0xc6, 0x02, 0xbe, 0xd5, 0x90, + 0x5e, 0xff, 0xf3, 0x9d, 0xa3, 0xde, 0xbe, 0xd5, 0xeb, 0xef, 0x1f, 0xfc, 0xdc, 0x7a, 0xd6, 0xeb, + 0xef, 0x0b, 0x0d, 0x4f, 0xfa, 0x83, 0x2f, 0x8c, 0x42, 0xf7, 0x1c, 0x36, 0x16, 0x3d, 0xe1, 0x23, + 0x77, 0xe0, 0xa6, 0x92, 0xdc, 0xef, 0x0d, 0xce, 0x76, 0xfa, 0x7b, 0x07, 0xd6, 0xf1, 0xc1, 0x99, + 0xd9, 0xdb, 0x33, 0x96, 0xc8, 0x32, 0x14, 0x8f, 0x3e, 0x34, 0x0a, 0xf8, 0xbb, 0x6d, 0x14, 0x09, + 0xc0, 0xf2, 0xde, 0xc9, 0xa0, 0xd7, 0x3f, 0x30, 0x4a, 0xdc, 0x8e, 0x7a, 0xfd, 0xfe, 0x81, 0x69, + 0x9d, 0x9a, 0x27, 0xfb, 0x3f, 0xdb, 0x3b, 0x33, 0xca, 0xdd, 0x0f, 0x27, 0x8f, 0x11, 0x71, 0x28, + 0x1b, 0x60, 0xf4, 0x82, 0x17, 0xb6, 0xc7, 0xdc, 0x9c, 0x66, 0x2c, 0xf1, 0xb1, 0x9c, 0x88, 0x78, + 0x6a, 0x14, 0xba, 0xff, 0x7f, 0xf2, 0xb6, 0x0a, 0x45, 0x6e, 0xc2, 0xba, 0xfe, 0x2d, 0xc5, 0x8d, + 0xa5, 0x59, 0x46, 0x3f, 0x1c, 0x38, 0x61, 0x4c, 0x8d, 0x02, 0xb9, 0x05, 0x37, 0x74, 0xc6, 0x17, + 0x2c, 0xbd, 0x10, 0xac, 0x62, 0xf7, 0x4f, 0xf4, 0xe7, 0x6e, 0xf8, 0x12, 0x8d, 0x1b, 0xe2, 0x0c, + 0x69, 0xd2, 0x84, 0xd0, 0xa4, 0xf3, 0x06, 0x17, 0x61, 0xe6, 0xb9, 0x46, 0x41, 0xb6, 0xae, 0xb3, + 0x8e, 0xb3, 0x24, 0x35, 0x8a, 0x0b, 0xf4, 0x71, 0x46, 0x3f, 0x4c, 0x8d, 0x52, 0xf7, 0x97, 0x05, + 0x20, 0xf3, 0x6f, 0xda, 0xa6, 0x45, 0x14, 0xb5, 0x1f, 0x06, 0x7c, 0x6e, 0xee, 0xc0, 0xcd, 0x05, + 0xaf, 0xe0, 0xc2, 0x10, 0xcd, 0xed, 0x2e, 0xdc, 0x9a, 0x67, 0xee, 0x53, 0xc1, 0x2e, 0x72, 0xdb, + 0x5e, 0xa0, 0x97, 0x47, 0x05, 0x6a, 0x94, 0xba, 0x7f, 0xac, 0xf7, 0x45, 0xbd, 0x34, 0x9c, 0x1e, + 0x32, 0xa7, 0x4e, 0x66, 0x63, 0x73, 0x56, 0xe0, 0x8b, 0x30, 0xe6, 0x53, 0xd1, 0x86, 0x8d, 0x69, + 0xfa, 0x29, 0xbe, 0x31, 0x34, 0x8a, 0x0b, 0x38, 0xf8, 0xc0, 0xc2, 0x28, 0x75, 0x3f, 0x9a, 0x79, + 0xa8, 0xa5, 0xbc, 0x6b, 0x7a, 0x89, 0x0d, 0x68, 0x70, 0xc2, 0x61, 0xe6, 0x79, 0x29, 0x1d, 0xf3, + 0x19, 0xfc, 0xbb, 0x02, 0x54, 0xd5, 0x55, 0xff, 0x24, 0x20, 0x06, 0x34, 0xc6, 0x50, 0xb5, 0x44, + 0x6e, 0xc0, 0x1a, 0x86, 0x36, 0x3a, 0x4c, 0x4f, 0xb2, 0x54, 0x92, 0x0b, 0x2a, 0x24, 0x98, 0x6c, + 0x74, 0xa1, 0xd1, 0x8b, 0xaa, 0x01, 0x75, 0x61, 0x6b, 0x94, 0xb8, 0x85, 0x62, 0xf8, 0x0c, 0x52, + 0x96, 0x53, 0xcb, 0x7c, 0x56, 0xa6, 0xd4, 0xe6, 0xac, 0x0a, 0x5f, 0x03, 0x25, 0x30, 0xcf, 0x5e, + 0xee, 0x6e, 0x41, 0x43, 0x7f, 0x62, 0xa0, 0x5a, 0xe4, 0x51, 0x42, 0x74, 0xb9, 0xfb, 0x29, 0xac, + 0xcd, 0x5d, 0x67, 0x72, 0xff, 0xea, 0xf5, 0x85, 0x6b, 0x1c, 0xf7, 0xfa, 0xd6, 0xf1, 0xce, 0xcf, + 0x8d, 0x02, 0x97, 0xdd, 0x3d, 0x3a, 0x39, 0x39, 0xb6, 0x0e, 0x7b, 0x47, 0x67, 0x07, 0xa6, 0x51, + 0xec, 0x76, 0x67, 0x64, 0x31, 0xce, 0xf0, 0x78, 0x71, 0xb2, 0xb7, 0x73, 0x64, 0x2c, 0x71, 0xf7, + 0xfc, 0xec, 0xe8, 0x64, 0x77, 0xe7, 0xc8, 0x28, 0x74, 0x77, 0x61, 0x6d, 0xee, 0x12, 0x87, 0x4f, + 0xf9, 0x61, 0x18, 0x3b, 0x54, 0x90, 0x44, 0x7c, 0xd8, 0xc9, 0xd2, 0xd0, 0x28, 0xf0, 0xa8, 0x8d, + 0x2c, 0xb1, 0x2f, 0xb0, 0x60, 0x64, 0x14, 0xbb, 0x3f, 0x86, 0xd5, 0x99, 0x1c, 0x98, 0x47, 0xc0, + 0xc3, 0xd0, 0xf3, 0xc2, 0x97, 0x1c, 0x81, 0x01, 0xf1, 0x34, 0xa6, 0x0e, 0x75, 0xf9, 0x67, 0x81, + 0x07, 0xeb, 0x3d, 0x2c, 0xb3, 0xa7, 0x66, 0xf8, 0xd2, 0x28, 0x76, 0x4f, 0xc0, 0x98, 0xcd, 0x3b, + 0xc9, 0x0a, 0x94, 0x7a, 0x41, 0x6a, 0x2c, 0xf1, 0x8e, 0x1f, 0x7a, 0xa1, 0x9d, 0x8a, 0xf0, 0xb6, + 0x4f, 0x1d, 0xe6, 0xdb, 0x9e, 0x51, 0xe4, 0xfb, 0xc1, 0xbe, 0x9d, 0x52, 0x7e, 0xaa, 0x11, 0x7b, + 0xd9, 0x7e, 0x26, 0xaa, 0xff, 0x46, 0x99, 0x87, 0xbe, 0x99, 0x2c, 0x94, 0x0f, 0x81, 0x9f, 0xc6, + 0xc5, 0xf0, 0xb1, 0xb5, 0xc4, 0x28, 0xe0, 0x54, 0xf0, 0xe4, 0x24, 0x31, 0x8a, 0xbb, 0xdf, 0xfe, + 0xcd, 0xef, 0xee, 0x15, 0xfe, 0xf9, 0x77, 0xf7, 0x0a, 0xff, 0xf6, 0xbb, 0x7b, 0x85, 0xbf, 0xf8, + 0xf7, 0x7b, 0x4b, 0x70, 0xc3, 0x09, 0xfd, 0x87, 0x3c, 0x71, 0x71, 0xec, 0xe8, 0x61, 0xca, 0xdc, + 0x73, 0xdc, 0xca, 0x4f, 0x0b, 0xff, 0x13, 0x00, 0x00, 0xff, 0xff, 0x5b, 0x33, 0x34, 0xa0, 0x9b, + 0x35, 0x00, 0x00, } diff --git a/go-tipb/expression.pb.go b/go-tipb/expression.pb.go index 4ab0a256..de482d56 100644 --- a/go-tipb/expression.pb.go +++ b/go-tipb/expression.pb.go @@ -626,6 +626,11 @@ const ( ScalarFuncSig_IfNullVectorFloat32 ScalarFuncSig = 5160 ScalarFuncSig_IfVectorFloat32 ScalarFuncSig = 5161 ScalarFuncSig_CaseWhenVectorFloat32 ScalarFuncSig = 5162 + // fts + ScalarFuncSig_FTSMatchWord ScalarFuncSig = 5201 + ScalarFuncSig_FTSMatchExpression ScalarFuncSig = 5202 + ScalarFuncSig_FTSMatchPrefix ScalarFuncSig = 5203 + ScalarFuncSig_FTSMatchRegexp ScalarFuncSig = 5204 // time ScalarFuncSig_DateFormatSig ScalarFuncSig = 6001 ScalarFuncSig_DateLiteral ScalarFuncSig = 6002 @@ -1262,6 +1267,10 @@ var ScalarFuncSig_name = map[int32]string{ 5160: "IfNullVectorFloat32", 5161: "IfVectorFloat32", 5162: "CaseWhenVectorFloat32", + 5201: "FTSMatchWord", + 5202: "FTSMatchExpression", + 5203: "FTSMatchPrefix", + 5204: "FTSMatchRegexp", 6001: "DateFormatSig", 6002: "DateLiteral", 6003: "DateDiff", @@ -1895,6 +1904,10 @@ var ScalarFuncSig_value = map[string]int32{ "IfNullVectorFloat32": 5160, "IfVectorFloat32": 5161, "CaseWhenVectorFloat32": 5162, + "FTSMatchWord": 5201, + "FTSMatchExpression": 5202, + "FTSMatchPrefix": 5203, + "FTSMatchRegexp": 5204, "DateFormatSig": 6001, "DateLiteral": 6002, "DateDiff": 6003, @@ -3575,370 +3588,373 @@ var ( func init() { proto.RegisterFile("expression.proto", fileDescriptorExpression) } var fileDescriptorExpression = []byte{ - // 5838 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x74, 0x7b, 0x67, 0x78, 0x1b, 0xc7, - 0xb9, 0xae, 0xa1, 0x62, 0x49, 0xab, 0x36, 0x5e, 0x4b, 0x26, 0xac, 0x38, 0x22, 0x69, 0xe6, 0x5e, - 0x32, 0xce, 0xbd, 0x84, 0x4c, 0x3b, 0x60, 0x7e, 0x9c, 0x06, 0xb1, 0x19, 0x39, 0x24, 0x45, 0x11, - 0x20, 0x9d, 0xf3, 0xcb, 0xcf, 0x12, 0x18, 0x82, 0x1b, 0x03, 0xbb, 0xf0, 0xee, 0x40, 0x22, 0x73, - 0xca, 0xe3, 0xde, 0x7b, 0x5c, 0xe4, 0xae, 0xea, 0x9a, 0xde, 0xdd, 0x6b, 0x62, 0xc9, 0x25, 0x71, - 0xe2, 0xde, 0x6d, 0xd9, 0x8e, 0x7b, 0x62, 0xc7, 0xbd, 0xe6, 0x3c, 0xdf, 0x3b, 0x05, 0xbb, 0x20, - 0xf3, 0x8b, 0x3b, 0xef, 0xd7, 0xde, 0xf9, 0xe6, 0x9b, 0xd9, 0x99, 0x59, 0xd0, 0x62, 0x7c, 0xba, - 0x1a, 0xf0, 0x30, 0x74, 0x7d, 0xaf, 0xb3, 0x1a, 0xf8, 0xc2, 0xb7, 0x17, 0x08, 0xb7, 0x3a, 0xb1, - 0x66, 0x45, 0x85, 0x0b, 0xa7, 0xe8, 0x08, 0x47, 0xa2, 0x6b, 0x56, 0x95, 0xfc, 0x92, 0x8f, 0xc7, - 0x14, 0x3d, 0x49, 0xf4, 0xe0, 0xb7, 0x13, 0xd6, 0x92, 0x7e, 0x97, 0x97, 0x8b, 0xf9, 0x99, 0x2a, - 0xb7, 0x57, 0x59, 0xf3, 0x44, 0x35, 0x99, 0x68, 0x49, 0x74, 0x2c, 0x5c, 0xbf, 0x60, 0xf7, 0x73, - 0xcd, 0xfb, 0x8c, 0xce, 0x13, 0x55, 0x3b, 0x69, 0x2d, 0x98, 0x2c, 0x3b, 0xa5, 0xe4, 0xbc, 0x96, - 0x44, 0xc7, 0x72, 0x85, 0x03, 0x91, 0x12, 0xee, 0x25, 0xe7, 0x47, 0x2c, 0x80, 0xd8, 0x6b, 0xad, - 0x45, 0x45, 0x5e, 0x70, 0x2b, 0x4e, 0x39, 0xb9, 0x20, 0x22, 0xd4, 0x20, 0xc9, 0x0b, 0x7e, 0xb9, - 0xec, 0x08, 0x9e, 0x5c, 0x18, 0x95, 0x2b, 0x10, 0xf2, 0x29, 0x27, 0x08, 0xb9, 0x48, 0xee, 0xdb, - 0x92, 0xe8, 0x58, 0x62, 0xe4, 0x12, 0xb4, 0xd7, 0x58, 0x0b, 0x79, 0x99, 0x57, 0xc2, 0xe4, 0xa2, - 0x96, 0xf9, 0x46, 0x2a, 0x21, 0x92, 0x39, 0x41, 0xe0, 0xcc, 0x24, 0x17, 0xb7, 0x24, 0x3a, 0x16, - 0x6b, 0x19, 0xa0, 0x83, 0xdf, 0x99, 0x67, 0x2d, 0xe8, 0x9b, 0xae, 0x06, 0xf6, 0xd7, 0x4c, 0x57, - 0x57, 0x74, 0xad, 0xe8, 0xa4, 0x8c, 0x75, 0x12, 0x4e, 0x69, 0x88, 0x74, 0x9d, 0x59, 0xf3, 0x37, - 0x39, 0x65, 0xf4, 0x7c, 0xd9, 0x28, 0x3d, 0xda, 0xff, 0xd7, 0x5a, 0x5c, 0x98, 0x72, 0xcb, 0xc5, - 0x00, 0xdd, 0x9e, 0xdf, 0xb1, 0xb4, 0xcb, 0xaa, 0x5b, 0x8f, 0x1a, 0x99, 0xfd, 0x0d, 0x6b, 0x7e, - 0xe8, 0x96, 0xd0, 0xf9, 0x15, 0x5d, 0xfb, 0x4b, 0x95, 0x5c, 0xc1, 0x29, 0x3b, 0x41, 0x7f, 0xcd, - 0x2b, 0xe4, 0xdc, 0x92, 0x8a, 0x42, 0x5a, 0x76, 0xa7, 0x65, 0x4d, 0xd2, 0x20, 0x1c, 0x25, 0x66, - 0xaa, 0x32, 0x21, 0x4b, 0xbb, 0x56, 0x4a, 0x1b, 0x33, 0x38, 0xa3, 0x4b, 0x26, 0xcd, 0x38, 0xb5, - 0x58, 0xcb, 0x82, 0xaa, 0x77, 0x94, 0x13, 0x94, 0xc2, 0xa3, 0x28, 0xff, 0x94, 0xa2, 0xe5, 0xa3, - 0x56, 0x50, 0xf5, 0x32, 0x41, 0x29, 0x1c, 0xe4, 0x9e, 0xdd, 0x6e, 0x2d, 0x9b, 0x72, 0xc2, 0xa3, - 0x8a, 0x6e, 0x28, 0x5c, 0xaf, 0x20, 0x92, 0x8b, 0x22, 0xa9, 0x58, 0x3a, 0xe5, 0x84, 0xbd, 0x4a, - 0x60, 0xb7, 0x5b, 0x8b, 0xfd, 0xa0, 0xc8, 0x83, 0xa3, 0x26, 0x28, 0x5f, 0xd4, 0x9f, 0x65, 0x32, - 0xf0, 0xfa, 0x99, 0xac, 0xe0, 0x95, 0xd1, 0x45, 0x90, 0xae, 0x9f, 0xb1, 0xbb, 0xad, 0xa5, 0x4e, - 0xa9, 0x44, 0xe4, 0x87, 0xfc, 0x22, 0x4f, 0x2e, 0x41, 0xc7, 0x56, 0x4b, 0xdd, 0x8c, 0x14, 0x08, - 0xd7, 0xf7, 0x48, 0x38, 0x1a, 0xd5, 0x3c, 0xf8, 0x1b, 0xd6, 0xa2, 0xd1, 0xaa, 0x87, 0xa4, 0xb7, - 0x58, 0x0b, 0xa9, 0x5a, 0xc3, 0x64, 0x62, 0x56, 0xe6, 0xa4, 0xe0, 0xe0, 0xb2, 0xb5, 0xaf, 0x0c, - 0x6c, 0xaf, 0xb5, 0x16, 0x10, 0x84, 0x21, 0x8a, 0xab, 0x02, 0xa7, 0xda, 0x2b, 0xf2, 0xb0, 0x80, - 0xb1, 0xd1, 0x3d, 0x03, 0x62, 0x77, 0x58, 0x8b, 0x29, 0x3b, 0xb0, 0x9e, 0x0f, 0xeb, 0xe5, 0xd2, - 0x5a, 0xd1, 0x18, 0x5d, 0x14, 0xc8, 0x87, 0x43, 0x5e, 0x5e, 0x68, 0x2d, 0xd6, 0xa3, 0x6e, 0x2f, - 0xb6, 0x16, 0x0c, 0xd7, 0xca, 0x65, 0xb6, 0x8f, 0xbd, 0xc4, 0x5a, 0x98, 0xf5, 0x44, 0xfa, 0x70, - 0x96, 0xb0, 0x2d, 0x6b, 0xdf, 0x31, 0x17, 0xcf, 0xf3, 0xec, 0xa5, 0xd6, 0xa2, 0xfe, 0xb2, 0xef, - 0x88, 0xc3, 0xba, 0xd8, 0x7c, 0xd3, 0x48, 0x1f, 0xce, 0x16, 0x90, 0x56, 0x4e, 0x04, 0xae, 0x57, - 0x62, 0x0b, 0xc9, 0x78, 0xfd, 0x8c, 0xe0, 0x21, 0xdb, 0xd7, 0x5e, 0x66, 0x2d, 0x1e, 0x9a, 0x09, - 0x8f, 0x29, 0xaf, 0x77, 0x05, 0xe3, 0x36, 0xb3, 0x96, 0xa1, 0xd5, 0x2b, 0xa7, 0x00, 0x9b, 0xb4, - 0xf7, 0xb3, 0x96, 0x4b, 0xa4, 0x16, 0x38, 0x94, 0x3b, 0x56, 0xb2, 0x97, 0x5b, 0x4b, 0x00, 0xf5, - 0x79, 0xb5, 0x0a, 0x9b, 0x32, 0x1e, 0x8e, 0xe0, 0xd3, 0xcc, 0x35, 0xad, 0x1c, 0x17, 0xec, 0xbb, - 0x46, 0x35, 0xef, 0x56, 0x38, 0x3b, 0xda, 0x34, 0xbf, 0x1d, 0xfa, 0x1e, 0x2b, 0xdb, 0xab, 0xad, - 0xfd, 0xf2, 0x6e, 0xef, 0xfa, 0x71, 0x5e, 0x10, 0x7e, 0xa0, 0x69, 0xcf, 0xd8, 0x2b, 0xac, 0x25, - 0xe3, 0x4e, 0xb9, 0xc6, 0x07, 0xdd, 0x50, 0xb0, 0x8b, 0x13, 0xd4, 0xee, 0xf1, 0xcb, 0xb5, 0x8a, - 0x37, 0xca, 0x27, 0xd9, 0x1e, 0xea, 0xef, 0xc2, 0x1e, 0xbf, 0xe6, 0x09, 0x76, 0x63, 0x93, 0xbd, - 0xd8, 0x9a, 0x9f, 0xab, 0x55, 0xd8, 0x4d, 0x78, 0xca, 0x6c, 0x2a, 0xb1, 0x9b, 0xf1, 0x34, 0xe4, - 0x7a, 0xec, 0x16, 0xf9, 0xe4, 0x4c, 0xb3, 0x5b, 0x9b, 0xc8, 0xa6, 0xdf, 0x0d, 0x42, 0xc1, 0x6e, - 0x6b, 0xb2, 0x99, 0xb5, 0x74, 0x20, 0xf0, 0x6b, 0xd5, 0x1e, 0xdf, 0x2b, 0x38, 0x82, 0xdd, 0xde, - 0x64, 0xaf, 0xb4, 0xac, 0x4c, 0xa9, 0x74, 0xd4, 0x7a, 0x57, 0x64, 0xbc, 0x22, 0xbb, 0xa3, 0x89, - 0x42, 0x2a, 0x60, 0x43, 0xc0, 0xee, 0x8c, 0x2a, 0x7c, 0xc7, 0x0f, 0xd8, 0x5d, 0x32, 0xae, 0x28, - 0xb2, 0xbb, 0x9b, 0xec, 0xa5, 0x94, 0xd7, 0x62, 0x91, 0x6f, 0x62, 0xf7, 0xc0, 0x4e, 0x36, 0x46, - 0xfc, 0x2a, 0xfb, 0x2d, 0xec, 0x64, 0x3b, 0xe7, 0x54, 0xaa, 0xec, 0x77, 0xd0, 0x1e, 0x77, 0x02, - 0x92, 0xde, 0xdb, 0x64, 0x2f, 0xb3, 0x16, 0x8d, 0x3b, 0x01, 0x44, 0xbb, 0x9b, 0xec, 0xe5, 0xd6, - 0xe2, 0x71, 0x27, 0x70, 0x1d, 0xaf, 0xc0, 0xd9, 0x9e, 0x26, 0x7b, 0x3f, 0x6b, 0x19, 0xa5, 0x29, - 0x43, 0x4b, 0x42, 0xa6, 0x54, 0x62, 0xf7, 0x35, 0xd9, 0xb6, 0xb5, 0x9c, 0xa0, 0x0d, 0x13, 0xdf, - 0xe5, 0x05, 0x41, 0xd8, 0xfd, 0x4d, 0x76, 0xd2, 0xda, 0x3f, 0x53, 0xad, 0x06, 0xfe, 0x34, 0x52, - 0xa2, 0xa7, 0x0c, 0x7b, 0x00, 0x5c, 0x46, 0xfd, 0xcd, 0xc3, 0xb5, 0xca, 0x04, 0x0f, 0xd8, 0xb6, - 0x66, 0x7b, 0x89, 0xb5, 0x60, 0xd4, 0xf1, 0x8e, 0x66, 0xdb, 0x9b, 0x49, 0xd4, 0xcb, 0xbd, 0x90, - 0xa3, 0xbd, 0xa3, 0x99, 0x42, 0xf7, 0xd4, 0x2a, 0x9c, 0xac, 0xd9, 0xce, 0x66, 0x4a, 0xd0, 0x08, - 0x0f, 0x0a, 0xdc, 0x13, 0x50, 0xd8, 0xd5, 0x4c, 0xe9, 0x1b, 0x16, 0x6e, 0x99, 0xb3, 0xab, 0xe1, - 0x67, 0x90, 0x3b, 0x45, 0x76, 0x4d, 0x33, 0x65, 0x61, 0xd0, 0x29, 0xb1, 0x6b, 0x9b, 0xa9, 0xa3, - 0xc8, 0x2f, 0x06, 0x8e, 0x5d, 0x87, 0x10, 0x83, 0x8e, 0x6e, 0x5f, 0x8f, 0x10, 0xc3, 0x62, 0x4a, - 0x36, 0x6f, 0x80, 0x7e, 0x7d, 0xa5, 0x61, 0xe7, 0x0e, 0x1f, 0x72, 0xc1, 0x84, 0xb5, 0x3c, 0xb6, - 0xf6, 0xd8, 0x2b, 0xad, 0xa5, 0x63, 0x5e, 0x58, 0xe5, 0x05, 0x77, 0xd2, 0xe5, 0x45, 0xb6, 0x0f, - 0x15, 0x67, 0x8f, 0x13, 0x8a, 0xac, 0x27, 0x32, 0x61, 0xd6, 0x13, 0x2c, 0x41, 0xc5, 0x69, 0x90, - 0x51, 0xee, 0x94, 0xd9, 0x3c, 0x7b, 0x7f, 0x6b, 0xa5, 0x81, 0x54, 0xbd, 0xcf, 0xb7, 0x57, 0x59, - 0xcc, 0x80, 0xba, 0xb4, 0x17, 0xc4, 0xac, 0x51, 0xa0, 0x0b, 0xa9, 0x22, 0xeb, 0x8a, 0xba, 0xe2, - 0xf7, 0x8d, 0x69, 0xa2, 0x76, 0x17, 0x69, 0x88, 0xa2, 0x4a, 0x36, 0x96, 0x6d, 0x5b, 0x2b, 0xea, - 0x10, 0xe8, 0x2c, 0xd5, 0x91, 0x25, 0xa6, 0xf8, 0x2c, 0xd3, 0x61, 0x24, 0xaa, 0x09, 0x2d, 0x8f, - 0x3b, 0x00, 0xa3, 0x15, 0xf6, 0x01, 0x96, 0x1d, 0x51, 0xd5, 0x94, 0x56, 0xc6, 0x75, 0xc1, 0x89, - 0xe9, 0x60, 0xca, 0xa1, 0xa4, 0xb5, 0x4a, 0x07, 0x33, 0x28, 0x98, 0xad, 0xb6, 0x9b, 0xac, 0xfd, - 0x63, 0xb0, 0x22, 0x77, 0x80, 0x9d, 0xb4, 0x56, 0xc5, 0x04, 0x9a, 0x5f, 0xd3, 0x2c, 0x4f, 0xa0, - 0x98, 0xb4, 0x0f, 0xb4, 0x56, 0xc7, 0x0d, 0x34, 0xcb, 0x03, 0x67, 0x59, 0x80, 0xe8, 0x1a, 0x3d, - 0x48, 0x32, 0xa4, 0xe4, 0xb9, 0x56, 0xb3, 0xd7, 0x20, 0x68, 0x36, 0xeb, 0xfe, 0x6b, 0x54, 0xb1, - 0x6c, 0xd1, 0xf4, 0x35, 0xae, 0x49, 0xb6, 0x36, 0xba, 0x01, 0xc7, 0x83, 0x75, 0xa7, 0x8c, 0xba, - 0xa6, 0xd8, 0xd6, 0xa8, 0x0f, 0x86, 0x5f, 0xd3, 0xc3, 0x4b, 0xd6, 0x92, 0x5f, 0x87, 0xce, 0xb8, - 0x84, 0xc0, 0xee, 0xeb, 0xda, 0x58, 0x62, 0x8a, 0xdb, 0x21, 0xba, 0xd7, 0x12, 0xd5, 0xcc, 0xbe, - 0x11, 0x77, 0x00, 0x5e, 0xff, 0x4f, 0x77, 0x4f, 0xa9, 0x6a, 0x56, 0xff, 0x3f, 0xae, 0x0b, 0x4e, - 0x9d, 0x26, 0x99, 0x4a, 0x4b, 0xf2, 0xea, 0xd2, 0x2e, 0xea, 0x30, 0xb8, 0x1d, 0x66, 0xc6, 0xd1, - 0xe0, 0x8a, 0xdf, 0xe1, 0x66, 0xc0, 0x8c, 0x44, 0x73, 0xfc, 0xe6, 0x6c, 0x67, 0xe0, 0x99, 0xb6, - 0xd7, 0x58, 0x07, 0x34, 0x98, 0x68, 0xae, 0xdd, 0xb3, 0x6d, 0xc0, 0xf7, 0x5b, 0x3a, 0x87, 0x58, - 0xc5, 0xc0, 0xf5, 0x9f, 0x74, 0xb7, 0x24, 0x04, 0x9e, 0xff, 0xac, 0x73, 0x28, 0x31, 0xc5, 0xf1, - 0x5f, 0x74, 0x67, 0x25, 0xaa, 0xf9, 0xfd, 0x6b, 0xdc, 0x01, 0xb8, 0xfd, 0x9b, 0x8e, 0xaf, 0x54, - 0x35, 0xaf, 0x4c, 0x5c, 0x17, 0x9c, 0xd6, 0xd3, 0xd2, 0xd6, 0xe3, 0x3b, 0x65, 0x1e, 0x16, 0x38, - 0x31, 0x7a, 0xbd, 0x85, 0xd6, 0x59, 0x8d, 0x80, 0xd0, 0x1b, 0x2d, 0xf6, 0x2a, 0x6b, 0xa5, 0x86, - 0x74, 0xe4, 0x37, 0x5b, 0xec, 0xfd, 0xad, 0x15, 0x1a, 0x55, 0x2c, 0xdf, 0x8a, 0x59, 0x83, 0xcd, - 0xdb, 0x2d, 0xf6, 0x6a, 0x8b, 0x19, 0x6b, 0x4d, 0xe6, 0x2f, 0x31, 0x4d, 0x70, 0xf9, 0x6b, 0x0b, - 0xbd, 0x86, 0x07, 0xf3, 0x44, 0xa3, 0x48, 0x6f, 0xe7, 0xc1, 0x3c, 0xe2, 0x73, 0x7a, 0x4b, 0x0e, - 0xe6, 0xeb, 0x6f, 0xe0, 0x65, 0xd6, 0xe2, 0xc1, 0xbc, 0x8a, 0x58, 0x92, 0x8a, 0x08, 0x35, 0x65, - 0xaf, 0xb0, 0xac, 0xc1, 0xbc, 0x89, 0xe1, 0x4a, 0x19, 0x9c, 0x7f, 0x17, 0xbe, 0xfb, 0xc8, 0xb7, - 0x07, 0xb8, 0x0f, 0xbe, 0x7d, 0xf8, 0xee, 0xd3, 0xbe, 0xab, 0xf0, 0xdd, 0xa7, 0x7c, 0x1f, 0x23, - 0x15, 0xe1, 0x3b, 0x80, 0xef, 0x3e, 0xe3, 0x3b, 0x94, 0x32, 0xf8, 0x16, 0xe4, 0x7b, 0x00, 0xbc, - 0xa7, 0x09, 0x1e, 0x90, 0xbc, 0x67, 0xc8, 0xf7, 0x80, 0xe1, 0xfd, 0x3d, 0xf2, 0x3d, 0xa0, 0x79, - 0xff, 0xa7, 0x54, 0x84, 0xef, 0xff, 0x22, 0xdf, 0x03, 0x75, 0xde, 0xff, 0x2d, 0x65, 0xf0, 0xfd, - 0x3f, 0xf2, 0xe5, 0xcc, 0x1d, 0xc1, 0xb1, 0xdc, 0xb2, 0x8f, 0x90, 0x38, 0x8d, 0x20, 0xd0, 0xc7, - 0x18, 0x20, 0x0d, 0xe9, 0x78, 0x9f, 0x60, 0x80, 0x34, 0xaa, 0xc2, 0x7e, 0x1a, 0xb3, 0x46, 0xf4, - 0xcf, 0x5a, 0xe8, 0x55, 0x34, 0xc8, 0xe5, 0x72, 0xce, 0x3e, 0x6f, 0xc1, 0x9b, 0x8a, 0xab, 0xa5, - 0x94, 0x7d, 0x01, 0x0b, 0xb4, 0xb5, 0xe7, 0x2f, 0x5b, 0x88, 0x14, 0x20, 0xe5, 0xf6, 0xef, 0x75, - 0x23, 0xf8, 0x3c, 0xb6, 0x95, 0x34, 0xb2, 0x9e, 0xe0, 0xc1, 0x26, 0xa7, 0x4c, 0x6e, 0x8f, 0x6b, - 0x25, 0x37, 0x1a, 0x81, 0xe7, 0xe3, 0x5b, 0xe9, 0x2d, 0x3a, 0x80, 0x31, 0x39, 0x3e, 0x41, 0x1b, - 0x81, 0x01, 0x39, 0x28, 0x27, 0x60, 0x87, 0x33, 0x60, 0x46, 0xe5, 0xc4, 0x04, 0x31, 0x1c, 0xd0, - 0xc3, 0x72, 0x92, 0xd2, 0x45, 0xa4, 0x93, 0x13, 0xf4, 0xe6, 0x1c, 0xa8, 0x0f, 0xcc, 0x29, 0x4a, - 0x8a, 0xec, 0x9d, 0x8a, 0xbd, 0x51, 0xdf, 0x46, 0x0a, 0x71, 0x26, 0x04, 0x7d, 0x1b, 0x11, 0xe2, - 0x2c, 0x84, 0xe8, 0xdb, 0xa8, 0x43, 0x9c, 0x8d, 0x10, 0x7d, 0x1b, 0x55, 0x88, 0x73, 0x94, 0x2e, - 0x42, 0x9c, 0x8b, 0x10, 0x7d, 0x1b, 0x4d, 0x88, 0xf3, 0x94, 0x14, 0x21, 0xce, 0x47, 0x88, 0x61, - 0xf4, 0xe2, 0x22, 0x08, 0x86, 0x65, 0x2f, 0xe4, 0x3e, 0x6d, 0xd8, 0xf4, 0x62, 0x0b, 0x42, 0x0c, - 0xeb, 0x5e, 0x5c, 0xa2, 0x74, 0x11, 0xe2, 0x52, 0x84, 0x18, 0xae, 0xf7, 0xe2, 0x32, 0x25, 0x45, - 0x88, 0xcb, 0xa5, 0xa7, 0x5a, 0xb9, 0x2c, 0x7b, 0xb2, 0x55, 0x6a, 0xa3, 0x8d, 0x50, 0xdb, 0x12, - 0xb4, 0x13, 0x92, 0x80, 0x0e, 0xb7, 0x9d, 0x36, 0x03, 0xcb, 0x24, 0xa6, 0x42, 0xee, 0x88, 0xd8, - 0x21, 0xec, 0xce, 0x04, 0x95, 0x88, 0xb2, 0xd3, 0xa1, 0x77, 0x45, 0xb4, 0x10, 0xfe, 0x6a, 0x10, - 0x1f, 0x29, 0xd7, 0xe4, 0xfa, 0xb4, 0x3b, 0x81, 0xed, 0x50, 0xb9, 0x66, 0x16, 0xa1, 0x3d, 0x09, - 0xda, 0xb8, 0x11, 0x42, 0xec, 0xee, 0x07, 0xdb, 0x21, 0xd7, 0x53, 0xfa, 0x0f, 0x80, 0x08, 0xda, - 0xda, 0xe0, 0x41, 0x78, 0x04, 0x44, 0x16, 0x7f, 0x90, 0x1a, 0xb5, 0xb2, 0x70, 0xab, 0xe5, 0x19, - 0x18, 0x3d, 0x94, 0xa0, 0x92, 0xd6, 0x90, 0xb6, 0xfb, 0x23, 0x42, 0x6b, 0x94, 0x4c, 0xff, 0x04, - 0xb2, 0xbd, 0xee, 0x26, 0xb7, 0x28, 0x17, 0xab, 0x87, 0x91, 0x0a, 0x09, 0x68, 0xb3, 0x47, 0x12, - 0xaa, 0xf6, 0x24, 0x4c, 0x76, 0x8f, 0x26, 0x68, 0x55, 0x32, 0x90, 0xd6, 0x7c, 0x0c, 0x3d, 0x19, - 0xf2, 0x8b, 0xf0, 0xf5, 0x38, 0x9c, 0x0f, 0xf9, 0x45, 0x2d, 0x7e, 0x02, 0xa3, 0x32, 0xe4, 0x17, - 0xc9, 0xc5, 0x93, 0x09, 0xda, 0x6a, 0x46, 0xc8, 0x8c, 0x79, 0xa1, 0x5b, 0xf2, 0x78, 0x91, 0x3d, - 0x95, 0xb0, 0x0f, 0xb2, 0x9a, 0x54, 0x3e, 0x34, 0x6a, 0xa4, 0x4f, 0x27, 0xec, 0x35, 0xd6, 0xea, - 0x06, 0x69, 0x4e, 0xca, 0x9e, 0x89, 0xca, 0x72, 0x71, 0xbb, 0x67, 0x11, 0x2f, 0x26, 0x53, 0x56, - 0xcf, 0x25, 0xec, 0xaf, 0x58, 0x07, 0x48, 0x5a, 0xb3, 0xc2, 0x3d, 0x9f, 0xb0, 0x0f, 0xb4, 0x56, - 0xc5, 0x85, 0xca, 0xee, 0x85, 0x88, 0xa8, 0x21, 0xd8, 0x8b, 0x09, 0xbb, 0xc9, 0xb2, 0xa3, 0x22, - 0x65, 0xb3, 0x37, 0x61, 0x7f, 0xd5, 0x4a, 0xea, 0xa1, 0x9b, 0x15, 0xed, 0x25, 0x49, 0xa5, 0x41, - 0xac, 0x6c, 0x5f, 0x8e, 0x09, 0x1b, 0x22, 0xbe, 0x22, 0xc9, 0xc4, 0x84, 0xca, 0xee, 0xcf, 0x09, - 0xbb, 0xcd, 0x5a, 0xab, 0x45, 0xfd, 0x7e, 0x50, 0xa8, 0xdb, 0x19, 0xfb, 0x57, 0x13, 0x76, 0xab, - 0x75, 0xd0, 0xdc, 0x4a, 0xca, 0xcf, 0x6b, 0x73, 0xa8, 0x34, 0xb0, 0x78, 0x1d, 0x2a, 0xd1, 0x52, - 0x99, 0x15, 0xe8, 0x8d, 0x84, 0xdd, 0x6c, 0xad, 0x99, 0x4b, 0x45, 0x85, 0x79, 0x13, 0x29, 0x8a, - 0x2a, 0xc4, 0x7a, 0xf3, 0xd6, 0x2c, 0xfb, 0x06, 0x0e, 0x6f, 0xa3, 0xca, 0x32, 0x13, 0x98, 0x1b, - 0xbf, 0x64, 0x54, 0x91, 0x99, 0x89, 0x70, 0x8c, 0x5a, 0xbf, 0xd2, 0x2d, 0xd4, 0xe7, 0xaf, 0x19, - 0x8e, 0x61, 0x13, 0x66, 0x5e, 0xfd, 0x86, 0xe1, 0xa5, 0xca, 0x5d, 0x5a, 0x72, 0xf3, 0x7e, 0x2f, - 0x2f, 0xb0, 0x1b, 0xe3, 0x10, 0x39, 0xb9, 0xc9, 0x40, 0xbd, 0xbc, 0x20, 0xa1, 0x9b, 0xe3, 0x10, - 0x19, 0xde, 0xc2, 0x70, 0x08, 0xe2, 0xae, 0x5c, 0xac, 0x6f, 0x65, 0x34, 0xaf, 0xfa, 0xcb, 0xbe, - 0x1f, 0x18, 0xdf, 0xb7, 0x35, 0x60, 0xe4, 0xe9, 0xf6, 0x3a, 0x66, 0xbc, 0xdf, 0xd1, 0x80, 0x91, - 0xed, 0x9d, 0x8c, 0x56, 0x09, 0x60, 0xf0, 0x7f, 0x17, 0x93, 0xc7, 0xb3, 0x9a, 0x27, 0xe7, 0xde, - 0x1e, 0x84, 0x47, 0x9b, 0x5c, 0xdc, 0x57, 0x6f, 0x92, 0xf5, 0xfd, 0xcc, 0x3e, 0xc0, 0xda, 0x0f, - 0xcd, 0x23, 0x5d, 0x31, 0xd5, 0x1f, 0x38, 0x05, 0xb9, 0xd6, 0x30, 0x9a, 0xd6, 0x31, 0x9c, 0xac, - 0x1f, 0x9c, 0x0d, 0x93, 0x97, 0xdf, 0x23, 0x9b, 0x83, 0x7e, 0xe9, 0xd0, 0x4c, 0x50, 0x62, 0x0f, - 0x23, 0xc4, 0xa0, 0x5f, 0xea, 0xca, 0x04, 0xa5, 0x90, 0x3d, 0xc2, 0x70, 0xae, 0xf3, 0x4b, 0x5d, - 0xec, 0x51, 0x46, 0x4b, 0x3c, 0xe9, 0xad, 0x63, 0x8f, 0x31, 0x75, 0x6c, 0x2c, 0xb2, 0xc7, 0x19, - 0x55, 0x2c, 0x3d, 0x92, 0xd3, 0x1c, 0xe7, 0x45, 0x1c, 0xf8, 0x06, 0xb8, 0xc7, 0x9e, 0x60, 0x74, - 0x12, 0x1c, 0xf1, 0x37, 0xb3, 0x27, 0xa1, 0xdf, 0xe3, 0x7b, 0x9b, 0xd8, 0x53, 0x70, 0xd3, 0x33, - 0xda, 0x73, 0x58, 0x17, 0x7b, 0x1a, 0x30, 0x0d, 0x3c, 0x7b, 0x46, 0x3e, 0x1e, 0x13, 0x08, 0xf6, - 0x2c, 0x1e, 0x33, 0x05, 0x3f, 0x64, 0xcf, 0xc9, 0xc7, 0xd0, 0xf5, 0xd8, 0xf3, 0x20, 0x96, 0x11, - 0x8e, 0x07, 0x9e, 0x2f, 0x20, 0x53, 0xd4, 0x94, 0x44, 0x5f, 0x44, 0xac, 0x1e, 0x3f, 0x64, 0x7b, - 0xd5, 0x93, 0x60, 0x2f, 0xa1, 0x67, 0xbd, 0xbc, 0x14, 0x70, 0x1e, 0xb2, 0x97, 0x81, 0xf7, 0x4d, - 0x57, 0xd9, 0x2b, 0xcc, 0x5e, 0x64, 0xcd, 0x1b, 0xc9, 0xb2, 0x3f, 0x43, 0x61, 0xd4, 0x29, 0xba, - 0x8e, 0x17, 0xb2, 0x57, 0xa1, 0x90, 0x73, 0x3d, 0xf6, 0x1a, 0x9e, 0xf2, 0x8e, 0xc7, 0x5e, 0x67, - 0xb4, 0xd6, 0xe6, 0x83, 0x9a, 0x57, 0x70, 0x04, 0xd6, 0xcc, 0x37, 0x50, 0x24, 0x1a, 0x41, 0xbe, - 0xdf, 0xa4, 0x23, 0xd6, 0x4a, 0x0d, 0xe9, 0x32, 0x7c, 0x2b, 0xa6, 0x38, 0xe6, 0x7a, 0x82, 0xbd, - 0x8d, 0x52, 0x1d, 0xf4, 0x4b, 0x6e, 0xc1, 0x29, 0x67, 0xbc, 0x22, 0xbb, 0x22, 0x89, 0x1d, 0x83, - 0x04, 0x36, 0x04, 0xec, 0xca, 0x64, 0x44, 0xe1, 0x3b, 0x7e, 0xc0, 0xae, 0x4a, 0x52, 0xfc, 0x31, - 0xcf, 0x09, 0x66, 0x86, 0x7d, 0xec, 0x4c, 0xb6, 0x26, 0x29, 0x98, 0x46, 0x74, 0xb0, 0x6d, 0x49, - 0x0a, 0xa6, 0x51, 0xb0, 0xda, 0x1e, 0x83, 0xbe, 0x9d, 0xdb, 0x30, 0xcc, 0x76, 0x24, 0xa9, 0x04, - 0x01, 0x99, 0xd7, 0xce, 0xce, 0x24, 0xbd, 0xfd, 0xea, 0x18, 0x6c, 0x77, 0x25, 0xa9, 0xb2, 0xea, - 0xa0, 0x0e, 0x73, 0x35, 0x1c, 0xa8, 0x56, 0x36, 0xc4, 0x9d, 0xd3, 0x35, 0x70, 0xa0, 0x5f, 0x9c, - 0x0a, 0xbc, 0x16, 0x1d, 0x21, 0x5f, 0x0a, 0xb8, 0x0e, 0x6c, 0xe4, 0x2b, 0x58, 0x41, 0xd7, 0x43, - 0x87, 0x5e, 0xc1, 0x0a, 0xb8, 0x01, 0xd9, 0xc8, 0x7a, 0x42, 0xb5, 0x7f, 0x00, 0x05, 0x7a, 0xfb, - 0x2a, 0xe0, 0x87, 0x50, 0x90, 0xd7, 0x31, 0x39, 0xb7, 0xc4, 0x7e, 0x94, 0xa4, 0x9a, 0xc0, 0x6d, - 0x0c, 0x35, 0x7f, 0xac, 0xc5, 0xdf, 0xf1, 0xd1, 0xfe, 0x89, 0x6e, 0x0f, 0xf3, 0x12, 0xb5, 0x7f, - 0x5a, 0xf7, 0x9f, 0x0f, 0x6a, 0x9c, 0xfd, 0x2c, 0x42, 0x12, 0xc0, 0xcf, 0xe3, 0xdd, 0x03, 0xf6, - 0x0b, 0x28, 0xc1, 0xa8, 0xdf, 0x29, 0x87, 0x9c, 0xfd, 0x12, 0x43, 0x22, 0xad, 0x24, 0xf2, 0x2b, - 0x99, 0x01, 0x6d, 0x26, 0xc1, 0x5f, 0xcb, 0xa1, 0xe5, 0x93, 0x22, 0x37, 0xe5, 0x4e, 0x0a, 0x76, - 0xa3, 0x0c, 0xe6, 0x96, 0xa6, 0x14, 0x70, 0x13, 0x72, 0x6c, 0xd8, 0xd0, 0xec, 0x41, 0x27, 0x7f, - 0x97, 0xa4, 0x97, 0x4e, 0x9d, 0x95, 0x11, 0xdc, 0x9b, 0xa4, 0xd7, 0x62, 0x8c, 0x9d, 0x91, 0xed, - 0x86, 0x51, 0x9d, 0xa5, 0x11, 0xec, 0x49, 0xd2, 0xfb, 0x32, 0xc2, 0xd6, 0x48, 0xee, 0x4b, 0xd2, - 0x7b, 0x28, 0xce, 0xda, 0x08, 0xef, 0xd7, 0x99, 0x95, 0x37, 0x6a, 0xbf, 0x41, 0x0f, 0x07, 0xb8, - 0x18, 0x71, 0x02, 0xa7, 0xa2, 0x36, 0x52, 0x37, 0x27, 0xb1, 0xc7, 0xe4, 0x62, 0xdc, 0x09, 0xd8, - 0x2d, 0x68, 0x8c, 0xfa, 0x9b, 0x29, 0xd1, 0xb7, 0xa2, 0x91, 0x93, 0x92, 0xdb, 0x90, 0x54, 0xdc, - 0xf0, 0x98, 0x3a, 0xba, 0x1d, 0xfe, 0x14, 0xa6, 0xb7, 0x5c, 0x77, 0x24, 0xcd, 0x15, 0x1f, 0x2a, - 0xf3, 0x4e, 0x64, 0x4c, 0xb6, 0x51, 0xbe, 0x77, 0x45, 0x00, 0x94, 0xe9, 0xdd, 0x28, 0x2a, 0x09, - 0x28, 0x52, 0xf7, 0x44, 0x74, 0xb0, 0xbb, 0xfb, 0x6d, 0x92, 0xd6, 0x9b, 0xac, 0x47, 0x1e, 0xb7, - 0x35, 0x13, 0xaf, 0xac, 0x27, 0xe7, 0x47, 0xb3, 0xac, 0x06, 0xcd, 0x49, 0xde, 0x77, 0x65, 0x3d, - 0xe5, 0x68, 0xa7, 0xd2, 0x85, 0x93, 0x5d, 0xcd, 0xb2, 0x08, 0x0c, 0xd7, 0xab, 0x95, 0x14, 0x5b, - 0xc3, 0x6b, 0xa4, 0xa7, 0x49, 0xca, 0x1c, 0x85, 0x39, 0xa9, 0x05, 0xda, 0x68, 0x23, 0xd4, 0xc9, - 0x2d, 0x94, 0x02, 0x09, 0xe8, 0x70, 0xa7, 0xe0, 0x44, 0x21, 0x31, 0x15, 0xf2, 0xd4, 0x88, 0x1d, - 0xc2, 0x9e, 0x86, 0xc3, 0x8b, 0xb2, 0xd3, 0xa1, 0x4f, 0x6f, 0x41, 0x87, 0x26, 0x29, 0xd2, 0x19, - 0x2d, 0xa0, 0x31, 0x89, 0x28, 0x67, 0xb6, 0x48, 0x1a, 0x3a, 0xc2, 0x59, 0x38, 0xd2, 0x64, 0x27, - 0x95, 0xf7, 0xb3, 0x95, 0x2e, 0x3c, 0x9f, 0xa3, 0x42, 0x19, 0xaf, 0xe7, 0x46, 0x62, 0xa3, 0x53, - 0xe7, 0x29, 0x75, 0xb9, 0xbd, 0xc7, 0x59, 0xa7, 0xc7, 0x09, 0xf9, 0x91, 0x53, 0x1c, 0xa9, 0x7c, - 0x47, 0x9e, 0x5c, 0x15, 0x82, 0xf8, 0xef, 0xca, 0x13, 0xb2, 0x82, 0x34, 0x8b, 0xbf, 0xc9, 0x13, - 0xb2, 0x42, 0x15, 0x97, 0xf7, 0x62, 0xd6, 0x60, 0xf4, 0xbe, 0x3c, 0x21, 0x6b, 0x6b, 0xcd, 0xeb, - 0x83, 0x98, 0x26, 0xc8, 0x7c, 0x08, 0xaa, 0x19, 0x54, 0x53, 0x30, 0x53, 0x15, 0xec, 0xc2, 0x36, - 0x05, 0xf4, 0x79, 0x12, 0xb8, 0xa8, 0x0d, 0x6f, 0x6d, 0xbf, 0x82, 0xaf, 0x4b, 0xec, 0xe2, 0x36, - 0xdc, 0xf8, 0xf6, 0x7e, 0x93, 0x6d, 0x81, 0x60, 0xc4, 0x09, 0xc3, 0xcd, 0x7e, 0x50, 0x64, 0x97, - 0xb4, 0x61, 0x2a, 0x3b, 0x5e, 0xd1, 0xaf, 0xc8, 0x8b, 0xef, 0x4b, 0xdb, 0xf0, 0x1a, 0x3a, 0x22, - 0x73, 0x28, 0xbb, 0x4c, 0x3f, 0x76, 0xb1, 0xcb, 0x11, 0x60, 0xcc, 0x2b, 0x68, 0x8f, 0x57, 0xb4, - 0xd1, 0x74, 0xab, 0x03, 0xbc, 0x38, 0xc8, 0xbd, 0x92, 0x98, 0x62, 0x57, 0xb6, 0x11, 0xdd, 0x3a, - 0xb7, 0xec, 0x38, 0xbb, 0x4a, 0x43, 0x8a, 0x5d, 0x76, 0x9c, 0x6d, 0x6d, 0xc3, 0xd1, 0xc9, 0x2b, - 0xf8, 0x45, 0xce, 0xb6, 0xa1, 0xd1, 0xcb, 0xd1, 0xd8, 0x0e, 0xaa, 0xb9, 0xa1, 0xc3, 0xd8, 0x0e, - 0x50, 0xed, 0x75, 0x84, 0x33, 0xe1, 0x84, 0x9c, 0x5d, 0xd7, 0x86, 0x9d, 0x02, 0x76, 0x06, 0xfe, - 0xe6, 0x90, 0x5d, 0x0f, 0xea, 0x3d, 0xb5, 0x20, 0xe0, 0x9e, 0x18, 0x0b, 0x79, 0xc0, 0x6e, 0x00, - 0x5f, 0x3c, 0xfe, 0xa0, 0x4d, 0x5e, 0x2b, 0x78, 0x1e, 0xc7, 0x87, 0x8d, 0x6c, 0x2f, 0xfb, 0x21, - 0xa0, 0x41, 0x1c, 0x6f, 0x43, 0x1e, 0x88, 0x6c, 0x2f, 0xfb, 0x11, 0x3a, 0x11, 0x85, 0x68, 0xfa, - 0x67, 0x7b, 0xd9, 0x8f, 0xdb, 0x70, 0x05, 0xcd, 0x83, 0x90, 0x46, 0xe0, 0x27, 0x88, 0x24, 0x2f, - 0xe4, 0x25, 0xf2, 0xd3, 0x36, 0xb9, 0x0d, 0xd9, 0x2c, 0x17, 0x87, 0x9f, 0xb5, 0x51, 0x41, 0xe6, - 0xca, 0x9c, 0x57, 0xd9, 0xbd, 0x6d, 0x72, 0xbf, 0x50, 0x38, 0x9a, 0xed, 0x96, 0xc9, 0xe5, 0x65, - 0xee, 0x84, 0x1c, 0xc8, 0x9e, 0x36, 0x2a, 0x10, 0x7d, 0xe9, 0xe7, 0xcd, 0xc8, 0x5b, 0xdf, 0xfb, - 0xda, 0x68, 0xe0, 0xcd, 0x2d, 0x91, 0x86, 0xef, 0x6f, 0x53, 0x87, 0x67, 0x83, 0x3c, 0x80, 0x2e, - 0xd0, 0x4a, 0x60, 0xa0, 0x07, 0x01, 0xe1, 0xb2, 0x53, 0x43, 0xbf, 0x6f, 0xa3, 0x7a, 0x53, 0xd7, - 0x76, 0x1a, 0xfc, 0x03, 0xf4, 0x70, 0x6b, 0xa6, 0xa1, 0x87, 0xda, 0xe4, 0x74, 0xe7, 0x22, 0x23, - 0x7c, 0x8f, 0xfd, 0xd1, 0x34, 0x87, 0x85, 0xef, 0xb0, 0x3f, 0xb5, 0xc9, 0xc5, 0x81, 0x8b, 0x34, - 0xc4, 0x0f, 0xd7, 0xdb, 0x90, 0x3f, 0x82, 0x41, 0xcb, 0x86, 0xd9, 0x91, 0x4d, 0x87, 0xb3, 0x47, - 0xe1, 0x5d, 0x36, 0xa8, 0xe8, 0x1c, 0xc1, 0x1e, 0x8b, 0x40, 0x43, 0x4e, 0xb5, 0xca, 0x8b, 0xec, - 0xf1, 0xba, 0x49, 0x9a, 0x3d, 0x21, 0x07, 0x6b, 0x2c, 0xdb, 0xcb, 0x9e, 0x44, 0x71, 0x8d, 0xbb, - 0x82, 0x87, 0xe1, 0x11, 0x4e, 0x38, 0xc5, 0x9e, 0x52, 0x8a, 0x90, 0x3e, 0x8d, 0xc0, 0x94, 0xfd, - 0xdc, 0x94, 0x13, 0x14, 0xd9, 0x33, 0x6d, 0xe6, 0x3b, 0x85, 0xeb, 0xe1, 0xad, 0xf6, 0xac, 0x64, - 0x5e, 0x76, 0x8f, 0xe6, 0xd4, 0x7c, 0xb4, 0x15, 0xdb, 0x39, 0xd5, 0x7a, 0xac, 0x15, 0x1b, 0x4a, - 0x5e, 0xe2, 0xd3, 0x55, 0x6a, 0x3f, 0xde, 0x4a, 0x2b, 0x91, 0x6c, 0x8f, 0xe5, 0xfb, 0xbf, 0x45, - 0xd8, 0x13, 0x11, 0x4c, 0xdb, 0x3d, 0xd9, 0x8a, 0xad, 0xa5, 0xc1, 0xb4, 0xee, 0x53, 0xad, 0x94, - 0x5d, 0x89, 0x63, 0xa9, 0x24, 0xf0, 0xe9, 0x56, 0xf9, 0xc6, 0x32, 0xa0, 0xd6, 0x7e, 0xa6, 0x15, - 0x3b, 0x4e, 0x08, 0x46, 0x79, 0xb5, 0xec, 0x14, 0xe0, 0xfc, 0xd9, 0x56, 0x6c, 0x19, 0xa3, 0xb0, - 0xb6, 0x78, 0xae, 0x95, 0x4a, 0x44, 0xf1, 0xad, 0x4d, 0x84, 0x32, 0xc0, 0xf3, 0xad, 0xf2, 0x25, - 0x56, 0x47, 0xb5, 0xfe, 0x0b, 0xe0, 0x43, 0xcb, 0x42, 0xdf, 0xb4, 0x08, 0x9c, 0x02, 0x9d, 0x22, - 0xd8, 0x69, 0xed, 0x1a, 0x1c, 0xf3, 0x8e, 0xa9, 0xf9, 0x02, 0x41, 0x4f, 0x6f, 0xa7, 0xc4, 0x11, - 0x98, 0x9f, 0xa9, 0x02, 0x39, 0xa3, 0x5d, 0x6f, 0x2f, 0x72, 0x1c, 0x76, 0x67, 0xb6, 0xeb, 0x4f, - 0x29, 0x72, 0x42, 0x10, 0x76, 0x96, 0xf1, 0x15, 0xe9, 0xc0, 0xd9, 0x46, 0x71, 0x94, 0x57, 0xfc, - 0x4d, 0xc0, 0xce, 0x69, 0xd7, 0x9f, 0x66, 0x86, 0x78, 0x50, 0x02, 0x74, 0x6e, 0x7b, 0xfc, 0xd3, - 0x0c, 0x61, 0xe7, 0xb5, 0xc7, 0xbe, 0xe0, 0x10, 0x74, 0x7e, 0x3b, 0x65, 0x89, 0xa0, 0x71, 0xa7, - 0xec, 0x16, 0x41, 0xc8, 0x2d, 0xb1, 0xef, 0xb7, 0x53, 0x2a, 0xa8, 0xd5, 0xe3, 0x7b, 0xc2, 0x71, - 0xbd, 0x90, 0xd0, 0x0b, 0xda, 0x29, 0xd7, 0xf5, 0x2f, 0x40, 0xd5, 0x2a, 0x97, 0x7b, 0xa1, 0x0b, - 0xe3, 0x82, 0x7a, 0x0f, 0x2e, 0x6a, 0xa7, 0xa1, 0x34, 0xc4, 0x46, 0x1c, 0x51, 0x98, 0x22, 0xfc, - 0xe2, 0x76, 0x1a, 0x85, 0x3a, 0x1e, 0xf0, 0x90, 0x07, 0xb2, 0x2f, 0x5b, 0xda, 0x29, 0xdf, 0xd1, - 0xd0, 0x23, 0x8e, 0x80, 0xd1, 0x25, 0xa6, 0x4b, 0x23, 0x01, 0x17, 0x02, 0xfc, 0x2f, 0x35, 0x5d, - 0xda, 0xa8, 0x93, 0x7d, 0x99, 0x51, 0xcb, 0x71, 0x27, 0x90, 0xf1, 0x2e, 0x37, 0x04, 0x73, 0xc2, - 0x0f, 0x1c, 0x4a, 0xd1, 0xf7, 0xa0, 0x7c, 0x85, 0xb1, 0xef, 0xe5, 0x55, 0x19, 0xe6, 0x4a, 0x33, - 0x58, 0xff, 0xce, 0x67, 0xd0, 0xef, 0xab, 0x8c, 0x47, 0xb9, 0xd2, 0x12, 0xb6, 0xd5, 0x24, 0x8e, - 0xb4, 0x70, 0x0e, 0x20, 0x78, 0x9b, 0x09, 0x84, 0x7c, 0xca, 0xa5, 0x80, 0x04, 0xdb, 0xe3, 0x82, - 0x0d, 0x62, 0x8a, 0x07, 0xb0, 0xd8, 0xd1, 0x48, 0xad, 0x3f, 0xe0, 0xa0, 0xb6, 0xd3, 0x8c, 0xc1, - 0x10, 0xaf, 0x4c, 0xf0, 0x60, 0xc3, 0x24, 0xa1, 0xbb, 0x40, 0x78, 0x9c, 0x17, 0x32, 0x61, 0x9e, - 0x4f, 0x23, 0xc9, 0x1f, 0xa2, 0x4c, 0xc6, 0x79, 0xa1, 0x3f, 0xf0, 0x2b, 0x1a, 0xfc, 0x08, 0x05, - 0x36, 0xce, 0x0b, 0xbd, 0x6e, 0x05, 0x71, 0x3e, 0x06, 0xe1, 0x71, 0x5e, 0x18, 0x3c, 0xb4, 0xd7, - 0x0d, 0x85, 0xe3, 0xc9, 0x72, 0xfa, 0xc4, 0xc0, 0x5d, 0x51, 0xf8, 0xd3, 0x76, 0x3a, 0x22, 0x8f, - 0xf3, 0xc2, 0x30, 0x2f, 0x39, 0xc2, 0xdd, 0xc4, 0xb3, 0x9e, 0xc7, 0x83, 0x91, 0xc0, 0x2f, 0xd6, - 0x64, 0x2d, 0x7d, 0x86, 0x11, 0x1c, 0xe7, 0x85, 0x1e, 0x3f, 0x74, 0x3d, 0x1e, 0xb5, 0xfd, 0x5c, - 0x53, 0x1c, 0xec, 0x1a, 0xf6, 0x83, 0x0a, 0x41, 0x5f, 0xb4, 0xdb, 0x6b, 0xad, 0x03, 0xa3, 0xdf, - 0x34, 0xe2, 0x1f, 0x58, 0x6f, 0xe9, 0xa0, 0xfd, 0x20, 0xc9, 0x63, 0xb8, 0xbc, 0xa2, 0xbf, 0xb5, - 0xc3, 0x3e, 0xc8, 0x6a, 0x9a, 0x43, 0x88, 0x37, 0xff, 0x6d, 0x1d, 0xda, 0x75, 0x83, 0x54, 0xbd, - 0xee, 0x6f, 0xef, 0xa0, 0x9e, 0xcc, 0x21, 0xd7, 0x9b, 0x84, 0x3b, 0xfe, 0x91, 0x7b, 0x6c, 0x0d, - 0xee, 0xec, 0xb0, 0x5b, 0xac, 0xaf, 0xcc, 0x65, 0xae, 0x77, 0x09, 0x77, 0xfd, 0x23, 0x7b, 0x6c, - 0x18, 0xee, 0xee, 0xb0, 0xff, 0x8f, 0xd5, 0x32, 0x87, 0x34, 0x9e, 0x80, 0x7b, 0x3a, 0x68, 0xa2, - 0x8c, 0x94, 0x6b, 0x0d, 0xf8, 0x85, 0x1d, 0xb8, 0x05, 0xa2, 0x73, 0x50, 0x5c, 0x70, 0x51, 0x07, - 0x6d, 0xc8, 0xf5, 0xdd, 0x57, 0x5c, 0x76, 0x31, 0x64, 0xf1, 0x78, 0xfa, 0xd5, 0xb3, 0x05, 0x32, - 0x7d, 0xeb, 0x1f, 0xb7, 0xbb, 0xa4, 0x83, 0x2a, 0x6e, 0x30, 0x1f, 0x47, 0x2f, 0x95, 0x68, 0x5f, - 0x1c, 0xbd, 0x0c, 0xe8, 0x40, 0x83, 0xee, 0xe5, 0xf0, 0xae, 0x2f, 0xb7, 0xe3, 0xb2, 0x2b, 0xd0, - 0x15, 0xdc, 0x50, 0xc7, 0x05, 0x57, 0x4a, 0x57, 0x0d, 0x01, 0xae, 0x02, 0xda, 0xb7, 0x31, 0x8e, - 0x6e, 0x05, 0x3a, 0xdc, 0xa0, 0xbb, 0xad, 0x83, 0xd6, 0x0c, 0x79, 0x61, 0x1a, 0x97, 0x6c, 0x87, - 0x24, 0x86, 0xa9, 0xf3, 0xdc, 0x8e, 0xb9, 0x24, 0x38, 0x75, 0xed, 0xec, 0x50, 0xa5, 0x1d, 0x95, - 0xc8, 0x83, 0xd5, 0x2e, 0x54, 0xc3, 0x1c, 0x46, 0xe6, 0xf0, 0x72, 0x75, 0x87, 0xdd, 0x6a, 0x1d, - 0x34, 0x97, 0xb1, 0x51, 0xb9, 0x06, 0x91, 0xe5, 0x76, 0x37, 0xce, 0xf6, 0x5a, 0xf4, 0x2e, 0x3b, - 0x19, 0x47, 0xaf, 0x93, 0x43, 0xa6, 0xb6, 0xa1, 0x71, 0xd9, 0xf5, 0x1d, 0x38, 0x35, 0x3a, 0x82, - 0xf7, 0xfb, 0x41, 0xc5, 0xc1, 0xd4, 0x7c, 0xb7, 0x93, 0x16, 0x30, 0xc2, 0x06, 0x5d, 0xc1, 0x03, - 0xda, 0x07, 0x77, 0xaa, 0xfd, 0x1c, 0xef, 0x75, 0x27, 0x27, 0xd9, 0x7b, 0x9d, 0xfa, 0x62, 0x9a, - 0x4a, 0x1c, 0xd0, 0xfb, 0x9d, 0x34, 0x38, 0xd4, 0x94, 0xd3, 0xc6, 0x08, 0x3e, 0xe8, 0xc4, 0x49, - 0x4d, 0x15, 0x7b, 0x83, 0xf0, 0xc3, 0x4e, 0xfb, 0xab, 0x56, 0x52, 0x0b, 0xf5, 0x5f, 0x23, 0xfe, - 0x08, 0x4e, 0xeb, 0x36, 0x46, 0xf0, 0x31, 0x9c, 0x4a, 0xc1, 0x2c, 0xab, 0x4f, 0x3a, 0x29, 0xfd, - 0x6a, 0xe5, 0x8c, 0xc7, 0xfb, 0xb4, 0x93, 0x16, 0x2b, 0xed, 0xca, 0xc0, 0x9f, 0x75, 0xd2, 0x86, - 0x86, 0xba, 0xc7, 0x3e, 0xc7, 0xe3, 0x11, 0x7e, 0x2d, 0x60, 0x5f, 0x74, 0xe2, 0xaa, 0xd8, 0xf5, - 0x6a, 0x82, 0xb3, 0x2f, 0x3b, 0xe5, 0xa9, 0xb0, 0xe0, 0x7b, 0x45, 0xf6, 0x77, 0x24, 0x68, 0xc8, - 0x2d, 0x04, 0xbe, 0x42, 0x8e, 0x4d, 0xd1, 0x36, 0x72, 0xc8, 0xf7, 0xc4, 0x14, 0x3b, 0x2e, 0x85, - 0xdb, 0x73, 0x7a, 0x1e, 0x76, 0x2a, 0x9c, 0x1d, 0x9f, 0xc2, 0x6d, 0xbc, 0xbf, 0x99, 0x06, 0x30, - 0x13, 0x94, 0xd8, 0x09, 0x29, 0xdc, 0xf5, 0x4b, 0xc0, 0xaf, 0x09, 0xc2, 0x4e, 0x4c, 0xe1, 0xba, - 0xc7, 0x99, 0x81, 0xc9, 0x49, 0x30, 0xe9, 0x75, 0x66, 0x36, 0x4c, 0x4a, 0x9f, 0x27, 0xc3, 0x27, - 0x80, 0x23, 0x39, 0x3f, 0x9a, 0x9d, 0x52, 0x6f, 0xff, 0x07, 0x77, 0x02, 0x76, 0x6a, 0x8a, 0x46, - 0x84, 0x44, 0xe4, 0x73, 0x88, 0x76, 0xe3, 0xa7, 0xa5, 0xa8, 0x16, 0x34, 0xe4, 0xd7, 0x04, 0xd0, - 0xd3, 0x11, 0x87, 0xd0, 0x5e, 0x67, 0x86, 0x9d, 0x81, 0x38, 0xd4, 0x52, 0x7e, 0xce, 0x4c, 0x51, - 0xf7, 0xf1, 0x78, 0x56, 0x8a, 0x72, 0x45, 0x8f, 0x31, 0xb7, 0x67, 0xa7, 0xa8, 0xf8, 0xa2, 0xb0, - 0x76, 0x7d, 0x0e, 0x38, 0x0d, 0x70, 0x21, 0x2b, 0x89, 0x9d, 0x9b, 0xc2, 0x66, 0x76, 0x26, 0xa4, - 0xc4, 0xe2, 0xd2, 0x2e, 0xac, 0xb2, 0xf3, 0x52, 0xb4, 0x4e, 0x45, 0x40, 0xbf, 0x26, 0x08, 0x3f, - 0x3f, 0x15, 0x39, 0x12, 0x60, 0x24, 0xbe, 0x0f, 0xfe, 0x0a, 0xa1, 0xa1, 0x5a, 0x47, 0x79, 0xba, - 0xa0, 0x11, 0xc5, 0x85, 0xda, 0x85, 0xa0, 0x8d, 0xf5, 0xf6, 0xa2, 0x94, 0xdc, 0xf1, 0x57, 0x4c, - 0xf1, 0x5e, 0x8c, 0x2e, 0x8f, 0xe5, 0x7b, 0xe0, 0x76, 0x0b, 0xf8, 0x8f, 0xe5, 0x7b, 0x48, 0x25, - 0x14, 0x4e, 0xa5, 0xaa, 0x87, 0xe5, 0x92, 0x14, 0x15, 0x55, 0xa3, 0x44, 0x8d, 0xcf, 0xa5, 0x10, - 0x66, 0x8a, 0x45, 0x72, 0x22, 0xb0, 0x17, 0x2f, 0xd6, 0x3f, 0xf5, 0xa4, 0xa8, 0xe2, 0xe2, 0x42, - 0xf5, 0xf6, 0xb8, 0x1c, 0xe1, 0x32, 0xc5, 0x22, 0x8a, 0xcd, 0x11, 0x28, 0x3a, 0xcc, 0xe2, 0x2b, - 0xb4, 0x91, 0xde, 0xee, 0xd7, 0xfd, 0x5d, 0x99, 0xa2, 0xba, 0x8f, 0x8a, 0x94, 0xb7, 0xab, 0x90, - 0x3d, 0xe5, 0x4d, 0x62, 0xf0, 0xb5, 0xd5, 0xb0, 0x33, 0x27, 0x91, 0xba, 0xb7, 0x6d, 0x86, 0x5d, - 0x5d, 0xa8, 0xfc, 0x6d, 0x8f, 0xb1, 0x53, 0x62, 0xb9, 0xba, 0x69, 0x0a, 0xc4, 0x39, 0xea, 0x6d, - 0x27, 0xca, 0xa2, 0x2e, 0x50, 0x9e, 0x76, 0x81, 0x41, 0xae, 0x36, 0x31, 0x57, 0x7e, 0xae, 0x06, - 0x83, 0xb8, 0x50, 0xd9, 0x5d, 0x03, 0x06, 0xb9, 0xda, 0xc4, 0xac, 0xfc, 0x5c, 0xab, 0x8d, 0x66, - 0xe7, 0xe7, 0x3a, 0x90, 0x8b, 0x8a, 0x94, 0xb7, 0xeb, 0x65, 0x75, 0x49, 0x6f, 0x91, 0xfc, 0xdc, - 0x60, 0xd8, 0xcd, 0x91, 0x9f, 0x1f, 0x18, 0x76, 0xb3, 0xf2, 0xf3, 0xc3, 0x18, 0xbb, 0x68, 0x7e, - 0x7e, 0xa4, 0x29, 0x34, 0xe6, 0xe7, 0xc7, 0xc8, 0x4f, 0x5d, 0xa0, 0x3c, 0xfd, 0x04, 0x41, 0xc6, - 0x3c, 0x77, 0xda, 0x54, 0x97, 0x2a, 0x62, 0xf6, 0x53, 0x58, 0xc4, 0x44, 0xb4, 0x6b, 0xf9, 0xd9, - 0x6c, 0xb8, 0x97, 0x17, 0xd8, 0xcf, 0x53, 0xf2, 0xb7, 0x63, 0xde, 0x26, 0x1e, 0x88, 0xfc, 0xf7, - 0xd8, 0x2f, 0x52, 0xf8, 0x10, 0xe7, 0x1c, 0x8d, 0xec, 0xb1, 0x5f, 0x9a, 0x26, 0x66, 0xc3, 0xaf, - 0xa0, 0x3d, 0xc2, 0x03, 0xd7, 0x2f, 0x66, 0x8a, 0x45, 0xf6, 0x6b, 0x4c, 0x78, 0xd9, 0xc6, 0xd2, - 0xf7, 0x1b, 0x4c, 0x8e, 0x8d, 0x35, 0x27, 0x10, 0x3c, 0x60, 0x37, 0x42, 0x3d, 0xc7, 0x0b, 0x79, - 0x1f, 0xe6, 0x37, 0xa5, 0xe4, 0x01, 0xae, 0xc2, 0xf3, 0xb4, 0xd2, 0xb1, 0x9b, 0x53, 0xfa, 0x28, - 0x0a, 0x3e, 0xe4, 0xf1, 0x96, 0x14, 0x2d, 0x8c, 0x79, 0xbf, 0xd7, 0x99, 0x09, 0xd9, 0xad, 0x52, - 0x5f, 0xad, 0x8a, 0x21, 0xbb, 0x0d, 0x4b, 0x80, 0x9a, 0x52, 0x7a, 0x9e, 0xdd, 0x8e, 0x41, 0x8a, - 0x80, 0x6a, 0x8a, 0xdd, 0x81, 0x65, 0xd1, 0x38, 0xc7, 0xc4, 0xbe, 0x13, 0x0e, 0x0c, 0x26, 0xaf, - 0xcb, 0xef, 0x4a, 0xe9, 0x55, 0x1c, 0xa0, 0x9e, 0xe7, 0x77, 0xa3, 0x2b, 0x83, 0x4e, 0x28, 0x68, - 0x69, 0xbb, 0x07, 0xde, 0x72, 0x22, 0x20, 0x6a, 0x42, 0x26, 0xe7, 0xb7, 0xb2, 0x3c, 0xa2, 0x18, - 0x55, 0x23, 0xfb, 0x5d, 0x03, 0xae, 0xc7, 0xf2, 0x5e, 0x04, 0xa2, 0x5d, 0xb1, 0x1e, 0x06, 0x90, - 0xda, 0x3d, 0x0b, 0x26, 0x5e, 0x6c, 0x0f, 0x96, 0x26, 0x75, 0x94, 0x33, 0xbe, 0xef, 0x8b, 0xa1, - 0xda, 0xf3, 0xfd, 0x7a, 0xe2, 0x91, 0x5e, 0xf4, 0x55, 0xc5, 0x1e, 0x88, 0xce, 0x2f, 0x75, 0xe5, - 0xec, 0x09, 0xf6, 0x60, 0x74, 0x89, 0x51, 0x2f, 0x3e, 0xb5, 0xff, 0xfc, 0x7d, 0xd4, 0x22, 0xeb, - 0xe9, 0x0f, 0xfa, 0x7f, 0x40, 0x02, 0xea, 0x30, 0x79, 0x79, 0x28, 0x45, 0x3b, 0x01, 0x85, 0x69, - 0x8a, 0x4a, 0xff, 0x8f, 0xd1, 0x19, 0xaf, 0x65, 0xf8, 0x40, 0xab, 0x27, 0xc1, 0x2c, 0xae, 0x0f, - 0x47, 0x6b, 0xbd, 0xce, 0xf5, 0x91, 0xe8, 0x74, 0x8f, 0x73, 0x7d, 0x34, 0x6a, 0x51, 0xe7, 0xfa, - 0x98, 0x1c, 0x2c, 0x03, 0x93, 0x97, 0xc7, 0xc1, 0x55, 0x61, 0x0d, 0x5c, 0x9f, 0x88, 0xce, 0xbe, - 0x28, 0xd7, 0x27, 0x51, 0xfe, 0x34, 0x34, 0xa8, 0xc7, 0xa7, 0x52, 0xfa, 0x96, 0x5e, 0xbd, 0x93, - 0x9e, 0x8e, 0xd7, 0x18, 0xa6, 0xc0, 0x33, 0x7a, 0xd1, 0xa8, 0xd3, 0xc5, 0xc1, 0xe0, 0x59, 0xf9, - 0xfe, 0x32, 0xa4, 0x00, 0x3e, 0x17, 0x55, 0xce, 0x7a, 0xe6, 0x1b, 0xc6, 0xf3, 0xd1, 0x24, 0x69, - 0x46, 0xb0, 0x78, 0x21, 0xba, 0x32, 0x6a, 0x89, 0x36, 0x7b, 0x31, 0xd6, 0xc9, 0xd8, 0x26, 0x89, - 0xed, 0x8d, 0x75, 0x52, 0x7f, 0xa2, 0xf0, 0x04, 0x7b, 0x29, 0x16, 0x4b, 0x09, 0x10, 0xeb, 0xe5, - 0x58, 0x2c, 0xbd, 0xad, 0x52, 0xb1, 0x5e, 0xd1, 0x2f, 0x8f, 0x86, 0x7e, 0xfe, 0x19, 0xfd, 0xac, - 0x17, 0x0a, 0xc0, 0x57, 0xa3, 0xca, 0x91, 0x7e, 0xbe, 0x16, 0x2d, 0xdc, 0x58, 0x3f, 0x5f, 0x8f, - 0xbe, 0x21, 0x1b, 0xfb, 0xf9, 0x46, 0xac, 0xf0, 0xe2, 0xfd, 0x7c, 0x33, 0x56, 0x78, 0x91, 0x7e, - 0xbe, 0x15, 0x8b, 0x15, 0xed, 0xe7, 0xdb, 0xb1, 0x58, 0x0d, 0xfd, 0xfc, 0x4b, 0x8a, 0x0e, 0x74, - 0x0d, 0xf3, 0x90, 0x4a, 0x42, 0xc5, 0xfb, 0x6b, 0xb4, 0x6b, 0xe4, 0x4e, 0xe1, 0xef, 0x44, 0xf3, - 0x80, 0x8f, 0x0e, 0x9e, 0x60, 0xef, 0x62, 0xfa, 0x46, 0x40, 0xc4, 0xff, 0x5b, 0x94, 0x32, 0x21, - 0x3a, 0xf6, 0x7b, 0xd1, 0x69, 0xaa, 0x40, 0xe5, 0xfe, 0xfd, 0x68, 0x58, 0xfd, 0xe5, 0xc2, 0x13, - 0xec, 0x83, 0x58, 0xf7, 0x25, 0x8e, 0x20, 0x1f, 0xc6, 0x72, 0x26, 0x05, 0x3a, 0xce, 0x47, 0xd1, - 0x32, 0x8c, 0xf4, 0xe1, 0xe3, 0x68, 0xcd, 0xea, 0x3e, 0x7c, 0x82, 0x3e, 0x44, 0x40, 0xb8, 0xff, - 0x34, 0x5a, 0x5e, 0xd1, 0x3e, 0x7c, 0x16, 0x9d, 0xbe, 0xf1, 0x3e, 0x7c, 0x1e, 0x0d, 0x1b, 0xe9, - 0xc3, 0x17, 0xb1, 0x52, 0x8d, 0xf4, 0xe1, 0xcb, 0x58, 0x7d, 0xc7, 0xfb, 0xf0, 0xf7, 0x94, 0x7d, - 0xb0, 0xf5, 0xd5, 0x39, 0x6b, 0xc2, 0xac, 0x9e, 0xc7, 0xae, 0xa3, 0xc3, 0xf7, 0xec, 0xda, 0x30, - 0x0a, 0xc7, 0xad, 0xa3, 0x03, 0xd5, 0x1c, 0x35, 0x62, 0x34, 0x8e, 0x5f, 0x67, 0xb7, 0x59, 0x6b, - 0xe7, 0xae, 0x15, 0xa3, 0x74, 0xc2, 0x3a, 0xe2, 0x32, 0xe7, 0x3c, 0x34, 0x3a, 0x27, 0x82, 0xcb, - 0xec, 0xf9, 0x68, 0x14, 0x4e, 0x02, 0x97, 0x39, 0xe6, 0xa5, 0xd1, 0x38, 0x19, 0x5c, 0xe6, 0x9e, - 0x9f, 0x46, 0xe9, 0x94, 0x75, 0xea, 0xcb, 0x9f, 0xba, 0x96, 0x7f, 0x32, 0x6d, 0x2f, 0xb6, 0xe6, - 0xaf, 0x77, 0x3d, 0xf6, 0x54, 0x9a, 0x4e, 0x19, 0x99, 0x5c, 0x4f, 0x36, 0xcb, 0x9e, 0x4e, 0xe3, - 0xab, 0xf4, 0x94, 0x13, 0xb0, 0x67, 0xd2, 0xf8, 0x4a, 0x31, 0xe5, 0x04, 0xd2, 0x62, 0x2c, 0xdf, - 0xff, 0x2d, 0xf6, 0x6c, 0x9a, 0xde, 0xcb, 0xea, 0xe7, 0xe0, 0xcf, 0xa5, 0xe5, 0x37, 0x05, 0x6a, - 0x1c, 0x99, 0x63, 0xcf, 0xa7, 0xe9, 0x4d, 0xa9, 0xf6, 0x10, 0xec, 0x05, 0xf8, 0xef, 0x2b, 0x0b, - 0xf6, 0x62, 0x9a, 0x56, 0xc7, 0xbe, 0xe9, 0xaa, 0x1f, 0x88, 0x1c, 0x17, 0x87, 0xd1, 0x5b, 0x6d, - 0x6f, 0x1c, 0x3b, 0x9c, 0xb0, 0x97, 0xe2, 0xd8, 0x37, 0x09, 0x7b, 0x19, 0x21, 0xf0, 0x5f, 0x13, - 0x54, 0x11, 0xaf, 0xa4, 0x71, 0xe5, 0x4f, 0x4d, 0xb9, 0xc8, 0xa4, 0x69, 0x5b, 0x8e, 0xb6, 0xaa, - 0xa5, 0x57, 0x95, 0x86, 0x57, 0xcc, 0x7a, 0x39, 0x2e, 0xd8, 0x6b, 0x20, 0xac, 0xd6, 0xe9, 0xd7, - 0xd3, 0x78, 0xc5, 0xa2, 0x41, 0x5b, 0x84, 0x41, 0xbf, 0xe0, 0x94, 0x39, 0x7b, 0x23, 0x8d, 0x1f, - 0x65, 0x07, 0x7e, 0x65, 0xbd, 0x13, 0xf2, 0xf4, 0xe1, 0xec, 0x4d, 0x38, 0x39, 0x82, 0x4f, 0x67, - 0x3d, 0xec, 0x21, 0xde, 0xd2, 0xed, 0x9c, 0x08, 0xa8, 0xfd, 0x76, 0x5a, 0x7e, 0xfb, 0x0a, 0x79, - 0x20, 0x90, 0x96, 0xbf, 0xa4, 0xe5, 0xb7, 0x2f, 0x02, 0xd8, 0x5f, 0xd3, 0xf2, 0x62, 0x5c, 0xdd, - 0xc9, 0xb2, 0x77, 0xd2, 0xf2, 0x73, 0x5b, 0x28, 0x02, 0xf6, 0x2e, 0x9e, 0x07, 0xf3, 0x81, 0x5b, - 0x61, 0x7f, 0x4b, 0xcb, 0xdf, 0xd7, 0x4d, 0x4a, 0x1f, 0xef, 0xa5, 0xe5, 0xef, 0xc5, 0x27, 0x05, - 0x7b, 0x1f, 0xee, 0xd4, 0x40, 0x7d, 0x90, 0xc6, 0x45, 0x87, 0x5f, 0x70, 0x04, 0x76, 0x04, 0x21, - 0xb4, 0x3f, 0x8c, 0xa0, 0x87, 0x19, 0xf4, 0x23, 0xe4, 0x23, 0xa2, 0xcb, 0x3e, 0x8e, 0x20, 0xd0, - 0x63, 0x9f, 0x48, 0x0a, 0xfe, 0x66, 0x1e, 0xb0, 0x4f, 0x25, 0x85, 0xaa, 0x53, 0x84, 0xf9, 0x67, - 0x92, 0x42, 0xd5, 0x29, 0xb2, 0xcf, 0x31, 0x98, 0xb4, 0xe3, 0xa3, 0x2c, 0x7e, 0x01, 0x42, 0x1b, - 0x0a, 0x78, 0x85, 0x7e, 0x89, 0xfe, 0x6d, 0x28, 0x98, 0xdf, 0xf8, 0x61, 0xa4, 0x37, 0x04, 0x45, - 0x76, 0x6c, 0x37, 0xb9, 0xc6, 0x95, 0x27, 0x3b, 0x0e, 0xcf, 0xa3, 0xe8, 0xe9, 0xf1, 0xdd, 0xf8, - 0x12, 0xca, 0xab, 0xdc, 0x11, 0xec, 0x84, 0x6e, 0xfc, 0xc2, 0x40, 0x5e, 0x1d, 0xb3, 0x13, 0xbb, - 0xe5, 0x27, 0x91, 0x4d, 0x3c, 0x08, 0x71, 0xe5, 0xcd, 0x4e, 0x52, 0x72, 0x20, 0xec, 0xe4, 0x6e, - 0xdc, 0xd6, 0xbb, 0xa5, 0x29, 0x99, 0xa5, 0x53, 0xa4, 0x5b, 0x6a, 0xb3, 0x53, 0xbb, 0xf1, 0xd1, - 0x45, 0xb3, 0x3f, 0xad, 0x1b, 0xbf, 0xc0, 0x20, 0xf6, 0xa7, 0x43, 0x2b, 0x57, 0xa5, 0x08, 0x67, - 0x74, 0xcb, 0x7f, 0x3c, 0x08, 0x0a, 0x95, 0x2a, 0x3b, 0xb3, 0x5b, 0x2d, 0x29, 0x21, 0xb8, 0xd7, - 0xf3, 0x79, 0x56, 0x5c, 0x50, 0x4f, 0xe9, 0xd9, 0xdd, 0x6a, 0xed, 0x8b, 0x58, 0xb0, 0x73, 0xe2, - 0xa0, 0x4c, 0xec, 0xb9, 0x71, 0x30, 0xeb, 0x15, 0xf9, 0x34, 0x3b, 0x0f, 0x1c, 0xf3, 0xbe, 0xaa, - 0xac, 0xf3, 0x65, 0x33, 0x70, 0x2b, 0xd8, 0xf3, 0x7d, 0x1f, 0xbd, 0xa3, 0xa6, 0xf4, 0x7b, 0x81, - 0x69, 0x4b, 0x97, 0x17, 0xa2, 0x1f, 0x63, 0xde, 0x11, 0x7c, 0x9a, 0x5d, 0x04, 0xd9, 0x58, 0xb5, - 0xca, 0x65, 0x59, 0x5d, 0x2c, 0x65, 0xd4, 0x66, 0x5b, 0xba, 0xa9, 0x20, 0xeb, 0x73, 0x95, 0x5d, - 0xd2, 0x2d, 0x7f, 0x45, 0xb1, 0x59, 0x29, 0x5f, 0xda, 0x4d, 0x95, 0x6f, 0x7e, 0x09, 0x6a, 0x8e, - 0x98, 0xdd, 0xf6, 0x41, 0x56, 0x93, 0x86, 0x7b, 0x2a, 0xd5, 0xd8, 0x6f, 0xc1, 0x2f, 0xef, 0xa6, - 0x09, 0x29, 0x7f, 0xe1, 0xa9, 0x2d, 0xae, 0xe8, 0xa6, 0x65, 0x1c, 0x58, 0xa3, 0xfa, 0x95, 0xba, - 0xab, 0xae, 0xe7, 0x04, 0x33, 0xec, 0xaa, 0x6e, 0x33, 0xab, 0x24, 0xb0, 0xf5, 0x1f, 0x05, 0xc3, - 0x2e, 0x7a, 0xdb, 0x9c, 0x8e, 0x21, 0xda, 0xde, 0x1d, 0xfd, 0x6d, 0x2a, 0xa0, 0x1d, 0xdd, 0xe6, - 0x77, 0xa5, 0x68, 0xef, 0xec, 0x3e, 0x84, 0x5b, 0x2b, 0x1b, 0xfe, 0x71, 0x09, 0xff, 0x06, 0xe1, - 0x57, 0xaa, 0x65, 0x2e, 0x38, 0xee, 0x12, 0xf6, 0xb1, 0x97, 0x63, 0x6d, 0x70, 0xca, 0x68, 0x26, - 0x48, 0x61, 0xc4, 0x09, 0x84, 0xeb, 0x94, 0x0f, 0x05, 0x32, 0x2f, 0x82, 0x74, 0x01, 0x99, 0x4f, - 0x26, 0xbd, 0xbc, 0x58, 0xab, 0xa2, 0xb9, 0x60, 0xfd, 0xd7, 0x77, 0xef, 0x5d, 0x9b, 0x78, 0x68, - 0xef, 0xda, 0xc4, 0x0b, 0x7b, 0xd7, 0x26, 0xb6, 0xbc, 0xb4, 0x76, 0x1f, 0x6b, 0x75, 0xc1, 0xaf, - 0x74, 0x56, 0x5d, 0xaf, 0x54, 0x70, 0xaa, 0x9d, 0xc2, 0x2d, 0x4e, 0xe0, 0xdf, 0x93, 0x46, 0x12, - 0xff, 0x1b, 0x00, 0x00, 0xff, 0xff, 0x89, 0x80, 0x6a, 0xe9, 0xcc, 0x37, 0x00, 0x00, + // 5880 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x74, 0x7b, 0x67, 0x78, 0x24, 0xc5, + 0xb9, 0x2e, 0xb3, 0x81, 0xdd, 0xed, 0x4d, 0x45, 0xb3, 0x8b, 0x86, 0x35, 0x5e, 0x49, 0xc8, 0xf7, + 0x4a, 0xc6, 0xf7, 0x6a, 0x16, 0x81, 0x47, 0xfe, 0x71, 0xd2, 0xac, 0x12, 0xe3, 0x23, 0x69, 0xb5, + 0x9a, 0x91, 0xf0, 0xf9, 0xc5, 0xd3, 0x9a, 0x29, 0x8d, 0xda, 0xcc, 0x74, 0x0f, 0xdd, 0x35, 0xbb, + 0x92, 0x4f, 0x78, 0xc8, 0x39, 0xdb, 0xc0, 0x92, 0x37, 0x12, 0x9d, 0x33, 0x39, 0xda, 0xec, 0x12, + 0x6c, 0x30, 0x39, 0xc3, 0x02, 0x26, 0xdb, 0x60, 0x72, 0xf4, 0x79, 0xbe, 0xb7, 0xc2, 0x74, 0x8f, + 0xe4, 0x5f, 0xea, 0x7a, 0xbf, 0xf4, 0xd6, 0x57, 0x5f, 0x55, 0x57, 0x55, 0x8f, 0x2c, 0xc6, 0xa7, + 0xab, 0x01, 0x0f, 0x43, 0xd7, 0xf7, 0x3a, 0xab, 0x81, 0x2f, 0x7c, 0x7b, 0x81, 0x70, 0xab, 0x13, + 0x6b, 0x56, 0x54, 0xb8, 0x70, 0x8a, 0x8e, 0x70, 0x24, 0xba, 0x66, 0x55, 0xc9, 0x2f, 0xf9, 0x78, + 0x4c, 0xd1, 0x93, 0x44, 0x0f, 0x7e, 0x3b, 0x61, 0x2d, 0xe9, 0x77, 0x79, 0xb9, 0x98, 0x9f, 0xa9, + 0x72, 0x7b, 0x95, 0x35, 0x4f, 0x54, 0x93, 0x89, 0x96, 0x44, 0xc7, 0xc2, 0xf5, 0x0b, 0x76, 0x3f, + 0xd7, 0xbc, 0xcf, 0xe8, 0x3c, 0x51, 0xb5, 0x93, 0xd6, 0x82, 0xc9, 0xb2, 0x53, 0x4a, 0xce, 0x6b, + 0x49, 0x74, 0x2c, 0x57, 0x38, 0x10, 0x29, 0xe1, 0x5e, 0x72, 0x7e, 0xc4, 0x02, 0x88, 0xbd, 0xd6, + 0x5a, 0x54, 0xe4, 0x05, 0xb7, 0xe2, 0x94, 0x93, 0x0b, 0x22, 0x42, 0x0d, 0x92, 0xbc, 0xe0, 0x97, + 0xcb, 0x8e, 0xe0, 0xc9, 0x85, 0x51, 0xb9, 0x02, 0x21, 0x9f, 0x72, 0x82, 0x90, 0x8b, 0xe4, 0xbe, + 0x2d, 0x89, 0x8e, 0x25, 0x46, 0x2e, 0x41, 0x7b, 0x8d, 0xb5, 0x90, 0x97, 0x79, 0x25, 0x4c, 0x2e, + 0x6a, 0x99, 0x6f, 0xa4, 0x12, 0x22, 0x99, 0x13, 0x04, 0xce, 0x4c, 0x72, 0x71, 0x4b, 0xa2, 0x63, + 0xb1, 0x96, 0x01, 0x3a, 0xf8, 0x9d, 0x79, 0xd6, 0x82, 0xbe, 0xe9, 0x6a, 0x60, 0x7f, 0xcd, 0x74, + 0x75, 0x45, 0xd7, 0x8a, 0x4e, 0xca, 0x58, 0x27, 0xe1, 0x94, 0x86, 0x48, 0xd7, 0x99, 0x35, 0x7f, + 0x93, 0x53, 0x46, 0xcf, 0x97, 0x8d, 0xd2, 0xa3, 0xfd, 0x7f, 0xad, 0xc5, 0x85, 0x29, 0xb7, 0x5c, + 0x0c, 0xd0, 0xed, 0xf9, 0x1d, 0x4b, 0xbb, 0xac, 0xba, 0xf5, 0xa8, 0x91, 0xd9, 0xdf, 0xb0, 0xe6, + 0x87, 0x6e, 0x09, 0x9d, 0x5f, 0xd1, 0xb5, 0xbf, 0x54, 0xc9, 0x15, 0x9c, 0xb2, 0x13, 0xf4, 0xd7, + 0xbc, 0x42, 0xce, 0x2d, 0xa9, 0x28, 0xa4, 0x65, 0x77, 0x5a, 0xd6, 0x24, 0x0d, 0xc2, 0x51, 0x62, + 0xa6, 0x2a, 0x13, 0xb2, 0xb4, 0x6b, 0xa5, 0xb4, 0x31, 0x83, 0x33, 0xba, 0x64, 0xd2, 0x8c, 0x53, + 0x8b, 0xb5, 0x2c, 0xa8, 0x7a, 0x47, 0x39, 0x41, 0x29, 0x3c, 0x8a, 0xf2, 0x4f, 0x29, 0x5a, 0x3e, + 0x6a, 0x05, 0x55, 0x2f, 0x13, 0x94, 0xc2, 0x41, 0xee, 0xd9, 0xed, 0xd6, 0xb2, 0x29, 0x27, 0x3c, + 0xaa, 0xe8, 0x86, 0xc2, 0xf5, 0x0a, 0x22, 0xb9, 0x28, 0x92, 0x8a, 0xa5, 0x53, 0x4e, 0xd8, 0xab, + 0x04, 0x76, 0xbb, 0xb5, 0xd8, 0x0f, 0x8a, 0x3c, 0x38, 0x6a, 0x82, 0xf2, 0x45, 0xfd, 0x59, 0x26, + 0x03, 0xaf, 0x9f, 0xc9, 0x0a, 0x5e, 0x19, 0x5d, 0x04, 0xe9, 0xfa, 0x19, 0xbb, 0xdb, 0x5a, 0xea, + 0x94, 0x4a, 0x44, 0x7e, 0xc8, 0x2f, 0xf2, 0xe4, 0x12, 0x74, 0x6c, 0xb5, 0xd4, 0xcd, 0x48, 0x81, + 0x70, 0x7d, 0x8f, 0x84, 0xa3, 0x51, 0xcd, 0x83, 0xbf, 0x61, 0x2d, 0x1a, 0xad, 0x7a, 0x48, 0x7a, + 0x8b, 0xb5, 0x90, 0xaa, 0x35, 0x4c, 0x26, 0x66, 0x65, 0x4e, 0x0a, 0x0e, 0x2e, 0x5b, 0xfb, 0xca, + 0xc0, 0xf6, 0x5a, 0x6b, 0x01, 0x41, 0x18, 0xa2, 0xb8, 0x2a, 0x70, 0xaa, 0xbd, 0x22, 0x0f, 0x0b, + 0x18, 0x1b, 0xdd, 0x33, 0x20, 0x76, 0x87, 0xb5, 0x98, 0xb2, 0x03, 0xeb, 0xf9, 0xb0, 0x5e, 0x2e, + 0xad, 0x15, 0x8d, 0xd1, 0x45, 0x81, 0x7c, 0x38, 0xe4, 0xe5, 0x85, 0xd6, 0x62, 0x3d, 0xea, 0xf6, + 0x62, 0x6b, 0xc1, 0x70, 0xad, 0x5c, 0x66, 0xfb, 0xd8, 0x4b, 0xac, 0x85, 0x59, 0x4f, 0xa4, 0x0f, + 0x67, 0x09, 0xdb, 0xb2, 0xf6, 0x1d, 0x73, 0xf1, 0x3c, 0xcf, 0x5e, 0x6a, 0x2d, 0xea, 0x2f, 0xfb, + 0x8e, 0x38, 0xac, 0x8b, 0xcd, 0x37, 0x8d, 0xf4, 0xe1, 0x6c, 0x01, 0x69, 0xe5, 0x44, 0xe0, 0x7a, + 0x25, 0xb6, 0x90, 0x8c, 0xd7, 0xcf, 0x08, 0x1e, 0xb2, 0x7d, 0xed, 0x65, 0xd6, 0xe2, 0xa1, 0x99, + 0xf0, 0x98, 0xf2, 0x7a, 0x57, 0x30, 0x6e, 0x33, 0x6b, 0x19, 0x5a, 0xbd, 0x72, 0x0a, 0xb0, 0x49, + 0x7b, 0x3f, 0x6b, 0xb9, 0x44, 0x6a, 0x81, 0x43, 0xb9, 0x63, 0x25, 0x7b, 0xb9, 0xb5, 0x04, 0x50, + 0x9f, 0x57, 0xab, 0xb0, 0x29, 0xe3, 0xe1, 0x08, 0x3e, 0xcd, 0x5c, 0xd3, 0xca, 0x71, 0xc1, 0xbe, + 0x6b, 0x54, 0xf3, 0x6e, 0x85, 0xb3, 0xa3, 0x4d, 0xf3, 0xdb, 0xa1, 0xef, 0xb1, 0xb2, 0xbd, 0xda, + 0xda, 0x2f, 0xef, 0xf6, 0xae, 0x1f, 0xe7, 0x05, 0xe1, 0x07, 0x9a, 0xf6, 0x8c, 0xbd, 0xc2, 0x5a, + 0x32, 0xee, 0x94, 0x6b, 0x7c, 0xd0, 0x0d, 0x05, 0xbb, 0x28, 0x41, 0xed, 0x1e, 0xbf, 0x5c, 0xab, + 0x78, 0xa3, 0x7c, 0x92, 0xed, 0xa1, 0xfe, 0x2e, 0xec, 0xf1, 0x6b, 0x9e, 0x60, 0x37, 0x34, 0xd9, + 0x8b, 0xad, 0xf9, 0xb9, 0x5a, 0x85, 0xdd, 0x88, 0xa7, 0xcc, 0xa6, 0x12, 0xbb, 0x09, 0x4f, 0x43, + 0xae, 0xc7, 0x6e, 0x96, 0x4f, 0xce, 0x34, 0xbb, 0xa5, 0x89, 0x6c, 0xfa, 0xdd, 0x20, 0x14, 0xec, + 0xd6, 0x26, 0x9b, 0x59, 0x4b, 0x07, 0x02, 0xbf, 0x56, 0xed, 0xf1, 0xbd, 0x82, 0x23, 0xd8, 0x6d, + 0x4d, 0xf6, 0x4a, 0xcb, 0xca, 0x94, 0x4a, 0x47, 0xad, 0x77, 0x45, 0xc6, 0x2b, 0xb2, 0xdb, 0x9b, + 0x28, 0xa4, 0x02, 0x36, 0x04, 0xec, 0x8e, 0xa8, 0xc2, 0x77, 0xfc, 0x80, 0xdd, 0x29, 0xe3, 0x8a, + 0x22, 0xbb, 0xab, 0xc9, 0x5e, 0x4a, 0x79, 0x2d, 0x16, 0xf9, 0x26, 0x76, 0x37, 0xec, 0x64, 0x63, + 0xc4, 0xaf, 0xb2, 0xdf, 0xc1, 0x4e, 0xb6, 0x73, 0x4e, 0xa5, 0xca, 0x7e, 0x0f, 0xed, 0x71, 0x27, + 0x20, 0xe9, 0x3d, 0x4d, 0xf6, 0x32, 0x6b, 0xd1, 0xb8, 0x13, 0x40, 0xb4, 0xbb, 0xc9, 0x5e, 0x6e, + 0x2d, 0x1e, 0x77, 0x02, 0xd7, 0xf1, 0x0a, 0x9c, 0xed, 0x69, 0xb2, 0xf7, 0xb3, 0x96, 0x51, 0x9a, + 0x32, 0xb4, 0x24, 0x64, 0x4a, 0x25, 0x76, 0x6f, 0x93, 0x6d, 0x5b, 0xcb, 0x09, 0xda, 0x30, 0xf1, + 0x5d, 0x5e, 0x10, 0x84, 0xdd, 0xd7, 0x64, 0x27, 0xad, 0xfd, 0x33, 0xd5, 0x6a, 0xe0, 0x4f, 0x23, + 0x25, 0x7a, 0xca, 0xb0, 0xfb, 0xc1, 0x65, 0xd4, 0xdf, 0x3c, 0x5c, 0xab, 0x4c, 0xf0, 0x80, 0x6d, + 0x6b, 0xb6, 0x97, 0x58, 0x0b, 0x46, 0x1d, 0xef, 0x68, 0xb6, 0xbd, 0x99, 0x44, 0xbd, 0xdc, 0x0b, + 0x39, 0xda, 0x3b, 0x9a, 0x29, 0x74, 0x4f, 0xad, 0xc2, 0xc9, 0x9a, 0xed, 0x6c, 0xa6, 0x04, 0x8d, + 0xf0, 0xa0, 0xc0, 0x3d, 0x01, 0x85, 0x5d, 0xcd, 0x94, 0xbe, 0x61, 0xe1, 0x96, 0x39, 0xbb, 0x0a, + 0x7e, 0x06, 0xb9, 0x53, 0x64, 0x57, 0x37, 0x53, 0x16, 0x06, 0x9d, 0x12, 0xbb, 0xa6, 0x99, 0x3a, + 0x8a, 0xfc, 0x62, 0xe0, 0xd8, 0xb5, 0x08, 0x31, 0xe8, 0xe8, 0xf6, 0x75, 0x08, 0x31, 0x2c, 0xa6, + 0x64, 0xf3, 0x7a, 0xe8, 0xd7, 0x57, 0x1a, 0x76, 0xee, 0xf0, 0x21, 0x6f, 0x4c, 0x58, 0xcb, 0x63, + 0x6b, 0x8f, 0xbd, 0xd2, 0x5a, 0x3a, 0xe6, 0x85, 0x55, 0x5e, 0x70, 0x27, 0x5d, 0x5e, 0x64, 0xfb, + 0x50, 0x71, 0xf6, 0x38, 0xa1, 0xc8, 0x7a, 0x22, 0x13, 0x66, 0x3d, 0xc1, 0x12, 0x54, 0x9c, 0x06, + 0x19, 0xe5, 0x4e, 0x99, 0xcd, 0xb3, 0xf7, 0xb7, 0x56, 0x1a, 0x48, 0xd5, 0xfb, 0x7c, 0x7b, 0x95, + 0xc5, 0x0c, 0xa8, 0x4b, 0x7b, 0x41, 0xcc, 0x1a, 0x05, 0xba, 0x90, 0x2a, 0xb2, 0xae, 0xa8, 0x2b, + 0x7e, 0xdf, 0x98, 0x26, 0x6a, 0x77, 0x91, 0x86, 0x28, 0xaa, 0x64, 0x63, 0xd9, 0xb6, 0xb5, 0xa2, + 0x0e, 0x81, 0xce, 0x52, 0x1d, 0x59, 0x62, 0x8a, 0xcf, 0x32, 0x1d, 0x46, 0xa2, 0x9a, 0xd0, 0xf2, + 0xb8, 0x03, 0x30, 0x5a, 0x61, 0x1f, 0x60, 0xd9, 0x11, 0x55, 0x4d, 0x69, 0x65, 0x5c, 0x17, 0x9c, + 0x98, 0x0e, 0xa6, 0x1c, 0x4a, 0x5a, 0xab, 0x74, 0x30, 0x83, 0x82, 0xd9, 0x6a, 0xbb, 0xc9, 0xda, + 0x3f, 0x06, 0x2b, 0x72, 0x07, 0xd8, 0x49, 0x6b, 0x55, 0x4c, 0xa0, 0xf9, 0x35, 0xcd, 0xf2, 0x04, + 0x8a, 0x49, 0xfb, 0x40, 0x6b, 0x75, 0xdc, 0x40, 0xb3, 0x3c, 0x70, 0x96, 0x05, 0x88, 0xae, 0xd1, + 0x83, 0x24, 0x43, 0x4a, 0x9e, 0x6b, 0x35, 0x7b, 0x0d, 0x82, 0x66, 0xb3, 0xee, 0xbf, 0x46, 0x15, + 0xcb, 0x16, 0x4d, 0x5f, 0xe3, 0x9a, 0x64, 0x6b, 0xa3, 0x1b, 0x70, 0x3c, 0x58, 0x77, 0xca, 0xa8, + 0x6b, 0x8a, 0x6d, 0x8d, 0xfa, 0x60, 0xf8, 0x35, 0x3d, 0xbc, 0x64, 0x2d, 0xf9, 0x75, 0xe8, 0x8c, + 0x4b, 0x08, 0xec, 0xbe, 0xae, 0x8d, 0x25, 0xa6, 0xb8, 0x1d, 0xa2, 0x7b, 0x2d, 0x51, 0xcd, 0xec, + 0x1b, 0x71, 0x07, 0xe0, 0xf5, 0xff, 0x74, 0xf7, 0x94, 0xaa, 0x66, 0xf5, 0xff, 0xe3, 0xba, 0xe0, + 0xd4, 0x69, 0x92, 0xa9, 0xb4, 0x24, 0xaf, 0x2e, 0xed, 0xa2, 0x0e, 0x83, 0xdb, 0x61, 0x66, 0x1c, + 0x0d, 0xae, 0xf8, 0x1d, 0x6e, 0x06, 0xcc, 0x48, 0x34, 0xc7, 0x6f, 0xce, 0x76, 0x06, 0x9e, 0x69, + 0x7b, 0x8d, 0x75, 0x40, 0x83, 0x89, 0xe6, 0xda, 0x3d, 0xdb, 0x06, 0x7c, 0xbf, 0xa5, 0x73, 0x88, + 0x55, 0x0c, 0x5c, 0xff, 0x49, 0x77, 0x4b, 0x42, 0xe0, 0xf9, 0xcf, 0x3a, 0x87, 0x12, 0x53, 0x1c, + 0xff, 0x45, 0x77, 0x56, 0xa2, 0x9a, 0xdf, 0xbf, 0xc6, 0x1d, 0x80, 0xdb, 0xbf, 0xe9, 0xf8, 0x4a, + 0x55, 0xf3, 0xca, 0xc4, 0x75, 0xc1, 0x69, 0x3d, 0x2d, 0x6d, 0x3d, 0xbe, 0x53, 0xe6, 0x61, 0x81, + 0x13, 0xa3, 0xd7, 0x5b, 0x68, 0x9d, 0xd5, 0x08, 0x08, 0xbd, 0xd1, 0x62, 0xaf, 0xb2, 0x56, 0x6a, + 0x48, 0x47, 0x7e, 0xb3, 0xc5, 0xde, 0xdf, 0x5a, 0xa1, 0x51, 0xc5, 0xf2, 0xad, 0x98, 0x35, 0xd8, + 0xbc, 0xdd, 0x62, 0xaf, 0xb6, 0x98, 0xb1, 0xd6, 0x64, 0xfe, 0x12, 0xd3, 0x04, 0x97, 0xbf, 0xb6, + 0xd0, 0x6b, 0x78, 0x30, 0x4f, 0x34, 0x8a, 0xf4, 0x76, 0x1e, 0xcc, 0x23, 0x3e, 0xa7, 0xb7, 0xe4, + 0x60, 0xbe, 0xfe, 0x06, 0x5e, 0x66, 0x2d, 0x1e, 0xcc, 0xab, 0x88, 0x25, 0xa9, 0x88, 0x50, 0x53, + 0xf6, 0x0a, 0xcb, 0x1a, 0xcc, 0x9b, 0x18, 0xae, 0x94, 0xc1, 0xf9, 0x77, 0xe1, 0xbb, 0x8f, 0x7c, + 0x7b, 0x80, 0xfb, 0xe0, 0xdb, 0x87, 0xef, 0x3e, 0xed, 0xbb, 0x0a, 0xdf, 0x7d, 0xca, 0xf7, 0x31, + 0x52, 0x11, 0xbe, 0x03, 0xf8, 0xee, 0x33, 0xbe, 0x43, 0x29, 0x83, 0x6f, 0x41, 0xbe, 0x07, 0xc0, + 0x7b, 0x9a, 0xe0, 0x01, 0xc9, 0x7b, 0x86, 0x7c, 0x0f, 0x18, 0xde, 0xdf, 0x23, 0xdf, 0x03, 0x9a, + 0xf7, 0x7f, 0x4a, 0x45, 0xf8, 0xfe, 0x2f, 0xf2, 0x3d, 0x50, 0xe7, 0xfd, 0xdf, 0x52, 0x06, 0xdf, + 0xff, 0x23, 0x5f, 0xce, 0xdc, 0x11, 0x1c, 0xcb, 0x2d, 0xfb, 0x08, 0x89, 0xd3, 0x08, 0x02, 0x7d, + 0x8c, 0x01, 0xd2, 0x90, 0x8e, 0xf7, 0x09, 0x06, 0x48, 0xa3, 0x2a, 0xec, 0xa7, 0x31, 0x6b, 0x44, + 0xff, 0xac, 0x85, 0x5e, 0x45, 0x83, 0x5c, 0x2e, 0xe7, 0xec, 0xf3, 0x16, 0xbc, 0xa9, 0xb8, 0x5a, + 0x4a, 0xd9, 0x17, 0xb0, 0x40, 0x5b, 0x7b, 0xfe, 0xb2, 0x85, 0x48, 0x01, 0x52, 0x6e, 0xff, 0x5e, + 0x37, 0x82, 0xcf, 0x63, 0x5b, 0x49, 0x23, 0xeb, 0x09, 0x1e, 0x6c, 0x72, 0xca, 0xe4, 0xf6, 0xb8, + 0x56, 0x72, 0xa3, 0x11, 0x78, 0x3e, 0xbe, 0x95, 0xde, 0xa2, 0x03, 0x18, 0x93, 0xe3, 0x13, 0xb4, + 0x11, 0x18, 0x90, 0x83, 0x72, 0x02, 0x76, 0x38, 0x03, 0x66, 0x54, 0x4e, 0x4c, 0x10, 0xc3, 0x01, + 0x3d, 0x2c, 0x27, 0x29, 0x5d, 0x44, 0x3a, 0x39, 0x41, 0x6f, 0xce, 0x81, 0xfa, 0xc0, 0x9c, 0xa2, + 0xa4, 0xc8, 0xde, 0xa9, 0xd8, 0x1b, 0xf5, 0x6d, 0xa4, 0x10, 0x67, 0x42, 0xd0, 0xb7, 0x11, 0x21, + 0xce, 0x42, 0x88, 0xbe, 0x8d, 0x3a, 0xc4, 0xd9, 0x08, 0xd1, 0xb7, 0x51, 0x85, 0x38, 0x47, 0xe9, + 0x22, 0xc4, 0xb9, 0x08, 0xd1, 0xb7, 0xd1, 0x84, 0x38, 0x4f, 0x49, 0x11, 0xe2, 0x7c, 0x84, 0x18, + 0x46, 0x2f, 0x2e, 0x84, 0x60, 0x58, 0xf6, 0x42, 0xee, 0xd3, 0x86, 0x4d, 0x2f, 0xb6, 0x20, 0xc4, + 0xb0, 0xee, 0xc5, 0xc5, 0x4a, 0x17, 0x21, 0x2e, 0x41, 0x88, 0xe1, 0x7a, 0x2f, 0x2e, 0x55, 0x52, + 0x84, 0xb8, 0x4c, 0x7a, 0xaa, 0x95, 0xcb, 0xb2, 0x27, 0x5b, 0xa5, 0x36, 0xda, 0x08, 0xb5, 0x2d, + 0x41, 0x3b, 0x21, 0x09, 0xe8, 0x70, 0xdb, 0x69, 0x33, 0xb0, 0x4c, 0x62, 0x2a, 0xe4, 0x8e, 0x88, + 0x1d, 0xc2, 0xee, 0x4c, 0x50, 0x89, 0x28, 0x3b, 0x1d, 0x7a, 0x57, 0x44, 0x0b, 0xe1, 0xaf, 0x02, + 0xf1, 0x91, 0x72, 0x4d, 0xae, 0x4f, 0xbb, 0x13, 0xd8, 0x0e, 0x95, 0x6b, 0x66, 0x11, 0xda, 0x93, + 0xa0, 0x8d, 0x1b, 0x21, 0xc4, 0xee, 0x3e, 0xb0, 0x1d, 0x72, 0x3d, 0xa5, 0x7f, 0x3f, 0x88, 0xa0, + 0xad, 0x0d, 0x1e, 0x80, 0x47, 0x40, 0x64, 0xf1, 0x47, 0xa9, 0x51, 0x2b, 0x0b, 0xb7, 0x5a, 0x9e, + 0x81, 0xd1, 0x83, 0x09, 0x2a, 0x69, 0x0d, 0x69, 0xbb, 0x87, 0x10, 0x5a, 0xa3, 0x64, 0xfa, 0x27, + 0x90, 0xed, 0x75, 0x37, 0xb9, 0x45, 0xb9, 0x58, 0x3d, 0x8c, 0x54, 0x48, 0x40, 0x9b, 0x3d, 0x92, + 0x50, 0xb5, 0x27, 0x61, 0xb2, 0x7b, 0x34, 0x41, 0xab, 0x92, 0x81, 0xb4, 0xe6, 0x63, 0xe8, 0xc9, + 0x90, 0x5f, 0x84, 0xaf, 0xc7, 0xe1, 0x7c, 0xc8, 0x2f, 0x6a, 0xf1, 0x13, 0x18, 0x95, 0x21, 0xbf, + 0x48, 0x2e, 0x9e, 0x4c, 0xd0, 0x56, 0x33, 0x42, 0x66, 0xcc, 0x0b, 0xdd, 0x92, 0xc7, 0x8b, 0xec, + 0xa9, 0x84, 0x7d, 0x90, 0xd5, 0xa4, 0xf2, 0xa1, 0x51, 0x23, 0x7d, 0x3a, 0x61, 0xaf, 0xb1, 0x56, + 0x37, 0x48, 0x73, 0x52, 0xf6, 0x4c, 0x54, 0x96, 0x8b, 0xdb, 0x3d, 0x8b, 0x78, 0x31, 0x99, 0xb2, + 0x7a, 0x2e, 0x61, 0x7f, 0xc5, 0x3a, 0x40, 0xd2, 0x9a, 0x15, 0xee, 0xf9, 0x84, 0x7d, 0xa0, 0xb5, + 0x2a, 0x2e, 0x54, 0x76, 0x2f, 0x44, 0x44, 0x0d, 0xc1, 0x5e, 0x4c, 0xd8, 0x4d, 0x96, 0x1d, 0x15, + 0x29, 0x9b, 0xbd, 0x09, 0xfb, 0xab, 0x56, 0x52, 0x0f, 0xdd, 0xac, 0x68, 0x2f, 0x49, 0x2a, 0x0d, + 0x62, 0x65, 0xfb, 0x72, 0x4c, 0xd8, 0x10, 0xf1, 0x15, 0x49, 0x26, 0x26, 0x54, 0x76, 0x7f, 0x4e, + 0xd8, 0x6d, 0xd6, 0x5a, 0x2d, 0xea, 0xf7, 0x83, 0x42, 0xdd, 0xce, 0xd8, 0xbf, 0x9a, 0xb0, 0x5b, + 0xad, 0x83, 0xe6, 0x56, 0x52, 0x7e, 0x5e, 0x9b, 0x43, 0xa5, 0x81, 0xc5, 0xeb, 0x50, 0x89, 0x96, + 0xca, 0xac, 0x40, 0x6f, 0x24, 0xec, 0x66, 0x6b, 0xcd, 0x5c, 0x2a, 0x2a, 0xcc, 0x9b, 0x48, 0x51, + 0x54, 0x21, 0xd6, 0x9b, 0xb7, 0x66, 0xd9, 0x37, 0x70, 0x78, 0x1b, 0x55, 0x96, 0x99, 0xc0, 0xdc, + 0xf8, 0x15, 0xa3, 0x8a, 0xcc, 0x4c, 0x84, 0x63, 0xd4, 0xfa, 0xb5, 0x6e, 0xa1, 0x3e, 0x7f, 0xc3, + 0x70, 0x0c, 0x9b, 0x30, 0xf3, 0xea, 0xb7, 0x0c, 0x2f, 0x55, 0xee, 0xd2, 0x92, 0x9b, 0xf7, 0x7b, + 0x79, 0x81, 0xdd, 0x10, 0x87, 0xc8, 0xc9, 0x8d, 0x06, 0xea, 0xe5, 0x05, 0x09, 0xdd, 0x14, 0x87, + 0xc8, 0xf0, 0x66, 0x86, 0x43, 0x10, 0x77, 0xe5, 0x62, 0x7d, 0x0b, 0xa3, 0x79, 0xd5, 0x5f, 0xf6, + 0xfd, 0xc0, 0xf8, 0xbe, 0xb5, 0x01, 0x23, 0x4f, 0xb7, 0xd5, 0x31, 0xe3, 0xfd, 0xf6, 0x06, 0x8c, + 0x6c, 0xef, 0x60, 0xb4, 0x4a, 0x00, 0x83, 0xff, 0x3b, 0x99, 0x3c, 0x9e, 0xd5, 0x3c, 0x39, 0xf7, + 0xf6, 0x20, 0x3c, 0xda, 0xe4, 0xe2, 0xde, 0x7a, 0x93, 0xac, 0xef, 0x63, 0xf6, 0x01, 0xd6, 0x7e, + 0x68, 0x1e, 0xe9, 0x8a, 0xa9, 0xfe, 0xc0, 0x29, 0xc8, 0xb5, 0x86, 0xd1, 0xb4, 0x8e, 0xe1, 0x64, + 0xfd, 0xc0, 0x6c, 0x98, 0xbc, 0xfc, 0x01, 0xd9, 0x1c, 0xf4, 0x4b, 0x87, 0x66, 0x82, 0x12, 0x7b, + 0x18, 0x21, 0x06, 0xfd, 0x52, 0x57, 0x26, 0x28, 0x85, 0xec, 0x11, 0x86, 0x73, 0x9d, 0x5f, 0xea, + 0x62, 0x8f, 0x32, 0x5a, 0xe2, 0x49, 0x6f, 0x1d, 0x7b, 0x8c, 0xa9, 0x63, 0x63, 0x91, 0x3d, 0xce, + 0xa8, 0x62, 0xe9, 0x91, 0x9c, 0xe6, 0x38, 0x2f, 0xe2, 0xc0, 0x37, 0xc0, 0x3d, 0xf6, 0x04, 0xa3, + 0x93, 0xe0, 0x88, 0xbf, 0x99, 0x3d, 0x09, 0xfd, 0x1e, 0xdf, 0xdb, 0xc4, 0x9e, 0x82, 0x9b, 0x9e, + 0xd1, 0x9e, 0xc3, 0xba, 0xd8, 0xd3, 0x80, 0x69, 0xe0, 0xd9, 0x33, 0xf2, 0xf1, 0x98, 0x40, 0xb0, + 0x67, 0xf1, 0x98, 0x29, 0xf8, 0x21, 0x7b, 0x4e, 0x3e, 0x86, 0xae, 0xc7, 0x9e, 0x07, 0xb1, 0x8c, + 0x70, 0x3c, 0xf0, 0x7c, 0x01, 0x99, 0xa2, 0xa6, 0x24, 0xfa, 0x22, 0x62, 0xf5, 0xf8, 0x21, 0xdb, + 0xab, 0x9e, 0x04, 0x7b, 0x09, 0x3d, 0xeb, 0xe5, 0xa5, 0x80, 0xf3, 0x90, 0xbd, 0x0c, 0xbc, 0x6f, + 0xba, 0xca, 0x5e, 0x61, 0xf6, 0x22, 0x6b, 0xde, 0x48, 0x96, 0xfd, 0x19, 0x0a, 0xa3, 0x4e, 0xd1, + 0x75, 0xbc, 0x90, 0xbd, 0x0a, 0x85, 0x9c, 0xeb, 0xb1, 0xd7, 0xf0, 0x94, 0x77, 0x3c, 0xf6, 0x3a, + 0xa3, 0xb5, 0x36, 0x1f, 0xd4, 0xbc, 0x82, 0x23, 0xb0, 0x66, 0xbe, 0x81, 0x22, 0xd1, 0x08, 0xf2, + 0xfd, 0x26, 0x1d, 0xb1, 0x56, 0x6a, 0x48, 0x97, 0xe1, 0x5b, 0x31, 0xc5, 0x31, 0xd7, 0x13, 0xec, + 0x6d, 0x94, 0xea, 0xa0, 0x5f, 0x72, 0x0b, 0x4e, 0x39, 0xe3, 0x15, 0xd9, 0xe5, 0x49, 0xec, 0x18, + 0x24, 0xb0, 0x21, 0x60, 0x57, 0x24, 0x23, 0x0a, 0xdf, 0xf1, 0x03, 0x76, 0x65, 0x92, 0xe2, 0x8f, + 0x79, 0x4e, 0x30, 0x33, 0xec, 0x63, 0x67, 0xb2, 0x35, 0x49, 0xc1, 0x34, 0xa2, 0x83, 0x6d, 0x4b, + 0x52, 0x30, 0x8d, 0x82, 0xd5, 0xf6, 0x18, 0xf4, 0xed, 0xdc, 0x86, 0x61, 0xb6, 0x23, 0x49, 0x25, + 0x08, 0xc8, 0xbc, 0x76, 0x76, 0x26, 0xe9, 0xed, 0x57, 0xc7, 0x60, 0xbb, 0x2b, 0x49, 0x95, 0x55, + 0x07, 0x75, 0x98, 0xab, 0xe0, 0x40, 0xb5, 0xb2, 0x21, 0xee, 0x9c, 0xae, 0x86, 0x03, 0xfd, 0xe2, + 0x54, 0xe0, 0x35, 0xe8, 0x08, 0xf9, 0x52, 0xc0, 0xb5, 0x60, 0x23, 0x5f, 0xc1, 0x0a, 0xba, 0x0e, + 0x3a, 0xf4, 0x0a, 0x56, 0xc0, 0xf5, 0xc8, 0x46, 0xd6, 0x13, 0xaa, 0xfd, 0x43, 0x28, 0xd0, 0xdb, + 0x57, 0x01, 0x3f, 0x82, 0x82, 0xbc, 0x8e, 0xc9, 0xb9, 0x25, 0xf6, 0xe3, 0x24, 0xd5, 0x04, 0x6e, + 0x63, 0xa8, 0xf9, 0x13, 0x2d, 0xfe, 0x8e, 0x8f, 0xf6, 0x4f, 0x75, 0x7b, 0x98, 0x97, 0xa8, 0xfd, + 0xb3, 0xba, 0xff, 0x7c, 0x50, 0xe3, 0xec, 0xe7, 0x11, 0x92, 0x00, 0x7e, 0x11, 0xef, 0x1e, 0xb0, + 0x5f, 0x42, 0x09, 0x46, 0xfd, 0x4e, 0x39, 0xe4, 0xec, 0x57, 0x18, 0x12, 0x69, 0x25, 0x91, 0x5f, + 0xcb, 0x0c, 0x68, 0x33, 0x09, 0xfe, 0x46, 0x0e, 0x2d, 0x9f, 0x14, 0xb9, 0x29, 0x77, 0x52, 0xb0, + 0x1b, 0x64, 0x30, 0xb7, 0x34, 0xa5, 0x80, 0x1b, 0x91, 0x63, 0xc3, 0x86, 0x66, 0x0f, 0x3a, 0xf9, + 0xfb, 0x24, 0xbd, 0x74, 0xea, 0xac, 0x8c, 0xe0, 0x9e, 0x24, 0xbd, 0x16, 0x63, 0xec, 0x8c, 0x6c, + 0x37, 0x8c, 0xea, 0x2c, 0x8d, 0x60, 0x4f, 0x92, 0xde, 0x97, 0x11, 0xb6, 0x46, 0x72, 0x6f, 0x92, + 0xde, 0x43, 0x71, 0xd6, 0x46, 0x78, 0x9f, 0xce, 0xac, 0xbc, 0x51, 0xfb, 0x2d, 0x7a, 0x38, 0xc0, + 0xc5, 0x88, 0x13, 0x38, 0x15, 0xb5, 0x91, 0xba, 0x29, 0x89, 0x3d, 0x26, 0x17, 0xe3, 0x4e, 0xc0, + 0x6e, 0x46, 0x63, 0xd4, 0xdf, 0x4c, 0x89, 0xbe, 0x05, 0x8d, 0x9c, 0x94, 0xdc, 0x8a, 0xa4, 0xe2, + 0x86, 0xc7, 0xd4, 0xd1, 0x6d, 0xf0, 0xa7, 0x30, 0xbd, 0xe5, 0xba, 0x3d, 0x69, 0xae, 0xf8, 0x50, + 0x99, 0x77, 0x20, 0x63, 0xb2, 0x8d, 0xf2, 0xbd, 0x33, 0x02, 0xa0, 0x4c, 0xef, 0x42, 0x51, 0x49, + 0x40, 0x91, 0xba, 0x3b, 0xa2, 0x83, 0xdd, 0xdd, 0xef, 0x92, 0xb4, 0xde, 0x64, 0x3d, 0xf2, 0xb8, + 0xad, 0x99, 0x78, 0x65, 0x3d, 0x39, 0x3f, 0x9a, 0x65, 0x35, 0x68, 0x4e, 0xf2, 0xbe, 0x2b, 0xeb, + 0x29, 0x47, 0x3b, 0x95, 0x2e, 0x9c, 0xec, 0x6a, 0x96, 0x45, 0x60, 0xb8, 0x5e, 0xa5, 0xa4, 0xd8, + 0x1a, 0x5e, 0x2d, 0x3d, 0x4d, 0x52, 0xe6, 0x28, 0xcc, 0x49, 0x2d, 0xd0, 0x46, 0x1b, 0xa1, 0x4e, + 0x6e, 0xa1, 0x14, 0x48, 0x40, 0x87, 0x3b, 0x05, 0x27, 0x0a, 0x89, 0xa9, 0x90, 0xa7, 0x46, 0xec, + 0x10, 0xf6, 0x34, 0x1c, 0x5e, 0x94, 0x9d, 0x0e, 0x7d, 0x7a, 0x0b, 0x3a, 0x34, 0x49, 0x91, 0xce, + 0x68, 0x01, 0x8d, 0x49, 0x44, 0x39, 0xb3, 0x45, 0xd2, 0xd0, 0x11, 0xce, 0xc2, 0x91, 0x26, 0x3b, + 0xa9, 0xbc, 0x9f, 0xad, 0x74, 0xe1, 0xf9, 0x1c, 0x15, 0xca, 0x78, 0x3d, 0x37, 0x12, 0x1b, 0x9d, + 0x3a, 0x4f, 0xa9, 0xcb, 0xed, 0x3d, 0xce, 0x3a, 0x3d, 0x4e, 0xc8, 0x8f, 0x9c, 0xe2, 0x48, 0xe5, + 0x3b, 0xf2, 0xe4, 0xaa, 0x10, 0xc4, 0x7f, 0x57, 0x9e, 0x90, 0x15, 0xa4, 0x59, 0xfc, 0x4d, 0x9e, + 0x90, 0x15, 0xaa, 0xb8, 0xbc, 0x17, 0xb3, 0x06, 0xa3, 0xf7, 0xe5, 0x09, 0x59, 0x5b, 0x6b, 0x5e, + 0x1f, 0xc4, 0x34, 0x41, 0xe6, 0x43, 0x50, 0xcd, 0xa0, 0x9a, 0x82, 0x99, 0xaa, 0x60, 0x17, 0xb4, + 0x29, 0xa0, 0xcf, 0x93, 0xc0, 0x85, 0x6d, 0x78, 0x6b, 0xfb, 0x15, 0x7c, 0x5d, 0x62, 0x17, 0xb5, + 0xe1, 0xc6, 0xb7, 0xf7, 0x9b, 0x6c, 0x0b, 0x04, 0x23, 0x4e, 0x18, 0x6e, 0xf6, 0x83, 0x22, 0xbb, + 0xb8, 0x0d, 0x53, 0xd9, 0xf1, 0x8a, 0x7e, 0x45, 0x5e, 0x7c, 0x5f, 0xd2, 0x86, 0xd7, 0xd0, 0x11, + 0x99, 0x43, 0xd9, 0xa5, 0xfa, 0xb1, 0x8b, 0x5d, 0x86, 0x00, 0x63, 0x5e, 0x41, 0x7b, 0xbc, 0xbc, + 0x8d, 0xa6, 0x5b, 0x1d, 0xe0, 0xc5, 0x41, 0xee, 0x95, 0xc4, 0x14, 0xbb, 0xa2, 0x8d, 0xe8, 0xd6, + 0xb9, 0x65, 0xc7, 0xd9, 0x95, 0x1a, 0x52, 0xec, 0xb2, 0xe3, 0x6c, 0x6b, 0x1b, 0x8e, 0x4e, 0x5e, + 0xc1, 0x2f, 0x72, 0xb6, 0x0d, 0x8d, 0x5e, 0x8e, 0xc6, 0x76, 0x50, 0xcd, 0x0d, 0x1d, 0xc6, 0x76, + 0x80, 0x6a, 0xaf, 0x23, 0x9c, 0x09, 0x27, 0xe4, 0xec, 0xda, 0x36, 0xec, 0x14, 0xb0, 0x33, 0xf0, + 0x37, 0x87, 0xec, 0x3a, 0x50, 0xef, 0xa9, 0x05, 0x01, 0xf7, 0xc4, 0x58, 0xc8, 0x03, 0x76, 0x3d, + 0xf8, 0xe2, 0xf1, 0x87, 0x6d, 0xf2, 0x5a, 0xc1, 0xf3, 0x38, 0x3e, 0x6c, 0x64, 0x7b, 0xd9, 0x8f, + 0x00, 0x0d, 0xe2, 0x78, 0x1b, 0xf2, 0x40, 0x64, 0x7b, 0xd9, 0x8f, 0xd1, 0x89, 0x28, 0x44, 0xd3, + 0x3f, 0xdb, 0xcb, 0x7e, 0xd2, 0x86, 0x2b, 0x68, 0x1e, 0x84, 0x34, 0x02, 0x3f, 0x45, 0x24, 0x79, + 0x21, 0x2f, 0x91, 0x9f, 0xb5, 0xc9, 0x6d, 0xc8, 0x66, 0xb9, 0x38, 0xfc, 0xbc, 0x8d, 0x0a, 0x32, + 0x57, 0xe6, 0xbc, 0xca, 0xee, 0x69, 0x93, 0xfb, 0x85, 0xc2, 0xd1, 0x6c, 0xb7, 0x4c, 0x2e, 0x2f, + 0x73, 0x27, 0xe4, 0x40, 0xf6, 0xb4, 0x51, 0x81, 0xe8, 0x4b, 0x3f, 0x6f, 0x46, 0xde, 0xfa, 0xde, + 0xdb, 0x46, 0x03, 0x6f, 0x6e, 0x89, 0x34, 0x7c, 0x5f, 0x9b, 0x3a, 0x3c, 0x1b, 0xe4, 0x7e, 0x74, + 0x81, 0x56, 0x02, 0x03, 0x3d, 0x00, 0x08, 0x97, 0x9d, 0x1a, 0xfa, 0x43, 0x1b, 0xd5, 0x9b, 0xba, + 0xb6, 0xd3, 0xe0, 0x1f, 0xa1, 0x87, 0x5b, 0x33, 0x0d, 0x3d, 0xd8, 0x26, 0xa7, 0x3b, 0x17, 0x19, + 0xe1, 0x7b, 0xec, 0x21, 0xd3, 0x1c, 0x16, 0xbe, 0xc3, 0xfe, 0xd4, 0x26, 0x17, 0x07, 0x2e, 0xd2, + 0x10, 0x3f, 0x5c, 0x6f, 0x43, 0xfe, 0x08, 0x06, 0x2d, 0x1b, 0x66, 0x47, 0x36, 0x1d, 0xce, 0x1e, + 0x85, 0x77, 0xd9, 0xa0, 0xa2, 0x73, 0x04, 0x7b, 0x2c, 0x02, 0x0d, 0x39, 0xd5, 0x2a, 0x2f, 0xb2, + 0xc7, 0xeb, 0x26, 0x69, 0xf6, 0x84, 0x1c, 0xac, 0xb1, 0x6c, 0x2f, 0x7b, 0x12, 0xc5, 0x35, 0xee, + 0x0a, 0x1e, 0x86, 0x47, 0x38, 0xe1, 0x14, 0x7b, 0x4a, 0x29, 0x42, 0xfa, 0x34, 0x02, 0x53, 0xf6, + 0x73, 0x53, 0x4e, 0x50, 0x64, 0xcf, 0xb4, 0x99, 0xef, 0x14, 0xae, 0x87, 0xb7, 0xda, 0xb3, 0x92, + 0x79, 0xd9, 0x3d, 0x9a, 0x53, 0xf3, 0xd1, 0x56, 0x6c, 0xe7, 0x54, 0xeb, 0xb1, 0x56, 0x6c, 0x28, + 0x79, 0x89, 0x4f, 0x57, 0xa9, 0xfd, 0x78, 0x2b, 0xad, 0x44, 0xb2, 0x3d, 0x96, 0xef, 0xff, 0x16, + 0x61, 0x4f, 0x44, 0x30, 0x6d, 0xf7, 0x64, 0x2b, 0xb6, 0x96, 0x06, 0xd3, 0xba, 0x4f, 0xb5, 0x52, + 0x76, 0x25, 0x8e, 0xa5, 0x92, 0xc0, 0xa7, 0x5b, 0xe5, 0x1b, 0xcb, 0x80, 0x5a, 0xfb, 0x99, 0x56, + 0xec, 0x38, 0x21, 0x18, 0xe5, 0xd5, 0xb2, 0x53, 0x80, 0xf3, 0x67, 0x5b, 0xb1, 0x65, 0x8c, 0xc2, + 0xda, 0xe2, 0xb9, 0x56, 0x2a, 0x11, 0xc5, 0xb7, 0x36, 0x11, 0xca, 0x00, 0xcf, 0xb7, 0xca, 0x97, + 0x58, 0x1d, 0xd5, 0xfa, 0x2f, 0x80, 0x0f, 0x2d, 0x0b, 0x7d, 0xd3, 0x22, 0x70, 0x0a, 0x74, 0x8a, + 0x60, 0xa7, 0xb5, 0x6b, 0x70, 0xcc, 0x3b, 0xa6, 0xe6, 0x0b, 0x04, 0x3d, 0xbd, 0x9d, 0x12, 0x47, + 0x60, 0x7e, 0xa6, 0x0a, 0xe4, 0x8c, 0x76, 0xbd, 0xbd, 0xc8, 0x71, 0xd8, 0x9d, 0xd9, 0xae, 0x3f, + 0xa5, 0xc8, 0x09, 0x41, 0xd8, 0x59, 0xc6, 0x57, 0xa4, 0x03, 0x67, 0x1b, 0xc5, 0x51, 0x5e, 0xf1, + 0x37, 0x01, 0x3b, 0xa7, 0x5d, 0x7f, 0x9a, 0x19, 0xe2, 0x41, 0x09, 0xd0, 0xb9, 0xed, 0xf1, 0x4f, + 0x33, 0x84, 0x9d, 0xd7, 0x1e, 0xfb, 0x82, 0x43, 0xd0, 0xf9, 0xed, 0x94, 0x25, 0x82, 0xc6, 0x9d, + 0xb2, 0x5b, 0x04, 0x21, 0xb7, 0xc4, 0xbe, 0xdf, 0x4e, 0xa9, 0xa0, 0x56, 0x8f, 0xef, 0x09, 0xc7, + 0xf5, 0x42, 0x42, 0x7f, 0xd0, 0x4e, 0xb9, 0xae, 0x7f, 0x01, 0xaa, 0x56, 0xb9, 0xdc, 0x0b, 0x5d, + 0x10, 0x17, 0xd4, 0x7b, 0x70, 0x61, 0x3b, 0x0d, 0xa5, 0x21, 0x36, 0xe2, 0x88, 0xc2, 0x14, 0xe1, + 0x17, 0xb5, 0xd3, 0x28, 0xd4, 0xf1, 0x80, 0x87, 0x3c, 0x90, 0x7d, 0xd9, 0xd2, 0x4e, 0xf9, 0x8e, + 0x86, 0x1e, 0x71, 0x04, 0x8c, 0x2e, 0x36, 0x5d, 0x1a, 0x09, 0xb8, 0x10, 0xe0, 0x7f, 0x89, 0xe9, + 0xd2, 0x46, 0x9d, 0xec, 0x4b, 0x8d, 0x5a, 0x8e, 0x3b, 0x81, 0x8c, 0x77, 0x99, 0x21, 0x98, 0x13, + 0x7e, 0xe0, 0x50, 0x8a, 0xbe, 0x07, 0xe5, 0xcb, 0x8d, 0x7d, 0x2f, 0xaf, 0xca, 0x30, 0x57, 0x98, + 0xc1, 0xfa, 0x77, 0x3e, 0x83, 0x7e, 0x5f, 0x69, 0x3c, 0xca, 0x95, 0x96, 0xb0, 0xad, 0x26, 0x71, + 0xa4, 0x85, 0x73, 0x00, 0xc1, 0xdb, 0x4c, 0x20, 0xe4, 0x53, 0x2e, 0x05, 0x24, 0xd8, 0x1e, 0x17, + 0x6c, 0x10, 0x53, 0x3c, 0x80, 0xc5, 0x8e, 0x46, 0x6a, 0xfd, 0x01, 0x07, 0xb5, 0x9d, 0x66, 0x0c, + 0x86, 0x78, 0x65, 0x82, 0x07, 0x1b, 0x26, 0x09, 0xdd, 0x05, 0xc2, 0xe3, 0xbc, 0x90, 0x09, 0xf3, + 0x7c, 0x1a, 0x49, 0xfe, 0x10, 0x65, 0x32, 0xce, 0x0b, 0xfd, 0x81, 0x5f, 0xd1, 0xe0, 0x47, 0x28, + 0xb0, 0x71, 0x5e, 0xe8, 0x75, 0x2b, 0x88, 0xf3, 0x31, 0x08, 0x8f, 0xf3, 0xc2, 0xe0, 0xa1, 0xbd, + 0x6e, 0x28, 0x1c, 0x4f, 0x96, 0xd3, 0x27, 0x06, 0xee, 0x8a, 0xc2, 0x9f, 0xb6, 0xd3, 0x11, 0x79, + 0x9c, 0x17, 0x86, 0x79, 0xc9, 0x11, 0xee, 0x26, 0x9e, 0xf5, 0x3c, 0x1e, 0x8c, 0x04, 0x7e, 0xb1, + 0x26, 0x6b, 0xe9, 0x33, 0x8c, 0xe0, 0x38, 0x2f, 0xf4, 0xf8, 0xa1, 0xeb, 0xf1, 0xa8, 0xed, 0xe7, + 0x9a, 0xe2, 0x60, 0xd7, 0xb0, 0x1f, 0x54, 0x08, 0xfa, 0xa2, 0xdd, 0x5e, 0x6b, 0x1d, 0x18, 0xfd, + 0xa6, 0x11, 0xff, 0xc0, 0x7a, 0x73, 0x07, 0xed, 0x07, 0x49, 0x1e, 0xc3, 0xe5, 0x15, 0xfd, 0x2d, + 0x1d, 0xf6, 0x41, 0x56, 0xd3, 0x1c, 0x42, 0xbc, 0xf9, 0x6f, 0xed, 0xd0, 0xae, 0x1b, 0xa4, 0xea, + 0x75, 0x7f, 0x5b, 0x07, 0xf5, 0x64, 0x0e, 0xb9, 0xde, 0x24, 0xdc, 0xfe, 0x8f, 0xdc, 0x63, 0x6b, + 0x70, 0x47, 0x87, 0xdd, 0x62, 0x7d, 0x65, 0x2e, 0x73, 0xbd, 0x4b, 0xb8, 0xf3, 0x1f, 0xd9, 0x63, + 0xc3, 0x70, 0x57, 0x87, 0xfd, 0x7f, 0xac, 0x96, 0x39, 0xa4, 0xf1, 0x04, 0xdc, 0xdd, 0x41, 0x13, + 0x65, 0xa4, 0x5c, 0x6b, 0xc0, 0x2f, 0xe8, 0xc0, 0x2d, 0x10, 0x9d, 0x83, 0xe2, 0x82, 0x0b, 0x3b, + 0x68, 0x43, 0xae, 0xef, 0xbe, 0xe2, 0xb2, 0x8b, 0x20, 0x8b, 0xc7, 0xd3, 0xaf, 0x9e, 0x2d, 0x90, + 0xe9, 0x5b, 0xff, 0xb8, 0xdd, 0xc5, 0x1d, 0x54, 0x71, 0x83, 0xf9, 0x38, 0x7a, 0x89, 0x44, 0xfb, + 0xe2, 0xe8, 0xa5, 0x40, 0x07, 0x1a, 0x74, 0x2f, 0x83, 0x77, 0x7d, 0xb9, 0x1d, 0x97, 0x5d, 0x8e, + 0xae, 0xe0, 0x86, 0x3a, 0x2e, 0xb8, 0x42, 0xba, 0x6a, 0x08, 0x70, 0x25, 0xd0, 0xbe, 0x8d, 0x71, + 0x74, 0x2b, 0xd0, 0xe1, 0x06, 0xdd, 0x6d, 0x1d, 0xb4, 0x66, 0xc8, 0x0b, 0xd3, 0xb8, 0x64, 0x3b, + 0x24, 0x31, 0x4c, 0x9d, 0xe7, 0x76, 0xcc, 0x25, 0xc1, 0xa9, 0x6b, 0x67, 0x87, 0x2a, 0xed, 0xa8, + 0x44, 0x1e, 0xac, 0x76, 0xa1, 0x1a, 0xe6, 0x30, 0x32, 0x87, 0x97, 0xab, 0x3a, 0xec, 0x56, 0xeb, + 0xa0, 0xb9, 0x8c, 0x8d, 0xca, 0xd5, 0x88, 0x2c, 0xb7, 0xbb, 0x71, 0xb6, 0xd7, 0xa0, 0x77, 0xd9, + 0xc9, 0x38, 0x7a, 0xad, 0x1c, 0x32, 0xb5, 0x0d, 0x8d, 0xcb, 0xae, 0xeb, 0xa0, 0xb9, 0xd6, 0x9f, + 0xcf, 0x0d, 0xd1, 0xd2, 0x7a, 0x24, 0x6d, 0x2c, 0x1f, 0x42, 0x9e, 0x35, 0xd4, 0x67, 0x7e, 0xe5, + 0xc4, 0xfe, 0xd4, 0x41, 0xeb, 0x84, 0x16, 0x8c, 0x04, 0x7c, 0xd2, 0x9d, 0x66, 0x0f, 0xc7, 0x40, + 0xf9, 0x9a, 0x63, 0x8f, 0x74, 0xe0, 0x2c, 0xea, 0x08, 0xde, 0xef, 0x07, 0x15, 0x07, 0x13, 0xfe, + 0xdd, 0x4e, 0x5a, 0x16, 0x09, 0x1b, 0x74, 0x05, 0x0f, 0x68, 0x77, 0xdd, 0xa9, 0x76, 0x89, 0xbc, + 0xd7, 0x9d, 0x9c, 0x64, 0xef, 0x75, 0xea, 0xeb, 0x6e, 0x9a, 0x38, 0x80, 0xde, 0xef, 0x24, 0x2a, + 0xd4, 0x94, 0x93, 0xd1, 0x08, 0x3e, 0xe8, 0xc4, 0xf9, 0x4f, 0x4d, 0xa1, 0x06, 0xe1, 0x87, 0x9d, + 0xf6, 0x57, 0xad, 0xa4, 0x16, 0xea, 0xbf, 0x46, 0xfc, 0x11, 0x9c, 0xd6, 0x6d, 0x8c, 0xe0, 0x63, + 0x38, 0x95, 0x82, 0x59, 0x56, 0x9f, 0x74, 0xd2, 0xa0, 0xaa, 0xf5, 0x38, 0x1e, 0xef, 0xd3, 0x4e, + 0x5a, 0x02, 0xb5, 0x2b, 0x03, 0x7f, 0xd6, 0x49, 0xdb, 0x24, 0xea, 0x1e, 0xfb, 0x1c, 0x8f, 0x47, + 0xf8, 0xb5, 0x80, 0x7d, 0xd1, 0x89, 0x0b, 0x68, 0xd7, 0xab, 0x09, 0xce, 0xbe, 0xec, 0x94, 0x67, + 0xcd, 0x82, 0xef, 0x15, 0xd9, 0xdf, 0x91, 0xa0, 0x21, 0xb7, 0x10, 0xf8, 0x0a, 0x39, 0x36, 0x45, + 0x9b, 0xd3, 0x21, 0xdf, 0x13, 0x53, 0xec, 0xb8, 0x14, 0xee, 0xe4, 0xe9, 0x79, 0xd8, 0xa9, 0x70, + 0x76, 0x7c, 0x0a, 0x77, 0xfc, 0xfe, 0x66, 0x2a, 0x8b, 0x4c, 0x50, 0x62, 0x27, 0xa4, 0xf0, 0x05, + 0x41, 0x02, 0x7e, 0x4d, 0x10, 0x76, 0x62, 0x0a, 0x97, 0x48, 0xce, 0x0c, 0x4c, 0x4e, 0x82, 0x49, + 0xaf, 0x33, 0xb3, 0x61, 0x52, 0xfa, 0x3c, 0x19, 0x3e, 0x01, 0x1c, 0xc9, 0xf9, 0xd1, 0xec, 0x94, + 0x7a, 0xfb, 0x3f, 0xb8, 0x13, 0xb0, 0x53, 0x53, 0x34, 0x22, 0x24, 0x22, 0x9f, 0x43, 0xb4, 0xc7, + 0x3f, 0x2d, 0x45, 0x15, 0xa6, 0x21, 0xbf, 0x26, 0x80, 0x9e, 0x8e, 0x38, 0x84, 0xf6, 0x3a, 0x33, + 0xec, 0x0c, 0xc4, 0xa1, 0x96, 0xf2, 0x73, 0x66, 0x8a, 0xba, 0x8f, 0xc7, 0xb3, 0x52, 0x94, 0x2b, + 0x7a, 0x8c, 0xb9, 0x3d, 0x3b, 0x45, 0x25, 0x1d, 0x85, 0xb5, 0xeb, 0x73, 0xc0, 0x69, 0x80, 0x0b, + 0x59, 0x49, 0xec, 0xdc, 0x14, 0xb6, 0xc8, 0x33, 0x21, 0x25, 0x16, 0x57, 0x81, 0x61, 0x95, 0x9d, + 0x97, 0xa2, 0xd5, 0x2f, 0x02, 0xfa, 0x35, 0x41, 0xf8, 0xf9, 0xa9, 0xc8, 0x41, 0x03, 0x23, 0xf1, + 0x7d, 0xf0, 0x57, 0x08, 0x0d, 0xd5, 0x3a, 0xca, 0xd3, 0x0f, 0x1a, 0x51, 0x5c, 0xd3, 0x5d, 0x00, + 0xda, 0x58, 0xc5, 0x2f, 0x4c, 0xc9, 0x73, 0x44, 0xc5, 0x14, 0xef, 0x45, 0xe8, 0xf2, 0x58, 0xbe, + 0x07, 0x6e, 0xb7, 0x80, 0xff, 0x58, 0xbe, 0x87, 0x54, 0x42, 0xe1, 0x54, 0xaa, 0x7a, 0x58, 0x2e, + 0x4e, 0x51, 0x51, 0x35, 0x4a, 0xd4, 0xf8, 0x5c, 0x02, 0x61, 0xa6, 0x58, 0x24, 0x27, 0x02, 0x3b, + 0xfc, 0x62, 0xfd, 0x03, 0x52, 0x8a, 0x2a, 0x2e, 0x2e, 0x54, 0xef, 0xa4, 0xcb, 0x10, 0x2e, 0x53, + 0x2c, 0xa2, 0xd8, 0x1c, 0x81, 0xa2, 0xc3, 0xda, 0x70, 0xb9, 0x36, 0xd2, 0x87, 0x88, 0xba, 0xbf, + 0x2b, 0x52, 0x54, 0xf7, 0x51, 0x91, 0xf2, 0x76, 0x25, 0xb2, 0xa7, 0xbc, 0x49, 0x0c, 0xbe, 0xb6, + 0x1a, 0x76, 0xe6, 0x7c, 0x53, 0xf7, 0xb6, 0xcd, 0xb0, 0xab, 0x0b, 0x95, 0xbf, 0xed, 0x31, 0x76, + 0x4a, 0x2c, 0xd7, 0x4c, 0x4d, 0x81, 0x38, 0x47, 0xbd, 0xed, 0x44, 0x59, 0xd4, 0x05, 0xca, 0xd3, + 0x2e, 0x30, 0xc8, 0xd5, 0x26, 0xe6, 0xca, 0xcf, 0x55, 0x60, 0x10, 0x17, 0x2a, 0xbb, 0xab, 0xc1, + 0x20, 0x57, 0x9b, 0x98, 0x95, 0x9f, 0x6b, 0xb4, 0xd1, 0xec, 0xfc, 0x5c, 0x0b, 0x72, 0x51, 0x91, + 0xf2, 0x76, 0x9d, 0xac, 0x2e, 0xe9, 0x2d, 0x92, 0x9f, 0xeb, 0x0d, 0xbb, 0x39, 0xf2, 0xf3, 0x43, + 0xc3, 0x6e, 0x56, 0x7e, 0x7e, 0x14, 0x63, 0x17, 0xcd, 0xcf, 0x8f, 0x35, 0x85, 0xc6, 0xfc, 0xfc, + 0x04, 0xf9, 0xa9, 0x0b, 0x94, 0xa7, 0x9f, 0x22, 0xc8, 0x98, 0xe7, 0x4e, 0x9b, 0xea, 0x52, 0x45, + 0xcc, 0x7e, 0x06, 0x8b, 0x98, 0x88, 0xf6, 0x42, 0x3f, 0x9f, 0x0d, 0xf7, 0xf2, 0x02, 0xfb, 0x45, + 0x4a, 0xfe, 0x22, 0xcd, 0xdb, 0xc4, 0x03, 0x91, 0xff, 0x1e, 0xfb, 0x65, 0x0a, 0x9f, 0xf7, 0x9c, + 0xa3, 0x91, 0x3d, 0xf6, 0x2b, 0xd3, 0xc4, 0x6c, 0xf8, 0x35, 0xb4, 0x47, 0x78, 0xe0, 0xfa, 0xc5, + 0x4c, 0xb1, 0xc8, 0x7e, 0x83, 0x09, 0x2f, 0xdb, 0x58, 0xfa, 0x7e, 0x8b, 0xc9, 0xb1, 0xb1, 0xe6, + 0x04, 0x82, 0x07, 0xec, 0x06, 0xa8, 0xe7, 0x78, 0x21, 0xef, 0xc3, 0xfc, 0xc6, 0x94, 0x3c, 0x16, + 0x56, 0x78, 0x9e, 0x56, 0x3a, 0x76, 0x53, 0x4a, 0x1f, 0x70, 0xc1, 0x87, 0x3c, 0xde, 0x9c, 0xa2, + 0x85, 0x31, 0xef, 0xf7, 0x3a, 0x33, 0x21, 0xbb, 0x45, 0xea, 0xab, 0x55, 0x31, 0x64, 0xb7, 0x62, + 0x09, 0x50, 0x53, 0x4a, 0xcf, 0xb3, 0xdb, 0x30, 0x48, 0x11, 0x50, 0x4d, 0xb1, 0xdb, 0xb1, 0x2c, + 0x1a, 0xe7, 0x98, 0xd8, 0x77, 0xc0, 0x81, 0xc1, 0xe4, 0x25, 0xfc, 0x9d, 0x29, 0xbd, 0x8a, 0x03, + 0xd4, 0xf3, 0xfc, 0x2e, 0x74, 0x65, 0xd0, 0x09, 0x05, 0x2d, 0x6d, 0x77, 0xc3, 0x5b, 0x4e, 0x04, + 0x44, 0x4d, 0xc8, 0xe4, 0xfc, 0x4e, 0x96, 0x47, 0x14, 0xa3, 0x6a, 0x64, 0xbf, 0x6f, 0xc0, 0xf5, + 0x58, 0xde, 0x83, 0x40, 0xb4, 0xd7, 0xd6, 0xc3, 0x00, 0x52, 0xbb, 0x67, 0xc1, 0xc4, 0x8b, 0xed, + 0xc1, 0xd2, 0xa4, 0x0e, 0x88, 0xc6, 0xf7, 0xbd, 0x31, 0x54, 0x7b, 0xbe, 0x4f, 0x4f, 0x3c, 0xd2, + 0x8b, 0xbe, 0xaa, 0xd8, 0xfd, 0xd1, 0xf9, 0xa5, 0x2e, 0xb2, 0x3d, 0xc1, 0x1e, 0x88, 0x2e, 0x31, + 0xea, 0xc5, 0xa7, 0x76, 0xb5, 0x7f, 0x88, 0x5a, 0x64, 0x3d, 0xfd, 0x33, 0x81, 0x3f, 0x22, 0x01, + 0x75, 0x98, 0xbc, 0x3c, 0x98, 0xa2, 0xfd, 0x85, 0xc2, 0x34, 0x45, 0xa5, 0xff, 0x50, 0x74, 0xc6, + 0x6b, 0x19, 0x3e, 0xfb, 0xea, 0x49, 0x30, 0x8b, 0xeb, 0xc3, 0xd1, 0x5a, 0xaf, 0x73, 0x7d, 0x24, + 0x3a, 0xdd, 0xe3, 0x5c, 0x1f, 0x8d, 0x5a, 0xd4, 0xb9, 0x3e, 0x26, 0x07, 0xcb, 0xc0, 0xe4, 0xe5, + 0x71, 0x70, 0x55, 0x58, 0x03, 0xd7, 0x27, 0xa2, 0xb3, 0x2f, 0xca, 0xf5, 0x49, 0x94, 0x3f, 0x0d, + 0x0d, 0xea, 0xf1, 0xa9, 0x94, 0xbe, 0xfb, 0x57, 0xef, 0xa4, 0xa7, 0xe3, 0x35, 0x86, 0x29, 0xf0, + 0x8c, 0x5e, 0x34, 0xea, 0x74, 0x71, 0xdc, 0x78, 0x56, 0xbe, 0xbf, 0x0c, 0x29, 0x80, 0xcf, 0x45, + 0x95, 0xb3, 0x9e, 0xf9, 0x32, 0xf2, 0x7c, 0x34, 0x49, 0x9a, 0x11, 0x2c, 0x5e, 0x88, 0xae, 0x8c, + 0x5a, 0xa2, 0xcd, 0x5e, 0x8c, 0x75, 0x32, 0xb6, 0x49, 0x62, 0x7b, 0x63, 0x9d, 0xd4, 0x1f, 0x3e, + 0x3c, 0xc1, 0x5e, 0x8a, 0xc5, 0x52, 0x02, 0xc4, 0x7a, 0x39, 0x16, 0x4b, 0x6f, 0xab, 0x54, 0xac, + 0x57, 0xf4, 0xcb, 0xa3, 0xa1, 0x9f, 0x7f, 0x46, 0x3f, 0xeb, 0x85, 0x02, 0xf0, 0xd5, 0xa8, 0x72, + 0xa4, 0x9f, 0xaf, 0x45, 0x0b, 0x37, 0xd6, 0xcf, 0xd7, 0xa3, 0x6f, 0xc8, 0xc6, 0x7e, 0xbe, 0x11, + 0x2b, 0xbc, 0x78, 0x3f, 0xdf, 0x8c, 0x15, 0x5e, 0xa4, 0x9f, 0x6f, 0xc5, 0x62, 0x45, 0xfb, 0xf9, + 0x76, 0x2c, 0x56, 0x43, 0x3f, 0xff, 0x92, 0xa2, 0x63, 0x62, 0xc3, 0x3c, 0xa4, 0x92, 0x50, 0xf1, + 0xfe, 0x1a, 0xed, 0x1a, 0xb9, 0x53, 0xf8, 0x3b, 0xd1, 0x3c, 0xe0, 0x53, 0x86, 0x27, 0xd8, 0xbb, + 0x98, 0xbe, 0x11, 0x10, 0xf1, 0xff, 0x16, 0xa5, 0x4c, 0x88, 0x8e, 0xfd, 0x5e, 0x74, 0x9a, 0x2a, + 0x50, 0xb9, 0x7f, 0x3f, 0x1a, 0x56, 0x7f, 0x0f, 0xf1, 0x04, 0xfb, 0x20, 0xd6, 0x7d, 0x89, 0x23, + 0xc8, 0x87, 0xb1, 0x9c, 0x49, 0x81, 0x8e, 0xf3, 0x51, 0xb4, 0x0c, 0x23, 0x7d, 0xf8, 0x38, 0x5a, + 0xb3, 0xba, 0x0f, 0x9f, 0xa0, 0x0f, 0x11, 0x10, 0xee, 0x3f, 0x8d, 0x96, 0x57, 0xb4, 0x0f, 0x9f, + 0x45, 0xa7, 0x6f, 0xbc, 0x0f, 0x9f, 0x47, 0xc3, 0x46, 0xfa, 0xf0, 0x45, 0xac, 0x54, 0x23, 0x7d, + 0xf8, 0x32, 0x56, 0xdf, 0xf1, 0x3e, 0xfc, 0x3d, 0x65, 0x1f, 0x6c, 0x7d, 0x75, 0xce, 0x9a, 0x30, + 0xab, 0xe7, 0xb1, 0xeb, 0xe8, 0x48, 0x3f, 0xbb, 0x36, 0x8c, 0xc2, 0x71, 0xeb, 0xe8, 0x98, 0x36, + 0x47, 0x8d, 0x18, 0x8d, 0xe3, 0xd7, 0xd9, 0x6d, 0xd6, 0xda, 0xb9, 0x6b, 0xc5, 0x28, 0x9d, 0xb0, + 0x8e, 0xb8, 0xcc, 0x39, 0x0f, 0x8d, 0xce, 0x89, 0xe0, 0x32, 0x7b, 0x3e, 0x1a, 0x85, 0x93, 0xc0, + 0x65, 0x8e, 0x79, 0x69, 0x34, 0x4e, 0x06, 0x97, 0xb9, 0xe7, 0xa7, 0x51, 0x3a, 0x65, 0x9d, 0xfa, + 0x9e, 0xa8, 0x2e, 0xfb, 0x9f, 0x4c, 0xdb, 0x8b, 0xad, 0xf9, 0xeb, 0x5d, 0x8f, 0x3d, 0x95, 0xa6, + 0x53, 0x46, 0x26, 0xd7, 0x93, 0xcd, 0xb2, 0xa7, 0xd3, 0xf8, 0xd6, 0x3d, 0xe5, 0x04, 0xec, 0x99, + 0x34, 0xbe, 0x7d, 0x4c, 0x39, 0x81, 0xb4, 0x18, 0xcb, 0xf7, 0x7f, 0x8b, 0x3d, 0x9b, 0xa6, 0xf7, + 0xb2, 0xfa, 0x91, 0xf9, 0x73, 0x69, 0xf9, 0xa5, 0x82, 0x1a, 0x47, 0xe6, 0xd8, 0xf3, 0x69, 0x7a, + 0x53, 0xaa, 0x3d, 0x04, 0x7b, 0x01, 0xfe, 0xfb, 0xca, 0x82, 0xbd, 0x98, 0xa6, 0xd5, 0xb1, 0x6f, + 0xba, 0xea, 0x07, 0x22, 0xc7, 0xc5, 0x61, 0xf4, 0x56, 0xdb, 0x1b, 0xc7, 0x0e, 0x27, 0xec, 0xa5, + 0x38, 0xf6, 0x4d, 0xc2, 0x5e, 0x46, 0x08, 0xfc, 0x2f, 0x06, 0x55, 0xc4, 0x2b, 0x69, 0x7c, 0x48, + 0xa0, 0xa6, 0x5c, 0x64, 0xd2, 0xb4, 0x2d, 0x47, 0x5b, 0xd5, 0xd2, 0xab, 0x4a, 0xc3, 0x2b, 0x66, + 0xbd, 0x1c, 0x17, 0xec, 0x35, 0x10, 0x56, 0xeb, 0xf4, 0xeb, 0x69, 0xbc, 0x62, 0xd1, 0xa0, 0x2d, + 0xc2, 0xa0, 0x5f, 0x70, 0xca, 0x9c, 0xbd, 0x91, 0xc6, 0x4f, 0xbd, 0x03, 0xbf, 0xb2, 0xde, 0x09, + 0x79, 0xfa, 0x70, 0xf6, 0x26, 0x9c, 0x1c, 0xc1, 0xa7, 0xb3, 0x1e, 0xf6, 0x10, 0x6f, 0xe9, 0x76, + 0x4e, 0x04, 0xd4, 0x7e, 0x3b, 0x2d, 0xbf, 0xa8, 0x85, 0x3c, 0x10, 0x48, 0xcb, 0x5f, 0xd2, 0xf2, + 0x8b, 0x1a, 0x01, 0xec, 0xaf, 0x69, 0x79, 0xdd, 0xae, 0x6e, 0x7a, 0xd9, 0x3b, 0x69, 0xf9, 0x11, + 0x2f, 0x14, 0x01, 0x7b, 0x17, 0xcf, 0x83, 0xf9, 0xc0, 0xad, 0xb0, 0xbf, 0xa5, 0xe5, 0xaf, 0xf6, + 0x26, 0xa5, 0x8f, 0xf7, 0xd2, 0xf2, 0x57, 0xe8, 0x93, 0x82, 0xbd, 0x0f, 0x77, 0x6a, 0xa0, 0x3e, + 0x48, 0xe3, 0xfa, 0xc4, 0x2f, 0x38, 0x02, 0x3b, 0x82, 0x10, 0xda, 0x1f, 0x46, 0xd0, 0xc3, 0x0c, + 0xfa, 0x11, 0xf2, 0x11, 0xd1, 0x65, 0x1f, 0x47, 0x10, 0xe8, 0xb1, 0x4f, 0x24, 0x05, 0x7f, 0x33, + 0x0f, 0xd8, 0xa7, 0x92, 0x42, 0xd5, 0x29, 0xc2, 0xfc, 0x33, 0x49, 0xa1, 0xea, 0x14, 0xd9, 0xe7, + 0x18, 0x4c, 0xda, 0xf1, 0x51, 0x16, 0xbf, 0x00, 0xa1, 0x0d, 0x05, 0xbc, 0x42, 0xbf, 0x44, 0xff, + 0x36, 0x14, 0xcc, 0x2f, 0x07, 0x31, 0xd2, 0x1b, 0x82, 0x22, 0x3b, 0xb6, 0x9b, 0x5c, 0xe3, 0x22, + 0x95, 0x1d, 0x87, 0xe7, 0x51, 0xf4, 0xf4, 0xf8, 0x6e, 0x7c, 0x5f, 0xe5, 0x55, 0xee, 0x08, 0x76, + 0x42, 0x37, 0x7e, 0xb7, 0x20, 0x2f, 0xa4, 0xd9, 0x89, 0xdd, 0xf2, 0x43, 0xcb, 0x26, 0x1e, 0x84, + 0xb8, 0x48, 0x67, 0x27, 0x29, 0x39, 0x10, 0x76, 0x72, 0x37, 0xbe, 0x01, 0xb8, 0xa5, 0x29, 0x99, + 0xa5, 0x53, 0xa4, 0x5b, 0x6a, 0xb3, 0x53, 0xbb, 0xf1, 0x29, 0x47, 0xb3, 0x3f, 0xad, 0x1b, 0xbf, + 0xeb, 0x20, 0xf6, 0xa7, 0x43, 0x2b, 0x57, 0xa5, 0x08, 0x67, 0x74, 0xcb, 0x7f, 0x67, 0x08, 0x0a, + 0x95, 0x2a, 0x3b, 0xb3, 0x5b, 0x2d, 0x29, 0x21, 0xb8, 0xd7, 0xf3, 0x79, 0x56, 0x5c, 0x50, 0x4f, + 0xe9, 0xd9, 0xdd, 0x6a, 0xed, 0x8b, 0x58, 0xb0, 0x73, 0xe2, 0xa0, 0x4c, 0xec, 0xb9, 0x71, 0x30, + 0xeb, 0x15, 0xf9, 0x34, 0x3b, 0x0f, 0x1c, 0xf3, 0xbe, 0xaa, 0xac, 0xf3, 0x65, 0x33, 0x70, 0x2b, + 0xd8, 0xf3, 0x7d, 0x1f, 0xbd, 0xa3, 0xa6, 0xf4, 0xfb, 0x03, 0xd3, 0x96, 0x2e, 0x2f, 0x40, 0x3f, + 0xc6, 0xbc, 0x23, 0xf8, 0x34, 0xbb, 0x10, 0xb2, 0xb1, 0x6a, 0x95, 0xcb, 0xb2, 0xba, 0x48, 0xca, + 0xa8, 0xcd, 0xb6, 0x74, 0x53, 0x41, 0xd6, 0xe7, 0x2a, 0xbb, 0xb8, 0x5b, 0xfe, 0x36, 0x63, 0xb3, + 0x52, 0xbe, 0xa4, 0x9b, 0x2a, 0xdf, 0xfc, 0xbe, 0xd4, 0x1c, 0x31, 0xbb, 0xed, 0x83, 0xac, 0x26, + 0x0d, 0xf7, 0x54, 0xaa, 0xb1, 0x5f, 0x98, 0x5f, 0xd6, 0x4d, 0x13, 0x52, 0xfe, 0x6e, 0x54, 0x5b, + 0x5c, 0xde, 0x4d, 0xcb, 0x38, 0xb0, 0x46, 0xf5, 0x2b, 0x74, 0x57, 0x5d, 0xcf, 0x09, 0x66, 0xd8, + 0x95, 0xdd, 0x66, 0x56, 0x49, 0x60, 0xeb, 0x3f, 0x0a, 0x86, 0x5d, 0xf4, 0xb6, 0x39, 0x1d, 0x43, + 0xb4, 0xbd, 0x3b, 0xfa, 0x8b, 0x57, 0x40, 0x3b, 0xba, 0xcd, 0xaf, 0x55, 0xd1, 0xde, 0xd9, 0x7d, + 0x08, 0xb7, 0x56, 0x36, 0xfc, 0x3b, 0x14, 0xfe, 0xb9, 0xc2, 0xaf, 0x54, 0xcb, 0x5c, 0x70, 0xdc, + 0x25, 0xec, 0x63, 0x2f, 0xc7, 0xda, 0xe0, 0x94, 0xd1, 0x4c, 0x90, 0xc2, 0x88, 0x13, 0x08, 0xd7, + 0x29, 0x1f, 0x0a, 0x64, 0x5e, 0x04, 0xe9, 0x02, 0x32, 0x9f, 0x4c, 0x7a, 0x79, 0xb1, 0x56, 0x45, + 0x73, 0xc1, 0xfa, 0xaf, 0xef, 0xde, 0xbb, 0x36, 0xf1, 0xe0, 0xde, 0xb5, 0x89, 0x17, 0xf6, 0xae, + 0x4d, 0x6c, 0x79, 0x69, 0xed, 0x3e, 0xd6, 0xea, 0x82, 0x5f, 0xe9, 0xac, 0xba, 0x5e, 0xa9, 0xe0, + 0x54, 0x3b, 0x85, 0x5b, 0x9c, 0xc0, 0x3f, 0x3d, 0x8d, 0x24, 0xfe, 0x37, 0x00, 0x00, 0xff, 0xff, + 0x95, 0x44, 0x8f, 0x32, 0x22, 0x38, 0x00, 0x00, } diff --git a/proto/executor.proto b/proto/executor.proto index 2b262009..53f8b6e9 100644 --- a/proto/executor.proto +++ b/proto/executor.proto @@ -155,6 +155,76 @@ message ANNQueryInfo { optional uint32 hnsw_ef_search = 20 [(gogoproto.nullable) = false]; // Only for HNSW indexes } +enum FTSQueryType { + FTSQueryTypeInvalid = 0; + FTSQueryTypeNoScore = 1; + FTSQueryTypeWithScore = 2; +} + +enum FTSBooleanOccur { + FTSBooleanOccurInvalid = 0; + FTSBooleanOccurShould = 1; + FTSBooleanOccurMust = 2; + FTSBooleanOccurMustNot = 3; +} + +enum FTSBooleanModifier { + FTSBooleanModifierNone = 0; + FTSBooleanModifierBoost = 1; + FTSBooleanModifierDeBoost = 2; + FTSBooleanModifierNegate = 3; +} + +enum FTSBooleanTermType { + FTSBooleanTermInvalid = 0; + FTSBooleanTermWord = 1; + FTSBooleanTermPhrase = 2; + FTSBooleanTermPrefix = 3; +} + +message FTSBooleanTerm { + optional FTSBooleanTermType term_type = 1 [(gogoproto.nullable) = false]; + optional string text = 2 [(gogoproto.nullable) = false]; + optional uint32 phrase_distance = 3 [(gogoproto.nullable) = false]; +} + +message FTSBooleanQuery { + repeated FTSBooleanNode nodes = 1; +} + +message FTSBooleanNode { + optional FTSBooleanOccur occur = 1 [(gogoproto.nullable) = false]; + optional FTSBooleanModifier modifier = 2 [(gogoproto.nullable) = false]; + oneof node { + FTSBooleanTerm term = 3; + FTSBooleanQuery sub_expression = 4; + } +} + +message FTSQueryInfo { + optional FTSQueryType query_type = 1 [(gogoproto.nullable) = false]; + optional int64 index_id = 2 [(gogoproto.nullable) = false]; + repeated ColumnInfo columns = 3; + repeated string column_names = 4; + optional string query_text = 5 [(gogoproto.nullable) = false]; + optional string query_tokenizer = 6 [(gogoproto.nullable) = false]; + optional uint32 top_k = 10; + optional ScalarFuncSig query_func = 20 [(gogoproto.nullable) = false]; + optional FTSBooleanQuery boolean_query = 22; +} + +enum ColumnarIndexType { + TypeInvalid = 0; + TypeFulltext = 3; +} + +message ColumnarIndexInfo { + optional ColumnarIndexType index_type = 1 [(gogoproto.nullable) = false]; + oneof index { + FTSQueryInfo fts_query_info = 4; + } +} + message TableScan { optional int64 table_id = 1 [(gogoproto.nullable) = false]; repeated ColumnInfo columns = 2; @@ -169,6 +239,7 @@ message TableScan { optional ANNQueryInfo ann_query = 13; // only used by TiFlash repeated RuntimeFilter runtime_filter_list = 11; // only used by TiFlash optional int32 max_wait_time_ms = 12 [(gogoproto.nullable) = false]; + repeated ColumnarIndexInfo used_columnar_indexes = 14; // only used by TiFlash } message PartitionTableScan { @@ -183,6 +254,7 @@ message PartitionTableScan { optional ANNQueryInfo ann_query = 11; // only used by TiFlash repeated RuntimeFilter runtime_filter_list = 9; // only used by TiFlash optional int32 max_wait_time_ms = 10 [(gogoproto.nullable) = false]; + repeated ColumnarIndexInfo used_columnar_indexes = 12; // only used by TiFlash } enum JoinType { @@ -479,7 +551,6 @@ message Expand2{ repeated string generated_output_names = 2; // for output names for generated cols like grouping_id etc, like "gen_col1", "gen_col2" here optional Executor child = 3; } - message BroadcastQuery { optional string query = 1; } diff --git a/proto/expression.proto b/proto/expression.proto index 8779b72b..c6369c29 100644 --- a/proto/expression.proto +++ b/proto/expression.proto @@ -535,6 +535,12 @@ enum ScalarFuncSig { IfVectorFloat32 = 5161; CaseWhenVectorFloat32 = 5162; + /*fts*/ + FTSMatchWord = 5201; + FTSMatchExpression = 5202; + FTSMatchPrefix = 5203; + FTSMatchRegexp = 5204; + /*time*/ DateFormatSig = 6001; DateLiteral = 6002; From 26695da26ed8f8d6347f74a4f1f2731ed4d22cfe Mon Sep 17 00:00:00 2001 From: Zhigao TONG Date: Wed, 23 Sep 2026 13:27:09 +0800 Subject: [PATCH 02/12] tipb: add NGRAM settings to FTS boolean query --- go-tipb/executor.pb.go | 718 +++++++++++++++++++++++------------------ proto/executor.proto | 4 + 2 files changed, 402 insertions(+), 320 deletions(-) diff --git a/go-tipb/executor.pb.go b/go-tipb/executor.pb.go index a19c4cc1..a152a11d 100644 --- a/go-tipb/executor.pb.go +++ b/go-tipb/executor.pb.go @@ -1317,8 +1317,12 @@ func (m *FTSBooleanTerm) GetPhraseDistance() uint32 { } type FTSBooleanQuery struct { - Nodes []*FTSBooleanNode `protobuf:"bytes,1,rep,name=nodes" json:"nodes,omitempty"` - XXX_unrecognized []byte `json:"-"` + Nodes []*FTSBooleanNode `protobuf:"bytes,1,rep,name=nodes" json:"nodes,omitempty"` + // The Boolean query carries the analyzer selected by the FULLTEXT index so + // TiFlash does not have to infer NGRAM semantics from the raw query text. + QueryTokenizer string `protobuf:"bytes,2,opt,name=query_tokenizer,json=queryTokenizer" json:"query_tokenizer"` + NgramTokenSize uint32 `protobuf:"varint,3,opt,name=ngram_token_size,json=ngramTokenSize" json:"ngram_token_size"` + XXX_unrecognized []byte `json:"-"` } func (m *FTSBooleanQuery) Reset() { *m = FTSBooleanQuery{} } @@ -1333,6 +1337,20 @@ func (m *FTSBooleanQuery) GetNodes() []*FTSBooleanNode { return nil } +func (m *FTSBooleanQuery) GetQueryTokenizer() string { + if m != nil { + return m.QueryTokenizer + } + return "" +} + +func (m *FTSBooleanQuery) GetNgramTokenSize() uint32 { + if m != nil { + return m.NgramTokenSize + } + return 0 +} + type FTSBooleanNode struct { Occur FTSBooleanOccur `protobuf:"varint,1,opt,name=occur,enum=tipb.FTSBooleanOccur" json:"occur"` Modifier FTSBooleanModifier `protobuf:"varint,2,opt,name=modifier,enum=tipb.FTSBooleanModifier" json:"modifier"` @@ -3940,6 +3958,13 @@ func (m *FTSBooleanQuery) MarshalTo(dAtA []byte) (int, error) { i += n } } + dAtA[i] = 0x12 + i++ + i = encodeVarintExecutor(dAtA, i, uint64(len(m.QueryTokenizer))) + i += copy(dAtA[i:], m.QueryTokenizer) + dAtA[i] = 0x18 + i++ + i = encodeVarintExecutor(dAtA, i, uint64(m.NgramTokenSize)) if m.XXX_unrecognized != nil { i += copy(dAtA[i:], m.XXX_unrecognized) } @@ -6278,6 +6303,9 @@ func (m *FTSBooleanQuery) Size() (n int) { n += 1 + l + sovExecutor(uint64(l)) } } + l = len(m.QueryTokenizer) + n += 1 + l + sovExecutor(uint64(l)) + n += 1 + sovExecutor(uint64(m.NgramTokenSize)) if m.XXX_unrecognized != nil { n += len(m.XXX_unrecognized) } @@ -9121,6 +9149,54 @@ func (m *FTSBooleanQuery) Unmarshal(dAtA []byte) error { return err } iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field QueryTokenizer", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowExecutor + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthExecutor + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.QueryTokenizer = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field NgramTokenSize", wireType) + } + m.NgramTokenSize = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowExecutor + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.NgramTokenSize |= (uint32(b) & 0x7F) << shift + if b < 0x80 { + break + } + } default: iNdEx = preIndex skippy, err := skipExecutor(dAtA[iNdEx:]) @@ -15415,326 +15491,328 @@ var ( func init() { proto.RegisterFile("executor.proto", fileDescriptorExecutor) } var fileDescriptorExecutor = []byte{ - // 5123 bytes of a gzipped FileDescriptorProto + // 5155 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x7a, 0xcb, 0x6f, 0x1c, 0x49, 0x72, 0x37, 0xfb, 0x45, 0x76, 0x47, 0x3f, 0x58, 0x4c, 0x52, 0x54, 0x4b, 0x1a, 0x49, 0x9c, 0xde, 0x79, 0x68, 0xfb, 0xdb, 0xd1, 0xcc, 0x50, 0xda, 0x99, 0xd9, 0xd9, 0x27, 0x9f, 0xa3, 0x96, 0xc8, - 0x26, 0xb7, 0x9a, 0x3b, 0xb3, 0xc0, 0x67, 0xa0, 0x50, 0xac, 0xca, 0x6e, 0xa6, 0x58, 0xaf, 0xa9, - 0x87, 0xd4, 0x1c, 0xc3, 0xc0, 0x9e, 0xf7, 0x64, 0x78, 0xe1, 0x85, 0xcf, 0x3e, 0xd9, 0xb0, 0xe1, - 0x83, 0xff, 0x01, 0xfb, 0xb8, 0x17, 0x03, 0xbe, 0x7a, 0x0f, 0x86, 0xb1, 0x3e, 0x19, 0xf0, 0xcd, - 0x37, 0x9f, 0x8c, 0x8c, 0xcc, 0xac, 0xce, 0x7e, 0x88, 0xa3, 0xf1, 0xee, 0xc1, 0xa7, 0xee, 0x8a, - 0xf8, 0x45, 0xe4, 0x2b, 0x22, 0x32, 0x32, 0x32, 0xa1, 0x45, 0xc7, 0xd4, 0xc9, 0xd2, 0x30, 0x7e, - 0x18, 0xc5, 0x61, 0x1a, 0x92, 0x72, 0xca, 0xa2, 0xf3, 0xdb, 0x06, 0x1d, 0x47, 0x31, 0x4d, 0x12, - 0x16, 0x06, 0x82, 0x7e, 0xbb, 0x91, 0x38, 0x17, 0xd4, 0xb7, 0xe5, 0xd7, 0xc6, 0x28, 0x1c, 0x85, - 0xf8, 0xf7, 0x7d, 0xfe, 0x4f, 0x50, 0x3b, 0x7f, 0x5d, 0x83, 0xea, 0x81, 0x54, 0x47, 0xde, 0x82, - 0x62, 0x1a, 0xb5, 0x0b, 0x5b, 0x85, 0x07, 0xad, 0xed, 0xd6, 0x43, 0xae, 0xf5, 0x21, 0xe7, 0x9d, - 0x5d, 0x45, 0x74, 0xb7, 0xfc, 0x9b, 0x7f, 0xbd, 0xbf, 0x64, 0x16, 0xd3, 0x88, 0x74, 0xa1, 0x9a, - 0x9e, 0x7b, 0x56, 0xe2, 0xd8, 0x41, 0xbb, 0xb8, 0x55, 0x78, 0x50, 0xdf, 0x5e, 0x15, 0xd8, 0x33, - 0xfb, 0xdc, 0xa3, 0x03, 0xc7, 0x0e, 0xcc, 0x95, 0xf4, 0xdc, 0xe3, 0x7f, 0x38, 0x96, 0xb9, 0x63, - 0x81, 0x2d, 0xe9, 0xd8, 0x5e, 0xe0, 0xd2, 0xb1, 0xc0, 0x32, 0x17, 0xff, 0x90, 0xf7, 0xa0, 0x96, - 0x50, 0x8f, 0x3a, 0x29, 0x0b, 0x83, 0x76, 0x59, 0x07, 0x0f, 0x14, 0xd9, 0x9c, 0x20, 0xc8, 0x23, - 0xa8, 0xdb, 0xa3, 0x51, 0x4c, 0x47, 0x36, 0x0a, 0x54, 0x50, 0x60, 0x4d, 0x08, 0xec, 0x4c, 0x18, - 0xa6, 0x8e, 0x22, 0xf7, 0xa0, 0x9c, 0x86, 0x51, 0xbf, 0xbd, 0x8c, 0x68, 0x90, 0xfd, 0x0e, 0xa3, - 0xbe, 0x89, 0x74, 0xf2, 0x26, 0x54, 0x3c, 0xe6, 0xb3, 0xb4, 0xbd, 0x82, 0x80, 0xba, 0x00, 0x1c, - 0x71, 0x92, 0x29, 0x38, 0x64, 0x0f, 0xd6, 0xe8, 0xd8, 0xb9, 0xb0, 0x83, 0x11, 0xb5, 0x62, 0xea, - 0x50, 0xf6, 0x82, 0xc6, 0xed, 0x2a, 0xc2, 0x37, 0xd5, 0x9c, 0x09, 0xb6, 0x29, 0xb9, 0xa6, 0x41, - 0x67, 0x28, 0xbc, 0x1f, 0xcf, 0x43, 0x16, 0xb4, 0x6b, 0x7a, 0x3f, 0x9e, 0x86, 0x2c, 0x30, 0x91, - 0x4e, 0xee, 0x43, 0x5d, 0x2d, 0xb2, 0xc5, 0xdc, 0x36, 0x6c, 0x15, 0x1e, 0xd4, 0x4c, 0x50, 0xa4, - 0x9e, 0xcb, 0x15, 0x5c, 0x32, 0xcf, 0x6b, 0xd7, 0x75, 0x05, 0xcf, 0x98, 0xe7, 0x99, 0x48, 0x27, - 0x3f, 0x84, 0xd5, 0xbc, 0x97, 0x09, 0x0d, 0x5c, 0x1a, 0xb7, 0x1b, 0x08, 0xdd, 0x98, 0xee, 0xe3, - 0x00, 0x79, 0x66, 0x8b, 0x4e, 0x7d, 0x93, 0x0f, 0x00, 0x4e, 0xe3, 0xf0, 0xb9, 0x5c, 0x8c, 0x26, - 0x4a, 0x1a, 0x42, 0x72, 0x42, 0x37, 0x35, 0x0c, 0x79, 0x0a, 0x1b, 0x91, 0x1d, 0xa7, 0x8c, 0x7f, - 0x58, 0x29, 0xb7, 0x04, 0xb1, 0xea, 0x2d, 0x94, 0x6d, 0x4b, 0x59, 0x85, 0x98, 0x98, 0x0a, 0x89, - 0xe6, 0x68, 0x7c, 0x70, 0x49, 0x18, 0xa7, 0xed, 0x55, 0x7d, 0x70, 0x83, 0x30, 0x4e, 0x4d, 0xa4, - 0x93, 0xb7, 0x60, 0xf9, 0x25, 0x0b, 0xdc, 0xf0, 0x65, 0xdb, 0x40, 0x44, 0x43, 0x20, 0xbe, 0x40, - 0x9a, 0x29, 0x79, 0xa4, 0x0f, 0x6f, 0x0e, 0x59, 0x40, 0xad, 0x51, 0x6c, 0xb3, 0x80, 0xba, 0x56, - 0x72, 0x91, 0x0d, 0x87, 0xbc, 0x5b, 0x69, 0x4c, 0x6d, 0xdf, 0x72, 0xc2, 0x2c, 0x48, 0xdb, 0x6b, - 0x5b, 0x85, 0x07, 0x65, 0x69, 0xdc, 0x77, 0x39, 0xfc, 0x33, 0x81, 0x1e, 0x08, 0xf0, 0x00, 0xb1, - 0x7b, 0x1c, 0x4a, 0x9e, 0xc2, 0xfd, 0x85, 0xfa, 0xce, 0xed, 0xd4, 0xb9, 0xb0, 0x12, 0xf6, 0x15, - 0x6d, 0x13, 0x4d, 0xdb, 0x9d, 0x79, 0x6d, 0xbb, 0x1c, 0x39, 0x60, 0x5f, 0x51, 0x3e, 0x02, 0x3a, - 0x8e, 0xec, 0xc0, 0x6d, 0xaf, 0xeb, 0x23, 0x38, 0x40, 0x9a, 0x29, 0x79, 0xe4, 0x5d, 0x58, 0x11, - 0xff, 0xb6, 0xdb, 0x1b, 0x08, 0x6b, 0xea, 0xb0, 0x6d, 0x53, 0x71, 0xf9, 0x6a, 0x9f, 0xc7, 0xa1, - 0xed, 0x3a, 0x76, 0x92, 0x5a, 0x5f, 0x66, 0x34, 0xbe, 0x6a, 0xdf, 0xd0, 0x57, 0x7b, 0x57, 0x31, - 0x7f, 0xca, 0x79, 0x66, 0xeb, 0x7c, 0xea, 0x9b, 0x3c, 0x86, 0x06, 0xe3, 0xfe, 0x68, 0x79, 0x61, - 0x78, 0x99, 0x45, 0xed, 0xb6, 0xee, 0x4b, 0xe8, 0xa9, 0x47, 0x61, 0x78, 0xf9, 0xb3, 0xc8, 0xac, - 0x33, 0xf5, 0x91, 0x45, 0xe4, 0x2e, 0x40, 0x64, 0xc7, 0x34, 0x48, 0x2d, 0xe6, 0x8e, 0xdb, 0xb7, - 0xb6, 0x0a, 0x0f, 0x9a, 0x66, 0x4d, 0x50, 0x7a, 0xee, 0x98, 0x9c, 0xc2, 0x26, 0x1d, 0x47, 0x9e, - 0xcd, 0x02, 0x6b, 0x18, 0xc6, 0x96, 0x13, 0x06, 0x81, 0x34, 0xa7, 0xdb, 0xa8, 0xfe, 0x76, 0x3e, - 0x16, 0x8e, 0x39, 0x0c, 0xe3, 0xbd, 0x1c, 0x61, 0x6e, 0xd0, 0x05, 0xd4, 0xce, 0xdf, 0x96, 0xa0, - 0x35, 0x6d, 0xb7, 0xe4, 0x81, 0x16, 0xb1, 0xc8, 0xb4, 0x65, 0xcf, 0x45, 0xad, 0x35, 0x1a, 0x38, - 0xa1, 0x4b, 0x5d, 0x2b, 0xb5, 0x93, 0x4b, 0xcb, 0xa7, 0xa9, 0xdd, 0x2e, 0x6e, 0x95, 0x1e, 0x34, - 0xcc, 0x55, 0xc9, 0x38, 0xb3, 0x93, 0xcb, 0x63, 0x9a, 0xda, 0xe4, 0x43, 0x68, 0x4d, 0x6c, 0xf9, - 0x92, 0x5e, 0x25, 0xed, 0xd2, 0x56, 0x69, 0x62, 0x89, 0x07, 0xe3, 0x28, 0x36, 0x9b, 0x39, 0xe2, - 0x19, 0xbd, 0x4a, 0xc8, 0x5b, 0x50, 0x71, 0x2e, 0x98, 0xe7, 0xca, 0xc0, 0xa5, 0x45, 0x4f, 0xee, - 0xb0, 0xa6, 0x60, 0x92, 0xb7, 0xa1, 0x92, 0x5e, 0x45, 0x34, 0x69, 0x57, 0x50, 0x9f, 0x0c, 0x6f, - 0x87, 0x8c, 0x7a, 0x2e, 0xef, 0xae, 0x29, 0xb8, 0xe4, 0x63, 0x58, 0xb5, 0x3d, 0xcf, 0x1a, 0x72, - 0xba, 0x25, 0x04, 0x96, 0x17, 0x0b, 0x34, 0x6d, 0xcf, 0xcb, 0xbf, 0x12, 0xf2, 0x43, 0xa8, 0x3b, - 0xa1, 0xaf, 0xb6, 0x01, 0x0c, 0x62, 0xad, 0xed, 0x1b, 0x42, 0x68, 0x6f, 0xc2, 0x38, 0x0e, 0x5d, - 0x35, 0x35, 0x3a, 0x9e, 0x1c, 0xc1, 0x66, 0x16, 0x29, 0xf7, 0x48, 0xa9, 0x36, 0x51, 0x55, 0x6c, - 0xfe, 0xa6, 0x1c, 0x95, 0x98, 0xae, 0xdd, 0xab, 0x94, 0x26, 0x03, 0x8f, 0x39, 0xd4, 0x5c, 0x57, - 0x62, 0x7b, 0x29, 0x55, 0xb3, 0xd8, 0xf9, 0x65, 0x01, 0xea, 0x9a, 0xf1, 0x90, 0x0f, 0x60, 0x43, - 0x58, 0xd9, 0x85, 0x1d, 0xb8, 0x1e, 0xb5, 0xc2, 0xe1, 0x30, 0xa1, 0x69, 0xd2, 0x2e, 0x6c, 0x95, - 0x1e, 0x34, 0x4d, 0x82, 0xbc, 0x27, 0xc8, 0x3a, 0x11, 0x1c, 0x6e, 0x61, 0x97, 0x94, 0x46, 0x56, - 0x18, 0xf3, 0xf8, 0xc5, 0xf7, 0x9a, 0xaa, 0x59, 0xe3, 0x94, 0x13, 0x4e, 0xe0, 0x9b, 0x0b, 0x4e, - 0x6b, 0x4c, 0x03, 0xb9, 0x40, 0xb3, 0xd3, 0x9e, 0xf3, 0x3b, 0x9f, 0xc0, 0xda, 0x5c, 0xb7, 0xc9, - 0xb7, 0xa0, 0xa9, 0xdb, 0x84, 0xe8, 0x4a, 0xc3, 0x6c, 0x68, 0xf6, 0x90, 0x74, 0x7e, 0x5b, 0x00, - 0x63, 0x36, 0xa2, 0x2f, 0xb6, 0xa6, 0xc2, 0x62, 0x6b, 0xfa, 0x00, 0xea, 0xfa, 0x4a, 0x16, 0x17, - 0xaf, 0x24, 0x0c, 0x27, 0xcb, 0xd8, 0x41, 0xab, 0x2e, 0xbd, 0xca, 0xaa, 0xd1, 0x9e, 0xf7, 0xe1, - 0x7e, 0x18, 0xb3, 0x11, 0x0b, 0x6c, 0x0f, 0xd7, 0x2a, 0x8a, 0xdd, 0xd0, 0xc9, 0x68, 0xac, 0xf5, - 0xa7, 0x8c, 0xfd, 0xb9, 0xa3, 0x60, 0x7b, 0x29, 0x3d, 0x95, 0xa0, 0x7c, 0x8d, 0x7e, 0x55, 0x82, - 0xc6, 0x4e, 0xbf, 0x8f, 0x61, 0xa0, 0x17, 0x0c, 0x43, 0xf2, 0x31, 0x00, 0xc6, 0x0f, 0xec, 0xec, - 0xb4, 0x63, 0x29, 0x9c, 0xe6, 0x58, 0xb5, 0x2f, 0x15, 0x81, 0xf4, 0x60, 0xd5, 0x65, 0x49, 0x6a, - 0x07, 0x0e, 0xe5, 0xad, 0xc7, 0xcc, 0xc1, 0x05, 0x6b, 0x29, 0x3f, 0xff, 0x9c, 0x3a, 0x69, 0x18, - 0xef, 0x4b, 0xc8, 0x31, 0x22, 0xa4, 0x96, 0x96, 0x3b, 0x45, 0x25, 0xb7, 0xa0, 0x92, 0x86, 0x91, - 0x75, 0x89, 0x33, 0xd0, 0x94, 0x20, 0xbe, 0x3f, 0x3f, 0x23, 0x6f, 0x73, 0x03, 0xf7, 0x32, 0x3f, - 0xb0, 0x02, 0xdb, 0xa7, 0xe8, 0x6c, 0x35, 0x09, 0x00, 0xc1, 0xe8, 0xdb, 0x3e, 0x25, 0x6f, 0x42, - 0x4d, 0xc2, 0x98, 0x8b, 0x99, 0x41, 0x49, 0x82, 0xaa, 0x82, 0x8c, 0x1b, 0x68, 0x3d, 0xa6, 0x43, - 0xeb, 0x05, 0x75, 0xac, 0xe1, 0xa3, 0x6d, 0x4c, 0x08, 0x1a, 0x66, 0x2d, 0xa6, 0xc3, 0xcf, 0xa9, - 0x73, 0xf8, 0x68, 0x9b, 0xdc, 0x87, 0xaa, 0xb0, 0x56, 0xe6, 0xe2, 0xee, 0xae, 0x34, 0xac, 0x20, - 0xb5, 0xc7, 0x83, 0x73, 0xc3, 0xb7, 0xc7, 0x96, 0xea, 0x3b, 0xee, 0xd1, 0x05, 0xe5, 0x55, 0xbe, - 0x3d, 0x56, 0x43, 0x25, 0x5d, 0x68, 0x5d, 0x04, 0xc9, 0x4b, 0x8b, 0x0e, 0xad, 0x84, 0xda, 0xb1, - 0x73, 0x81, 0xc1, 0x5c, 0x8d, 0xab, 0xc1, 0x79, 0x07, 0xc3, 0x01, 0x72, 0x9e, 0x96, 0xab, 0x2b, - 0x46, 0xb5, 0xf3, 0xeb, 0x02, 0xb4, 0x0e, 0xcf, 0x06, 0xbb, 0x61, 0xe8, 0x51, 0x3b, 0x38, 0xa3, - 0xb1, 0x4f, 0xbe, 0x0f, 0xb5, 0x94, 0xc6, 0xbe, 0xbe, 0x2c, 0x72, 0x4f, 0x9d, 0x06, 0x6a, 0x8b, - 0x53, 0x4d, 0xe5, 0x37, 0x69, 0x43, 0x39, 0xa5, 0xe3, 0x14, 0x17, 0xa4, 0x96, 0xcf, 0x27, 0x1d, - 0xa7, 0xe4, 0x3d, 0x58, 0x8d, 0x2e, 0x62, 0x3b, 0xa1, 0x93, 0x71, 0xe8, 0x93, 0xde, 0x12, 0x4c, - 0x35, 0x94, 0xce, 0x0f, 0x61, 0x75, 0xd2, 0x9c, 0xd8, 0x3b, 0xba, 0x50, 0x09, 0x42, 0x97, 0x0a, - 0xdf, 0xc9, 0x37, 0x9c, 0x09, 0xaa, 0x1f, 0xba, 0xd4, 0x14, 0x90, 0xce, 0x7f, 0x4d, 0x8d, 0x8b, - 0x73, 0xc8, 0x87, 0x50, 0x09, 0x1d, 0x27, 0x8b, 0xe5, 0x98, 0x6e, 0xcc, 0x8a, 0x9f, 0x70, 0xa6, - 0xec, 0x8d, 0x40, 0x92, 0x4f, 0xa1, 0xea, 0x87, 0x2e, 0x1b, 0x32, 0x19, 0x13, 0x16, 0xcc, 0xc4, - 0xb1, 0xe4, 0xab, 0x99, 0x50, 0x78, 0xd2, 0xe5, 0x33, 0x11, 0xfb, 0x32, 0x17, 0xdd, 0x58, 0x34, - 0x83, 0x4f, 0x70, 0x6e, 0x62, 0x9f, 0xfc, 0x08, 0x5a, 0x49, 0x76, 0x6e, 0x4d, 0xd2, 0x6a, 0x19, - 0xdb, 0xe7, 0xfa, 0x88, 0x13, 0xf1, 0x64, 0xc9, 0x6c, 0x26, 0xd9, 0xf9, 0x41, 0x8e, 0xde, 0x5d, - 0x86, 0x32, 0x1f, 0x76, 0xe7, 0xd7, 0x25, 0x68, 0x1c, 0x9e, 0x0d, 0x5e, 0xcb, 0xc7, 0x14, 0x6e, - 0xb1, 0x8f, 0xe9, 0x36, 0x59, 0x5c, 0x64, 0x93, 0x5d, 0x58, 0x11, 0x06, 0xae, 0x76, 0x2c, 0x43, - 0xc5, 0x7e, 0xb4, 0xfa, 0x60, 0x18, 0x9a, 0x0a, 0x40, 0xde, 0x84, 0x86, 0xe6, 0x4a, 0x09, 0x46, - 0x8b, 0x9a, 0x59, 0x9f, 0x78, 0x51, 0x42, 0xbe, 0x95, 0x77, 0x94, 0x5b, 0x4f, 0x45, 0xb3, 0x1e, - 0xd9, 0x29, 0x69, 0x42, 0x12, 0x14, 0x5e, 0xd2, 0x80, 0x7d, 0x45, 0x63, 0x74, 0x26, 0x85, 0x6c, - 0x09, 0xa4, 0xe2, 0x91, 0x75, 0xe5, 0xdc, 0x80, 0x09, 0x83, 0x70, 0xeb, 0x4f, 0x54, 0x43, 0xc3, - 0x2c, 0x70, 0xd0, 0x3d, 0x5a, 0xdb, 0xeb, 0x32, 0xed, 0x73, 0x6c, 0xcf, 0x8e, 0x0f, 0xb3, 0xc0, - 0x19, 0xb0, 0xd1, 0x54, 0xeb, 0x9c, 0x46, 0x3e, 0x85, 0xe6, 0xb9, 0x58, 0x05, 0x99, 0xf7, 0x6c, - 0x5e, 0xb3, 0x46, 0x66, 0xe3, 0x5c, 0xfb, 0xe2, 0x6e, 0xb6, 0x26, 0x66, 0xc6, 0x8e, 0x71, 0xa3, - 0xc2, 0xd5, 0xf9, 0x01, 0x80, 0x98, 0x64, 0x6d, 0x75, 0x6e, 0xea, 0xd3, 0x28, 0xc1, 0xfa, 0x12, - 0x31, 0x45, 0x20, 0x9f, 0x42, 0x6b, 0x98, 0x26, 0xa2, 0x2f, 0x16, 0x0b, 0x86, 0xa1, 0x34, 0x9a, - 0x99, 0xf5, 0xe5, 0x2d, 0x3d, 0x59, 0x32, 0x1b, 0xc3, 0x34, 0xc9, 0xbf, 0x77, 0x57, 0xa0, 0x82, - 0x8a, 0x3a, 0xff, 0x54, 0x81, 0xda, 0x24, 0x1b, 0xbe, 0x0f, 0x55, 0x91, 0x4f, 0x33, 0x17, 0xbb, - 0x93, 0xaf, 0x3a, 0x52, 0xa7, 0x57, 0xbd, 0xf8, 0x75, 0xab, 0xde, 0x86, 0xb2, 0x4b, 0x13, 0x07, - 0x1d, 0xa0, 0xaa, 0x42, 0x01, 0xa7, 0x90, 0xef, 0x00, 0x89, 0x62, 0xe6, 0xdb, 0xf1, 0x95, 0x95, - 0xc7, 0x4e, 0x61, 0x15, 0x25, 0xd3, 0x90, 0x1c, 0xa9, 0xd1, 0x4d, 0xc8, 0x4f, 0xc0, 0x08, 0xe8, - 0x38, 0xb5, 0x62, 0x6a, 0xbb, 0x16, 0x0d, 0x46, 0x2c, 0xa0, 0x68, 0x20, 0x2d, 0xd5, 0xf8, 0x01, - 0xd2, 0xb4, 0x49, 0x6a, 0x71, 0xbc, 0x49, 0x6d, 0x57, 0x70, 0xc8, 0x77, 0x60, 0x39, 0xe6, 0x3b, - 0x9a, 0xca, 0x6d, 0xe4, 0xde, 0xfd, 0x8c, 0x5e, 0x99, 0x9c, 0x2c, 0xa5, 0x24, 0x86, 0x7c, 0x0f, - 0x6e, 0xa9, 0xde, 0x45, 0x31, 0x1d, 0xb2, 0xb1, 0xde, 0xc9, 0x15, 0xec, 0xe4, 0xa6, 0x04, 0x9c, - 0x22, 0x7f, 0xd2, 0xd5, 0xe9, 0x2c, 0xa2, 0x3a, 0x9b, 0x45, 0x6c, 0x41, 0x83, 0x25, 0xd6, 0x90, - 0x67, 0xce, 0x78, 0x60, 0xa9, 0x21, 0x00, 0x58, 0x72, 0x68, 0x27, 0x29, 0x2e, 0xc0, 0x31, 0xdc, - 0x8d, 0xb2, 0xe4, 0x82, 0xba, 0x96, 0x1b, 0xbe, 0x0c, 0xac, 0x21, 0xf3, 0x52, 0x8a, 0x09, 0xad, - 0x8b, 0xf9, 0x5f, 0xd2, 0x86, 0xb9, 0xec, 0xf0, 0xb6, 0x10, 0xd8, 0x0f, 0x5f, 0x06, 0x87, 0x08, - 0xdf, 0xcb, 0xd1, 0x64, 0x0f, 0xd6, 0xe3, 0x2c, 0x48, 0x99, 0x4f, 0x95, 0x2a, 0x8f, 0x25, 0x69, - 0xbb, 0x8e, 0x4a, 0xa4, 0xd5, 0x9b, 0x02, 0x20, 0x64, 0xcd, 0xb5, 0x58, 0xff, 0x3c, 0x62, 0x09, - 0xf7, 0x3a, 0x83, 0xef, 0x3e, 0x2f, 0x6d, 0x96, 0x5a, 0xa8, 0xca, 0x4f, 0xf0, 0x80, 0x57, 0x91, - 0xf3, 0xd6, 0xf4, 0xed, 0xf1, 0x17, 0x36, 0x4b, 0xcf, 0x98, 0x4f, 0x8f, 0x13, 0xf2, 0x3e, 0xd4, - 0xec, 0x40, 0xb9, 0x48, 0x53, 0xb7, 0x48, 0x7d, 0xf7, 0x37, 0xab, 0x76, 0x20, 0xc3, 0xfa, 0x33, - 0xb8, 0x91, 0x25, 0xd4, 0x95, 0xb3, 0x6c, 0xc7, 0x16, 0x5a, 0x26, 0x4d, 0xda, 0x2d, 0x3d, 0x13, - 0x9c, 0xf3, 0x1e, 0x73, 0x9d, 0x4b, 0x4d, 0x91, 0x69, 0xd2, 0xf9, 0xcf, 0x32, 0x90, 0xf9, 0xa3, - 0xdf, 0xff, 0x4d, 0xc3, 0xbe, 0xd6, 0xd0, 0x2a, 0xd7, 0x1a, 0xda, 0xb7, 0x60, 0x72, 0x28, 0x40, - 0xf8, 0x32, 0xc2, 0x1b, 0x39, 0x91, 0x83, 0x66, 0xcd, 0x6d, 0xe5, 0x9b, 0x9b, 0x5b, 0xf5, 0x0f, - 0x61, 0x6e, 0xb5, 0xdf, 0xdb, 0xdc, 0xe0, 0x35, 0xcd, 0xad, 0xfe, 0xfb, 0x98, 0x5b, 0xe3, 0x7f, - 0x61, 0x6e, 0xff, 0x5d, 0x81, 0xf2, 0xd3, 0x90, 0x05, 0xe4, 0x43, 0xa8, 0x3d, 0x0f, 0x59, 0xa0, - 0x47, 0xf2, 0xd6, 0xa4, 0xd4, 0xa2, 0xa7, 0x4a, 0xcf, 0xe5, 0x37, 0xdf, 0xf4, 0x51, 0x84, 0x8e, - 0xa9, 0x23, 0xe4, 0x8a, 0xfa, 0xfe, 0xcc, 0xe5, 0x66, 0x4a, 0x62, 0x8d, 0xe7, 0x1a, 0xed, 0x9b, - 0x9c, 0x49, 0x78, 0x96, 0xca, 0x82, 0x80, 0xc6, 0x78, 0x7e, 0x2e, 0xeb, 0x59, 0x2a, 0x92, 0xf9, - 0x21, 0xfa, 0x03, 0x68, 0x79, 0x74, 0x98, 0x5a, 0xd8, 0x27, 0x3c, 0x89, 0x56, 0xe6, 0x16, 0xbf, - 0xc1, 0x11, 0xbc, 0x63, 0x78, 0x10, 0xdd, 0x86, 0xd5, 0x98, 0x8d, 0x2e, 0x74, 0x91, 0xe5, 0xf9, - 0xc3, 0x2b, 0x42, 0x72, 0x99, 0x0f, 0xa0, 0x1e, 0xc5, 0xe1, 0x39, 0x95, 0x27, 0x94, 0x95, 0x57, - 0x9c, 0x50, 0x10, 0x23, 0x4e, 0x28, 0x1f, 0x40, 0xfd, 0x3c, 0x63, 0xf9, 0x99, 0xa6, 0xfa, 0x0a, - 0x09, 0xc4, 0x08, 0x89, 0x47, 0xb0, 0x8a, 0x23, 0xd1, 0xec, 0xb8, 0x36, 0xd7, 0x2f, 0x1c, 0xac, - 0x66, 0xbb, 0xdf, 0x05, 0x43, 0x0c, 0xe6, 0xda, 0x60, 0x2b, 0x06, 0x3c, 0x2d, 0x16, 0xa6, 0x17, - 0xd3, 0x4e, 0x53, 0x9f, 0x17, 0x43, 0x8c, 0x26, 0xf6, 0x04, 0xee, 0x08, 0x31, 0xfa, 0xa5, 0x26, - 0x69, 0x0d, 0xe3, 0xd0, 0xb7, 0x58, 0x20, 0x4d, 0x51, 0xd7, 0x70, 0x13, 0xe1, 0x07, 0x5f, 0x4e, - 0x74, 0x1c, 0xc6, 0xa1, 0xdf, 0x0b, 0xc8, 0x63, 0xb8, 0xc9, 0x12, 0x2b, 0xc8, 0x3c, 0xcf, 0xb2, - 0x5f, 0xda, 0x31, 0xb5, 0x12, 0xea, 0x33, 0x5c, 0x11, 0x0c, 0xbe, 0x55, 0x73, 0x9d, 0x25, 0xfd, - 0xcc, 0xf3, 0x76, 0x38, 0x73, 0x40, 0x7d, 0x86, 0xe6, 0xfa, 0x0a, 0x4f, 0x6d, 0x7d, 0x13, 0x4f, - 0xed, 0xfc, 0x47, 0x11, 0x9a, 0x53, 0x20, 0xb2, 0x01, 0x45, 0x19, 0x60, 0x95, 0xb7, 0x16, 0x99, - 0x4b, 0x1e, 0x83, 0x91, 0x84, 0x59, 0xec, 0x50, 0x4c, 0x70, 0x45, 0x4b, 0xc5, 0xf9, 0x05, 0x11, - 0x18, 0xfe, 0x1f, 0xe3, 0xc0, 0x63, 0x30, 0x52, 0x3b, 0x1e, 0xd1, 0x54, 0x93, 0x9a, 0xaf, 0x8d, - 0xb4, 0x04, 0x26, 0x97, 0xda, 0x06, 0x92, 0xb7, 0x35, 0x29, 0x6a, 0xea, 0x87, 0x37, 0x43, 0xb5, - 0x93, 0x17, 0x38, 0xb7, 0x81, 0xe4, 0x2d, 0x4d, 0x64, 0xf4, 0x1c, 0xd4, 0x50, 0xad, 0xe4, 0x32, - 0x1f, 0xc1, 0x4a, 0x3c, 0x14, 0x5e, 0xbb, 0xac, 0xe7, 0x6d, 0x53, 0xf3, 0xa1, 0xb9, 0xee, 0x72, - 0x3c, 0x44, 0xa7, 0x15, 0x72, 0x7e, 0xe8, 0x52, 0x59, 0x32, 0x59, 0x24, 0xa7, 0x15, 0x4d, 0x96, - 0xe3, 0x21, 0xff, 0xea, 0xfc, 0x4b, 0x01, 0x6a, 0x79, 0x21, 0xfb, 0xeb, 0xb7, 0xb3, 0x3f, 0x68, - 0xfa, 0xae, 0xf6, 0xbb, 0xf2, 0xdc, 0x7e, 0xb7, 0x09, 0xcb, 0x59, 0xc0, 0xbe, 0xcc, 0x44, 0x42, - 0x56, 0x35, 0xe5, 0xd7, 0x2b, 0xf6, 0xc1, 0xe5, 0xc5, 0xfb, 0x60, 0xe7, 0x57, 0x05, 0xa8, 0xe5, - 0x75, 0x77, 0xd2, 0x05, 0xd0, 0x7c, 0xa9, 0x30, 0xb7, 0xe2, 0x1a, 0x97, 0x3c, 0x86, 0x56, 0x1c, - 0x05, 0xba, 0xef, 0x09, 0xbb, 0x92, 0xc5, 0x4b, 0x33, 0x0a, 0x64, 0x0c, 0x8a, 0x02, 0xcd, 0xf9, - 0xf2, 0x02, 0x5a, 0xe9, 0x9a, 0x02, 0x5a, 0xe7, 0x17, 0x05, 0xbd, 0x30, 0x4d, 0xb6, 0xa0, 0xc2, - 0xed, 0x70, 0x51, 0x8f, 0x04, 0x83, 0x74, 0xa1, 0xc6, 0x3b, 0x23, 0x50, 0x0b, 0xfb, 0x51, 0x8d, - 0xc5, 0x9f, 0xd7, 0xed, 0xc2, 0x3f, 0x16, 0xa1, 0xae, 0xdd, 0x2f, 0x90, 0xb7, 0xa1, 0x3a, 0x8a, - 0xc3, 0x2c, 0xb2, 0xce, 0xaf, 0x16, 0x74, 0x63, 0x05, 0x79, 0xbb, 0x57, 0x1c, 0x66, 0x8f, 0x46, - 0xe2, 0x80, 0x33, 0xef, 0x67, 0x2b, 0xf6, 0x68, 0x84, 0xe7, 0x99, 0x2d, 0xa8, 0x8a, 0x4a, 0x1a, - 0x75, 0xa7, 0x52, 0x99, 0x9c, 0x4a, 0xde, 0x87, 0x06, 0x1f, 0x51, 0xde, 0x66, 0x79, 0xd1, 0xa0, - 0x20, 0x8e, 0x82, 0xcf, 0x64, 0xcb, 0x52, 0x20, 0x6f, 0xbd, 0xf2, 0x2a, 0x81, 0x1d, 0xd9, 0x87, - 0x7c, 0x1e, 0x96, 0xaf, 0xab, 0x65, 0x7e, 0x0f, 0x1a, 0x51, 0x4c, 0x51, 0xed, 0xbc, 0xe7, 0x9c, - 0xb1, 0x43, 0xcf, 0x4e, 0x2e, 0x4e, 0x63, 0xba, 0x33, 0x1a, 0x71, 0x5f, 0xe1, 0xbb, 0x87, 0xfa, - 0xdf, 0xf9, 0xcb, 0x02, 0x94, 0xcf, 0xc2, 0xa8, 0x4f, 0xde, 0x85, 0x2a, 0x66, 0xe5, 0x93, 0xb9, - 0x93, 0x85, 0xf0, 0xdd, 0xab, 0x5e, 0x4a, 0x7d, 0x73, 0x05, 0xb9, 0xbb, 0x57, 0xe4, 0xb6, 0xba, - 0x97, 0x29, 0x6a, 0x15, 0x76, 0x79, 0x21, 0xf3, 0x5a, 0xcb, 0xc6, 0x67, 0x61, 0x92, 0x9c, 0xe5, - 0xd3, 0x36, 0xdd, 0x5c, 0x3d, 0x47, 0xec, 0x5e, 0x75, 0xfe, 0xbe, 0x00, 0x15, 0xbc, 0xf8, 0x99, - 0x34, 0x5e, 0xb8, 0xa6, 0xf1, 0xe2, 0x37, 0x69, 0xbc, 0xf4, 0x35, 0x8d, 0x93, 0x8f, 0x60, 0x2d, - 0x8d, 0xb3, 0xc0, 0xb1, 0x53, 0xca, 0xf7, 0x70, 0xb4, 0x5f, 0xd9, 0xe5, 0xa9, 0x2d, 0x4c, 0x81, - 0x9e, 0xd1, 0x2b, 0x4e, 0xe8, 0xfc, 0x04, 0xca, 0xcf, 0x98, 0xe7, 0x91, 0x37, 0x60, 0xd9, 0x09, - 0x83, 0xa0, 0xb7, 0x3f, 0xd5, 0x67, 0x49, 0xe3, 0x03, 0x12, 0xa9, 0x59, 0x51, 0xb3, 0x30, 0x41, - 0xea, 0xec, 0xc0, 0xc6, 0xa2, 0x92, 0x3c, 0xf9, 0x36, 0x34, 0x27, 0x25, 0x7c, 0x15, 0xe2, 0x94, - 0xe2, 0xc6, 0x84, 0xd5, 0x73, 0x3b, 0x7f, 0x53, 0x82, 0xb6, 0x9a, 0x01, 0xf1, 0xcb, 0xc2, 0x60, - 0x90, 0xf9, 0x3c, 0xc0, 0x90, 0x2e, 0xac, 0xe1, 0x0e, 0x17, 0xc5, 0xa1, 0x43, 0x13, 0x9e, 0xf3, - 0x61, 0x40, 0x29, 0x3c, 0x28, 0x9b, 0xab, 0x9c, 0x71, 0xaa, 0xe8, 0x7d, 0xee, 0xbc, 0x6b, 0x41, - 0xe6, 0x73, 0xa8, 0x9b, 0x39, 0xd4, 0xb5, 0xe2, 0xf0, 0x65, 0x22, 0x2c, 0xc0, 0x5c, 0x0d, 0x32, - 0xff, 0x54, 0xd2, 0xcd, 0xf0, 0x65, 0x42, 0xde, 0x86, 0x16, 0xc7, 0xb2, 0x94, 0xc6, 0xb6, 0x88, - 0x3a, 0x25, 0x04, 0x36, 0x83, 0xcc, 0xef, 0xe5, 0xc4, 0xd9, 0x8b, 0xb5, 0xf2, 0xdc, 0xc5, 0xda, - 0x16, 0xd4, 0x9d, 0x30, 0x70, 0xb2, 0x38, 0xa6, 0x81, 0x73, 0x85, 0x21, 0xb4, 0x6c, 0xea, 0x24, - 0x72, 0x04, 0x1b, 0x29, 0x1b, 0x72, 0xf3, 0xc6, 0x0c, 0x9e, 0x07, 0x3a, 0xac, 0x8f, 0x2c, 0xeb, - 0x37, 0x5d, 0xd2, 0x01, 0xf8, 0xc6, 0xb0, 0x27, 0xf8, 0x4f, 0x96, 0x4c, 0x22, 0xe5, 0x34, 0x2a, - 0xef, 0x77, 0x9c, 0x71, 0x1d, 0x49, 0xe6, 0x47, 0xa9, 0xaa, 0xda, 0x37, 0xcc, 0x66, 0x9c, 0xed, - 0x4d, 0x88, 0xe4, 0xe9, 0xa4, 0x51, 0x4c, 0xc2, 0x13, 0x31, 0x9d, 0xf2, 0xe2, 0x71, 0xba, 0x51, - 0x9e, 0x88, 0xcb, 0xe9, 0xce, 0x9b, 0xd4, 0x68, 0xbb, 0x0d, 0x80, 0x7d, 0x9a, 0xda, 0xcc, 0xe3, - 0x3b, 0x4a, 0x67, 0x04, 0x1b, 0x52, 0x2e, 0x5f, 0x2b, 0xac, 0x83, 0x9c, 0xc0, 0x3a, 0x55, 0x04, - 0xd9, 0x1c, 0xcb, 0xcb, 0x7c, 0xf7, 0xa6, 0xed, 0x7c, 0x76, 0x95, 0x4d, 0x42, 0xa7, 0x29, 0x8c, - 0x26, 0x9d, 0x3f, 0x82, 0xdb, 0xb2, 0x21, 0x93, 0x8e, 0x58, 0x18, 0xf4, 0x33, 0xff, 0x64, 0xd8, - 0x0b, 0x64, 0x95, 0xf4, 0x3e, 0xd4, 0x99, 0xfc, 0xaf, 0xac, 0xab, 0x66, 0x82, 0x22, 0xf5, 0x5c, - 0x7e, 0x8c, 0x8f, 0x51, 0xce, 0x0a, 0x32, 0x5f, 0x5a, 0x41, 0x2d, 0x56, 0x9a, 0x3a, 0xff, 0x40, - 0x80, 0xcc, 0x4f, 0x3a, 0x79, 0x0c, 0x1b, 0xae, 0x3f, 0x64, 0xf2, 0x36, 0x32, 0xa0, 0xae, 0x15, - 0xd9, 0xce, 0xa5, 0xb4, 0xb8, 0xdd, 0x62, 0xbb, 0x60, 0x12, 0xc1, 0x1f, 0x08, 0xf6, 0x29, 0xe7, - 0xea, 0x52, 0x97, 0x2c, 0x8a, 0x72, 0xa9, 0xe2, 0x9c, 0x94, 0x60, 0x0b, 0xa9, 0x8f, 0xa1, 0x2d, - 0xa5, 0x5c, 0x3b, 0xb5, 0xf3, 0x06, 0xd1, 0x6a, 0x85, 0x31, 0xde, 0x10, 0xfc, 0x7d, 0x3b, 0xb5, - 0x65, 0x7b, 0x68, 0xbb, 0xb3, 0x82, 0xb2, 0x4d, 0x14, 0x2c, 0xcf, 0x09, 0x0a, 0x2e, 0x0a, 0x7e, - 0x02, 0x37, 0xd3, 0x30, 0xb5, 0x3d, 0x4b, 0x8a, 0xc7, 0x89, 0xe5, 0x85, 0xb6, 0xcb, 0x4f, 0x67, - 0x95, 0xbc, 0xab, 0xeb, 0x08, 0xd9, 0x47, 0x84, 0x99, 0x1c, 0x85, 0xb6, 0x8b, 0x27, 0xb4, 0x8d, - 0x69, 0x49, 0x2a, 0xc4, 0x96, 0xb1, 0xb9, 0x35, 0x5d, 0x84, 0xa2, 0xc0, 0x77, 0x55, 0x53, 0x22, - 0xef, 0x4f, 0x02, 0x3b, 0x4a, 0x2e, 0xc2, 0x94, 0xcb, 0xac, 0xa0, 0x8c, 0xd0, 0xb7, 0xcb, 0xb9, - 0x03, 0xc9, 0x3c, 0xc6, 0x33, 0xb1, 0x17, 0x3a, 0xb6, 0x67, 0x89, 0x95, 0x4a, 0xd0, 0x60, 0xcb, - 0x66, 0x03, 0x89, 0xc2, 0x0e, 0xd0, 0x77, 0x63, 0xea, 0x87, 0x29, 0xcd, 0x51, 0x35, 0xe1, 0xbb, - 0x82, 0xaa, 0x60, 0xef, 0xc0, 0x6a, 0x96, 0xd0, 0x58, 0xf4, 0xf5, 0xfc, 0x2a, 0xa5, 0xe2, 0x0c, - 0x5a, 0x36, 0x9b, 0x9c, 0xcc, 0xfb, 0x89, 0x77, 0x3b, 0xe4, 0x43, 0xb8, 0x21, 0xba, 0xea, 0x51, - 0x3b, 0x0e, 0x94, 0x80, 0x9f, 0xe0, 0x49, 0xb4, 0x6c, 0x12, 0x64, 0x1e, 0x09, 0x9e, 0x1c, 0xdd, - 0x0f, 0xe0, 0x8e, 0xcb, 0x12, 0xbe, 0x97, 0x21, 0xd6, 0xb1, 0x9d, 0x0b, 0x6a, 0x5d, 0xb0, 0x54, - 0x36, 0xd3, 0x40, 0xc1, 0x9b, 0x02, 0xc2, 0x45, 0xf6, 0x38, 0xe0, 0x09, 0x4b, 0x45, 0x83, 0x3f, - 0x82, 0x37, 0xe6, 0xa5, 0x7d, 0x96, 0x24, 0x52, 0xbc, 0x89, 0xe2, 0xed, 0x19, 0xf1, 0x63, 0x96, - 0x24, 0x42, 0xfe, 0x23, 0x68, 0xcf, 0x2e, 0xa3, 0x73, 0x41, 0x9d, 0x4b, 0xde, 0xe7, 0x96, 0x36, - 0xb9, 0x6a, 0x0d, 0xf7, 0x38, 0xf3, 0x38, 0xe1, 0x19, 0x5d, 0x92, 0xda, 0x6a, 0xf5, 0xd4, 0xdc, - 0xad, 0xa2, 0x84, 0x81, 0x1c, 0xde, 0x98, 0x9a, 0xbe, 0xdb, 0x50, 0x4d, 0xe8, 0xc8, 0xa7, 0x41, - 0x9a, 0xe0, 0xbd, 0x79, 0xd9, 0xcc, 0xbf, 0x85, 0x73, 0xd9, 0xea, 0x1a, 0x6c, 0x4d, 0x39, 0x97, - 0x2d, 0xee, 0xc0, 0x38, 0xdb, 0xa5, 0x5e, 0x6a, 0x0b, 0x93, 0x24, 0x82, 0x8d, 0x14, 0x34, 0xc3, - 0xfb, 0x50, 0x17, 0x6c, 0x31, 0xdc, 0x75, 0xe4, 0x0b, 0x09, 0x31, 0xc0, 0x77, 0x60, 0xd5, 0x7f, - 0xe1, 0x38, 0x16, 0x0b, 0xa2, 0x2c, 0x15, 0x4a, 0x36, 0xc4, 0xca, 0x71, 0x72, 0x8f, 0x53, 0x51, - 0xd1, 0x03, 0x30, 0x34, 0x9c, 0xd0, 0x76, 0x03, 0x81, 0xad, 0x1c, 0x28, 0x34, 0x2a, 0x64, 0x98, - 0xa5, 0xb9, 0xca, 0xcd, 0x09, 0xf2, 0x04, 0xc9, 0xa8, 0x73, 0x0b, 0x1a, 0x9e, 0x8f, 0x3e, 0x25, - 0x50, 0x37, 0x45, 0xef, 0x3c, 0x9f, 0x3b, 0x12, 0x22, 0xbe, 0x0f, 0xb7, 0x75, 0xd3, 0xc6, 0xc6, - 0xe5, 0x2d, 0xa8, 0x9f, 0xe0, 0x65, 0x78, 0xd9, 0xbc, 0x39, 0xb1, 0xee, 0xde, 0x84, 0x7f, 0xac, - 0x19, 0x9b, 0x10, 0x3e, 0x67, 0xa9, 0x6f, 0x47, 0x5c, 0xee, 0x96, 0x66, 0x6c, 0x28, 0xb7, 0x8b, - 0xac, 0xe3, 0x84, 0xbc, 0x07, 0xeb, 0x3e, 0x0b, 0x2c, 0xe1, 0x17, 0x93, 0x86, 0x6e, 0x8b, 0x75, - 0xf3, 0x59, 0x70, 0xc4, 0x39, 0x03, 0xd5, 0x02, 0x87, 0xdb, 0xe3, 0x39, 0xf8, 0x1d, 0x09, 0xb7, - 0xc7, 0xd3, 0xf0, 0xf7, 0x61, 0x83, 0x6b, 0x97, 0x0e, 0x35, 0xc1, 0xbf, 0x21, 0x3c, 0xdb, 0x67, - 0x81, 0x89, 0xac, 0x29, 0x01, 0x7b, 0x3c, 0x2f, 0x70, 0x57, 0x0a, 0xd8, 0xe3, 0x19, 0x81, 0x53, - 0x58, 0x97, 0xb6, 0x66, 0x85, 0x43, 0x4b, 0x85, 0xe8, 0xf6, 0x3d, 0xdc, 0x19, 0xb6, 0xa6, 0xb6, - 0xa2, 0x05, 0x91, 0xde, 0x5c, 0x93, 0xc2, 0x5a, 0xf0, 0x9f, 0x04, 0x40, 0x5c, 0xd4, 0xa9, 0xc8, - 0x79, 0x5f, 0x0f, 0x80, 0xc7, 0x2f, 0x1c, 0x67, 0x71, 0xe4, 0x14, 0x82, 0x7a, 0xe4, 0xdc, 0x9a, - 0x13, 0xd4, 0x22, 0xe7, 0x4f, 0xe0, 0xae, 0x14, 0xf4, 0x7c, 0x75, 0xda, 0x9e, 0x6a, 0xf6, 0x4d, - 0x94, 0xbe, 0x25, 0x40, 0x47, 0xbe, 0x38, 0x03, 0xea, 0x4d, 0x2f, 0xd4, 0xa0, 0xb7, 0xdf, 0x59, - 0xa8, 0x41, 0xeb, 0xc3, 0x8f, 0xe1, 0xae, 0x30, 0x9d, 0x17, 0x78, 0x37, 0x6a, 0x31, 0x77, 0x2c, - 0xc2, 0x37, 0x56, 0x1c, 0x92, 0x47, 0x6d, 0x57, 0xc4, 0x0d, 0x04, 0x89, 0xfb, 0xd3, 0x9e, 0x3b, - 0xe6, 0x01, 0xfc, 0x30, 0x0e, 0xfd, 0xc1, 0x23, 0xb2, 0x07, 0xf7, 0xaf, 0x51, 0xe0, 0xb2, 0xe4, - 0xb2, 0x4d, 0x51, 0xc5, 0xed, 0xc5, 0x2a, 0xf6, 0x59, 0x72, 0x49, 0x0e, 0x60, 0xeb, 0x1a, 0x25, - 0x18, 0xcb, 0xda, 0x43, 0xd4, 0x72, 0x67, 0xb1, 0x16, 0x0c, 0x66, 0xaf, 0x1e, 0x8c, 0x2a, 0x17, - 0x8e, 0x5e, 0x35, 0x18, 0x59, 0x33, 0x5c, 0x34, 0x18, 0x71, 0x5f, 0x9a, 0xab, 0xb8, 0x58, 0x34, - 0x18, 0x71, 0x73, 0x2a, 0x95, 0x9c, 0xc0, 0xdb, 0xaf, 0x52, 0xf2, 0x82, 0x25, 0x2c, 0xe5, 0xe9, - 0x26, 0xde, 0x56, 0x32, 0x54, 0xb5, 0xb5, 0x48, 0xd5, 0xe7, 0x02, 0xd8, 0xe7, 0x38, 0x32, 0x80, - 0x77, 0x5f, 0xa5, 0xd0, 0x65, 0x89, 0x63, 0xc7, 0x6e, 0xae, 0xf2, 0x39, 0xaa, 0xec, 0x2c, 0x52, - 0xb9, 0xaf, 0xa0, 0x42, 0xe9, 0x21, 0xbc, 0x39, 0xa7, 0x14, 0xc3, 0xef, 0x0b, 0xea, 0xe4, 0x83, - 0xbd, 0x5c, 0x34, 0xe7, 0x3c, 0x9e, 0x7f, 0x4e, 0x1d, 0x39, 0xda, 0x23, 0x78, 0x6b, 0xb1, 0x1e, - 0xac, 0x4b, 0x25, 0xb9, 0x2a, 0x0f, 0x55, 0xdd, 0x9b, 0x57, 0x75, 0x82, 0x38, 0xa1, 0xad, 0xf3, - 0x57, 0x85, 0x3c, 0x83, 0xd2, 0xb2, 0x45, 0xf2, 0x16, 0xb4, 0x7c, 0x16, 0x9c, 0x0d, 0x4e, 0x44, - 0xe2, 0x99, 0x67, 0xeb, 0x0d, 0x41, 0xe5, 0xd0, 0x7e, 0x42, 0x1e, 0xc1, 0x66, 0xc4, 0x22, 0xea, - 0xb1, 0x80, 0x5a, 0x5f, 0x66, 0x34, 0xa3, 0x39, 0x5a, 0x64, 0x6a, 0xeb, 0x8a, 0xfb, 0x53, 0xce, - 0x94, 0x42, 0x1f, 0x43, 0x3b, 0x17, 0x3a, 0x8f, 0xa9, 0x7d, 0x49, 0xe3, 0x5c, 0x4c, 0x26, 0x4c, - 0x8a, 0xbf, 0x2b, 0xd8, 0x42, 0xb0, 0xf3, 0x15, 0x94, 0x07, 0x61, 0x9c, 0x92, 0x77, 0x60, 0xe5, - 0x1c, 0x4f, 0x4f, 0xc9, 0xe2, 0xe3, 0xa3, 0x64, 0x92, 0xb7, 0xa0, 0xc9, 0x12, 0xbc, 0x81, 0xb0, - 0x3d, 0x2e, 0x28, 0xdf, 0x92, 0x4c, 0x13, 0x5f, 0xf3, 0xfc, 0xff, 0x67, 0x45, 0x30, 0xc4, 0x4b, - 0xb3, 0xc3, 0xd8, 0xf6, 0xe9, 0x6e, 0x98, 0x05, 0xfc, 0x80, 0x57, 0xd6, 0x8a, 0xcc, 0x37, 0xf4, - 0xf7, 0x68, 0x08, 0xd0, 0x8a, 0x4e, 0x08, 0x24, 0x1d, 0xa8, 0x65, 0xc1, 0x39, 0x67, 0x51, 0x77, - 0xea, 0x18, 0x36, 0x21, 0x93, 0x4d, 0x58, 0x16, 0x6f, 0x64, 0xe4, 0x64, 0xc8, 0x2f, 0xf2, 0x00, - 0x6a, 0x8e, 0xed, 0x39, 0xfc, 0xac, 0x9e, 0x2c, 0x38, 0x14, 0x4e, 0x98, 0xe4, 0xff, 0x41, 0x7d, - 0xc8, 0x3b, 0x69, 0xe1, 0x2d, 0x9a, 0x7c, 0x23, 0x39, 0x55, 0xb7, 0x41, 0x36, 0x5e, 0xb8, 0x91, - 0x4f, 0xa1, 0xe9, 0xf8, 0x91, 0x48, 0x41, 0xb5, 0x1a, 0x9a, 0x7c, 0xd4, 0x88, 0x98, 0x3d, 0x3f, - 0xe2, 0x29, 0x28, 0x16, 0x77, 0xeb, 0xce, 0xe4, 0xa3, 0xf3, 0xeb, 0x02, 0xd4, 0xb5, 0x49, 0xb9, - 0x6e, 0x3e, 0x10, 0x30, 0x37, 0x1f, 0xdf, 0x81, 0x4a, 0x92, 0xda, 0x72, 0x65, 0xf2, 0x97, 0x94, - 0xb3, 0xf3, 0x6c, 0x0a, 0x10, 0x79, 0x00, 0x25, 0x1a, 0xa8, 0x75, 0x7a, 0x15, 0x96, 0x43, 0x3a, - 0xbf, 0x2d, 0xc0, 0xb2, 0xe0, 0x90, 0x77, 0xa1, 0x36, 0xcc, 0x02, 0xc7, 0xc2, 0xb2, 0xd9, 0x7c, - 0xa5, 0xa6, 0xca, 0x99, 0xfb, 0x34, 0x71, 0xe6, 0x4e, 0xeb, 0xc5, 0xaf, 0x3b, 0xad, 0xeb, 0x65, - 0x8c, 0xd2, 0x75, 0x65, 0x8c, 0x77, 0xa1, 0x82, 0x13, 0x2e, 0x2f, 0x85, 0xd7, 0xe6, 0x7a, 0x6e, - 0x0a, 0xfe, 0xc4, 0x14, 0x2b, 0xd7, 0x99, 0xe2, 0x8f, 0xa1, 0x81, 0x45, 0x1e, 0x16, 0x8c, 0xf8, - 0x10, 0xc8, 0xfb, 0xd0, 0x1c, 0xc9, 0x6f, 0x51, 0x31, 0x98, 0x1f, 0x65, 0x63, 0xa4, 0x09, 0x74, - 0x9e, 0x40, 0x5d, 0x29, 0x18, 0xd0, 0x94, 0x7c, 0x0f, 0x5a, 0x53, 0xf2, 0xca, 0xab, 0xe4, 0xe5, - 0x87, 0xde, 0x96, 0xd9, 0xd4, 0x15, 0x25, 0x9d, 0x5f, 0x14, 0x60, 0x59, 0x3c, 0x4b, 0x24, 0x1f, - 0x69, 0xbd, 0xc8, 0x1f, 0x78, 0xe5, 0x83, 0xd5, 0xda, 0x9b, 0x74, 0x66, 0x40, 0xd3, 0xe4, 0x35, - 0x4b, 0x29, 0x6d, 0x58, 0x79, 0x41, 0x63, 0x7c, 0x8e, 0x21, 0xbc, 0x42, 0x7d, 0x76, 0xde, 0x83, - 0x1a, 0xef, 0x8b, 0x78, 0xda, 0xf5, 0xb5, 0x95, 0xc1, 0xce, 0x9f, 0x17, 0x60, 0x45, 0x3e, 0xa4, - 0x24, 0x0f, 0x01, 0xa2, 0x38, 0x7c, 0x3e, 0x35, 0xe8, 0xd5, 0x89, 0x88, 0x78, 0xe4, 0x56, 0xe3, - 0x10, 0x51, 0x29, 0x7c, 0x0c, 0x9b, 0x23, 0x1a, 0xd0, 0xd8, 0xe6, 0x1b, 0x8a, 0x4c, 0x41, 0xc5, - 0x2b, 0x8a, 0x22, 0xbe, 0xa2, 0xd8, 0xc8, 0xb9, 0x22, 0x11, 0x15, 0xcf, 0x29, 0x5e, 0x2f, 0xbe, - 0xbc, 0x03, 0xad, 0xe9, 0xe7, 0x9a, 0x64, 0x43, 0x95, 0x6b, 0xc4, 0xa1, 0x58, 0x7c, 0x74, 0xff, - 0xb4, 0x24, 0x5e, 0x6e, 0x63, 0x05, 0x7b, 0x0d, 0x9a, 0xfc, 0x37, 0xbf, 0x5b, 0x35, 0x96, 0x14, - 0x29, 0xaf, 0x4f, 0x1b, 0x05, 0x45, 0xca, 0xcb, 0xba, 0x46, 0x91, 0xac, 0xc3, 0x2a, 0x27, 0x69, - 0x05, 0x4d, 0xa3, 0x44, 0x1a, 0x50, 0x45, 0x6d, 0x61, 0xd4, 0x37, 0xca, 0xa4, 0x09, 0x35, 0xfe, - 0x85, 0xb5, 0x30, 0xa3, 0x92, 0x2b, 0xc1, 0x6c, 0x70, 0x67, 0x34, 0x32, 0x96, 0x15, 0xfe, 0x69, - 0xc8, 0x02, 0x63, 0x45, 0x7d, 0x3d, 0x63, 0x9e, 0x67, 0x54, 0xc9, 0x26, 0x10, 0xfe, 0x35, 0xfd, - 0x6e, 0xd3, 0xa8, 0x91, 0x36, 0x6c, 0xe8, 0x74, 0xf5, 0xb2, 0xce, 0x00, 0x42, 0xa0, 0xc5, 0x39, - 0x93, 0x32, 0xaf, 0x51, 0x27, 0xb7, 0x61, 0x13, 0x69, 0x73, 0x97, 0xc8, 0x46, 0x43, 0xb5, 0xc7, - 0x43, 0xb8, 0xd1, 0x24, 0x2d, 0x00, 0xfe, 0x25, 0x7c, 0xca, 0x68, 0xa9, 0x6f, 0xb1, 0xd2, 0xc6, - 0x2a, 0x59, 0x85, 0xfa, 0xe4, 0x7b, 0xdb, 0x30, 0x54, 0x07, 0xa7, 0xe7, 0xdc, 0x58, 0x53, 0x33, - 0xa3, 0xbd, 0x60, 0x34, 0x36, 0xc8, 0x1b, 0xd0, 0x96, 0xd2, 0x73, 0x15, 0x32, 0xe3, 0x46, 0xf7, - 0x13, 0x68, 0xe8, 0xef, 0xf4, 0x78, 0x5b, 0xa7, 0x76, 0x92, 0x9c, 0x5d, 0xc4, 0x61, 0x36, 0xba, - 0x30, 0x96, 0xf8, 0x54, 0xe6, 0xed, 0x18, 0x05, 0x52, 0x85, 0xf2, 0x13, 0x3b, 0xb9, 0x30, 0x8a, - 0xdd, 0xef, 0xc3, 0xea, 0xcc, 0xfb, 0x4c, 0xce, 0xec, 0x9f, 0xf4, 0x0f, 0x8c, 0x25, 0xfe, 0xef, - 0x70, 0x67, 0x70, 0x66, 0x14, 0xc8, 0x06, 0x18, 0x4f, 0x7a, 0x9f, 0x3d, 0xb1, 0xf6, 0x4e, 0x8e, - 0x4f, 0xcd, 0x83, 0xc1, 0xa0, 0x77, 0xd2, 0x37, 0x8a, 0xdd, 0x87, 0x00, 0x93, 0xd7, 0x16, 0xa4, - 0x06, 0x15, 0x3c, 0x10, 0x08, 0xc1, 0x33, 0xf6, 0xec, 0x73, 0xa3, 0x40, 0xea, 0xb0, 0x22, 0xb7, - 0x76, 0xa3, 0xd8, 0x7d, 0x04, 0xab, 0x32, 0x0b, 0xe0, 0x63, 0x7b, 0xc6, 0x02, 0xbe, 0xd5, 0x90, - 0x5e, 0xff, 0xf3, 0x9d, 0xa3, 0xde, 0xbe, 0xd5, 0xeb, 0xef, 0x1f, 0xfc, 0xdc, 0x7a, 0xd6, 0xeb, - 0xef, 0x0b, 0x0d, 0x4f, 0xfa, 0x83, 0x2f, 0x8c, 0x42, 0xf7, 0x1c, 0x36, 0x16, 0x3d, 0xe1, 0x23, - 0x77, 0xe0, 0xa6, 0x92, 0xdc, 0xef, 0x0d, 0xce, 0x76, 0xfa, 0x7b, 0x07, 0xd6, 0xf1, 0xc1, 0x99, - 0xd9, 0xdb, 0x33, 0x96, 0xc8, 0x32, 0x14, 0x8f, 0x3e, 0x34, 0x0a, 0xf8, 0xbb, 0x6d, 0x14, 0x09, - 0xc0, 0xf2, 0xde, 0xc9, 0xa0, 0xd7, 0x3f, 0x30, 0x4a, 0xdc, 0x8e, 0x7a, 0xfd, 0xfe, 0x81, 0x69, - 0x9d, 0x9a, 0x27, 0xfb, 0x3f, 0xdb, 0x3b, 0x33, 0xca, 0xdd, 0x0f, 0x27, 0x8f, 0x11, 0x71, 0x28, - 0x1b, 0x60, 0xf4, 0x82, 0x17, 0xb6, 0xc7, 0xdc, 0x9c, 0x66, 0x2c, 0xf1, 0xb1, 0x9c, 0x88, 0x78, - 0x6a, 0x14, 0xba, 0xff, 0x7f, 0xf2, 0xb6, 0x0a, 0x45, 0x6e, 0xc2, 0xba, 0xfe, 0x2d, 0xc5, 0x8d, - 0xa5, 0x59, 0x46, 0x3f, 0x1c, 0x38, 0x61, 0x4c, 0x8d, 0x02, 0xb9, 0x05, 0x37, 0x74, 0xc6, 0x17, - 0x2c, 0xbd, 0x10, 0xac, 0x62, 0xf7, 0x4f, 0xf4, 0xe7, 0x6e, 0xf8, 0x12, 0x8d, 0x1b, 0xe2, 0x0c, - 0x69, 0xd2, 0x84, 0xd0, 0xa4, 0xf3, 0x06, 0x17, 0x61, 0xe6, 0xb9, 0x46, 0x41, 0xb6, 0xae, 0xb3, - 0x8e, 0xb3, 0x24, 0x35, 0x8a, 0x0b, 0xf4, 0x71, 0x46, 0x3f, 0x4c, 0x8d, 0x52, 0xf7, 0x97, 0x05, - 0x20, 0xf3, 0x6f, 0xda, 0xa6, 0x45, 0x14, 0xb5, 0x1f, 0x06, 0x7c, 0x6e, 0xee, 0xc0, 0xcd, 0x05, - 0xaf, 0xe0, 0xc2, 0x10, 0xcd, 0xed, 0x2e, 0xdc, 0x9a, 0x67, 0xee, 0x53, 0xc1, 0x2e, 0x72, 0xdb, - 0x5e, 0xa0, 0x97, 0x47, 0x05, 0x6a, 0x94, 0xba, 0x7f, 0xac, 0xf7, 0x45, 0xbd, 0x34, 0x9c, 0x1e, - 0x32, 0xa7, 0x4e, 0x66, 0x63, 0x73, 0x56, 0xe0, 0x8b, 0x30, 0xe6, 0x53, 0xd1, 0x86, 0x8d, 0x69, - 0xfa, 0x29, 0xbe, 0x31, 0x34, 0x8a, 0x0b, 0x38, 0xf8, 0xc0, 0xc2, 0x28, 0x75, 0x3f, 0x9a, 0x79, - 0xa8, 0xa5, 0xbc, 0x6b, 0x7a, 0x89, 0x0d, 0x68, 0x70, 0xc2, 0x61, 0xe6, 0x79, 0x29, 0x1d, 0xf3, - 0x19, 0xfc, 0xbb, 0x02, 0x54, 0xd5, 0x55, 0xff, 0x24, 0x20, 0x06, 0x34, 0xc6, 0x50, 0xb5, 0x44, - 0x6e, 0xc0, 0x1a, 0x86, 0x36, 0x3a, 0x4c, 0x4f, 0xb2, 0x54, 0x92, 0x0b, 0x2a, 0x24, 0x98, 0x6c, - 0x74, 0xa1, 0xd1, 0x8b, 0xaa, 0x01, 0x75, 0x61, 0x6b, 0x94, 0xb8, 0x85, 0x62, 0xf8, 0x0c, 0x52, - 0x96, 0x53, 0xcb, 0x7c, 0x56, 0xa6, 0xd4, 0xe6, 0xac, 0x0a, 0x5f, 0x03, 0x25, 0x30, 0xcf, 0x5e, - 0xee, 0x6e, 0x41, 0x43, 0x7f, 0x62, 0xa0, 0x5a, 0xe4, 0x51, 0x42, 0x74, 0xb9, 0xfb, 0x29, 0xac, - 0xcd, 0x5d, 0x67, 0x72, 0xff, 0xea, 0xf5, 0x85, 0x6b, 0x1c, 0xf7, 0xfa, 0xd6, 0xf1, 0xce, 0xcf, - 0x8d, 0x02, 0x97, 0xdd, 0x3d, 0x3a, 0x39, 0x39, 0xb6, 0x0e, 0x7b, 0x47, 0x67, 0x07, 0xa6, 0x51, - 0xec, 0x76, 0x67, 0x64, 0x31, 0xce, 0xf0, 0x78, 0x71, 0xb2, 0xb7, 0x73, 0x64, 0x2c, 0x71, 0xf7, - 0xfc, 0xec, 0xe8, 0x64, 0x77, 0xe7, 0xc8, 0x28, 0x74, 0x77, 0x61, 0x6d, 0xee, 0x12, 0x87, 0x4f, - 0xf9, 0x61, 0x18, 0x3b, 0x54, 0x90, 0x44, 0x7c, 0xd8, 0xc9, 0xd2, 0xd0, 0x28, 0xf0, 0xa8, 0x8d, - 0x2c, 0xb1, 0x2f, 0xb0, 0x60, 0x64, 0x14, 0xbb, 0x3f, 0x86, 0xd5, 0x99, 0x1c, 0x98, 0x47, 0xc0, - 0xc3, 0xd0, 0xf3, 0xc2, 0x97, 0x1c, 0x81, 0x01, 0xf1, 0x34, 0xa6, 0x0e, 0x75, 0xf9, 0x67, 0x81, - 0x07, 0xeb, 0x3d, 0x2c, 0xb3, 0xa7, 0x66, 0xf8, 0xd2, 0x28, 0x76, 0x4f, 0xc0, 0x98, 0xcd, 0x3b, - 0xc9, 0x0a, 0x94, 0x7a, 0x41, 0x6a, 0x2c, 0xf1, 0x8e, 0x1f, 0x7a, 0xa1, 0x9d, 0x8a, 0xf0, 0xb6, - 0x4f, 0x1d, 0xe6, 0xdb, 0x9e, 0x51, 0xe4, 0xfb, 0xc1, 0xbe, 0x9d, 0x52, 0x7e, 0xaa, 0x11, 0x7b, - 0xd9, 0x7e, 0x26, 0xaa, 0xff, 0x46, 0x99, 0x87, 0xbe, 0x99, 0x2c, 0x94, 0x0f, 0x81, 0x9f, 0xc6, - 0xc5, 0xf0, 0xb1, 0xb5, 0xc4, 0x28, 0xe0, 0x54, 0xf0, 0xe4, 0x24, 0x31, 0x8a, 0xbb, 0xdf, 0xfe, - 0xcd, 0xef, 0xee, 0x15, 0xfe, 0xf9, 0x77, 0xf7, 0x0a, 0xff, 0xf6, 0xbb, 0x7b, 0x85, 0xbf, 0xf8, - 0xf7, 0x7b, 0x4b, 0x70, 0xc3, 0x09, 0xfd, 0x87, 0x3c, 0x71, 0x71, 0xec, 0xe8, 0x61, 0xca, 0xdc, - 0x73, 0xdc, 0xca, 0x4f, 0x0b, 0xff, 0x13, 0x00, 0x00, 0xff, 0xff, 0x5b, 0x33, 0x34, 0xa0, 0x9b, + 0x26, 0xb7, 0x9a, 0x3b, 0xb3, 0xc0, 0xf7, 0x01, 0x85, 0x62, 0x55, 0x76, 0x33, 0xc5, 0x7a, 0x4d, + 0x3d, 0xa4, 0xe6, 0x7c, 0x30, 0xb0, 0xe7, 0x3d, 0x19, 0x5e, 0x78, 0xe1, 0x83, 0x4f, 0x3e, 0xd9, + 0xb0, 0xe1, 0x83, 0xff, 0x01, 0xfb, 0xb8, 0x17, 0x03, 0xbe, 0x7a, 0x0f, 0x86, 0xb1, 0x3e, 0x19, + 0xf0, 0xcd, 0x37, 0x9f, 0x8c, 0x8c, 0xcc, 0xac, 0xce, 0x7e, 0x88, 0xa3, 0xf1, 0xee, 0xc1, 0xa7, + 0xee, 0x8a, 0xf8, 0x45, 0x64, 0x64, 0x66, 0x44, 0x64, 0xe4, 0x03, 0x5a, 0x74, 0x4c, 0x9d, 0x2c, + 0x0d, 0xe3, 0x87, 0x51, 0x1c, 0xa6, 0x21, 0x29, 0xa7, 0x2c, 0x3a, 0xbf, 0x6d, 0xd0, 0x71, 0x14, + 0xd3, 0x24, 0x61, 0x61, 0x20, 0xe8, 0xb7, 0x1b, 0x89, 0x73, 0x41, 0x7d, 0x5b, 0x7e, 0x6d, 0x8c, + 0xc2, 0x51, 0x88, 0x7f, 0xdf, 0xe7, 0xff, 0x04, 0xb5, 0xf3, 0x57, 0x35, 0xa8, 0x1e, 0x48, 0x75, + 0xe4, 0x2d, 0x28, 0xa6, 0x51, 0xbb, 0xb0, 0x55, 0x78, 0xd0, 0xda, 0x6e, 0x3d, 0xe4, 0x5a, 0x1f, + 0x72, 0xde, 0xd9, 0x55, 0x44, 0x77, 0xcb, 0xbf, 0xf9, 0x97, 0xfb, 0x4b, 0x66, 0x31, 0x8d, 0x48, + 0x17, 0xaa, 0xe9, 0xb9, 0x67, 0x25, 0x8e, 0x1d, 0xb4, 0x8b, 0x5b, 0x85, 0x07, 0xf5, 0xed, 0x55, + 0x81, 0x3d, 0xb3, 0xcf, 0x3d, 0x3a, 0x70, 0xec, 0xc0, 0x5c, 0x49, 0xcf, 0x3d, 0xfe, 0x87, 0x63, + 0x99, 0x3b, 0x16, 0xd8, 0x92, 0x8e, 0xed, 0x05, 0x2e, 0x1d, 0x0b, 0x2c, 0x73, 0xf1, 0x0f, 0x79, + 0x0f, 0x6a, 0x09, 0xf5, 0xa8, 0x93, 0xb2, 0x30, 0x68, 0x97, 0x75, 0xf0, 0x40, 0x91, 0xcd, 0x09, + 0x82, 0x3c, 0x82, 0xba, 0x3d, 0x1a, 0xc5, 0x74, 0x64, 0xa3, 0x40, 0x05, 0x05, 0xd6, 0x84, 0xc0, + 0xce, 0x84, 0x61, 0xea, 0x28, 0x72, 0x0f, 0xca, 0x69, 0x18, 0xf5, 0xdb, 0xcb, 0x88, 0x06, 0x69, + 0x77, 0x18, 0xf5, 0x4d, 0xa4, 0x93, 0x37, 0xa1, 0xe2, 0x31, 0x9f, 0xa5, 0xed, 0x15, 0x04, 0xd4, + 0x05, 0xe0, 0x88, 0x93, 0x4c, 0xc1, 0x21, 0x7b, 0xb0, 0x46, 0xc7, 0xce, 0x85, 0x1d, 0x8c, 0xa8, + 0x15, 0x53, 0x87, 0xb2, 0x17, 0x34, 0x6e, 0x57, 0x11, 0xbe, 0xa9, 0xc6, 0x4c, 0xb0, 0x4d, 0xc9, + 0x35, 0x0d, 0x3a, 0x43, 0xe1, 0x76, 0x3c, 0x0f, 0x59, 0xd0, 0xae, 0xe9, 0x76, 0x3c, 0x0d, 0x59, + 0x60, 0x22, 0x9d, 0xdc, 0x87, 0xba, 0x9a, 0x64, 0x8b, 0xb9, 0x6d, 0xd8, 0x2a, 0x3c, 0xa8, 0x99, + 0xa0, 0x48, 0x3d, 0x97, 0x2b, 0xb8, 0x64, 0x9e, 0xd7, 0xae, 0xeb, 0x0a, 0x9e, 0x31, 0xcf, 0x33, + 0x91, 0x4e, 0x7e, 0x08, 0xab, 0xb9, 0x95, 0x09, 0x0d, 0x5c, 0x1a, 0xb7, 0x1b, 0x08, 0xdd, 0x98, + 0xb6, 0x71, 0x80, 0x3c, 0xb3, 0x45, 0xa7, 0xbe, 0xc9, 0x07, 0x00, 0xa7, 0x71, 0xf8, 0x5c, 0x4e, + 0x46, 0x13, 0x25, 0x0d, 0x21, 0x39, 0xa1, 0x9b, 0x1a, 0x86, 0x3c, 0x85, 0x8d, 0xc8, 0x8e, 0x53, + 0xc6, 0x3f, 0xac, 0x94, 0x7b, 0x82, 0x98, 0xf5, 0x16, 0xca, 0xb6, 0xa5, 0xac, 0x42, 0x4c, 0x5c, + 0x85, 0x44, 0x73, 0x34, 0xde, 0xb9, 0x24, 0x8c, 0xd3, 0xf6, 0xaa, 0xde, 0xb9, 0x41, 0x18, 0xa7, + 0x26, 0xd2, 0xc9, 0x5b, 0xb0, 0xfc, 0x92, 0x05, 0x6e, 0xf8, 0xb2, 0x6d, 0x20, 0xa2, 0x21, 0x10, + 0x5f, 0x20, 0xcd, 0x94, 0x3c, 0xd2, 0x87, 0x37, 0x87, 0x2c, 0xa0, 0xd6, 0x28, 0xb6, 0x59, 0x40, + 0x5d, 0x2b, 0xb9, 0xc8, 0x86, 0x43, 0x6e, 0x56, 0x1a, 0x53, 0xdb, 0xb7, 0x9c, 0x30, 0x0b, 0xd2, + 0xf6, 0xda, 0x56, 0xe1, 0x41, 0x59, 0x3a, 0xf7, 0x5d, 0x0e, 0xff, 0x4c, 0xa0, 0x07, 0x02, 0x3c, + 0x40, 0xec, 0x1e, 0x87, 0x92, 0xa7, 0x70, 0x7f, 0xa1, 0xbe, 0x73, 0x3b, 0x75, 0x2e, 0xac, 0x84, + 0x7d, 0x45, 0xdb, 0x44, 0xd3, 0x76, 0x67, 0x5e, 0xdb, 0x2e, 0x47, 0x0e, 0xd8, 0x57, 0x94, 0xf7, + 0x80, 0x8e, 0x23, 0x3b, 0x70, 0xdb, 0xeb, 0x7a, 0x0f, 0x0e, 0x90, 0x66, 0x4a, 0x1e, 0x79, 0x17, + 0x56, 0xc4, 0xbf, 0xed, 0xf6, 0x06, 0xc2, 0x9a, 0x3a, 0x6c, 0xdb, 0x54, 0x5c, 0x3e, 0xdb, 0xe7, + 0x71, 0x68, 0xbb, 0x8e, 0x9d, 0xa4, 0xd6, 0x97, 0x19, 0x8d, 0xaf, 0xda, 0x37, 0xf4, 0xd9, 0xde, + 0x55, 0xcc, 0x9f, 0x72, 0x9e, 0xd9, 0x3a, 0x9f, 0xfa, 0x26, 0x8f, 0xa1, 0xc1, 0x78, 0x3c, 0x5a, + 0x5e, 0x18, 0x5e, 0x66, 0x51, 0xbb, 0xad, 0xc7, 0x12, 0x46, 0xea, 0x51, 0x18, 0x5e, 0xfe, 0x2c, + 0x32, 0xeb, 0x4c, 0x7d, 0x64, 0x11, 0xb9, 0x0b, 0x10, 0xd9, 0x31, 0x0d, 0x52, 0x8b, 0xb9, 0xe3, + 0xf6, 0xad, 0xad, 0xc2, 0x83, 0xa6, 0x59, 0x13, 0x94, 0x9e, 0x3b, 0x26, 0xa7, 0xb0, 0x49, 0xc7, + 0x91, 0x67, 0xb3, 0xc0, 0x1a, 0x86, 0xb1, 0xe5, 0x84, 0x41, 0x20, 0xdd, 0xe9, 0x36, 0xaa, 0xbf, + 0x9d, 0xf7, 0x85, 0x63, 0x0e, 0xc3, 0x78, 0x2f, 0x47, 0x98, 0x1b, 0x74, 0x01, 0xb5, 0xf3, 0x37, + 0x25, 0x68, 0x4d, 0xfb, 0x2d, 0x79, 0xa0, 0x65, 0x2c, 0x32, 0xed, 0xd9, 0x73, 0x59, 0x6b, 0x8d, + 0x06, 0x4e, 0xe8, 0x52, 0xd7, 0x4a, 0xed, 0xe4, 0xd2, 0xf2, 0x69, 0x6a, 0xb7, 0x8b, 0x5b, 0xa5, + 0x07, 0x0d, 0x73, 0x55, 0x32, 0xce, 0xec, 0xe4, 0xf2, 0x98, 0xa6, 0x36, 0xf9, 0x10, 0x5a, 0x13, + 0x5f, 0xbe, 0xa4, 0x57, 0x49, 0xbb, 0xb4, 0x55, 0x9a, 0x78, 0xe2, 0xc1, 0x38, 0x8a, 0xcd, 0x66, + 0x8e, 0x78, 0x46, 0xaf, 0x12, 0xf2, 0x16, 0x54, 0x9c, 0x0b, 0xe6, 0xb9, 0x32, 0x71, 0x69, 0xd9, + 0x93, 0x07, 0xac, 0x29, 0x98, 0xe4, 0x6d, 0xa8, 0xa4, 0x57, 0x11, 0x4d, 0xda, 0x15, 0xd4, 0x27, + 0xd3, 0xdb, 0x21, 0xa3, 0x9e, 0xcb, 0xcd, 0x35, 0x05, 0x97, 0x7c, 0x0c, 0xab, 0xb6, 0xe7, 0x59, + 0x43, 0x4e, 0xb7, 0x84, 0xc0, 0xf2, 0x62, 0x81, 0xa6, 0xed, 0x79, 0xf9, 0x57, 0x42, 0x7e, 0x08, + 0x75, 0x27, 0xf4, 0xd5, 0x32, 0x80, 0x49, 0xac, 0xb5, 0x7d, 0x43, 0x08, 0xed, 0x4d, 0x18, 0xc7, + 0xa1, 0xab, 0x86, 0x46, 0xc7, 0x93, 0x23, 0xd8, 0xcc, 0x22, 0x15, 0x1e, 0x29, 0xd5, 0x06, 0xaa, + 0x8a, 0xcd, 0xdf, 0x94, 0xbd, 0x12, 0xc3, 0xb5, 0x7b, 0x95, 0xd2, 0x64, 0xe0, 0x31, 0x87, 0x9a, + 0xeb, 0x4a, 0x6c, 0x2f, 0xa5, 0x6a, 0x14, 0x3b, 0xbf, 0x2c, 0x40, 0x5d, 0x73, 0x1e, 0xf2, 0x01, + 0x6c, 0x08, 0x2f, 0xbb, 0xb0, 0x03, 0xd7, 0xa3, 0x56, 0x38, 0x1c, 0x26, 0x34, 0x4d, 0xda, 0x85, + 0xad, 0xd2, 0x83, 0xa6, 0x49, 0x90, 0xf7, 0x04, 0x59, 0x27, 0x82, 0xc3, 0x3d, 0xec, 0x92, 0xd2, + 0xc8, 0x0a, 0x63, 0x9e, 0xbf, 0xf8, 0x5a, 0x53, 0x35, 0x6b, 0x9c, 0x72, 0xc2, 0x09, 0x7c, 0x71, + 0xc1, 0x61, 0x8d, 0x69, 0x20, 0x27, 0x68, 0x76, 0xd8, 0x73, 0x7e, 0xe7, 0x13, 0x58, 0x9b, 0x33, + 0x9b, 0x7c, 0x0b, 0x9a, 0xba, 0x4f, 0x08, 0x53, 0x1a, 0x66, 0x43, 0xf3, 0x87, 0xa4, 0xf3, 0xdb, + 0x02, 0x18, 0xb3, 0x19, 0x7d, 0xb1, 0x37, 0x15, 0x16, 0x7b, 0xd3, 0x07, 0x50, 0xd7, 0x67, 0xb2, + 0xb8, 0x78, 0x26, 0x61, 0x38, 0x99, 0xc6, 0x0e, 0x7a, 0x75, 0xe9, 0x55, 0x5e, 0x8d, 0xfe, 0xbc, + 0x0f, 0xf7, 0xc3, 0x98, 0x8d, 0x58, 0x60, 0x7b, 0x38, 0x57, 0x51, 0xec, 0x86, 0x4e, 0x46, 0x63, + 0xcd, 0x9e, 0x32, 0xda, 0x73, 0x47, 0xc1, 0xf6, 0x52, 0x7a, 0x2a, 0x41, 0xf9, 0x1c, 0xfd, 0xaa, + 0x04, 0x8d, 0x9d, 0x7e, 0x1f, 0xd3, 0x40, 0x2f, 0x18, 0x86, 0xe4, 0x63, 0x00, 0xcc, 0x1f, 0x68, + 0xec, 0x74, 0x60, 0x29, 0x9c, 0x16, 0x58, 0xb5, 0x2f, 0x15, 0x81, 0xf4, 0x60, 0xd5, 0x65, 0x49, + 0x6a, 0x07, 0x0e, 0xe5, 0xad, 0xc7, 0xcc, 0xc1, 0x09, 0x6b, 0xa9, 0x38, 0xff, 0x9c, 0x3a, 0x69, + 0x18, 0xef, 0x4b, 0xc8, 0x31, 0x22, 0xa4, 0x96, 0x96, 0x3b, 0x45, 0x25, 0xb7, 0xa0, 0x92, 0x86, + 0x91, 0x75, 0x89, 0x23, 0xd0, 0x94, 0x20, 0xbe, 0x3e, 0x3f, 0x23, 0x6f, 0x73, 0x07, 0xf7, 0x32, + 0x3f, 0xb0, 0x02, 0xdb, 0xa7, 0x18, 0x6c, 0x35, 0x09, 0x00, 0xc1, 0xe8, 0xdb, 0x3e, 0x25, 0x6f, + 0x42, 0x4d, 0xc2, 0x98, 0x8b, 0x95, 0x41, 0x49, 0x82, 0xaa, 0x82, 0x8c, 0x0b, 0x68, 0x3d, 0xa6, + 0x43, 0xeb, 0x05, 0x75, 0xac, 0xe1, 0xa3, 0x6d, 0x2c, 0x08, 0x1a, 0x66, 0x2d, 0xa6, 0xc3, 0xcf, + 0xa9, 0x73, 0xf8, 0x68, 0x9b, 0xdc, 0x87, 0xaa, 0xf0, 0x56, 0xe6, 0xe2, 0xea, 0xae, 0x34, 0xac, + 0x20, 0xb5, 0xc7, 0x93, 0x73, 0xc3, 0xb7, 0xc7, 0x96, 0xb2, 0x1d, 0xd7, 0xe8, 0x82, 0x8a, 0x2a, + 0xdf, 0x1e, 0xab, 0xae, 0x92, 0x2e, 0xb4, 0x2e, 0x82, 0xe4, 0xa5, 0x45, 0x87, 0x56, 0x42, 0xed, + 0xd8, 0xb9, 0xc0, 0x64, 0xae, 0xfa, 0xd5, 0xe0, 0xbc, 0x83, 0xe1, 0x00, 0x39, 0x4f, 0xcb, 0xd5, + 0x15, 0xa3, 0xda, 0xf9, 0x75, 0x01, 0x5a, 0x87, 0x67, 0x83, 0xdd, 0x30, 0xf4, 0xa8, 0x1d, 0x9c, + 0xd1, 0xd8, 0x27, 0xdf, 0x87, 0x5a, 0x4a, 0x63, 0x5f, 0x9f, 0x16, 0xb9, 0xa6, 0x4e, 0x03, 0xb5, + 0xc9, 0xa9, 0xa6, 0xf2, 0x9b, 0xb4, 0xa1, 0x9c, 0xd2, 0x71, 0x8a, 0x13, 0x52, 0xcb, 0xc7, 0x93, + 0x8e, 0x53, 0xf2, 0x1e, 0xac, 0x46, 0x17, 0xb1, 0x9d, 0xd0, 0x49, 0x3f, 0xf4, 0x41, 0x6f, 0x09, + 0xa6, 0xea, 0x4a, 0xe7, 0xcf, 0x0b, 0xb0, 0x3a, 0x69, 0x4f, 0x2c, 0x1e, 0x5d, 0xa8, 0x04, 0xa1, + 0x4b, 0x45, 0xf0, 0xe4, 0x2b, 0xce, 0x04, 0xd5, 0x0f, 0x5d, 0x6a, 0x0a, 0x08, 0x6f, 0x4e, 0x7a, + 0x57, 0x78, 0x49, 0x03, 0xf6, 0x95, 0x8c, 0x6a, 0x65, 0x53, 0x4b, 0xb8, 0x93, 0xe2, 0x91, 0x87, + 0x60, 0x04, 0xa3, 0xd8, 0xf6, 0x05, 0x5c, 0x2c, 0xb1, 0x53, 0xe6, 0x21, 0x17, 0xf1, 0x7c, 0x55, + 0xed, 0xfc, 0xe7, 0xd4, 0xb8, 0xf1, 0x86, 0xc9, 0x87, 0x50, 0x09, 0x1d, 0x27, 0x8b, 0xe5, 0x98, + 0xdd, 0x98, 0xb5, 0xee, 0x84, 0x33, 0xa5, 0x3a, 0x81, 0x24, 0x9f, 0x42, 0xd5, 0x0f, 0x5d, 0x36, + 0x64, 0xd2, 0xba, 0x05, 0x23, 0x7d, 0x2c, 0xf9, 0x6a, 0xa4, 0x15, 0x9e, 0x74, 0xf9, 0x48, 0xc7, + 0xbe, 0xac, 0x75, 0x37, 0x16, 0xcd, 0xd0, 0x13, 0x1c, 0xfb, 0xd8, 0x27, 0x3f, 0x82, 0x56, 0x92, + 0x9d, 0x5b, 0x93, 0xb2, 0x5d, 0xae, 0x1d, 0x73, 0x36, 0xe2, 0x38, 0x3f, 0x59, 0x32, 0x9b, 0x49, + 0x76, 0x7e, 0x90, 0xa3, 0x77, 0x97, 0xa1, 0xcc, 0x47, 0xb5, 0xf3, 0xeb, 0x12, 0x34, 0x0e, 0xcf, + 0x06, 0xaf, 0x15, 0xc3, 0x0a, 0xb7, 0x38, 0x86, 0x75, 0x9f, 0x2f, 0x2e, 0xf2, 0xf9, 0x2e, 0xac, + 0x88, 0x00, 0x52, 0x2b, 0xa2, 0xa1, 0xd6, 0x16, 0x8c, 0xaa, 0x60, 0x18, 0x9a, 0x0a, 0x40, 0xde, + 0x84, 0x86, 0x16, 0xaa, 0x09, 0x66, 0xa3, 0x9a, 0x59, 0x9f, 0x44, 0x69, 0x42, 0xbe, 0x95, 0x1b, + 0xca, 0xbd, 0xb3, 0xa2, 0x79, 0x82, 0x34, 0x4a, 0xba, 0xe8, 0xac, 0xcf, 0x2c, 0x5f, 0xe3, 0x33, + 0xeb, 0x2a, 0x79, 0x00, 0x16, 0x24, 0x22, 0x6d, 0x7c, 0xa2, 0x1a, 0x1a, 0x66, 0x81, 0x83, 0xe1, + 0xd7, 0xda, 0x5e, 0x97, 0x65, 0xa5, 0x63, 0x7b, 0x76, 0x7c, 0x98, 0x05, 0xce, 0x80, 0x8d, 0xa6, + 0x5a, 0xe7, 0x34, 0xf2, 0x29, 0x34, 0xcf, 0xc5, 0x2c, 0xc8, 0xba, 0x6a, 0xf3, 0x9a, 0x39, 0x32, + 0x1b, 0xe7, 0xda, 0x17, 0x0f, 0xe3, 0x35, 0x31, 0x32, 0x76, 0x8c, 0x0b, 0x21, 0xce, 0xce, 0x0f, + 0x00, 0xc4, 0x20, 0x6b, 0xb3, 0x73, 0x53, 0x1f, 0x46, 0x09, 0xd6, 0xa7, 0x88, 0x29, 0x02, 0xf9, + 0x14, 0x5a, 0xc3, 0x34, 0x11, 0xb6, 0x58, 0x2c, 0x18, 0x86, 0xd2, 0x69, 0x66, 0xe6, 0x97, 0xb7, + 0xf4, 0x64, 0xc9, 0x6c, 0x0c, 0xd3, 0x24, 0xff, 0xde, 0x5d, 0x81, 0x0a, 0x2a, 0xea, 0xfc, 0x63, + 0x05, 0x6a, 0x93, 0x6a, 0xfb, 0x3e, 0x54, 0x45, 0xbd, 0xce, 0x5c, 0x34, 0x27, 0x9f, 0x75, 0xa4, + 0x4e, 0xcf, 0x7a, 0xf1, 0xeb, 0x66, 0xbd, 0x0d, 0x65, 0x97, 0x26, 0x0e, 0x06, 0x40, 0x55, 0xa5, + 0x1a, 0x4e, 0x21, 0xdf, 0x01, 0x12, 0xc5, 0xcc, 0xb7, 0xe3, 0x2b, 0x2b, 0xcf, 0xcd, 0xc2, 0x2b, + 0x4a, 0xa6, 0x21, 0x39, 0x52, 0xa3, 0x9b, 0x90, 0x9f, 0x80, 0x11, 0xd0, 0x71, 0x6a, 0xc5, 0xd4, + 0x76, 0x2d, 0x1a, 0x8c, 0x58, 0x40, 0xd1, 0x41, 0x5a, 0xaa, 0xf1, 0x03, 0xa4, 0x69, 0x83, 0xd4, + 0xe2, 0x78, 0x93, 0xda, 0xae, 0xe0, 0x90, 0xef, 0xc0, 0x72, 0xcc, 0x57, 0x4c, 0x55, 0x3b, 0xc9, + 0xda, 0xe0, 0x19, 0xbd, 0x32, 0x39, 0x59, 0x4a, 0x49, 0x0c, 0xf9, 0x1e, 0xdc, 0x52, 0xd6, 0x45, + 0x31, 0x1d, 0xb2, 0xb1, 0x6e, 0xe4, 0x0a, 0x1a, 0xb9, 0x29, 0x01, 0xa7, 0xc8, 0x9f, 0x98, 0x3a, + 0x5d, 0xa5, 0x54, 0x67, 0xab, 0x94, 0x2d, 0x68, 0xb0, 0xc4, 0x1a, 0xf2, 0xca, 0x1c, 0x37, 0x44, + 0x35, 0x04, 0x00, 0x4b, 0x0e, 0xed, 0x24, 0xc5, 0x09, 0x38, 0x86, 0xbb, 0x51, 0x96, 0x5c, 0x50, + 0xd7, 0x72, 0xc3, 0x97, 0x81, 0x35, 0x64, 0x5e, 0x4a, 0xb1, 0x60, 0x76, 0xb1, 0xbe, 0x4c, 0xda, + 0x30, 0x57, 0x7d, 0xde, 0x16, 0x02, 0xfb, 0xe1, 0xcb, 0xe0, 0x10, 0xe1, 0x7b, 0x39, 0x9a, 0xec, + 0xc1, 0x7a, 0x9c, 0x05, 0x29, 0xf3, 0xa9, 0x52, 0xe5, 0xb1, 0x24, 0x6d, 0xd7, 0x51, 0x89, 0xf4, + 0x7a, 0x53, 0x00, 0x84, 0xac, 0xb9, 0x16, 0xeb, 0x9f, 0x47, 0x2c, 0xe1, 0x51, 0x67, 0xf0, 0xd5, + 0xed, 0xa5, 0xcd, 0x52, 0x0b, 0x55, 0xf9, 0x09, 0x6e, 0x20, 0x2b, 0x72, 0xdc, 0x9a, 0xbe, 0x3d, + 0xfe, 0xc2, 0x66, 0xe9, 0x19, 0xf3, 0xe9, 0x71, 0x42, 0xde, 0x87, 0x9a, 0x1d, 0xa8, 0x10, 0x69, + 0xea, 0x1e, 0xa9, 0x57, 0x17, 0x66, 0xd5, 0x0e, 0xe4, 0xaa, 0xf1, 0x0c, 0x6e, 0x64, 0x09, 0x75, + 0xe5, 0x28, 0xdb, 0xb1, 0x85, 0x9e, 0x49, 0x93, 0x76, 0x4b, 0xaf, 0x34, 0xe7, 0xa2, 0xc7, 0x5c, + 0xe7, 0x52, 0x53, 0x64, 0x9a, 0x74, 0xfe, 0xa3, 0x0c, 0x64, 0x7e, 0x6b, 0xf9, 0xbf, 0xd3, 0xb1, + 0xaf, 0x75, 0xb4, 0xca, 0xb5, 0x8e, 0xf6, 0x2d, 0x98, 0x6c, 0x3a, 0x10, 0xbe, 0x8c, 0xf0, 0x46, + 0x4e, 0xe4, 0xa0, 0x59, 0x77, 0x5b, 0xf9, 0xe6, 0xee, 0x56, 0xfd, 0x43, 0xb8, 0x5b, 0xed, 0xf7, + 0x76, 0x37, 0x78, 0x4d, 0x77, 0xab, 0xff, 0x3e, 0xee, 0xd6, 0xf8, 0x1f, 0xb8, 0xdb, 0x7f, 0x55, + 0xa0, 0xfc, 0x34, 0x64, 0x01, 0xf9, 0x10, 0x6a, 0xcf, 0x43, 0x16, 0xe8, 0x99, 0xbc, 0x35, 0x39, + 0xca, 0xd1, 0x4b, 0xb1, 0xe7, 0xf2, 0x9b, 0x2f, 0xfa, 0x28, 0x42, 0xc7, 0xd4, 0x11, 0x72, 0x45, + 0x7d, 0x7d, 0xe6, 0x72, 0x33, 0x47, 0x6e, 0x8d, 0xe7, 0x1a, 0xed, 0x9b, 0xec, 0x79, 0x78, 0x15, + 0xcc, 0x82, 0x80, 0xc6, 0xb8, 0x3f, 0x2f, 0xeb, 0x55, 0x30, 0x92, 0xf9, 0x26, 0xfd, 0x03, 0x68, + 0x79, 0x74, 0x98, 0x5a, 0x68, 0x13, 0xee, 0x74, 0x2b, 0x73, 0x93, 0xdf, 0xe0, 0x08, 0x6e, 0x18, + 0x6e, 0x74, 0xb7, 0x61, 0x35, 0x66, 0xa3, 0x0b, 0x5d, 0x64, 0x79, 0x7e, 0x73, 0x8c, 0x90, 0x5c, + 0xe6, 0x03, 0xa8, 0x47, 0x71, 0x78, 0x4e, 0xe5, 0x0e, 0x68, 0xe5, 0x15, 0x3b, 0x20, 0xc4, 0x88, + 0x1d, 0xd0, 0x07, 0x50, 0x3f, 0xcf, 0x58, 0xbe, 0x67, 0xaa, 0xbe, 0x42, 0x02, 0x31, 0x42, 0xe2, + 0x11, 0xac, 0x62, 0x4f, 0x34, 0x3f, 0xae, 0xcd, 0xd9, 0x85, 0x9d, 0xd5, 0x7c, 0xf7, 0xbb, 0x60, + 0x88, 0xce, 0x5c, 0x9b, 0x6c, 0x45, 0x87, 0xa7, 0xc5, 0xc2, 0xf4, 0x62, 0x3a, 0x68, 0xea, 0xf3, + 0x62, 0x88, 0xd1, 0xc4, 0x9e, 0xc0, 0x1d, 0x21, 0x46, 0xbf, 0xd4, 0x24, 0xad, 0x61, 0x1c, 0xfa, + 0x16, 0x0b, 0xa4, 0x2b, 0xea, 0x1a, 0x6e, 0x22, 0xfc, 0xe0, 0xcb, 0x89, 0x8e, 0xc3, 0x38, 0xf4, + 0x7b, 0x01, 0x79, 0x0c, 0x37, 0x59, 0x62, 0x05, 0x99, 0xe7, 0x59, 0xf6, 0x4b, 0x3b, 0xa6, 0x56, + 0x42, 0x7d, 0x86, 0x33, 0x82, 0xc9, 0xb7, 0x6a, 0xae, 0xb3, 0xa4, 0x9f, 0x79, 0xde, 0x0e, 0x67, + 0x0e, 0xa8, 0xcf, 0xd0, 0x5d, 0x5f, 0x11, 0xa9, 0xad, 0x6f, 0x12, 0xa9, 0x9d, 0x7f, 0x2f, 0x42, + 0x73, 0x0a, 0x44, 0x36, 0xa0, 0x28, 0x13, 0xac, 0x8a, 0xd6, 0x22, 0x73, 0xc9, 0x63, 0x30, 0x92, + 0x30, 0x8b, 0x1d, 0x8a, 0x05, 0xae, 0x68, 0xa9, 0x38, 0x3f, 0x21, 0x02, 0xc3, 0xff, 0x63, 0x1e, + 0x78, 0x0c, 0x46, 0x6a, 0xc7, 0x23, 0x9a, 0x6a, 0x52, 0xf3, 0x67, 0x2f, 0x2d, 0x81, 0xc9, 0xa5, + 0xb6, 0x81, 0xe4, 0x6d, 0x4d, 0x0e, 0x4d, 0xf5, 0xcd, 0xa1, 0xa1, 0xda, 0xc9, 0x0f, 0x50, 0xb7, + 0x81, 0xe4, 0x2d, 0x4d, 0x64, 0xf4, 0x1a, 0xd4, 0x50, 0xad, 0xe4, 0x32, 0x1f, 0xc1, 0x4a, 0x3c, + 0x14, 0x51, 0xbb, 0xac, 0xd7, 0x6d, 0x53, 0xe3, 0xa1, 0x85, 0xee, 0x72, 0x3c, 0xc4, 0xa0, 0x15, + 0x72, 0x7e, 0xe8, 0x52, 0x79, 0x24, 0xb3, 0x48, 0x4e, 0x3b, 0x94, 0x59, 0x8e, 0x87, 0xfc, 0xab, + 0xf3, 0xcf, 0x05, 0xa8, 0xe5, 0x07, 0xe5, 0x5f, 0xbf, 0x9c, 0xfd, 0x41, 0xcb, 0x77, 0xb5, 0xde, + 0x95, 0xe7, 0xd6, 0xbb, 0x4d, 0x58, 0xce, 0x02, 0xf6, 0x65, 0x26, 0x0a, 0xb2, 0xaa, 0x29, 0xbf, + 0x5e, 0xb1, 0x0e, 0x2e, 0x2f, 0x5e, 0x07, 0x3b, 0xbf, 0x2a, 0x40, 0x2d, 0x3f, 0xd7, 0x27, 0x5d, + 0x00, 0x2d, 0x96, 0x0a, 0x73, 0x33, 0xae, 0x71, 0xc9, 0x63, 0x68, 0xc5, 0x51, 0xa0, 0xc7, 0x9e, + 0xf0, 0x2b, 0x79, 0x38, 0x6a, 0x46, 0x81, 0xcc, 0x41, 0x51, 0xa0, 0x05, 0x5f, 0x7e, 0x40, 0x57, + 0xba, 0xe6, 0x80, 0xae, 0xf3, 0x8b, 0x82, 0x7e, 0xf0, 0x4d, 0xb6, 0xa0, 0xc2, 0xfd, 0x70, 0x91, + 0x45, 0x82, 0x41, 0xba, 0x50, 0xe3, 0xc6, 0x08, 0xd4, 0x42, 0x3b, 0xaa, 0xb1, 0xf8, 0xf3, 0xba, + 0x26, 0xfc, 0x43, 0x11, 0xea, 0xda, 0xfd, 0x05, 0x79, 0x1b, 0xaa, 0xa3, 0x38, 0xcc, 0x22, 0xeb, + 0xfc, 0x6a, 0x81, 0x19, 0x2b, 0xc8, 0xdb, 0xbd, 0xe2, 0x30, 0x7b, 0x34, 0x12, 0x1b, 0x9c, 0xf9, + 0x38, 0x5b, 0xb1, 0x47, 0x23, 0xdc, 0xcf, 0x6c, 0x41, 0x55, 0x9c, 0xd4, 0x51, 0x77, 0xaa, 0x94, + 0xc9, 0xa9, 0xe4, 0x7d, 0x68, 0xf0, 0x1e, 0xe5, 0x6d, 0x96, 0x17, 0x75, 0x0a, 0xe2, 0x28, 0xf8, + 0x4c, 0xb6, 0x2c, 0x05, 0xf2, 0xd6, 0x2b, 0xaf, 0x12, 0xd8, 0x91, 0x36, 0xe4, 0xe3, 0xb0, 0x7c, + 0xdd, 0x59, 0xe9, 0xf7, 0xa0, 0x11, 0xc5, 0x14, 0xd5, 0xce, 0x47, 0xce, 0x19, 0x3b, 0xf4, 0xec, + 0xe4, 0xe2, 0x34, 0xa6, 0x3b, 0xa3, 0x11, 0x8f, 0x15, 0xbe, 0x7a, 0xa8, 0xff, 0x9d, 0xbf, 0x28, + 0x40, 0xf9, 0x2c, 0x8c, 0xfa, 0xe4, 0x5d, 0xa8, 0x62, 0x55, 0x3e, 0x19, 0x3b, 0x79, 0xd0, 0xbe, + 0x7b, 0xd5, 0x4b, 0xa9, 0x6f, 0xae, 0x20, 0x77, 0xf7, 0x8a, 0xdc, 0x56, 0xf7, 0x3e, 0x45, 0xed, + 0x04, 0x5f, 0x5e, 0xf8, 0xbc, 0xd6, 0xb4, 0xf1, 0x51, 0x98, 0x14, 0x67, 0xf9, 0xb0, 0x4d, 0x37, + 0x57, 0xcf, 0x11, 0xbb, 0x57, 0x9d, 0xbf, 0x2b, 0x40, 0x05, 0x2f, 0x96, 0x26, 0x8d, 0x17, 0xae, + 0x69, 0xbc, 0xf8, 0x4d, 0x1a, 0x2f, 0x7d, 0x4d, 0xe3, 0xe4, 0x23, 0x58, 0x4b, 0xe3, 0x2c, 0x70, + 0xec, 0x94, 0xf2, 0x35, 0x1c, 0xfd, 0x57, 0x9a, 0x3c, 0xb5, 0x84, 0x29, 0xd0, 0x33, 0x7a, 0xc5, + 0x09, 0x9d, 0x9f, 0x40, 0xf9, 0x19, 0xf3, 0x3c, 0xf2, 0x06, 0x2c, 0x3b, 0x61, 0x10, 0xf4, 0xf6, + 0xa7, 0x6c, 0x96, 0x34, 0xde, 0x21, 0x51, 0x9a, 0x15, 0x35, 0x0f, 0x13, 0xa4, 0xce, 0x0e, 0x6c, + 0x2c, 0x3a, 0xf2, 0x27, 0xdf, 0x86, 0xe6, 0xe4, 0x8a, 0x40, 0xa5, 0x38, 0xa5, 0xb8, 0x31, 0x61, + 0xf5, 0xdc, 0xce, 0x5f, 0x97, 0xa0, 0xad, 0x46, 0x40, 0xfc, 0xb2, 0x30, 0x18, 0x64, 0x3e, 0x4f, + 0x30, 0xa4, 0x0b, 0x6b, 0xb8, 0xc2, 0x45, 0x71, 0xe8, 0xd0, 0x84, 0xd7, 0x7c, 0x98, 0x50, 0x0a, + 0x0f, 0xca, 0xe6, 0x2a, 0x67, 0x9c, 0x2a, 0x7a, 0x9f, 0x07, 0xef, 0x5a, 0x90, 0xf9, 0x1c, 0xea, + 0x66, 0x0e, 0x75, 0xad, 0x38, 0x7c, 0x99, 0x08, 0x0f, 0x30, 0x57, 0x83, 0xcc, 0x3f, 0x95, 0x74, + 0x33, 0x7c, 0x99, 0x90, 0xb7, 0xa1, 0xc5, 0xb1, 0x2c, 0xa5, 0xb1, 0x2d, 0xb2, 0x4e, 0x09, 0x81, + 0xcd, 0x20, 0xf3, 0x7b, 0x39, 0x71, 0xf6, 0xe2, 0xae, 0x3c, 0x77, 0x71, 0xb7, 0x05, 0x75, 0x27, + 0x0c, 0x9c, 0x2c, 0x8e, 0x69, 0xe0, 0x5c, 0x61, 0x0a, 0x2d, 0x9b, 0x3a, 0x89, 0x1c, 0xc1, 0x46, + 0xca, 0x86, 0xdc, 0xbd, 0xb1, 0x82, 0xe7, 0x89, 0x0e, 0xcf, 0x47, 0x96, 0xf5, 0x9b, 0x34, 0x19, + 0x00, 0x7c, 0x61, 0xd8, 0x13, 0xfc, 0x27, 0x4b, 0x26, 0x91, 0x72, 0x1a, 0x95, 0xdb, 0x1d, 0x67, + 0x5c, 0x47, 0x92, 0xf9, 0x51, 0xaa, 0x6e, 0x05, 0x1a, 0x66, 0x33, 0xce, 0xf6, 0x26, 0x44, 0xf2, + 0x74, 0xd2, 0x28, 0x16, 0xe1, 0x89, 0x18, 0x4e, 0x79, 0xb1, 0x39, 0xdd, 0x28, 0x2f, 0xc4, 0xe5, + 0x70, 0xe7, 0x4d, 0x6a, 0xb4, 0xdd, 0x06, 0xc0, 0x3e, 0x4d, 0x6d, 0xe6, 0xf1, 0x15, 0xa5, 0x33, + 0x82, 0x0d, 0x29, 0x97, 0xcf, 0x15, 0x9e, 0x83, 0x9c, 0xc0, 0x3a, 0x55, 0x04, 0xd9, 0x1c, 0xcb, + 0x4f, 0x11, 0xef, 0x4d, 0xfb, 0xf9, 0xec, 0x2c, 0x9b, 0x84, 0x4e, 0x53, 0x18, 0x4d, 0x3a, 0xff, + 0x0f, 0x6e, 0xcb, 0x86, 0x4c, 0x3a, 0x62, 0x61, 0xd0, 0xcf, 0xfc, 0x93, 0x61, 0x2f, 0x90, 0xa7, + 0xb0, 0xf7, 0xa1, 0xce, 0xe4, 0x7f, 0xe5, 0x5d, 0x35, 0x13, 0x14, 0xa9, 0xe7, 0xf2, 0x6d, 0x7c, + 0x8c, 0x72, 0x56, 0x90, 0xf9, 0xd2, 0x0b, 0x6a, 0xb1, 0xd2, 0xd4, 0xf9, 0x7b, 0x02, 0x64, 0x7e, + 0xd0, 0xc9, 0x63, 0xd8, 0x70, 0xfd, 0x21, 0x93, 0xb7, 0x9d, 0x01, 0x75, 0xad, 0xc8, 0x76, 0x2e, + 0xa5, 0xc7, 0xed, 0x16, 0xdb, 0x05, 0x93, 0x08, 0xfe, 0x40, 0xb0, 0x4f, 0x39, 0x57, 0x97, 0xba, + 0x64, 0x51, 0x94, 0x4b, 0x15, 0xe7, 0xa4, 0x04, 0x5b, 0x48, 0x7d, 0x0c, 0x6d, 0x29, 0xe5, 0xda, + 0xa9, 0x9d, 0x37, 0x88, 0x5e, 0x2b, 0x9c, 0xf1, 0x86, 0xe0, 0xef, 0xdb, 0xa9, 0x2d, 0xdb, 0x43, + 0xdf, 0x9d, 0x15, 0x94, 0x6d, 0xa2, 0x60, 0x79, 0x4e, 0x50, 0x70, 0x51, 0xf0, 0x13, 0xb8, 0x99, + 0x86, 0xa9, 0xed, 0x59, 0x52, 0x3c, 0x4e, 0x2c, 0x2f, 0xb4, 0x5d, 0xbe, 0x3b, 0xab, 0xe4, 0xa6, + 0xae, 0x23, 0x64, 0x1f, 0x11, 0x66, 0x72, 0x14, 0xda, 0x2e, 0xee, 0xd0, 0x36, 0xa6, 0x25, 0xa9, + 0x10, 0x5b, 0xc6, 0xe6, 0xd6, 0x74, 0x11, 0x8a, 0x02, 0xdf, 0x55, 0x4d, 0x89, 0xba, 0x3f, 0x09, + 0xec, 0x28, 0xb9, 0x08, 0x53, 0x2e, 0xb3, 0x82, 0x32, 0x42, 0xdf, 0x2e, 0xe7, 0x0e, 0x24, 0xf3, + 0x18, 0xf7, 0xc4, 0x5e, 0xe8, 0xd8, 0x9e, 0x25, 0x66, 0x2a, 0x41, 0x87, 0x2d, 0x9b, 0x0d, 0x24, + 0x0a, 0x3f, 0xc0, 0xd8, 0x8d, 0xa9, 0x1f, 0xa6, 0x34, 0x47, 0xd5, 0x44, 0xec, 0x0a, 0xaa, 0x82, + 0xbd, 0x03, 0xab, 0x59, 0x42, 0x63, 0x61, 0xeb, 0xf9, 0x55, 0x4a, 0xc5, 0x1e, 0xb4, 0x6c, 0x36, + 0x39, 0x99, 0xdb, 0x89, 0x77, 0x47, 0xe4, 0x43, 0xb8, 0x21, 0x4c, 0xf5, 0xa8, 0x1d, 0x07, 0x4a, + 0xc0, 0x4f, 0x70, 0x27, 0x5a, 0x36, 0x09, 0x32, 0x8f, 0x04, 0x4f, 0xf6, 0xee, 0x07, 0x70, 0xc7, + 0x65, 0x09, 0x5f, 0xcb, 0x10, 0xeb, 0xd8, 0xce, 0x05, 0xb5, 0x2e, 0x58, 0x2a, 0x9b, 0x69, 0xa0, + 0xe0, 0x4d, 0x01, 0xe1, 0x22, 0x7b, 0x1c, 0xf0, 0x84, 0xa5, 0xa2, 0xc1, 0x1f, 0xc1, 0x1b, 0xf3, + 0xd2, 0x3e, 0x4b, 0x12, 0x29, 0xde, 0x44, 0xf1, 0xf6, 0x8c, 0xf8, 0x31, 0x4b, 0x12, 0x21, 0xff, + 0x11, 0xb4, 0x67, 0xa7, 0xd1, 0xb9, 0xa0, 0xce, 0x25, 0xb7, 0xb9, 0xa5, 0x0d, 0xae, 0x9a, 0xc3, + 0x3d, 0xce, 0x3c, 0x4e, 0x78, 0x45, 0x97, 0xa4, 0xb6, 0x9a, 0x3d, 0x35, 0x76, 0xab, 0x28, 0x61, + 0x20, 0x87, 0x37, 0xa6, 0x86, 0xef, 0x36, 0x54, 0x13, 0x3a, 0xf2, 0x69, 0x90, 0x26, 0x78, 0x2f, + 0x5f, 0x36, 0xf3, 0x6f, 0x11, 0x5c, 0xb6, 0xba, 0x66, 0x5b, 0x53, 0xc1, 0x65, 0x8b, 0x3b, 0x36, + 0xce, 0x76, 0xa9, 0x97, 0xda, 0xc2, 0x25, 0x89, 0x60, 0x23, 0x05, 0xdd, 0xf0, 0x3e, 0xd4, 0x05, + 0x5b, 0x74, 0x77, 0x1d, 0xf9, 0x42, 0x42, 0x74, 0xf0, 0x1d, 0x58, 0xf5, 0x5f, 0x38, 0x8e, 0xc5, + 0x82, 0x28, 0x4b, 0x85, 0x92, 0x0d, 0x31, 0x73, 0x9c, 0xdc, 0xe3, 0x54, 0x54, 0xf4, 0x00, 0x0c, + 0x0d, 0x27, 0xb4, 0xdd, 0x40, 0x60, 0x2b, 0x07, 0x0a, 0x8d, 0x0a, 0x19, 0x66, 0x69, 0xae, 0x72, + 0x73, 0x82, 0x3c, 0x41, 0x32, 0xea, 0xdc, 0x82, 0x86, 0xe7, 0x63, 0x4c, 0x09, 0xd4, 0x4d, 0x61, + 0x9d, 0xe7, 0xf3, 0x40, 0x42, 0xc4, 0xf7, 0xe1, 0xb6, 0xee, 0xda, 0xd8, 0xb8, 0xbc, 0x65, 0xf5, + 0x13, 0xbc, 0x6c, 0x2f, 0x9b, 0x37, 0x27, 0xde, 0xdd, 0x9b, 0xf0, 0x8f, 0x35, 0x67, 0x13, 0xc2, + 0xe7, 0x2c, 0xf5, 0xed, 0x88, 0xcb, 0xdd, 0xd2, 0x9c, 0x0d, 0xe5, 0x76, 0x91, 0x75, 0x9c, 0x90, + 0xf7, 0x60, 0xdd, 0x67, 0x81, 0x25, 0xe2, 0x62, 0xd2, 0xd0, 0x6d, 0x31, 0x6f, 0x3e, 0x0b, 0x8e, + 0x38, 0x67, 0xa0, 0x5a, 0xe0, 0x70, 0x7b, 0x3c, 0x07, 0xbf, 0x23, 0xe1, 0xf6, 0x78, 0x1a, 0xfe, + 0x3e, 0x6c, 0x70, 0xed, 0x32, 0xa0, 0x26, 0xf8, 0x37, 0x44, 0x64, 0xfb, 0x2c, 0x30, 0x91, 0x35, + 0x25, 0x60, 0x8f, 0xe7, 0x05, 0xee, 0x4a, 0x01, 0x7b, 0x3c, 0x23, 0x70, 0x0a, 0xeb, 0xd2, 0xd7, + 0xac, 0x70, 0x68, 0xa9, 0x14, 0xdd, 0xbe, 0x87, 0x2b, 0xc3, 0xd6, 0xd4, 0x52, 0xb4, 0x20, 0xd3, + 0x9b, 0x6b, 0x52, 0x58, 0x4b, 0xfe, 0x93, 0x04, 0x88, 0x93, 0x3a, 0x95, 0x39, 0xef, 0xeb, 0x09, + 0xf0, 0xf8, 0x85, 0xe3, 0x2c, 0xce, 0x9c, 0x42, 0x50, 0xcf, 0x9c, 0x5b, 0x73, 0x82, 0x5a, 0xe6, + 0xfc, 0x09, 0xdc, 0x95, 0x82, 0x9e, 0xaf, 0x76, 0xdb, 0x53, 0xcd, 0xbe, 0x89, 0xd2, 0xb7, 0x04, + 0xe8, 0xc8, 0x17, 0x7b, 0x40, 0xbd, 0xe9, 0x85, 0x1a, 0xf4, 0xf6, 0x3b, 0x0b, 0x35, 0x68, 0x36, + 0xfc, 0x18, 0xee, 0x0a, 0xd7, 0x79, 0x81, 0x77, 0xaf, 0x16, 0x73, 0xc7, 0x22, 0x7d, 0xe3, 0x89, + 0x43, 0xf2, 0xa8, 0xed, 0x8a, 0xbc, 0x81, 0x20, 0x71, 0x3f, 0xdb, 0x73, 0xc7, 0x3c, 0x81, 0x1f, + 0xc6, 0xa1, 0x3f, 0x78, 0x44, 0xf6, 0xe0, 0xfe, 0x35, 0x0a, 0x5c, 0x96, 0x5c, 0xb6, 0x29, 0xaa, + 0xb8, 0xbd, 0x58, 0xc5, 0x3e, 0x4b, 0x2e, 0xc9, 0x01, 0x6c, 0x5d, 0xa3, 0x04, 0x73, 0x59, 0x7b, + 0x88, 0x5a, 0xee, 0x2c, 0xd6, 0x82, 0xc9, 0xec, 0xd5, 0x9d, 0x51, 0xc7, 0x85, 0xa3, 0x57, 0x75, + 0x46, 0x9e, 0x19, 0x2e, 0xea, 0x8c, 0xb8, 0x8f, 0xcd, 0x55, 0x5c, 0x2c, 0xea, 0x8c, 0xb8, 0x99, + 0x95, 0x4a, 0x4e, 0xe0, 0xed, 0x57, 0x29, 0x79, 0xc1, 0x12, 0x96, 0xf2, 0x72, 0x13, 0x2f, 0x43, + 0x19, 0xaa, 0xda, 0x5a, 0xa4, 0xea, 0x73, 0x01, 0xec, 0xe3, 0x8d, 0xe8, 0x00, 0xde, 0x7d, 0x95, + 0x42, 0x97, 0x25, 0x8e, 0x1d, 0xbb, 0xb9, 0xca, 0xe7, 0xa8, 0xb2, 0xb3, 0x48, 0xe5, 0xbe, 0x82, + 0x0a, 0xa5, 0x87, 0xf0, 0xe6, 0x9c, 0x52, 0x4c, 0xbf, 0x2f, 0xa8, 0x93, 0x77, 0xf6, 0x72, 0xd1, + 0x98, 0xf3, 0x7c, 0xfe, 0x39, 0x75, 0x64, 0x6f, 0x8f, 0xe0, 0xad, 0xc5, 0x7a, 0xf0, 0x5c, 0x2a, + 0xc9, 0x55, 0x79, 0xa8, 0xea, 0xde, 0xbc, 0xaa, 0x13, 0xc4, 0x09, 0x6d, 0x9d, 0xbf, 0x2c, 0xe4, + 0x15, 0x94, 0x56, 0x2d, 0x92, 0xb7, 0xa0, 0xe5, 0xb3, 0xe0, 0x6c, 0x70, 0x22, 0x0a, 0xcf, 0xbc, + 0x5a, 0x6f, 0x08, 0x2a, 0x87, 0xf6, 0x13, 0xf2, 0x08, 0x36, 0x23, 0x16, 0x51, 0x8f, 0x05, 0xd4, + 0xfa, 0x32, 0xa3, 0x19, 0xcd, 0xd1, 0xa2, 0x52, 0x5b, 0x57, 0xdc, 0x9f, 0x72, 0xa6, 0x14, 0xfa, + 0x18, 0xda, 0xb9, 0xd0, 0x79, 0x4c, 0xed, 0x4b, 0x1a, 0xe7, 0x62, 0xb2, 0x60, 0x52, 0xfc, 0x5d, + 0xc1, 0x16, 0x82, 0x9d, 0xaf, 0xa0, 0x3c, 0x08, 0xe3, 0x94, 0xbc, 0x03, 0x2b, 0xe7, 0xb8, 0x7b, + 0x4a, 0x16, 0x6f, 0x1f, 0x25, 0x93, 0xbc, 0x05, 0x4d, 0x96, 0xe0, 0x0d, 0x84, 0xed, 0x71, 0x41, + 0xf9, 0x56, 0x65, 0x9a, 0xf8, 0x9a, 0xfb, 0xff, 0x3f, 0x29, 0x82, 0x21, 0x5e, 0xb2, 0x1d, 0xc6, + 0xb6, 0x4f, 0x77, 0xc3, 0x2c, 0xe0, 0x1b, 0xbc, 0xb2, 0x76, 0xc8, 0x7c, 0x43, 0x7f, 0xef, 0x86, + 0x00, 0xed, 0xd0, 0x09, 0x81, 0xa4, 0x03, 0xb5, 0x2c, 0x38, 0xe7, 0x2c, 0xea, 0x4e, 0x6d, 0xc3, + 0x26, 0x64, 0xb2, 0x09, 0xcb, 0xe2, 0x0d, 0x8e, 0x1c, 0x0c, 0xf9, 0x45, 0x1e, 0x40, 0xcd, 0xb1, + 0x3d, 0x87, 0xef, 0xd5, 0x93, 0x05, 0x9b, 0xc2, 0x09, 0x93, 0xfc, 0x1f, 0xa8, 0x0f, 0xb9, 0x91, + 0x16, 0xde, 0xa2, 0xc9, 0x37, 0x98, 0x53, 0xe7, 0x36, 0xc8, 0xc6, 0x0b, 0x37, 0xf2, 0x29, 0x34, + 0x1d, 0x3f, 0x12, 0x25, 0xa8, 0x76, 0x86, 0x26, 0x1f, 0x4d, 0x22, 0x66, 0xcf, 0x8f, 0x78, 0x09, + 0x8a, 0x87, 0xbb, 0x75, 0x67, 0xf2, 0xd1, 0xf9, 0x75, 0x01, 0xea, 0xda, 0xa0, 0x5c, 0x37, 0x1e, + 0x08, 0x98, 0x1b, 0x8f, 0xef, 0x40, 0x25, 0x49, 0x6d, 0x39, 0x33, 0xf9, 0x4b, 0xcd, 0xd9, 0x71, + 0x36, 0x05, 0x88, 0x3c, 0x80, 0x12, 0x0d, 0xd4, 0x3c, 0xbd, 0x0a, 0xcb, 0x21, 0x9d, 0xdf, 0x16, + 0x60, 0x59, 0x70, 0xc8, 0xbb, 0x50, 0x1b, 0x66, 0x81, 0x63, 0xe1, 0xb1, 0xd9, 0xfc, 0x49, 0x4d, + 0x95, 0x33, 0xf7, 0x69, 0xe2, 0xcc, 0xed, 0xd6, 0x8b, 0x5f, 0xb7, 0x5b, 0xd7, 0x8f, 0x31, 0x4a, + 0xd7, 0x1d, 0x63, 0xbc, 0x0b, 0x15, 0x1c, 0x70, 0x79, 0x29, 0xbc, 0x36, 0x67, 0xb9, 0x29, 0xf8, + 0x13, 0x57, 0xac, 0x5c, 0xe7, 0x8a, 0x3f, 0x86, 0x06, 0x1e, 0xf2, 0xb0, 0x60, 0xc4, 0xbb, 0x40, + 0xde, 0x87, 0xe6, 0x48, 0x7e, 0x8b, 0x13, 0x83, 0xf9, 0x5e, 0x36, 0x46, 0x9a, 0x40, 0xe7, 0x09, + 0xd4, 0x95, 0x82, 0x01, 0x4d, 0xc9, 0xf7, 0xa0, 0x35, 0x25, 0xaf, 0xa2, 0x4a, 0x5e, 0x7e, 0xe8, + 0x6d, 0x99, 0x4d, 0x5d, 0x51, 0xd2, 0xf9, 0x45, 0x01, 0x96, 0xc5, 0xb3, 0x47, 0xf2, 0x91, 0x66, + 0x45, 0xfe, 0x80, 0x2c, 0xef, 0xac, 0xd6, 0xde, 0xc4, 0x98, 0x01, 0x4d, 0x93, 0xd7, 0x3c, 0x4a, + 0x69, 0xc3, 0xca, 0x0b, 0x1a, 0xe3, 0x73, 0x0c, 0x11, 0x15, 0xea, 0xb3, 0xf3, 0x1e, 0xd4, 0xb8, + 0x2d, 0xe2, 0xe9, 0xd8, 0xd7, 0x9e, 0x0c, 0x76, 0xfe, 0xb4, 0x00, 0x2b, 0xf2, 0xa1, 0x26, 0x79, + 0x08, 0x10, 0xc5, 0xe1, 0xf3, 0xa9, 0x4e, 0xaf, 0x4e, 0x44, 0xc4, 0x23, 0xba, 0x1a, 0x87, 0x88, + 0x93, 0xc2, 0xc7, 0xb0, 0x39, 0xa2, 0x01, 0x8d, 0x6d, 0xbe, 0xa0, 0xc8, 0x12, 0x54, 0xbc, 0xa2, + 0x28, 0xe2, 0x2b, 0x8a, 0x8d, 0x9c, 0x2b, 0x0a, 0x51, 0xf1, 0x9c, 0xe2, 0xf5, 0xf2, 0xcb, 0x3b, + 0xd0, 0x9a, 0x7e, 0x0e, 0x4a, 0x36, 0xd4, 0x71, 0x8d, 0xd8, 0x14, 0x8b, 0x8f, 0xee, 0x1f, 0x97, + 0xc4, 0xcb, 0x70, 0x3c, 0xc1, 0x5e, 0x83, 0x26, 0xff, 0xcd, 0xef, 0x56, 0x8d, 0x25, 0x45, 0xca, + 0xcf, 0xa7, 0x8d, 0x82, 0x22, 0xe5, 0xc7, 0xba, 0x46, 0x91, 0xac, 0xc3, 0x2a, 0x27, 0x69, 0x07, + 0x9a, 0x46, 0x89, 0x34, 0xa0, 0x8a, 0xda, 0xc2, 0xa8, 0x6f, 0x94, 0x49, 0x13, 0x6a, 0xfc, 0x0b, + 0xcf, 0xc2, 0x8c, 0x4a, 0xae, 0x04, 0xab, 0xc1, 0x9d, 0xd1, 0xc8, 0x58, 0x56, 0xf8, 0xa7, 0x21, + 0x0b, 0x8c, 0x15, 0xf5, 0xf5, 0x8c, 0x79, 0x9e, 0x51, 0x25, 0x9b, 0x40, 0xf8, 0xd7, 0xf4, 0xbb, + 0x50, 0xa3, 0x46, 0xda, 0xb0, 0xa1, 0xd3, 0xd5, 0xcb, 0x3d, 0x03, 0x08, 0x81, 0x16, 0xe7, 0x4c, + 0x8e, 0x79, 0x8d, 0x3a, 0xb9, 0x0d, 0x9b, 0x48, 0x9b, 0xbb, 0x44, 0x36, 0x1a, 0xaa, 0x3d, 0x9e, + 0xc2, 0x8d, 0x26, 0x69, 0x01, 0xf0, 0x2f, 0x11, 0x53, 0x46, 0x4b, 0x7d, 0x8b, 0x99, 0x36, 0x56, + 0xc9, 0x2a, 0xd4, 0x27, 0xdf, 0xdb, 0x86, 0xa1, 0x0c, 0x9c, 0x1e, 0x73, 0x63, 0x4d, 0x8d, 0x8c, + 0xf6, 0x42, 0xd2, 0xd8, 0x20, 0x6f, 0x40, 0x5b, 0x4a, 0xcf, 0x9d, 0x90, 0x19, 0x37, 0xba, 0x9f, + 0x40, 0x43, 0x7f, 0x07, 0xc8, 0xdb, 0x3a, 0xb5, 0x93, 0xe4, 0xec, 0x22, 0x0e, 0xb3, 0xd1, 0x85, + 0xb1, 0xc4, 0x87, 0x32, 0x6f, 0xc7, 0x28, 0x90, 0x2a, 0x94, 0x9f, 0xd8, 0xc9, 0x85, 0x51, 0xec, + 0x7e, 0x1f, 0x56, 0x67, 0xde, 0x7f, 0x72, 0x66, 0xff, 0xa4, 0x7f, 0x60, 0x2c, 0xf1, 0x7f, 0x87, + 0x3b, 0x83, 0x33, 0xa3, 0x40, 0x36, 0xc0, 0x78, 0xd2, 0xfb, 0xec, 0x89, 0xb5, 0x77, 0x72, 0x7c, + 0x6a, 0x1e, 0x0c, 0x06, 0xbd, 0x93, 0xbe, 0x51, 0xec, 0x3e, 0x04, 0x98, 0xbc, 0xb6, 0x20, 0x35, + 0xa8, 0xe0, 0x86, 0x40, 0x08, 0x9e, 0xb1, 0x67, 0x9f, 0x1b, 0x05, 0x52, 0x87, 0x15, 0xb9, 0xb4, + 0x1b, 0xc5, 0xee, 0x23, 0x58, 0x95, 0x55, 0x00, 0xef, 0xdb, 0x33, 0x16, 0xf0, 0xa5, 0x86, 0xf4, + 0xfa, 0x9f, 0xef, 0x1c, 0xf5, 0xf6, 0xad, 0x5e, 0x7f, 0xff, 0xe0, 0xe7, 0xd6, 0xb3, 0x5e, 0x7f, + 0x5f, 0x68, 0x78, 0xd2, 0x1f, 0x7c, 0x61, 0x14, 0xba, 0xe7, 0xb0, 0xb1, 0xe8, 0x89, 0x20, 0xb9, + 0x03, 0x37, 0x95, 0xe4, 0x7e, 0x6f, 0x70, 0xb6, 0xd3, 0xdf, 0x3b, 0xb0, 0x8e, 0x0f, 0xce, 0xcc, + 0xde, 0x9e, 0xb1, 0x44, 0x96, 0xa1, 0x78, 0xf4, 0xa1, 0x51, 0xc0, 0xdf, 0x6d, 0xa3, 0x48, 0x00, + 0x96, 0xf7, 0x4e, 0x06, 0xbd, 0xfe, 0x81, 0x51, 0xe2, 0x7e, 0xd4, 0xeb, 0xf7, 0x0f, 0x4c, 0xeb, + 0xd4, 0x3c, 0xd9, 0xff, 0xd9, 0xde, 0x99, 0x51, 0xee, 0x7e, 0x38, 0x79, 0xec, 0x88, 0x5d, 0xd9, + 0x00, 0xa3, 0x17, 0xbc, 0xb0, 0x3d, 0xe6, 0xe6, 0x34, 0x63, 0x89, 0xf7, 0xe5, 0x44, 0xe4, 0x53, + 0xa3, 0xd0, 0xfd, 0xbf, 0x93, 0xb7, 0x55, 0x28, 0x72, 0x13, 0xd6, 0xf5, 0x6f, 0x29, 0x6e, 0x2c, + 0xcd, 0x32, 0xfa, 0xe1, 0xc0, 0x09, 0x63, 0x6a, 0x14, 0xc8, 0x2d, 0xb8, 0xa1, 0x33, 0xbe, 0x60, + 0xe9, 0x85, 0x60, 0x15, 0xbb, 0x7f, 0xa4, 0xbf, 0xa6, 0xc3, 0x97, 0x68, 0xdc, 0x11, 0x67, 0x48, + 0x93, 0x26, 0x84, 0x26, 0x9d, 0x37, 0xb8, 0x08, 0x33, 0xcf, 0x35, 0x0a, 0xb2, 0x75, 0x9d, 0x75, + 0x9c, 0x25, 0xa9, 0x51, 0x5c, 0xa0, 0x8f, 0x33, 0xfa, 0x61, 0x6a, 0x94, 0xba, 0xbf, 0x2c, 0x00, + 0x99, 0x7f, 0xd3, 0x36, 0x2d, 0xa2, 0xa8, 0xfd, 0x30, 0xe0, 0x63, 0x73, 0x07, 0x6e, 0x2e, 0x78, + 0x05, 0x17, 0x86, 0xe8, 0x6e, 0x77, 0xe1, 0xd6, 0x3c, 0x73, 0x9f, 0x0a, 0x76, 0x91, 0xfb, 0xf6, + 0x02, 0xbd, 0x3c, 0x2b, 0x50, 0xa3, 0xd4, 0xfd, 0xff, 0xba, 0x2d, 0xea, 0x25, 0xe3, 0x74, 0x97, + 0x39, 0x75, 0x32, 0x1a, 0x9b, 0xb3, 0x02, 0x5f, 0x84, 0x31, 0x1f, 0x8a, 0x36, 0x6c, 0x4c, 0xd3, + 0x4f, 0xf1, 0x0d, 0xa3, 0x51, 0x5c, 0xc0, 0xc1, 0x07, 0x16, 0x46, 0xa9, 0xfb, 0xd1, 0xcc, 0x43, + 0x2d, 0x15, 0x5d, 0xd3, 0x53, 0x6c, 0x40, 0x83, 0x13, 0x0e, 0x33, 0xcf, 0x4b, 0xe9, 0x98, 0x8f, + 0xe0, 0xdf, 0x16, 0xa0, 0xaa, 0xae, 0xfa, 0x27, 0x09, 0x31, 0xa0, 0x31, 0xa6, 0xaa, 0x25, 0x72, + 0x03, 0xd6, 0x30, 0xb5, 0xd1, 0x61, 0x7a, 0x92, 0xa5, 0x92, 0x5c, 0x50, 0x29, 0xc1, 0x64, 0xa3, + 0x0b, 0x8d, 0x5e, 0x54, 0x0d, 0xa8, 0x0b, 0x5b, 0xa3, 0xc4, 0x3d, 0x14, 0xd3, 0x67, 0x90, 0xb2, + 0x9c, 0x5a, 0xe6, 0xa3, 0x32, 0xa5, 0x36, 0x67, 0x55, 0xf8, 0x1c, 0x28, 0x81, 0x79, 0xf6, 0x72, + 0x77, 0x0b, 0x1a, 0xfa, 0x13, 0x03, 0xd5, 0x22, 0xcf, 0x12, 0xc2, 0xe4, 0xee, 0xa7, 0xb0, 0x36, + 0x77, 0x9d, 0xc9, 0xe3, 0xab, 0xd7, 0x17, 0xa1, 0x71, 0xdc, 0xeb, 0x5b, 0xc7, 0x3b, 0x3f, 0x37, + 0x0a, 0x5c, 0x76, 0xf7, 0xe8, 0xe4, 0xe4, 0xd8, 0x3a, 0xec, 0x1d, 0x9d, 0x1d, 0x98, 0x46, 0xb1, + 0xdb, 0x9d, 0x91, 0xc5, 0x3c, 0xc3, 0xf3, 0xc5, 0xc9, 0xde, 0xce, 0x91, 0xb1, 0xc4, 0xc3, 0xf3, + 0xb3, 0xa3, 0x93, 0xdd, 0x9d, 0x23, 0xa3, 0xd0, 0xdd, 0x85, 0xb5, 0xb9, 0x4b, 0x1c, 0x3e, 0xe4, + 0x87, 0x61, 0xec, 0x50, 0x41, 0x12, 0xf9, 0x61, 0x27, 0x4b, 0x43, 0xa3, 0xc0, 0xb3, 0x36, 0xb2, + 0xc4, 0xba, 0xc0, 0x82, 0x91, 0x51, 0xec, 0xfe, 0x18, 0x56, 0x67, 0x6a, 0x60, 0x9e, 0x01, 0x0f, + 0x43, 0xcf, 0x0b, 0x5f, 0x72, 0x04, 0x26, 0xc4, 0xd3, 0x98, 0x3a, 0xd4, 0xe5, 0x9f, 0x05, 0x9e, + 0xac, 0xf7, 0xf0, 0x98, 0x3d, 0x35, 0xc3, 0x97, 0x46, 0xb1, 0x7b, 0x02, 0xc6, 0x6c, 0xdd, 0x49, + 0x56, 0xa0, 0xd4, 0x0b, 0x52, 0x63, 0x89, 0x1b, 0x7e, 0xe8, 0x85, 0x76, 0x2a, 0xd2, 0xdb, 0x3e, + 0x75, 0x98, 0x6f, 0x7b, 0x46, 0x91, 0xaf, 0x07, 0xfb, 0x76, 0x4a, 0xf9, 0xae, 0x46, 0xac, 0x65, + 0xfb, 0x99, 0x38, 0xfd, 0x37, 0xca, 0x3c, 0xf5, 0xcd, 0x54, 0xa1, 0xbc, 0x0b, 0x7c, 0x37, 0x2e, + 0xba, 0x8f, 0xad, 0x25, 0x46, 0x01, 0x87, 0x82, 0x17, 0x27, 0x89, 0x51, 0xdc, 0xfd, 0xf6, 0x6f, + 0x7e, 0x77, 0xaf, 0xf0, 0x4f, 0xbf, 0xbb, 0x57, 0xf8, 0xd7, 0xdf, 0xdd, 0x2b, 0xfc, 0xd9, 0xbf, + 0xdd, 0x5b, 0x82, 0x1b, 0x4e, 0xe8, 0x3f, 0xe4, 0x85, 0x8b, 0x63, 0x47, 0x0f, 0x53, 0xe6, 0x9e, + 0xe3, 0x52, 0x7e, 0x5a, 0xf8, 0xef, 0x00, 0x00, 0x00, 0xff, 0xff, 0xb8, 0xbb, 0x8c, 0x65, 0xfb, 0x35, 0x00, 0x00, } diff --git a/proto/executor.proto b/proto/executor.proto index 53f8b6e9..b4c8a436 100644 --- a/proto/executor.proto +++ b/proto/executor.proto @@ -190,6 +190,10 @@ message FTSBooleanTerm { message FTSBooleanQuery { repeated FTSBooleanNode nodes = 1; + // The Boolean query carries the analyzer selected by the FULLTEXT index so + // TiFlash does not have to infer NGRAM semantics from the raw query text. + optional string query_tokenizer = 2 [(gogoproto.nullable) = false]; + optional uint32 ngram_token_size = 3 [(gogoproto.nullable) = false]; } message FTSBooleanNode { From 1b94a80baeb1d47e8a28f5eb287fae1801c3f5d1 Mon Sep 17 00:00:00 2001 From: Zhigao TONG Date: Mon, 28 Sep 2026 19:16:54 +0800 Subject: [PATCH 03/12] proto: add STANDARD_V1 FTS analyzer settings --- go-tipb/executor.pb.go | 759 +++++++++++++++++++++++------------------ proto/executor.proto | 5 + 2 files changed, 437 insertions(+), 327 deletions(-) diff --git a/go-tipb/executor.pb.go b/go-tipb/executor.pb.go index a152a11d..6723221f 100644 --- a/go-tipb/executor.pb.go +++ b/go-tipb/executor.pb.go @@ -1320,9 +1320,14 @@ type FTSBooleanQuery struct { Nodes []*FTSBooleanNode `protobuf:"bytes,1,rep,name=nodes" json:"nodes,omitempty"` // The Boolean query carries the analyzer selected by the FULLTEXT index so // TiFlash does not have to infer NGRAM semantics from the raw query text. - QueryTokenizer string `protobuf:"bytes,2,opt,name=query_tokenizer,json=queryTokenizer" json:"query_tokenizer"` - NgramTokenSize uint32 `protobuf:"varint,3,opt,name=ngram_token_size,json=ngramTokenSize" json:"ngram_token_size"` - XXX_unrecognized []byte `json:"-"` + QueryTokenizer string `protobuf:"bytes,2,opt,name=query_tokenizer,json=queryTokenizer" json:"query_tokenizer"` + NgramTokenSize uint32 `protobuf:"varint,3,opt,name=ngram_token_size,json=ngramTokenSize" json:"ngram_token_size"` + // STANDARD_V1 analyzer settings. Zero values mean the legacy defaults for + // backward compatibility with requests created before these fields existed. + InnodbFtMinTokenSize uint32 `protobuf:"varint,4,opt,name=innodb_ft_min_token_size,json=innodbFtMinTokenSize" json:"innodb_ft_min_token_size"` + InnodbFtMaxTokenSize uint32 `protobuf:"varint,5,opt,name=innodb_ft_max_token_size,json=innodbFtMaxTokenSize" json:"innodb_ft_max_token_size"` + InnodbFtEnableStopword bool `protobuf:"varint,6,opt,name=innodb_ft_enable_stopword,json=innodbFtEnableStopword" json:"innodb_ft_enable_stopword"` + XXX_unrecognized []byte `json:"-"` } func (m *FTSBooleanQuery) Reset() { *m = FTSBooleanQuery{} } @@ -1351,6 +1356,27 @@ func (m *FTSBooleanQuery) GetNgramTokenSize() uint32 { return 0 } +func (m *FTSBooleanQuery) GetInnodbFtMinTokenSize() uint32 { + if m != nil { + return m.InnodbFtMinTokenSize + } + return 0 +} + +func (m *FTSBooleanQuery) GetInnodbFtMaxTokenSize() uint32 { + if m != nil { + return m.InnodbFtMaxTokenSize + } + return 0 +} + +func (m *FTSBooleanQuery) GetInnodbFtEnableStopword() bool { + if m != nil { + return m.InnodbFtEnableStopword + } + return false +} + type FTSBooleanNode struct { Occur FTSBooleanOccur `protobuf:"varint,1,opt,name=occur,enum=tipb.FTSBooleanOccur" json:"occur"` Modifier FTSBooleanModifier `protobuf:"varint,2,opt,name=modifier,enum=tipb.FTSBooleanModifier" json:"modifier"` @@ -3965,6 +3991,20 @@ func (m *FTSBooleanQuery) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x18 i++ i = encodeVarintExecutor(dAtA, i, uint64(m.NgramTokenSize)) + dAtA[i] = 0x20 + i++ + i = encodeVarintExecutor(dAtA, i, uint64(m.InnodbFtMinTokenSize)) + dAtA[i] = 0x28 + i++ + i = encodeVarintExecutor(dAtA, i, uint64(m.InnodbFtMaxTokenSize)) + dAtA[i] = 0x30 + i++ + if m.InnodbFtEnableStopword { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i++ if m.XXX_unrecognized != nil { i += copy(dAtA[i:], m.XXX_unrecognized) } @@ -6306,6 +6346,9 @@ func (m *FTSBooleanQuery) Size() (n int) { l = len(m.QueryTokenizer) n += 1 + l + sovExecutor(uint64(l)) n += 1 + sovExecutor(uint64(m.NgramTokenSize)) + n += 1 + sovExecutor(uint64(m.InnodbFtMinTokenSize)) + n += 1 + sovExecutor(uint64(m.InnodbFtMaxTokenSize)) + n += 2 if m.XXX_unrecognized != nil { n += len(m.XXX_unrecognized) } @@ -9197,6 +9240,64 @@ func (m *FTSBooleanQuery) Unmarshal(dAtA []byte) error { break } } + case 4: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field InnodbFtMinTokenSize", wireType) + } + m.InnodbFtMinTokenSize = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowExecutor + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.InnodbFtMinTokenSize |= (uint32(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + case 5: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field InnodbFtMaxTokenSize", wireType) + } + m.InnodbFtMaxTokenSize = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowExecutor + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.InnodbFtMaxTokenSize |= (uint32(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + case 6: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field InnodbFtEnableStopword", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowExecutor + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + m.InnodbFtEnableStopword = bool(v != 0) default: iNdEx = preIndex skippy, err := skipExecutor(dAtA[iNdEx:]) @@ -15491,328 +15592,332 @@ var ( func init() { proto.RegisterFile("executor.proto", fileDescriptorExecutor) } var fileDescriptorExecutor = []byte{ - // 5155 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x7a, 0xcb, 0x6f, 0x1c, 0x49, - 0x72, 0x37, 0xfb, 0x45, 0x76, 0x47, 0x3f, 0x58, 0x4c, 0x52, 0x54, 0x4b, 0x1a, 0x49, 0x9c, 0xde, - 0x79, 0x68, 0xfb, 0xdb, 0xd1, 0xcc, 0x50, 0xda, 0x99, 0xd9, 0xd9, 0x27, 0x9f, 0xa3, 0x96, 0xc8, - 0x26, 0xb7, 0x9a, 0x3b, 0xb3, 0xc0, 0xf7, 0x01, 0x85, 0x62, 0x55, 0x76, 0x33, 0xc5, 0x7a, 0x4d, - 0x3d, 0xa4, 0xe6, 0x7c, 0x30, 0xb0, 0xe7, 0x3d, 0x19, 0x5e, 0x78, 0xe1, 0x83, 0x4f, 0x3e, 0xd9, - 0xb0, 0xe1, 0x83, 0xff, 0x01, 0xfb, 0xb8, 0x17, 0x03, 0xbe, 0x7a, 0x0f, 0x86, 0xb1, 0x3e, 0x19, - 0xf0, 0xcd, 0x37, 0x9f, 0x8c, 0x8c, 0xcc, 0xac, 0xce, 0x7e, 0x88, 0xa3, 0xf1, 0xee, 0xc1, 0xa7, - 0xee, 0x8a, 0xf8, 0x45, 0x64, 0x64, 0x66, 0x44, 0x64, 0xe4, 0x03, 0x5a, 0x74, 0x4c, 0x9d, 0x2c, - 0x0d, 0xe3, 0x87, 0x51, 0x1c, 0xa6, 0x21, 0x29, 0xa7, 0x2c, 0x3a, 0xbf, 0x6d, 0xd0, 0x71, 0x14, - 0xd3, 0x24, 0x61, 0x61, 0x20, 0xe8, 0xb7, 0x1b, 0x89, 0x73, 0x41, 0x7d, 0x5b, 0x7e, 0x6d, 0x8c, - 0xc2, 0x51, 0x88, 0x7f, 0xdf, 0xe7, 0xff, 0x04, 0xb5, 0xf3, 0x57, 0x35, 0xa8, 0x1e, 0x48, 0x75, - 0xe4, 0x2d, 0x28, 0xa6, 0x51, 0xbb, 0xb0, 0x55, 0x78, 0xd0, 0xda, 0x6e, 0x3d, 0xe4, 0x5a, 0x1f, - 0x72, 0xde, 0xd9, 0x55, 0x44, 0x77, 0xcb, 0xbf, 0xf9, 0x97, 0xfb, 0x4b, 0x66, 0x31, 0x8d, 0x48, - 0x17, 0xaa, 0xe9, 0xb9, 0x67, 0x25, 0x8e, 0x1d, 0xb4, 0x8b, 0x5b, 0x85, 0x07, 0xf5, 0xed, 0x55, - 0x81, 0x3d, 0xb3, 0xcf, 0x3d, 0x3a, 0x70, 0xec, 0xc0, 0x5c, 0x49, 0xcf, 0x3d, 0xfe, 0x87, 0x63, - 0x99, 0x3b, 0x16, 0xd8, 0x92, 0x8e, 0xed, 0x05, 0x2e, 0x1d, 0x0b, 0x2c, 0x73, 0xf1, 0x0f, 0x79, - 0x0f, 0x6a, 0x09, 0xf5, 0xa8, 0x93, 0xb2, 0x30, 0x68, 0x97, 0x75, 0xf0, 0x40, 0x91, 0xcd, 0x09, - 0x82, 0x3c, 0x82, 0xba, 0x3d, 0x1a, 0xc5, 0x74, 0x64, 0xa3, 0x40, 0x05, 0x05, 0xd6, 0x84, 0xc0, - 0xce, 0x84, 0x61, 0xea, 0x28, 0x72, 0x0f, 0xca, 0x69, 0x18, 0xf5, 0xdb, 0xcb, 0x88, 0x06, 0x69, - 0x77, 0x18, 0xf5, 0x4d, 0xa4, 0x93, 0x37, 0xa1, 0xe2, 0x31, 0x9f, 0xa5, 0xed, 0x15, 0x04, 0xd4, - 0x05, 0xe0, 0x88, 0x93, 0x4c, 0xc1, 0x21, 0x7b, 0xb0, 0x46, 0xc7, 0xce, 0x85, 0x1d, 0x8c, 0xa8, - 0x15, 0x53, 0x87, 0xb2, 0x17, 0x34, 0x6e, 0x57, 0x11, 0xbe, 0xa9, 0xc6, 0x4c, 0xb0, 0x4d, 0xc9, - 0x35, 0x0d, 0x3a, 0x43, 0xe1, 0x76, 0x3c, 0x0f, 0x59, 0xd0, 0xae, 0xe9, 0x76, 0x3c, 0x0d, 0x59, - 0x60, 0x22, 0x9d, 0xdc, 0x87, 0xba, 0x9a, 0x64, 0x8b, 0xb9, 0x6d, 0xd8, 0x2a, 0x3c, 0xa8, 0x99, - 0xa0, 0x48, 0x3d, 0x97, 0x2b, 0xb8, 0x64, 0x9e, 0xd7, 0xae, 0xeb, 0x0a, 0x9e, 0x31, 0xcf, 0x33, - 0x91, 0x4e, 0x7e, 0x08, 0xab, 0xb9, 0x95, 0x09, 0x0d, 0x5c, 0x1a, 0xb7, 0x1b, 0x08, 0xdd, 0x98, - 0xb6, 0x71, 0x80, 0x3c, 0xb3, 0x45, 0xa7, 0xbe, 0xc9, 0x07, 0x00, 0xa7, 0x71, 0xf8, 0x5c, 0x4e, - 0x46, 0x13, 0x25, 0x0d, 0x21, 0x39, 0xa1, 0x9b, 0x1a, 0x86, 0x3c, 0x85, 0x8d, 0xc8, 0x8e, 0x53, - 0xc6, 0x3f, 0xac, 0x94, 0x7b, 0x82, 0x98, 0xf5, 0x16, 0xca, 0xb6, 0xa5, 0xac, 0x42, 0x4c, 0x5c, - 0x85, 0x44, 0x73, 0x34, 0xde, 0xb9, 0x24, 0x8c, 0xd3, 0xf6, 0xaa, 0xde, 0xb9, 0x41, 0x18, 0xa7, - 0x26, 0xd2, 0xc9, 0x5b, 0xb0, 0xfc, 0x92, 0x05, 0x6e, 0xf8, 0xb2, 0x6d, 0x20, 0xa2, 0x21, 0x10, - 0x5f, 0x20, 0xcd, 0x94, 0x3c, 0xd2, 0x87, 0x37, 0x87, 0x2c, 0xa0, 0xd6, 0x28, 0xb6, 0x59, 0x40, - 0x5d, 0x2b, 0xb9, 0xc8, 0x86, 0x43, 0x6e, 0x56, 0x1a, 0x53, 0xdb, 0xb7, 0x9c, 0x30, 0x0b, 0xd2, - 0xf6, 0xda, 0x56, 0xe1, 0x41, 0x59, 0x3a, 0xf7, 0x5d, 0x0e, 0xff, 0x4c, 0xa0, 0x07, 0x02, 0x3c, - 0x40, 0xec, 0x1e, 0x87, 0x92, 0xa7, 0x70, 0x7f, 0xa1, 0xbe, 0x73, 0x3b, 0x75, 0x2e, 0xac, 0x84, - 0x7d, 0x45, 0xdb, 0x44, 0xd3, 0x76, 0x67, 0x5e, 0xdb, 0x2e, 0x47, 0x0e, 0xd8, 0x57, 0x94, 0xf7, - 0x80, 0x8e, 0x23, 0x3b, 0x70, 0xdb, 0xeb, 0x7a, 0x0f, 0x0e, 0x90, 0x66, 0x4a, 0x1e, 0x79, 0x17, - 0x56, 0xc4, 0xbf, 0xed, 0xf6, 0x06, 0xc2, 0x9a, 0x3a, 0x6c, 0xdb, 0x54, 0x5c, 0x3e, 0xdb, 0xe7, - 0x71, 0x68, 0xbb, 0x8e, 0x9d, 0xa4, 0xd6, 0x97, 0x19, 0x8d, 0xaf, 0xda, 0x37, 0xf4, 0xd9, 0xde, - 0x55, 0xcc, 0x9f, 0x72, 0x9e, 0xd9, 0x3a, 0x9f, 0xfa, 0x26, 0x8f, 0xa1, 0xc1, 0x78, 0x3c, 0x5a, - 0x5e, 0x18, 0x5e, 0x66, 0x51, 0xbb, 0xad, 0xc7, 0x12, 0x46, 0xea, 0x51, 0x18, 0x5e, 0xfe, 0x2c, - 0x32, 0xeb, 0x4c, 0x7d, 0x64, 0x11, 0xb9, 0x0b, 0x10, 0xd9, 0x31, 0x0d, 0x52, 0x8b, 0xb9, 0xe3, - 0xf6, 0xad, 0xad, 0xc2, 0x83, 0xa6, 0x59, 0x13, 0x94, 0x9e, 0x3b, 0x26, 0xa7, 0xb0, 0x49, 0xc7, - 0x91, 0x67, 0xb3, 0xc0, 0x1a, 0x86, 0xb1, 0xe5, 0x84, 0x41, 0x20, 0xdd, 0xe9, 0x36, 0xaa, 0xbf, - 0x9d, 0xf7, 0x85, 0x63, 0x0e, 0xc3, 0x78, 0x2f, 0x47, 0x98, 0x1b, 0x74, 0x01, 0xb5, 0xf3, 0x37, - 0x25, 0x68, 0x4d, 0xfb, 0x2d, 0x79, 0xa0, 0x65, 0x2c, 0x32, 0xed, 0xd9, 0x73, 0x59, 0x6b, 0x8d, - 0x06, 0x4e, 0xe8, 0x52, 0xd7, 0x4a, 0xed, 0xe4, 0xd2, 0xf2, 0x69, 0x6a, 0xb7, 0x8b, 0x5b, 0xa5, - 0x07, 0x0d, 0x73, 0x55, 0x32, 0xce, 0xec, 0xe4, 0xf2, 0x98, 0xa6, 0x36, 0xf9, 0x10, 0x5a, 0x13, - 0x5f, 0xbe, 0xa4, 0x57, 0x49, 0xbb, 0xb4, 0x55, 0x9a, 0x78, 0xe2, 0xc1, 0x38, 0x8a, 0xcd, 0x66, - 0x8e, 0x78, 0x46, 0xaf, 0x12, 0xf2, 0x16, 0x54, 0x9c, 0x0b, 0xe6, 0xb9, 0x32, 0x71, 0x69, 0xd9, - 0x93, 0x07, 0xac, 0x29, 0x98, 0xe4, 0x6d, 0xa8, 0xa4, 0x57, 0x11, 0x4d, 0xda, 0x15, 0xd4, 0x27, - 0xd3, 0xdb, 0x21, 0xa3, 0x9e, 0xcb, 0xcd, 0x35, 0x05, 0x97, 0x7c, 0x0c, 0xab, 0xb6, 0xe7, 0x59, - 0x43, 0x4e, 0xb7, 0x84, 0xc0, 0xf2, 0x62, 0x81, 0xa6, 0xed, 0x79, 0xf9, 0x57, 0x42, 0x7e, 0x08, - 0x75, 0x27, 0xf4, 0xd5, 0x32, 0x80, 0x49, 0xac, 0xb5, 0x7d, 0x43, 0x08, 0xed, 0x4d, 0x18, 0xc7, - 0xa1, 0xab, 0x86, 0x46, 0xc7, 0x93, 0x23, 0xd8, 0xcc, 0x22, 0x15, 0x1e, 0x29, 0xd5, 0x06, 0xaa, - 0x8a, 0xcd, 0xdf, 0x94, 0xbd, 0x12, 0xc3, 0xb5, 0x7b, 0x95, 0xd2, 0x64, 0xe0, 0x31, 0x87, 0x9a, - 0xeb, 0x4a, 0x6c, 0x2f, 0xa5, 0x6a, 0x14, 0x3b, 0xbf, 0x2c, 0x40, 0x5d, 0x73, 0x1e, 0xf2, 0x01, - 0x6c, 0x08, 0x2f, 0xbb, 0xb0, 0x03, 0xd7, 0xa3, 0x56, 0x38, 0x1c, 0x26, 0x34, 0x4d, 0xda, 0x85, - 0xad, 0xd2, 0x83, 0xa6, 0x49, 0x90, 0xf7, 0x04, 0x59, 0x27, 0x82, 0xc3, 0x3d, 0xec, 0x92, 0xd2, - 0xc8, 0x0a, 0x63, 0x9e, 0xbf, 0xf8, 0x5a, 0x53, 0x35, 0x6b, 0x9c, 0x72, 0xc2, 0x09, 0x7c, 0x71, - 0xc1, 0x61, 0x8d, 0x69, 0x20, 0x27, 0x68, 0x76, 0xd8, 0x73, 0x7e, 0xe7, 0x13, 0x58, 0x9b, 0x33, - 0x9b, 0x7c, 0x0b, 0x9a, 0xba, 0x4f, 0x08, 0x53, 0x1a, 0x66, 0x43, 0xf3, 0x87, 0xa4, 0xf3, 0xdb, - 0x02, 0x18, 0xb3, 0x19, 0x7d, 0xb1, 0x37, 0x15, 0x16, 0x7b, 0xd3, 0x07, 0x50, 0xd7, 0x67, 0xb2, - 0xb8, 0x78, 0x26, 0x61, 0x38, 0x99, 0xc6, 0x0e, 0x7a, 0x75, 0xe9, 0x55, 0x5e, 0x8d, 0xfe, 0xbc, - 0x0f, 0xf7, 0xc3, 0x98, 0x8d, 0x58, 0x60, 0x7b, 0x38, 0x57, 0x51, 0xec, 0x86, 0x4e, 0x46, 0x63, - 0xcd, 0x9e, 0x32, 0xda, 0x73, 0x47, 0xc1, 0xf6, 0x52, 0x7a, 0x2a, 0x41, 0xf9, 0x1c, 0xfd, 0xaa, - 0x04, 0x8d, 0x9d, 0x7e, 0x1f, 0xd3, 0x40, 0x2f, 0x18, 0x86, 0xe4, 0x63, 0x00, 0xcc, 0x1f, 0x68, - 0xec, 0x74, 0x60, 0x29, 0x9c, 0x16, 0x58, 0xb5, 0x2f, 0x15, 0x81, 0xf4, 0x60, 0xd5, 0x65, 0x49, - 0x6a, 0x07, 0x0e, 0xe5, 0xad, 0xc7, 0xcc, 0xc1, 0x09, 0x6b, 0xa9, 0x38, 0xff, 0x9c, 0x3a, 0x69, - 0x18, 0xef, 0x4b, 0xc8, 0x31, 0x22, 0xa4, 0x96, 0x96, 0x3b, 0x45, 0x25, 0xb7, 0xa0, 0x92, 0x86, - 0x91, 0x75, 0x89, 0x23, 0xd0, 0x94, 0x20, 0xbe, 0x3e, 0x3f, 0x23, 0x6f, 0x73, 0x07, 0xf7, 0x32, - 0x3f, 0xb0, 0x02, 0xdb, 0xa7, 0x18, 0x6c, 0x35, 0x09, 0x00, 0xc1, 0xe8, 0xdb, 0x3e, 0x25, 0x6f, - 0x42, 0x4d, 0xc2, 0x98, 0x8b, 0x95, 0x41, 0x49, 0x82, 0xaa, 0x82, 0x8c, 0x0b, 0x68, 0x3d, 0xa6, - 0x43, 0xeb, 0x05, 0x75, 0xac, 0xe1, 0xa3, 0x6d, 0x2c, 0x08, 0x1a, 0x66, 0x2d, 0xa6, 0xc3, 0xcf, - 0xa9, 0x73, 0xf8, 0x68, 0x9b, 0xdc, 0x87, 0xaa, 0xf0, 0x56, 0xe6, 0xe2, 0xea, 0xae, 0x34, 0xac, - 0x20, 0xb5, 0xc7, 0x93, 0x73, 0xc3, 0xb7, 0xc7, 0x96, 0xb2, 0x1d, 0xd7, 0xe8, 0x82, 0x8a, 0x2a, - 0xdf, 0x1e, 0xab, 0xae, 0x92, 0x2e, 0xb4, 0x2e, 0x82, 0xe4, 0xa5, 0x45, 0x87, 0x56, 0x42, 0xed, - 0xd8, 0xb9, 0xc0, 0x64, 0xae, 0xfa, 0xd5, 0xe0, 0xbc, 0x83, 0xe1, 0x00, 0x39, 0x4f, 0xcb, 0xd5, - 0x15, 0xa3, 0xda, 0xf9, 0x75, 0x01, 0x5a, 0x87, 0x67, 0x83, 0xdd, 0x30, 0xf4, 0xa8, 0x1d, 0x9c, - 0xd1, 0xd8, 0x27, 0xdf, 0x87, 0x5a, 0x4a, 0x63, 0x5f, 0x9f, 0x16, 0xb9, 0xa6, 0x4e, 0x03, 0xb5, - 0xc9, 0xa9, 0xa6, 0xf2, 0x9b, 0xb4, 0xa1, 0x9c, 0xd2, 0x71, 0x8a, 0x13, 0x52, 0xcb, 0xc7, 0x93, - 0x8e, 0x53, 0xf2, 0x1e, 0xac, 0x46, 0x17, 0xb1, 0x9d, 0xd0, 0x49, 0x3f, 0xf4, 0x41, 0x6f, 0x09, - 0xa6, 0xea, 0x4a, 0xe7, 0xcf, 0x0b, 0xb0, 0x3a, 0x69, 0x4f, 0x2c, 0x1e, 0x5d, 0xa8, 0x04, 0xa1, - 0x4b, 0x45, 0xf0, 0xe4, 0x2b, 0xce, 0x04, 0xd5, 0x0f, 0x5d, 0x6a, 0x0a, 0x08, 0x6f, 0x4e, 0x7a, - 0x57, 0x78, 0x49, 0x03, 0xf6, 0x95, 0x8c, 0x6a, 0x65, 0x53, 0x4b, 0xb8, 0x93, 0xe2, 0x91, 0x87, - 0x60, 0x04, 0xa3, 0xd8, 0xf6, 0x05, 0x5c, 0x2c, 0xb1, 0x53, 0xe6, 0x21, 0x17, 0xf1, 0x7c, 0x55, - 0xed, 0xfc, 0xe7, 0xd4, 0xb8, 0xf1, 0x86, 0xc9, 0x87, 0x50, 0x09, 0x1d, 0x27, 0x8b, 0xe5, 0x98, - 0xdd, 0x98, 0xb5, 0xee, 0x84, 0x33, 0xa5, 0x3a, 0x81, 0x24, 0x9f, 0x42, 0xd5, 0x0f, 0x5d, 0x36, - 0x64, 0xd2, 0xba, 0x05, 0x23, 0x7d, 0x2c, 0xf9, 0x6a, 0xa4, 0x15, 0x9e, 0x74, 0xf9, 0x48, 0xc7, - 0xbe, 0xac, 0x75, 0x37, 0x16, 0xcd, 0xd0, 0x13, 0x1c, 0xfb, 0xd8, 0x27, 0x3f, 0x82, 0x56, 0x92, - 0x9d, 0x5b, 0x93, 0xb2, 0x5d, 0xae, 0x1d, 0x73, 0x36, 0xe2, 0x38, 0x3f, 0x59, 0x32, 0x9b, 0x49, - 0x76, 0x7e, 0x90, 0xa3, 0x77, 0x97, 0xa1, 0xcc, 0x47, 0xb5, 0xf3, 0xeb, 0x12, 0x34, 0x0e, 0xcf, - 0x06, 0xaf, 0x15, 0xc3, 0x0a, 0xb7, 0x38, 0x86, 0x75, 0x9f, 0x2f, 0x2e, 0xf2, 0xf9, 0x2e, 0xac, - 0x88, 0x00, 0x52, 0x2b, 0xa2, 0xa1, 0xd6, 0x16, 0x8c, 0xaa, 0x60, 0x18, 0x9a, 0x0a, 0x40, 0xde, - 0x84, 0x86, 0x16, 0xaa, 0x09, 0x66, 0xa3, 0x9a, 0x59, 0x9f, 0x44, 0x69, 0x42, 0xbe, 0x95, 0x1b, - 0xca, 0xbd, 0xb3, 0xa2, 0x79, 0x82, 0x34, 0x4a, 0xba, 0xe8, 0xac, 0xcf, 0x2c, 0x5f, 0xe3, 0x33, - 0xeb, 0x2a, 0x79, 0x00, 0x16, 0x24, 0x22, 0x6d, 0x7c, 0xa2, 0x1a, 0x1a, 0x66, 0x81, 0x83, 0xe1, - 0xd7, 0xda, 0x5e, 0x97, 0x65, 0xa5, 0x63, 0x7b, 0x76, 0x7c, 0x98, 0x05, 0xce, 0x80, 0x8d, 0xa6, - 0x5a, 0xe7, 0x34, 0xf2, 0x29, 0x34, 0xcf, 0xc5, 0x2c, 0xc8, 0xba, 0x6a, 0xf3, 0x9a, 0x39, 0x32, - 0x1b, 0xe7, 0xda, 0x17, 0x0f, 0xe3, 0x35, 0x31, 0x32, 0x76, 0x8c, 0x0b, 0x21, 0xce, 0xce, 0x0f, - 0x00, 0xc4, 0x20, 0x6b, 0xb3, 0x73, 0x53, 0x1f, 0x46, 0x09, 0xd6, 0xa7, 0x88, 0x29, 0x02, 0xf9, - 0x14, 0x5a, 0xc3, 0x34, 0x11, 0xb6, 0x58, 0x2c, 0x18, 0x86, 0xd2, 0x69, 0x66, 0xe6, 0x97, 0xb7, - 0xf4, 0x64, 0xc9, 0x6c, 0x0c, 0xd3, 0x24, 0xff, 0xde, 0x5d, 0x81, 0x0a, 0x2a, 0xea, 0xfc, 0x63, - 0x05, 0x6a, 0x93, 0x6a, 0xfb, 0x3e, 0x54, 0x45, 0xbd, 0xce, 0x5c, 0x34, 0x27, 0x9f, 0x75, 0xa4, - 0x4e, 0xcf, 0x7a, 0xf1, 0xeb, 0x66, 0xbd, 0x0d, 0x65, 0x97, 0x26, 0x0e, 0x06, 0x40, 0x55, 0xa5, - 0x1a, 0x4e, 0x21, 0xdf, 0x01, 0x12, 0xc5, 0xcc, 0xb7, 0xe3, 0x2b, 0x2b, 0xcf, 0xcd, 0xc2, 0x2b, - 0x4a, 0xa6, 0x21, 0x39, 0x52, 0xa3, 0x9b, 0x90, 0x9f, 0x80, 0x11, 0xd0, 0x71, 0x6a, 0xc5, 0xd4, - 0x76, 0x2d, 0x1a, 0x8c, 0x58, 0x40, 0xd1, 0x41, 0x5a, 0xaa, 0xf1, 0x03, 0xa4, 0x69, 0x83, 0xd4, - 0xe2, 0x78, 0x93, 0xda, 0xae, 0xe0, 0x90, 0xef, 0xc0, 0x72, 0xcc, 0x57, 0x4c, 0x55, 0x3b, 0xc9, - 0xda, 0xe0, 0x19, 0xbd, 0x32, 0x39, 0x59, 0x4a, 0x49, 0x0c, 0xf9, 0x1e, 0xdc, 0x52, 0xd6, 0x45, - 0x31, 0x1d, 0xb2, 0xb1, 0x6e, 0xe4, 0x0a, 0x1a, 0xb9, 0x29, 0x01, 0xa7, 0xc8, 0x9f, 0x98, 0x3a, - 0x5d, 0xa5, 0x54, 0x67, 0xab, 0x94, 0x2d, 0x68, 0xb0, 0xc4, 0x1a, 0xf2, 0xca, 0x1c, 0x37, 0x44, - 0x35, 0x04, 0x00, 0x4b, 0x0e, 0xed, 0x24, 0xc5, 0x09, 0x38, 0x86, 0xbb, 0x51, 0x96, 0x5c, 0x50, - 0xd7, 0x72, 0xc3, 0x97, 0x81, 0x35, 0x64, 0x5e, 0x4a, 0xb1, 0x60, 0x76, 0xb1, 0xbe, 0x4c, 0xda, - 0x30, 0x57, 0x7d, 0xde, 0x16, 0x02, 0xfb, 0xe1, 0xcb, 0xe0, 0x10, 0xe1, 0x7b, 0x39, 0x9a, 0xec, - 0xc1, 0x7a, 0x9c, 0x05, 0x29, 0xf3, 0xa9, 0x52, 0xe5, 0xb1, 0x24, 0x6d, 0xd7, 0x51, 0x89, 0xf4, - 0x7a, 0x53, 0x00, 0x84, 0xac, 0xb9, 0x16, 0xeb, 0x9f, 0x47, 0x2c, 0xe1, 0x51, 0x67, 0xf0, 0xd5, - 0xed, 0xa5, 0xcd, 0x52, 0x0b, 0x55, 0xf9, 0x09, 0x6e, 0x20, 0x2b, 0x72, 0xdc, 0x9a, 0xbe, 0x3d, - 0xfe, 0xc2, 0x66, 0xe9, 0x19, 0xf3, 0xe9, 0x71, 0x42, 0xde, 0x87, 0x9a, 0x1d, 0xa8, 0x10, 0x69, - 0xea, 0x1e, 0xa9, 0x57, 0x17, 0x66, 0xd5, 0x0e, 0xe4, 0xaa, 0xf1, 0x0c, 0x6e, 0x64, 0x09, 0x75, - 0xe5, 0x28, 0xdb, 0xb1, 0x85, 0x9e, 0x49, 0x93, 0x76, 0x4b, 0xaf, 0x34, 0xe7, 0xa2, 0xc7, 0x5c, - 0xe7, 0x52, 0x53, 0x64, 0x9a, 0x74, 0xfe, 0xa3, 0x0c, 0x64, 0x7e, 0x6b, 0xf9, 0xbf, 0xd3, 0xb1, - 0xaf, 0x75, 0xb4, 0xca, 0xb5, 0x8e, 0xf6, 0x2d, 0x98, 0x6c, 0x3a, 0x10, 0xbe, 0x8c, 0xf0, 0x46, - 0x4e, 0xe4, 0xa0, 0x59, 0x77, 0x5b, 0xf9, 0xe6, 0xee, 0x56, 0xfd, 0x43, 0xb8, 0x5b, 0xed, 0xf7, - 0x76, 0x37, 0x78, 0x4d, 0x77, 0xab, 0xff, 0x3e, 0xee, 0xd6, 0xf8, 0x1f, 0xb8, 0xdb, 0x7f, 0x55, - 0xa0, 0xfc, 0x34, 0x64, 0x01, 0xf9, 0x10, 0x6a, 0xcf, 0x43, 0x16, 0xe8, 0x99, 0xbc, 0x35, 0x39, - 0xca, 0xd1, 0x4b, 0xb1, 0xe7, 0xf2, 0x9b, 0x2f, 0xfa, 0x28, 0x42, 0xc7, 0xd4, 0x11, 0x72, 0x45, - 0x7d, 0x7d, 0xe6, 0x72, 0x33, 0x47, 0x6e, 0x8d, 0xe7, 0x1a, 0xed, 0x9b, 0xec, 0x79, 0x78, 0x15, - 0xcc, 0x82, 0x80, 0xc6, 0xb8, 0x3f, 0x2f, 0xeb, 0x55, 0x30, 0x92, 0xf9, 0x26, 0xfd, 0x03, 0x68, - 0x79, 0x74, 0x98, 0x5a, 0x68, 0x13, 0xee, 0x74, 0x2b, 0x73, 0x93, 0xdf, 0xe0, 0x08, 0x6e, 0x18, - 0x6e, 0x74, 0xb7, 0x61, 0x35, 0x66, 0xa3, 0x0b, 0x5d, 0x64, 0x79, 0x7e, 0x73, 0x8c, 0x90, 0x5c, - 0xe6, 0x03, 0xa8, 0x47, 0x71, 0x78, 0x4e, 0xe5, 0x0e, 0x68, 0xe5, 0x15, 0x3b, 0x20, 0xc4, 0x88, - 0x1d, 0xd0, 0x07, 0x50, 0x3f, 0xcf, 0x58, 0xbe, 0x67, 0xaa, 0xbe, 0x42, 0x02, 0x31, 0x42, 0xe2, - 0x11, 0xac, 0x62, 0x4f, 0x34, 0x3f, 0xae, 0xcd, 0xd9, 0x85, 0x9d, 0xd5, 0x7c, 0xf7, 0xbb, 0x60, - 0x88, 0xce, 0x5c, 0x9b, 0x6c, 0x45, 0x87, 0xa7, 0xc5, 0xc2, 0xf4, 0x62, 0x3a, 0x68, 0xea, 0xf3, - 0x62, 0x88, 0xd1, 0xc4, 0x9e, 0xc0, 0x1d, 0x21, 0x46, 0xbf, 0xd4, 0x24, 0xad, 0x61, 0x1c, 0xfa, - 0x16, 0x0b, 0xa4, 0x2b, 0xea, 0x1a, 0x6e, 0x22, 0xfc, 0xe0, 0xcb, 0x89, 0x8e, 0xc3, 0x38, 0xf4, - 0x7b, 0x01, 0x79, 0x0c, 0x37, 0x59, 0x62, 0x05, 0x99, 0xe7, 0x59, 0xf6, 0x4b, 0x3b, 0xa6, 0x56, - 0x42, 0x7d, 0x86, 0x33, 0x82, 0xc9, 0xb7, 0x6a, 0xae, 0xb3, 0xa4, 0x9f, 0x79, 0xde, 0x0e, 0x67, - 0x0e, 0xa8, 0xcf, 0xd0, 0x5d, 0x5f, 0x11, 0xa9, 0xad, 0x6f, 0x12, 0xa9, 0x9d, 0x7f, 0x2f, 0x42, - 0x73, 0x0a, 0x44, 0x36, 0xa0, 0x28, 0x13, 0xac, 0x8a, 0xd6, 0x22, 0x73, 0xc9, 0x63, 0x30, 0x92, - 0x30, 0x8b, 0x1d, 0x8a, 0x05, 0xae, 0x68, 0xa9, 0x38, 0x3f, 0x21, 0x02, 0xc3, 0xff, 0x63, 0x1e, - 0x78, 0x0c, 0x46, 0x6a, 0xc7, 0x23, 0x9a, 0x6a, 0x52, 0xf3, 0x67, 0x2f, 0x2d, 0x81, 0xc9, 0xa5, - 0xb6, 0x81, 0xe4, 0x6d, 0x4d, 0x0e, 0x4d, 0xf5, 0xcd, 0xa1, 0xa1, 0xda, 0xc9, 0x0f, 0x50, 0xb7, - 0x81, 0xe4, 0x2d, 0x4d, 0x64, 0xf4, 0x1a, 0xd4, 0x50, 0xad, 0xe4, 0x32, 0x1f, 0xc1, 0x4a, 0x3c, - 0x14, 0x51, 0xbb, 0xac, 0xd7, 0x6d, 0x53, 0xe3, 0xa1, 0x85, 0xee, 0x72, 0x3c, 0xc4, 0xa0, 0x15, - 0x72, 0x7e, 0xe8, 0x52, 0x79, 0x24, 0xb3, 0x48, 0x4e, 0x3b, 0x94, 0x59, 0x8e, 0x87, 0xfc, 0xab, - 0xf3, 0xcf, 0x05, 0xa8, 0xe5, 0x07, 0xe5, 0x5f, 0xbf, 0x9c, 0xfd, 0x41, 0xcb, 0x77, 0xb5, 0xde, - 0x95, 0xe7, 0xd6, 0xbb, 0x4d, 0x58, 0xce, 0x02, 0xf6, 0x65, 0x26, 0x0a, 0xb2, 0xaa, 0x29, 0xbf, - 0x5e, 0xb1, 0x0e, 0x2e, 0x2f, 0x5e, 0x07, 0x3b, 0xbf, 0x2a, 0x40, 0x2d, 0x3f, 0xd7, 0x27, 0x5d, - 0x00, 0x2d, 0x96, 0x0a, 0x73, 0x33, 0xae, 0x71, 0xc9, 0x63, 0x68, 0xc5, 0x51, 0xa0, 0xc7, 0x9e, - 0xf0, 0x2b, 0x79, 0x38, 0x6a, 0x46, 0x81, 0xcc, 0x41, 0x51, 0xa0, 0x05, 0x5f, 0x7e, 0x40, 0x57, - 0xba, 0xe6, 0x80, 0xae, 0xf3, 0x8b, 0x82, 0x7e, 0xf0, 0x4d, 0xb6, 0xa0, 0xc2, 0xfd, 0x70, 0x91, - 0x45, 0x82, 0x41, 0xba, 0x50, 0xe3, 0xc6, 0x08, 0xd4, 0x42, 0x3b, 0xaa, 0xb1, 0xf8, 0xf3, 0xba, - 0x26, 0xfc, 0x43, 0x11, 0xea, 0xda, 0xfd, 0x05, 0x79, 0x1b, 0xaa, 0xa3, 0x38, 0xcc, 0x22, 0xeb, - 0xfc, 0x6a, 0x81, 0x19, 0x2b, 0xc8, 0xdb, 0xbd, 0xe2, 0x30, 0x7b, 0x34, 0x12, 0x1b, 0x9c, 0xf9, - 0x38, 0x5b, 0xb1, 0x47, 0x23, 0xdc, 0xcf, 0x6c, 0x41, 0x55, 0x9c, 0xd4, 0x51, 0x77, 0xaa, 0x94, - 0xc9, 0xa9, 0xe4, 0x7d, 0x68, 0xf0, 0x1e, 0xe5, 0x6d, 0x96, 0x17, 0x75, 0x0a, 0xe2, 0x28, 0xf8, - 0x4c, 0xb6, 0x2c, 0x05, 0xf2, 0xd6, 0x2b, 0xaf, 0x12, 0xd8, 0x91, 0x36, 0xe4, 0xe3, 0xb0, 0x7c, - 0xdd, 0x59, 0xe9, 0xf7, 0xa0, 0x11, 0xc5, 0x14, 0xd5, 0xce, 0x47, 0xce, 0x19, 0x3b, 0xf4, 0xec, - 0xe4, 0xe2, 0x34, 0xa6, 0x3b, 0xa3, 0x11, 0x8f, 0x15, 0xbe, 0x7a, 0xa8, 0xff, 0x9d, 0xbf, 0x28, - 0x40, 0xf9, 0x2c, 0x8c, 0xfa, 0xe4, 0x5d, 0xa8, 0x62, 0x55, 0x3e, 0x19, 0x3b, 0x79, 0xd0, 0xbe, - 0x7b, 0xd5, 0x4b, 0xa9, 0x6f, 0xae, 0x20, 0x77, 0xf7, 0x8a, 0xdc, 0x56, 0xf7, 0x3e, 0x45, 0xed, - 0x04, 0x5f, 0x5e, 0xf8, 0xbc, 0xd6, 0xb4, 0xf1, 0x51, 0x98, 0x14, 0x67, 0xf9, 0xb0, 0x4d, 0x37, - 0x57, 0xcf, 0x11, 0xbb, 0x57, 0x9d, 0xbf, 0x2b, 0x40, 0x05, 0x2f, 0x96, 0x26, 0x8d, 0x17, 0xae, - 0x69, 0xbc, 0xf8, 0x4d, 0x1a, 0x2f, 0x7d, 0x4d, 0xe3, 0xe4, 0x23, 0x58, 0x4b, 0xe3, 0x2c, 0x70, - 0xec, 0x94, 0xf2, 0x35, 0x1c, 0xfd, 0x57, 0x9a, 0x3c, 0xb5, 0x84, 0x29, 0xd0, 0x33, 0x7a, 0xc5, - 0x09, 0x9d, 0x9f, 0x40, 0xf9, 0x19, 0xf3, 0x3c, 0xf2, 0x06, 0x2c, 0x3b, 0x61, 0x10, 0xf4, 0xf6, - 0xa7, 0x6c, 0x96, 0x34, 0xde, 0x21, 0x51, 0x9a, 0x15, 0x35, 0x0f, 0x13, 0xa4, 0xce, 0x0e, 0x6c, - 0x2c, 0x3a, 0xf2, 0x27, 0xdf, 0x86, 0xe6, 0xe4, 0x8a, 0x40, 0xa5, 0x38, 0xa5, 0xb8, 0x31, 0x61, - 0xf5, 0xdc, 0xce, 0x5f, 0x97, 0xa0, 0xad, 0x46, 0x40, 0xfc, 0xb2, 0x30, 0x18, 0x64, 0x3e, 0x4f, - 0x30, 0xa4, 0x0b, 0x6b, 0xb8, 0xc2, 0x45, 0x71, 0xe8, 0xd0, 0x84, 0xd7, 0x7c, 0x98, 0x50, 0x0a, - 0x0f, 0xca, 0xe6, 0x2a, 0x67, 0x9c, 0x2a, 0x7a, 0x9f, 0x07, 0xef, 0x5a, 0x90, 0xf9, 0x1c, 0xea, - 0x66, 0x0e, 0x75, 0xad, 0x38, 0x7c, 0x99, 0x08, 0x0f, 0x30, 0x57, 0x83, 0xcc, 0x3f, 0x95, 0x74, - 0x33, 0x7c, 0x99, 0x90, 0xb7, 0xa1, 0xc5, 0xb1, 0x2c, 0xa5, 0xb1, 0x2d, 0xb2, 0x4e, 0x09, 0x81, - 0xcd, 0x20, 0xf3, 0x7b, 0x39, 0x71, 0xf6, 0xe2, 0xae, 0x3c, 0x77, 0x71, 0xb7, 0x05, 0x75, 0x27, - 0x0c, 0x9c, 0x2c, 0x8e, 0x69, 0xe0, 0x5c, 0x61, 0x0a, 0x2d, 0x9b, 0x3a, 0x89, 0x1c, 0xc1, 0x46, - 0xca, 0x86, 0xdc, 0xbd, 0xb1, 0x82, 0xe7, 0x89, 0x0e, 0xcf, 0x47, 0x96, 0xf5, 0x9b, 0x34, 0x19, - 0x00, 0x7c, 0x61, 0xd8, 0x13, 0xfc, 0x27, 0x4b, 0x26, 0x91, 0x72, 0x1a, 0x95, 0xdb, 0x1d, 0x67, - 0x5c, 0x47, 0x92, 0xf9, 0x51, 0xaa, 0x6e, 0x05, 0x1a, 0x66, 0x33, 0xce, 0xf6, 0x26, 0x44, 0xf2, - 0x74, 0xd2, 0x28, 0x16, 0xe1, 0x89, 0x18, 0x4e, 0x79, 0xb1, 0x39, 0xdd, 0x28, 0x2f, 0xc4, 0xe5, - 0x70, 0xe7, 0x4d, 0x6a, 0xb4, 0xdd, 0x06, 0xc0, 0x3e, 0x4d, 0x6d, 0xe6, 0xf1, 0x15, 0xa5, 0x33, - 0x82, 0x0d, 0x29, 0x97, 0xcf, 0x15, 0x9e, 0x83, 0x9c, 0xc0, 0x3a, 0x55, 0x04, 0xd9, 0x1c, 0xcb, - 0x4f, 0x11, 0xef, 0x4d, 0xfb, 0xf9, 0xec, 0x2c, 0x9b, 0x84, 0x4e, 0x53, 0x18, 0x4d, 0x3a, 0xff, - 0x0f, 0x6e, 0xcb, 0x86, 0x4c, 0x3a, 0x62, 0x61, 0xd0, 0xcf, 0xfc, 0x93, 0x61, 0x2f, 0x90, 0xa7, - 0xb0, 0xf7, 0xa1, 0xce, 0xe4, 0x7f, 0xe5, 0x5d, 0x35, 0x13, 0x14, 0xa9, 0xe7, 0xf2, 0x6d, 0x7c, - 0x8c, 0x72, 0x56, 0x90, 0xf9, 0xd2, 0x0b, 0x6a, 0xb1, 0xd2, 0xd4, 0xf9, 0x7b, 0x02, 0x64, 0x7e, - 0xd0, 0xc9, 0x63, 0xd8, 0x70, 0xfd, 0x21, 0x93, 0xb7, 0x9d, 0x01, 0x75, 0xad, 0xc8, 0x76, 0x2e, - 0xa5, 0xc7, 0xed, 0x16, 0xdb, 0x05, 0x93, 0x08, 0xfe, 0x40, 0xb0, 0x4f, 0x39, 0x57, 0x97, 0xba, - 0x64, 0x51, 0x94, 0x4b, 0x15, 0xe7, 0xa4, 0x04, 0x5b, 0x48, 0x7d, 0x0c, 0x6d, 0x29, 0xe5, 0xda, - 0xa9, 0x9d, 0x37, 0x88, 0x5e, 0x2b, 0x9c, 0xf1, 0x86, 0xe0, 0xef, 0xdb, 0xa9, 0x2d, 0xdb, 0x43, - 0xdf, 0x9d, 0x15, 0x94, 0x6d, 0xa2, 0x60, 0x79, 0x4e, 0x50, 0x70, 0x51, 0xf0, 0x13, 0xb8, 0x99, - 0x86, 0xa9, 0xed, 0x59, 0x52, 0x3c, 0x4e, 0x2c, 0x2f, 0xb4, 0x5d, 0xbe, 0x3b, 0xab, 0xe4, 0xa6, - 0xae, 0x23, 0x64, 0x1f, 0x11, 0x66, 0x72, 0x14, 0xda, 0x2e, 0xee, 0xd0, 0x36, 0xa6, 0x25, 0xa9, - 0x10, 0x5b, 0xc6, 0xe6, 0xd6, 0x74, 0x11, 0x8a, 0x02, 0xdf, 0x55, 0x4d, 0x89, 0xba, 0x3f, 0x09, - 0xec, 0x28, 0xb9, 0x08, 0x53, 0x2e, 0xb3, 0x82, 0x32, 0x42, 0xdf, 0x2e, 0xe7, 0x0e, 0x24, 0xf3, - 0x18, 0xf7, 0xc4, 0x5e, 0xe8, 0xd8, 0x9e, 0x25, 0x66, 0x2a, 0x41, 0x87, 0x2d, 0x9b, 0x0d, 0x24, - 0x0a, 0x3f, 0xc0, 0xd8, 0x8d, 0xa9, 0x1f, 0xa6, 0x34, 0x47, 0xd5, 0x44, 0xec, 0x0a, 0xaa, 0x82, - 0xbd, 0x03, 0xab, 0x59, 0x42, 0x63, 0x61, 0xeb, 0xf9, 0x55, 0x4a, 0xc5, 0x1e, 0xb4, 0x6c, 0x36, - 0x39, 0x99, 0xdb, 0x89, 0x77, 0x47, 0xe4, 0x43, 0xb8, 0x21, 0x4c, 0xf5, 0xa8, 0x1d, 0x07, 0x4a, - 0xc0, 0x4f, 0x70, 0x27, 0x5a, 0x36, 0x09, 0x32, 0x8f, 0x04, 0x4f, 0xf6, 0xee, 0x07, 0x70, 0xc7, - 0x65, 0x09, 0x5f, 0xcb, 0x10, 0xeb, 0xd8, 0xce, 0x05, 0xb5, 0x2e, 0x58, 0x2a, 0x9b, 0x69, 0xa0, - 0xe0, 0x4d, 0x01, 0xe1, 0x22, 0x7b, 0x1c, 0xf0, 0x84, 0xa5, 0xa2, 0xc1, 0x1f, 0xc1, 0x1b, 0xf3, - 0xd2, 0x3e, 0x4b, 0x12, 0x29, 0xde, 0x44, 0xf1, 0xf6, 0x8c, 0xf8, 0x31, 0x4b, 0x12, 0x21, 0xff, - 0x11, 0xb4, 0x67, 0xa7, 0xd1, 0xb9, 0xa0, 0xce, 0x25, 0xb7, 0xb9, 0xa5, 0x0d, 0xae, 0x9a, 0xc3, - 0x3d, 0xce, 0x3c, 0x4e, 0x78, 0x45, 0x97, 0xa4, 0xb6, 0x9a, 0x3d, 0x35, 0x76, 0xab, 0x28, 0x61, - 0x20, 0x87, 0x37, 0xa6, 0x86, 0xef, 0x36, 0x54, 0x13, 0x3a, 0xf2, 0x69, 0x90, 0x26, 0x78, 0x2f, - 0x5f, 0x36, 0xf3, 0x6f, 0x11, 0x5c, 0xb6, 0xba, 0x66, 0x5b, 0x53, 0xc1, 0x65, 0x8b, 0x3b, 0x36, - 0xce, 0x76, 0xa9, 0x97, 0xda, 0xc2, 0x25, 0x89, 0x60, 0x23, 0x05, 0xdd, 0xf0, 0x3e, 0xd4, 0x05, - 0x5b, 0x74, 0x77, 0x1d, 0xf9, 0x42, 0x42, 0x74, 0xf0, 0x1d, 0x58, 0xf5, 0x5f, 0x38, 0x8e, 0xc5, - 0x82, 0x28, 0x4b, 0x85, 0x92, 0x0d, 0x31, 0x73, 0x9c, 0xdc, 0xe3, 0x54, 0x54, 0xf4, 0x00, 0x0c, - 0x0d, 0x27, 0xb4, 0xdd, 0x40, 0x60, 0x2b, 0x07, 0x0a, 0x8d, 0x0a, 0x19, 0x66, 0x69, 0xae, 0x72, - 0x73, 0x82, 0x3c, 0x41, 0x32, 0xea, 0xdc, 0x82, 0x86, 0xe7, 0x63, 0x4c, 0x09, 0xd4, 0x4d, 0x61, - 0x9d, 0xe7, 0xf3, 0x40, 0x42, 0xc4, 0xf7, 0xe1, 0xb6, 0xee, 0xda, 0xd8, 0xb8, 0xbc, 0x65, 0xf5, - 0x13, 0xbc, 0x6c, 0x2f, 0x9b, 0x37, 0x27, 0xde, 0xdd, 0x9b, 0xf0, 0x8f, 0x35, 0x67, 0x13, 0xc2, - 0xe7, 0x2c, 0xf5, 0xed, 0x88, 0xcb, 0xdd, 0xd2, 0x9c, 0x0d, 0xe5, 0x76, 0x91, 0x75, 0x9c, 0x90, - 0xf7, 0x60, 0xdd, 0x67, 0x81, 0x25, 0xe2, 0x62, 0xd2, 0xd0, 0x6d, 0x31, 0x6f, 0x3e, 0x0b, 0x8e, - 0x38, 0x67, 0xa0, 0x5a, 0xe0, 0x70, 0x7b, 0x3c, 0x07, 0xbf, 0x23, 0xe1, 0xf6, 0x78, 0x1a, 0xfe, - 0x3e, 0x6c, 0x70, 0xed, 0x32, 0xa0, 0x26, 0xf8, 0x37, 0x44, 0x64, 0xfb, 0x2c, 0x30, 0x91, 0x35, - 0x25, 0x60, 0x8f, 0xe7, 0x05, 0xee, 0x4a, 0x01, 0x7b, 0x3c, 0x23, 0x70, 0x0a, 0xeb, 0xd2, 0xd7, - 0xac, 0x70, 0x68, 0xa9, 0x14, 0xdd, 0xbe, 0x87, 0x2b, 0xc3, 0xd6, 0xd4, 0x52, 0xb4, 0x20, 0xd3, - 0x9b, 0x6b, 0x52, 0x58, 0x4b, 0xfe, 0x93, 0x04, 0x88, 0x93, 0x3a, 0x95, 0x39, 0xef, 0xeb, 0x09, - 0xf0, 0xf8, 0x85, 0xe3, 0x2c, 0xce, 0x9c, 0x42, 0x50, 0xcf, 0x9c, 0x5b, 0x73, 0x82, 0x5a, 0xe6, - 0xfc, 0x09, 0xdc, 0x95, 0x82, 0x9e, 0xaf, 0x76, 0xdb, 0x53, 0xcd, 0xbe, 0x89, 0xd2, 0xb7, 0x04, - 0xe8, 0xc8, 0x17, 0x7b, 0x40, 0xbd, 0xe9, 0x85, 0x1a, 0xf4, 0xf6, 0x3b, 0x0b, 0x35, 0x68, 0x36, - 0xfc, 0x18, 0xee, 0x0a, 0xd7, 0x79, 0x81, 0x77, 0xaf, 0x16, 0x73, 0xc7, 0x22, 0x7d, 0xe3, 0x89, - 0x43, 0xf2, 0xa8, 0xed, 0x8a, 0xbc, 0x81, 0x20, 0x71, 0x3f, 0xdb, 0x73, 0xc7, 0x3c, 0x81, 0x1f, - 0xc6, 0xa1, 0x3f, 0x78, 0x44, 0xf6, 0xe0, 0xfe, 0x35, 0x0a, 0x5c, 0x96, 0x5c, 0xb6, 0x29, 0xaa, - 0xb8, 0xbd, 0x58, 0xc5, 0x3e, 0x4b, 0x2e, 0xc9, 0x01, 0x6c, 0x5d, 0xa3, 0x04, 0x73, 0x59, 0x7b, - 0x88, 0x5a, 0xee, 0x2c, 0xd6, 0x82, 0xc9, 0xec, 0xd5, 0x9d, 0x51, 0xc7, 0x85, 0xa3, 0x57, 0x75, - 0x46, 0x9e, 0x19, 0x2e, 0xea, 0x8c, 0xb8, 0x8f, 0xcd, 0x55, 0x5c, 0x2c, 0xea, 0x8c, 0xb8, 0x99, - 0x95, 0x4a, 0x4e, 0xe0, 0xed, 0x57, 0x29, 0x79, 0xc1, 0x12, 0x96, 0xf2, 0x72, 0x13, 0x2f, 0x43, - 0x19, 0xaa, 0xda, 0x5a, 0xa4, 0xea, 0x73, 0x01, 0xec, 0xe3, 0x8d, 0xe8, 0x00, 0xde, 0x7d, 0x95, - 0x42, 0x97, 0x25, 0x8e, 0x1d, 0xbb, 0xb9, 0xca, 0xe7, 0xa8, 0xb2, 0xb3, 0x48, 0xe5, 0xbe, 0x82, - 0x0a, 0xa5, 0x87, 0xf0, 0xe6, 0x9c, 0x52, 0x4c, 0xbf, 0x2f, 0xa8, 0x93, 0x77, 0xf6, 0x72, 0xd1, - 0x98, 0xf3, 0x7c, 0xfe, 0x39, 0x75, 0x64, 0x6f, 0x8f, 0xe0, 0xad, 0xc5, 0x7a, 0xf0, 0x5c, 0x2a, - 0xc9, 0x55, 0x79, 0xa8, 0xea, 0xde, 0xbc, 0xaa, 0x13, 0xc4, 0x09, 0x6d, 0x9d, 0xbf, 0x2c, 0xe4, - 0x15, 0x94, 0x56, 0x2d, 0x92, 0xb7, 0xa0, 0xe5, 0xb3, 0xe0, 0x6c, 0x70, 0x22, 0x0a, 0xcf, 0xbc, - 0x5a, 0x6f, 0x08, 0x2a, 0x87, 0xf6, 0x13, 0xf2, 0x08, 0x36, 0x23, 0x16, 0x51, 0x8f, 0x05, 0xd4, - 0xfa, 0x32, 0xa3, 0x19, 0xcd, 0xd1, 0xa2, 0x52, 0x5b, 0x57, 0xdc, 0x9f, 0x72, 0xa6, 0x14, 0xfa, - 0x18, 0xda, 0xb9, 0xd0, 0x79, 0x4c, 0xed, 0x4b, 0x1a, 0xe7, 0x62, 0xb2, 0x60, 0x52, 0xfc, 0x5d, - 0xc1, 0x16, 0x82, 0x9d, 0xaf, 0xa0, 0x3c, 0x08, 0xe3, 0x94, 0xbc, 0x03, 0x2b, 0xe7, 0xb8, 0x7b, - 0x4a, 0x16, 0x6f, 0x1f, 0x25, 0x93, 0xbc, 0x05, 0x4d, 0x96, 0xe0, 0x0d, 0x84, 0xed, 0x71, 0x41, - 0xf9, 0x56, 0x65, 0x9a, 0xf8, 0x9a, 0xfb, 0xff, 0x3f, 0x29, 0x82, 0x21, 0x5e, 0xb2, 0x1d, 0xc6, - 0xb6, 0x4f, 0x77, 0xc3, 0x2c, 0xe0, 0x1b, 0xbc, 0xb2, 0x76, 0xc8, 0x7c, 0x43, 0x7f, 0xef, 0x86, - 0x00, 0xed, 0xd0, 0x09, 0x81, 0xa4, 0x03, 0xb5, 0x2c, 0x38, 0xe7, 0x2c, 0xea, 0x4e, 0x6d, 0xc3, - 0x26, 0x64, 0xb2, 0x09, 0xcb, 0xe2, 0x0d, 0x8e, 0x1c, 0x0c, 0xf9, 0x45, 0x1e, 0x40, 0xcd, 0xb1, - 0x3d, 0x87, 0xef, 0xd5, 0x93, 0x05, 0x9b, 0xc2, 0x09, 0x93, 0xfc, 0x1f, 0xa8, 0x0f, 0xb9, 0x91, - 0x16, 0xde, 0xa2, 0xc9, 0x37, 0x98, 0x53, 0xe7, 0x36, 0xc8, 0xc6, 0x0b, 0x37, 0xf2, 0x29, 0x34, - 0x1d, 0x3f, 0x12, 0x25, 0xa8, 0x76, 0x86, 0x26, 0x1f, 0x4d, 0x22, 0x66, 0xcf, 0x8f, 0x78, 0x09, - 0x8a, 0x87, 0xbb, 0x75, 0x67, 0xf2, 0xd1, 0xf9, 0x75, 0x01, 0xea, 0xda, 0xa0, 0x5c, 0x37, 0x1e, - 0x08, 0x98, 0x1b, 0x8f, 0xef, 0x40, 0x25, 0x49, 0x6d, 0x39, 0x33, 0xf9, 0x4b, 0xcd, 0xd9, 0x71, - 0x36, 0x05, 0x88, 0x3c, 0x80, 0x12, 0x0d, 0xd4, 0x3c, 0xbd, 0x0a, 0xcb, 0x21, 0x9d, 0xdf, 0x16, - 0x60, 0x59, 0x70, 0xc8, 0xbb, 0x50, 0x1b, 0x66, 0x81, 0x63, 0xe1, 0xb1, 0xd9, 0xfc, 0x49, 0x4d, - 0x95, 0x33, 0xf7, 0x69, 0xe2, 0xcc, 0xed, 0xd6, 0x8b, 0x5f, 0xb7, 0x5b, 0xd7, 0x8f, 0x31, 0x4a, - 0xd7, 0x1d, 0x63, 0xbc, 0x0b, 0x15, 0x1c, 0x70, 0x79, 0x29, 0xbc, 0x36, 0x67, 0xb9, 0x29, 0xf8, - 0x13, 0x57, 0xac, 0x5c, 0xe7, 0x8a, 0x3f, 0x86, 0x06, 0x1e, 0xf2, 0xb0, 0x60, 0xc4, 0xbb, 0x40, - 0xde, 0x87, 0xe6, 0x48, 0x7e, 0x8b, 0x13, 0x83, 0xf9, 0x5e, 0x36, 0x46, 0x9a, 0x40, 0xe7, 0x09, - 0xd4, 0x95, 0x82, 0x01, 0x4d, 0xc9, 0xf7, 0xa0, 0x35, 0x25, 0xaf, 0xa2, 0x4a, 0x5e, 0x7e, 0xe8, - 0x6d, 0x99, 0x4d, 0x5d, 0x51, 0xd2, 0xf9, 0x45, 0x01, 0x96, 0xc5, 0xb3, 0x47, 0xf2, 0x91, 0x66, - 0x45, 0xfe, 0x80, 0x2c, 0xef, 0xac, 0xd6, 0xde, 0xc4, 0x98, 0x01, 0x4d, 0x93, 0xd7, 0x3c, 0x4a, - 0x69, 0xc3, 0xca, 0x0b, 0x1a, 0xe3, 0x73, 0x0c, 0x11, 0x15, 0xea, 0xb3, 0xf3, 0x1e, 0xd4, 0xb8, - 0x2d, 0xe2, 0xe9, 0xd8, 0xd7, 0x9e, 0x0c, 0x76, 0xfe, 0xb4, 0x00, 0x2b, 0xf2, 0xa1, 0x26, 0x79, - 0x08, 0x10, 0xc5, 0xe1, 0xf3, 0xa9, 0x4e, 0xaf, 0x4e, 0x44, 0xc4, 0x23, 0xba, 0x1a, 0x87, 0x88, - 0x93, 0xc2, 0xc7, 0xb0, 0x39, 0xa2, 0x01, 0x8d, 0x6d, 0xbe, 0xa0, 0xc8, 0x12, 0x54, 0xbc, 0xa2, - 0x28, 0xe2, 0x2b, 0x8a, 0x8d, 0x9c, 0x2b, 0x0a, 0x51, 0xf1, 0x9c, 0xe2, 0xf5, 0xf2, 0xcb, 0x3b, - 0xd0, 0x9a, 0x7e, 0x0e, 0x4a, 0x36, 0xd4, 0x71, 0x8d, 0xd8, 0x14, 0x8b, 0x8f, 0xee, 0x1f, 0x97, - 0xc4, 0xcb, 0x70, 0x3c, 0xc1, 0x5e, 0x83, 0x26, 0xff, 0xcd, 0xef, 0x56, 0x8d, 0x25, 0x45, 0xca, - 0xcf, 0xa7, 0x8d, 0x82, 0x22, 0xe5, 0xc7, 0xba, 0x46, 0x91, 0xac, 0xc3, 0x2a, 0x27, 0x69, 0x07, - 0x9a, 0x46, 0x89, 0x34, 0xa0, 0x8a, 0xda, 0xc2, 0xa8, 0x6f, 0x94, 0x49, 0x13, 0x6a, 0xfc, 0x0b, - 0xcf, 0xc2, 0x8c, 0x4a, 0xae, 0x04, 0xab, 0xc1, 0x9d, 0xd1, 0xc8, 0x58, 0x56, 0xf8, 0xa7, 0x21, - 0x0b, 0x8c, 0x15, 0xf5, 0xf5, 0x8c, 0x79, 0x9e, 0x51, 0x25, 0x9b, 0x40, 0xf8, 0xd7, 0xf4, 0xbb, - 0x50, 0xa3, 0x46, 0xda, 0xb0, 0xa1, 0xd3, 0xd5, 0xcb, 0x3d, 0x03, 0x08, 0x81, 0x16, 0xe7, 0x4c, - 0x8e, 0x79, 0x8d, 0x3a, 0xb9, 0x0d, 0x9b, 0x48, 0x9b, 0xbb, 0x44, 0x36, 0x1a, 0xaa, 0x3d, 0x9e, - 0xc2, 0x8d, 0x26, 0x69, 0x01, 0xf0, 0x2f, 0x11, 0x53, 0x46, 0x4b, 0x7d, 0x8b, 0x99, 0x36, 0x56, - 0xc9, 0x2a, 0xd4, 0x27, 0xdf, 0xdb, 0x86, 0xa1, 0x0c, 0x9c, 0x1e, 0x73, 0x63, 0x4d, 0x8d, 0x8c, - 0xf6, 0x42, 0xd2, 0xd8, 0x20, 0x6f, 0x40, 0x5b, 0x4a, 0xcf, 0x9d, 0x90, 0x19, 0x37, 0xba, 0x9f, - 0x40, 0x43, 0x7f, 0x07, 0xc8, 0xdb, 0x3a, 0xb5, 0x93, 0xe4, 0xec, 0x22, 0x0e, 0xb3, 0xd1, 0x85, - 0xb1, 0xc4, 0x87, 0x32, 0x6f, 0xc7, 0x28, 0x90, 0x2a, 0x94, 0x9f, 0xd8, 0xc9, 0x85, 0x51, 0xec, - 0x7e, 0x1f, 0x56, 0x67, 0xde, 0x7f, 0x72, 0x66, 0xff, 0xa4, 0x7f, 0x60, 0x2c, 0xf1, 0x7f, 0x87, - 0x3b, 0x83, 0x33, 0xa3, 0x40, 0x36, 0xc0, 0x78, 0xd2, 0xfb, 0xec, 0x89, 0xb5, 0x77, 0x72, 0x7c, - 0x6a, 0x1e, 0x0c, 0x06, 0xbd, 0x93, 0xbe, 0x51, 0xec, 0x3e, 0x04, 0x98, 0xbc, 0xb6, 0x20, 0x35, - 0xa8, 0xe0, 0x86, 0x40, 0x08, 0x9e, 0xb1, 0x67, 0x9f, 0x1b, 0x05, 0x52, 0x87, 0x15, 0xb9, 0xb4, - 0x1b, 0xc5, 0xee, 0x23, 0x58, 0x95, 0x55, 0x00, 0xef, 0xdb, 0x33, 0x16, 0xf0, 0xa5, 0x86, 0xf4, - 0xfa, 0x9f, 0xef, 0x1c, 0xf5, 0xf6, 0xad, 0x5e, 0x7f, 0xff, 0xe0, 0xe7, 0xd6, 0xb3, 0x5e, 0x7f, - 0x5f, 0x68, 0x78, 0xd2, 0x1f, 0x7c, 0x61, 0x14, 0xba, 0xe7, 0xb0, 0xb1, 0xe8, 0x89, 0x20, 0xb9, - 0x03, 0x37, 0x95, 0xe4, 0x7e, 0x6f, 0x70, 0xb6, 0xd3, 0xdf, 0x3b, 0xb0, 0x8e, 0x0f, 0xce, 0xcc, - 0xde, 0x9e, 0xb1, 0x44, 0x96, 0xa1, 0x78, 0xf4, 0xa1, 0x51, 0xc0, 0xdf, 0x6d, 0xa3, 0x48, 0x00, - 0x96, 0xf7, 0x4e, 0x06, 0xbd, 0xfe, 0x81, 0x51, 0xe2, 0x7e, 0xd4, 0xeb, 0xf7, 0x0f, 0x4c, 0xeb, - 0xd4, 0x3c, 0xd9, 0xff, 0xd9, 0xde, 0x99, 0x51, 0xee, 0x7e, 0x38, 0x79, 0xec, 0x88, 0x5d, 0xd9, - 0x00, 0xa3, 0x17, 0xbc, 0xb0, 0x3d, 0xe6, 0xe6, 0x34, 0x63, 0x89, 0xf7, 0xe5, 0x44, 0xe4, 0x53, - 0xa3, 0xd0, 0xfd, 0xbf, 0x93, 0xb7, 0x55, 0x28, 0x72, 0x13, 0xd6, 0xf5, 0x6f, 0x29, 0x6e, 0x2c, - 0xcd, 0x32, 0xfa, 0xe1, 0xc0, 0x09, 0x63, 0x6a, 0x14, 0xc8, 0x2d, 0xb8, 0xa1, 0x33, 0xbe, 0x60, - 0xe9, 0x85, 0x60, 0x15, 0xbb, 0x7f, 0xa4, 0xbf, 0xa6, 0xc3, 0x97, 0x68, 0xdc, 0x11, 0x67, 0x48, - 0x93, 0x26, 0x84, 0x26, 0x9d, 0x37, 0xb8, 0x08, 0x33, 0xcf, 0x35, 0x0a, 0xb2, 0x75, 0x9d, 0x75, - 0x9c, 0x25, 0xa9, 0x51, 0x5c, 0xa0, 0x8f, 0x33, 0xfa, 0x61, 0x6a, 0x94, 0xba, 0xbf, 0x2c, 0x00, - 0x99, 0x7f, 0xd3, 0x36, 0x2d, 0xa2, 0xa8, 0xfd, 0x30, 0xe0, 0x63, 0x73, 0x07, 0x6e, 0x2e, 0x78, - 0x05, 0x17, 0x86, 0xe8, 0x6e, 0x77, 0xe1, 0xd6, 0x3c, 0x73, 0x9f, 0x0a, 0x76, 0x91, 0xfb, 0xf6, - 0x02, 0xbd, 0x3c, 0x2b, 0x50, 0xa3, 0xd4, 0xfd, 0xff, 0xba, 0x2d, 0xea, 0x25, 0xe3, 0x74, 0x97, - 0x39, 0x75, 0x32, 0x1a, 0x9b, 0xb3, 0x02, 0x5f, 0x84, 0x31, 0x1f, 0x8a, 0x36, 0x6c, 0x4c, 0xd3, - 0x4f, 0xf1, 0x0d, 0xa3, 0x51, 0x5c, 0xc0, 0xc1, 0x07, 0x16, 0x46, 0xa9, 0xfb, 0xd1, 0xcc, 0x43, - 0x2d, 0x15, 0x5d, 0xd3, 0x53, 0x6c, 0x40, 0x83, 0x13, 0x0e, 0x33, 0xcf, 0x4b, 0xe9, 0x98, 0x8f, - 0xe0, 0xdf, 0x16, 0xa0, 0xaa, 0xae, 0xfa, 0x27, 0x09, 0x31, 0xa0, 0x31, 0xa6, 0xaa, 0x25, 0x72, - 0x03, 0xd6, 0x30, 0xb5, 0xd1, 0x61, 0x7a, 0x92, 0xa5, 0x92, 0x5c, 0x50, 0x29, 0xc1, 0x64, 0xa3, - 0x0b, 0x8d, 0x5e, 0x54, 0x0d, 0xa8, 0x0b, 0x5b, 0xa3, 0xc4, 0x3d, 0x14, 0xd3, 0x67, 0x90, 0xb2, - 0x9c, 0x5a, 0xe6, 0xa3, 0x32, 0xa5, 0x36, 0x67, 0x55, 0xf8, 0x1c, 0x28, 0x81, 0x79, 0xf6, 0x72, - 0x77, 0x0b, 0x1a, 0xfa, 0x13, 0x03, 0xd5, 0x22, 0xcf, 0x12, 0xc2, 0xe4, 0xee, 0xa7, 0xb0, 0x36, - 0x77, 0x9d, 0xc9, 0xe3, 0xab, 0xd7, 0x17, 0xa1, 0x71, 0xdc, 0xeb, 0x5b, 0xc7, 0x3b, 0x3f, 0x37, - 0x0a, 0x5c, 0x76, 0xf7, 0xe8, 0xe4, 0xe4, 0xd8, 0x3a, 0xec, 0x1d, 0x9d, 0x1d, 0x98, 0x46, 0xb1, - 0xdb, 0x9d, 0x91, 0xc5, 0x3c, 0xc3, 0xf3, 0xc5, 0xc9, 0xde, 0xce, 0x91, 0xb1, 0xc4, 0xc3, 0xf3, - 0xb3, 0xa3, 0x93, 0xdd, 0x9d, 0x23, 0xa3, 0xd0, 0xdd, 0x85, 0xb5, 0xb9, 0x4b, 0x1c, 0x3e, 0xe4, - 0x87, 0x61, 0xec, 0x50, 0x41, 0x12, 0xf9, 0x61, 0x27, 0x4b, 0x43, 0xa3, 0xc0, 0xb3, 0x36, 0xb2, - 0xc4, 0xba, 0xc0, 0x82, 0x91, 0x51, 0xec, 0xfe, 0x18, 0x56, 0x67, 0x6a, 0x60, 0x9e, 0x01, 0x0f, - 0x43, 0xcf, 0x0b, 0x5f, 0x72, 0x04, 0x26, 0xc4, 0xd3, 0x98, 0x3a, 0xd4, 0xe5, 0x9f, 0x05, 0x9e, - 0xac, 0xf7, 0xf0, 0x98, 0x3d, 0x35, 0xc3, 0x97, 0x46, 0xb1, 0x7b, 0x02, 0xc6, 0x6c, 0xdd, 0x49, - 0x56, 0xa0, 0xd4, 0x0b, 0x52, 0x63, 0x89, 0x1b, 0x7e, 0xe8, 0x85, 0x76, 0x2a, 0xd2, 0xdb, 0x3e, - 0x75, 0x98, 0x6f, 0x7b, 0x46, 0x91, 0xaf, 0x07, 0xfb, 0x76, 0x4a, 0xf9, 0xae, 0x46, 0xac, 0x65, - 0xfb, 0x99, 0x38, 0xfd, 0x37, 0xca, 0x3c, 0xf5, 0xcd, 0x54, 0xa1, 0xbc, 0x0b, 0x7c, 0x37, 0x2e, - 0xba, 0x8f, 0xad, 0x25, 0x46, 0x01, 0x87, 0x82, 0x17, 0x27, 0x89, 0x51, 0xdc, 0xfd, 0xf6, 0x6f, - 0x7e, 0x77, 0xaf, 0xf0, 0x4f, 0xbf, 0xbb, 0x57, 0xf8, 0xd7, 0xdf, 0xdd, 0x2b, 0xfc, 0xd9, 0xbf, - 0xdd, 0x5b, 0x82, 0x1b, 0x4e, 0xe8, 0x3f, 0xe4, 0x85, 0x8b, 0x63, 0x47, 0x0f, 0x53, 0xe6, 0x9e, - 0xe3, 0x52, 0x7e, 0x5a, 0xf8, 0xef, 0x00, 0x00, 0x00, 0xff, 0xff, 0xb8, 0xbb, 0x8c, 0x65, 0xfb, - 0x35, 0x00, 0x00, + // 5217 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x5a, 0x4b, 0x73, 0x1c, 0xc9, + 0x71, 0xc6, 0xbc, 0x80, 0x99, 0x9c, 0x07, 0x1a, 0x05, 0x10, 0x1c, 0x92, 0x4b, 0x12, 0x3b, 0xda, + 0x07, 0x35, 0xd6, 0x72, 0x77, 0x41, 0x6a, 0x77, 0xb5, 0x7a, 0xac, 0xf0, 0x5c, 0x0e, 0x09, 0x0c, + 0xa0, 0x1e, 0x68, 0x57, 0x11, 0x76, 0x44, 0x47, 0xa3, 0xbb, 0x66, 0xa6, 0x88, 0x7e, 0xb1, 0x1f, + 0xe4, 0x60, 0x1d, 0x8e, 0xd0, 0x59, 0x27, 0x87, 0x15, 0x56, 0xf8, 0xec, 0x93, 0x1d, 0x76, 0xf8, + 0xe0, 0x3f, 0x60, 0x1f, 0x75, 0x71, 0x84, 0xaf, 0xd2, 0xc1, 0xe1, 0x90, 0x4f, 0x8e, 0xf0, 0xcd, + 0x37, 0x9f, 0x1c, 0x95, 0x55, 0xdd, 0x5d, 0xf3, 0x00, 0x96, 0x6b, 0xe9, 0xe0, 0xd3, 0x4c, 0x67, + 0x7e, 0x99, 0x95, 0x55, 0x95, 0x99, 0x95, 0xf5, 0x80, 0x16, 0x9d, 0x50, 0x2b, 0x89, 0xfd, 0xf0, + 0x61, 0x10, 0xfa, 0xb1, 0x4f, 0xca, 0x31, 0x0b, 0xce, 0x6f, 0x6b, 0x74, 0x12, 0x84, 0x34, 0x8a, + 0x98, 0xef, 0x09, 0xfa, 0xed, 0x46, 0x64, 0x8d, 0xa9, 0x6b, 0xca, 0xaf, 0x8d, 0x91, 0x3f, 0xf2, + 0xf1, 0xef, 0xfb, 0xfc, 0x9f, 0xa0, 0x76, 0xfe, 0xb6, 0x06, 0xd5, 0x03, 0xa9, 0x8e, 0xbc, 0x05, + 0xc5, 0x38, 0x68, 0x17, 0xb6, 0x0a, 0x0f, 0x5a, 0xdb, 0xad, 0x87, 0x5c, 0xeb, 0x43, 0xce, 0x3b, + 0xbb, 0x0c, 0xe8, 0x6e, 0xf9, 0xd7, 0xff, 0x76, 0x7f, 0x49, 0x2f, 0xc6, 0x01, 0xe9, 0x42, 0x35, + 0x3e, 0x77, 0x8c, 0xc8, 0x32, 0xbd, 0x76, 0x71, 0xab, 0xf0, 0xa0, 0xbe, 0xbd, 0x2a, 0xb0, 0x67, + 0xe6, 0xb9, 0x43, 0x07, 0x96, 0xe9, 0xe9, 0x2b, 0xf1, 0xb9, 0xc3, 0xff, 0x70, 0x2c, 0xb3, 0x27, + 0x02, 0x5b, 0x52, 0xb1, 0x3d, 0xcf, 0xa6, 0x13, 0x81, 0x65, 0x36, 0xfe, 0x21, 0xef, 0x41, 0x2d, + 0xa2, 0x0e, 0xb5, 0x62, 0xe6, 0x7b, 0xed, 0xb2, 0x0a, 0x1e, 0xa4, 0x64, 0x3d, 0x47, 0x90, 0x47, + 0x50, 0x37, 0x47, 0xa3, 0x90, 0x8e, 0x4c, 0x14, 0xa8, 0xa0, 0xc0, 0x9a, 0x10, 0xd8, 0xc9, 0x19, + 0xba, 0x8a, 0x22, 0xf7, 0xa0, 0x1c, 0xfb, 0x41, 0xbf, 0xbd, 0x8c, 0x68, 0x90, 0x76, 0xfb, 0x41, + 0x5f, 0x47, 0x3a, 0x79, 0x13, 0x2a, 0x0e, 0x73, 0x59, 0xdc, 0x5e, 0x41, 0x40, 0x5d, 0x00, 0x8e, + 0x38, 0x49, 0x17, 0x1c, 0xb2, 0x07, 0x6b, 0x74, 0x62, 0x8d, 0x4d, 0x6f, 0x44, 0x8d, 0x90, 0x5a, + 0x94, 0xbd, 0xa4, 0x61, 0xbb, 0x8a, 0xf0, 0xcd, 0x74, 0xcc, 0x04, 0x5b, 0x97, 0x5c, 0x5d, 0xa3, + 0x33, 0x14, 0x6e, 0xc7, 0x73, 0x9f, 0x79, 0xed, 0x9a, 0x6a, 0xc7, 0x53, 0x9f, 0x79, 0x3a, 0xd2, + 0xc9, 0x7d, 0xa8, 0xa7, 0x93, 0x6c, 0x30, 0xbb, 0x0d, 0x5b, 0x85, 0x07, 0x35, 0x1d, 0x52, 0x52, + 0xcf, 0xe6, 0x0a, 0x2e, 0x98, 0xe3, 0xb4, 0xeb, 0xaa, 0x82, 0x67, 0xcc, 0x71, 0x74, 0xa4, 0x93, + 0x1f, 0xc2, 0x6a, 0x66, 0x65, 0x44, 0x3d, 0x9b, 0x86, 0xed, 0x06, 0x42, 0x37, 0xa6, 0x6d, 0x1c, + 0x20, 0x4f, 0x6f, 0xd1, 0xa9, 0x6f, 0xf2, 0x01, 0xc0, 0x69, 0xe8, 0x3f, 0x97, 0x93, 0xd1, 0x44, + 0x49, 0x4d, 0x48, 0xe6, 0x74, 0x5d, 0xc1, 0x90, 0xa7, 0xb0, 0x11, 0x98, 0x61, 0xcc, 0xf8, 0x87, + 0x11, 0x73, 0x4f, 0x10, 0xb3, 0xde, 0x42, 0xd9, 0xb6, 0x94, 0x4d, 0x11, 0xb9, 0xab, 0x90, 0x60, + 0x8e, 0xc6, 0x3b, 0x17, 0xf9, 0x61, 0xdc, 0x5e, 0x55, 0x3b, 0x37, 0xf0, 0xc3, 0x58, 0x47, 0x3a, + 0x79, 0x0b, 0x96, 0x5f, 0x31, 0xcf, 0xf6, 0x5f, 0xb5, 0x35, 0x44, 0x34, 0x04, 0xe2, 0x4b, 0xa4, + 0xe9, 0x92, 0x47, 0xfa, 0xf0, 0xe6, 0x90, 0x79, 0xd4, 0x18, 0x85, 0x26, 0xf3, 0xa8, 0x6d, 0x44, + 0xe3, 0x64, 0x38, 0xe4, 0x66, 0xc5, 0x21, 0x35, 0x5d, 0xc3, 0xf2, 0x13, 0x2f, 0x6e, 0xaf, 0x6d, + 0x15, 0x1e, 0x94, 0xa5, 0x73, 0xdf, 0xe5, 0xf0, 0xcf, 0x05, 0x7a, 0x20, 0xc0, 0x03, 0xc4, 0xee, + 0x71, 0x28, 0x79, 0x0a, 0xf7, 0x17, 0xea, 0x3b, 0x37, 0x63, 0x6b, 0x6c, 0x44, 0xec, 0x2b, 0xda, + 0x26, 0x8a, 0xb6, 0x3b, 0xf3, 0xda, 0x76, 0x39, 0x72, 0xc0, 0xbe, 0xa2, 0xbc, 0x07, 0x74, 0x12, + 0x98, 0x9e, 0xdd, 0x5e, 0x57, 0x7b, 0x70, 0x80, 0x34, 0x5d, 0xf2, 0xc8, 0xbb, 0xb0, 0x22, 0xfe, + 0x6d, 0xb7, 0x37, 0x10, 0xd6, 0x54, 0x61, 0xdb, 0x7a, 0xca, 0xe5, 0xb3, 0x7d, 0x1e, 0xfa, 0xa6, + 0x6d, 0x99, 0x51, 0x6c, 0xbc, 0x48, 0x68, 0x78, 0xd9, 0xbe, 0xa1, 0xce, 0xf6, 0x6e, 0xca, 0xfc, + 0x09, 0xe7, 0xe9, 0xad, 0xf3, 0xa9, 0x6f, 0xf2, 0x18, 0x1a, 0x8c, 0xc7, 0xa3, 0xe1, 0xf8, 0xfe, + 0x45, 0x12, 0xb4, 0xdb, 0x6a, 0x2c, 0x61, 0xa4, 0x1e, 0xf9, 0xfe, 0xc5, 0x4f, 0x03, 0xbd, 0xce, + 0xd2, 0x8f, 0x24, 0x20, 0x77, 0x01, 0x02, 0x33, 0xa4, 0x5e, 0x6c, 0x30, 0x7b, 0xd2, 0xbe, 0xb5, + 0x55, 0x78, 0xd0, 0xd4, 0x6b, 0x82, 0xd2, 0xb3, 0x27, 0xe4, 0x14, 0x36, 0xe9, 0x24, 0x70, 0x4c, + 0xe6, 0x19, 0x43, 0x3f, 0x34, 0x2c, 0xdf, 0xf3, 0xa4, 0x3b, 0xdd, 0x46, 0xf5, 0xb7, 0xb3, 0xbe, + 0x70, 0xcc, 0xa1, 0x1f, 0xee, 0x65, 0x08, 0x7d, 0x83, 0x2e, 0xa0, 0x76, 0xfe, 0xbe, 0x04, 0xad, + 0x69, 0xbf, 0x25, 0x0f, 0x94, 0x8c, 0x45, 0xa6, 0x3d, 0x7b, 0x2e, 0x6b, 0xad, 0x51, 0xcf, 0xf2, + 0x6d, 0x6a, 0x1b, 0xb1, 0x19, 0x5d, 0x18, 0x2e, 0x8d, 0xcd, 0x76, 0x71, 0xab, 0xf4, 0xa0, 0xa1, + 0xaf, 0x4a, 0xc6, 0x99, 0x19, 0x5d, 0x1c, 0xd3, 0xd8, 0x24, 0x1f, 0x42, 0x2b, 0xf7, 0xe5, 0x0b, + 0x7a, 0x19, 0xb5, 0x4b, 0x5b, 0xa5, 0xdc, 0x13, 0x0f, 0x26, 0x41, 0xa8, 0x37, 0x33, 0xc4, 0x33, + 0x7a, 0x19, 0x91, 0xb7, 0xa0, 0x62, 0x8d, 0x99, 0x63, 0xcb, 0xc4, 0xa5, 0x64, 0x4f, 0x1e, 0xb0, + 0xba, 0x60, 0x92, 0xb7, 0xa1, 0x12, 0x5f, 0x06, 0x34, 0x6a, 0x57, 0x50, 0x9f, 0x4c, 0x6f, 0x87, + 0x8c, 0x3a, 0x36, 0x37, 0x57, 0x17, 0x5c, 0xf2, 0x31, 0xac, 0x9a, 0x8e, 0x63, 0x0c, 0x39, 0xdd, + 0x10, 0x02, 0xcb, 0x8b, 0x05, 0x9a, 0xa6, 0xe3, 0x64, 0x5f, 0x11, 0xf9, 0x21, 0xd4, 0x2d, 0xdf, + 0x4d, 0x97, 0x01, 0x4c, 0x62, 0xad, 0xed, 0x1b, 0x42, 0x68, 0x2f, 0x67, 0x1c, 0xfb, 0x76, 0x3a, + 0x34, 0x2a, 0x9e, 0x1c, 0xc1, 0x66, 0x12, 0xa4, 0xe1, 0x11, 0x53, 0x65, 0xa0, 0xaa, 0xd8, 0xfc, + 0x4d, 0xd9, 0x2b, 0x31, 0x5c, 0xbb, 0x97, 0x31, 0x8d, 0x06, 0x0e, 0xb3, 0xa8, 0xbe, 0x9e, 0x8a, + 0xed, 0xc5, 0x34, 0x1d, 0xc5, 0xce, 0x2f, 0x0a, 0x50, 0x57, 0x9c, 0x87, 0x7c, 0x00, 0x1b, 0xc2, + 0xcb, 0xc6, 0xa6, 0x67, 0x3b, 0xd4, 0xf0, 0x87, 0xc3, 0x88, 0xc6, 0x51, 0xbb, 0xb0, 0x55, 0x7a, + 0xd0, 0xd4, 0x09, 0xf2, 0x9e, 0x20, 0xeb, 0x44, 0x70, 0xb8, 0x87, 0x5d, 0x50, 0x1a, 0x18, 0x7e, + 0xc8, 0xf3, 0x17, 0x5f, 0x6b, 0xaa, 0x7a, 0x8d, 0x53, 0x4e, 0x38, 0x81, 0x2f, 0x2e, 0x38, 0xac, + 0x21, 0xf5, 0xe4, 0x04, 0xcd, 0x0e, 0x7b, 0xc6, 0xef, 0x7c, 0x02, 0x6b, 0x73, 0x66, 0x93, 0x6f, + 0x41, 0x53, 0xf5, 0x09, 0x61, 0x4a, 0x43, 0x6f, 0x28, 0xfe, 0x10, 0x75, 0x7e, 0x5b, 0x00, 0x6d, + 0x36, 0xa3, 0x2f, 0xf6, 0xa6, 0xc2, 0x62, 0x6f, 0xfa, 0x00, 0xea, 0xea, 0x4c, 0x16, 0x17, 0xcf, + 0x24, 0x0c, 0xf3, 0x69, 0xec, 0xa0, 0x57, 0x97, 0xae, 0xf2, 0x6a, 0xf4, 0xe7, 0x7d, 0xb8, 0xef, + 0x87, 0x6c, 0xc4, 0x3c, 0xd3, 0xc1, 0xb9, 0x0a, 0x42, 0xdb, 0xb7, 0x12, 0x1a, 0x2a, 0xf6, 0x94, + 0xd1, 0x9e, 0x3b, 0x29, 0x6c, 0x2f, 0xa6, 0xa7, 0x12, 0x94, 0xcd, 0xd1, 0x2f, 0x4b, 0xd0, 0xd8, + 0xe9, 0xf7, 0x31, 0x0d, 0xf4, 0xbc, 0xa1, 0x4f, 0x3e, 0x06, 0xc0, 0xfc, 0x81, 0xc6, 0x4e, 0x07, + 0x56, 0x8a, 0x53, 0x02, 0xab, 0xf6, 0x22, 0x25, 0x90, 0x1e, 0xac, 0xda, 0x2c, 0x8a, 0x4d, 0xcf, + 0xa2, 0xbc, 0xf5, 0x90, 0x59, 0x38, 0x61, 0xad, 0x34, 0xce, 0xbf, 0xa0, 0x56, 0xec, 0x87, 0xfb, + 0x12, 0x72, 0x8c, 0x08, 0xa9, 0xa5, 0x65, 0x4f, 0x51, 0xc9, 0x2d, 0xa8, 0xc4, 0x7e, 0x60, 0x5c, + 0xe0, 0x08, 0x34, 0x25, 0x88, 0xaf, 0xcf, 0xcf, 0xc8, 0xdb, 0xdc, 0xc1, 0x9d, 0xc4, 0xf5, 0x0c, + 0xcf, 0x74, 0x29, 0x06, 0x5b, 0x4d, 0x02, 0x40, 0x30, 0xfa, 0xa6, 0x4b, 0xc9, 0x9b, 0x50, 0x93, + 0x30, 0x66, 0x63, 0x65, 0x50, 0x92, 0xa0, 0xaa, 0x20, 0xe3, 0x02, 0x5a, 0x0f, 0xe9, 0xd0, 0x78, + 0x49, 0x2d, 0x63, 0xf8, 0x68, 0x1b, 0x0b, 0x82, 0x86, 0x5e, 0x0b, 0xe9, 0xf0, 0x0b, 0x6a, 0x1d, + 0x3e, 0xda, 0x26, 0xf7, 0xa1, 0x2a, 0xbc, 0x95, 0xd9, 0xb8, 0xba, 0xa7, 0x1a, 0x56, 0x90, 0xda, + 0xe3, 0xc9, 0xb9, 0xe1, 0x9a, 0x13, 0x23, 0xb5, 0x1d, 0xd7, 0xe8, 0x42, 0x1a, 0x55, 0xae, 0x39, + 0x49, 0xbb, 0x4a, 0xba, 0xd0, 0x1a, 0x7b, 0xd1, 0x2b, 0x83, 0x0e, 0x8d, 0x88, 0x9a, 0xa1, 0x35, + 0xc6, 0x64, 0x9e, 0xf6, 0xab, 0xc1, 0x79, 0x07, 0xc3, 0x01, 0x72, 0x9e, 0x96, 0xab, 0x2b, 0x5a, + 0xb5, 0xf3, 0xab, 0x02, 0xb4, 0x0e, 0xcf, 0x06, 0xbb, 0xbe, 0xef, 0x50, 0xd3, 0x3b, 0xa3, 0xa1, + 0x4b, 0xbe, 0x0f, 0xb5, 0x98, 0x86, 0xae, 0x3a, 0x2d, 0x72, 0x4d, 0x9d, 0x06, 0x2a, 0x93, 0x53, + 0x8d, 0xe5, 0x37, 0x69, 0x43, 0x39, 0xa6, 0x93, 0x18, 0x27, 0xa4, 0x96, 0x8d, 0x27, 0x9d, 0xc4, + 0xe4, 0x3d, 0x58, 0x0d, 0xc6, 0xa1, 0x19, 0xd1, 0xbc, 0x1f, 0xea, 0xa0, 0xb7, 0x04, 0x33, 0xed, + 0x4a, 0xe7, 0x37, 0x45, 0x58, 0xcd, 0xdb, 0x13, 0x8b, 0x47, 0x17, 0x2a, 0x9e, 0x6f, 0x53, 0x11, + 0x3c, 0xd9, 0x8a, 0x93, 0xa3, 0xfa, 0xbe, 0x4d, 0x75, 0x01, 0xe1, 0xcd, 0x49, 0xef, 0xf2, 0x2f, + 0xa8, 0xc7, 0xbe, 0x92, 0x51, 0x9d, 0xda, 0xd4, 0x12, 0xee, 0x94, 0xf2, 0xc8, 0x43, 0xd0, 0xbc, + 0x51, 0x68, 0xba, 0x02, 0x2e, 0x96, 0xd8, 0x29, 0xf3, 0x90, 0x8b, 0x78, 0x5c, 0x55, 0x7f, 0x00, + 0x6d, 0xe6, 0x79, 0xbe, 0x7d, 0x6e, 0x0c, 0x63, 0xc3, 0x65, 0x9e, 0x2a, 0x57, 0x56, 0xe4, 0x36, + 0x04, 0xea, 0x30, 0x3e, 0x66, 0xde, 0x55, 0xd2, 0xe6, 0x44, 0x95, 0xae, 0x2c, 0x94, 0x36, 0x27, + 0xb9, 0xf4, 0x67, 0x70, 0x2b, 0x97, 0xa6, 0x9e, 0x28, 0x80, 0x62, 0x3f, 0x78, 0xe5, 0x87, 0x36, + 0x7a, 0x57, 0x55, 0x8a, 0x6f, 0xa6, 0xe2, 0x07, 0x08, 0x1a, 0x48, 0x4c, 0xe7, 0xbf, 0xa7, 0x26, + 0x9d, 0x8f, 0x1a, 0xf9, 0x10, 0x2a, 0xbe, 0x65, 0x25, 0xa1, 0x9c, 0xf0, 0x1b, 0xb3, 0x43, 0x7b, + 0xc2, 0x99, 0x52, 0xad, 0x40, 0x92, 0x4f, 0xa1, 0xea, 0xfa, 0x36, 0x1b, 0x32, 0x39, 0xb4, 0x0b, + 0xdc, 0xe4, 0x58, 0xf2, 0x53, 0x37, 0x49, 0xf1, 0xa4, 0xcb, 0xdd, 0x24, 0x74, 0x65, 0xa1, 0xbe, + 0xb1, 0xc8, 0xbd, 0x9e, 0xa0, 0xe3, 0x84, 0x2e, 0xf9, 0x11, 0xb4, 0xa2, 0xe4, 0xdc, 0xc8, 0xf7, + 0x1c, 0x72, 0xe1, 0x9b, 0xb3, 0x11, 0x9d, 0xe4, 0xc9, 0x92, 0xde, 0x8c, 0x92, 0xf3, 0x83, 0x0c, + 0xbd, 0xbb, 0x0c, 0x65, 0xee, 0x12, 0x9d, 0x5f, 0x95, 0xa0, 0x71, 0x78, 0x36, 0x78, 0xad, 0x04, + 0x94, 0xe2, 0x16, 0x27, 0x20, 0x35, 0x60, 0x8b, 0x8b, 0x02, 0xb6, 0x0b, 0x2b, 0x22, 0xfa, 0xd3, + 0xe5, 0x5c, 0x4b, 0x17, 0x46, 0x4c, 0x09, 0xde, 0xd0, 0xd7, 0x53, 0x00, 0x79, 0x13, 0x1a, 0x4a, + 0x9e, 0x89, 0x30, 0x95, 0xd6, 0xf4, 0x7a, 0x9e, 0x62, 0x22, 0xf2, 0xad, 0xcc, 0x50, 0x1e, 0x5a, + 0x15, 0xc5, 0x8d, 0xa5, 0x51, 0x32, 0xbe, 0x66, 0x1d, 0x7e, 0xf9, 0x1a, 0x87, 0x5f, 0x4f, 0x33, + 0x1f, 0x60, 0x35, 0x25, 0x72, 0xde, 0x27, 0x69, 0x43, 0xc3, 0xc4, 0xb3, 0x30, 0x77, 0xb4, 0xb6, + 0xd7, 0x65, 0x4d, 0x6c, 0x99, 0x8e, 0x19, 0x1e, 0x26, 0x9e, 0x35, 0x60, 0xa3, 0xa9, 0xd6, 0x39, + 0x8d, 0x7c, 0x0a, 0xcd, 0x73, 0x31, 0x0b, 0xb2, 0x28, 0xdc, 0xbc, 0x66, 0x8e, 0xf4, 0xc6, 0xb9, + 0xf2, 0xc5, 0x73, 0xd0, 0x9a, 0x18, 0x19, 0x33, 0xc4, 0x55, 0x1c, 0x67, 0xe7, 0x07, 0x00, 0x62, + 0x90, 0x95, 0xd9, 0xb9, 0xa9, 0x0e, 0xa3, 0x04, 0xab, 0x53, 0xc4, 0x52, 0x02, 0xf9, 0x14, 0x5a, + 0xc3, 0x38, 0x12, 0xb6, 0x18, 0xcc, 0x1b, 0xfa, 0xd2, 0x69, 0x66, 0xe6, 0x97, 0xb7, 0xf4, 0x64, + 0x49, 0x6f, 0x0c, 0xe3, 0x28, 0xfb, 0xde, 0x5d, 0x81, 0x0a, 0x2a, 0xea, 0xfc, 0x4b, 0x05, 0x6a, + 0xf9, 0x56, 0xe1, 0x3e, 0x54, 0xc5, 0x66, 0x83, 0xd9, 0x68, 0x4e, 0x36, 0xeb, 0x48, 0x9d, 0x9e, + 0xf5, 0xe2, 0xd7, 0xcd, 0x7a, 0x1b, 0xca, 0x36, 0x8d, 0x2c, 0x0c, 0x80, 0x34, 0x5c, 0x91, 0x42, + 0xbe, 0x03, 0x24, 0x08, 0x99, 0x6b, 0x86, 0x97, 0x46, 0xb6, 0xb0, 0x08, 0xaf, 0x28, 0xe9, 0x9a, + 0xe4, 0x48, 0x8d, 0x76, 0x44, 0x7e, 0x0c, 0x9a, 0x47, 0x27, 0xb1, 0x11, 0x52, 0xd3, 0x36, 0xa8, + 0x37, 0x62, 0x9e, 0xc8, 0x20, 0xad, 0xb4, 0xf1, 0x03, 0xa4, 0x29, 0x83, 0xd4, 0xe2, 0x78, 0x9d, + 0x9a, 0xb6, 0xe0, 0x90, 0xef, 0xc0, 0x72, 0xc8, 0x97, 0xfb, 0xb4, 0xf0, 0x93, 0x85, 0xcd, 0x33, + 0x7a, 0xa9, 0x73, 0xb2, 0x94, 0x92, 0x18, 0xf2, 0x3d, 0xb8, 0x95, 0x5a, 0x17, 0x84, 0x74, 0xc8, + 0x26, 0xaa, 0x91, 0x2b, 0x68, 0xe4, 0xa6, 0x04, 0x9c, 0x22, 0x3f, 0x37, 0x75, 0xba, 0xc4, 0xaa, + 0xce, 0x96, 0x58, 0x5b, 0xd0, 0x60, 0x91, 0x31, 0xe4, 0xdb, 0x0a, 0xdc, 0xcd, 0xd5, 0x10, 0x00, + 0x2c, 0x3a, 0x34, 0xa3, 0x18, 0x27, 0xe0, 0x18, 0xee, 0x06, 0x49, 0x34, 0xa6, 0xb6, 0x61, 0xfb, + 0xaf, 0x3c, 0x63, 0xc8, 0x9c, 0x98, 0x62, 0xb5, 0x6f, 0x63, 0x71, 0x1c, 0xb5, 0x61, 0xae, 0x74, + 0xbe, 0x2d, 0x04, 0xf6, 0xfd, 0x57, 0xde, 0x21, 0xc2, 0xf7, 0x32, 0x34, 0xd9, 0x83, 0xf5, 0x30, + 0xf1, 0x62, 0xe6, 0xd2, 0x54, 0x95, 0xc3, 0xa2, 0xb8, 0x5d, 0x47, 0x25, 0xd2, 0xeb, 0x75, 0x01, + 0x10, 0xb2, 0xfa, 0x5a, 0xa8, 0x7e, 0x1e, 0xb1, 0x88, 0x47, 0x9d, 0xc6, 0xf3, 0xf7, 0x2b, 0x93, + 0xc5, 0x06, 0xaa, 0x72, 0x23, 0xdc, 0xfd, 0x56, 0xe4, 0xb8, 0x35, 0x5d, 0x73, 0xf2, 0xa5, 0xc9, + 0xe2, 0x33, 0xe6, 0xd2, 0xe3, 0x88, 0xbc, 0x0f, 0x35, 0xd3, 0x4b, 0x43, 0xa4, 0xa9, 0x7a, 0xa4, + 0x5a, 0x1a, 0xe9, 0x55, 0xd3, 0x93, 0x4b, 0xde, 0x33, 0xb8, 0x91, 0x44, 0xd4, 0x96, 0xa3, 0x6c, + 0x86, 0x06, 0x7a, 0x26, 0x8d, 0xda, 0x2d, 0xb5, 0x4c, 0x9e, 0x8b, 0x1e, 0x7d, 0x9d, 0x4b, 0x4d, + 0x91, 0x69, 0xd4, 0xf9, 0xaf, 0x32, 0x90, 0xf9, 0x7d, 0xf1, 0xff, 0x4f, 0xc7, 0xbe, 0xd6, 0xd1, + 0x2a, 0xd7, 0x3a, 0xda, 0xb7, 0x20, 0xdf, 0x31, 0x21, 0x7c, 0x19, 0xe1, 0x8d, 0x8c, 0xc8, 0x41, + 0xb3, 0xee, 0xb6, 0xf2, 0xcd, 0xdd, 0xad, 0xfa, 0x87, 0x70, 0xb7, 0xda, 0xef, 0xed, 0x6e, 0xf0, + 0x9a, 0xee, 0x56, 0xff, 0x7d, 0xdc, 0xad, 0xf1, 0x7f, 0x70, 0xb7, 0xff, 0xa9, 0x40, 0xf9, 0xa9, + 0xcf, 0x3c, 0xf2, 0x21, 0xd4, 0x9e, 0xfb, 0xbc, 0x46, 0xca, 0x33, 0x79, 0x2b, 0x3f, 0x87, 0x52, + 0xeb, 0xc8, 0xe7, 0xf2, 0x9b, 0x2f, 0xfa, 0x28, 0x42, 0x27, 0xd4, 0x12, 0x72, 0x45, 0x75, 0x7d, + 0xe6, 0x72, 0x33, 0xe7, 0x85, 0x8d, 0xe7, 0x0a, 0xed, 0x9b, 0x6c, 0xd8, 0x78, 0x09, 0xcf, 0x3c, + 0x8f, 0x86, 0x78, 0xb8, 0x50, 0x56, 0x4b, 0x78, 0x24, 0xf7, 0xec, 0x09, 0xf9, 0x00, 0x5a, 0x0e, + 0x1d, 0xc6, 0x06, 0xda, 0x84, 0xdb, 0xf4, 0xca, 0xdc, 0xe4, 0x37, 0x38, 0x82, 0x1b, 0x86, 0xbb, + 0xf4, 0x6d, 0x58, 0x0d, 0xd9, 0x68, 0xac, 0x8a, 0x2c, 0xcf, 0xef, 0xec, 0x11, 0x92, 0xc9, 0x7c, + 0x00, 0xf5, 0x20, 0xf4, 0xcf, 0xa9, 0xdc, 0xbe, 0xad, 0x5c, 0xb1, 0x7d, 0x43, 0x8c, 0xd8, 0xbe, + 0x7d, 0x00, 0xf5, 0xf3, 0x84, 0x65, 0x1b, 0xbe, 0xea, 0x15, 0x12, 0x88, 0x11, 0x12, 0x8f, 0x60, + 0x15, 0x7b, 0xa2, 0xf8, 0x71, 0x6d, 0xce, 0x2e, 0xec, 0xac, 0xe2, 0xbb, 0xdf, 0x05, 0x4d, 0x74, + 0xe6, 0xda, 0x64, 0x2b, 0x3a, 0x3c, 0x2d, 0xe6, 0xc7, 0xe3, 0xe9, 0xa0, 0xa9, 0xcf, 0x8b, 0x21, + 0x46, 0x11, 0x7b, 0x02, 0x77, 0x84, 0x18, 0x7d, 0xa1, 0x48, 0x1a, 0xc3, 0xd0, 0x77, 0x0d, 0xe6, + 0x49, 0x57, 0x54, 0x35, 0xdc, 0x44, 0xf8, 0xc1, 0x8b, 0x5c, 0xc7, 0x61, 0xe8, 0xbb, 0x3d, 0x8f, + 0x3c, 0x86, 0x9b, 0x2c, 0x32, 0xbc, 0xc4, 0x71, 0x0c, 0xf3, 0x95, 0x19, 0x52, 0x23, 0xa2, 0x2e, + 0xc3, 0x19, 0xc1, 0xe4, 0x5b, 0xd5, 0xd7, 0x59, 0xd4, 0x4f, 0x1c, 0x67, 0x87, 0x33, 0x07, 0xd4, + 0x65, 0xe8, 0xae, 0x57, 0x44, 0x6a, 0xeb, 0x9b, 0x44, 0x6a, 0xe7, 0x3f, 0x8b, 0xd0, 0x9c, 0x02, + 0x91, 0x0d, 0x28, 0xca, 0x04, 0x9b, 0x46, 0x6b, 0x91, 0xd9, 0xe4, 0x31, 0x68, 0x91, 0x9f, 0x84, + 0x16, 0xc5, 0x02, 0x57, 0xb4, 0x54, 0x9c, 0x9f, 0x10, 0x81, 0xe1, 0xff, 0x31, 0x0f, 0x3c, 0x06, + 0x2d, 0x36, 0xc3, 0x11, 0x8d, 0x15, 0xa9, 0xf9, 0x83, 0xa3, 0x96, 0xc0, 0x64, 0x52, 0xdb, 0x40, + 0xb2, 0xb6, 0xf2, 0x13, 0x5f, 0x75, 0x67, 0xab, 0xa5, 0xed, 0x64, 0xa7, 0xbf, 0xdb, 0x40, 0xb2, + 0x96, 0x72, 0x19, 0xb5, 0x06, 0xd5, 0xd2, 0x56, 0x32, 0x99, 0x8f, 0x60, 0x25, 0x1c, 0x8a, 0xa8, + 0x5d, 0x56, 0xeb, 0xb6, 0xa9, 0xf1, 0x50, 0x42, 0x77, 0x39, 0x1c, 0x62, 0xd0, 0x0a, 0x39, 0xd7, + 0xb7, 0xa9, 0x3c, 0x4f, 0x5a, 0x24, 0xa7, 0x9c, 0x28, 0x2d, 0x87, 0x43, 0xfe, 0xd5, 0xf9, 0x4d, + 0x01, 0x6a, 0xd9, 0x29, 0xff, 0xd7, 0x2f, 0x67, 0x7f, 0xd0, 0xf2, 0x3d, 0x5d, 0xef, 0xca, 0x73, + 0xeb, 0xdd, 0x26, 0x2c, 0x27, 0x1e, 0x7b, 0x91, 0x88, 0x82, 0xac, 0xaa, 0xcb, 0xaf, 0x2b, 0xd6, + 0xc1, 0xe5, 0xc5, 0xeb, 0x60, 0xe7, 0x97, 0x05, 0xa8, 0x65, 0x97, 0x12, 0xa4, 0x0b, 0xa0, 0xc4, + 0x52, 0x61, 0x6e, 0xc6, 0x15, 0x2e, 0x79, 0x0c, 0xad, 0x30, 0xf0, 0xd4, 0xd8, 0x13, 0x7e, 0x25, + 0x4f, 0x76, 0xf5, 0xc0, 0x93, 0x39, 0x28, 0xf0, 0x94, 0xe0, 0xcb, 0x4e, 0x17, 0x4b, 0xd7, 0x9c, + 0x2e, 0x76, 0x7e, 0x5e, 0x50, 0x4f, 0xed, 0xc9, 0x16, 0x54, 0xb8, 0x1f, 0x2e, 0xb2, 0x48, 0x30, + 0x48, 0x17, 0x6a, 0xdc, 0x18, 0x81, 0x5a, 0x68, 0x47, 0x35, 0x14, 0x7f, 0x5e, 0xd7, 0x84, 0x7f, + 0x2e, 0x42, 0x5d, 0xb9, 0x7c, 0x21, 0x6f, 0x43, 0x75, 0x14, 0xfa, 0x49, 0x60, 0x9c, 0x5f, 0x2e, + 0x30, 0x63, 0x05, 0x79, 0xbb, 0x97, 0x1c, 0x66, 0x8e, 0x46, 0x62, 0x83, 0x33, 0x1f, 0x67, 0x2b, + 0xe6, 0x68, 0x84, 0xfb, 0x99, 0x2d, 0xa8, 0x8a, 0x63, 0x46, 0x6a, 0x4f, 0x95, 0x32, 0x19, 0x95, + 0xbc, 0x0f, 0x0d, 0xde, 0xa3, 0xac, 0xcd, 0xf2, 0xa2, 0x4e, 0x41, 0x18, 0x78, 0x9f, 0xcb, 0x96, + 0xa5, 0x40, 0xd6, 0x7a, 0xe5, 0x2a, 0x81, 0x1d, 0x69, 0x43, 0x36, 0x0e, 0xcb, 0xd7, 0x1d, 0xf4, + 0x7e, 0x0f, 0x1a, 0x41, 0x48, 0x51, 0xed, 0x7c, 0xe4, 0x9c, 0xb1, 0x43, 0xc7, 0x8c, 0xc6, 0xa7, + 0x21, 0xdd, 0x19, 0x8d, 0x78, 0xac, 0xf0, 0xd5, 0x23, 0xfd, 0xdf, 0xf9, 0xeb, 0x02, 0x94, 0xcf, + 0xfc, 0xa0, 0x4f, 0xde, 0x85, 0x2a, 0x56, 0xe5, 0xf9, 0xd8, 0xc9, 0x5b, 0x82, 0xdd, 0xcb, 0x5e, + 0x4c, 0x5d, 0x7d, 0x05, 0xb9, 0xbb, 0x97, 0xe4, 0x76, 0x7a, 0x69, 0x55, 0x54, 0xae, 0x1f, 0xe4, + 0x6d, 0xd5, 0x6b, 0x4d, 0x1b, 0x1f, 0x85, 0xbc, 0x38, 0xcb, 0x86, 0x6d, 0xba, 0xb9, 0x7a, 0x86, + 0xd8, 0xbd, 0xec, 0xfc, 0x63, 0x01, 0x2a, 0x78, 0x2b, 0x96, 0x37, 0x5e, 0xb8, 0xa6, 0xf1, 0xe2, + 0x37, 0x69, 0xbc, 0xf4, 0x35, 0x8d, 0x93, 0x8f, 0x60, 0x2d, 0x0e, 0x13, 0xcf, 0x32, 0x63, 0xca, + 0xd7, 0x70, 0xf4, 0x5f, 0x69, 0xf2, 0xd4, 0x12, 0x96, 0x82, 0x9e, 0xd1, 0x4b, 0x4e, 0xe8, 0xfc, + 0x18, 0xca, 0xcf, 0x98, 0xe3, 0x90, 0x37, 0x60, 0xd9, 0xf2, 0x3d, 0xaf, 0xb7, 0x3f, 0x65, 0xb3, + 0xa4, 0xf1, 0x0e, 0x89, 0xd2, 0xac, 0xa8, 0x78, 0x98, 0x20, 0x75, 0x76, 0x60, 0x63, 0xd1, 0x7d, + 0x05, 0xf9, 0x36, 0x34, 0xf3, 0xfb, 0x8d, 0x34, 0xc5, 0xa5, 0x8a, 0x1b, 0x39, 0xab, 0x67, 0x77, + 0xfe, 0xae, 0x04, 0xed, 0x74, 0x04, 0xc4, 0x2f, 0xf3, 0xbd, 0x41, 0xe2, 0xf2, 0x04, 0x43, 0xba, + 0xb0, 0x86, 0x2b, 0x5c, 0x10, 0xfa, 0x16, 0x8d, 0x78, 0xcd, 0x87, 0x09, 0xa5, 0xf0, 0xa0, 0xac, + 0xaf, 0x72, 0xc6, 0x69, 0x4a, 0xef, 0xf3, 0xe0, 0x5d, 0xf3, 0x12, 0x97, 0x43, 0xed, 0xc4, 0xa2, + 0xb6, 0x11, 0xfa, 0xaf, 0x22, 0xe1, 0x01, 0xfa, 0xaa, 0x97, 0xb8, 0xa7, 0x92, 0xae, 0xfb, 0xaf, + 0x22, 0xf2, 0x36, 0xb4, 0x38, 0x96, 0xc5, 0x34, 0x34, 0x45, 0xd6, 0x29, 0x21, 0xb0, 0xe9, 0x25, + 0x6e, 0x2f, 0x23, 0xce, 0xde, 0x3a, 0x96, 0xe7, 0x6e, 0x1d, 0xb7, 0xa0, 0x6e, 0xf9, 0x9e, 0x95, + 0x84, 0x21, 0xf5, 0xac, 0x4b, 0x4c, 0xa1, 0x65, 0x5d, 0x25, 0x91, 0x23, 0xd8, 0x88, 0xd9, 0x90, + 0xbb, 0x37, 0x56, 0xf0, 0x3c, 0xd1, 0xe1, 0xf9, 0xc8, 0xb2, 0x7a, 0x0d, 0x28, 0x03, 0x80, 0x2f, + 0x0c, 0x7b, 0x82, 0xff, 0x64, 0x49, 0x27, 0x52, 0x4e, 0xa1, 0x72, 0xbb, 0xc3, 0x84, 0xeb, 0x88, + 0x12, 0x37, 0x88, 0xd3, 0x2b, 0x8d, 0x86, 0xde, 0x0c, 0x93, 0xbd, 0x9c, 0x48, 0x9e, 0xe6, 0x8d, + 0x62, 0x11, 0x1e, 0x89, 0xe1, 0x94, 0xb7, 0xb2, 0xd3, 0x8d, 0xf2, 0x42, 0x5c, 0x0e, 0x77, 0xd6, + 0xa4, 0x42, 0xdb, 0x6d, 0x00, 0xec, 0xd3, 0xd8, 0x64, 0x0e, 0x5f, 0x51, 0x3a, 0x23, 0xd8, 0x90, + 0x72, 0xd9, 0x5c, 0xe1, 0x39, 0xc8, 0x09, 0xac, 0xd3, 0x94, 0x20, 0x9b, 0x63, 0xd9, 0x11, 0xe8, + 0xbd, 0x69, 0x3f, 0x9f, 0x9d, 0x65, 0x9d, 0xd0, 0x69, 0x0a, 0xa3, 0x51, 0xe7, 0x4f, 0xe0, 0xb6, + 0x6c, 0x48, 0xa7, 0x23, 0xe6, 0x7b, 0xfd, 0xc4, 0x3d, 0x19, 0xf6, 0x3c, 0x79, 0x84, 0x7c, 0x1f, + 0xea, 0x4c, 0xfe, 0x4f, 0xbd, 0xab, 0xa6, 0x43, 0x4a, 0xea, 0xd9, 0x7c, 0x1b, 0x1f, 0xa2, 0x9c, + 0xe1, 0x25, 0xae, 0xf4, 0x82, 0x5a, 0x98, 0x6a, 0xea, 0xfc, 0x13, 0x01, 0x32, 0x3f, 0xe8, 0xe4, + 0x31, 0x6c, 0xd8, 0xee, 0x90, 0xc9, 0xab, 0x5a, 0x8f, 0xda, 0x46, 0x60, 0x5a, 0x17, 0xd2, 0xe3, + 0x76, 0x8b, 0xed, 0x82, 0x4e, 0x04, 0x7f, 0x20, 0xd8, 0xa7, 0x9c, 0xab, 0x4a, 0x5d, 0xb0, 0x20, + 0xc8, 0xa4, 0x8a, 0x73, 0x52, 0x82, 0x2d, 0xa4, 0x3e, 0x86, 0xb6, 0x94, 0xb2, 0xcd, 0xd8, 0xcc, + 0x1a, 0x44, 0xaf, 0x15, 0xce, 0x78, 0x43, 0xf0, 0xf7, 0xcd, 0xd8, 0x94, 0xed, 0xa1, 0xef, 0xce, + 0x0a, 0xca, 0x36, 0x51, 0xb0, 0x3c, 0x27, 0x28, 0xb8, 0x28, 0xf8, 0x09, 0xdc, 0x8c, 0xfd, 0xd8, + 0x74, 0x0c, 0x29, 0x1e, 0x46, 0x86, 0xe3, 0x9b, 0x36, 0xdf, 0x9d, 0x55, 0x32, 0x53, 0xd7, 0x11, + 0xb2, 0x8f, 0x08, 0x3d, 0x3a, 0xf2, 0x4d, 0x1b, 0x77, 0x68, 0x1b, 0xd3, 0x92, 0x54, 0x88, 0x2d, + 0x63, 0x73, 0x6b, 0xaa, 0x08, 0x45, 0x81, 0xef, 0xa6, 0x4d, 0x89, 0xba, 0x3f, 0xf2, 0xcc, 0x20, + 0x1a, 0xfb, 0x31, 0x97, 0x59, 0x41, 0x19, 0xa1, 0x6f, 0x97, 0x73, 0x07, 0x92, 0x79, 0x8c, 0x7b, + 0x62, 0xc7, 0xb7, 0x4c, 0xc7, 0x10, 0x33, 0x15, 0xa1, 0xc3, 0x96, 0xf5, 0x06, 0x12, 0x85, 0x1f, + 0x60, 0xec, 0x86, 0xd4, 0xf5, 0x63, 0x9a, 0xa1, 0x6a, 0x22, 0x76, 0x05, 0x35, 0x85, 0xbd, 0x03, + 0xab, 0x49, 0x44, 0x43, 0x61, 0xeb, 0xf9, 0x65, 0x4c, 0xc5, 0x1e, 0xb4, 0xac, 0x37, 0x39, 0x99, + 0xdb, 0x89, 0x17, 0x5f, 0xe4, 0x43, 0xb8, 0x21, 0x4c, 0x75, 0xa8, 0x19, 0x7a, 0xa9, 0x80, 0x1b, + 0xe1, 0x4e, 0xb4, 0xac, 0x13, 0x64, 0x1e, 0x09, 0x9e, 0xec, 0xdd, 0x0f, 0xe0, 0x8e, 0xcd, 0x22, + 0xbe, 0x96, 0x21, 0xd6, 0x32, 0xad, 0x31, 0x35, 0xc6, 0x2c, 0x96, 0xcd, 0x34, 0x50, 0xf0, 0xa6, + 0x80, 0x70, 0x91, 0x3d, 0x0e, 0x78, 0xc2, 0x62, 0xd1, 0xe0, 0x8f, 0xe0, 0x8d, 0x79, 0x69, 0x97, + 0x45, 0x91, 0x14, 0x6f, 0xa2, 0x78, 0x7b, 0x46, 0xfc, 0x98, 0x45, 0x91, 0x90, 0xff, 0x08, 0xda, + 0xb3, 0xd3, 0x68, 0x8d, 0xa9, 0x75, 0xc1, 0x6d, 0x6e, 0x29, 0x83, 0x9b, 0xce, 0xe1, 0x1e, 0x67, + 0x1e, 0x47, 0xbc, 0xa2, 0x8b, 0x62, 0x33, 0x9d, 0xbd, 0x74, 0xec, 0x56, 0x51, 0x42, 0x43, 0x0e, + 0x6f, 0x2c, 0x1d, 0xbe, 0xdb, 0x50, 0x8d, 0xe8, 0xc8, 0xa5, 0x5e, 0x1c, 0xe1, 0xa3, 0x82, 0xb2, + 0x9e, 0x7d, 0x8b, 0xe0, 0x32, 0xd3, 0x3b, 0xc2, 0xb5, 0x34, 0xb8, 0x4c, 0x71, 0x41, 0xc8, 0xd9, + 0x36, 0x75, 0x62, 0x53, 0xb8, 0x24, 0x11, 0x6c, 0xa4, 0xa0, 0x1b, 0xde, 0x87, 0xba, 0x60, 0x8b, + 0xee, 0xae, 0x23, 0x5f, 0x48, 0x88, 0x0e, 0xbe, 0x03, 0xab, 0xee, 0x4b, 0xcb, 0x32, 0x98, 0x17, + 0x24, 0xb1, 0x50, 0xb2, 0x21, 0x66, 0x8e, 0x93, 0x7b, 0x9c, 0x8a, 0x8a, 0x1e, 0x80, 0xa6, 0xe0, + 0x84, 0xb6, 0x1b, 0x08, 0x6c, 0x65, 0x40, 0xa1, 0x31, 0x45, 0xfa, 0x49, 0x9c, 0xa9, 0xdc, 0xcc, + 0x91, 0x27, 0x48, 0x46, 0x9d, 0x5b, 0xd0, 0x70, 0x5c, 0x8c, 0x29, 0x81, 0xba, 0x29, 0xac, 0x73, + 0x5c, 0x1e, 0x48, 0x88, 0xf8, 0x3e, 0xdc, 0x56, 0x5d, 0x1b, 0x1b, 0x97, 0x57, 0xc4, 0x6e, 0x84, + 0x2f, 0x05, 0xca, 0xfa, 0xcd, 0xdc, 0xbb, 0x7b, 0x39, 0xff, 0x58, 0x71, 0x36, 0x21, 0x7c, 0xce, + 0x62, 0xd7, 0x0c, 0xb8, 0xdc, 0x2d, 0xc5, 0xd9, 0x50, 0x6e, 0x17, 0x59, 0xc7, 0x11, 0x79, 0x0f, + 0xd6, 0x5d, 0xe6, 0x19, 0x22, 0x2e, 0xf2, 0x86, 0x6e, 0x8b, 0x79, 0x73, 0x99, 0x77, 0xc4, 0x39, + 0x83, 0xb4, 0x05, 0x0e, 0x37, 0x27, 0x73, 0xf0, 0x3b, 0x12, 0x6e, 0x4e, 0xa6, 0xe1, 0xef, 0xc3, + 0x06, 0xd7, 0x2e, 0x03, 0x2a, 0xc7, 0xbf, 0x21, 0x22, 0xdb, 0x65, 0x9e, 0x8e, 0xac, 0x29, 0x01, + 0x73, 0x32, 0x2f, 0x70, 0x57, 0x0a, 0x98, 0x93, 0x19, 0x81, 0x53, 0x58, 0x97, 0xbe, 0x66, 0xf8, + 0x43, 0x23, 0x4d, 0xd1, 0xed, 0x7b, 0xb8, 0x32, 0x6c, 0x4d, 0x2d, 0x45, 0x0b, 0x32, 0xbd, 0xbe, + 0x26, 0x85, 0x95, 0xe4, 0x9f, 0x27, 0x40, 0x9c, 0xd4, 0xa9, 0xcc, 0x79, 0x5f, 0x4d, 0x80, 0xc7, + 0x2f, 0x2d, 0x6b, 0x71, 0xe6, 0x14, 0x82, 0x6a, 0xe6, 0xdc, 0x9a, 0x13, 0x54, 0x32, 0xe7, 0x8f, + 0xe1, 0xae, 0x14, 0x74, 0xdc, 0x74, 0xb7, 0x3d, 0xd5, 0xec, 0x9b, 0x28, 0x7d, 0x4b, 0x80, 0x8e, + 0x5c, 0xb1, 0x07, 0x54, 0x9b, 0x5e, 0xa8, 0x41, 0x6d, 0xbf, 0xb3, 0x50, 0x83, 0x62, 0xc3, 0x67, + 0x70, 0x57, 0xb8, 0xce, 0x4b, 0xbc, 0x38, 0x36, 0x98, 0x3d, 0x11, 0xe9, 0x1b, 0x4f, 0x1c, 0xa2, + 0x47, 0x6d, 0x5b, 0xe4, 0x0d, 0x04, 0x89, 0xcb, 0xe5, 0x9e, 0x3d, 0xe1, 0x09, 0xfc, 0x30, 0xf4, + 0xdd, 0xc1, 0x23, 0xb2, 0x07, 0xf7, 0xaf, 0x51, 0x60, 0xb3, 0xe8, 0xa2, 0x4d, 0x51, 0xc5, 0xed, + 0xc5, 0x2a, 0xf6, 0x59, 0x74, 0x41, 0x0e, 0x60, 0xeb, 0x1a, 0x25, 0x98, 0xcb, 0xda, 0x43, 0xd4, + 0x72, 0x67, 0xb1, 0x16, 0x4c, 0x66, 0x57, 0x77, 0x26, 0x3d, 0x2e, 0x1c, 0x5d, 0xd5, 0x19, 0x79, + 0x66, 0xb8, 0xa8, 0x33, 0xe2, 0x32, 0x39, 0x53, 0x31, 0x5e, 0xd4, 0x19, 0x71, 0xad, 0x2c, 0x95, + 0x9c, 0xc0, 0xdb, 0x57, 0x29, 0x79, 0xc9, 0x22, 0x16, 0xf3, 0x72, 0x13, 0x6f, 0x72, 0x19, 0xaa, + 0xda, 0x5a, 0xa4, 0xea, 0x0b, 0x01, 0xec, 0xe3, 0x75, 0xee, 0x00, 0xde, 0xbd, 0x4a, 0xa1, 0xcd, + 0x22, 0xcb, 0x0c, 0xed, 0x4c, 0xe5, 0x73, 0x54, 0xd9, 0x59, 0xa4, 0x72, 0x3f, 0x85, 0x0a, 0xa5, + 0x87, 0xf0, 0xe6, 0x9c, 0x52, 0x4c, 0xbf, 0x2f, 0xa9, 0x95, 0x75, 0xf6, 0x62, 0xd1, 0x98, 0xf3, + 0x7c, 0xfe, 0x05, 0xb5, 0x64, 0x6f, 0x8f, 0xe0, 0xad, 0xc5, 0x7a, 0xf0, 0x5c, 0x2a, 0xca, 0x54, + 0x39, 0xa8, 0xea, 0xde, 0xbc, 0xaa, 0x13, 0xc4, 0x09, 0x6d, 0x9d, 0xbf, 0x29, 0x64, 0x15, 0x94, + 0x52, 0x2d, 0x92, 0xb7, 0xa0, 0xe5, 0x32, 0xef, 0x6c, 0x70, 0x22, 0x0a, 0xcf, 0xac, 0x5a, 0x6f, + 0x08, 0x2a, 0x87, 0xf6, 0x23, 0xf2, 0x08, 0x36, 0x03, 0x16, 0x50, 0x87, 0x79, 0xd4, 0x78, 0x91, + 0xd0, 0x84, 0x66, 0x68, 0x51, 0xa9, 0xad, 0xa7, 0xdc, 0x9f, 0x70, 0xa6, 0x14, 0xfa, 0x18, 0xda, + 0x99, 0xd0, 0x79, 0x48, 0xcd, 0x0b, 0x1a, 0x66, 0x62, 0xb2, 0x60, 0x4a, 0xf9, 0xbb, 0x82, 0x2d, + 0x04, 0x3b, 0x5f, 0x41, 0x79, 0xe0, 0x87, 0x31, 0x79, 0x07, 0x56, 0xce, 0x71, 0xf7, 0x14, 0x2d, + 0xde, 0x3e, 0x4a, 0x26, 0x79, 0x0b, 0x9a, 0x2c, 0xc2, 0x1b, 0x08, 0xd3, 0xe1, 0x82, 0xf2, 0xa1, + 0xcd, 0x34, 0xf1, 0x35, 0xf7, 0xff, 0x7f, 0x51, 0x04, 0x4d, 0x3c, 0xc3, 0x3b, 0x0c, 0x4d, 0x97, + 0xee, 0xfa, 0x89, 0xc7, 0x37, 0x78, 0x65, 0xe5, 0x90, 0xf9, 0x86, 0xfa, 0x58, 0x0f, 0x01, 0xca, + 0xa1, 0x13, 0x02, 0x49, 0x07, 0x6a, 0x89, 0x77, 0xce, 0x59, 0xd4, 0x9e, 0xda, 0x86, 0xe5, 0x64, + 0xb2, 0x09, 0xcb, 0xe2, 0x01, 0x91, 0x1c, 0x0c, 0xf9, 0x45, 0x1e, 0x40, 0xcd, 0x32, 0x1d, 0x8b, + 0xef, 0xd5, 0xa3, 0x05, 0x9b, 0xc2, 0x9c, 0x49, 0xfe, 0x08, 0xea, 0x43, 0x6e, 0xa4, 0x81, 0xb7, + 0x68, 0xf2, 0x01, 0xe9, 0xd4, 0xb9, 0x0d, 0xb2, 0xf1, 0xc2, 0x8d, 0x7c, 0x0a, 0x4d, 0xcb, 0x0d, + 0x44, 0x09, 0xaa, 0x9c, 0xa1, 0xc9, 0x17, 0x9f, 0x88, 0xd9, 0x73, 0x03, 0x5e, 0x82, 0xe2, 0xe1, + 0x6e, 0xdd, 0xca, 0x3f, 0x3a, 0xbf, 0x2a, 0x40, 0x5d, 0x19, 0x94, 0xeb, 0xc6, 0x03, 0x01, 0x73, + 0xe3, 0xf1, 0x1d, 0xa8, 0x44, 0xb1, 0x29, 0x67, 0x26, 0x7b, 0x66, 0x3a, 0x3b, 0xce, 0xba, 0x00, + 0x91, 0x07, 0x50, 0xa2, 0x5e, 0x3a, 0x4f, 0x57, 0x61, 0x39, 0xa4, 0xf3, 0xdb, 0x02, 0x2c, 0x0b, + 0x0e, 0x79, 0x17, 0x6a, 0xc3, 0xc4, 0xb3, 0x0c, 0x3c, 0x36, 0x9b, 0x3f, 0xa9, 0xa9, 0x72, 0xe6, + 0x3e, 0x8d, 0xac, 0xb9, 0xdd, 0x7a, 0xf1, 0xeb, 0x76, 0xeb, 0xea, 0x31, 0x46, 0xe9, 0xba, 0x63, + 0x8c, 0x77, 0xa1, 0x82, 0x03, 0x2e, 0x2f, 0x85, 0xd7, 0xe6, 0x2c, 0xd7, 0x05, 0x3f, 0x77, 0xc5, + 0xca, 0x75, 0xae, 0xf8, 0x19, 0x34, 0xf0, 0x90, 0x87, 0x79, 0x23, 0xde, 0x05, 0xf2, 0x3e, 0x34, + 0x47, 0xf2, 0x5b, 0x9c, 0x18, 0xcc, 0xf7, 0xb2, 0x31, 0x52, 0x04, 0x3a, 0x4f, 0xa0, 0x9e, 0x2a, + 0x18, 0xd0, 0x98, 0x7c, 0x0f, 0x5a, 0x53, 0xf2, 0x69, 0x54, 0xc9, 0xcb, 0x0f, 0xb5, 0x2d, 0xbd, + 0xa9, 0x2a, 0x8a, 0x3a, 0x3f, 0x2f, 0xc0, 0xb2, 0x78, 0xb3, 0x49, 0x3e, 0x52, 0xac, 0xc8, 0x5e, + 0xbf, 0x65, 0x9d, 0x55, 0xda, 0xcb, 0x8d, 0x19, 0xd0, 0x38, 0x7a, 0xcd, 0xa3, 0x94, 0x36, 0xac, + 0xbc, 0xa4, 0x21, 0x3e, 0xc7, 0x10, 0x51, 0x91, 0x7e, 0x76, 0xde, 0x83, 0x1a, 0xb7, 0x45, 0xbc, + 0x7b, 0xfb, 0xda, 0x93, 0xc1, 0xce, 0x5f, 0x16, 0x60, 0x45, 0xbe, 0x32, 0x25, 0x0f, 0x01, 0x82, + 0xd0, 0x7f, 0x3e, 0xd5, 0xe9, 0xd5, 0x5c, 0x44, 0xbc, 0x00, 0xac, 0x71, 0x88, 0x38, 0x29, 0x7c, + 0x0c, 0x9b, 0x23, 0xea, 0xd1, 0xd0, 0xe4, 0x0b, 0x8a, 0x2c, 0x41, 0xc5, 0x2b, 0x8a, 0x22, 0xbe, + 0xa2, 0xd8, 0xc8, 0xb8, 0xa2, 0x10, 0x15, 0xcf, 0x29, 0x5e, 0x2f, 0xbf, 0xbc, 0x03, 0xad, 0xe9, + 0xb7, 0xac, 0x64, 0x23, 0x3d, 0xae, 0x11, 0x9b, 0x62, 0xf1, 0xd1, 0xfd, 0xf3, 0x92, 0x78, 0xd6, + 0x8e, 0x27, 0xd8, 0x6b, 0xd0, 0xe4, 0xbf, 0xd9, 0xdd, 0xaa, 0xb6, 0x94, 0x92, 0xb2, 0xf3, 0x69, + 0xad, 0x90, 0x92, 0xb2, 0x63, 0x5d, 0xad, 0x48, 0xd6, 0x61, 0x95, 0x93, 0x94, 0x03, 0x4d, 0xad, + 0x44, 0x1a, 0x50, 0x45, 0x6d, 0x7e, 0xd0, 0xd7, 0xca, 0xa4, 0x09, 0x35, 0xfe, 0x85, 0x67, 0x61, + 0x5a, 0x25, 0x53, 0x82, 0xd5, 0xe0, 0xce, 0x68, 0xa4, 0x2d, 0xa7, 0xf8, 0xa7, 0x3e, 0xf3, 0xb4, + 0x95, 0xf4, 0xeb, 0x19, 0x73, 0x1c, 0xad, 0x4a, 0x36, 0x81, 0xf0, 0xaf, 0xe9, 0x47, 0xad, 0x5a, + 0x8d, 0xb4, 0x61, 0x43, 0xa5, 0xa7, 0xcf, 0x0e, 0x35, 0x20, 0x04, 0x5a, 0x9c, 0x93, 0x1f, 0xf3, + 0x6a, 0x75, 0x72, 0x1b, 0x36, 0x91, 0x36, 0x77, 0x89, 0xac, 0x35, 0xd2, 0xf6, 0x78, 0x0a, 0xd7, + 0x9a, 0xa4, 0x05, 0xc0, 0xbf, 0x44, 0x4c, 0x69, 0xad, 0xf4, 0x5b, 0xcc, 0xb4, 0xb6, 0x4a, 0x56, + 0xa1, 0x9e, 0x7f, 0x6f, 0x6b, 0x5a, 0x6a, 0xe0, 0xf4, 0x98, 0x6b, 0x6b, 0xe9, 0xc8, 0x28, 0xcf, + 0x3b, 0xb5, 0x0d, 0xf2, 0x06, 0xb4, 0xa5, 0xf4, 0xdc, 0x09, 0x99, 0x76, 0xa3, 0xfb, 0x09, 0x34, + 0xd4, 0x47, 0x8c, 0xbc, 0xad, 0x53, 0x33, 0x8a, 0xce, 0xc6, 0xa1, 0x9f, 0x8c, 0xc6, 0xda, 0x12, + 0x1f, 0xca, 0xac, 0x1d, 0xad, 0x40, 0xaa, 0x50, 0x7e, 0x62, 0x46, 0x63, 0xad, 0xd8, 0xfd, 0x3e, + 0xac, 0xce, 0x3c, 0x5e, 0xe5, 0xcc, 0xfe, 0x49, 0xff, 0x40, 0x5b, 0xe2, 0xff, 0x0e, 0x77, 0x06, + 0x67, 0x5a, 0x81, 0x6c, 0x80, 0xf6, 0xa4, 0xf7, 0xf9, 0x13, 0x63, 0xef, 0xe4, 0xf8, 0x54, 0x3f, + 0x18, 0x0c, 0x7a, 0x27, 0x7d, 0xad, 0xd8, 0x7d, 0x08, 0x90, 0xbf, 0xb6, 0x20, 0x35, 0xa8, 0xe0, + 0x86, 0x40, 0x08, 0x9e, 0xb1, 0x67, 0x5f, 0x68, 0x05, 0x52, 0x87, 0x15, 0xb9, 0xb4, 0x6b, 0xc5, + 0xee, 0x23, 0x58, 0x95, 0x55, 0x00, 0xef, 0xdb, 0x33, 0xe6, 0xf1, 0xa5, 0x86, 0xf4, 0xfa, 0x5f, + 0xec, 0x1c, 0xf5, 0xf6, 0x8d, 0x5e, 0x7f, 0xff, 0xe0, 0x67, 0xc6, 0xb3, 0x5e, 0x7f, 0x5f, 0x68, + 0x78, 0xd2, 0x1f, 0x7c, 0xa9, 0x15, 0xba, 0xe7, 0xb0, 0xb1, 0xe8, 0x7d, 0x23, 0xb9, 0x03, 0x37, + 0x53, 0xc9, 0xfd, 0xde, 0xe0, 0x6c, 0xa7, 0xbf, 0x77, 0x60, 0x1c, 0x1f, 0x9c, 0xe9, 0xbd, 0x3d, + 0x6d, 0x89, 0x2c, 0x43, 0xf1, 0xe8, 0x43, 0xad, 0x80, 0xbf, 0xdb, 0x5a, 0x91, 0x00, 0x2c, 0xef, + 0x9d, 0x0c, 0x7a, 0xfd, 0x03, 0xad, 0xc4, 0xfd, 0xa8, 0xd7, 0xef, 0x1f, 0xe8, 0xc6, 0xa9, 0x7e, + 0xb2, 0xff, 0xd3, 0xbd, 0x33, 0xad, 0xdc, 0xfd, 0x30, 0x7f, 0xa9, 0x89, 0x5d, 0xd9, 0x00, 0xad, + 0xe7, 0xbd, 0x34, 0x1d, 0x66, 0x67, 0x34, 0x6d, 0x89, 0xf7, 0xe5, 0x44, 0xe4, 0x53, 0xad, 0xd0, + 0xfd, 0xe3, 0xfc, 0x6d, 0x15, 0x8a, 0xdc, 0x84, 0x75, 0xf5, 0x5b, 0x8a, 0x6b, 0x4b, 0xb3, 0x8c, + 0xbe, 0x3f, 0xb0, 0xfc, 0x90, 0x6a, 0x05, 0x72, 0x0b, 0x6e, 0xa8, 0x8c, 0x2f, 0x59, 0x3c, 0x16, + 0xac, 0x62, 0xf7, 0xcf, 0xd4, 0xa7, 0x80, 0xf8, 0x12, 0x8d, 0x3b, 0xe2, 0x0c, 0x29, 0x6f, 0x42, + 0x68, 0x52, 0x79, 0x83, 0xb1, 0x9f, 0x38, 0xb6, 0x56, 0x90, 0xad, 0xab, 0xac, 0xe3, 0x24, 0x8a, + 0xb5, 0xe2, 0x02, 0x7d, 0x9c, 0xd1, 0xf7, 0x63, 0xad, 0xd4, 0xfd, 0x45, 0x01, 0xc8, 0xfc, 0x9b, + 0xb6, 0x69, 0x91, 0x94, 0xda, 0xf7, 0x3d, 0x3e, 0x36, 0x77, 0xe0, 0xe6, 0x82, 0x57, 0x70, 0xbe, + 0x8f, 0xee, 0x76, 0x17, 0x6e, 0xcd, 0x33, 0xf7, 0xa9, 0x60, 0x17, 0xb9, 0x6f, 0x2f, 0xd0, 0xcb, + 0xb3, 0x02, 0xd5, 0x4a, 0xdd, 0x3f, 0x55, 0x6d, 0x49, 0x9f, 0x61, 0x4e, 0x77, 0x99, 0x53, 0xf3, + 0xd1, 0xd8, 0x9c, 0x15, 0xf8, 0xd2, 0x0f, 0xf9, 0x50, 0xb4, 0x61, 0x63, 0x9a, 0x7e, 0x8a, 0x0f, + 0x30, 0xb5, 0xe2, 0x02, 0x0e, 0x3e, 0xb0, 0xd0, 0x4a, 0xdd, 0x8f, 0x66, 0x1e, 0x6a, 0xa5, 0xd1, + 0x35, 0x3d, 0xc5, 0x1a, 0x34, 0x38, 0xe1, 0x30, 0x71, 0x9c, 0x98, 0x4e, 0xf8, 0x08, 0xfe, 0x43, + 0x01, 0xaa, 0xe9, 0x55, 0x7f, 0x9e, 0x10, 0x3d, 0x1a, 0x62, 0xaa, 0x5a, 0x22, 0x37, 0x60, 0x0d, + 0x53, 0x1b, 0x1d, 0xc6, 0x27, 0x49, 0x2c, 0xc9, 0x85, 0x34, 0x25, 0xe8, 0x6c, 0x34, 0x56, 0xe8, + 0xc5, 0xb4, 0x81, 0xf4, 0xc2, 0x56, 0x2b, 0x71, 0x0f, 0xc5, 0xf4, 0xe9, 0xc5, 0x2c, 0xa3, 0x96, + 0xf9, 0xa8, 0x4c, 0xa9, 0xcd, 0x58, 0x15, 0x3e, 0x07, 0xa9, 0xc0, 0x3c, 0x7b, 0xb9, 0xbb, 0x05, + 0x0d, 0xf5, 0x89, 0x41, 0xda, 0x22, 0xcf, 0x12, 0xc2, 0xe4, 0xee, 0xa7, 0xb0, 0x36, 0x77, 0x9d, + 0xc9, 0xe3, 0xab, 0xd7, 0x17, 0xa1, 0x71, 0xdc, 0xeb, 0x1b, 0xc7, 0x3b, 0x3f, 0xd3, 0x0a, 0x5c, + 0x76, 0xf7, 0xe8, 0xe4, 0xe4, 0xd8, 0x38, 0xec, 0x1d, 0x9d, 0x1d, 0xe8, 0x5a, 0xb1, 0xdb, 0x9d, + 0x91, 0xc5, 0x3c, 0xc3, 0xf3, 0xc5, 0xc9, 0xde, 0xce, 0x91, 0xb6, 0xc4, 0xc3, 0xf3, 0xf3, 0xa3, + 0x93, 0xdd, 0x9d, 0x23, 0xad, 0xd0, 0xdd, 0x85, 0xb5, 0xb9, 0x4b, 0x1c, 0x3e, 0xe4, 0x87, 0x7e, + 0x68, 0x51, 0x41, 0x12, 0xf9, 0x61, 0x27, 0x89, 0x7d, 0xad, 0xc0, 0xb3, 0x36, 0xb2, 0xc4, 0xba, + 0xc0, 0xbc, 0x91, 0x56, 0xec, 0x7e, 0x06, 0xab, 0x33, 0x35, 0x30, 0xcf, 0x80, 0x87, 0xbe, 0xe3, + 0xf8, 0xaf, 0x38, 0x02, 0x13, 0xe2, 0x69, 0x48, 0x2d, 0x6a, 0xf3, 0xcf, 0x02, 0x4f, 0xd6, 0x7b, + 0x78, 0xcc, 0x1e, 0xeb, 0xfe, 0x2b, 0xad, 0xd8, 0x3d, 0x01, 0x6d, 0xb6, 0xee, 0x24, 0x2b, 0x50, + 0xea, 0x79, 0xb1, 0xb6, 0xc4, 0x0d, 0x3f, 0x74, 0x7c, 0x33, 0x16, 0xe9, 0x6d, 0x9f, 0x5a, 0xcc, + 0x35, 0x1d, 0xad, 0xc8, 0xd7, 0x83, 0x7d, 0x33, 0xa6, 0x7c, 0x57, 0x23, 0xd6, 0xb2, 0xfd, 0x44, + 0x9c, 0xfe, 0x6b, 0x65, 0x9e, 0xfa, 0x66, 0xaa, 0x50, 0xde, 0x05, 0xbe, 0x1b, 0x17, 0xdd, 0xc7, + 0xd6, 0x22, 0xad, 0x80, 0x43, 0xc1, 0x8b, 0x93, 0x48, 0x2b, 0xee, 0x7e, 0xfb, 0xd7, 0xbf, 0xbb, + 0x57, 0xf8, 0xd7, 0xdf, 0xdd, 0x2b, 0xfc, 0xfb, 0xef, 0xee, 0x15, 0xfe, 0xea, 0x3f, 0xee, 0x2d, + 0xc1, 0x0d, 0xcb, 0x77, 0x1f, 0xf2, 0xc2, 0xc5, 0x32, 0x83, 0x87, 0x31, 0xb3, 0xcf, 0x71, 0x29, + 0x3f, 0x2d, 0xfc, 0x6f, 0x00, 0x00, 0x00, 0xff, 0xff, 0xfe, 0x8f, 0xd9, 0xc9, 0xb8, 0x36, 0x00, + 0x00, } diff --git a/proto/executor.proto b/proto/executor.proto index b4c8a436..108eaf02 100644 --- a/proto/executor.proto +++ b/proto/executor.proto @@ -194,6 +194,11 @@ message FTSBooleanQuery { // TiFlash does not have to infer NGRAM semantics from the raw query text. optional string query_tokenizer = 2 [(gogoproto.nullable) = false]; optional uint32 ngram_token_size = 3 [(gogoproto.nullable) = false]; + // STANDARD_V1 analyzer settings. Zero values mean the legacy defaults for + // backward compatibility with requests created before these fields existed. + optional uint32 innodb_ft_min_token_size = 4 [(gogoproto.nullable) = false]; + optional uint32 innodb_ft_max_token_size = 5 [(gogoproto.nullable) = false]; + optional bool innodb_ft_enable_stopword = 6 [(gogoproto.nullable) = false]; } message FTSBooleanNode { From 6364e49b4c7049cfed6a3328daf3525b737802c3 Mon Sep 17 00:00:00 2001 From: Zhigao TONG Date: Mon, 28 Sep 2026 19:32:45 +0800 Subject: [PATCH 04/12] docs: clarify FTS analyzer default values --- go-tipb/executor.pb.go | 4 ++-- proto/executor.proto | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/go-tipb/executor.pb.go b/go-tipb/executor.pb.go index 6723221f..5e3984a2 100644 --- a/go-tipb/executor.pb.go +++ b/go-tipb/executor.pb.go @@ -1322,8 +1322,8 @@ type FTSBooleanQuery struct { // TiFlash does not have to infer NGRAM semantics from the raw query text. QueryTokenizer string `protobuf:"bytes,2,opt,name=query_tokenizer,json=queryTokenizer" json:"query_tokenizer"` NgramTokenSize uint32 `protobuf:"varint,3,opt,name=ngram_token_size,json=ngramTokenSize" json:"ngram_token_size"` - // STANDARD_V1 analyzer settings. Zero values mean the legacy defaults for - // backward compatibility with requests created before these fields existed. + // STANDARD_V1 analyzer settings. If both token-size fields are zero, TiFlash + // uses the default STANDARD_V1 analyzer settings. InnodbFtMinTokenSize uint32 `protobuf:"varint,4,opt,name=innodb_ft_min_token_size,json=innodbFtMinTokenSize" json:"innodb_ft_min_token_size"` InnodbFtMaxTokenSize uint32 `protobuf:"varint,5,opt,name=innodb_ft_max_token_size,json=innodbFtMaxTokenSize" json:"innodb_ft_max_token_size"` InnodbFtEnableStopword bool `protobuf:"varint,6,opt,name=innodb_ft_enable_stopword,json=innodbFtEnableStopword" json:"innodb_ft_enable_stopword"` diff --git a/proto/executor.proto b/proto/executor.proto index 108eaf02..f1aea3a1 100644 --- a/proto/executor.proto +++ b/proto/executor.proto @@ -194,8 +194,8 @@ message FTSBooleanQuery { // TiFlash does not have to infer NGRAM semantics from the raw query text. optional string query_tokenizer = 2 [(gogoproto.nullable) = false]; optional uint32 ngram_token_size = 3 [(gogoproto.nullable) = false]; - // STANDARD_V1 analyzer settings. Zero values mean the legacy defaults for - // backward compatibility with requests created before these fields existed. + // STANDARD_V1 analyzer settings. If both token-size fields are zero, TiFlash + // uses the default STANDARD_V1 analyzer settings. optional uint32 innodb_ft_min_token_size = 4 [(gogoproto.nullable) = false]; optional uint32 innodb_ft_max_token_size = 5 [(gogoproto.nullable) = false]; optional bool innodb_ft_enable_stopword = 6 [(gogoproto.nullable) = false]; From 5e00c3bc4a3f6ad75833dcc10b2378ab670334ab Mon Sep 17 00:00:00 2001 From: Zhigao TONG Date: Wed, 30 Sep 2026 14:00:19 +0800 Subject: [PATCH 05/12] proto: carry FTS Boolean query in scalar Expr --- go-tipb/analyze.pb.go | 6 +- go-tipb/executor.pb.go | 1916 ++++++++------------------------- go-tipb/expression.pb.go | 2198 ++++++++++++++++++++++++++++---------- proto/executor.proto | 49 - proto/expression.proto | 57 + 5 files changed, 2151 insertions(+), 2075 deletions(-) diff --git a/go-tipb/analyze.pb.go b/go-tipb/analyze.pb.go index d2fb11fd..e95c65a8 100644 --- a/go-tipb/analyze.pb.go +++ b/go-tipb/analyze.pb.go @@ -45,9 +45,6 @@ It has these top-level messages: EncodedBytesSlice ExchangeReceiver ANNQueryInfo - FTSBooleanTerm - FTSBooleanQuery - FTSBooleanNode FTSQueryInfo ColumnarIndexInfo TableScan @@ -85,6 +82,9 @@ It has these top-level messages: ScanAccessObject IndexAccess FieldType + FTSBooleanTerm + FTSBooleanQuery + FTSBooleanNode Expr RpnExpr ByItem diff --git a/go-tipb/executor.pb.go b/go-tipb/executor.pb.go index 5e3984a2..809daff2 100644 --- a/go-tipb/executor.pb.go +++ b/go-tipb/executor.pb.go @@ -370,126 +370,6 @@ func (x *FTSQueryType) UnmarshalJSON(data []byte) error { } func (FTSQueryType) EnumDescriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{7} } -type FTSBooleanOccur int32 - -const ( - FTSBooleanOccur_FTSBooleanOccurInvalid FTSBooleanOccur = 0 - FTSBooleanOccur_FTSBooleanOccurShould FTSBooleanOccur = 1 - FTSBooleanOccur_FTSBooleanOccurMust FTSBooleanOccur = 2 - FTSBooleanOccur_FTSBooleanOccurMustNot FTSBooleanOccur = 3 -) - -var FTSBooleanOccur_name = map[int32]string{ - 0: "FTSBooleanOccurInvalid", - 1: "FTSBooleanOccurShould", - 2: "FTSBooleanOccurMust", - 3: "FTSBooleanOccurMustNot", -} -var FTSBooleanOccur_value = map[string]int32{ - "FTSBooleanOccurInvalid": 0, - "FTSBooleanOccurShould": 1, - "FTSBooleanOccurMust": 2, - "FTSBooleanOccurMustNot": 3, -} - -func (x FTSBooleanOccur) Enum() *FTSBooleanOccur { - p := new(FTSBooleanOccur) - *p = x - return p -} -func (x FTSBooleanOccur) String() string { - return proto.EnumName(FTSBooleanOccur_name, int32(x)) -} -func (x *FTSBooleanOccur) UnmarshalJSON(data []byte) error { - value, err := proto.UnmarshalJSONEnum(FTSBooleanOccur_value, data, "FTSBooleanOccur") - if err != nil { - return err - } - *x = FTSBooleanOccur(value) - return nil -} -func (FTSBooleanOccur) EnumDescriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{8} } - -type FTSBooleanModifier int32 - -const ( - FTSBooleanModifier_FTSBooleanModifierNone FTSBooleanModifier = 0 - FTSBooleanModifier_FTSBooleanModifierBoost FTSBooleanModifier = 1 - FTSBooleanModifier_FTSBooleanModifierDeBoost FTSBooleanModifier = 2 - FTSBooleanModifier_FTSBooleanModifierNegate FTSBooleanModifier = 3 -) - -var FTSBooleanModifier_name = map[int32]string{ - 0: "FTSBooleanModifierNone", - 1: "FTSBooleanModifierBoost", - 2: "FTSBooleanModifierDeBoost", - 3: "FTSBooleanModifierNegate", -} -var FTSBooleanModifier_value = map[string]int32{ - "FTSBooleanModifierNone": 0, - "FTSBooleanModifierBoost": 1, - "FTSBooleanModifierDeBoost": 2, - "FTSBooleanModifierNegate": 3, -} - -func (x FTSBooleanModifier) Enum() *FTSBooleanModifier { - p := new(FTSBooleanModifier) - *p = x - return p -} -func (x FTSBooleanModifier) String() string { - return proto.EnumName(FTSBooleanModifier_name, int32(x)) -} -func (x *FTSBooleanModifier) UnmarshalJSON(data []byte) error { - value, err := proto.UnmarshalJSONEnum(FTSBooleanModifier_value, data, "FTSBooleanModifier") - if err != nil { - return err - } - *x = FTSBooleanModifier(value) - return nil -} -func (FTSBooleanModifier) EnumDescriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{9} } - -type FTSBooleanTermType int32 - -const ( - FTSBooleanTermType_FTSBooleanTermInvalid FTSBooleanTermType = 0 - FTSBooleanTermType_FTSBooleanTermWord FTSBooleanTermType = 1 - FTSBooleanTermType_FTSBooleanTermPhrase FTSBooleanTermType = 2 - FTSBooleanTermType_FTSBooleanTermPrefix FTSBooleanTermType = 3 -) - -var FTSBooleanTermType_name = map[int32]string{ - 0: "FTSBooleanTermInvalid", - 1: "FTSBooleanTermWord", - 2: "FTSBooleanTermPhrase", - 3: "FTSBooleanTermPrefix", -} -var FTSBooleanTermType_value = map[string]int32{ - "FTSBooleanTermInvalid": 0, - "FTSBooleanTermWord": 1, - "FTSBooleanTermPhrase": 2, - "FTSBooleanTermPrefix": 3, -} - -func (x FTSBooleanTermType) Enum() *FTSBooleanTermType { - p := new(FTSBooleanTermType) - *p = x - return p -} -func (x FTSBooleanTermType) String() string { - return proto.EnumName(FTSBooleanTermType_name, int32(x)) -} -func (x *FTSBooleanTermType) UnmarshalJSON(data []byte) error { - value, err := proto.UnmarshalJSONEnum(FTSBooleanTermType_value, data, "FTSBooleanTermType") - if err != nil { - return err - } - *x = FTSBooleanTermType(value) - return nil -} -func (FTSBooleanTermType) EnumDescriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{10} } - type ColumnarIndexType int32 const ( @@ -522,7 +402,7 @@ func (x *ColumnarIndexType) UnmarshalJSON(data []byte) error { *x = ColumnarIndexType(value) return nil } -func (ColumnarIndexType) EnumDescriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{11} } +func (ColumnarIndexType) EnumDescriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{8} } type JoinType int32 @@ -571,7 +451,7 @@ func (x *JoinType) UnmarshalJSON(data []byte) error { *x = JoinType(value) return nil } -func (JoinType) EnumDescriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{12} } +func (JoinType) EnumDescriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{9} } type JoinExecType int32 @@ -602,7 +482,7 @@ func (x *JoinExecType) UnmarshalJSON(data []byte) error { *x = JoinExecType(value) return nil } -func (JoinExecType) EnumDescriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{13} } +func (JoinExecType) EnumDescriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{10} } type RuntimeFilterType int32 @@ -639,7 +519,7 @@ func (x *RuntimeFilterType) UnmarshalJSON(data []byte) error { *x = RuntimeFilterType(value) return nil } -func (RuntimeFilterType) EnumDescriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{14} } +func (RuntimeFilterType) EnumDescriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{11} } type RuntimeFilterMode int32 @@ -673,7 +553,7 @@ func (x *RuntimeFilterMode) UnmarshalJSON(data []byte) error { *x = RuntimeFilterMode(value) return nil } -func (RuntimeFilterMode) EnumDescriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{15} } +func (RuntimeFilterMode) EnumDescriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{12} } type TiFlashPreAggMode int32 @@ -710,7 +590,7 @@ func (x *TiFlashPreAggMode) UnmarshalJSON(data []byte) error { *x = TiFlashPreAggMode(value) return nil } -func (TiFlashPreAggMode) EnumDescriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{16} } +func (TiFlashPreAggMode) EnumDescriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{13} } type WindowBoundType int32 @@ -747,7 +627,7 @@ func (x *WindowBoundType) UnmarshalJSON(data []byte) error { *x = WindowBoundType(value) return nil } -func (WindowBoundType) EnumDescriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{17} } +func (WindowBoundType) EnumDescriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{14} } // Used for range frame's comparison when finding frame's boundary type RangeCmpDataType int32 @@ -791,7 +671,7 @@ func (x *RangeCmpDataType) UnmarshalJSON(data []byte) error { *x = RangeCmpDataType(value) return nil } -func (RangeCmpDataType) EnumDescriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{18} } +func (RangeCmpDataType) EnumDescriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{15} } type WindowFrameType int32 @@ -828,7 +708,7 @@ func (x *WindowFrameType) UnmarshalJSON(data []byte) error { *x = WindowFrameType(value) return nil } -func (WindowFrameType) EnumDescriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{19} } +func (WindowFrameType) EnumDescriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{16} } // It represents a Executor. type Executor struct { @@ -1283,240 +1163,6 @@ func (m *ANNQueryInfo) GetHnswEfSearch() uint32 { return 0 } -type FTSBooleanTerm struct { - TermType FTSBooleanTermType `protobuf:"varint,1,opt,name=term_type,json=termType,enum=tipb.FTSBooleanTermType" json:"term_type"` - Text string `protobuf:"bytes,2,opt,name=text" json:"text"` - PhraseDistance uint32 `protobuf:"varint,3,opt,name=phrase_distance,json=phraseDistance" json:"phrase_distance"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *FTSBooleanTerm) Reset() { *m = FTSBooleanTerm{} } -func (m *FTSBooleanTerm) String() string { return proto.CompactTextString(m) } -func (*FTSBooleanTerm) ProtoMessage() {} -func (*FTSBooleanTerm) Descriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{6} } - -func (m *FTSBooleanTerm) GetTermType() FTSBooleanTermType { - if m != nil { - return m.TermType - } - return FTSBooleanTermType_FTSBooleanTermInvalid -} - -func (m *FTSBooleanTerm) GetText() string { - if m != nil { - return m.Text - } - return "" -} - -func (m *FTSBooleanTerm) GetPhraseDistance() uint32 { - if m != nil { - return m.PhraseDistance - } - return 0 -} - -type FTSBooleanQuery struct { - Nodes []*FTSBooleanNode `protobuf:"bytes,1,rep,name=nodes" json:"nodes,omitempty"` - // The Boolean query carries the analyzer selected by the FULLTEXT index so - // TiFlash does not have to infer NGRAM semantics from the raw query text. - QueryTokenizer string `protobuf:"bytes,2,opt,name=query_tokenizer,json=queryTokenizer" json:"query_tokenizer"` - NgramTokenSize uint32 `protobuf:"varint,3,opt,name=ngram_token_size,json=ngramTokenSize" json:"ngram_token_size"` - // STANDARD_V1 analyzer settings. If both token-size fields are zero, TiFlash - // uses the default STANDARD_V1 analyzer settings. - InnodbFtMinTokenSize uint32 `protobuf:"varint,4,opt,name=innodb_ft_min_token_size,json=innodbFtMinTokenSize" json:"innodb_ft_min_token_size"` - InnodbFtMaxTokenSize uint32 `protobuf:"varint,5,opt,name=innodb_ft_max_token_size,json=innodbFtMaxTokenSize" json:"innodb_ft_max_token_size"` - InnodbFtEnableStopword bool `protobuf:"varint,6,opt,name=innodb_ft_enable_stopword,json=innodbFtEnableStopword" json:"innodb_ft_enable_stopword"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *FTSBooleanQuery) Reset() { *m = FTSBooleanQuery{} } -func (m *FTSBooleanQuery) String() string { return proto.CompactTextString(m) } -func (*FTSBooleanQuery) ProtoMessage() {} -func (*FTSBooleanQuery) Descriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{7} } - -func (m *FTSBooleanQuery) GetNodes() []*FTSBooleanNode { - if m != nil { - return m.Nodes - } - return nil -} - -func (m *FTSBooleanQuery) GetQueryTokenizer() string { - if m != nil { - return m.QueryTokenizer - } - return "" -} - -func (m *FTSBooleanQuery) GetNgramTokenSize() uint32 { - if m != nil { - return m.NgramTokenSize - } - return 0 -} - -func (m *FTSBooleanQuery) GetInnodbFtMinTokenSize() uint32 { - if m != nil { - return m.InnodbFtMinTokenSize - } - return 0 -} - -func (m *FTSBooleanQuery) GetInnodbFtMaxTokenSize() uint32 { - if m != nil { - return m.InnodbFtMaxTokenSize - } - return 0 -} - -func (m *FTSBooleanQuery) GetInnodbFtEnableStopword() bool { - if m != nil { - return m.InnodbFtEnableStopword - } - return false -} - -type FTSBooleanNode struct { - Occur FTSBooleanOccur `protobuf:"varint,1,opt,name=occur,enum=tipb.FTSBooleanOccur" json:"occur"` - Modifier FTSBooleanModifier `protobuf:"varint,2,opt,name=modifier,enum=tipb.FTSBooleanModifier" json:"modifier"` - // Types that are valid to be assigned to Node: - // *FTSBooleanNode_Term - // *FTSBooleanNode_SubExpression - Node isFTSBooleanNode_Node `protobuf_oneof:"node"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *FTSBooleanNode) Reset() { *m = FTSBooleanNode{} } -func (m *FTSBooleanNode) String() string { return proto.CompactTextString(m) } -func (*FTSBooleanNode) ProtoMessage() {} -func (*FTSBooleanNode) Descriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{8} } - -type isFTSBooleanNode_Node interface { - isFTSBooleanNode_Node() - MarshalTo([]byte) (int, error) - Size() int -} - -type FTSBooleanNode_Term struct { - Term *FTSBooleanTerm `protobuf:"bytes,3,opt,name=term,oneof"` -} -type FTSBooleanNode_SubExpression struct { - SubExpression *FTSBooleanQuery `protobuf:"bytes,4,opt,name=sub_expression,json=subExpression,oneof"` -} - -func (*FTSBooleanNode_Term) isFTSBooleanNode_Node() {} -func (*FTSBooleanNode_SubExpression) isFTSBooleanNode_Node() {} - -func (m *FTSBooleanNode) GetNode() isFTSBooleanNode_Node { - if m != nil { - return m.Node - } - return nil -} - -func (m *FTSBooleanNode) GetOccur() FTSBooleanOccur { - if m != nil { - return m.Occur - } - return FTSBooleanOccur_FTSBooleanOccurInvalid -} - -func (m *FTSBooleanNode) GetModifier() FTSBooleanModifier { - if m != nil { - return m.Modifier - } - return FTSBooleanModifier_FTSBooleanModifierNone -} - -func (m *FTSBooleanNode) GetTerm() *FTSBooleanTerm { - if x, ok := m.GetNode().(*FTSBooleanNode_Term); ok { - return x.Term - } - return nil -} - -func (m *FTSBooleanNode) GetSubExpression() *FTSBooleanQuery { - if x, ok := m.GetNode().(*FTSBooleanNode_SubExpression); ok { - return x.SubExpression - } - return nil -} - -// XXX_OneofFuncs is for the internal use of the proto package. -func (*FTSBooleanNode) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { - return _FTSBooleanNode_OneofMarshaler, _FTSBooleanNode_OneofUnmarshaler, _FTSBooleanNode_OneofSizer, []interface{}{ - (*FTSBooleanNode_Term)(nil), - (*FTSBooleanNode_SubExpression)(nil), - } -} - -func _FTSBooleanNode_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { - m := msg.(*FTSBooleanNode) - // node - switch x := m.Node.(type) { - case *FTSBooleanNode_Term: - _ = b.EncodeVarint(3<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.Term); err != nil { - return err - } - case *FTSBooleanNode_SubExpression: - _ = b.EncodeVarint(4<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.SubExpression); err != nil { - return err - } - case nil: - default: - return fmt.Errorf("FTSBooleanNode.Node has unexpected type %T", x) - } - return nil -} - -func _FTSBooleanNode_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { - m := msg.(*FTSBooleanNode) - switch tag { - case 3: // node.term - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(FTSBooleanTerm) - err := b.DecodeMessage(msg) - m.Node = &FTSBooleanNode_Term{msg} - return true, err - case 4: // node.sub_expression - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(FTSBooleanQuery) - err := b.DecodeMessage(msg) - m.Node = &FTSBooleanNode_SubExpression{msg} - return true, err - default: - return false, nil - } -} - -func _FTSBooleanNode_OneofSizer(msg proto.Message) (n int) { - m := msg.(*FTSBooleanNode) - // node - switch x := m.Node.(type) { - case *FTSBooleanNode_Term: - s := proto.Size(x.Term) - n += proto.SizeVarint(3<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case *FTSBooleanNode_SubExpression: - s := proto.Size(x.SubExpression) - n += proto.SizeVarint(4<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case nil: - default: - panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) - } - return n -} - type FTSQueryInfo struct { QueryType FTSQueryType `protobuf:"varint,1,opt,name=query_type,json=queryType,enum=tipb.FTSQueryType" json:"query_type"` IndexId int64 `protobuf:"varint,2,opt,name=index_id,json=indexId" json:"index_id"` @@ -1533,7 +1179,7 @@ type FTSQueryInfo struct { func (m *FTSQueryInfo) Reset() { *m = FTSQueryInfo{} } func (m *FTSQueryInfo) String() string { return proto.CompactTextString(m) } func (*FTSQueryInfo) ProtoMessage() {} -func (*FTSQueryInfo) Descriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{9} } +func (*FTSQueryInfo) Descriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{6} } func (m *FTSQueryInfo) GetQueryType() FTSQueryType { if m != nil { @@ -1609,7 +1255,7 @@ type ColumnarIndexInfo struct { func (m *ColumnarIndexInfo) Reset() { *m = ColumnarIndexInfo{} } func (m *ColumnarIndexInfo) String() string { return proto.CompactTextString(m) } func (*ColumnarIndexInfo) ProtoMessage() {} -func (*ColumnarIndexInfo) Descriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{10} } +func (*ColumnarIndexInfo) Descriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{7} } type isColumnarIndexInfo_Index interface { isColumnarIndexInfo_Index() @@ -1720,7 +1366,7 @@ type TableScan struct { func (m *TableScan) Reset() { *m = TableScan{} } func (m *TableScan) String() string { return proto.CompactTextString(m) } func (*TableScan) ProtoMessage() {} -func (*TableScan) Descriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{11} } +func (*TableScan) Descriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{8} } func (m *TableScan) GetTableId() int64 { if m != nil { @@ -1839,7 +1485,7 @@ type PartitionTableScan struct { func (m *PartitionTableScan) Reset() { *m = PartitionTableScan{} } func (m *PartitionTableScan) String() string { return proto.CompactTextString(m) } func (*PartitionTableScan) ProtoMessage() {} -func (*PartitionTableScan) Descriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{12} } +func (*PartitionTableScan) Descriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{9} } func (m *PartitionTableScan) GetTableId() int64 { if m != nil { @@ -1947,7 +1593,7 @@ type Join struct { func (m *Join) Reset() { *m = Join{} } func (m *Join) String() string { return proto.CompactTextString(m) } func (*Join) ProtoMessage() {} -func (*Join) Descriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{13} } +func (*Join) Descriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{10} } func (m *Join) GetJoinType() JoinType { if m != nil { @@ -2061,7 +1707,7 @@ type RuntimeFilter struct { func (m *RuntimeFilter) Reset() { *m = RuntimeFilter{} } func (m *RuntimeFilter) String() string { return proto.CompactTextString(m) } func (*RuntimeFilter) ProtoMessage() {} -func (*RuntimeFilter) Descriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{14} } +func (*RuntimeFilter) Descriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{11} } func (m *RuntimeFilter) GetId() int32 { if m != nil { @@ -2125,7 +1771,7 @@ type IndexScan struct { func (m *IndexScan) Reset() { *m = IndexScan{} } func (m *IndexScan) String() string { return proto.CompactTextString(m) } func (*IndexScan) ProtoMessage() {} -func (*IndexScan) Descriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{15} } +func (*IndexScan) Descriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{12} } func (m *IndexScan) GetTableId() int64 { if m != nil { @@ -2180,7 +1826,7 @@ type Selection struct { func (m *Selection) Reset() { *m = Selection{} } func (m *Selection) String() string { return proto.CompactTextString(m) } func (*Selection) ProtoMessage() {} -func (*Selection) Descriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{16} } +func (*Selection) Descriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{13} } func (m *Selection) GetConditions() []*Expr { if m != nil { @@ -2214,7 +1860,7 @@ type Projection struct { func (m *Projection) Reset() { *m = Projection{} } func (m *Projection) String() string { return proto.CompactTextString(m) } func (*Projection) ProtoMessage() {} -func (*Projection) Descriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{17} } +func (*Projection) Descriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{14} } func (m *Projection) GetExprs() []*Expr { if m != nil { @@ -2254,7 +1900,7 @@ type Aggregation struct { func (m *Aggregation) Reset() { *m = Aggregation{} } func (m *Aggregation) String() string { return proto.CompactTextString(m) } func (*Aggregation) ProtoMessage() {} -func (*Aggregation) Descriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{18} } +func (*Aggregation) Descriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{15} } func (m *Aggregation) GetGroupBy() []*Expr { if m != nil { @@ -2319,7 +1965,7 @@ type TopN struct { func (m *TopN) Reset() { *m = TopN{} } func (m *TopN) String() string { return proto.CompactTextString(m) } func (*TopN) ProtoMessage() {} -func (*TopN) Descriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{19} } +func (*TopN) Descriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{16} } func (m *TopN) GetOrderBy() []*ByItem { if m != nil { @@ -2363,7 +2009,7 @@ type Limit struct { func (m *Limit) Reset() { *m = Limit{} } func (m *Limit) String() string { return proto.CompactTextString(m) } func (*Limit) ProtoMessage() {} -func (*Limit) Descriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{20} } +func (*Limit) Descriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{17} } func (m *Limit) GetLimit() uint64 { if m != nil { @@ -2406,7 +2052,7 @@ type Kill struct { func (m *Kill) Reset() { *m = Kill{} } func (m *Kill) String() string { return proto.CompactTextString(m) } func (*Kill) ProtoMessage() {} -func (*Kill) Descriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{21} } +func (*Kill) Descriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{18} } func (m *Kill) GetConnID() uint64 { if m != nil { @@ -2430,7 +2076,7 @@ type ExplainForConnection struct { func (m *ExplainForConnection) Reset() { *m = ExplainForConnection{} } func (m *ExplainForConnection) String() string { return proto.CompactTextString(m) } func (*ExplainForConnection) ProtoMessage() {} -func (*ExplainForConnection) Descriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{22} } +func (*ExplainForConnection) Descriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{19} } func (m *ExplainForConnection) GetConnectionId() uint64 { if m != nil { @@ -2465,7 +2111,7 @@ func (m *ExecutorExecutionSummary) Reset() { *m = ExecutorExecutionSumma func (m *ExecutorExecutionSummary) String() string { return proto.CompactTextString(m) } func (*ExecutorExecutionSummary) ProtoMessage() {} func (*ExecutorExecutionSummary) Descriptor() ([]byte, []int) { - return fileDescriptorExecutor, []int{23} + return fileDescriptorExecutor, []int{20} } type isExecutorExecutionSummary_DetailInfo interface { @@ -2607,7 +2253,7 @@ type TiFlashExecutionInfo struct { func (m *TiFlashExecutionInfo) Reset() { *m = TiFlashExecutionInfo{} } func (m *TiFlashExecutionInfo) String() string { return proto.CompactTextString(m) } func (*TiFlashExecutionInfo) ProtoMessage() {} -func (*TiFlashExecutionInfo) Descriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{24} } +func (*TiFlashExecutionInfo) Descriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{21} } func (m *TiFlashExecutionInfo) GetExecutionSummaries() []*ExecutorExecutionSummary { if m != nil { @@ -2626,7 +2272,7 @@ func (m *TiFlashRegionNumOfInstance) Reset() { *m = TiFlashRegionNumOfIn func (m *TiFlashRegionNumOfInstance) String() string { return proto.CompactTextString(m) } func (*TiFlashRegionNumOfInstance) ProtoMessage() {} func (*TiFlashRegionNumOfInstance) Descriptor() ([]byte, []int) { - return fileDescriptorExecutor, []int{25} + return fileDescriptorExecutor, []int{22} } func (m *TiFlashRegionNumOfInstance) GetInstanceId() string { @@ -2693,7 +2339,7 @@ type TiFlashScanContext struct { func (m *TiFlashScanContext) Reset() { *m = TiFlashScanContext{} } func (m *TiFlashScanContext) String() string { return proto.CompactTextString(m) } func (*TiFlashScanContext) ProtoMessage() {} -func (*TiFlashScanContext) Descriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{26} } +func (*TiFlashScanContext) Descriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{23} } func (m *TiFlashScanContext) GetDmfileScannedPacks() uint64 { if m != nil && m.DmfileScannedPacks != nil { @@ -3006,7 +2652,7 @@ type TiFlashWaitSummary struct { func (m *TiFlashWaitSummary) Reset() { *m = TiFlashWaitSummary{} } func (m *TiFlashWaitSummary) String() string { return proto.CompactTextString(m) } func (*TiFlashWaitSummary) ProtoMessage() {} -func (*TiFlashWaitSummary) Descriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{27} } +func (*TiFlashWaitSummary) Descriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{24} } func (m *TiFlashWaitSummary) GetMinTSOWaitNs() uint64 { if m != nil && m.MinTSOWaitNs != nil { @@ -3039,7 +2685,7 @@ type Sort struct { func (m *Sort) Reset() { *m = Sort{} } func (m *Sort) String() string { return proto.CompactTextString(m) } func (*Sort) ProtoMessage() {} -func (*Sort) Descriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{28} } +func (*Sort) Descriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{25} } func (m *Sort) GetByItems() []*ByItem { if m != nil { @@ -3075,7 +2721,7 @@ type WindowFrameBound struct { func (m *WindowFrameBound) Reset() { *m = WindowFrameBound{} } func (m *WindowFrameBound) String() string { return proto.CompactTextString(m) } func (*WindowFrameBound) ProtoMessage() {} -func (*WindowFrameBound) Descriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{29} } +func (*WindowFrameBound) Descriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{26} } func (m *WindowFrameBound) GetType() WindowBoundType { if m != nil { @@ -3129,7 +2775,7 @@ type WindowFrame struct { func (m *WindowFrame) Reset() { *m = WindowFrame{} } func (m *WindowFrame) String() string { return proto.CompactTextString(m) } func (*WindowFrame) ProtoMessage() {} -func (*WindowFrame) Descriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{30} } +func (*WindowFrame) Descriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{27} } func (m *WindowFrame) GetType() WindowFrameType { if m != nil { @@ -3164,7 +2810,7 @@ type Window struct { func (m *Window) Reset() { *m = Window{} } func (m *Window) String() string { return proto.CompactTextString(m) } func (*Window) ProtoMessage() {} -func (*Window) Descriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{31} } +func (*Window) Descriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{28} } func (m *Window) GetFuncDesc() []*Expr { if m != nil { @@ -3209,7 +2855,7 @@ type GroupingExpr struct { func (m *GroupingExpr) Reset() { *m = GroupingExpr{} } func (m *GroupingExpr) String() string { return proto.CompactTextString(m) } func (*GroupingExpr) ProtoMessage() {} -func (*GroupingExpr) Descriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{32} } +func (*GroupingExpr) Descriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{29} } func (m *GroupingExpr) GetGroupingExpr() []*Expr { if m != nil { @@ -3226,7 +2872,7 @@ type GroupingSet struct { func (m *GroupingSet) Reset() { *m = GroupingSet{} } func (m *GroupingSet) String() string { return proto.CompactTextString(m) } func (*GroupingSet) ProtoMessage() {} -func (*GroupingSet) Descriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{33} } +func (*GroupingSet) Descriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{30} } func (m *GroupingSet) GetGroupingExprs() []*GroupingExpr { if m != nil { @@ -3246,7 +2892,7 @@ type Expand struct { func (m *Expand) Reset() { *m = Expand{} } func (m *Expand) String() string { return proto.CompactTextString(m) } func (*Expand) ProtoMessage() {} -func (*Expand) Descriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{34} } +func (*Expand) Descriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{31} } func (m *Expand) GetGroupingSets() []*GroupingSet { if m != nil { @@ -3277,7 +2923,7 @@ type ExprSlice struct { func (m *ExprSlice) Reset() { *m = ExprSlice{} } func (m *ExprSlice) String() string { return proto.CompactTextString(m) } func (*ExprSlice) ProtoMessage() {} -func (*ExprSlice) Descriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{35} } +func (*ExprSlice) Descriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{32} } func (m *ExprSlice) GetExprs() []*Expr { if m != nil { @@ -3296,7 +2942,7 @@ type Expand2 struct { func (m *Expand2) Reset() { *m = Expand2{} } func (m *Expand2) String() string { return proto.CompactTextString(m) } func (*Expand2) ProtoMessage() {} -func (*Expand2) Descriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{36} } +func (*Expand2) Descriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{33} } func (m *Expand2) GetProjExprs() []*ExprSlice { if m != nil { @@ -3327,7 +2973,7 @@ type BroadcastQuery struct { func (m *BroadcastQuery) Reset() { *m = BroadcastQuery{} } func (m *BroadcastQuery) String() string { return proto.CompactTextString(m) } func (*BroadcastQuery) ProtoMessage() {} -func (*BroadcastQuery) Descriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{37} } +func (*BroadcastQuery) Descriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{34} } func (m *BroadcastQuery) GetQuery() string { if m != nil && m.Query != nil { @@ -3343,9 +2989,6 @@ func init() { proto.RegisterType((*EncodedBytesSlice)(nil), "tipb.EncodedBytesSlice") proto.RegisterType((*ExchangeReceiver)(nil), "tipb.ExchangeReceiver") proto.RegisterType((*ANNQueryInfo)(nil), "tipb.ANNQueryInfo") - proto.RegisterType((*FTSBooleanTerm)(nil), "tipb.FTSBooleanTerm") - proto.RegisterType((*FTSBooleanQuery)(nil), "tipb.FTSBooleanQuery") - proto.RegisterType((*FTSBooleanNode)(nil), "tipb.FTSBooleanNode") proto.RegisterType((*FTSQueryInfo)(nil), "tipb.FTSQueryInfo") proto.RegisterType((*ColumnarIndexInfo)(nil), "tipb.ColumnarIndexInfo") proto.RegisterType((*TableScan)(nil), "tipb.TableScan") @@ -3383,9 +3026,6 @@ func init() { proto.RegisterEnum("tipb.VectorDistanceMetric", VectorDistanceMetric_name, VectorDistanceMetric_value) proto.RegisterEnum("tipb.ANNQueryType", ANNQueryType_name, ANNQueryType_value) proto.RegisterEnum("tipb.FTSQueryType", FTSQueryType_name, FTSQueryType_value) - proto.RegisterEnum("tipb.FTSBooleanOccur", FTSBooleanOccur_name, FTSBooleanOccur_value) - proto.RegisterEnum("tipb.FTSBooleanModifier", FTSBooleanModifier_name, FTSBooleanModifier_value) - proto.RegisterEnum("tipb.FTSBooleanTermType", FTSBooleanTermType_name, FTSBooleanTermType_value) proto.RegisterEnum("tipb.ColumnarIndexType", ColumnarIndexType_name, ColumnarIndexType_value) proto.RegisterEnum("tipb.JoinType", JoinType_name, JoinType_value) proto.RegisterEnum("tipb.JoinExecType", JoinExecType_name, JoinExecType_value) @@ -3926,7 +3566,7 @@ func (m *ANNQueryInfo) MarshalTo(dAtA []byte) (int, error) { return i, nil } -func (m *FTSBooleanTerm) Marshal() (dAtA []byte, err error) { +func (m *FTSQueryInfo) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) n, err := m.MarshalTo(dAtA) @@ -3936,45 +3576,20 @@ func (m *FTSBooleanTerm) Marshal() (dAtA []byte, err error) { return dAtA[:n], nil } -func (m *FTSBooleanTerm) MarshalTo(dAtA []byte) (int, error) { +func (m *FTSQueryInfo) MarshalTo(dAtA []byte) (int, error) { var i int _ = i var l int _ = l dAtA[i] = 0x8 i++ - i = encodeVarintExecutor(dAtA, i, uint64(m.TermType)) - dAtA[i] = 0x12 - i++ - i = encodeVarintExecutor(dAtA, i, uint64(len(m.Text))) - i += copy(dAtA[i:], m.Text) - dAtA[i] = 0x18 + i = encodeVarintExecutor(dAtA, i, uint64(m.QueryType)) + dAtA[i] = 0x10 i++ - i = encodeVarintExecutor(dAtA, i, uint64(m.PhraseDistance)) - if m.XXX_unrecognized != nil { - i += copy(dAtA[i:], m.XXX_unrecognized) - } - return i, nil -} - -func (m *FTSBooleanQuery) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalTo(dAtA) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *FTSBooleanQuery) MarshalTo(dAtA []byte) (int, error) { - var i int - _ = i - var l int - _ = l - if len(m.Nodes) > 0 { - for _, msg := range m.Nodes { - dAtA[i] = 0xa + i = encodeVarintExecutor(dAtA, i, uint64(m.IndexId)) + if len(m.Columns) > 0 { + for _, msg := range m.Columns { + dAtA[i] = 0x1a i++ i = encodeVarintExecutor(dAtA, i, uint64(msg.Size())) n, err := msg.MarshalTo(dAtA[i:]) @@ -3984,180 +3599,58 @@ func (m *FTSBooleanQuery) MarshalTo(dAtA []byte) (int, error) { i += n } } - dAtA[i] = 0x12 + if len(m.ColumnNames) > 0 { + for _, s := range m.ColumnNames { + dAtA[i] = 0x22 + i++ + l = len(s) + for l >= 1<<7 { + dAtA[i] = uint8(uint64(l)&0x7f | 0x80) + l >>= 7 + i++ + } + dAtA[i] = uint8(l) + i++ + i += copy(dAtA[i:], s) + } + } + dAtA[i] = 0x2a + i++ + i = encodeVarintExecutor(dAtA, i, uint64(len(m.QueryText))) + i += copy(dAtA[i:], m.QueryText) + dAtA[i] = 0x32 i++ i = encodeVarintExecutor(dAtA, i, uint64(len(m.QueryTokenizer))) i += copy(dAtA[i:], m.QueryTokenizer) - dAtA[i] = 0x18 - i++ - i = encodeVarintExecutor(dAtA, i, uint64(m.NgramTokenSize)) - dAtA[i] = 0x20 - i++ - i = encodeVarintExecutor(dAtA, i, uint64(m.InnodbFtMinTokenSize)) - dAtA[i] = 0x28 + if m.TopK != nil { + dAtA[i] = 0x50 + i++ + i = encodeVarintExecutor(dAtA, i, uint64(*m.TopK)) + } + dAtA[i] = 0xa0 i++ - i = encodeVarintExecutor(dAtA, i, uint64(m.InnodbFtMaxTokenSize)) - dAtA[i] = 0x30 + dAtA[i] = 0x1 i++ - if m.InnodbFtEnableStopword { - dAtA[i] = 1 - } else { - dAtA[i] = 0 + i = encodeVarintExecutor(dAtA, i, uint64(m.QueryFunc)) + if m.BooleanQuery != nil { + dAtA[i] = 0xb2 + i++ + dAtA[i] = 0x1 + i++ + i = encodeVarintExecutor(dAtA, i, uint64(m.BooleanQuery.Size())) + n21, err := m.BooleanQuery.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n21 } - i++ if m.XXX_unrecognized != nil { i += copy(dAtA[i:], m.XXX_unrecognized) } return i, nil } -func (m *FTSBooleanNode) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalTo(dAtA) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *FTSBooleanNode) MarshalTo(dAtA []byte) (int, error) { - var i int - _ = i - var l int - _ = l - dAtA[i] = 0x8 - i++ - i = encodeVarintExecutor(dAtA, i, uint64(m.Occur)) - dAtA[i] = 0x10 - i++ - i = encodeVarintExecutor(dAtA, i, uint64(m.Modifier)) - if m.Node != nil { - nn21, err := m.Node.MarshalTo(dAtA[i:]) - if err != nil { - return 0, err - } - i += nn21 - } - if m.XXX_unrecognized != nil { - i += copy(dAtA[i:], m.XXX_unrecognized) - } - return i, nil -} - -func (m *FTSBooleanNode_Term) MarshalTo(dAtA []byte) (int, error) { - i := 0 - if m.Term != nil { - dAtA[i] = 0x1a - i++ - i = encodeVarintExecutor(dAtA, i, uint64(m.Term.Size())) - n22, err := m.Term.MarshalTo(dAtA[i:]) - if err != nil { - return 0, err - } - i += n22 - } - return i, nil -} -func (m *FTSBooleanNode_SubExpression) MarshalTo(dAtA []byte) (int, error) { - i := 0 - if m.SubExpression != nil { - dAtA[i] = 0x22 - i++ - i = encodeVarintExecutor(dAtA, i, uint64(m.SubExpression.Size())) - n23, err := m.SubExpression.MarshalTo(dAtA[i:]) - if err != nil { - return 0, err - } - i += n23 - } - return i, nil -} -func (m *FTSQueryInfo) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalTo(dAtA) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *FTSQueryInfo) MarshalTo(dAtA []byte) (int, error) { - var i int - _ = i - var l int - _ = l - dAtA[i] = 0x8 - i++ - i = encodeVarintExecutor(dAtA, i, uint64(m.QueryType)) - dAtA[i] = 0x10 - i++ - i = encodeVarintExecutor(dAtA, i, uint64(m.IndexId)) - if len(m.Columns) > 0 { - for _, msg := range m.Columns { - dAtA[i] = 0x1a - i++ - i = encodeVarintExecutor(dAtA, i, uint64(msg.Size())) - n, err := msg.MarshalTo(dAtA[i:]) - if err != nil { - return 0, err - } - i += n - } - } - if len(m.ColumnNames) > 0 { - for _, s := range m.ColumnNames { - dAtA[i] = 0x22 - i++ - l = len(s) - for l >= 1<<7 { - dAtA[i] = uint8(uint64(l)&0x7f | 0x80) - l >>= 7 - i++ - } - dAtA[i] = uint8(l) - i++ - i += copy(dAtA[i:], s) - } - } - dAtA[i] = 0x2a - i++ - i = encodeVarintExecutor(dAtA, i, uint64(len(m.QueryText))) - i += copy(dAtA[i:], m.QueryText) - dAtA[i] = 0x32 - i++ - i = encodeVarintExecutor(dAtA, i, uint64(len(m.QueryTokenizer))) - i += copy(dAtA[i:], m.QueryTokenizer) - if m.TopK != nil { - dAtA[i] = 0x50 - i++ - i = encodeVarintExecutor(dAtA, i, uint64(*m.TopK)) - } - dAtA[i] = 0xa0 - i++ - dAtA[i] = 0x1 - i++ - i = encodeVarintExecutor(dAtA, i, uint64(m.QueryFunc)) - if m.BooleanQuery != nil { - dAtA[i] = 0xb2 - i++ - dAtA[i] = 0x1 - i++ - i = encodeVarintExecutor(dAtA, i, uint64(m.BooleanQuery.Size())) - n24, err := m.BooleanQuery.MarshalTo(dAtA[i:]) - if err != nil { - return 0, err - } - i += n24 - } - if m.XXX_unrecognized != nil { - i += copy(dAtA[i:], m.XXX_unrecognized) - } - return i, nil -} - -func (m *ColumnarIndexInfo) Marshal() (dAtA []byte, err error) { +func (m *ColumnarIndexInfo) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) n, err := m.MarshalTo(dAtA) @@ -4176,11 +3669,11 @@ func (m *ColumnarIndexInfo) MarshalTo(dAtA []byte) (int, error) { i++ i = encodeVarintExecutor(dAtA, i, uint64(m.IndexType)) if m.Index != nil { - nn25, err := m.Index.MarshalTo(dAtA[i:]) + nn22, err := m.Index.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += nn25 + i += nn22 } if m.XXX_unrecognized != nil { i += copy(dAtA[i:], m.XXX_unrecognized) @@ -4194,11 +3687,11 @@ func (m *ColumnarIndexInfo_FtsQueryInfo) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x22 i++ i = encodeVarintExecutor(dAtA, i, uint64(m.FtsQueryInfo.Size())) - n26, err := m.FtsQueryInfo.MarshalTo(dAtA[i:]) + n23, err := m.FtsQueryInfo.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n26 + i += n23 } return i, nil } @@ -4320,11 +3813,11 @@ func (m *TableScan) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x6a i++ i = encodeVarintExecutor(dAtA, i, uint64(m.AnnQuery.Size())) - n27, err := m.AnnQuery.MarshalTo(dAtA[i:]) + n24, err := m.AnnQuery.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n27 + i += n24 } if len(m.UsedColumnarIndexes) > 0 { for _, msg := range m.UsedColumnarIndexes { @@ -4444,11 +3937,11 @@ func (m *PartitionTableScan) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x5a i++ i = encodeVarintExecutor(dAtA, i, uint64(m.AnnQuery.Size())) - n28, err := m.AnnQuery.MarshalTo(dAtA[i:]) + n25, err := m.AnnQuery.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n28 + i += n25 } if len(m.UsedColumnarIndexes) > 0 { for _, msg := range m.UsedColumnarIndexes { @@ -4797,11 +4290,11 @@ func (m *Selection) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x1a i++ i = encodeVarintExecutor(dAtA, i, uint64(m.Child.Size())) - n29, err := m.Child.MarshalTo(dAtA[i:]) + n26, err := m.Child.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n29 + i += n26 } if m.XXX_unrecognized != nil { i += copy(dAtA[i:], m.XXX_unrecognized) @@ -4852,11 +4345,11 @@ func (m *Projection) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x1a i++ i = encodeVarintExecutor(dAtA, i, uint64(m.Child.Size())) - n30, err := m.Child.MarshalTo(dAtA[i:]) + n27, err := m.Child.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n30 + i += n27 } if m.XXX_unrecognized != nil { i += copy(dAtA[i:], m.XXX_unrecognized) @@ -4939,11 +4432,11 @@ func (m *Aggregation) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x32 i++ i = encodeVarintExecutor(dAtA, i, uint64(m.Child.Size())) - n31, err := m.Child.MarshalTo(dAtA[i:]) + n28, err := m.Child.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n31 + i += n28 } if m.PreAggMode != nil { dAtA[i] = 0x38 @@ -4990,11 +4483,11 @@ func (m *TopN) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x1a i++ i = encodeVarintExecutor(dAtA, i, uint64(m.Child.Size())) - n32, err := m.Child.MarshalTo(dAtA[i:]) + n29, err := m.Child.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n32 + i += n29 } if len(m.PartitionBy) > 0 { for _, msg := range m.PartitionBy { @@ -5036,11 +4529,11 @@ func (m *Limit) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x12 i++ i = encodeVarintExecutor(dAtA, i, uint64(m.Child.Size())) - n33, err := m.Child.MarshalTo(dAtA[i:]) + n30, err := m.Child.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n33 + i += n30 } if len(m.PartitionBy) > 0 { for _, msg := range m.PartitionBy { @@ -5170,11 +4663,11 @@ func (m *ExecutorExecutionSummary) MarshalTo(dAtA []byte) (int, error) { i = encodeVarintExecutor(dAtA, i, uint64(*m.Concurrency)) } if m.DetailInfo != nil { - nn34, err := m.DetailInfo.MarshalTo(dAtA[i:]) + nn31, err := m.DetailInfo.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += nn34 + i += nn31 } if m.RuConsumption != nil { dAtA[i] = 0x3a @@ -5186,11 +4679,11 @@ func (m *ExecutorExecutionSummary) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x42 i++ i = encodeVarintExecutor(dAtA, i, uint64(m.TiflashWaitSummary.Size())) - n35, err := m.TiflashWaitSummary.MarshalTo(dAtA[i:]) + n32, err := m.TiflashWaitSummary.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n35 + i += n32 } if m.XXX_unrecognized != nil { i += copy(dAtA[i:], m.XXX_unrecognized) @@ -5204,11 +4697,11 @@ func (m *ExecutorExecutionSummary_TiflashScanContext) MarshalTo(dAtA []byte) (in dAtA[i] = 0x32 i++ i = encodeVarintExecutor(dAtA, i, uint64(m.TiflashScanContext.Size())) - n36, err := m.TiflashScanContext.MarshalTo(dAtA[i:]) + n33, err := m.TiflashScanContext.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n36 + i += n33 } return i, nil } @@ -5653,11 +5146,11 @@ func (m *Sort) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x1a i++ i = encodeVarintExecutor(dAtA, i, uint64(m.Child.Size())) - n37, err := m.Child.MarshalTo(dAtA[i:]) + n34, err := m.Child.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n37 + i += n34 } if m.XXX_unrecognized != nil { i += copy(dAtA[i:], m.XXX_unrecognized) @@ -5712,11 +5205,11 @@ func (m *WindowFrameBound) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x2a i++ i = encodeVarintExecutor(dAtA, i, uint64(m.FrameRange.Size())) - n38, err := m.FrameRange.MarshalTo(dAtA[i:]) + n35, err := m.FrameRange.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n38 + i += n35 } if m.CmpDataType != nil { dAtA[i] = 0x30 @@ -5751,21 +5244,21 @@ func (m *WindowFrame) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x12 i++ i = encodeVarintExecutor(dAtA, i, uint64(m.Start.Size())) - n39, err := m.Start.MarshalTo(dAtA[i:]) + n36, err := m.Start.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n39 + i += n36 } if m.End != nil { dAtA[i] = 0x1a i++ i = encodeVarintExecutor(dAtA, i, uint64(m.End.Size())) - n40, err := m.End.MarshalTo(dAtA[i:]) + n37, err := m.End.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n40 + i += n37 } if m.XXX_unrecognized != nil { i += copy(dAtA[i:], m.XXX_unrecognized) @@ -5828,21 +5321,21 @@ func (m *Window) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x22 i++ i = encodeVarintExecutor(dAtA, i, uint64(m.Frame.Size())) - n41, err := m.Frame.MarshalTo(dAtA[i:]) + n38, err := m.Frame.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n41 + i += n38 } if m.Child != nil { dAtA[i] = 0x2a i++ i = encodeVarintExecutor(dAtA, i, uint64(m.Child.Size())) - n42, err := m.Child.MarshalTo(dAtA[i:]) + n39, err := m.Child.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n42 + i += n39 } if m.XXX_unrecognized != nil { i += copy(dAtA[i:], m.XXX_unrecognized) @@ -5947,11 +5440,11 @@ func (m *Expand) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x12 i++ i = encodeVarintExecutor(dAtA, i, uint64(m.Child.Size())) - n43, err := m.Child.MarshalTo(dAtA[i:]) + n40, err := m.Child.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n43 + i += n40 } if m.Version != nil { dAtA[i] = 0x18 @@ -6043,11 +5536,11 @@ func (m *Expand2) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x1a i++ i = encodeVarintExecutor(dAtA, i, uint64(m.Child.Size())) - n44, err := m.Child.MarshalTo(dAtA[i:]) + n41, err := m.Child.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n44 + i += n41 } if m.XXX_unrecognized != nil { i += copy(dAtA[i:], m.XXX_unrecognized) @@ -6321,72 +5814,6 @@ func (m *ANNQueryInfo) Size() (n int) { return n } -func (m *FTSBooleanTerm) Size() (n int) { - var l int - _ = l - n += 1 + sovExecutor(uint64(m.TermType)) - l = len(m.Text) - n += 1 + l + sovExecutor(uint64(l)) - n += 1 + sovExecutor(uint64(m.PhraseDistance)) - if m.XXX_unrecognized != nil { - n += len(m.XXX_unrecognized) - } - return n -} - -func (m *FTSBooleanQuery) Size() (n int) { - var l int - _ = l - if len(m.Nodes) > 0 { - for _, e := range m.Nodes { - l = e.Size() - n += 1 + l + sovExecutor(uint64(l)) - } - } - l = len(m.QueryTokenizer) - n += 1 + l + sovExecutor(uint64(l)) - n += 1 + sovExecutor(uint64(m.NgramTokenSize)) - n += 1 + sovExecutor(uint64(m.InnodbFtMinTokenSize)) - n += 1 + sovExecutor(uint64(m.InnodbFtMaxTokenSize)) - n += 2 - if m.XXX_unrecognized != nil { - n += len(m.XXX_unrecognized) - } - return n -} - -func (m *FTSBooleanNode) Size() (n int) { - var l int - _ = l - n += 1 + sovExecutor(uint64(m.Occur)) - n += 1 + sovExecutor(uint64(m.Modifier)) - if m.Node != nil { - n += m.Node.Size() - } - if m.XXX_unrecognized != nil { - n += len(m.XXX_unrecognized) - } - return n -} - -func (m *FTSBooleanNode_Term) Size() (n int) { - var l int - _ = l - if m.Term != nil { - l = m.Term.Size() - n += 1 + l + sovExecutor(uint64(l)) - } - return n -} -func (m *FTSBooleanNode_SubExpression) Size() (n int) { - var l int - _ = l - if m.SubExpression != nil { - l = m.SubExpression.Size() - n += 1 + l + sovExecutor(uint64(l)) - } - return n -} func (m *FTSQueryInfo) Size() (n int) { var l int _ = l @@ -9014,465 +8441,6 @@ func (m *ANNQueryInfo) Unmarshal(dAtA []byte) error { } return nil } -func (m *FTSBooleanTerm) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowExecutor - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= (uint64(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: FTSBooleanTerm: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: FTSBooleanTerm: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field TermType", wireType) - } - m.TermType = 0 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowExecutor - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - m.TermType |= (FTSBooleanTermType(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - case 2: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Text", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowExecutor - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= (uint64(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthExecutor - } - postIndex := iNdEx + intStringLen - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Text = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 3: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field PhraseDistance", wireType) - } - m.PhraseDistance = 0 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowExecutor - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - m.PhraseDistance |= (uint32(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - default: - iNdEx = preIndex - skippy, err := skipExecutor(dAtA[iNdEx:]) - if err != nil { - return err - } - if skippy < 0 { - return ErrInvalidLengthExecutor - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *FTSBooleanQuery) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowExecutor - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= (uint64(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: FTSBooleanQuery: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: FTSBooleanQuery: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Nodes", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowExecutor - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= (int(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthExecutor - } - postIndex := iNdEx + msglen - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Nodes = append(m.Nodes, &FTSBooleanNode{}) - if err := m.Nodes[len(m.Nodes)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - case 2: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field QueryTokenizer", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowExecutor - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= (uint64(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthExecutor - } - postIndex := iNdEx + intStringLen - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.QueryTokenizer = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 3: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field NgramTokenSize", wireType) - } - m.NgramTokenSize = 0 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowExecutor - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - m.NgramTokenSize |= (uint32(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - case 4: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field InnodbFtMinTokenSize", wireType) - } - m.InnodbFtMinTokenSize = 0 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowExecutor - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - m.InnodbFtMinTokenSize |= (uint32(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - case 5: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field InnodbFtMaxTokenSize", wireType) - } - m.InnodbFtMaxTokenSize = 0 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowExecutor - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - m.InnodbFtMaxTokenSize |= (uint32(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - case 6: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field InnodbFtEnableStopword", wireType) - } - var v int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowExecutor - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - v |= (int(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - m.InnodbFtEnableStopword = bool(v != 0) - default: - iNdEx = preIndex - skippy, err := skipExecutor(dAtA[iNdEx:]) - if err != nil { - return err - } - if skippy < 0 { - return ErrInvalidLengthExecutor - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *FTSBooleanNode) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowExecutor - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= (uint64(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: FTSBooleanNode: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: FTSBooleanNode: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field Occur", wireType) - } - m.Occur = 0 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowExecutor - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - m.Occur |= (FTSBooleanOccur(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - case 2: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field Modifier", wireType) - } - m.Modifier = 0 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowExecutor - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - m.Modifier |= (FTSBooleanModifier(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - case 3: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Term", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowExecutor - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= (int(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthExecutor - } - postIndex := iNdEx + msglen - if postIndex > l { - return io.ErrUnexpectedEOF - } - v := &FTSBooleanTerm{} - if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - m.Node = &FTSBooleanNode_Term{v} - iNdEx = postIndex - case 4: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field SubExpression", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowExecutor - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= (int(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthExecutor - } - postIndex := iNdEx + msglen - if postIndex > l { - return io.ErrUnexpectedEOF - } - v := &FTSBooleanQuery{} - if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - m.Node = &FTSBooleanNode_SubExpression{v} - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipExecutor(dAtA[iNdEx:]) - if err != nil { - return err - } - if skippy < 0 { - return ErrInvalidLengthExecutor - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} func (m *FTSQueryInfo) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 @@ -15592,332 +14560,308 @@ var ( func init() { proto.RegisterFile("executor.proto", fileDescriptorExecutor) } var fileDescriptorExecutor = []byte{ - // 5217 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x5a, 0x4b, 0x73, 0x1c, 0xc9, - 0x71, 0xc6, 0xbc, 0x80, 0x99, 0x9c, 0x07, 0x1a, 0x05, 0x10, 0x1c, 0x92, 0x4b, 0x12, 0x3b, 0xda, - 0x07, 0x35, 0xd6, 0x72, 0x77, 0x41, 0x6a, 0x77, 0xb5, 0x7a, 0xac, 0xf0, 0x5c, 0x0e, 0x09, 0x0c, - 0xa0, 0x1e, 0x68, 0x57, 0x11, 0x76, 0x44, 0x47, 0xa3, 0xbb, 0x66, 0xa6, 0x88, 0x7e, 0xb1, 0x1f, - 0xe4, 0x60, 0x1d, 0x8e, 0xd0, 0x59, 0x27, 0x87, 0x15, 0x56, 0xf8, 0xec, 0x93, 0x1d, 0x76, 0xf8, - 0xe0, 0x3f, 0x60, 0x1f, 0x75, 0x71, 0x84, 0xaf, 0xd2, 0xc1, 0xe1, 0x90, 0x4f, 0x8e, 0xf0, 0xcd, - 0x37, 0x9f, 0x1c, 0x95, 0x55, 0xdd, 0x5d, 0xf3, 0x00, 0x96, 0x6b, 0xe9, 0xe0, 0xd3, 0x4c, 0x67, - 0x7e, 0x99, 0x95, 0x55, 0x95, 0x99, 0x95, 0xf5, 0x80, 0x16, 0x9d, 0x50, 0x2b, 0x89, 0xfd, 0xf0, - 0x61, 0x10, 0xfa, 0xb1, 0x4f, 0xca, 0x31, 0x0b, 0xce, 0x6f, 0x6b, 0x74, 0x12, 0x84, 0x34, 0x8a, - 0x98, 0xef, 0x09, 0xfa, 0xed, 0x46, 0x64, 0x8d, 0xa9, 0x6b, 0xca, 0xaf, 0x8d, 0x91, 0x3f, 0xf2, - 0xf1, 0xef, 0xfb, 0xfc, 0x9f, 0xa0, 0x76, 0xfe, 0xb6, 0x06, 0xd5, 0x03, 0xa9, 0x8e, 0xbc, 0x05, - 0xc5, 0x38, 0x68, 0x17, 0xb6, 0x0a, 0x0f, 0x5a, 0xdb, 0xad, 0x87, 0x5c, 0xeb, 0x43, 0xce, 0x3b, - 0xbb, 0x0c, 0xe8, 0x6e, 0xf9, 0xd7, 0xff, 0x76, 0x7f, 0x49, 0x2f, 0xc6, 0x01, 0xe9, 0x42, 0x35, - 0x3e, 0x77, 0x8c, 0xc8, 0x32, 0xbd, 0x76, 0x71, 0xab, 0xf0, 0xa0, 0xbe, 0xbd, 0x2a, 0xb0, 0x67, - 0xe6, 0xb9, 0x43, 0x07, 0x96, 0xe9, 0xe9, 0x2b, 0xf1, 0xb9, 0xc3, 0xff, 0x70, 0x2c, 0xb3, 0x27, - 0x02, 0x5b, 0x52, 0xb1, 0x3d, 0xcf, 0xa6, 0x13, 0x81, 0x65, 0x36, 0xfe, 0x21, 0xef, 0x41, 0x2d, - 0xa2, 0x0e, 0xb5, 0x62, 0xe6, 0x7b, 0xed, 0xb2, 0x0a, 0x1e, 0xa4, 0x64, 0x3d, 0x47, 0x90, 0x47, - 0x50, 0x37, 0x47, 0xa3, 0x90, 0x8e, 0x4c, 0x14, 0xa8, 0xa0, 0xc0, 0x9a, 0x10, 0xd8, 0xc9, 0x19, - 0xba, 0x8a, 0x22, 0xf7, 0xa0, 0x1c, 0xfb, 0x41, 0xbf, 0xbd, 0x8c, 0x68, 0x90, 0x76, 0xfb, 0x41, - 0x5f, 0x47, 0x3a, 0x79, 0x13, 0x2a, 0x0e, 0x73, 0x59, 0xdc, 0x5e, 0x41, 0x40, 0x5d, 0x00, 0x8e, - 0x38, 0x49, 0x17, 0x1c, 0xb2, 0x07, 0x6b, 0x74, 0x62, 0x8d, 0x4d, 0x6f, 0x44, 0x8d, 0x90, 0x5a, - 0x94, 0xbd, 0xa4, 0x61, 0xbb, 0x8a, 0xf0, 0xcd, 0x74, 0xcc, 0x04, 0x5b, 0x97, 0x5c, 0x5d, 0xa3, - 0x33, 0x14, 0x6e, 0xc7, 0x73, 0x9f, 0x79, 0xed, 0x9a, 0x6a, 0xc7, 0x53, 0x9f, 0x79, 0x3a, 0xd2, - 0xc9, 0x7d, 0xa8, 0xa7, 0x93, 0x6c, 0x30, 0xbb, 0x0d, 0x5b, 0x85, 0x07, 0x35, 0x1d, 0x52, 0x52, - 0xcf, 0xe6, 0x0a, 0x2e, 0x98, 0xe3, 0xb4, 0xeb, 0xaa, 0x82, 0x67, 0xcc, 0x71, 0x74, 0xa4, 0x93, - 0x1f, 0xc2, 0x6a, 0x66, 0x65, 0x44, 0x3d, 0x9b, 0x86, 0xed, 0x06, 0x42, 0x37, 0xa6, 0x6d, 0x1c, - 0x20, 0x4f, 0x6f, 0xd1, 0xa9, 0x6f, 0xf2, 0x01, 0xc0, 0x69, 0xe8, 0x3f, 0x97, 0x93, 0xd1, 0x44, - 0x49, 0x4d, 0x48, 0xe6, 0x74, 0x5d, 0xc1, 0x90, 0xa7, 0xb0, 0x11, 0x98, 0x61, 0xcc, 0xf8, 0x87, - 0x11, 0x73, 0x4f, 0x10, 0xb3, 0xde, 0x42, 0xd9, 0xb6, 0x94, 0x4d, 0x11, 0xb9, 0xab, 0x90, 0x60, - 0x8e, 0xc6, 0x3b, 0x17, 0xf9, 0x61, 0xdc, 0x5e, 0x55, 0x3b, 0x37, 0xf0, 0xc3, 0x58, 0x47, 0x3a, - 0x79, 0x0b, 0x96, 0x5f, 0x31, 0xcf, 0xf6, 0x5f, 0xb5, 0x35, 0x44, 0x34, 0x04, 0xe2, 0x4b, 0xa4, - 0xe9, 0x92, 0x47, 0xfa, 0xf0, 0xe6, 0x90, 0x79, 0xd4, 0x18, 0x85, 0x26, 0xf3, 0xa8, 0x6d, 0x44, - 0xe3, 0x64, 0x38, 0xe4, 0x66, 0xc5, 0x21, 0x35, 0x5d, 0xc3, 0xf2, 0x13, 0x2f, 0x6e, 0xaf, 0x6d, - 0x15, 0x1e, 0x94, 0xa5, 0x73, 0xdf, 0xe5, 0xf0, 0xcf, 0x05, 0x7a, 0x20, 0xc0, 0x03, 0xc4, 0xee, - 0x71, 0x28, 0x79, 0x0a, 0xf7, 0x17, 0xea, 0x3b, 0x37, 0x63, 0x6b, 0x6c, 0x44, 0xec, 0x2b, 0xda, - 0x26, 0x8a, 0xb6, 0x3b, 0xf3, 0xda, 0x76, 0x39, 0x72, 0xc0, 0xbe, 0xa2, 0xbc, 0x07, 0x74, 0x12, - 0x98, 0x9e, 0xdd, 0x5e, 0x57, 0x7b, 0x70, 0x80, 0x34, 0x5d, 0xf2, 0xc8, 0xbb, 0xb0, 0x22, 0xfe, - 0x6d, 0xb7, 0x37, 0x10, 0xd6, 0x54, 0x61, 0xdb, 0x7a, 0xca, 0xe5, 0xb3, 0x7d, 0x1e, 0xfa, 0xa6, - 0x6d, 0x99, 0x51, 0x6c, 0xbc, 0x48, 0x68, 0x78, 0xd9, 0xbe, 0xa1, 0xce, 0xf6, 0x6e, 0xca, 0xfc, - 0x09, 0xe7, 0xe9, 0xad, 0xf3, 0xa9, 0x6f, 0xf2, 0x18, 0x1a, 0x8c, 0xc7, 0xa3, 0xe1, 0xf8, 0xfe, - 0x45, 0x12, 0xb4, 0xdb, 0x6a, 0x2c, 0x61, 0xa4, 0x1e, 0xf9, 0xfe, 0xc5, 0x4f, 0x03, 0xbd, 0xce, - 0xd2, 0x8f, 0x24, 0x20, 0x77, 0x01, 0x02, 0x33, 0xa4, 0x5e, 0x6c, 0x30, 0x7b, 0xd2, 0xbe, 0xb5, - 0x55, 0x78, 0xd0, 0xd4, 0x6b, 0x82, 0xd2, 0xb3, 0x27, 0xe4, 0x14, 0x36, 0xe9, 0x24, 0x70, 0x4c, - 0xe6, 0x19, 0x43, 0x3f, 0x34, 0x2c, 0xdf, 0xf3, 0xa4, 0x3b, 0xdd, 0x46, 0xf5, 0xb7, 0xb3, 0xbe, - 0x70, 0xcc, 0xa1, 0x1f, 0xee, 0x65, 0x08, 0x7d, 0x83, 0x2e, 0xa0, 0x76, 0xfe, 0xbe, 0x04, 0xad, - 0x69, 0xbf, 0x25, 0x0f, 0x94, 0x8c, 0x45, 0xa6, 0x3d, 0x7b, 0x2e, 0x6b, 0xad, 0x51, 0xcf, 0xf2, - 0x6d, 0x6a, 0x1b, 0xb1, 0x19, 0x5d, 0x18, 0x2e, 0x8d, 0xcd, 0x76, 0x71, 0xab, 0xf4, 0xa0, 0xa1, - 0xaf, 0x4a, 0xc6, 0x99, 0x19, 0x5d, 0x1c, 0xd3, 0xd8, 0x24, 0x1f, 0x42, 0x2b, 0xf7, 0xe5, 0x0b, - 0x7a, 0x19, 0xb5, 0x4b, 0x5b, 0xa5, 0xdc, 0x13, 0x0f, 0x26, 0x41, 0xa8, 0x37, 0x33, 0xc4, 0x33, - 0x7a, 0x19, 0x91, 0xb7, 0xa0, 0x62, 0x8d, 0x99, 0x63, 0xcb, 0xc4, 0xa5, 0x64, 0x4f, 0x1e, 0xb0, - 0xba, 0x60, 0x92, 0xb7, 0xa1, 0x12, 0x5f, 0x06, 0x34, 0x6a, 0x57, 0x50, 0x9f, 0x4c, 0x6f, 0x87, - 0x8c, 0x3a, 0x36, 0x37, 0x57, 0x17, 0x5c, 0xf2, 0x31, 0xac, 0x9a, 0x8e, 0x63, 0x0c, 0x39, 0xdd, - 0x10, 0x02, 0xcb, 0x8b, 0x05, 0x9a, 0xa6, 0xe3, 0x64, 0x5f, 0x11, 0xf9, 0x21, 0xd4, 0x2d, 0xdf, - 0x4d, 0x97, 0x01, 0x4c, 0x62, 0xad, 0xed, 0x1b, 0x42, 0x68, 0x2f, 0x67, 0x1c, 0xfb, 0x76, 0x3a, - 0x34, 0x2a, 0x9e, 0x1c, 0xc1, 0x66, 0x12, 0xa4, 0xe1, 0x11, 0x53, 0x65, 0xa0, 0xaa, 0xd8, 0xfc, - 0x4d, 0xd9, 0x2b, 0x31, 0x5c, 0xbb, 0x97, 0x31, 0x8d, 0x06, 0x0e, 0xb3, 0xa8, 0xbe, 0x9e, 0x8a, - 0xed, 0xc5, 0x34, 0x1d, 0xc5, 0xce, 0x2f, 0x0a, 0x50, 0x57, 0x9c, 0x87, 0x7c, 0x00, 0x1b, 0xc2, - 0xcb, 0xc6, 0xa6, 0x67, 0x3b, 0xd4, 0xf0, 0x87, 0xc3, 0x88, 0xc6, 0x51, 0xbb, 0xb0, 0x55, 0x7a, - 0xd0, 0xd4, 0x09, 0xf2, 0x9e, 0x20, 0xeb, 0x44, 0x70, 0xb8, 0x87, 0x5d, 0x50, 0x1a, 0x18, 0x7e, - 0xc8, 0xf3, 0x17, 0x5f, 0x6b, 0xaa, 0x7a, 0x8d, 0x53, 0x4e, 0x38, 0x81, 0x2f, 0x2e, 0x38, 0xac, - 0x21, 0xf5, 0xe4, 0x04, 0xcd, 0x0e, 0x7b, 0xc6, 0xef, 0x7c, 0x02, 0x6b, 0x73, 0x66, 0x93, 0x6f, - 0x41, 0x53, 0xf5, 0x09, 0x61, 0x4a, 0x43, 0x6f, 0x28, 0xfe, 0x10, 0x75, 0x7e, 0x5b, 0x00, 0x6d, - 0x36, 0xa3, 0x2f, 0xf6, 0xa6, 0xc2, 0x62, 0x6f, 0xfa, 0x00, 0xea, 0xea, 0x4c, 0x16, 0x17, 0xcf, - 0x24, 0x0c, 0xf3, 0x69, 0xec, 0xa0, 0x57, 0x97, 0xae, 0xf2, 0x6a, 0xf4, 0xe7, 0x7d, 0xb8, 0xef, - 0x87, 0x6c, 0xc4, 0x3c, 0xd3, 0xc1, 0xb9, 0x0a, 0x42, 0xdb, 0xb7, 0x12, 0x1a, 0x2a, 0xf6, 0x94, - 0xd1, 0x9e, 0x3b, 0x29, 0x6c, 0x2f, 0xa6, 0xa7, 0x12, 0x94, 0xcd, 0xd1, 0x2f, 0x4b, 0xd0, 0xd8, - 0xe9, 0xf7, 0x31, 0x0d, 0xf4, 0xbc, 0xa1, 0x4f, 0x3e, 0x06, 0xc0, 0xfc, 0x81, 0xc6, 0x4e, 0x07, - 0x56, 0x8a, 0x53, 0x02, 0xab, 0xf6, 0x22, 0x25, 0x90, 0x1e, 0xac, 0xda, 0x2c, 0x8a, 0x4d, 0xcf, - 0xa2, 0xbc, 0xf5, 0x90, 0x59, 0x38, 0x61, 0xad, 0x34, 0xce, 0xbf, 0xa0, 0x56, 0xec, 0x87, 0xfb, - 0x12, 0x72, 0x8c, 0x08, 0xa9, 0xa5, 0x65, 0x4f, 0x51, 0xc9, 0x2d, 0xa8, 0xc4, 0x7e, 0x60, 0x5c, - 0xe0, 0x08, 0x34, 0x25, 0x88, 0xaf, 0xcf, 0xcf, 0xc8, 0xdb, 0xdc, 0xc1, 0x9d, 0xc4, 0xf5, 0x0c, - 0xcf, 0x74, 0x29, 0x06, 0x5b, 0x4d, 0x02, 0x40, 0x30, 0xfa, 0xa6, 0x4b, 0xc9, 0x9b, 0x50, 0x93, - 0x30, 0x66, 0x63, 0x65, 0x50, 0x92, 0xa0, 0xaa, 0x20, 0xe3, 0x02, 0x5a, 0x0f, 0xe9, 0xd0, 0x78, - 0x49, 0x2d, 0x63, 0xf8, 0x68, 0x1b, 0x0b, 0x82, 0x86, 0x5e, 0x0b, 0xe9, 0xf0, 0x0b, 0x6a, 0x1d, - 0x3e, 0xda, 0x26, 0xf7, 0xa1, 0x2a, 0xbc, 0x95, 0xd9, 0xb8, 0xba, 0xa7, 0x1a, 0x56, 0x90, 0xda, - 0xe3, 0xc9, 0xb9, 0xe1, 0x9a, 0x13, 0x23, 0xb5, 0x1d, 0xd7, 0xe8, 0x42, 0x1a, 0x55, 0xae, 0x39, - 0x49, 0xbb, 0x4a, 0xba, 0xd0, 0x1a, 0x7b, 0xd1, 0x2b, 0x83, 0x0e, 0x8d, 0x88, 0x9a, 0xa1, 0x35, - 0xc6, 0x64, 0x9e, 0xf6, 0xab, 0xc1, 0x79, 0x07, 0xc3, 0x01, 0x72, 0x9e, 0x96, 0xab, 0x2b, 0x5a, - 0xb5, 0xf3, 0xab, 0x02, 0xb4, 0x0e, 0xcf, 0x06, 0xbb, 0xbe, 0xef, 0x50, 0xd3, 0x3b, 0xa3, 0xa1, - 0x4b, 0xbe, 0x0f, 0xb5, 0x98, 0x86, 0xae, 0x3a, 0x2d, 0x72, 0x4d, 0x9d, 0x06, 0x2a, 0x93, 0x53, - 0x8d, 0xe5, 0x37, 0x69, 0x43, 0x39, 0xa6, 0x93, 0x18, 0x27, 0xa4, 0x96, 0x8d, 0x27, 0x9d, 0xc4, - 0xe4, 0x3d, 0x58, 0x0d, 0xc6, 0xa1, 0x19, 0xd1, 0xbc, 0x1f, 0xea, 0xa0, 0xb7, 0x04, 0x33, 0xed, - 0x4a, 0xe7, 0x37, 0x45, 0x58, 0xcd, 0xdb, 0x13, 0x8b, 0x47, 0x17, 0x2a, 0x9e, 0x6f, 0x53, 0x11, - 0x3c, 0xd9, 0x8a, 0x93, 0xa3, 0xfa, 0xbe, 0x4d, 0x75, 0x01, 0xe1, 0xcd, 0x49, 0xef, 0xf2, 0x2f, - 0xa8, 0xc7, 0xbe, 0x92, 0x51, 0x9d, 0xda, 0xd4, 0x12, 0xee, 0x94, 0xf2, 0xc8, 0x43, 0xd0, 0xbc, - 0x51, 0x68, 0xba, 0x02, 0x2e, 0x96, 0xd8, 0x29, 0xf3, 0x90, 0x8b, 0x78, 0x5c, 0x55, 0x7f, 0x00, - 0x6d, 0xe6, 0x79, 0xbe, 0x7d, 0x6e, 0x0c, 0x63, 0xc3, 0x65, 0x9e, 0x2a, 0x57, 0x56, 0xe4, 0x36, - 0x04, 0xea, 0x30, 0x3e, 0x66, 0xde, 0x55, 0xd2, 0xe6, 0x44, 0x95, 0xae, 0x2c, 0x94, 0x36, 0x27, - 0xb9, 0xf4, 0x67, 0x70, 0x2b, 0x97, 0xa6, 0x9e, 0x28, 0x80, 0x62, 0x3f, 0x78, 0xe5, 0x87, 0x36, - 0x7a, 0x57, 0x55, 0x8a, 0x6f, 0xa6, 0xe2, 0x07, 0x08, 0x1a, 0x48, 0x4c, 0xe7, 0xbf, 0xa7, 0x26, - 0x9d, 0x8f, 0x1a, 0xf9, 0x10, 0x2a, 0xbe, 0x65, 0x25, 0xa1, 0x9c, 0xf0, 0x1b, 0xb3, 0x43, 0x7b, - 0xc2, 0x99, 0x52, 0xad, 0x40, 0x92, 0x4f, 0xa1, 0xea, 0xfa, 0x36, 0x1b, 0x32, 0x39, 0xb4, 0x0b, - 0xdc, 0xe4, 0x58, 0xf2, 0x53, 0x37, 0x49, 0xf1, 0xa4, 0xcb, 0xdd, 0x24, 0x74, 0x65, 0xa1, 0xbe, - 0xb1, 0xc8, 0xbd, 0x9e, 0xa0, 0xe3, 0x84, 0x2e, 0xf9, 0x11, 0xb4, 0xa2, 0xe4, 0xdc, 0xc8, 0xf7, - 0x1c, 0x72, 0xe1, 0x9b, 0xb3, 0x11, 0x9d, 0xe4, 0xc9, 0x92, 0xde, 0x8c, 0x92, 0xf3, 0x83, 0x0c, - 0xbd, 0xbb, 0x0c, 0x65, 0xee, 0x12, 0x9d, 0x5f, 0x95, 0xa0, 0x71, 0x78, 0x36, 0x78, 0xad, 0x04, - 0x94, 0xe2, 0x16, 0x27, 0x20, 0x35, 0x60, 0x8b, 0x8b, 0x02, 0xb6, 0x0b, 0x2b, 0x22, 0xfa, 0xd3, - 0xe5, 0x5c, 0x4b, 0x17, 0x46, 0x4c, 0x09, 0xde, 0xd0, 0xd7, 0x53, 0x00, 0x79, 0x13, 0x1a, 0x4a, - 0x9e, 0x89, 0x30, 0x95, 0xd6, 0xf4, 0x7a, 0x9e, 0x62, 0x22, 0xf2, 0xad, 0xcc, 0x50, 0x1e, 0x5a, - 0x15, 0xc5, 0x8d, 0xa5, 0x51, 0x32, 0xbe, 0x66, 0x1d, 0x7e, 0xf9, 0x1a, 0x87, 0x5f, 0x4f, 0x33, - 0x1f, 0x60, 0x35, 0x25, 0x72, 0xde, 0x27, 0x69, 0x43, 0xc3, 0xc4, 0xb3, 0x30, 0x77, 0xb4, 0xb6, - 0xd7, 0x65, 0x4d, 0x6c, 0x99, 0x8e, 0x19, 0x1e, 0x26, 0x9e, 0x35, 0x60, 0xa3, 0xa9, 0xd6, 0x39, - 0x8d, 0x7c, 0x0a, 0xcd, 0x73, 0x31, 0x0b, 0xb2, 0x28, 0xdc, 0xbc, 0x66, 0x8e, 0xf4, 0xc6, 0xb9, - 0xf2, 0xc5, 0x73, 0xd0, 0x9a, 0x18, 0x19, 0x33, 0xc4, 0x55, 0x1c, 0x67, 0xe7, 0x07, 0x00, 0x62, - 0x90, 0x95, 0xd9, 0xb9, 0xa9, 0x0e, 0xa3, 0x04, 0xab, 0x53, 0xc4, 0x52, 0x02, 0xf9, 0x14, 0x5a, - 0xc3, 0x38, 0x12, 0xb6, 0x18, 0xcc, 0x1b, 0xfa, 0xd2, 0x69, 0x66, 0xe6, 0x97, 0xb7, 0xf4, 0x64, - 0x49, 0x6f, 0x0c, 0xe3, 0x28, 0xfb, 0xde, 0x5d, 0x81, 0x0a, 0x2a, 0xea, 0xfc, 0x4b, 0x05, 0x6a, - 0xf9, 0x56, 0xe1, 0x3e, 0x54, 0xc5, 0x66, 0x83, 0xd9, 0x68, 0x4e, 0x36, 0xeb, 0x48, 0x9d, 0x9e, - 0xf5, 0xe2, 0xd7, 0xcd, 0x7a, 0x1b, 0xca, 0x36, 0x8d, 0x2c, 0x0c, 0x80, 0x34, 0x5c, 0x91, 0x42, - 0xbe, 0x03, 0x24, 0x08, 0x99, 0x6b, 0x86, 0x97, 0x46, 0xb6, 0xb0, 0x08, 0xaf, 0x28, 0xe9, 0x9a, - 0xe4, 0x48, 0x8d, 0x76, 0x44, 0x7e, 0x0c, 0x9a, 0x47, 0x27, 0xb1, 0x11, 0x52, 0xd3, 0x36, 0xa8, - 0x37, 0x62, 0x9e, 0xc8, 0x20, 0xad, 0xb4, 0xf1, 0x03, 0xa4, 0x29, 0x83, 0xd4, 0xe2, 0x78, 0x9d, - 0x9a, 0xb6, 0xe0, 0x90, 0xef, 0xc0, 0x72, 0xc8, 0x97, 0xfb, 0xb4, 0xf0, 0x93, 0x85, 0xcd, 0x33, - 0x7a, 0xa9, 0x73, 0xb2, 0x94, 0x92, 0x18, 0xf2, 0x3d, 0xb8, 0x95, 0x5a, 0x17, 0x84, 0x74, 0xc8, - 0x26, 0xaa, 0x91, 0x2b, 0x68, 0xe4, 0xa6, 0x04, 0x9c, 0x22, 0x3f, 0x37, 0x75, 0xba, 0xc4, 0xaa, - 0xce, 0x96, 0x58, 0x5b, 0xd0, 0x60, 0x91, 0x31, 0xe4, 0xdb, 0x0a, 0xdc, 0xcd, 0xd5, 0x10, 0x00, - 0x2c, 0x3a, 0x34, 0xa3, 0x18, 0x27, 0xe0, 0x18, 0xee, 0x06, 0x49, 0x34, 0xa6, 0xb6, 0x61, 0xfb, - 0xaf, 0x3c, 0x63, 0xc8, 0x9c, 0x98, 0x62, 0xb5, 0x6f, 0x63, 0x71, 0x1c, 0xb5, 0x61, 0xae, 0x74, - 0xbe, 0x2d, 0x04, 0xf6, 0xfd, 0x57, 0xde, 0x21, 0xc2, 0xf7, 0x32, 0x34, 0xd9, 0x83, 0xf5, 0x30, - 0xf1, 0x62, 0xe6, 0xd2, 0x54, 0x95, 0xc3, 0xa2, 0xb8, 0x5d, 0x47, 0x25, 0xd2, 0xeb, 0x75, 0x01, - 0x10, 0xb2, 0xfa, 0x5a, 0xa8, 0x7e, 0x1e, 0xb1, 0x88, 0x47, 0x9d, 0xc6, 0xf3, 0xf7, 0x2b, 0x93, - 0xc5, 0x06, 0xaa, 0x72, 0x23, 0xdc, 0xfd, 0x56, 0xe4, 0xb8, 0x35, 0x5d, 0x73, 0xf2, 0xa5, 0xc9, - 0xe2, 0x33, 0xe6, 0xd2, 0xe3, 0x88, 0xbc, 0x0f, 0x35, 0xd3, 0x4b, 0x43, 0xa4, 0xa9, 0x7a, 0xa4, - 0x5a, 0x1a, 0xe9, 0x55, 0xd3, 0x93, 0x4b, 0xde, 0x33, 0xb8, 0x91, 0x44, 0xd4, 0x96, 0xa3, 0x6c, - 0x86, 0x06, 0x7a, 0x26, 0x8d, 0xda, 0x2d, 0xb5, 0x4c, 0x9e, 0x8b, 0x1e, 0x7d, 0x9d, 0x4b, 0x4d, - 0x91, 0x69, 0xd4, 0xf9, 0xaf, 0x32, 0x90, 0xf9, 0x7d, 0xf1, 0xff, 0x4f, 0xc7, 0xbe, 0xd6, 0xd1, - 0x2a, 0xd7, 0x3a, 0xda, 0xb7, 0x20, 0xdf, 0x31, 0x21, 0x7c, 0x19, 0xe1, 0x8d, 0x8c, 0xc8, 0x41, - 0xb3, 0xee, 0xb6, 0xf2, 0xcd, 0xdd, 0xad, 0xfa, 0x87, 0x70, 0xb7, 0xda, 0xef, 0xed, 0x6e, 0xf0, - 0x9a, 0xee, 0x56, 0xff, 0x7d, 0xdc, 0xad, 0xf1, 0x7f, 0x70, 0xb7, 0xff, 0xa9, 0x40, 0xf9, 0xa9, - 0xcf, 0x3c, 0xf2, 0x21, 0xd4, 0x9e, 0xfb, 0xbc, 0x46, 0xca, 0x33, 0x79, 0x2b, 0x3f, 0x87, 0x52, - 0xeb, 0xc8, 0xe7, 0xf2, 0x9b, 0x2f, 0xfa, 0x28, 0x42, 0x27, 0xd4, 0x12, 0x72, 0x45, 0x75, 0x7d, - 0xe6, 0x72, 0x33, 0xe7, 0x85, 0x8d, 0xe7, 0x0a, 0xed, 0x9b, 0x6c, 0xd8, 0x78, 0x09, 0xcf, 0x3c, - 0x8f, 0x86, 0x78, 0xb8, 0x50, 0x56, 0x4b, 0x78, 0x24, 0xf7, 0xec, 0x09, 0xf9, 0x00, 0x5a, 0x0e, - 0x1d, 0xc6, 0x06, 0xda, 0x84, 0xdb, 0xf4, 0xca, 0xdc, 0xe4, 0x37, 0x38, 0x82, 0x1b, 0x86, 0xbb, - 0xf4, 0x6d, 0x58, 0x0d, 0xd9, 0x68, 0xac, 0x8a, 0x2c, 0xcf, 0xef, 0xec, 0x11, 0x92, 0xc9, 0x7c, - 0x00, 0xf5, 0x20, 0xf4, 0xcf, 0xa9, 0xdc, 0xbe, 0xad, 0x5c, 0xb1, 0x7d, 0x43, 0x8c, 0xd8, 0xbe, - 0x7d, 0x00, 0xf5, 0xf3, 0x84, 0x65, 0x1b, 0xbe, 0xea, 0x15, 0x12, 0x88, 0x11, 0x12, 0x8f, 0x60, - 0x15, 0x7b, 0xa2, 0xf8, 0x71, 0x6d, 0xce, 0x2e, 0xec, 0xac, 0xe2, 0xbb, 0xdf, 0x05, 0x4d, 0x74, - 0xe6, 0xda, 0x64, 0x2b, 0x3a, 0x3c, 0x2d, 0xe6, 0xc7, 0xe3, 0xe9, 0xa0, 0xa9, 0xcf, 0x8b, 0x21, - 0x46, 0x11, 0x7b, 0x02, 0x77, 0x84, 0x18, 0x7d, 0xa1, 0x48, 0x1a, 0xc3, 0xd0, 0x77, 0x0d, 0xe6, - 0x49, 0x57, 0x54, 0x35, 0xdc, 0x44, 0xf8, 0xc1, 0x8b, 0x5c, 0xc7, 0x61, 0xe8, 0xbb, 0x3d, 0x8f, - 0x3c, 0x86, 0x9b, 0x2c, 0x32, 0xbc, 0xc4, 0x71, 0x0c, 0xf3, 0x95, 0x19, 0x52, 0x23, 0xa2, 0x2e, - 0xc3, 0x19, 0xc1, 0xe4, 0x5b, 0xd5, 0xd7, 0x59, 0xd4, 0x4f, 0x1c, 0x67, 0x87, 0x33, 0x07, 0xd4, - 0x65, 0xe8, 0xae, 0x57, 0x44, 0x6a, 0xeb, 0x9b, 0x44, 0x6a, 0xe7, 0x3f, 0x8b, 0xd0, 0x9c, 0x02, - 0x91, 0x0d, 0x28, 0xca, 0x04, 0x9b, 0x46, 0x6b, 0x91, 0xd9, 0xe4, 0x31, 0x68, 0x91, 0x9f, 0x84, - 0x16, 0xc5, 0x02, 0x57, 0xb4, 0x54, 0x9c, 0x9f, 0x10, 0x81, 0xe1, 0xff, 0x31, 0x0f, 0x3c, 0x06, - 0x2d, 0x36, 0xc3, 0x11, 0x8d, 0x15, 0xa9, 0xf9, 0x83, 0xa3, 0x96, 0xc0, 0x64, 0x52, 0xdb, 0x40, - 0xb2, 0xb6, 0xf2, 0x13, 0x5f, 0x75, 0x67, 0xab, 0xa5, 0xed, 0x64, 0xa7, 0xbf, 0xdb, 0x40, 0xb2, - 0x96, 0x72, 0x19, 0xb5, 0x06, 0xd5, 0xd2, 0x56, 0x32, 0x99, 0x8f, 0x60, 0x25, 0x1c, 0x8a, 0xa8, - 0x5d, 0x56, 0xeb, 0xb6, 0xa9, 0xf1, 0x50, 0x42, 0x77, 0x39, 0x1c, 0x62, 0xd0, 0x0a, 0x39, 0xd7, - 0xb7, 0xa9, 0x3c, 0x4f, 0x5a, 0x24, 0xa7, 0x9c, 0x28, 0x2d, 0x87, 0x43, 0xfe, 0xd5, 0xf9, 0x4d, - 0x01, 0x6a, 0xd9, 0x29, 0xff, 0xd7, 0x2f, 0x67, 0x7f, 0xd0, 0xf2, 0x3d, 0x5d, 0xef, 0xca, 0x73, - 0xeb, 0xdd, 0x26, 0x2c, 0x27, 0x1e, 0x7b, 0x91, 0x88, 0x82, 0xac, 0xaa, 0xcb, 0xaf, 0x2b, 0xd6, - 0xc1, 0xe5, 0xc5, 0xeb, 0x60, 0xe7, 0x97, 0x05, 0xa8, 0x65, 0x97, 0x12, 0xa4, 0x0b, 0xa0, 0xc4, - 0x52, 0x61, 0x6e, 0xc6, 0x15, 0x2e, 0x79, 0x0c, 0xad, 0x30, 0xf0, 0xd4, 0xd8, 0x13, 0x7e, 0x25, - 0x4f, 0x76, 0xf5, 0xc0, 0x93, 0x39, 0x28, 0xf0, 0x94, 0xe0, 0xcb, 0x4e, 0x17, 0x4b, 0xd7, 0x9c, - 0x2e, 0x76, 0x7e, 0x5e, 0x50, 0x4f, 0xed, 0xc9, 0x16, 0x54, 0xb8, 0x1f, 0x2e, 0xb2, 0x48, 0x30, - 0x48, 0x17, 0x6a, 0xdc, 0x18, 0x81, 0x5a, 0x68, 0x47, 0x35, 0x14, 0x7f, 0x5e, 0xd7, 0x84, 0x7f, - 0x2e, 0x42, 0x5d, 0xb9, 0x7c, 0x21, 0x6f, 0x43, 0x75, 0x14, 0xfa, 0x49, 0x60, 0x9c, 0x5f, 0x2e, - 0x30, 0x63, 0x05, 0x79, 0xbb, 0x97, 0x1c, 0x66, 0x8e, 0x46, 0x62, 0x83, 0x33, 0x1f, 0x67, 0x2b, - 0xe6, 0x68, 0x84, 0xfb, 0x99, 0x2d, 0xa8, 0x8a, 0x63, 0x46, 0x6a, 0x4f, 0x95, 0x32, 0x19, 0x95, - 0xbc, 0x0f, 0x0d, 0xde, 0xa3, 0xac, 0xcd, 0xf2, 0xa2, 0x4e, 0x41, 0x18, 0x78, 0x9f, 0xcb, 0x96, - 0xa5, 0x40, 0xd6, 0x7a, 0xe5, 0x2a, 0x81, 0x1d, 0x69, 0x43, 0x36, 0x0e, 0xcb, 0xd7, 0x1d, 0xf4, - 0x7e, 0x0f, 0x1a, 0x41, 0x48, 0x51, 0xed, 0x7c, 0xe4, 0x9c, 0xb1, 0x43, 0xc7, 0x8c, 0xc6, 0xa7, - 0x21, 0xdd, 0x19, 0x8d, 0x78, 0xac, 0xf0, 0xd5, 0x23, 0xfd, 0xdf, 0xf9, 0xeb, 0x02, 0x94, 0xcf, - 0xfc, 0xa0, 0x4f, 0xde, 0x85, 0x2a, 0x56, 0xe5, 0xf9, 0xd8, 0xc9, 0x5b, 0x82, 0xdd, 0xcb, 0x5e, - 0x4c, 0x5d, 0x7d, 0x05, 0xb9, 0xbb, 0x97, 0xe4, 0x76, 0x7a, 0x69, 0x55, 0x54, 0xae, 0x1f, 0xe4, - 0x6d, 0xd5, 0x6b, 0x4d, 0x1b, 0x1f, 0x85, 0xbc, 0x38, 0xcb, 0x86, 0x6d, 0xba, 0xb9, 0x7a, 0x86, - 0xd8, 0xbd, 0xec, 0xfc, 0x63, 0x01, 0x2a, 0x78, 0x2b, 0x96, 0x37, 0x5e, 0xb8, 0xa6, 0xf1, 0xe2, - 0x37, 0x69, 0xbc, 0xf4, 0x35, 0x8d, 0x93, 0x8f, 0x60, 0x2d, 0x0e, 0x13, 0xcf, 0x32, 0x63, 0xca, - 0xd7, 0x70, 0xf4, 0x5f, 0x69, 0xf2, 0xd4, 0x12, 0x96, 0x82, 0x9e, 0xd1, 0x4b, 0x4e, 0xe8, 0xfc, - 0x18, 0xca, 0xcf, 0x98, 0xe3, 0x90, 0x37, 0x60, 0xd9, 0xf2, 0x3d, 0xaf, 0xb7, 0x3f, 0x65, 0xb3, - 0xa4, 0xf1, 0x0e, 0x89, 0xd2, 0xac, 0xa8, 0x78, 0x98, 0x20, 0x75, 0x76, 0x60, 0x63, 0xd1, 0x7d, - 0x05, 0xf9, 0x36, 0x34, 0xf3, 0xfb, 0x8d, 0x34, 0xc5, 0xa5, 0x8a, 0x1b, 0x39, 0xab, 0x67, 0x77, - 0xfe, 0xae, 0x04, 0xed, 0x74, 0x04, 0xc4, 0x2f, 0xf3, 0xbd, 0x41, 0xe2, 0xf2, 0x04, 0x43, 0xba, - 0xb0, 0x86, 0x2b, 0x5c, 0x10, 0xfa, 0x16, 0x8d, 0x78, 0xcd, 0x87, 0x09, 0xa5, 0xf0, 0xa0, 0xac, - 0xaf, 0x72, 0xc6, 0x69, 0x4a, 0xef, 0xf3, 0xe0, 0x5d, 0xf3, 0x12, 0x97, 0x43, 0xed, 0xc4, 0xa2, - 0xb6, 0x11, 0xfa, 0xaf, 0x22, 0xe1, 0x01, 0xfa, 0xaa, 0x97, 0xb8, 0xa7, 0x92, 0xae, 0xfb, 0xaf, - 0x22, 0xf2, 0x36, 0xb4, 0x38, 0x96, 0xc5, 0x34, 0x34, 0x45, 0xd6, 0x29, 0x21, 0xb0, 0xe9, 0x25, - 0x6e, 0x2f, 0x23, 0xce, 0xde, 0x3a, 0x96, 0xe7, 0x6e, 0x1d, 0xb7, 0xa0, 0x6e, 0xf9, 0x9e, 0x95, - 0x84, 0x21, 0xf5, 0xac, 0x4b, 0x4c, 0xa1, 0x65, 0x5d, 0x25, 0x91, 0x23, 0xd8, 0x88, 0xd9, 0x90, - 0xbb, 0x37, 0x56, 0xf0, 0x3c, 0xd1, 0xe1, 0xf9, 0xc8, 0xb2, 0x7a, 0x0d, 0x28, 0x03, 0x80, 0x2f, - 0x0c, 0x7b, 0x82, 0xff, 0x64, 0x49, 0x27, 0x52, 0x4e, 0xa1, 0x72, 0xbb, 0xc3, 0x84, 0xeb, 0x88, - 0x12, 0x37, 0x88, 0xd3, 0x2b, 0x8d, 0x86, 0xde, 0x0c, 0x93, 0xbd, 0x9c, 0x48, 0x9e, 0xe6, 0x8d, - 0x62, 0x11, 0x1e, 0x89, 0xe1, 0x94, 0xb7, 0xb2, 0xd3, 0x8d, 0xf2, 0x42, 0x5c, 0x0e, 0x77, 0xd6, - 0xa4, 0x42, 0xdb, 0x6d, 0x00, 0xec, 0xd3, 0xd8, 0x64, 0x0e, 0x5f, 0x51, 0x3a, 0x23, 0xd8, 0x90, - 0x72, 0xd9, 0x5c, 0xe1, 0x39, 0xc8, 0x09, 0xac, 0xd3, 0x94, 0x20, 0x9b, 0x63, 0xd9, 0x11, 0xe8, - 0xbd, 0x69, 0x3f, 0x9f, 0x9d, 0x65, 0x9d, 0xd0, 0x69, 0x0a, 0xa3, 0x51, 0xe7, 0x4f, 0xe0, 0xb6, - 0x6c, 0x48, 0xa7, 0x23, 0xe6, 0x7b, 0xfd, 0xc4, 0x3d, 0x19, 0xf6, 0x3c, 0x79, 0x84, 0x7c, 0x1f, - 0xea, 0x4c, 0xfe, 0x4f, 0xbd, 0xab, 0xa6, 0x43, 0x4a, 0xea, 0xd9, 0x7c, 0x1b, 0x1f, 0xa2, 0x9c, - 0xe1, 0x25, 0xae, 0xf4, 0x82, 0x5a, 0x98, 0x6a, 0xea, 0xfc, 0x13, 0x01, 0x32, 0x3f, 0xe8, 0xe4, - 0x31, 0x6c, 0xd8, 0xee, 0x90, 0xc9, 0xab, 0x5a, 0x8f, 0xda, 0x46, 0x60, 0x5a, 0x17, 0xd2, 0xe3, - 0x76, 0x8b, 0xed, 0x82, 0x4e, 0x04, 0x7f, 0x20, 0xd8, 0xa7, 0x9c, 0xab, 0x4a, 0x5d, 0xb0, 0x20, - 0xc8, 0xa4, 0x8a, 0x73, 0x52, 0x82, 0x2d, 0xa4, 0x3e, 0x86, 0xb6, 0x94, 0xb2, 0xcd, 0xd8, 0xcc, - 0x1a, 0x44, 0xaf, 0x15, 0xce, 0x78, 0x43, 0xf0, 0xf7, 0xcd, 0xd8, 0x94, 0xed, 0xa1, 0xef, 0xce, - 0x0a, 0xca, 0x36, 0x51, 0xb0, 0x3c, 0x27, 0x28, 0xb8, 0x28, 0xf8, 0x09, 0xdc, 0x8c, 0xfd, 0xd8, - 0x74, 0x0c, 0x29, 0x1e, 0x46, 0x86, 0xe3, 0x9b, 0x36, 0xdf, 0x9d, 0x55, 0x32, 0x53, 0xd7, 0x11, - 0xb2, 0x8f, 0x08, 0x3d, 0x3a, 0xf2, 0x4d, 0x1b, 0x77, 0x68, 0x1b, 0xd3, 0x92, 0x54, 0x88, 0x2d, - 0x63, 0x73, 0x6b, 0xaa, 0x08, 0x45, 0x81, 0xef, 0xa6, 0x4d, 0x89, 0xba, 0x3f, 0xf2, 0xcc, 0x20, - 0x1a, 0xfb, 0x31, 0x97, 0x59, 0x41, 0x19, 0xa1, 0x6f, 0x97, 0x73, 0x07, 0x92, 0x79, 0x8c, 0x7b, - 0x62, 0xc7, 0xb7, 0x4c, 0xc7, 0x10, 0x33, 0x15, 0xa1, 0xc3, 0x96, 0xf5, 0x06, 0x12, 0x85, 0x1f, - 0x60, 0xec, 0x86, 0xd4, 0xf5, 0x63, 0x9a, 0xa1, 0x6a, 0x22, 0x76, 0x05, 0x35, 0x85, 0xbd, 0x03, - 0xab, 0x49, 0x44, 0x43, 0x61, 0xeb, 0xf9, 0x65, 0x4c, 0xc5, 0x1e, 0xb4, 0xac, 0x37, 0x39, 0x99, - 0xdb, 0x89, 0x17, 0x5f, 0xe4, 0x43, 0xb8, 0x21, 0x4c, 0x75, 0xa8, 0x19, 0x7a, 0xa9, 0x80, 0x1b, - 0xe1, 0x4e, 0xb4, 0xac, 0x13, 0x64, 0x1e, 0x09, 0x9e, 0xec, 0xdd, 0x0f, 0xe0, 0x8e, 0xcd, 0x22, - 0xbe, 0x96, 0x21, 0xd6, 0x32, 0xad, 0x31, 0x35, 0xc6, 0x2c, 0x96, 0xcd, 0x34, 0x50, 0xf0, 0xa6, - 0x80, 0x70, 0x91, 0x3d, 0x0e, 0x78, 0xc2, 0x62, 0xd1, 0xe0, 0x8f, 0xe0, 0x8d, 0x79, 0x69, 0x97, - 0x45, 0x91, 0x14, 0x6f, 0xa2, 0x78, 0x7b, 0x46, 0xfc, 0x98, 0x45, 0x91, 0x90, 0xff, 0x08, 0xda, - 0xb3, 0xd3, 0x68, 0x8d, 0xa9, 0x75, 0xc1, 0x6d, 0x6e, 0x29, 0x83, 0x9b, 0xce, 0xe1, 0x1e, 0x67, - 0x1e, 0x47, 0xbc, 0xa2, 0x8b, 0x62, 0x33, 0x9d, 0xbd, 0x74, 0xec, 0x56, 0x51, 0x42, 0x43, 0x0e, - 0x6f, 0x2c, 0x1d, 0xbe, 0xdb, 0x50, 0x8d, 0xe8, 0xc8, 0xa5, 0x5e, 0x1c, 0xe1, 0xa3, 0x82, 0xb2, - 0x9e, 0x7d, 0x8b, 0xe0, 0x32, 0xd3, 0x3b, 0xc2, 0xb5, 0x34, 0xb8, 0x4c, 0x71, 0x41, 0xc8, 0xd9, - 0x36, 0x75, 0x62, 0x53, 0xb8, 0x24, 0x11, 0x6c, 0xa4, 0xa0, 0x1b, 0xde, 0x87, 0xba, 0x60, 0x8b, - 0xee, 0xae, 0x23, 0x5f, 0x48, 0x88, 0x0e, 0xbe, 0x03, 0xab, 0xee, 0x4b, 0xcb, 0x32, 0x98, 0x17, - 0x24, 0xb1, 0x50, 0xb2, 0x21, 0x66, 0x8e, 0x93, 0x7b, 0x9c, 0x8a, 0x8a, 0x1e, 0x80, 0xa6, 0xe0, - 0x84, 0xb6, 0x1b, 0x08, 0x6c, 0x65, 0x40, 0xa1, 0x31, 0x45, 0xfa, 0x49, 0x9c, 0xa9, 0xdc, 0xcc, - 0x91, 0x27, 0x48, 0x46, 0x9d, 0x5b, 0xd0, 0x70, 0x5c, 0x8c, 0x29, 0x81, 0xba, 0x29, 0xac, 0x73, - 0x5c, 0x1e, 0x48, 0x88, 0xf8, 0x3e, 0xdc, 0x56, 0x5d, 0x1b, 0x1b, 0x97, 0x57, 0xc4, 0x6e, 0x84, - 0x2f, 0x05, 0xca, 0xfa, 0xcd, 0xdc, 0xbb, 0x7b, 0x39, 0xff, 0x58, 0x71, 0x36, 0x21, 0x7c, 0xce, - 0x62, 0xd7, 0x0c, 0xb8, 0xdc, 0x2d, 0xc5, 0xd9, 0x50, 0x6e, 0x17, 0x59, 0xc7, 0x11, 0x79, 0x0f, - 0xd6, 0x5d, 0xe6, 0x19, 0x22, 0x2e, 0xf2, 0x86, 0x6e, 0x8b, 0x79, 0x73, 0x99, 0x77, 0xc4, 0x39, - 0x83, 0xb4, 0x05, 0x0e, 0x37, 0x27, 0x73, 0xf0, 0x3b, 0x12, 0x6e, 0x4e, 0xa6, 0xe1, 0xef, 0xc3, - 0x06, 0xd7, 0x2e, 0x03, 0x2a, 0xc7, 0xbf, 0x21, 0x22, 0xdb, 0x65, 0x9e, 0x8e, 0xac, 0x29, 0x01, - 0x73, 0x32, 0x2f, 0x70, 0x57, 0x0a, 0x98, 0x93, 0x19, 0x81, 0x53, 0x58, 0x97, 0xbe, 0x66, 0xf8, - 0x43, 0x23, 0x4d, 0xd1, 0xed, 0x7b, 0xb8, 0x32, 0x6c, 0x4d, 0x2d, 0x45, 0x0b, 0x32, 0xbd, 0xbe, - 0x26, 0x85, 0x95, 0xe4, 0x9f, 0x27, 0x40, 0x9c, 0xd4, 0xa9, 0xcc, 0x79, 0x5f, 0x4d, 0x80, 0xc7, - 0x2f, 0x2d, 0x6b, 0x71, 0xe6, 0x14, 0x82, 0x6a, 0xe6, 0xdc, 0x9a, 0x13, 0x54, 0x32, 0xe7, 0x8f, - 0xe1, 0xae, 0x14, 0x74, 0xdc, 0x74, 0xb7, 0x3d, 0xd5, 0xec, 0x9b, 0x28, 0x7d, 0x4b, 0x80, 0x8e, - 0x5c, 0xb1, 0x07, 0x54, 0x9b, 0x5e, 0xa8, 0x41, 0x6d, 0xbf, 0xb3, 0x50, 0x83, 0x62, 0xc3, 0x67, - 0x70, 0x57, 0xb8, 0xce, 0x4b, 0xbc, 0x38, 0x36, 0x98, 0x3d, 0x11, 0xe9, 0x1b, 0x4f, 0x1c, 0xa2, - 0x47, 0x6d, 0x5b, 0xe4, 0x0d, 0x04, 0x89, 0xcb, 0xe5, 0x9e, 0x3d, 0xe1, 0x09, 0xfc, 0x30, 0xf4, - 0xdd, 0xc1, 0x23, 0xb2, 0x07, 0xf7, 0xaf, 0x51, 0x60, 0xb3, 0xe8, 0xa2, 0x4d, 0x51, 0xc5, 0xed, - 0xc5, 0x2a, 0xf6, 0x59, 0x74, 0x41, 0x0e, 0x60, 0xeb, 0x1a, 0x25, 0x98, 0xcb, 0xda, 0x43, 0xd4, - 0x72, 0x67, 0xb1, 0x16, 0x4c, 0x66, 0x57, 0x77, 0x26, 0x3d, 0x2e, 0x1c, 0x5d, 0xd5, 0x19, 0x79, - 0x66, 0xb8, 0xa8, 0x33, 0xe2, 0x32, 0x39, 0x53, 0x31, 0x5e, 0xd4, 0x19, 0x71, 0xad, 0x2c, 0x95, - 0x9c, 0xc0, 0xdb, 0x57, 0x29, 0x79, 0xc9, 0x22, 0x16, 0xf3, 0x72, 0x13, 0x6f, 0x72, 0x19, 0xaa, - 0xda, 0x5a, 0xa4, 0xea, 0x0b, 0x01, 0xec, 0xe3, 0x75, 0xee, 0x00, 0xde, 0xbd, 0x4a, 0xa1, 0xcd, - 0x22, 0xcb, 0x0c, 0xed, 0x4c, 0xe5, 0x73, 0x54, 0xd9, 0x59, 0xa4, 0x72, 0x3f, 0x85, 0x0a, 0xa5, - 0x87, 0xf0, 0xe6, 0x9c, 0x52, 0x4c, 0xbf, 0x2f, 0xa9, 0x95, 0x75, 0xf6, 0x62, 0xd1, 0x98, 0xf3, - 0x7c, 0xfe, 0x05, 0xb5, 0x64, 0x6f, 0x8f, 0xe0, 0xad, 0xc5, 0x7a, 0xf0, 0x5c, 0x2a, 0xca, 0x54, - 0x39, 0xa8, 0xea, 0xde, 0xbc, 0xaa, 0x13, 0xc4, 0x09, 0x6d, 0x9d, 0xbf, 0x29, 0x64, 0x15, 0x94, - 0x52, 0x2d, 0x92, 0xb7, 0xa0, 0xe5, 0x32, 0xef, 0x6c, 0x70, 0x22, 0x0a, 0xcf, 0xac, 0x5a, 0x6f, - 0x08, 0x2a, 0x87, 0xf6, 0x23, 0xf2, 0x08, 0x36, 0x03, 0x16, 0x50, 0x87, 0x79, 0xd4, 0x78, 0x91, - 0xd0, 0x84, 0x66, 0x68, 0x51, 0xa9, 0xad, 0xa7, 0xdc, 0x9f, 0x70, 0xa6, 0x14, 0xfa, 0x18, 0xda, - 0x99, 0xd0, 0x79, 0x48, 0xcd, 0x0b, 0x1a, 0x66, 0x62, 0xb2, 0x60, 0x4a, 0xf9, 0xbb, 0x82, 0x2d, - 0x04, 0x3b, 0x5f, 0x41, 0x79, 0xe0, 0x87, 0x31, 0x79, 0x07, 0x56, 0xce, 0x71, 0xf7, 0x14, 0x2d, - 0xde, 0x3e, 0x4a, 0x26, 0x79, 0x0b, 0x9a, 0x2c, 0xc2, 0x1b, 0x08, 0xd3, 0xe1, 0x82, 0xf2, 0xa1, - 0xcd, 0x34, 0xf1, 0x35, 0xf7, 0xff, 0x7f, 0x51, 0x04, 0x4d, 0x3c, 0xc3, 0x3b, 0x0c, 0x4d, 0x97, - 0xee, 0xfa, 0x89, 0xc7, 0x37, 0x78, 0x65, 0xe5, 0x90, 0xf9, 0x86, 0xfa, 0x58, 0x0f, 0x01, 0xca, - 0xa1, 0x13, 0x02, 0x49, 0x07, 0x6a, 0x89, 0x77, 0xce, 0x59, 0xd4, 0x9e, 0xda, 0x86, 0xe5, 0x64, - 0xb2, 0x09, 0xcb, 0xe2, 0x01, 0x91, 0x1c, 0x0c, 0xf9, 0x45, 0x1e, 0x40, 0xcd, 0x32, 0x1d, 0x8b, - 0xef, 0xd5, 0xa3, 0x05, 0x9b, 0xc2, 0x9c, 0x49, 0xfe, 0x08, 0xea, 0x43, 0x6e, 0xa4, 0x81, 0xb7, - 0x68, 0xf2, 0x01, 0xe9, 0xd4, 0xb9, 0x0d, 0xb2, 0xf1, 0xc2, 0x8d, 0x7c, 0x0a, 0x4d, 0xcb, 0x0d, - 0x44, 0x09, 0xaa, 0x9c, 0xa1, 0xc9, 0x17, 0x9f, 0x88, 0xd9, 0x73, 0x03, 0x5e, 0x82, 0xe2, 0xe1, - 0x6e, 0xdd, 0xca, 0x3f, 0x3a, 0xbf, 0x2a, 0x40, 0x5d, 0x19, 0x94, 0xeb, 0xc6, 0x03, 0x01, 0x73, - 0xe3, 0xf1, 0x1d, 0xa8, 0x44, 0xb1, 0x29, 0x67, 0x26, 0x7b, 0x66, 0x3a, 0x3b, 0xce, 0xba, 0x00, - 0x91, 0x07, 0x50, 0xa2, 0x5e, 0x3a, 0x4f, 0x57, 0x61, 0x39, 0xa4, 0xf3, 0xdb, 0x02, 0x2c, 0x0b, - 0x0e, 0x79, 0x17, 0x6a, 0xc3, 0xc4, 0xb3, 0x0c, 0x3c, 0x36, 0x9b, 0x3f, 0xa9, 0xa9, 0x72, 0xe6, - 0x3e, 0x8d, 0xac, 0xb9, 0xdd, 0x7a, 0xf1, 0xeb, 0x76, 0xeb, 0xea, 0x31, 0x46, 0xe9, 0xba, 0x63, - 0x8c, 0x77, 0xa1, 0x82, 0x03, 0x2e, 0x2f, 0x85, 0xd7, 0xe6, 0x2c, 0xd7, 0x05, 0x3f, 0x77, 0xc5, - 0xca, 0x75, 0xae, 0xf8, 0x19, 0x34, 0xf0, 0x90, 0x87, 0x79, 0x23, 0xde, 0x05, 0xf2, 0x3e, 0x34, - 0x47, 0xf2, 0x5b, 0x9c, 0x18, 0xcc, 0xf7, 0xb2, 0x31, 0x52, 0x04, 0x3a, 0x4f, 0xa0, 0x9e, 0x2a, - 0x18, 0xd0, 0x98, 0x7c, 0x0f, 0x5a, 0x53, 0xf2, 0x69, 0x54, 0xc9, 0xcb, 0x0f, 0xb5, 0x2d, 0xbd, - 0xa9, 0x2a, 0x8a, 0x3a, 0x3f, 0x2f, 0xc0, 0xb2, 0x78, 0xb3, 0x49, 0x3e, 0x52, 0xac, 0xc8, 0x5e, - 0xbf, 0x65, 0x9d, 0x55, 0xda, 0xcb, 0x8d, 0x19, 0xd0, 0x38, 0x7a, 0xcd, 0xa3, 0x94, 0x36, 0xac, - 0xbc, 0xa4, 0x21, 0x3e, 0xc7, 0x10, 0x51, 0x91, 0x7e, 0x76, 0xde, 0x83, 0x1a, 0xb7, 0x45, 0xbc, - 0x7b, 0xfb, 0xda, 0x93, 0xc1, 0xce, 0x5f, 0x16, 0x60, 0x45, 0xbe, 0x32, 0x25, 0x0f, 0x01, 0x82, - 0xd0, 0x7f, 0x3e, 0xd5, 0xe9, 0xd5, 0x5c, 0x44, 0xbc, 0x00, 0xac, 0x71, 0x88, 0x38, 0x29, 0x7c, - 0x0c, 0x9b, 0x23, 0xea, 0xd1, 0xd0, 0xe4, 0x0b, 0x8a, 0x2c, 0x41, 0xc5, 0x2b, 0x8a, 0x22, 0xbe, - 0xa2, 0xd8, 0xc8, 0xb8, 0xa2, 0x10, 0x15, 0xcf, 0x29, 0x5e, 0x2f, 0xbf, 0xbc, 0x03, 0xad, 0xe9, - 0xb7, 0xac, 0x64, 0x23, 0x3d, 0xae, 0x11, 0x9b, 0x62, 0xf1, 0xd1, 0xfd, 0xf3, 0x92, 0x78, 0xd6, - 0x8e, 0x27, 0xd8, 0x6b, 0xd0, 0xe4, 0xbf, 0xd9, 0xdd, 0xaa, 0xb6, 0x94, 0x92, 0xb2, 0xf3, 0x69, - 0xad, 0x90, 0x92, 0xb2, 0x63, 0x5d, 0xad, 0x48, 0xd6, 0x61, 0x95, 0x93, 0x94, 0x03, 0x4d, 0xad, - 0x44, 0x1a, 0x50, 0x45, 0x6d, 0x7e, 0xd0, 0xd7, 0xca, 0xa4, 0x09, 0x35, 0xfe, 0x85, 0x67, 0x61, - 0x5a, 0x25, 0x53, 0x82, 0xd5, 0xe0, 0xce, 0x68, 0xa4, 0x2d, 0xa7, 0xf8, 0xa7, 0x3e, 0xf3, 0xb4, - 0x95, 0xf4, 0xeb, 0x19, 0x73, 0x1c, 0xad, 0x4a, 0x36, 0x81, 0xf0, 0xaf, 0xe9, 0x47, 0xad, 0x5a, - 0x8d, 0xb4, 0x61, 0x43, 0xa5, 0xa7, 0xcf, 0x0e, 0x35, 0x20, 0x04, 0x5a, 0x9c, 0x93, 0x1f, 0xf3, - 0x6a, 0x75, 0x72, 0x1b, 0x36, 0x91, 0x36, 0x77, 0x89, 0xac, 0x35, 0xd2, 0xf6, 0x78, 0x0a, 0xd7, - 0x9a, 0xa4, 0x05, 0xc0, 0xbf, 0x44, 0x4c, 0x69, 0xad, 0xf4, 0x5b, 0xcc, 0xb4, 0xb6, 0x4a, 0x56, - 0xa1, 0x9e, 0x7f, 0x6f, 0x6b, 0x5a, 0x6a, 0xe0, 0xf4, 0x98, 0x6b, 0x6b, 0xe9, 0xc8, 0x28, 0xcf, - 0x3b, 0xb5, 0x0d, 0xf2, 0x06, 0xb4, 0xa5, 0xf4, 0xdc, 0x09, 0x99, 0x76, 0xa3, 0xfb, 0x09, 0x34, - 0xd4, 0x47, 0x8c, 0xbc, 0xad, 0x53, 0x33, 0x8a, 0xce, 0xc6, 0xa1, 0x9f, 0x8c, 0xc6, 0xda, 0x12, - 0x1f, 0xca, 0xac, 0x1d, 0xad, 0x40, 0xaa, 0x50, 0x7e, 0x62, 0x46, 0x63, 0xad, 0xd8, 0xfd, 0x3e, - 0xac, 0xce, 0x3c, 0x5e, 0xe5, 0xcc, 0xfe, 0x49, 0xff, 0x40, 0x5b, 0xe2, 0xff, 0x0e, 0x77, 0x06, - 0x67, 0x5a, 0x81, 0x6c, 0x80, 0xf6, 0xa4, 0xf7, 0xf9, 0x13, 0x63, 0xef, 0xe4, 0xf8, 0x54, 0x3f, - 0x18, 0x0c, 0x7a, 0x27, 0x7d, 0xad, 0xd8, 0x7d, 0x08, 0x90, 0xbf, 0xb6, 0x20, 0x35, 0xa8, 0xe0, - 0x86, 0x40, 0x08, 0x9e, 0xb1, 0x67, 0x5f, 0x68, 0x05, 0x52, 0x87, 0x15, 0xb9, 0xb4, 0x6b, 0xc5, - 0xee, 0x23, 0x58, 0x95, 0x55, 0x00, 0xef, 0xdb, 0x33, 0xe6, 0xf1, 0xa5, 0x86, 0xf4, 0xfa, 0x5f, - 0xec, 0x1c, 0xf5, 0xf6, 0x8d, 0x5e, 0x7f, 0xff, 0xe0, 0x67, 0xc6, 0xb3, 0x5e, 0x7f, 0x5f, 0x68, - 0x78, 0xd2, 0x1f, 0x7c, 0xa9, 0x15, 0xba, 0xe7, 0xb0, 0xb1, 0xe8, 0x7d, 0x23, 0xb9, 0x03, 0x37, - 0x53, 0xc9, 0xfd, 0xde, 0xe0, 0x6c, 0xa7, 0xbf, 0x77, 0x60, 0x1c, 0x1f, 0x9c, 0xe9, 0xbd, 0x3d, - 0x6d, 0x89, 0x2c, 0x43, 0xf1, 0xe8, 0x43, 0xad, 0x80, 0xbf, 0xdb, 0x5a, 0x91, 0x00, 0x2c, 0xef, - 0x9d, 0x0c, 0x7a, 0xfd, 0x03, 0xad, 0xc4, 0xfd, 0xa8, 0xd7, 0xef, 0x1f, 0xe8, 0xc6, 0xa9, 0x7e, - 0xb2, 0xff, 0xd3, 0xbd, 0x33, 0xad, 0xdc, 0xfd, 0x30, 0x7f, 0xa9, 0x89, 0x5d, 0xd9, 0x00, 0xad, - 0xe7, 0xbd, 0x34, 0x1d, 0x66, 0x67, 0x34, 0x6d, 0x89, 0xf7, 0xe5, 0x44, 0xe4, 0x53, 0xad, 0xd0, - 0xfd, 0xe3, 0xfc, 0x6d, 0x15, 0x8a, 0xdc, 0x84, 0x75, 0xf5, 0x5b, 0x8a, 0x6b, 0x4b, 0xb3, 0x8c, - 0xbe, 0x3f, 0xb0, 0xfc, 0x90, 0x6a, 0x05, 0x72, 0x0b, 0x6e, 0xa8, 0x8c, 0x2f, 0x59, 0x3c, 0x16, - 0xac, 0x62, 0xf7, 0xcf, 0xd4, 0xa7, 0x80, 0xf8, 0x12, 0x8d, 0x3b, 0xe2, 0x0c, 0x29, 0x6f, 0x42, - 0x68, 0x52, 0x79, 0x83, 0xb1, 0x9f, 0x38, 0xb6, 0x56, 0x90, 0xad, 0xab, 0xac, 0xe3, 0x24, 0x8a, - 0xb5, 0xe2, 0x02, 0x7d, 0x9c, 0xd1, 0xf7, 0x63, 0xad, 0xd4, 0xfd, 0x45, 0x01, 0xc8, 0xfc, 0x9b, - 0xb6, 0x69, 0x91, 0x94, 0xda, 0xf7, 0x3d, 0x3e, 0x36, 0x77, 0xe0, 0xe6, 0x82, 0x57, 0x70, 0xbe, - 0x8f, 0xee, 0x76, 0x17, 0x6e, 0xcd, 0x33, 0xf7, 0xa9, 0x60, 0x17, 0xb9, 0x6f, 0x2f, 0xd0, 0xcb, - 0xb3, 0x02, 0xd5, 0x4a, 0xdd, 0x3f, 0x55, 0x6d, 0x49, 0x9f, 0x61, 0x4e, 0x77, 0x99, 0x53, 0xf3, - 0xd1, 0xd8, 0x9c, 0x15, 0xf8, 0xd2, 0x0f, 0xf9, 0x50, 0xb4, 0x61, 0x63, 0x9a, 0x7e, 0x8a, 0x0f, - 0x30, 0xb5, 0xe2, 0x02, 0x0e, 0x3e, 0xb0, 0xd0, 0x4a, 0xdd, 0x8f, 0x66, 0x1e, 0x6a, 0xa5, 0xd1, - 0x35, 0x3d, 0xc5, 0x1a, 0x34, 0x38, 0xe1, 0x30, 0x71, 0x9c, 0x98, 0x4e, 0xf8, 0x08, 0xfe, 0x43, - 0x01, 0xaa, 0xe9, 0x55, 0x7f, 0x9e, 0x10, 0x3d, 0x1a, 0x62, 0xaa, 0x5a, 0x22, 0x37, 0x60, 0x0d, - 0x53, 0x1b, 0x1d, 0xc6, 0x27, 0x49, 0x2c, 0xc9, 0x85, 0x34, 0x25, 0xe8, 0x6c, 0x34, 0x56, 0xe8, - 0xc5, 0xb4, 0x81, 0xf4, 0xc2, 0x56, 0x2b, 0x71, 0x0f, 0xc5, 0xf4, 0xe9, 0xc5, 0x2c, 0xa3, 0x96, - 0xf9, 0xa8, 0x4c, 0xa9, 0xcd, 0x58, 0x15, 0x3e, 0x07, 0xa9, 0xc0, 0x3c, 0x7b, 0xb9, 0xbb, 0x05, - 0x0d, 0xf5, 0x89, 0x41, 0xda, 0x22, 0xcf, 0x12, 0xc2, 0xe4, 0xee, 0xa7, 0xb0, 0x36, 0x77, 0x9d, - 0xc9, 0xe3, 0xab, 0xd7, 0x17, 0xa1, 0x71, 0xdc, 0xeb, 0x1b, 0xc7, 0x3b, 0x3f, 0xd3, 0x0a, 0x5c, - 0x76, 0xf7, 0xe8, 0xe4, 0xe4, 0xd8, 0x38, 0xec, 0x1d, 0x9d, 0x1d, 0xe8, 0x5a, 0xb1, 0xdb, 0x9d, - 0x91, 0xc5, 0x3c, 0xc3, 0xf3, 0xc5, 0xc9, 0xde, 0xce, 0x91, 0xb6, 0xc4, 0xc3, 0xf3, 0xf3, 0xa3, - 0x93, 0xdd, 0x9d, 0x23, 0xad, 0xd0, 0xdd, 0x85, 0xb5, 0xb9, 0x4b, 0x1c, 0x3e, 0xe4, 0x87, 0x7e, - 0x68, 0x51, 0x41, 0x12, 0xf9, 0x61, 0x27, 0x89, 0x7d, 0xad, 0xc0, 0xb3, 0x36, 0xb2, 0xc4, 0xba, - 0xc0, 0xbc, 0x91, 0x56, 0xec, 0x7e, 0x06, 0xab, 0x33, 0x35, 0x30, 0xcf, 0x80, 0x87, 0xbe, 0xe3, - 0xf8, 0xaf, 0x38, 0x02, 0x13, 0xe2, 0x69, 0x48, 0x2d, 0x6a, 0xf3, 0xcf, 0x02, 0x4f, 0xd6, 0x7b, - 0x78, 0xcc, 0x1e, 0xeb, 0xfe, 0x2b, 0xad, 0xd8, 0x3d, 0x01, 0x6d, 0xb6, 0xee, 0x24, 0x2b, 0x50, - 0xea, 0x79, 0xb1, 0xb6, 0xc4, 0x0d, 0x3f, 0x74, 0x7c, 0x33, 0x16, 0xe9, 0x6d, 0x9f, 0x5a, 0xcc, - 0x35, 0x1d, 0xad, 0xc8, 0xd7, 0x83, 0x7d, 0x33, 0xa6, 0x7c, 0x57, 0x23, 0xd6, 0xb2, 0xfd, 0x44, - 0x9c, 0xfe, 0x6b, 0x65, 0x9e, 0xfa, 0x66, 0xaa, 0x50, 0xde, 0x05, 0xbe, 0x1b, 0x17, 0xdd, 0xc7, - 0xd6, 0x22, 0xad, 0x80, 0x43, 0xc1, 0x8b, 0x93, 0x48, 0x2b, 0xee, 0x7e, 0xfb, 0xd7, 0xbf, 0xbb, - 0x57, 0xf8, 0xd7, 0xdf, 0xdd, 0x2b, 0xfc, 0xfb, 0xef, 0xee, 0x15, 0xfe, 0xea, 0x3f, 0xee, 0x2d, - 0xc1, 0x0d, 0xcb, 0x77, 0x1f, 0xf2, 0xc2, 0xc5, 0x32, 0x83, 0x87, 0x31, 0xb3, 0xcf, 0x71, 0x29, - 0x3f, 0x2d, 0xfc, 0x6f, 0x00, 0x00, 0x00, 0xff, 0xff, 0xfe, 0x8f, 0xd9, 0xc9, 0xb8, 0x36, 0x00, - 0x00, + // 4836 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x5a, 0x4b, 0x73, 0x1b, 0x49, + 0x72, 0x26, 0x40, 0x90, 0x04, 0x12, 0x0f, 0x36, 0x8b, 0x0f, 0x41, 0xd4, 0x48, 0xa2, 0x30, 0x9a, + 0x19, 0x2e, 0x3c, 0xa3, 0xd1, 0x50, 0xda, 0x79, 0xed, 0x63, 0x86, 0xcf, 0x11, 0x24, 0x12, 0xe4, + 0x36, 0xb8, 0x9a, 0x8d, 0xb0, 0x23, 0x3a, 0x9a, 0xdd, 0x05, 0xb0, 0xc4, 0x7e, 0xa9, 0x1f, 0x12, + 0x38, 0xa7, 0x3d, 0xfb, 0xe4, 0xf0, 0x86, 0x27, 0x7c, 0xf6, 0xc9, 0x0e, 0x3b, 0x7c, 0xf0, 0x1f, + 0xb0, 0x8f, 0x7b, 0x71, 0x84, 0xaf, 0xde, 0x83, 0xc3, 0x31, 0x3e, 0x39, 0xc2, 0xbf, 0xc0, 0x27, + 0x47, 0x65, 0x55, 0x35, 0x0a, 0x04, 0xa4, 0xd1, 0x78, 0xf7, 0xb0, 0x27, 0xa0, 0x33, 0xbf, 0xcc, + 0x7a, 0x65, 0x66, 0x65, 0x65, 0x15, 0x34, 0xe8, 0x90, 0x3a, 0x59, 0x1a, 0xc6, 0xf7, 0xa2, 0x38, + 0x4c, 0x43, 0x52, 0x4a, 0x59, 0x74, 0xb6, 0x6e, 0xd0, 0x61, 0x14, 0xd3, 0x24, 0x61, 0x61, 0x20, + 0xe8, 0xeb, 0xb5, 0xc4, 0x39, 0xa7, 0xbe, 0x2d, 0xbf, 0x56, 0x06, 0xe1, 0x20, 0xc4, 0xbf, 0x1f, + 0xf2, 0x7f, 0x82, 0xda, 0xfa, 0xbb, 0x0a, 0x94, 0xf7, 0xa5, 0x3a, 0x72, 0x17, 0x8a, 0x69, 0xd4, + 0x2c, 0x6c, 0x14, 0x36, 0x1b, 0x5b, 0x8d, 0x7b, 0x5c, 0xeb, 0x3d, 0xce, 0x3b, 0xbd, 0x8c, 0xe8, + 0x4e, 0xe9, 0xb7, 0xff, 0x71, 0x7b, 0xc6, 0x2c, 0xa6, 0x11, 0x69, 0x43, 0x39, 0x3d, 0xf3, 0xac, + 0xc4, 0xb1, 0x83, 0x66, 0x71, 0xa3, 0xb0, 0x59, 0xdd, 0x5a, 0x14, 0xd8, 0x53, 0xfb, 0xcc, 0xa3, + 0x3d, 0xc7, 0x0e, 0xcc, 0x85, 0xf4, 0xcc, 0xe3, 0x7f, 0x38, 0x96, 0xb9, 0x43, 0x81, 0x9d, 0xd5, + 0xb1, 0x9d, 0xc0, 0xa5, 0x43, 0x81, 0x65, 0x2e, 0xfe, 0x21, 0x1f, 0x40, 0x25, 0xa1, 0x1e, 0x75, + 0x52, 0x16, 0x06, 0xcd, 0x92, 0x0e, 0xee, 0x29, 0xb2, 0x39, 0x42, 0x90, 0x07, 0x50, 0xb5, 0x07, + 0x83, 0x98, 0x0e, 0x6c, 0x14, 0x98, 0x43, 0x81, 0x25, 0x21, 0xb0, 0x3d, 0x62, 0x98, 0x3a, 0x8a, + 0xdc, 0x82, 0x52, 0x1a, 0x46, 0xdd, 0xe6, 0x3c, 0xa2, 0x41, 0xf6, 0x3b, 0x8c, 0xba, 0x26, 0xd2, + 0xc9, 0x1d, 0x98, 0xf3, 0x98, 0xcf, 0xd2, 0xe6, 0x02, 0x02, 0xaa, 0x02, 0x70, 0xc8, 0x49, 0xa6, + 0xe0, 0x90, 0x5d, 0x58, 0xa2, 0x43, 0xe7, 0xdc, 0x0e, 0x06, 0xd4, 0x8a, 0xa9, 0x43, 0xd9, 0x0b, + 0x1a, 0x37, 0xcb, 0x08, 0x5f, 0x53, 0x73, 0x26, 0xd8, 0xa6, 0xe4, 0x9a, 0x06, 0xbd, 0x42, 0xe1, + 0xfd, 0x78, 0x16, 0xb2, 0xa0, 0x59, 0xd1, 0xfb, 0xf1, 0x38, 0x64, 0x81, 0x89, 0x74, 0x72, 0x1b, + 0xaa, 0x6a, 0x91, 0x2d, 0xe6, 0x36, 0x61, 0xa3, 0xb0, 0x59, 0x31, 0x41, 0x91, 0x3a, 0x2e, 0x57, + 0x70, 0xc1, 0x3c, 0xaf, 0x59, 0xd5, 0x15, 0x3c, 0x61, 0x9e, 0x67, 0x22, 0x9d, 0xfc, 0x0c, 0x16, + 0xf3, 0x5e, 0x26, 0x34, 0x70, 0x69, 0xdc, 0xac, 0x21, 0x74, 0x65, 0xbc, 0x8f, 0x3d, 0xe4, 0x99, + 0x0d, 0x3a, 0xf6, 0x4d, 0xee, 0x03, 0x9c, 0xc4, 0xe1, 0x33, 0xb9, 0x18, 0x75, 0x94, 0x34, 0x84, + 0xe4, 0x88, 0x6e, 0x6a, 0x18, 0xf2, 0x18, 0x56, 0x22, 0x3b, 0x4e, 0x19, 0xff, 0xb0, 0x52, 0x6e, + 0x09, 0x62, 0xd5, 0x1b, 0x28, 0xdb, 0x94, 0xb2, 0x0a, 0x31, 0x32, 0x15, 0x12, 0x4d, 0xd0, 0xf8, + 0xe0, 0x92, 0x30, 0x4e, 0x9b, 0x8b, 0xfa, 0xe0, 0x7a, 0x61, 0x9c, 0x9a, 0x48, 0x27, 0x77, 0x61, + 0xfe, 0x25, 0x0b, 0xdc, 0xf0, 0x65, 0xd3, 0x40, 0x44, 0x4d, 0x20, 0xbe, 0x46, 0x9a, 0x29, 0x79, + 0xa4, 0x0b, 0x77, 0xfa, 0x2c, 0xa0, 0xd6, 0x20, 0xb6, 0x59, 0x40, 0x5d, 0x2b, 0x39, 0xcf, 0xfa, + 0x7d, 0xde, 0xad, 0x34, 0xa6, 0xb6, 0x6f, 0x39, 0x61, 0x16, 0xa4, 0xcd, 0xa5, 0x8d, 0xc2, 0x66, + 0x49, 0x1a, 0xf7, 0x4d, 0x0e, 0xff, 0x4a, 0xa0, 0x7b, 0x02, 0xdc, 0x43, 0xec, 0x2e, 0x87, 0x92, + 0xc7, 0x70, 0x7b, 0xaa, 0xbe, 0x33, 0x3b, 0x75, 0xce, 0xad, 0x84, 0x7d, 0x43, 0x9b, 0x44, 0xd3, + 0x76, 0x63, 0x52, 0xdb, 0x0e, 0x47, 0xf6, 0xd8, 0x37, 0x94, 0x8f, 0x80, 0x0e, 0x23, 0x3b, 0x70, + 0x9b, 0xcb, 0xfa, 0x08, 0xf6, 0x91, 0x66, 0x4a, 0x1e, 0x79, 0x0f, 0x16, 0xc4, 0xbf, 0xad, 0xe6, + 0x0a, 0xc2, 0xea, 0x3a, 0x6c, 0xcb, 0x54, 0x5c, 0xbe, 0xda, 0x67, 0x71, 0x68, 0xbb, 0x8e, 0x9d, + 0xa4, 0xd6, 0xf3, 0x8c, 0xc6, 0x97, 0xcd, 0x55, 0x7d, 0xb5, 0x77, 0x14, 0xf3, 0x17, 0x9c, 0x67, + 0x36, 0xce, 0xc6, 0xbe, 0xc9, 0x43, 0xa8, 0x31, 0xee, 0x8f, 0x96, 0x17, 0x86, 0x17, 0x59, 0xd4, + 0x6c, 0xea, 0xbe, 0x84, 0x9e, 0x7a, 0x18, 0x86, 0x17, 0xbf, 0x8c, 0xcc, 0x2a, 0x53, 0x1f, 0x59, + 0x44, 0x6e, 0x02, 0x44, 0x76, 0x4c, 0x83, 0xd4, 0x62, 0xee, 0xb0, 0x79, 0x7d, 0xa3, 0xb0, 0x59, + 0x37, 0x2b, 0x82, 0xd2, 0x71, 0x87, 0xe4, 0x04, 0xd6, 0xe8, 0x30, 0xf2, 0x6c, 0x16, 0x58, 0xfd, + 0x30, 0xb6, 0x9c, 0x30, 0x08, 0xa4, 0x39, 0xad, 0xa3, 0xfa, 0xf5, 0x7c, 0x2c, 0x1c, 0x73, 0x10, + 0xc6, 0xbb, 0x39, 0xc2, 0x5c, 0xa1, 0x53, 0xa8, 0xad, 0x7f, 0x98, 0x85, 0xc6, 0xb8, 0xdd, 0x92, + 0x4d, 0x2d, 0x62, 0x91, 0x71, 0xcb, 0x9e, 0x88, 0x5a, 0x4b, 0x34, 0x70, 0x42, 0x97, 0xba, 0x56, + 0x6a, 0x27, 0x17, 0x96, 0x4f, 0x53, 0xbb, 0x59, 0xdc, 0x98, 0xdd, 0xac, 0x99, 0x8b, 0x92, 0x71, + 0x6a, 0x27, 0x17, 0x47, 0x34, 0xb5, 0xc9, 0x47, 0xd0, 0x18, 0xd9, 0xf2, 0x05, 0xbd, 0x4c, 0x9a, + 0xb3, 0x1b, 0xb3, 0x23, 0x4b, 0xdc, 0x1f, 0x46, 0xb1, 0x59, 0xcf, 0x11, 0x4f, 0xe8, 0x65, 0x42, + 0xee, 0xc2, 0x9c, 0x73, 0xce, 0x3c, 0x57, 0x06, 0x2e, 0x2d, 0x7a, 0x72, 0x87, 0x35, 0x05, 0x93, + 0xbc, 0x03, 0x73, 0xe9, 0x65, 0x44, 0x93, 0xe6, 0x1c, 0xea, 0x93, 0xe1, 0xed, 0x80, 0x51, 0xcf, + 0xe5, 0xdd, 0x35, 0x05, 0x97, 0x7c, 0x02, 0x8b, 0xb6, 0xe7, 0x59, 0x7d, 0x4e, 0xb7, 0x84, 0xc0, + 0xfc, 0x74, 0x81, 0xba, 0xed, 0x79, 0xf9, 0x57, 0x42, 0x7e, 0x06, 0x55, 0x27, 0xf4, 0xd5, 0x36, + 0x80, 0x41, 0xac, 0xb1, 0xb5, 0x2a, 0x84, 0x76, 0x47, 0x8c, 0xa3, 0xd0, 0x55, 0x53, 0xa3, 0xe3, + 0xc9, 0x21, 0xac, 0x65, 0x91, 0x72, 0x8f, 0x94, 0x6a, 0x13, 0x55, 0xc6, 0xe6, 0xaf, 0xc9, 0x51, + 0x89, 0xe9, 0xda, 0xb9, 0x4c, 0x69, 0xd2, 0xf3, 0x98, 0x43, 0xcd, 0x65, 0x25, 0xb6, 0x9b, 0x52, + 0x35, 0x8b, 0xad, 0x3f, 0x2f, 0x40, 0x55, 0x33, 0x1e, 0x72, 0x1f, 0x56, 0x84, 0x95, 0x9d, 0xdb, + 0x81, 0xeb, 0x51, 0x2b, 0xec, 0xf7, 0x13, 0x9a, 0x26, 0xcd, 0xc2, 0xc6, 0xec, 0x66, 0xdd, 0x24, + 0xc8, 0x7b, 0x84, 0xac, 0x63, 0xc1, 0xe1, 0x16, 0x76, 0x41, 0x69, 0x64, 0x85, 0x31, 0x8f, 0x5f, + 0x7c, 0xaf, 0x29, 0x9b, 0x15, 0x4e, 0x39, 0xe6, 0x04, 0xbe, 0xb9, 0xe0, 0xb4, 0xc6, 0x34, 0x90, + 0x0b, 0x74, 0x75, 0xda, 0x73, 0x7e, 0xeb, 0x53, 0x58, 0x9a, 0xe8, 0x36, 0x79, 0x1b, 0xea, 0xba, + 0x4d, 0x88, 0xae, 0xd4, 0xcc, 0x9a, 0x66, 0x0f, 0x49, 0xeb, 0x77, 0x05, 0x30, 0xae, 0x46, 0xf4, + 0xe9, 0xd6, 0x54, 0x98, 0x6e, 0x4d, 0xf7, 0xa1, 0xaa, 0xaf, 0x64, 0x71, 0xfa, 0x4a, 0x42, 0x7f, + 0xb4, 0x8c, 0x2d, 0xb4, 0xea, 0xd9, 0x57, 0x59, 0x35, 0xda, 0xf3, 0x1e, 0xdc, 0x0e, 0x63, 0x36, + 0x60, 0x81, 0xed, 0xe1, 0x5a, 0x45, 0xb1, 0x1b, 0x3a, 0x19, 0x8d, 0xb5, 0xfe, 0x94, 0xb0, 0x3f, + 0x37, 0x14, 0x6c, 0x37, 0xa5, 0x27, 0x12, 0x94, 0xaf, 0xd1, 0x6f, 0x66, 0xa1, 0xb6, 0xdd, 0xed, + 0x62, 0x18, 0xe8, 0x04, 0xfd, 0x90, 0x7c, 0x02, 0x80, 0xf1, 0x03, 0x3b, 0x3b, 0xee, 0x58, 0x0a, + 0xa7, 0x39, 0x56, 0xe5, 0xb9, 0x22, 0x90, 0x0e, 0x2c, 0xba, 0x2c, 0x49, 0xed, 0xc0, 0xa1, 0xbc, + 0xf5, 0x98, 0x39, 0xb8, 0x60, 0x0d, 0xe5, 0xe7, 0x4f, 0xa9, 0x93, 0x86, 0xf1, 0x9e, 0x84, 0x1c, + 0x21, 0x42, 0x6a, 0x69, 0xb8, 0x63, 0x54, 0x72, 0x1d, 0xe6, 0xd2, 0x30, 0xb2, 0x2e, 0x70, 0x06, + 0xea, 0x12, 0xc4, 0xf7, 0xe7, 0x27, 0xe4, 0x1d, 0x6e, 0xe0, 0x5e, 0xe6, 0x07, 0x56, 0x60, 0xfb, + 0x14, 0x9d, 0xad, 0x22, 0x01, 0x20, 0x18, 0x5d, 0xdb, 0xa7, 0xe4, 0x0e, 0x54, 0x24, 0x8c, 0xb9, + 0x98, 0x19, 0xcc, 0x4a, 0x50, 0x59, 0x90, 0x71, 0x03, 0xad, 0xc6, 0xb4, 0x6f, 0xbd, 0xa0, 0x8e, + 0xd5, 0x7f, 0xb0, 0x85, 0x09, 0x41, 0xcd, 0xac, 0xc4, 0xb4, 0xff, 0x94, 0x3a, 0x07, 0x0f, 0xb6, + 0xc8, 0x6d, 0x28, 0x0b, 0x6b, 0x65, 0x2e, 0xee, 0xee, 0x4a, 0xc3, 0x02, 0x52, 0x3b, 0x3c, 0x38, + 0xd7, 0x7c, 0x7b, 0x68, 0xa9, 0xbe, 0xe3, 0x1e, 0x5d, 0x50, 0x5e, 0xe5, 0xdb, 0x43, 0x35, 0x54, + 0xd2, 0x86, 0xc6, 0x79, 0x90, 0xbc, 0xb4, 0x68, 0xdf, 0x4a, 0xa8, 0x1d, 0x3b, 0xe7, 0x18, 0xcc, + 0xd5, 0xb8, 0x6a, 0x9c, 0xb7, 0xdf, 0xef, 0x21, 0xe7, 0x71, 0xa9, 0xbc, 0x60, 0x94, 0x5b, 0xdf, + 0xce, 0x42, 0xed, 0xe0, 0xb4, 0xf7, 0x46, 0xab, 0xa2, 0x70, 0xd3, 0x57, 0x45, 0x1f, 0x45, 0x71, + 0xda, 0x28, 0xda, 0xb0, 0x20, 0xa6, 0x44, 0xc5, 0x38, 0x43, 0x45, 0x0b, 0x9c, 0xa7, 0xa0, 0x1f, + 0x9a, 0x0a, 0x40, 0xee, 0x40, 0x4d, 0x9b, 0xfc, 0x04, 0xed, 0xab, 0x62, 0x56, 0x47, 0xf3, 0x9e, + 0x90, 0xb7, 0xf3, 0x8e, 0xd2, 0x61, 0x8a, 0x33, 0x5f, 0x19, 0xef, 0x14, 0x1d, 0xa6, 0xe4, 0x03, + 0x58, 0x94, 0xa0, 0xf0, 0x82, 0x06, 0xec, 0x1b, 0x1a, 0xe3, 0xf4, 0x2b, 0x64, 0x43, 0x20, 0x15, + 0x8f, 0x2c, 0x2b, 0x73, 0x00, 0xdc, 0x62, 0x84, 0x21, 0x7c, 0xaa, 0x1a, 0xea, 0x67, 0x81, 0x83, + 0x13, 0xda, 0xd8, 0x5a, 0x96, 0x89, 0x82, 0x63, 0x7b, 0x76, 0x7c, 0x90, 0x05, 0x4e, 0x8f, 0x0d, + 0xc6, 0x5a, 0xe7, 0x34, 0xf2, 0x39, 0xd4, 0xcf, 0xc2, 0xd0, 0xa3, 0x76, 0x20, 0x77, 0xca, 0x35, + 0x8c, 0xd8, 0xab, 0xf9, 0x74, 0xee, 0x08, 0xae, 0xd8, 0x2a, 0x6b, 0x67, 0xda, 0x57, 0xeb, 0xdb, + 0x02, 0x2c, 0x89, 0x99, 0xb1, 0x63, 0x0c, 0x6d, 0xb8, 0x3a, 0x3f, 0x05, 0x10, 0x93, 0xac, 0xad, + 0xce, 0x35, 0x7d, 0x1a, 0x25, 0x58, 0x5f, 0x22, 0xa6, 0x08, 0xe4, 0x73, 0x68, 0xf4, 0xd3, 0x44, + 0xf4, 0xc5, 0x62, 0x41, 0x3f, 0x94, 0x5b, 0xc8, 0x95, 0xf5, 0xe5, 0x2d, 0x3d, 0x9a, 0x31, 0x6b, + 0xfd, 0x34, 0xc9, 0xbf, 0x77, 0x16, 0x60, 0x0e, 0x15, 0xb5, 0xfe, 0x75, 0x0e, 0x2a, 0xa3, 0xfc, + 0xe9, 0x36, 0x94, 0x45, 0x06, 0xc6, 0x5c, 0xec, 0x4e, 0xbe, 0xea, 0x48, 0x1d, 0x5f, 0xf5, 0xe2, + 0xf7, 0xad, 0x7a, 0x13, 0x4a, 0x2e, 0x4d, 0x1c, 0x74, 0xc6, 0xb2, 0x72, 0x46, 0x4e, 0x21, 0xef, + 0x03, 0x89, 0x62, 0xe6, 0xdb, 0xf1, 0xa5, 0x95, 0x7b, 0x9b, 0xb0, 0x8a, 0x59, 0xd3, 0x90, 0x1c, + 0xa9, 0xd1, 0x4d, 0xc8, 0x97, 0x60, 0x04, 0x74, 0x98, 0x5a, 0x31, 0xb5, 0x5d, 0x8b, 0x06, 0x03, + 0x16, 0x50, 0x34, 0x90, 0x86, 0x6a, 0x7c, 0x1f, 0x69, 0xda, 0x24, 0x35, 0x38, 0xde, 0xa4, 0xb6, + 0x2b, 0x38, 0xe4, 0x7d, 0x98, 0x8f, 0x79, 0x0c, 0x54, 0xbb, 0xa1, 0x8c, 0xf6, 0x4f, 0xe8, 0xa5, + 0xc9, 0xc9, 0x52, 0x4a, 0x62, 0xc8, 0x67, 0x70, 0x5d, 0xf5, 0x2e, 0x8a, 0x69, 0x9f, 0x0d, 0xf5, + 0x4e, 0x2e, 0x60, 0x27, 0xd7, 0x24, 0xe0, 0x04, 0xf9, 0xa3, 0xae, 0x8e, 0xef, 0x3b, 0xe5, 0xab, + 0xfb, 0xce, 0x06, 0xd4, 0x58, 0x62, 0xf5, 0x79, 0xae, 0x85, 0x29, 0x6e, 0x05, 0x01, 0xc0, 0x92, + 0x03, 0x3b, 0x49, 0x71, 0x01, 0x8e, 0xe0, 0x66, 0x94, 0x25, 0xe7, 0xd4, 0xb5, 0xdc, 0xf0, 0x65, + 0x60, 0xf5, 0x99, 0x97, 0x52, 0x4c, 0x81, 0x5c, 0xcc, 0x18, 0x92, 0x26, 0x4c, 0xe4, 0x13, 0xeb, + 0x42, 0x60, 0x2f, 0x7c, 0x19, 0x1c, 0x20, 0x7c, 0x37, 0x47, 0x93, 0x5d, 0x58, 0x8e, 0xb3, 0x20, + 0x65, 0x3e, 0x55, 0xaa, 0x3c, 0x96, 0xa4, 0xcd, 0x2a, 0x2a, 0x91, 0x56, 0x6f, 0x0a, 0x80, 0x90, + 0x35, 0x97, 0x62, 0xfd, 0xf3, 0x90, 0x25, 0xdc, 0xeb, 0x0c, 0x1e, 0xaf, 0x5e, 0xda, 0x2c, 0xb5, + 0x50, 0x95, 0x9f, 0xe0, 0x91, 0x60, 0x4e, 0xce, 0x5b, 0xdd, 0xb7, 0x87, 0x5f, 0xdb, 0x2c, 0x3d, + 0x65, 0x3e, 0x3d, 0x4a, 0xc8, 0x87, 0x50, 0xb1, 0x03, 0xe5, 0x22, 0x75, 0xdd, 0x22, 0xf5, 0xfd, + 0xc2, 0x2c, 0xdb, 0x81, 0xf0, 0x0d, 0xf2, 0x04, 0x56, 0xb3, 0x84, 0xba, 0x72, 0x96, 0xed, 0xd8, + 0x42, 0xcb, 0xa4, 0x49, 0xb3, 0xa1, 0xe7, 0x0e, 0x13, 0xde, 0x63, 0x2e, 0x73, 0xa9, 0x31, 0x32, + 0x4d, 0x5a, 0xff, 0x53, 0x02, 0x32, 0x79, 0x58, 0xf8, 0xe3, 0x34, 0xec, 0xd7, 0x1a, 0xda, 0xdc, + 0x6b, 0x0d, 0xed, 0x6d, 0x18, 0xa5, 0x91, 0x08, 0x9f, 0x47, 0x78, 0x2d, 0x27, 0x72, 0xd0, 0x55, + 0x73, 0x5b, 0xf8, 0xe1, 0xe6, 0x56, 0xfe, 0x43, 0x98, 0x5b, 0xe5, 0xf7, 0x36, 0x37, 0x78, 0x43, + 0x73, 0xab, 0xfe, 0x3e, 0xe6, 0x56, 0xfb, 0x7f, 0x98, 0xdb, 0xff, 0xce, 0x41, 0x89, 0x9f, 0xbe, + 0xc9, 0x47, 0x50, 0xe1, 0xe7, 0x6f, 0x3d, 0x92, 0x37, 0x46, 0x87, 0x73, 0x2d, 0x36, 0x95, 0x9f, + 0xc9, 0x6f, 0xf2, 0x73, 0x68, 0xa0, 0x08, 0x3f, 0x9c, 0x0b, 0xb9, 0xa2, 0xbe, 0x3f, 0x73, 0xb9, + 0x2b, 0x45, 0x94, 0xda, 0x33, 0x8d, 0xf6, 0x43, 0xb2, 0x58, 0x9e, 0xd7, 0xb0, 0x20, 0xa0, 0x31, + 0x9e, 0xb8, 0x4a, 0x7a, 0x5e, 0x83, 0x64, 0x7e, 0xec, 0xba, 0x0f, 0x0d, 0x8f, 0xf6, 0x53, 0x0b, + 0xfb, 0x84, 0x67, 0x97, 0xb9, 0x89, 0xc5, 0xaf, 0x71, 0x04, 0xef, 0x18, 0x1e, 0x5d, 0xb6, 0x60, + 0x31, 0x66, 0x83, 0x73, 0x5d, 0x64, 0x7e, 0xf2, 0xb8, 0x83, 0x90, 0x5c, 0xe6, 0x3e, 0x54, 0xa3, + 0x38, 0x3c, 0xa3, 0x32, 0xa7, 0x5d, 0x78, 0x45, 0x4e, 0x8b, 0x18, 0x91, 0xd3, 0xde, 0x87, 0xea, + 0x59, 0xc6, 0xf2, 0x2c, 0xb8, 0xfc, 0x0a, 0x09, 0xc4, 0x08, 0x89, 0x07, 0xb0, 0x88, 0x23, 0xd1, + 0xec, 0xb8, 0x32, 0xd1, 0x2f, 0x1c, 0xac, 0x66, 0xbb, 0x3f, 0x06, 0x43, 0x0c, 0xe6, 0xb5, 0xc1, + 0x56, 0x0c, 0x78, 0x5c, 0x2c, 0x4c, 0xcf, 0xc7, 0x9d, 0xa6, 0x3a, 0x29, 0x86, 0x18, 0x4d, 0xec, + 0x11, 0xdc, 0x10, 0x62, 0xf4, 0xb9, 0x26, 0x69, 0xf5, 0xe3, 0xd0, 0xb7, 0x58, 0x20, 0x4d, 0x51, + 0xd7, 0x70, 0x0d, 0xe1, 0xfb, 0xcf, 0x47, 0x3a, 0x0e, 0xe2, 0xd0, 0xef, 0x04, 0xe4, 0x21, 0x5c, + 0x63, 0x89, 0x15, 0x64, 0x9e, 0x67, 0xd9, 0x2f, 0xed, 0x98, 0x5a, 0x09, 0xf5, 0x19, 0xae, 0x08, + 0x06, 0xdf, 0xb2, 0xb9, 0xcc, 0x92, 0x6e, 0xe6, 0x79, 0xdb, 0x9c, 0xd9, 0xa3, 0x3e, 0x43, 0x73, + 0x7d, 0x85, 0xa7, 0x36, 0x7e, 0x88, 0xa7, 0xb6, 0xfe, 0xbb, 0x08, 0xf5, 0x31, 0x10, 0x59, 0x81, + 0xa2, 0x0c, 0xb0, 0xca, 0x5b, 0x8b, 0xcc, 0x25, 0x0f, 0xc1, 0x48, 0xc2, 0x2c, 0x76, 0xa8, 0x45, + 0x87, 0x91, 0x6c, 0xa9, 0x38, 0xb9, 0x20, 0x02, 0xc3, 0xff, 0x63, 0x1c, 0x78, 0x08, 0x46, 0x6a, + 0xc7, 0x03, 0x9a, 0x6a, 0x52, 0x93, 0xa7, 0xe9, 0x86, 0xc0, 0xe4, 0x52, 0x5b, 0x40, 0xf2, 0xb6, + 0x46, 0x65, 0x30, 0x3d, 0xdd, 0x37, 0x54, 0x3b, 0x79, 0x49, 0x6c, 0x0b, 0x48, 0xde, 0xd2, 0x48, + 0x46, 0xcf, 0x41, 0x0d, 0xd5, 0x4a, 0x2e, 0xf3, 0x31, 0x2c, 0xc4, 0x7d, 0xe1, 0xb5, 0xf3, 0x7a, + 0xde, 0x36, 0x36, 0x1f, 0x9a, 0xeb, 0xce, 0xc7, 0x7d, 0x74, 0x5a, 0x21, 0xe7, 0x87, 0x2e, 0x95, + 0x87, 0xec, 0x69, 0x72, 0xda, 0x31, 0x7b, 0x3e, 0xee, 0xf3, 0xaf, 0xd6, 0xbf, 0x17, 0xa0, 0x92, + 0x97, 0x3e, 0xbf, 0x7f, 0x3b, 0xfb, 0x83, 0xa6, 0xef, 0x6a, 0xbf, 0x2b, 0x4d, 0xec, 0x77, 0x6b, + 0x30, 0x9f, 0x05, 0xec, 0x79, 0x26, 0x12, 0xb2, 0xb2, 0x29, 0xbf, 0x5e, 0xb1, 0x0f, 0xce, 0x4f, + 0xdf, 0x07, 0x5b, 0xbf, 0x29, 0x40, 0x25, 0xaf, 0xd4, 0x92, 0x36, 0x80, 0xe6, 0x4b, 0x85, 0x89, + 0x15, 0xd7, 0xb8, 0xe4, 0x21, 0x34, 0xe2, 0x28, 0xd0, 0x7d, 0x4f, 0xd8, 0x95, 0x2c, 0x77, 0x99, + 0x51, 0x20, 0x63, 0x50, 0x14, 0x68, 0xce, 0x97, 0x97, 0x5c, 0x66, 0x5f, 0x53, 0x72, 0x69, 0xfd, + 0xba, 0xa0, 0x97, 0x32, 0xc9, 0x06, 0xcc, 0x71, 0x3b, 0x9c, 0xd6, 0x23, 0xc1, 0x20, 0x6d, 0xa8, + 0xf0, 0xce, 0x08, 0xd4, 0xd4, 0x7e, 0x94, 0x63, 0xf1, 0xe7, 0x4d, 0xbb, 0xf0, 0x2f, 0x45, 0xa8, + 0x6a, 0x15, 0x69, 0xf2, 0x0e, 0x94, 0x07, 0x71, 0x98, 0x45, 0xd6, 0xd9, 0xe5, 0x94, 0x6e, 0x2c, + 0x20, 0x6f, 0xe7, 0x92, 0xc3, 0xec, 0xc1, 0x40, 0x1c, 0x70, 0x26, 0xfd, 0x6c, 0xc1, 0x1e, 0x0c, + 0xf0, 0x3c, 0xb3, 0x01, 0x65, 0x51, 0x7b, 0xa1, 0xee, 0x58, 0x2a, 0x93, 0x53, 0xc9, 0x87, 0x50, + 0xe3, 0x23, 0xca, 0xdb, 0x2c, 0x4d, 0x1b, 0x14, 0xc4, 0x51, 0xf0, 0x95, 0x6c, 0x59, 0x0a, 0xe4, + 0xad, 0xcf, 0xbd, 0x4a, 0x60, 0x5b, 0xf6, 0x21, 0x9f, 0x87, 0xf9, 0xd7, 0x55, 0xbf, 0x3e, 0x83, + 0x5a, 0x14, 0x53, 0x54, 0x3b, 0xe9, 0x39, 0xa7, 0xec, 0xc0, 0xb3, 0x93, 0xf3, 0x93, 0x98, 0x6e, + 0x0f, 0x06, 0xdc, 0x57, 0xf8, 0xee, 0xa1, 0xfe, 0xb7, 0xfe, 0xa6, 0x00, 0xa5, 0xd3, 0x30, 0xea, + 0x92, 0xf7, 0xa0, 0x8c, 0x59, 0xf9, 0x68, 0xee, 0x64, 0xe9, 0x74, 0xe7, 0xb2, 0x93, 0x52, 0xdf, + 0x5c, 0x40, 0xee, 0xce, 0x25, 0x59, 0x57, 0x95, 0xfc, 0xa2, 0x56, 0x93, 0x95, 0x25, 0xfc, 0x37, + 0x5a, 0x36, 0x3e, 0x0b, 0xa3, 0xe4, 0x2c, 0x9f, 0xb6, 0xf1, 0xe6, 0xaa, 0x39, 0x62, 0xe7, 0xb2, + 0xf5, 0x4f, 0x05, 0x98, 0xc3, 0xab, 0x82, 0x51, 0xe3, 0x85, 0xd7, 0x34, 0x5e, 0xfc, 0x21, 0x8d, + 0xcf, 0x7e, 0x4f, 0xe3, 0xe4, 0x63, 0x58, 0x4a, 0xe3, 0x2c, 0x70, 0xec, 0x94, 0xf2, 0x3d, 0x1c, + 0xed, 0x57, 0x76, 0x79, 0x6c, 0x0b, 0x53, 0xa0, 0x27, 0xf4, 0x92, 0x13, 0x5a, 0x5f, 0x42, 0xe9, + 0x09, 0xf3, 0x3c, 0xf2, 0x16, 0xcc, 0x3b, 0x61, 0x10, 0x74, 0xf6, 0xc6, 0xfa, 0x2c, 0x69, 0x7c, + 0x40, 0x22, 0x35, 0x2b, 0x6a, 0x16, 0x26, 0x48, 0xad, 0x6d, 0x58, 0x99, 0x56, 0xc4, 0x25, 0x3f, + 0x82, 0xfa, 0xa8, 0xe8, 0xab, 0x42, 0x9c, 0x52, 0x5c, 0x1b, 0xb1, 0x3a, 0x6e, 0xeb, 0xef, 0x67, + 0xa1, 0xa9, 0x66, 0x40, 0xfc, 0xb2, 0x30, 0xe8, 0x65, 0x3e, 0x0f, 0x30, 0xa4, 0x0d, 0x4b, 0xb8, + 0xc3, 0x45, 0x71, 0xe8, 0xd0, 0x84, 0xe7, 0x7c, 0x18, 0x50, 0x0a, 0x9b, 0x25, 0x73, 0x91, 0x33, + 0x4e, 0x14, 0xbd, 0xcb, 0x9d, 0x77, 0x29, 0xc8, 0x7c, 0x0e, 0x75, 0x33, 0x87, 0xba, 0x56, 0x1c, + 0xbe, 0x4c, 0x84, 0x05, 0x98, 0x8b, 0x41, 0xe6, 0x9f, 0x48, 0xba, 0x19, 0xbe, 0x4c, 0xc8, 0x3b, + 0xd0, 0xe0, 0x58, 0x96, 0xd2, 0xd8, 0x16, 0x51, 0x67, 0x16, 0x81, 0xf5, 0x20, 0xf3, 0x3b, 0x39, + 0xf1, 0xea, 0x55, 0x4c, 0x69, 0xe2, 0x2a, 0x66, 0x03, 0xaa, 0x4e, 0x18, 0x38, 0x59, 0x1c, 0xd3, + 0xc0, 0xb9, 0xc4, 0x10, 0x5a, 0x32, 0x75, 0x12, 0x39, 0x84, 0x95, 0x94, 0xf5, 0xb9, 0x79, 0x63, + 0x06, 0xcf, 0x03, 0x1d, 0xd6, 0x47, 0xe6, 0xf5, 0xbb, 0x11, 0xe9, 0x00, 0x7c, 0x63, 0xd8, 0x15, + 0xfc, 0x47, 0x33, 0x26, 0x91, 0x72, 0x1a, 0x95, 0xf7, 0x3b, 0xce, 0xb8, 0x8e, 0x24, 0xf3, 0xa3, + 0x54, 0xd5, 0x79, 0x6b, 0x66, 0x3d, 0xce, 0x76, 0x47, 0x44, 0xf2, 0x78, 0xd4, 0x28, 0x26, 0xe1, + 0x89, 0x98, 0x4e, 0x79, 0x55, 0x35, 0xde, 0x28, 0x4f, 0xc4, 0xe5, 0x74, 0xe7, 0x4d, 0x6a, 0xb4, + 0x9d, 0x1a, 0xc0, 0x1e, 0x4d, 0x6d, 0xe6, 0xf1, 0x1d, 0xa5, 0x35, 0x80, 0x15, 0x29, 0x97, 0xaf, + 0x15, 0xd6, 0x41, 0x8e, 0x61, 0x99, 0x2a, 0x82, 0x6c, 0x8e, 0x51, 0x15, 0x69, 0x6f, 0x8d, 0xdb, + 0xf9, 0xd5, 0x55, 0x36, 0x09, 0x1d, 0xa7, 0x30, 0x9a, 0xb4, 0xfe, 0x0c, 0xd6, 0x65, 0x43, 0x26, + 0x1d, 0xb0, 0x30, 0xe8, 0x66, 0xfe, 0x71, 0xbf, 0x13, 0xc8, 0xba, 0xda, 0x6d, 0xa8, 0x32, 0xf9, + 0x5f, 0x59, 0x57, 0xc5, 0x04, 0x45, 0xea, 0xb8, 0xfc, 0x18, 0x1f, 0xa3, 0x9c, 0x15, 0x64, 0xbe, + 0xb4, 0x82, 0x4a, 0xac, 0x34, 0xb5, 0xfe, 0x99, 0x00, 0x99, 0x9c, 0x74, 0xf2, 0x10, 0x56, 0x5c, + 0xbf, 0xcf, 0xe4, 0xfd, 0x55, 0x40, 0x5d, 0x2b, 0xb2, 0x9d, 0x0b, 0x69, 0x71, 0x3b, 0xc5, 0x66, + 0xc1, 0x24, 0x82, 0xdf, 0x13, 0xec, 0x13, 0xce, 0xd5, 0xa5, 0x2e, 0x58, 0x14, 0xe5, 0x52, 0xc5, + 0x09, 0x29, 0xc1, 0x16, 0x52, 0x9f, 0x40, 0x53, 0x4a, 0xb9, 0x76, 0x6a, 0xe7, 0x0d, 0xa2, 0xd5, + 0x0a, 0x63, 0x5c, 0x15, 0xfc, 0x3d, 0x3b, 0xb5, 0x65, 0x7b, 0x68, 0xbb, 0x57, 0x05, 0x65, 0x9b, + 0x28, 0x58, 0x9a, 0x10, 0x14, 0x5c, 0x14, 0xfc, 0x14, 0xae, 0xa5, 0x61, 0x6a, 0x7b, 0x96, 0x14, + 0x8f, 0x13, 0xcb, 0x0b, 0x6d, 0x97, 0x9f, 0xce, 0xe6, 0xf2, 0xae, 0x2e, 0x23, 0x64, 0x0f, 0x11, + 0x66, 0x72, 0x18, 0xda, 0x2e, 0x9e, 0xd0, 0x56, 0xc6, 0x25, 0xa9, 0x10, 0x9b, 0xc7, 0xe6, 0x96, + 0x74, 0x11, 0x8a, 0x02, 0x3f, 0x56, 0x4d, 0x89, 0xbc, 0x3f, 0x09, 0xec, 0x28, 0x39, 0x0f, 0x53, + 0x2e, 0xb3, 0x80, 0x32, 0x42, 0xdf, 0x0e, 0xe7, 0xf6, 0x24, 0xf3, 0x08, 0xcf, 0xc4, 0x5e, 0xe8, + 0xd8, 0x9e, 0x25, 0x56, 0x2a, 0x41, 0x83, 0x2d, 0x99, 0x35, 0x24, 0x0a, 0x3b, 0x40, 0xdf, 0x8d, + 0xa9, 0x1f, 0xa6, 0x34, 0x47, 0x55, 0x84, 0xef, 0x0a, 0xaa, 0x82, 0xbd, 0x0b, 0x8b, 0x59, 0x42, + 0x63, 0xd1, 0xd7, 0xb3, 0xcb, 0x94, 0x8a, 0x33, 0x68, 0xc9, 0xac, 0x73, 0x32, 0xef, 0x27, 0xde, + 0x06, 0x90, 0x8f, 0x60, 0x55, 0x74, 0xd5, 0xa3, 0x76, 0x1c, 0x28, 0x01, 0x3f, 0xc1, 0x93, 0x68, + 0xc9, 0x24, 0xc8, 0x3c, 0x14, 0x3c, 0x39, 0xba, 0x9f, 0xc2, 0x0d, 0x97, 0x25, 0x7c, 0x2f, 0x43, + 0xac, 0x63, 0x3b, 0xe7, 0xd4, 0x3a, 0x67, 0xa9, 0x6c, 0xa6, 0x86, 0x82, 0xd7, 0x04, 0x84, 0x8b, + 0xec, 0x72, 0xc0, 0x23, 0x96, 0x8a, 0x06, 0x7f, 0x0e, 0x6f, 0x4d, 0x4a, 0xfb, 0x2c, 0x49, 0xa4, + 0x78, 0x1d, 0xc5, 0x9b, 0x57, 0xc4, 0x8f, 0x58, 0x92, 0x08, 0xf9, 0x8f, 0xa1, 0x79, 0x75, 0x19, + 0x9d, 0x73, 0xea, 0x5c, 0xf0, 0x3e, 0x37, 0xb4, 0xc9, 0x55, 0x6b, 0xb8, 0xcb, 0x99, 0x47, 0x09, + 0xcf, 0xe8, 0x92, 0xd4, 0x56, 0xab, 0xa7, 0xe6, 0x6e, 0x11, 0x25, 0x0c, 0xe4, 0xf0, 0xc6, 0xd4, + 0xf4, 0xad, 0x43, 0x39, 0xa1, 0x03, 0x9f, 0x06, 0x69, 0x82, 0x37, 0xad, 0x25, 0x33, 0xff, 0x16, + 0xce, 0x65, 0xab, 0x8b, 0x93, 0x25, 0xe5, 0x5c, 0xb6, 0xb8, 0x35, 0xe1, 0x6c, 0x97, 0x7a, 0xa9, + 0x2d, 0x4c, 0x92, 0x08, 0x36, 0x52, 0xd0, 0x0c, 0x6f, 0x43, 0x55, 0xb0, 0xc5, 0x70, 0x97, 0x91, + 0x2f, 0x24, 0xc4, 0x00, 0xdf, 0x85, 0x45, 0xff, 0x85, 0xe3, 0x58, 0x2c, 0x88, 0xb2, 0x54, 0x28, + 0x59, 0x11, 0x2b, 0xc7, 0xc9, 0x1d, 0x4e, 0x45, 0x45, 0x9b, 0x60, 0x68, 0x38, 0xa1, 0x6d, 0x15, + 0x81, 0x8d, 0x1c, 0x28, 0x34, 0x2a, 0x64, 0x98, 0xa5, 0xb9, 0xca, 0xb5, 0x11, 0xf2, 0x18, 0xc9, + 0xa8, 0x73, 0x03, 0x6a, 0x9e, 0x8f, 0x3e, 0x25, 0x50, 0xd7, 0x44, 0xef, 0x3c, 0x9f, 0x3b, 0x12, + 0x22, 0x7e, 0x02, 0xeb, 0xba, 0x69, 0x63, 0xe3, 0xf2, 0xde, 0xcc, 0x4f, 0xf0, 0xfa, 0xb4, 0x64, + 0x5e, 0x1b, 0x59, 0x77, 0x67, 0xc4, 0x3f, 0xd2, 0x8c, 0x4d, 0x08, 0x9f, 0xb1, 0xd4, 0xb7, 0x23, + 0x2e, 0x77, 0x5d, 0x33, 0x36, 0x94, 0xdb, 0x41, 0xd6, 0x51, 0x42, 0x3e, 0x80, 0x65, 0x9f, 0x05, + 0x96, 0xf0, 0x8b, 0x51, 0x43, 0xeb, 0x62, 0xdd, 0x7c, 0x16, 0x1c, 0x72, 0x4e, 0x4f, 0xb5, 0xc0, + 0xe1, 0xf6, 0x70, 0x02, 0x7e, 0x43, 0xc2, 0xed, 0xe1, 0x38, 0xfc, 0x43, 0x58, 0xe1, 0xda, 0xa5, + 0x43, 0x8d, 0xf0, 0x6f, 0x09, 0xcf, 0xf6, 0x59, 0x60, 0x22, 0x6b, 0x4c, 0xc0, 0x1e, 0x4e, 0x0a, + 0xdc, 0x94, 0x02, 0xf6, 0xf0, 0x8a, 0xc0, 0x09, 0x2c, 0x4b, 0x5b, 0xb3, 0xc2, 0xbe, 0xa5, 0x42, + 0x74, 0xf3, 0x16, 0xee, 0x0c, 0x1b, 0x63, 0x5b, 0xd1, 0x94, 0x48, 0x6f, 0x2e, 0x49, 0x61, 0x2d, + 0xf8, 0x8f, 0x02, 0x20, 0x2e, 0xea, 0x58, 0xe4, 0xbc, 0xad, 0x07, 0xc0, 0xa3, 0x17, 0x8e, 0x33, + 0x3d, 0x72, 0x0a, 0x41, 0x3d, 0x72, 0x6e, 0x4c, 0x08, 0x6a, 0x91, 0xf3, 0x4b, 0xb8, 0x29, 0x05, + 0x3d, 0x5f, 0x9d, 0xb6, 0xc7, 0x9a, 0xbd, 0x83, 0xd2, 0xd7, 0x05, 0xe8, 0xd0, 0x17, 0x67, 0x40, + 0xbd, 0xe9, 0xa9, 0x1a, 0xf4, 0xf6, 0x5b, 0x53, 0x35, 0x68, 0x7d, 0xf8, 0x02, 0x6e, 0x0a, 0xd3, + 0x79, 0x81, 0xb7, 0x69, 0x16, 0x73, 0x87, 0x22, 0x7c, 0x63, 0xc5, 0x21, 0x79, 0xd0, 0x74, 0x45, + 0xdc, 0x40, 0x90, 0xb8, 0x71, 0xeb, 0xb8, 0x43, 0x1e, 0xc0, 0x0f, 0xe2, 0xd0, 0xef, 0x3d, 0x20, + 0xbb, 0x70, 0xfb, 0x35, 0x0a, 0x5c, 0x96, 0x5c, 0x34, 0x29, 0xaa, 0x58, 0x9f, 0xae, 0x62, 0x8f, + 0x25, 0x17, 0x64, 0x1f, 0x36, 0x5e, 0xa3, 0x04, 0x63, 0x59, 0xb3, 0x8f, 0x5a, 0x6e, 0x4c, 0xd7, + 0x82, 0xc1, 0xec, 0xd5, 0x83, 0x51, 0xe5, 0xc2, 0xc1, 0xab, 0x06, 0x23, 0x6b, 0x86, 0xd3, 0x06, + 0x23, 0x6e, 0xd8, 0x72, 0x15, 0xe7, 0xd3, 0x06, 0x23, 0xee, 0xda, 0xa4, 0x92, 0x63, 0x78, 0xe7, + 0x55, 0x4a, 0x5e, 0xb0, 0x84, 0xa5, 0x3c, 0xdd, 0x0c, 0x5d, 0x9a, 0x34, 0x19, 0xaa, 0xda, 0x98, + 0xa6, 0xea, 0xa9, 0x00, 0x76, 0x39, 0x8e, 0xf4, 0xe0, 0xbd, 0x57, 0x29, 0x74, 0x59, 0xe2, 0xd8, + 0xb1, 0x9b, 0xab, 0x7c, 0x86, 0x2a, 0x5b, 0xd3, 0x54, 0xee, 0x29, 0xa8, 0x50, 0x7a, 0x00, 0x77, + 0x26, 0x94, 0x62, 0xf8, 0x7d, 0x41, 0x9d, 0x7c, 0xb0, 0x17, 0xd3, 0xe6, 0x9c, 0xc7, 0xf3, 0xa7, + 0xd4, 0x91, 0xa3, 0x3d, 0x84, 0xbb, 0xd3, 0xf5, 0x60, 0x5d, 0x2a, 0xc9, 0x55, 0x79, 0xa8, 0xea, + 0xd6, 0xa4, 0xaa, 0x63, 0xc4, 0x09, 0x6d, 0xad, 0xbf, 0x2d, 0xe4, 0x19, 0x94, 0x96, 0x2d, 0x92, + 0xbb, 0xd0, 0xf0, 0x59, 0x70, 0xda, 0x3b, 0x16, 0x89, 0x67, 0x9e, 0xad, 0xd7, 0x04, 0x95, 0x43, + 0xbb, 0x09, 0x79, 0x00, 0x6b, 0x11, 0x8b, 0xa8, 0xc7, 0x02, 0x6a, 0x3d, 0xcf, 0x68, 0x46, 0x73, + 0xb4, 0xc8, 0xd4, 0x96, 0x15, 0xf7, 0x17, 0x9c, 0x29, 0x85, 0x3e, 0x81, 0x66, 0x2e, 0x74, 0x16, + 0x53, 0xfb, 0x82, 0xc6, 0xb9, 0x98, 0x4c, 0x98, 0x14, 0x7f, 0x47, 0xb0, 0x85, 0x60, 0xeb, 0x1b, + 0x28, 0xf5, 0xc2, 0x38, 0x25, 0xef, 0xc2, 0xc2, 0x19, 0x9e, 0x9e, 0x92, 0xe9, 0xc7, 0x47, 0xc9, + 0x24, 0x77, 0xa1, 0xce, 0x12, 0xbc, 0x81, 0xb0, 0x3d, 0x2e, 0x28, 0x5f, 0x1f, 0x8c, 0x13, 0xdf, + 0xf0, 0xfc, 0xff, 0x97, 0x45, 0x30, 0xc4, 0xdb, 0xa4, 0x83, 0xd8, 0xf6, 0xe9, 0x4e, 0x98, 0x05, + 0xfc, 0x80, 0x57, 0xd2, 0x8a, 0xcc, 0xab, 0xfa, 0x0b, 0x26, 0x04, 0x68, 0x45, 0x27, 0x04, 0x92, + 0x16, 0x54, 0xb2, 0xe0, 0x8c, 0xb3, 0xa8, 0x3b, 0x76, 0x0c, 0x1b, 0x91, 0xc9, 0x1a, 0xcc, 0x8b, + 0x57, 0x15, 0x72, 0x32, 0xe4, 0x17, 0xd9, 0x84, 0x8a, 0x63, 0x7b, 0x0e, 0x3f, 0xab, 0x27, 0x53, + 0x0e, 0x85, 0x23, 0x26, 0xf9, 0x13, 0xa8, 0xf6, 0x79, 0x27, 0x2d, 0xbc, 0x45, 0x93, 0xaf, 0xea, + 0xc6, 0xea, 0x36, 0xc8, 0xc6, 0x0b, 0x37, 0xf2, 0x39, 0xd4, 0x1d, 0x3f, 0x12, 0x29, 0xa8, 0x56, + 0x43, 0x93, 0xcf, 0xe0, 0x10, 0xb3, 0xeb, 0x47, 0x3c, 0x05, 0xc5, 0xe2, 0x6e, 0xd5, 0x19, 0x7d, + 0xb4, 0xbe, 0x2d, 0x40, 0x55, 0x9b, 0x94, 0xd7, 0xcd, 0x07, 0x02, 0x26, 0xe6, 0xe3, 0x7d, 0x98, + 0x4b, 0x52, 0x5b, 0xae, 0x4c, 0xfe, 0xf6, 0xee, 0xea, 0x3c, 0x9b, 0x02, 0x44, 0x36, 0x61, 0x96, + 0x06, 0x6a, 0x9d, 0x5e, 0x85, 0xe5, 0x90, 0xd6, 0xef, 0x0a, 0x30, 0x2f, 0x38, 0xe4, 0x3d, 0xa8, + 0xf4, 0xb3, 0xc0, 0xb1, 0xb0, 0x6c, 0x36, 0x59, 0xa9, 0x29, 0x73, 0xe6, 0x1e, 0x4d, 0x9c, 0x89, + 0xd3, 0x7a, 0xf1, 0xfb, 0x4e, 0xeb, 0x7a, 0x19, 0x63, 0xf6, 0x75, 0x65, 0x8c, 0xf7, 0x60, 0x0e, + 0x27, 0x5c, 0x5e, 0x0a, 0x2f, 0x4d, 0xf4, 0xdc, 0x14, 0xfc, 0x91, 0x29, 0xce, 0xbd, 0xce, 0x14, + 0xbf, 0x80, 0x1a, 0x16, 0x79, 0x58, 0x30, 0xe0, 0x43, 0x20, 0x1f, 0x42, 0x7d, 0x20, 0xbf, 0x45, + 0xc5, 0x60, 0x72, 0x94, 0xb5, 0x81, 0x26, 0xd0, 0x7a, 0x04, 0x55, 0xa5, 0xa0, 0x47, 0x53, 0xf2, + 0x19, 0x34, 0xc6, 0xe4, 0x95, 0x57, 0xc9, 0xcb, 0x0f, 0xbd, 0x2d, 0xb3, 0xae, 0x2b, 0x4a, 0x5a, + 0xbf, 0x2e, 0xc0, 0xbc, 0x78, 0xc8, 0x46, 0x3e, 0xd6, 0x7a, 0x91, 0x3f, 0x09, 0xca, 0x07, 0xab, + 0xb5, 0x37, 0xea, 0x4c, 0x8f, 0xa6, 0xc9, 0x1b, 0x96, 0x52, 0x9a, 0xb0, 0xf0, 0x82, 0xc6, 0xf8, + 0x20, 0x4a, 0x78, 0x85, 0xfa, 0x6c, 0x7d, 0x00, 0x15, 0xde, 0x17, 0xf1, 0x18, 0xe8, 0x7b, 0x2b, + 0x83, 0xad, 0xbf, 0x2a, 0xc0, 0x82, 0x7c, 0x7a, 0x47, 0xee, 0x01, 0x44, 0x71, 0xf8, 0x6c, 0x6c, + 0xd0, 0x8b, 0x23, 0x11, 0xf1, 0x2c, 0xaa, 0xc2, 0x21, 0xa2, 0x52, 0xf8, 0x10, 0xd6, 0x06, 0x34, + 0xa0, 0xb1, 0xcd, 0x37, 0x14, 0x99, 0x82, 0x8a, 0x57, 0x14, 0x45, 0x7c, 0x45, 0xb1, 0x92, 0x73, + 0x45, 0x22, 0x2a, 0x9e, 0x53, 0xbc, 0x59, 0x7c, 0x79, 0x17, 0x1a, 0xe3, 0x0f, 0xfc, 0xc8, 0x8a, + 0x2a, 0xd7, 0x88, 0x43, 0xb1, 0xf8, 0x68, 0xff, 0xc5, 0xac, 0x78, 0xeb, 0x8b, 0x15, 0xec, 0x25, + 0xa8, 0xf3, 0xdf, 0xfc, 0x6e, 0xd5, 0x98, 0x51, 0xa4, 0xbc, 0x3e, 0x6d, 0x14, 0x14, 0x29, 0x2f, + 0xeb, 0x1a, 0x45, 0xb2, 0x0c, 0x8b, 0x9c, 0xa4, 0x15, 0x34, 0x8d, 0x59, 0x52, 0x83, 0x32, 0x6a, + 0x0b, 0xa3, 0xae, 0x51, 0x22, 0x75, 0xa8, 0xf0, 0x2f, 0xac, 0x85, 0x19, 0x73, 0xb9, 0x12, 0xcc, + 0x06, 0xb7, 0x07, 0x03, 0x63, 0x5e, 0xe1, 0x1f, 0x87, 0x2c, 0x30, 0x16, 0xd4, 0xd7, 0x13, 0xe6, + 0x79, 0x46, 0x99, 0xac, 0x01, 0xe1, 0x5f, 0xe3, 0x2f, 0xfd, 0x8c, 0x0a, 0x69, 0xc2, 0x8a, 0x4e, + 0x57, 0x6f, 0xb1, 0x0c, 0x20, 0x04, 0x1a, 0x9c, 0x33, 0x2a, 0xf3, 0x1a, 0x55, 0xb2, 0x0e, 0x6b, + 0x48, 0x9b, 0xb8, 0x44, 0x36, 0x6a, 0xaa, 0x3d, 0x1e, 0xc2, 0x8d, 0x3a, 0x69, 0x00, 0xf0, 0x2f, + 0xe1, 0x53, 0x46, 0x43, 0x7d, 0x8b, 0x95, 0x36, 0x16, 0xc9, 0x22, 0x54, 0x47, 0xdf, 0x5b, 0x86, + 0xa1, 0x3a, 0x38, 0x3e, 0xe7, 0xc6, 0x92, 0x9a, 0x19, 0xed, 0xcd, 0x9b, 0xb1, 0x42, 0xde, 0x82, + 0xa6, 0x94, 0x9e, 0xa8, 0x90, 0x19, 0xab, 0xed, 0x4f, 0xa1, 0xa6, 0xbf, 0xec, 0xe2, 0x6d, 0x9d, + 0xd8, 0x49, 0x72, 0x7a, 0x1e, 0x87, 0xd9, 0xe0, 0xdc, 0x98, 0xe1, 0x53, 0x99, 0xb7, 0x63, 0x14, + 0x48, 0x19, 0x4a, 0x8f, 0xec, 0xe4, 0xdc, 0x28, 0xb6, 0x7f, 0x02, 0x8b, 0x57, 0x5e, 0xf4, 0x71, + 0x66, 0xf7, 0xb8, 0xbb, 0x6f, 0xcc, 0xf0, 0x7f, 0x07, 0xdb, 0xbd, 0x53, 0xa3, 0x40, 0x56, 0xc0, + 0x78, 0xd4, 0xf9, 0xea, 0x91, 0xb5, 0x7b, 0x7c, 0x74, 0x62, 0xee, 0xf7, 0x7a, 0x9d, 0xe3, 0xae, + 0x51, 0x6c, 0xdf, 0x03, 0x18, 0xbd, 0xb6, 0x20, 0x15, 0x98, 0xc3, 0x03, 0x81, 0x10, 0x3c, 0x65, + 0x4f, 0x9e, 0x1a, 0x05, 0x52, 0x85, 0x05, 0xb9, 0xb5, 0x1b, 0xc5, 0xf6, 0x03, 0x58, 0x94, 0x59, + 0x00, 0x1f, 0xdb, 0x13, 0x16, 0xf0, 0xad, 0x86, 0x74, 0xba, 0x4f, 0xb7, 0x0f, 0x3b, 0x7b, 0x56, + 0xa7, 0xbb, 0xb7, 0xff, 0x2b, 0xeb, 0x49, 0xa7, 0xbb, 0x27, 0x34, 0x3c, 0xea, 0xf6, 0xbe, 0x36, + 0x0a, 0xed, 0x33, 0x58, 0x99, 0xf6, 0xe8, 0x8b, 0xdc, 0x80, 0x6b, 0x4a, 0x72, 0xaf, 0xd3, 0x3b, + 0xdd, 0xee, 0xee, 0xee, 0x5b, 0x47, 0xfb, 0xa7, 0x66, 0x67, 0xd7, 0x98, 0x21, 0xf3, 0x50, 0x3c, + 0xfc, 0xc8, 0x28, 0xe0, 0xef, 0x96, 0x51, 0x24, 0x00, 0xf3, 0xbb, 0xc7, 0xbd, 0x4e, 0x77, 0xdf, + 0x98, 0xe5, 0x76, 0xd4, 0xe9, 0x76, 0xf7, 0x4d, 0xeb, 0xc4, 0x3c, 0xde, 0xfb, 0xe5, 0xee, 0xa9, + 0x51, 0x6a, 0x7f, 0x34, 0x7a, 0xbe, 0x86, 0x43, 0x59, 0x01, 0xa3, 0x13, 0xbc, 0xb0, 0x3d, 0xe6, + 0xe6, 0x34, 0x63, 0x86, 0x8f, 0xe5, 0x58, 0xc4, 0x53, 0xa3, 0xd0, 0xfe, 0xd3, 0xd1, 0xdb, 0x2a, + 0x14, 0xb9, 0x06, 0xcb, 0xfa, 0xb7, 0x14, 0x37, 0x66, 0xae, 0x32, 0xba, 0x61, 0xcf, 0x09, 0x63, + 0x6a, 0x14, 0xc8, 0x75, 0x58, 0xd5, 0x19, 0x5f, 0xb3, 0xf4, 0x5c, 0xb0, 0x8a, 0xed, 0x8f, 0xaf, + 0xbc, 0x0f, 0x52, 0x8b, 0x3a, 0xae, 0xd9, 0x80, 0x1a, 0x27, 0x1c, 0x64, 0x9e, 0x97, 0xd2, 0x61, + 0x6a, 0xcc, 0xb6, 0xff, 0xb1, 0x00, 0x65, 0x75, 0xc3, 0x3c, 0xf2, 0xc3, 0x80, 0xc6, 0xe8, 0x21, + 0x33, 0x64, 0x15, 0x96, 0xd0, 0xa3, 0x68, 0x3f, 0x3d, 0xce, 0x52, 0x49, 0x2e, 0x28, 0x4b, 0x34, + 0xd9, 0xe0, 0x5c, 0xa3, 0x17, 0x55, 0x03, 0xea, 0x9e, 0xd0, 0x98, 0xe5, 0x13, 0x83, 0x5e, 0x1b, + 0xa4, 0x2c, 0xa7, 0x96, 0xf8, 0x48, 0xc6, 0xd4, 0xe6, 0xac, 0x39, 0x72, 0x13, 0xae, 0x2b, 0x81, + 0x49, 0xf6, 0x7c, 0x7b, 0x03, 0x6a, 0xfa, 0xcd, 0xb6, 0x6a, 0x91, 0x1b, 0xa7, 0xe8, 0x72, 0xfb, + 0x73, 0x58, 0x9a, 0xb8, 0x45, 0xe3, 0xcb, 0xda, 0xe9, 0x8a, 0x15, 0x39, 0xea, 0x74, 0xad, 0xa3, + 0xed, 0x5f, 0x19, 0x05, 0x2e, 0xbb, 0x73, 0x78, 0x7c, 0x7c, 0x64, 0x1d, 0x74, 0x0e, 0x4f, 0xf7, + 0x4d, 0xa3, 0xd8, 0x6e, 0x5f, 0x91, 0x45, 0xf3, 0xe6, 0x66, 0x7a, 0xbc, 0xbb, 0x7d, 0x68, 0xcc, + 0x70, 0xab, 0xf8, 0xea, 0xf0, 0x78, 0x67, 0xfb, 0xd0, 0x28, 0xb4, 0x77, 0x60, 0x69, 0xe2, 0xee, + 0x80, 0x4f, 0xf9, 0x41, 0x18, 0x3b, 0x54, 0x90, 0x84, 0x59, 0x6e, 0x67, 0x69, 0x68, 0x14, 0x78, + 0xb0, 0x40, 0x96, 0x08, 0x47, 0x2c, 0x18, 0x18, 0xc5, 0xf6, 0x17, 0xb0, 0x78, 0x25, 0xf5, 0xe2, + 0x8e, 0x77, 0x10, 0x7a, 0x5e, 0xf8, 0x92, 0x23, 0xd0, 0x0f, 0x4f, 0x62, 0xea, 0x50, 0x97, 0x7f, + 0x16, 0x78, 0x8c, 0xd8, 0xc5, 0xea, 0x6e, 0x6a, 0x86, 0x2f, 0x8d, 0x62, 0xfb, 0x18, 0x8c, 0xab, + 0xe9, 0x0e, 0x59, 0x80, 0xd9, 0x4e, 0x90, 0x1a, 0x33, 0xbc, 0xe3, 0x07, 0x5e, 0x68, 0xa7, 0xc2, + 0xab, 0xf6, 0xa8, 0xc3, 0x7c, 0xdb, 0x33, 0x8a, 0x3c, 0x0c, 0xed, 0xd9, 0x29, 0xe5, 0xc9, 0xb4, + 0x08, 0xa1, 0x7b, 0x99, 0x28, 0x3a, 0x1b, 0x25, 0xee, 0x71, 0x57, 0x92, 0x1f, 0x3e, 0x04, 0x7e, + 0x08, 0x14, 0xc3, 0xc7, 0xd6, 0x12, 0xa3, 0x80, 0x53, 0xc1, 0xf7, 0xc4, 0xc4, 0x28, 0xee, 0xfc, + 0xe8, 0xb7, 0xdf, 0xdd, 0x2a, 0xfc, 0xdb, 0x77, 0xb7, 0x0a, 0xff, 0xf9, 0xdd, 0xad, 0xc2, 0x5f, + 0xff, 0xd7, 0xad, 0x19, 0x58, 0x75, 0x42, 0xff, 0x1e, 0xdf, 0x2f, 0x1d, 0x3b, 0xba, 0x97, 0x32, + 0xf7, 0x0c, 0x77, 0x90, 0x93, 0xc2, 0xff, 0x05, 0x00, 0x00, 0xff, 0xff, 0xbd, 0xe0, 0x68, 0x8e, + 0x44, 0x32, 0x00, 0x00, } diff --git a/go-tipb/expression.pb.go b/go-tipb/expression.pb.go index de482d56..215d2c5d 100644 --- a/go-tipb/expression.pb.go +++ b/go-tipb/expression.pb.go @@ -2155,6 +2155,131 @@ func (x *ScalarFuncSig) UnmarshalJSON(data []byte) error { } func (ScalarFuncSig) EnumDescriptor() ([]byte, []int) { return fileDescriptorExpression, []int{1} } +// Evaluators should implement evaluation functions for every expression type. +// Boolean full-text query representation shared by scan-level FTS metadata and +// scalar expressions. These types live in expression.proto so Expr can carry +// the query as a typed field without introducing an import cycle with +// executor.proto. +type FTSBooleanOccur int32 + +const ( + FTSBooleanOccur_FTSBooleanOccurInvalid FTSBooleanOccur = 0 + FTSBooleanOccur_FTSBooleanOccurShould FTSBooleanOccur = 1 + FTSBooleanOccur_FTSBooleanOccurMust FTSBooleanOccur = 2 + FTSBooleanOccur_FTSBooleanOccurMustNot FTSBooleanOccur = 3 +) + +var FTSBooleanOccur_name = map[int32]string{ + 0: "FTSBooleanOccurInvalid", + 1: "FTSBooleanOccurShould", + 2: "FTSBooleanOccurMust", + 3: "FTSBooleanOccurMustNot", +} +var FTSBooleanOccur_value = map[string]int32{ + "FTSBooleanOccurInvalid": 0, + "FTSBooleanOccurShould": 1, + "FTSBooleanOccurMust": 2, + "FTSBooleanOccurMustNot": 3, +} + +func (x FTSBooleanOccur) Enum() *FTSBooleanOccur { + p := new(FTSBooleanOccur) + *p = x + return p +} +func (x FTSBooleanOccur) String() string { + return proto.EnumName(FTSBooleanOccur_name, int32(x)) +} +func (x *FTSBooleanOccur) UnmarshalJSON(data []byte) error { + value, err := proto.UnmarshalJSONEnum(FTSBooleanOccur_value, data, "FTSBooleanOccur") + if err != nil { + return err + } + *x = FTSBooleanOccur(value) + return nil +} +func (FTSBooleanOccur) EnumDescriptor() ([]byte, []int) { return fileDescriptorExpression, []int{2} } + +type FTSBooleanModifier int32 + +const ( + FTSBooleanModifier_FTSBooleanModifierNone FTSBooleanModifier = 0 + FTSBooleanModifier_FTSBooleanModifierBoost FTSBooleanModifier = 1 + FTSBooleanModifier_FTSBooleanModifierDeBoost FTSBooleanModifier = 2 + FTSBooleanModifier_FTSBooleanModifierNegate FTSBooleanModifier = 3 +) + +var FTSBooleanModifier_name = map[int32]string{ + 0: "FTSBooleanModifierNone", + 1: "FTSBooleanModifierBoost", + 2: "FTSBooleanModifierDeBoost", + 3: "FTSBooleanModifierNegate", +} +var FTSBooleanModifier_value = map[string]int32{ + "FTSBooleanModifierNone": 0, + "FTSBooleanModifierBoost": 1, + "FTSBooleanModifierDeBoost": 2, + "FTSBooleanModifierNegate": 3, +} + +func (x FTSBooleanModifier) Enum() *FTSBooleanModifier { + p := new(FTSBooleanModifier) + *p = x + return p +} +func (x FTSBooleanModifier) String() string { + return proto.EnumName(FTSBooleanModifier_name, int32(x)) +} +func (x *FTSBooleanModifier) UnmarshalJSON(data []byte) error { + value, err := proto.UnmarshalJSONEnum(FTSBooleanModifier_value, data, "FTSBooleanModifier") + if err != nil { + return err + } + *x = FTSBooleanModifier(value) + return nil +} +func (FTSBooleanModifier) EnumDescriptor() ([]byte, []int) { return fileDescriptorExpression, []int{3} } + +type FTSBooleanTermType int32 + +const ( + FTSBooleanTermType_FTSBooleanTermInvalid FTSBooleanTermType = 0 + FTSBooleanTermType_FTSBooleanTermWord FTSBooleanTermType = 1 + FTSBooleanTermType_FTSBooleanTermPhrase FTSBooleanTermType = 2 + FTSBooleanTermType_FTSBooleanTermPrefix FTSBooleanTermType = 3 +) + +var FTSBooleanTermType_name = map[int32]string{ + 0: "FTSBooleanTermInvalid", + 1: "FTSBooleanTermWord", + 2: "FTSBooleanTermPhrase", + 3: "FTSBooleanTermPrefix", +} +var FTSBooleanTermType_value = map[string]int32{ + "FTSBooleanTermInvalid": 0, + "FTSBooleanTermWord": 1, + "FTSBooleanTermPhrase": 2, + "FTSBooleanTermPrefix": 3, +} + +func (x FTSBooleanTermType) Enum() *FTSBooleanTermType { + p := new(FTSBooleanTermType) + *p = x + return p +} +func (x FTSBooleanTermType) String() string { + return proto.EnumName(FTSBooleanTermType_name, int32(x)) +} +func (x *FTSBooleanTermType) UnmarshalJSON(data []byte) error { + value, err := proto.UnmarshalJSONEnum(FTSBooleanTermType_value, data, "FTSBooleanTermType") + if err != nil { + return err + } + *x = FTSBooleanTermType(value) + return nil +} +func (FTSBooleanTermType) EnumDescriptor() ([]byte, []int) { return fileDescriptorExpression, []int{4} } + type AggFunctionMode int32 const ( @@ -2196,7 +2321,7 @@ func (x *AggFunctionMode) UnmarshalJSON(data []byte) error { *x = AggFunctionMode(value) return nil } -func (AggFunctionMode) EnumDescriptor() ([]byte, []int) { return fileDescriptorExpression, []int{2} } +func (AggFunctionMode) EnumDescriptor() ([]byte, []int) { return fileDescriptorExpression, []int{5} } type FieldType struct { Tp int32 `protobuf:"varint,1,opt,name=tp" json:"tp"` @@ -2271,24 +2396,261 @@ func (m *FieldType) GetArray() bool { return false } -// Evaluators should implement evaluation functions for every expression type. +type FTSBooleanTerm struct { + TermType FTSBooleanTermType `protobuf:"varint,1,opt,name=term_type,json=termType,enum=tipb.FTSBooleanTermType" json:"term_type"` + Text string `protobuf:"bytes,2,opt,name=text" json:"text"` + PhraseDistance uint32 `protobuf:"varint,3,opt,name=phrase_distance,json=phraseDistance" json:"phrase_distance"` + XXX_unrecognized []byte `json:"-"` +} + +func (m *FTSBooleanTerm) Reset() { *m = FTSBooleanTerm{} } +func (m *FTSBooleanTerm) String() string { return proto.CompactTextString(m) } +func (*FTSBooleanTerm) ProtoMessage() {} +func (*FTSBooleanTerm) Descriptor() ([]byte, []int) { return fileDescriptorExpression, []int{1} } + +func (m *FTSBooleanTerm) GetTermType() FTSBooleanTermType { + if m != nil { + return m.TermType + } + return FTSBooleanTermType_FTSBooleanTermInvalid +} + +func (m *FTSBooleanTerm) GetText() string { + if m != nil { + return m.Text + } + return "" +} + +func (m *FTSBooleanTerm) GetPhraseDistance() uint32 { + if m != nil { + return m.PhraseDistance + } + return 0 +} + +type FTSBooleanQuery struct { + Nodes []*FTSBooleanNode `protobuf:"bytes,1,rep,name=nodes" json:"nodes,omitempty"` + // The Boolean query carries the analyzer selected by the FULLTEXT index so + // TiFlash does not have to infer NGRAM semantics from the raw query text. + QueryTokenizer string `protobuf:"bytes,2,opt,name=query_tokenizer,json=queryTokenizer" json:"query_tokenizer"` + NgramTokenSize uint32 `protobuf:"varint,3,opt,name=ngram_token_size,json=ngramTokenSize" json:"ngram_token_size"` + // STANDARD_V1 analyzer settings. If both token-size fields are zero, TiFlash + // uses the default STANDARD_V1 analyzer settings. + InnodbFtMinTokenSize uint32 `protobuf:"varint,4,opt,name=innodb_ft_min_token_size,json=innodbFtMinTokenSize" json:"innodb_ft_min_token_size"` + InnodbFtMaxTokenSize uint32 `protobuf:"varint,5,opt,name=innodb_ft_max_token_size,json=innodbFtMaxTokenSize" json:"innodb_ft_max_token_size"` + InnodbFtEnableStopword bool `protobuf:"varint,6,opt,name=innodb_ft_enable_stopword,json=innodbFtEnableStopword" json:"innodb_ft_enable_stopword"` + XXX_unrecognized []byte `json:"-"` +} + +func (m *FTSBooleanQuery) Reset() { *m = FTSBooleanQuery{} } +func (m *FTSBooleanQuery) String() string { return proto.CompactTextString(m) } +func (*FTSBooleanQuery) ProtoMessage() {} +func (*FTSBooleanQuery) Descriptor() ([]byte, []int) { return fileDescriptorExpression, []int{2} } + +func (m *FTSBooleanQuery) GetNodes() []*FTSBooleanNode { + if m != nil { + return m.Nodes + } + return nil +} + +func (m *FTSBooleanQuery) GetQueryTokenizer() string { + if m != nil { + return m.QueryTokenizer + } + return "" +} + +func (m *FTSBooleanQuery) GetNgramTokenSize() uint32 { + if m != nil { + return m.NgramTokenSize + } + return 0 +} + +func (m *FTSBooleanQuery) GetInnodbFtMinTokenSize() uint32 { + if m != nil { + return m.InnodbFtMinTokenSize + } + return 0 +} + +func (m *FTSBooleanQuery) GetInnodbFtMaxTokenSize() uint32 { + if m != nil { + return m.InnodbFtMaxTokenSize + } + return 0 +} + +func (m *FTSBooleanQuery) GetInnodbFtEnableStopword() bool { + if m != nil { + return m.InnodbFtEnableStopword + } + return false +} + +type FTSBooleanNode struct { + Occur FTSBooleanOccur `protobuf:"varint,1,opt,name=occur,enum=tipb.FTSBooleanOccur" json:"occur"` + Modifier FTSBooleanModifier `protobuf:"varint,2,opt,name=modifier,enum=tipb.FTSBooleanModifier" json:"modifier"` + // Types that are valid to be assigned to Node: + // *FTSBooleanNode_Term + // *FTSBooleanNode_SubExpression + Node isFTSBooleanNode_Node `protobuf_oneof:"node"` + XXX_unrecognized []byte `json:"-"` +} + +func (m *FTSBooleanNode) Reset() { *m = FTSBooleanNode{} } +func (m *FTSBooleanNode) String() string { return proto.CompactTextString(m) } +func (*FTSBooleanNode) ProtoMessage() {} +func (*FTSBooleanNode) Descriptor() ([]byte, []int) { return fileDescriptorExpression, []int{3} } + +type isFTSBooleanNode_Node interface { + isFTSBooleanNode_Node() + MarshalTo([]byte) (int, error) + Size() int +} + +type FTSBooleanNode_Term struct { + Term *FTSBooleanTerm `protobuf:"bytes,3,opt,name=term,oneof"` +} +type FTSBooleanNode_SubExpression struct { + SubExpression *FTSBooleanQuery `protobuf:"bytes,4,opt,name=sub_expression,json=subExpression,oneof"` +} + +func (*FTSBooleanNode_Term) isFTSBooleanNode_Node() {} +func (*FTSBooleanNode_SubExpression) isFTSBooleanNode_Node() {} + +func (m *FTSBooleanNode) GetNode() isFTSBooleanNode_Node { + if m != nil { + return m.Node + } + return nil +} + +func (m *FTSBooleanNode) GetOccur() FTSBooleanOccur { + if m != nil { + return m.Occur + } + return FTSBooleanOccur_FTSBooleanOccurInvalid +} + +func (m *FTSBooleanNode) GetModifier() FTSBooleanModifier { + if m != nil { + return m.Modifier + } + return FTSBooleanModifier_FTSBooleanModifierNone +} + +func (m *FTSBooleanNode) GetTerm() *FTSBooleanTerm { + if x, ok := m.GetNode().(*FTSBooleanNode_Term); ok { + return x.Term + } + return nil +} + +func (m *FTSBooleanNode) GetSubExpression() *FTSBooleanQuery { + if x, ok := m.GetNode().(*FTSBooleanNode_SubExpression); ok { + return x.SubExpression + } + return nil +} + +// XXX_OneofFuncs is for the internal use of the proto package. +func (*FTSBooleanNode) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { + return _FTSBooleanNode_OneofMarshaler, _FTSBooleanNode_OneofUnmarshaler, _FTSBooleanNode_OneofSizer, []interface{}{ + (*FTSBooleanNode_Term)(nil), + (*FTSBooleanNode_SubExpression)(nil), + } +} + +func _FTSBooleanNode_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { + m := msg.(*FTSBooleanNode) + // node + switch x := m.Node.(type) { + case *FTSBooleanNode_Term: + _ = b.EncodeVarint(3<<3 | proto.WireBytes) + if err := b.EncodeMessage(x.Term); err != nil { + return err + } + case *FTSBooleanNode_SubExpression: + _ = b.EncodeVarint(4<<3 | proto.WireBytes) + if err := b.EncodeMessage(x.SubExpression); err != nil { + return err + } + case nil: + default: + return fmt.Errorf("FTSBooleanNode.Node has unexpected type %T", x) + } + return nil +} + +func _FTSBooleanNode_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { + m := msg.(*FTSBooleanNode) + switch tag { + case 3: // node.term + if wire != proto.WireBytes { + return true, proto.ErrInternalBadWireType + } + msg := new(FTSBooleanTerm) + err := b.DecodeMessage(msg) + m.Node = &FTSBooleanNode_Term{msg} + return true, err + case 4: // node.sub_expression + if wire != proto.WireBytes { + return true, proto.ErrInternalBadWireType + } + msg := new(FTSBooleanQuery) + err := b.DecodeMessage(msg) + m.Node = &FTSBooleanNode_SubExpression{msg} + return true, err + default: + return false, nil + } +} + +func _FTSBooleanNode_OneofSizer(msg proto.Message) (n int) { + m := msg.(*FTSBooleanNode) + // node + switch x := m.Node.(type) { + case *FTSBooleanNode_Term: + s := proto.Size(x.Term) + n += proto.SizeVarint(3<<3 | proto.WireBytes) + n += proto.SizeVarint(uint64(s)) + n += s + case *FTSBooleanNode_SubExpression: + s := proto.Size(x.SubExpression) + n += proto.SizeVarint(4<<3 | proto.WireBytes) + n += proto.SizeVarint(uint64(s)) + n += s + case nil: + default: + panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) + } + return n +} + type Expr struct { - Tp ExprType `protobuf:"varint,1,opt,name=tp,enum=tipb.ExprType" json:"tp"` - Val []byte `protobuf:"bytes,2,opt,name=val" json:"val,omitempty"` - Children []*Expr `protobuf:"bytes,3,rep,name=children" json:"children,omitempty"` - RpnArgsLen *uint32 `protobuf:"varint,6,opt,name=rpn_args_len,json=rpnArgsLen" json:"rpn_args_len,omitempty"` - Sig ScalarFuncSig `protobuf:"varint,4,opt,name=sig,enum=tipb.ScalarFuncSig" json:"sig"` - FieldType *FieldType `protobuf:"bytes,5,opt,name=field_type,json=fieldType" json:"field_type,omitempty"` - HasDistinct bool `protobuf:"varint,7,opt,name=has_distinct,json=hasDistinct" json:"has_distinct"` - OrderBy []*ByItem `protobuf:"bytes,8,rep,name=order_by,json=orderBy" json:"order_by,omitempty"` - AggFuncMode *AggFunctionMode `protobuf:"varint,9,opt,name=aggFuncMode,enum=tipb.AggFunctionMode" json:"aggFuncMode,omitempty"` + Tp ExprType `protobuf:"varint,1,opt,name=tp,enum=tipb.ExprType" json:"tp"` + Val []byte `protobuf:"bytes,2,opt,name=val" json:"val,omitempty"` + Children []*Expr `protobuf:"bytes,3,rep,name=children" json:"children,omitempty"` + RpnArgsLen *uint32 `protobuf:"varint,6,opt,name=rpn_args_len,json=rpnArgsLen" json:"rpn_args_len,omitempty"` + Sig ScalarFuncSig `protobuf:"varint,4,opt,name=sig,enum=tipb.ScalarFuncSig" json:"sig"` + FieldType *FieldType `protobuf:"bytes,5,opt,name=field_type,json=fieldType" json:"field_type,omitempty"` + HasDistinct bool `protobuf:"varint,7,opt,name=has_distinct,json=hasDistinct" json:"has_distinct"` + OrderBy []*ByItem `protobuf:"bytes,8,rep,name=order_by,json=orderBy" json:"order_by,omitempty"` + AggFuncMode *AggFunctionMode `protobuf:"varint,9,opt,name=aggFuncMode,enum=tipb.AggFunctionMode" json:"aggFuncMode,omitempty"` + // Boolean MATCH metadata for scalar functions such as FTSMatchExpression. + // This is separate from children so query syntax/configuration cannot be + // mistaken for a MATCH document column. + FtsBooleanQuery *FTSBooleanQuery `protobuf:"bytes,10,opt,name=fts_boolean_query,json=ftsBooleanQuery" json:"fts_boolean_query,omitempty"` XXX_unrecognized []byte `json:"-"` } func (m *Expr) Reset() { *m = Expr{} } func (m *Expr) String() string { return proto.CompactTextString(m) } func (*Expr) ProtoMessage() {} -func (*Expr) Descriptor() ([]byte, []int) { return fileDescriptorExpression, []int{1} } +func (*Expr) Descriptor() ([]byte, []int) { return fileDescriptorExpression, []int{4} } func (m *Expr) GetTp() ExprType { if m != nil { @@ -2353,6 +2715,13 @@ func (m *Expr) GetAggFuncMode() AggFunctionMode { return AggFunctionMode_CompleteMode } +func (m *Expr) GetFtsBooleanQuery() *FTSBooleanQuery { + if m != nil { + return m.FtsBooleanQuery + } + return nil +} + // Expression organized in RPN form. // https://en.wikipedia.org/wiki/Reverse_Polish_notation type RpnExpr struct { @@ -2364,7 +2733,7 @@ type RpnExpr struct { func (m *RpnExpr) Reset() { *m = RpnExpr{} } func (m *RpnExpr) String() string { return proto.CompactTextString(m) } func (*RpnExpr) ProtoMessage() {} -func (*RpnExpr) Descriptor() ([]byte, []int) { return fileDescriptorExpression, []int{2} } +func (*RpnExpr) Descriptor() ([]byte, []int) { return fileDescriptorExpression, []int{5} } func (m *RpnExpr) GetExprs() []*Expr { if m != nil { @@ -2384,7 +2753,7 @@ type ByItem struct { func (m *ByItem) Reset() { *m = ByItem{} } func (m *ByItem) String() string { return proto.CompactTextString(m) } func (*ByItem) ProtoMessage() {} -func (*ByItem) Descriptor() ([]byte, []int) { return fileDescriptorExpression, []int{3} } +func (*ByItem) Descriptor() ([]byte, []int) { return fileDescriptorExpression, []int{6} } func (m *ByItem) GetExpr() *Expr { if m != nil { @@ -2409,11 +2778,17 @@ func (m *ByItem) GetDesc() bool { func init() { proto.RegisterType((*FieldType)(nil), "tipb.FieldType") + proto.RegisterType((*FTSBooleanTerm)(nil), "tipb.FTSBooleanTerm") + proto.RegisterType((*FTSBooleanQuery)(nil), "tipb.FTSBooleanQuery") + proto.RegisterType((*FTSBooleanNode)(nil), "tipb.FTSBooleanNode") proto.RegisterType((*Expr)(nil), "tipb.Expr") proto.RegisterType((*RpnExpr)(nil), "tipb.RpnExpr") proto.RegisterType((*ByItem)(nil), "tipb.ByItem") proto.RegisterEnum("tipb.ExprType", ExprType_name, ExprType_value) proto.RegisterEnum("tipb.ScalarFuncSig", ScalarFuncSig_name, ScalarFuncSig_value) + proto.RegisterEnum("tipb.FTSBooleanOccur", FTSBooleanOccur_name, FTSBooleanOccur_value) + proto.RegisterEnum("tipb.FTSBooleanModifier", FTSBooleanModifier_name, FTSBooleanModifier_value) + proto.RegisterEnum("tipb.FTSBooleanTermType", FTSBooleanTermType_name, FTSBooleanTermType_value) proto.RegisterEnum("tipb.AggFunctionMode", AggFunctionMode_name, AggFunctionMode_value) } func (m *FieldType) Marshal() (dAtA []byte, err error) { @@ -2479,7 +2854,7 @@ func (m *FieldType) MarshalTo(dAtA []byte) (int, error) { return i, nil } -func (m *Expr) Marshal() (dAtA []byte, err error) { +func (m *FTSBooleanTerm) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) n, err := m.MarshalTo(dAtA) @@ -2489,82 +2864,28 @@ func (m *Expr) Marshal() (dAtA []byte, err error) { return dAtA[:n], nil } -func (m *Expr) MarshalTo(dAtA []byte) (int, error) { +func (m *FTSBooleanTerm) MarshalTo(dAtA []byte) (int, error) { var i int _ = i var l int _ = l dAtA[i] = 0x8 i++ - i = encodeVarintExpression(dAtA, i, uint64(m.Tp)) - if m.Val != nil { - dAtA[i] = 0x12 - i++ - i = encodeVarintExpression(dAtA, i, uint64(len(m.Val))) - i += copy(dAtA[i:], m.Val) - } - if len(m.Children) > 0 { - for _, msg := range m.Children { - dAtA[i] = 0x1a - i++ - i = encodeVarintExpression(dAtA, i, uint64(msg.Size())) - n, err := msg.MarshalTo(dAtA[i:]) - if err != nil { - return 0, err - } - i += n - } - } - dAtA[i] = 0x20 - i++ - i = encodeVarintExpression(dAtA, i, uint64(m.Sig)) - if m.FieldType != nil { - dAtA[i] = 0x2a - i++ - i = encodeVarintExpression(dAtA, i, uint64(m.FieldType.Size())) - n1, err := m.FieldType.MarshalTo(dAtA[i:]) - if err != nil { - return 0, err - } - i += n1 - } - if m.RpnArgsLen != nil { - dAtA[i] = 0x30 - i++ - i = encodeVarintExpression(dAtA, i, uint64(*m.RpnArgsLen)) - } - dAtA[i] = 0x38 + i = encodeVarintExpression(dAtA, i, uint64(m.TermType)) + dAtA[i] = 0x12 i++ - if m.HasDistinct { - dAtA[i] = 1 - } else { - dAtA[i] = 0 - } + i = encodeVarintExpression(dAtA, i, uint64(len(m.Text))) + i += copy(dAtA[i:], m.Text) + dAtA[i] = 0x18 i++ - if len(m.OrderBy) > 0 { - for _, msg := range m.OrderBy { - dAtA[i] = 0x42 - i++ - i = encodeVarintExpression(dAtA, i, uint64(msg.Size())) - n, err := msg.MarshalTo(dAtA[i:]) - if err != nil { - return 0, err - } - i += n - } - } - if m.AggFuncMode != nil { - dAtA[i] = 0x48 - i++ - i = encodeVarintExpression(dAtA, i, uint64(*m.AggFuncMode)) - } + i = encodeVarintExpression(dAtA, i, uint64(m.PhraseDistance)) if m.XXX_unrecognized != nil { i += copy(dAtA[i:], m.XXX_unrecognized) } return i, nil } -func (m *RpnExpr) Marshal() (dAtA []byte, err error) { +func (m *FTSBooleanQuery) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) n, err := m.MarshalTo(dAtA) @@ -2574,13 +2895,13 @@ func (m *RpnExpr) Marshal() (dAtA []byte, err error) { return dAtA[:n], nil } -func (m *RpnExpr) MarshalTo(dAtA []byte) (int, error) { +func (m *FTSBooleanQuery) MarshalTo(dAtA []byte) (int, error) { var i int _ = i var l int _ = l - if len(m.Exprs) > 0 { - for _, msg := range m.Exprs { + if len(m.Nodes) > 0 { + for _, msg := range m.Nodes { dAtA[i] = 0xa i++ i = encodeVarintExpression(dAtA, i, uint64(msg.Size())) @@ -2591,13 +2912,34 @@ func (m *RpnExpr) MarshalTo(dAtA []byte) (int, error) { i += n } } + dAtA[i] = 0x12 + i++ + i = encodeVarintExpression(dAtA, i, uint64(len(m.QueryTokenizer))) + i += copy(dAtA[i:], m.QueryTokenizer) + dAtA[i] = 0x18 + i++ + i = encodeVarintExpression(dAtA, i, uint64(m.NgramTokenSize)) + dAtA[i] = 0x20 + i++ + i = encodeVarintExpression(dAtA, i, uint64(m.InnodbFtMinTokenSize)) + dAtA[i] = 0x28 + i++ + i = encodeVarintExpression(dAtA, i, uint64(m.InnodbFtMaxTokenSize)) + dAtA[i] = 0x30 + i++ + if m.InnodbFtEnableStopword { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i++ if m.XXX_unrecognized != nil { i += copy(dAtA[i:], m.XXX_unrecognized) } return i, nil } -func (m *ByItem) Marshal() (dAtA []byte, err error) { +func (m *FTSBooleanNode) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) n, err := m.MarshalTo(dAtA) @@ -2607,23 +2949,213 @@ func (m *ByItem) Marshal() (dAtA []byte, err error) { return dAtA[:n], nil } -func (m *ByItem) MarshalTo(dAtA []byte) (int, error) { +func (m *FTSBooleanNode) MarshalTo(dAtA []byte) (int, error) { var i int _ = i var l int _ = l - if m.Expr != nil { - dAtA[i] = 0xa + dAtA[i] = 0x8 + i++ + i = encodeVarintExpression(dAtA, i, uint64(m.Occur)) + dAtA[i] = 0x10 + i++ + i = encodeVarintExpression(dAtA, i, uint64(m.Modifier)) + if m.Node != nil { + nn1, err := m.Node.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += nn1 + } + if m.XXX_unrecognized != nil { + i += copy(dAtA[i:], m.XXX_unrecognized) + } + return i, nil +} + +func (m *FTSBooleanNode_Term) MarshalTo(dAtA []byte) (int, error) { + i := 0 + if m.Term != nil { + dAtA[i] = 0x1a i++ - i = encodeVarintExpression(dAtA, i, uint64(m.Expr.Size())) - n2, err := m.Expr.MarshalTo(dAtA[i:]) + i = encodeVarintExpression(dAtA, i, uint64(m.Term.Size())) + n2, err := m.Term.MarshalTo(dAtA[i:]) if err != nil { return 0, err } i += n2 } - dAtA[i] = 0x10 - i++ + return i, nil +} +func (m *FTSBooleanNode_SubExpression) MarshalTo(dAtA []byte) (int, error) { + i := 0 + if m.SubExpression != nil { + dAtA[i] = 0x22 + i++ + i = encodeVarintExpression(dAtA, i, uint64(m.SubExpression.Size())) + n3, err := m.SubExpression.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n3 + } + return i, nil +} +func (m *Expr) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *Expr) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0x8 + i++ + i = encodeVarintExpression(dAtA, i, uint64(m.Tp)) + if m.Val != nil { + dAtA[i] = 0x12 + i++ + i = encodeVarintExpression(dAtA, i, uint64(len(m.Val))) + i += copy(dAtA[i:], m.Val) + } + if len(m.Children) > 0 { + for _, msg := range m.Children { + dAtA[i] = 0x1a + i++ + i = encodeVarintExpression(dAtA, i, uint64(msg.Size())) + n, err := msg.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n + } + } + dAtA[i] = 0x20 + i++ + i = encodeVarintExpression(dAtA, i, uint64(m.Sig)) + if m.FieldType != nil { + dAtA[i] = 0x2a + i++ + i = encodeVarintExpression(dAtA, i, uint64(m.FieldType.Size())) + n4, err := m.FieldType.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n4 + } + if m.RpnArgsLen != nil { + dAtA[i] = 0x30 + i++ + i = encodeVarintExpression(dAtA, i, uint64(*m.RpnArgsLen)) + } + dAtA[i] = 0x38 + i++ + if m.HasDistinct { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i++ + if len(m.OrderBy) > 0 { + for _, msg := range m.OrderBy { + dAtA[i] = 0x42 + i++ + i = encodeVarintExpression(dAtA, i, uint64(msg.Size())) + n, err := msg.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n + } + } + if m.AggFuncMode != nil { + dAtA[i] = 0x48 + i++ + i = encodeVarintExpression(dAtA, i, uint64(*m.AggFuncMode)) + } + if m.FtsBooleanQuery != nil { + dAtA[i] = 0x52 + i++ + i = encodeVarintExpression(dAtA, i, uint64(m.FtsBooleanQuery.Size())) + n5, err := m.FtsBooleanQuery.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n5 + } + if m.XXX_unrecognized != nil { + i += copy(dAtA[i:], m.XXX_unrecognized) + } + return i, nil +} + +func (m *RpnExpr) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *RpnExpr) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if len(m.Exprs) > 0 { + for _, msg := range m.Exprs { + dAtA[i] = 0xa + i++ + i = encodeVarintExpression(dAtA, i, uint64(msg.Size())) + n, err := msg.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n + } + } + if m.XXX_unrecognized != nil { + i += copy(dAtA[i:], m.XXX_unrecognized) + } + return i, nil +} + +func (m *ByItem) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *ByItem) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if m.Expr != nil { + dAtA[i] = 0xa + i++ + i = encodeVarintExpression(dAtA, i, uint64(m.Expr.Size())) + n6, err := m.Expr.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n6 + } + dAtA[i] = 0x10 + i++ if m.Desc { dAtA[i] = 1 } else { @@ -2634,11 +3166,11 @@ func (m *ByItem) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x1a i++ i = encodeVarintExpression(dAtA, i, uint64(m.RpnExpr.Size())) - n3, err := m.RpnExpr.MarshalTo(dAtA[i:]) + n7, err := m.RpnExpr.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n3 + i += n7 } if m.XXX_unrecognized != nil { i += copy(dAtA[i:], m.XXX_unrecognized) @@ -2678,6 +3210,72 @@ func (m *FieldType) Size() (n int) { return n } +func (m *FTSBooleanTerm) Size() (n int) { + var l int + _ = l + n += 1 + sovExpression(uint64(m.TermType)) + l = len(m.Text) + n += 1 + l + sovExpression(uint64(l)) + n += 1 + sovExpression(uint64(m.PhraseDistance)) + if m.XXX_unrecognized != nil { + n += len(m.XXX_unrecognized) + } + return n +} + +func (m *FTSBooleanQuery) Size() (n int) { + var l int + _ = l + if len(m.Nodes) > 0 { + for _, e := range m.Nodes { + l = e.Size() + n += 1 + l + sovExpression(uint64(l)) + } + } + l = len(m.QueryTokenizer) + n += 1 + l + sovExpression(uint64(l)) + n += 1 + sovExpression(uint64(m.NgramTokenSize)) + n += 1 + sovExpression(uint64(m.InnodbFtMinTokenSize)) + n += 1 + sovExpression(uint64(m.InnodbFtMaxTokenSize)) + n += 2 + if m.XXX_unrecognized != nil { + n += len(m.XXX_unrecognized) + } + return n +} + +func (m *FTSBooleanNode) Size() (n int) { + var l int + _ = l + n += 1 + sovExpression(uint64(m.Occur)) + n += 1 + sovExpression(uint64(m.Modifier)) + if m.Node != nil { + n += m.Node.Size() + } + if m.XXX_unrecognized != nil { + n += len(m.XXX_unrecognized) + } + return n +} + +func (m *FTSBooleanNode_Term) Size() (n int) { + var l int + _ = l + if m.Term != nil { + l = m.Term.Size() + n += 1 + l + sovExpression(uint64(l)) + } + return n +} +func (m *FTSBooleanNode_SubExpression) Size() (n int) { + var l int + _ = l + if m.SubExpression != nil { + l = m.SubExpression.Size() + n += 1 + l + sovExpression(uint64(l)) + } + return n +} func (m *Expr) Size() (n int) { var l int _ = l @@ -2710,6 +3308,10 @@ func (m *Expr) Size() (n int) { if m.AggFuncMode != nil { n += 1 + sovExpression(uint64(*m.AggFuncMode)) } + if m.FtsBooleanQuery != nil { + l = m.FtsBooleanQuery.Size() + n += 1 + l + sovExpression(uint64(l)) + } if m.XXX_unrecognized != nil { n += len(m.XXX_unrecognized) } @@ -2725,44 +3327,386 @@ func (m *RpnExpr) Size() (n int) { n += 1 + l + sovExpression(uint64(l)) } } - if m.XXX_unrecognized != nil { - n += len(m.XXX_unrecognized) - } - return n -} - -func (m *ByItem) Size() (n int) { - var l int - _ = l - if m.Expr != nil { - l = m.Expr.Size() - n += 1 + l + sovExpression(uint64(l)) - } - n += 2 - if m.RpnExpr != nil { - l = m.RpnExpr.Size() - n += 1 + l + sovExpression(uint64(l)) - } - if m.XXX_unrecognized != nil { - n += len(m.XXX_unrecognized) - } - return n -} + if m.XXX_unrecognized != nil { + n += len(m.XXX_unrecognized) + } + return n +} + +func (m *ByItem) Size() (n int) { + var l int + _ = l + if m.Expr != nil { + l = m.Expr.Size() + n += 1 + l + sovExpression(uint64(l)) + } + n += 2 + if m.RpnExpr != nil { + l = m.RpnExpr.Size() + n += 1 + l + sovExpression(uint64(l)) + } + if m.XXX_unrecognized != nil { + n += len(m.XXX_unrecognized) + } + return n +} + +func sovExpression(x uint64) (n int) { + for { + n++ + x >>= 7 + if x == 0 { + break + } + } + return n +} +func sozExpression(x uint64) (n int) { + return sovExpression(uint64((x << 1) ^ uint64((int64(x) >> 63)))) +} +func (m *FieldType) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowExpression + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: FieldType: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: FieldType: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Tp", wireType) + } + m.Tp = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowExpression + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.Tp |= (int32(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + case 2: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Flag", wireType) + } + m.Flag = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowExpression + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.Flag |= (uint32(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + case 3: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Flen", wireType) + } + m.Flen = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowExpression + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.Flen |= (int32(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + case 4: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Decimal", wireType) + } + m.Decimal = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowExpression + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.Decimal |= (int32(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + case 5: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Collate", wireType) + } + m.Collate = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowExpression + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.Collate |= (int32(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + case 6: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Charset", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowExpression + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthExpression + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Charset = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 7: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Elems", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowExpression + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthExpression + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Elems = append(m.Elems, string(dAtA[iNdEx:postIndex])) + iNdEx = postIndex + case 8: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Array", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowExpression + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + m.Array = bool(v != 0) + default: + iNdEx = preIndex + skippy, err := skipExpression(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthExpression + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *FTSBooleanTerm) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowExpression + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: FTSBooleanTerm: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: FTSBooleanTerm: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field TermType", wireType) + } + m.TermType = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowExpression + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.TermType |= (FTSBooleanTermType(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Text", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowExpression + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthExpression + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Text = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field PhraseDistance", wireType) + } + m.PhraseDistance = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowExpression + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.PhraseDistance |= (uint32(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + default: + iNdEx = preIndex + skippy, err := skipExpression(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthExpression + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) + iNdEx += skippy + } + } -func sovExpression(x uint64) (n int) { - for { - n++ - x >>= 7 - if x == 0 { - break - } + if iNdEx > l { + return io.ErrUnexpectedEOF } - return n -} -func sozExpression(x uint64) (n int) { - return sovExpression(uint64((x << 1) ^ uint64((int64(x) >> 63)))) + return nil } -func (m *FieldType) Unmarshal(dAtA []byte) error { +func (m *FTSBooleanQuery) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -2785,17 +3729,17 @@ func (m *FieldType) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: FieldType: wiretype end group for non-group") + return fmt.Errorf("proto: FTSBooleanQuery: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: FieldType: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: FTSBooleanQuery: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field Tp", wireType) + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Nodes", wireType) } - m.Tp = 0 + var msglen int for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowExpression @@ -2805,16 +3749,28 @@ func (m *FieldType) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.Tp |= (int32(b) & 0x7F) << shift + msglen |= (int(b) & 0x7F) << shift if b < 0x80 { break } } + if msglen < 0 { + return ErrInvalidLengthExpression + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Nodes = append(m.Nodes, &FTSBooleanNode{}) + if err := m.Nodes[len(m.Nodes)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex case 2: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field Flag", wireType) + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field QueryTokenizer", wireType) } - m.Flag = 0 + var stringLen uint64 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowExpression @@ -2824,16 +3780,26 @@ func (m *FieldType) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.Flag |= (uint32(b) & 0x7F) << shift + stringLen |= (uint64(b) & 0x7F) << shift if b < 0x80 { break } } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthExpression + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.QueryTokenizer = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex case 3: if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field Flen", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field NgramTokenSize", wireType) } - m.Flen = 0 + m.NgramTokenSize = 0 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowExpression @@ -2843,16 +3809,16 @@ func (m *FieldType) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.Flen |= (int32(b) & 0x7F) << shift + m.NgramTokenSize |= (uint32(b) & 0x7F) << shift if b < 0x80 { break } } case 4: if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field Decimal", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field InnodbFtMinTokenSize", wireType) } - m.Decimal = 0 + m.InnodbFtMinTokenSize = 0 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowExpression @@ -2862,16 +3828,16 @@ func (m *FieldType) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.Decimal |= (int32(b) & 0x7F) << shift + m.InnodbFtMinTokenSize |= (uint32(b) & 0x7F) << shift if b < 0x80 { break } } case 5: if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field Collate", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field InnodbFtMaxTokenSize", wireType) } - m.Collate = 0 + m.InnodbFtMaxTokenSize = 0 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowExpression @@ -2881,16 +3847,16 @@ func (m *FieldType) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.Collate |= (int32(b) & 0x7F) << shift + m.InnodbFtMaxTokenSize |= (uint32(b) & 0x7F) << shift if b < 0x80 { break } } case 6: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Charset", wireType) + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field InnodbFtEnableStopword", wireType) } - var stringLen uint64 + var v int for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowExpression @@ -2900,26 +3866,106 @@ func (m *FieldType) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= (uint64(b) & 0x7F) << shift + v |= (int(b) & 0x7F) << shift if b < 0x80 { break } } - intStringLen := int(stringLen) - if intStringLen < 0 { + m.InnodbFtEnableStopword = bool(v != 0) + default: + iNdEx = preIndex + skippy, err := skipExpression(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { return ErrInvalidLengthExpression } - postIndex := iNdEx + intStringLen - if postIndex > l { + if (iNdEx + skippy) > l { return io.ErrUnexpectedEOF } - m.Charset = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 7: + m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *FTSBooleanNode) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowExpression + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: FTSBooleanNode: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: FTSBooleanNode: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Occur", wireType) + } + m.Occur = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowExpression + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.Occur |= (FTSBooleanOccur(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + case 2: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Modifier", wireType) + } + m.Modifier = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowExpression + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.Modifier |= (FTSBooleanModifier(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + case 3: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Elems", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Term", wireType) } - var stringLen uint64 + var msglen int for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowExpression @@ -2929,26 +3975,29 @@ func (m *FieldType) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= (uint64(b) & 0x7F) << shift + msglen |= (int(b) & 0x7F) << shift if b < 0x80 { break } } - intStringLen := int(stringLen) - if intStringLen < 0 { + if msglen < 0 { return ErrInvalidLengthExpression } - postIndex := iNdEx + intStringLen + postIndex := iNdEx + msglen if postIndex > l { return io.ErrUnexpectedEOF } - m.Elems = append(m.Elems, string(dAtA[iNdEx:postIndex])) + v := &FTSBooleanTerm{} + if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + m.Node = &FTSBooleanNode_Term{v} iNdEx = postIndex - case 8: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field Array", wireType) + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field SubExpression", wireType) } - var v int + var msglen int for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowExpression @@ -2958,12 +4007,24 @@ func (m *FieldType) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - v |= (int(b) & 0x7F) << shift + msglen |= (int(b) & 0x7F) << shift if b < 0x80 { break } } - m.Array = bool(v != 0) + if msglen < 0 { + return ErrInvalidLengthExpression + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + v := &FTSBooleanQuery{} + if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + m.Node = &FTSBooleanNode_SubExpression{v} + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipExpression(dAtA[iNdEx:]) @@ -3239,6 +4300,39 @@ func (m *Expr) Unmarshal(dAtA []byte) error { } } m.AggFuncMode = &v + case 10: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field FtsBooleanQuery", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowExpression + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthExpression + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.FtsBooleanQuery == nil { + m.FtsBooleanQuery = &FTSBooleanQuery{} + } + if err := m.FtsBooleanQuery.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipExpression(dAtA[iNdEx:]) @@ -3588,373 +4682,403 @@ var ( func init() { proto.RegisterFile("expression.proto", fileDescriptorExpression) } var fileDescriptorExpression = []byte{ - // 5880 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x74, 0x7b, 0x67, 0x78, 0x24, 0xc5, - 0xb9, 0x2e, 0xb3, 0x81, 0xdd, 0xed, 0x4d, 0x45, 0xb3, 0x8b, 0x86, 0x35, 0x5e, 0x49, 0xc8, 0xf7, - 0x4a, 0xc6, 0xf7, 0x6a, 0x16, 0x81, 0x47, 0xfe, 0x71, 0xd2, 0xac, 0x12, 0xe3, 0x23, 0x69, 0xb5, - 0x9a, 0x91, 0xf0, 0xf9, 0xc5, 0xd3, 0x9a, 0x29, 0x8d, 0xda, 0xcc, 0x74, 0x0f, 0xdd, 0x35, 0xbb, - 0x92, 0x4f, 0x78, 0xc8, 0x39, 0xdb, 0xc0, 0x92, 0x37, 0x12, 0x9d, 0x33, 0x39, 0xda, 0xec, 0x12, - 0x6c, 0x30, 0x39, 0xc3, 0x02, 0x26, 0xdb, 0x60, 0x72, 0xf4, 0x79, 0xbe, 0xb7, 0xc2, 0x74, 0x8f, - 0xe4, 0x5f, 0xea, 0x7a, 0xbf, 0xf4, 0xd6, 0x57, 0x5f, 0x55, 0x57, 0x55, 0x8f, 0x2c, 0xc6, 0xa7, - 0xab, 0x01, 0x0f, 0x43, 0xd7, 0xf7, 0x3a, 0xab, 0x81, 0x2f, 0x7c, 0x7b, 0x81, 0x70, 0xab, 0x13, - 0x6b, 0x56, 0x54, 0xb8, 0x70, 0x8a, 0x8e, 0x70, 0x24, 0xba, 0x66, 0x55, 0xc9, 0x2f, 0xf9, 0x78, - 0x4c, 0xd1, 0x93, 0x44, 0x0f, 0x7e, 0x3b, 0x61, 0x2d, 0xe9, 0x77, 0x79, 0xb9, 0x98, 0x9f, 0xa9, - 0x72, 0x7b, 0x95, 0x35, 0x4f, 0x54, 0x93, 0x89, 0x96, 0x44, 0xc7, 0xc2, 0xf5, 0x0b, 0x76, 0x3f, - 0xd7, 0xbc, 0xcf, 0xe8, 0x3c, 0x51, 0xb5, 0x93, 0xd6, 0x82, 0xc9, 0xb2, 0x53, 0x4a, 0xce, 0x6b, - 0x49, 0x74, 0x2c, 0x57, 0x38, 0x10, 0x29, 0xe1, 0x5e, 0x72, 0x7e, 0xc4, 0x02, 0x88, 0xbd, 0xd6, - 0x5a, 0x54, 0xe4, 0x05, 0xb7, 0xe2, 0x94, 0x93, 0x0b, 0x22, 0x42, 0x0d, 0x92, 0xbc, 0xe0, 0x97, - 0xcb, 0x8e, 0xe0, 0xc9, 0x85, 0x51, 0xb9, 0x02, 0x21, 0x9f, 0x72, 0x82, 0x90, 0x8b, 0xe4, 0xbe, - 0x2d, 0x89, 0x8e, 0x25, 0x46, 0x2e, 0x41, 0x7b, 0x8d, 0xb5, 0x90, 0x97, 0x79, 0x25, 0x4c, 0x2e, - 0x6a, 0x99, 0x6f, 0xa4, 0x12, 0x22, 0x99, 0x13, 0x04, 0xce, 0x4c, 0x72, 0x71, 0x4b, 0xa2, 0x63, - 0xb1, 0x96, 0x01, 0x3a, 0xf8, 0x9d, 0x79, 0xd6, 0x82, 0xbe, 0xe9, 0x6a, 0x60, 0x7f, 0xcd, 0x74, - 0x75, 0x45, 0xd7, 0x8a, 0x4e, 0xca, 0x58, 0x27, 0xe1, 0x94, 0x86, 0x48, 0xd7, 0x99, 0x35, 0x7f, - 0x93, 0x53, 0x46, 0xcf, 0x97, 0x8d, 0xd2, 0xa3, 0xfd, 0x7f, 0xad, 0xc5, 0x85, 0x29, 0xb7, 0x5c, - 0x0c, 0xd0, 0xed, 0xf9, 0x1d, 0x4b, 0xbb, 0xac, 0xba, 0xf5, 0xa8, 0x91, 0xd9, 0xdf, 0xb0, 0xe6, - 0x87, 0x6e, 0x09, 0x9d, 0x5f, 0xd1, 0xb5, 0xbf, 0x54, 0xc9, 0x15, 0x9c, 0xb2, 0x13, 0xf4, 0xd7, - 0xbc, 0x42, 0xce, 0x2d, 0xa9, 0x28, 0xa4, 0x65, 0x77, 0x5a, 0xd6, 0x24, 0x0d, 0xc2, 0x51, 0x62, - 0xa6, 0x2a, 0x13, 0xb2, 0xb4, 0x6b, 0xa5, 0xb4, 0x31, 0x83, 0x33, 0xba, 0x64, 0xd2, 0x8c, 0x53, - 0x8b, 0xb5, 0x2c, 0xa8, 0x7a, 0x47, 0x39, 0x41, 0x29, 0x3c, 0x8a, 0xf2, 0x4f, 0x29, 0x5a, 0x3e, - 0x6a, 0x05, 0x55, 0x2f, 0x13, 0x94, 0xc2, 0x41, 0xee, 0xd9, 0xed, 0xd6, 0xb2, 0x29, 0x27, 0x3c, - 0xaa, 0xe8, 0x86, 0xc2, 0xf5, 0x0a, 0x22, 0xb9, 0x28, 0x92, 0x8a, 0xa5, 0x53, 0x4e, 0xd8, 0xab, - 0x04, 0x76, 0xbb, 0xb5, 0xd8, 0x0f, 0x8a, 0x3c, 0x38, 0x6a, 0x82, 0xf2, 0x45, 0xfd, 0x59, 0x26, - 0x03, 0xaf, 0x9f, 0xc9, 0x0a, 0x5e, 0x19, 0x5d, 0x04, 0xe9, 0xfa, 0x19, 0xbb, 0xdb, 0x5a, 0xea, - 0x94, 0x4a, 0x44, 0x7e, 0xc8, 0x2f, 0xf2, 0xe4, 0x12, 0x74, 0x6c, 0xb5, 0xd4, 0xcd, 0x48, 0x81, - 0x70, 0x7d, 0x8f, 0x84, 0xa3, 0x51, 0xcd, 0x83, 0xbf, 0x61, 0x2d, 0x1a, 0xad, 0x7a, 0x48, 0x7a, - 0x8b, 0xb5, 0x90, 0xaa, 0x35, 0x4c, 0x26, 0x66, 0x65, 0x4e, 0x0a, 0x0e, 0x2e, 0x5b, 0xfb, 0xca, - 0xc0, 0xf6, 0x5a, 0x6b, 0x01, 0x41, 0x18, 0xa2, 0xb8, 0x2a, 0x70, 0xaa, 0xbd, 0x22, 0x0f, 0x0b, - 0x18, 0x1b, 0xdd, 0x33, 0x20, 0x76, 0x87, 0xb5, 0x98, 0xb2, 0x03, 0xeb, 0xf9, 0xb0, 0x5e, 0x2e, - 0xad, 0x15, 0x8d, 0xd1, 0x45, 0x81, 0x7c, 0x38, 0xe4, 0xe5, 0x85, 0xd6, 0x62, 0x3d, 0xea, 0xf6, - 0x62, 0x6b, 0xc1, 0x70, 0xad, 0x5c, 0x66, 0xfb, 0xd8, 0x4b, 0xac, 0x85, 0x59, 0x4f, 0xa4, 0x0f, - 0x67, 0x09, 0xdb, 0xb2, 0xf6, 0x1d, 0x73, 0xf1, 0x3c, 0xcf, 0x5e, 0x6a, 0x2d, 0xea, 0x2f, 0xfb, - 0x8e, 0x38, 0xac, 0x8b, 0xcd, 0x37, 0x8d, 0xf4, 0xe1, 0x6c, 0x01, 0x69, 0xe5, 0x44, 0xe0, 0x7a, - 0x25, 0xb6, 0x90, 0x8c, 0xd7, 0xcf, 0x08, 0x1e, 0xb2, 0x7d, 0xed, 0x65, 0xd6, 0xe2, 0xa1, 0x99, - 0xf0, 0x98, 0xf2, 0x7a, 0x57, 0x30, 0x6e, 0x33, 0x6b, 0x19, 0x5a, 0xbd, 0x72, 0x0a, 0xb0, 0x49, - 0x7b, 0x3f, 0x6b, 0xb9, 0x44, 0x6a, 0x81, 0x43, 0xb9, 0x63, 0x25, 0x7b, 0xb9, 0xb5, 0x04, 0x50, - 0x9f, 0x57, 0xab, 0xb0, 0x29, 0xe3, 0xe1, 0x08, 0x3e, 0xcd, 0x5c, 0xd3, 0xca, 0x71, 0xc1, 0xbe, - 0x6b, 0x54, 0xf3, 0x6e, 0x85, 0xb3, 0xa3, 0x4d, 0xf3, 0xdb, 0xa1, 0xef, 0xb1, 0xb2, 0xbd, 0xda, - 0xda, 0x2f, 0xef, 0xf6, 0xae, 0x1f, 0xe7, 0x05, 0xe1, 0x07, 0x9a, 0xf6, 0x8c, 0xbd, 0xc2, 0x5a, - 0x32, 0xee, 0x94, 0x6b, 0x7c, 0xd0, 0x0d, 0x05, 0xbb, 0x28, 0x41, 0xed, 0x1e, 0xbf, 0x5c, 0xab, - 0x78, 0xa3, 0x7c, 0x92, 0xed, 0xa1, 0xfe, 0x2e, 0xec, 0xf1, 0x6b, 0x9e, 0x60, 0x37, 0x34, 0xd9, - 0x8b, 0xad, 0xf9, 0xb9, 0x5a, 0x85, 0xdd, 0x88, 0xa7, 0xcc, 0xa6, 0x12, 0xbb, 0x09, 0x4f, 0x43, - 0xae, 0xc7, 0x6e, 0x96, 0x4f, 0xce, 0x34, 0xbb, 0xa5, 0x89, 0x6c, 0xfa, 0xdd, 0x20, 0x14, 0xec, - 0xd6, 0x26, 0x9b, 0x59, 0x4b, 0x07, 0x02, 0xbf, 0x56, 0xed, 0xf1, 0xbd, 0x82, 0x23, 0xd8, 0x6d, - 0x4d, 0xf6, 0x4a, 0xcb, 0xca, 0x94, 0x4a, 0x47, 0xad, 0x77, 0x45, 0xc6, 0x2b, 0xb2, 0xdb, 0x9b, - 0x28, 0xa4, 0x02, 0x36, 0x04, 0xec, 0x8e, 0xa8, 0xc2, 0x77, 0xfc, 0x80, 0xdd, 0x29, 0xe3, 0x8a, - 0x22, 0xbb, 0xab, 0xc9, 0x5e, 0x4a, 0x79, 0x2d, 0x16, 0xf9, 0x26, 0x76, 0x37, 0xec, 0x64, 0x63, - 0xc4, 0xaf, 0xb2, 0xdf, 0xc1, 0x4e, 0xb6, 0x73, 0x4e, 0xa5, 0xca, 0x7e, 0x0f, 0xed, 0x71, 0x27, - 0x20, 0xe9, 0x3d, 0x4d, 0xf6, 0x32, 0x6b, 0xd1, 0xb8, 0x13, 0x40, 0xb4, 0xbb, 0xc9, 0x5e, 0x6e, - 0x2d, 0x1e, 0x77, 0x02, 0xd7, 0xf1, 0x0a, 0x9c, 0xed, 0x69, 0xb2, 0xf7, 0xb3, 0x96, 0x51, 0x9a, - 0x32, 0xb4, 0x24, 0x64, 0x4a, 0x25, 0x76, 0x6f, 0x93, 0x6d, 0x5b, 0xcb, 0x09, 0xda, 0x30, 0xf1, - 0x5d, 0x5e, 0x10, 0x84, 0xdd, 0xd7, 0x64, 0x27, 0xad, 0xfd, 0x33, 0xd5, 0x6a, 0xe0, 0x4f, 0x23, - 0x25, 0x7a, 0xca, 0xb0, 0xfb, 0xc1, 0x65, 0xd4, 0xdf, 0x3c, 0x5c, 0xab, 0x4c, 0xf0, 0x80, 0x6d, - 0x6b, 0xb6, 0x97, 0x58, 0x0b, 0x46, 0x1d, 0xef, 0x68, 0xb6, 0xbd, 0x99, 0x44, 0xbd, 0xdc, 0x0b, - 0x39, 0xda, 0x3b, 0x9a, 0x29, 0x74, 0x4f, 0xad, 0xc2, 0xc9, 0x9a, 0xed, 0x6c, 0xa6, 0x04, 0x8d, - 0xf0, 0xa0, 0xc0, 0x3d, 0x01, 0x85, 0x5d, 0xcd, 0x94, 0xbe, 0x61, 0xe1, 0x96, 0x39, 0xbb, 0x0a, - 0x7e, 0x06, 0xb9, 0x53, 0x64, 0x57, 0x37, 0x53, 0x16, 0x06, 0x9d, 0x12, 0xbb, 0xa6, 0x99, 0x3a, - 0x8a, 0xfc, 0x62, 0xe0, 0xd8, 0xb5, 0x08, 0x31, 0xe8, 0xe8, 0xf6, 0x75, 0x08, 0x31, 0x2c, 0xa6, - 0x64, 0xf3, 0x7a, 0xe8, 0xd7, 0x57, 0x1a, 0x76, 0xee, 0xf0, 0x21, 0x6f, 0x4c, 0x58, 0xcb, 0x63, - 0x6b, 0x8f, 0xbd, 0xd2, 0x5a, 0x3a, 0xe6, 0x85, 0x55, 0x5e, 0x70, 0x27, 0x5d, 0x5e, 0x64, 0xfb, - 0x50, 0x71, 0xf6, 0x38, 0xa1, 0xc8, 0x7a, 0x22, 0x13, 0x66, 0x3d, 0xc1, 0x12, 0x54, 0x9c, 0x06, - 0x19, 0xe5, 0x4e, 0x99, 0xcd, 0xb3, 0xf7, 0xb7, 0x56, 0x1a, 0x48, 0xd5, 0xfb, 0x7c, 0x7b, 0x95, - 0xc5, 0x0c, 0xa8, 0x4b, 0x7b, 0x41, 0xcc, 0x1a, 0x05, 0xba, 0x90, 0x2a, 0xb2, 0xae, 0xa8, 0x2b, - 0x7e, 0xdf, 0x98, 0x26, 0x6a, 0x77, 0x91, 0x86, 0x28, 0xaa, 0x64, 0x63, 0xd9, 0xb6, 0xb5, 0xa2, - 0x0e, 0x81, 0xce, 0x52, 0x1d, 0x59, 0x62, 0x8a, 0xcf, 0x32, 0x1d, 0x46, 0xa2, 0x9a, 0xd0, 0xf2, - 0xb8, 0x03, 0x30, 0x5a, 0x61, 0x1f, 0x60, 0xd9, 0x11, 0x55, 0x4d, 0x69, 0x65, 0x5c, 0x17, 0x9c, - 0x98, 0x0e, 0xa6, 0x1c, 0x4a, 0x5a, 0xab, 0x74, 0x30, 0x83, 0x82, 0xd9, 0x6a, 0xbb, 0xc9, 0xda, - 0x3f, 0x06, 0x2b, 0x72, 0x07, 0xd8, 0x49, 0x6b, 0x55, 0x4c, 0xa0, 0xf9, 0x35, 0xcd, 0xf2, 0x04, - 0x8a, 0x49, 0xfb, 0x40, 0x6b, 0x75, 0xdc, 0x40, 0xb3, 0x3c, 0x70, 0x96, 0x05, 0x88, 0xae, 0xd1, - 0x83, 0x24, 0x43, 0x4a, 0x9e, 0x6b, 0x35, 0x7b, 0x0d, 0x82, 0x66, 0xb3, 0xee, 0xbf, 0x46, 0x15, - 0xcb, 0x16, 0x4d, 0x5f, 0xe3, 0x9a, 0x64, 0x6b, 0xa3, 0x1b, 0x70, 0x3c, 0x58, 0x77, 0xca, 0xa8, - 0x6b, 0x8a, 0x6d, 0x8d, 0xfa, 0x60, 0xf8, 0x35, 0x3d, 0xbc, 0x64, 0x2d, 0xf9, 0x75, 0xe8, 0x8c, - 0x4b, 0x08, 0xec, 0xbe, 0xae, 0x8d, 0x25, 0xa6, 0xb8, 0x1d, 0xa2, 0x7b, 0x2d, 0x51, 0xcd, 0xec, - 0x1b, 0x71, 0x07, 0xe0, 0xf5, 0xff, 0x74, 0xf7, 0x94, 0xaa, 0x66, 0xf5, 0xff, 0xe3, 0xba, 0xe0, - 0xd4, 0x69, 0x92, 0xa9, 0xb4, 0x24, 0xaf, 0x2e, 0xed, 0xa2, 0x0e, 0x83, 0xdb, 0x61, 0x66, 0x1c, - 0x0d, 0xae, 0xf8, 0x1d, 0x6e, 0x06, 0xcc, 0x48, 0x34, 0xc7, 0x6f, 0xce, 0x76, 0x06, 0x9e, 0x69, - 0x7b, 0x8d, 0x75, 0x40, 0x83, 0x89, 0xe6, 0xda, 0x3d, 0xdb, 0x06, 0x7c, 0xbf, 0xa5, 0x73, 0x88, - 0x55, 0x0c, 0x5c, 0xff, 0x49, 0x77, 0x4b, 0x42, 0xe0, 0xf9, 0xcf, 0x3a, 0x87, 0x12, 0x53, 0x1c, - 0xff, 0x45, 0x77, 0x56, 0xa2, 0x9a, 0xdf, 0xbf, 0xc6, 0x1d, 0x80, 0xdb, 0xbf, 0xe9, 0xf8, 0x4a, - 0x55, 0xf3, 0xca, 0xc4, 0x75, 0xc1, 0x69, 0x3d, 0x2d, 0x6d, 0x3d, 0xbe, 0x53, 0xe6, 0x61, 0x81, - 0x13, 0xa3, 0xd7, 0x5b, 0x68, 0x9d, 0xd5, 0x08, 0x08, 0xbd, 0xd1, 0x62, 0xaf, 0xb2, 0x56, 0x6a, - 0x48, 0x47, 0x7e, 0xb3, 0xc5, 0xde, 0xdf, 0x5a, 0xa1, 0x51, 0xc5, 0xf2, 0xad, 0x98, 0x35, 0xd8, - 0xbc, 0xdd, 0x62, 0xaf, 0xb6, 0x98, 0xb1, 0xd6, 0x64, 0xfe, 0x12, 0xd3, 0x04, 0x97, 0xbf, 0xb6, - 0xd0, 0x6b, 0x78, 0x30, 0x4f, 0x34, 0x8a, 0xf4, 0x76, 0x1e, 0xcc, 0x23, 0x3e, 0xa7, 0xb7, 0xe4, - 0x60, 0xbe, 0xfe, 0x06, 0x5e, 0x66, 0x2d, 0x1e, 0xcc, 0xab, 0x88, 0x25, 0xa9, 0x88, 0x50, 0x53, - 0xf6, 0x0a, 0xcb, 0x1a, 0xcc, 0x9b, 0x18, 0xae, 0x94, 0xc1, 0xf9, 0x77, 0xe1, 0xbb, 0x8f, 0x7c, - 0x7b, 0x80, 0xfb, 0xe0, 0xdb, 0x87, 0xef, 0x3e, 0xed, 0xbb, 0x0a, 0xdf, 0x7d, 0xca, 0xf7, 0x31, - 0x52, 0x11, 0xbe, 0x03, 0xf8, 0xee, 0x33, 0xbe, 0x43, 0x29, 0x83, 0x6f, 0x41, 0xbe, 0x07, 0xc0, - 0x7b, 0x9a, 0xe0, 0x01, 0xc9, 0x7b, 0x86, 0x7c, 0x0f, 0x18, 0xde, 0xdf, 0x23, 0xdf, 0x03, 0x9a, - 0xf7, 0x7f, 0x4a, 0x45, 0xf8, 0xfe, 0x2f, 0xf2, 0x3d, 0x50, 0xe7, 0xfd, 0xdf, 0x52, 0x06, 0xdf, - 0xff, 0x23, 0x5f, 0xce, 0xdc, 0x11, 0x1c, 0xcb, 0x2d, 0xfb, 0x08, 0x89, 0xd3, 0x08, 0x02, 0x7d, - 0x8c, 0x01, 0xd2, 0x90, 0x8e, 0xf7, 0x09, 0x06, 0x48, 0xa3, 0x2a, 0xec, 0xa7, 0x31, 0x6b, 0x44, - 0xff, 0xac, 0x85, 0x5e, 0x45, 0x83, 0x5c, 0x2e, 0xe7, 0xec, 0xf3, 0x16, 0xbc, 0xa9, 0xb8, 0x5a, - 0x4a, 0xd9, 0x17, 0xb0, 0x40, 0x5b, 0x7b, 0xfe, 0xb2, 0x85, 0x48, 0x01, 0x52, 0x6e, 0xff, 0x5e, - 0x37, 0x82, 0xcf, 0x63, 0x5b, 0x49, 0x23, 0xeb, 0x09, 0x1e, 0x6c, 0x72, 0xca, 0xe4, 0xf6, 0xb8, - 0x56, 0x72, 0xa3, 0x11, 0x78, 0x3e, 0xbe, 0x95, 0xde, 0xa2, 0x03, 0x18, 0x93, 0xe3, 0x13, 0xb4, - 0x11, 0x18, 0x90, 0x83, 0x72, 0x02, 0x76, 0x38, 0x03, 0x66, 0x54, 0x4e, 0x4c, 0x10, 0xc3, 0x01, - 0x3d, 0x2c, 0x27, 0x29, 0x5d, 0x44, 0x3a, 0x39, 0x41, 0x6f, 0xce, 0x81, 0xfa, 0xc0, 0x9c, 0xa2, - 0xa4, 0xc8, 0xde, 0xa9, 0xd8, 0x1b, 0xf5, 0x6d, 0xa4, 0x10, 0x67, 0x42, 0xd0, 0xb7, 0x11, 0x21, - 0xce, 0x42, 0x88, 0xbe, 0x8d, 0x3a, 0xc4, 0xd9, 0x08, 0xd1, 0xb7, 0x51, 0x85, 0x38, 0x47, 0xe9, - 0x22, 0xc4, 0xb9, 0x08, 0xd1, 0xb7, 0xd1, 0x84, 0x38, 0x4f, 0x49, 0x11, 0xe2, 0x7c, 0x84, 0x18, - 0x46, 0x2f, 0x2e, 0x84, 0x60, 0x58, 0xf6, 0x42, 0xee, 0xd3, 0x86, 0x4d, 0x2f, 0xb6, 0x20, 0xc4, - 0xb0, 0xee, 0xc5, 0xc5, 0x4a, 0x17, 0x21, 0x2e, 0x41, 0x88, 0xe1, 0x7a, 0x2f, 0x2e, 0x55, 0x52, - 0x84, 0xb8, 0x4c, 0x7a, 0xaa, 0x95, 0xcb, 0xb2, 0x27, 0x5b, 0xa5, 0x36, 0xda, 0x08, 0xb5, 0x2d, - 0x41, 0x3b, 0x21, 0x09, 0xe8, 0x70, 0xdb, 0x69, 0x33, 0xb0, 0x4c, 0x62, 0x2a, 0xe4, 0x8e, 0x88, - 0x1d, 0xc2, 0xee, 0x4c, 0x50, 0x89, 0x28, 0x3b, 0x1d, 0x7a, 0x57, 0x44, 0x0b, 0xe1, 0xaf, 0x02, - 0xf1, 0x91, 0x72, 0x4d, 0xae, 0x4f, 0xbb, 0x13, 0xd8, 0x0e, 0x95, 0x6b, 0x66, 0x11, 0xda, 0x93, - 0xa0, 0x8d, 0x1b, 0x21, 0xc4, 0xee, 0x3e, 0xb0, 0x1d, 0x72, 0x3d, 0xa5, 0x7f, 0x3f, 0x88, 0xa0, - 0xad, 0x0d, 0x1e, 0x80, 0x47, 0x40, 0x64, 0xf1, 0x47, 0xa9, 0x51, 0x2b, 0x0b, 0xb7, 0x5a, 0x9e, - 0x81, 0xd1, 0x83, 0x09, 0x2a, 0x69, 0x0d, 0x69, 0xbb, 0x87, 0x10, 0x5a, 0xa3, 0x64, 0xfa, 0x27, - 0x90, 0xed, 0x75, 0x37, 0xb9, 0x45, 0xb9, 0x58, 0x3d, 0x8c, 0x54, 0x48, 0x40, 0x9b, 0x3d, 0x92, - 0x50, 0xb5, 0x27, 0x61, 0xb2, 0x7b, 0x34, 0x41, 0xab, 0x92, 0x81, 0xb4, 0xe6, 0x63, 0xe8, 0xc9, - 0x90, 0x5f, 0x84, 0xaf, 0xc7, 0xe1, 0x7c, 0xc8, 0x2f, 0x6a, 0xf1, 0x13, 0x18, 0x95, 0x21, 0xbf, - 0x48, 0x2e, 0x9e, 0x4c, 0xd0, 0x56, 0x33, 0x42, 0x66, 0xcc, 0x0b, 0xdd, 0x92, 0xc7, 0x8b, 0xec, - 0xa9, 0x84, 0x7d, 0x90, 0xd5, 0xa4, 0xf2, 0xa1, 0x51, 0x23, 0x7d, 0x3a, 0x61, 0xaf, 0xb1, 0x56, - 0x37, 0x48, 0x73, 0x52, 0xf6, 0x4c, 0x54, 0x96, 0x8b, 0xdb, 0x3d, 0x8b, 0x78, 0x31, 0x99, 0xb2, - 0x7a, 0x2e, 0x61, 0x7f, 0xc5, 0x3a, 0x40, 0xd2, 0x9a, 0x15, 0xee, 0xf9, 0x84, 0x7d, 0xa0, 0xb5, - 0x2a, 0x2e, 0x54, 0x76, 0x2f, 0x44, 0x44, 0x0d, 0xc1, 0x5e, 0x4c, 0xd8, 0x4d, 0x96, 0x1d, 0x15, - 0x29, 0x9b, 0xbd, 0x09, 0xfb, 0xab, 0x56, 0x52, 0x0f, 0xdd, 0xac, 0x68, 0x2f, 0x49, 0x2a, 0x0d, - 0x62, 0x65, 0xfb, 0x72, 0x4c, 0xd8, 0x10, 0xf1, 0x15, 0x49, 0x26, 0x26, 0x54, 0x76, 0x7f, 0x4e, - 0xd8, 0x6d, 0xd6, 0x5a, 0x2d, 0xea, 0xf7, 0x83, 0x42, 0xdd, 0xce, 0xd8, 0xbf, 0x9a, 0xb0, 0x5b, - 0xad, 0x83, 0xe6, 0x56, 0x52, 0x7e, 0x5e, 0x9b, 0x43, 0xa5, 0x81, 0xc5, 0xeb, 0x50, 0x89, 0x96, - 0xca, 0xac, 0x40, 0x6f, 0x24, 0xec, 0x66, 0x6b, 0xcd, 0x5c, 0x2a, 0x2a, 0xcc, 0x9b, 0x48, 0x51, - 0x54, 0x21, 0xd6, 0x9b, 0xb7, 0x66, 0xd9, 0x37, 0x70, 0x78, 0x1b, 0x55, 0x96, 0x99, 0xc0, 0xdc, - 0xf8, 0x15, 0xa3, 0x8a, 0xcc, 0x4c, 0x84, 0x63, 0xd4, 0xfa, 0xb5, 0x6e, 0xa1, 0x3e, 0x7f, 0xc3, - 0x70, 0x0c, 0x9b, 0x30, 0xf3, 0xea, 0xb7, 0x0c, 0x2f, 0x55, 0xee, 0xd2, 0x92, 0x9b, 0xf7, 0x7b, - 0x79, 0x81, 0xdd, 0x10, 0x87, 0xc8, 0xc9, 0x8d, 0x06, 0xea, 0xe5, 0x05, 0x09, 0xdd, 0x14, 0x87, - 0xc8, 0xf0, 0x66, 0x86, 0x43, 0x10, 0x77, 0xe5, 0x62, 0x7d, 0x0b, 0xa3, 0x79, 0xd5, 0x5f, 0xf6, - 0xfd, 0xc0, 0xf8, 0xbe, 0xb5, 0x01, 0x23, 0x4f, 0xb7, 0xd5, 0x31, 0xe3, 0xfd, 0xf6, 0x06, 0x8c, - 0x6c, 0xef, 0x60, 0xb4, 0x4a, 0x00, 0x83, 0xff, 0x3b, 0x99, 0x3c, 0x9e, 0xd5, 0x3c, 0x39, 0xf7, - 0xf6, 0x20, 0x3c, 0xda, 0xe4, 0xe2, 0xde, 0x7a, 0x93, 0xac, 0xef, 0x63, 0xf6, 0x01, 0xd6, 0x7e, - 0x68, 0x1e, 0xe9, 0x8a, 0xa9, 0xfe, 0xc0, 0x29, 0xc8, 0xb5, 0x86, 0xd1, 0xb4, 0x8e, 0xe1, 0x64, - 0xfd, 0xc0, 0x6c, 0x98, 0xbc, 0xfc, 0x01, 0xd9, 0x1c, 0xf4, 0x4b, 0x87, 0x66, 0x82, 0x12, 0x7b, - 0x18, 0x21, 0x06, 0xfd, 0x52, 0x57, 0x26, 0x28, 0x85, 0xec, 0x11, 0x86, 0x73, 0x9d, 0x5f, 0xea, - 0x62, 0x8f, 0x32, 0x5a, 0xe2, 0x49, 0x6f, 0x1d, 0x7b, 0x8c, 0xa9, 0x63, 0x63, 0x91, 0x3d, 0xce, - 0xa8, 0x62, 0xe9, 0x91, 0x9c, 0xe6, 0x38, 0x2f, 0xe2, 0xc0, 0x37, 0xc0, 0x3d, 0xf6, 0x04, 0xa3, - 0x93, 0xe0, 0x88, 0xbf, 0x99, 0x3d, 0x09, 0xfd, 0x1e, 0xdf, 0xdb, 0xc4, 0x9e, 0x82, 0x9b, 0x9e, - 0xd1, 0x9e, 0xc3, 0xba, 0xd8, 0xd3, 0x80, 0x69, 0xe0, 0xd9, 0x33, 0xf2, 0xf1, 0x98, 0x40, 0xb0, - 0x67, 0xf1, 0x98, 0x29, 0xf8, 0x21, 0x7b, 0x4e, 0x3e, 0x86, 0xae, 0xc7, 0x9e, 0x07, 0xb1, 0x8c, - 0x70, 0x3c, 0xf0, 0x7c, 0x01, 0x99, 0xa2, 0xa6, 0x24, 0xfa, 0x22, 0x62, 0xf5, 0xf8, 0x21, 0xdb, - 0xab, 0x9e, 0x04, 0x7b, 0x09, 0x3d, 0xeb, 0xe5, 0xa5, 0x80, 0xf3, 0x90, 0xbd, 0x0c, 0xbc, 0x6f, - 0xba, 0xca, 0x5e, 0x61, 0xf6, 0x22, 0x6b, 0xde, 0x48, 0x96, 0xfd, 0x19, 0x0a, 0xa3, 0x4e, 0xd1, - 0x75, 0xbc, 0x90, 0xbd, 0x0a, 0x85, 0x9c, 0xeb, 0xb1, 0xd7, 0xf0, 0x94, 0x77, 0x3c, 0xf6, 0x3a, - 0xa3, 0xb5, 0x36, 0x1f, 0xd4, 0xbc, 0x82, 0x23, 0xb0, 0x66, 0xbe, 0x81, 0x22, 0xd1, 0x08, 0xf2, - 0xfd, 0x26, 0x1d, 0xb1, 0x56, 0x6a, 0x48, 0x97, 0xe1, 0x5b, 0x31, 0xc5, 0x31, 0xd7, 0x13, 0xec, - 0x6d, 0x94, 0xea, 0xa0, 0x5f, 0x72, 0x0b, 0x4e, 0x39, 0xe3, 0x15, 0xd9, 0xe5, 0x49, 0xec, 0x18, - 0x24, 0xb0, 0x21, 0x60, 0x57, 0x24, 0x23, 0x0a, 0xdf, 0xf1, 0x03, 0x76, 0x65, 0x92, 0xe2, 0x8f, - 0x79, 0x4e, 0x30, 0x33, 0xec, 0x63, 0x67, 0xb2, 0x35, 0x49, 0xc1, 0x34, 0xa2, 0x83, 0x6d, 0x4b, - 0x52, 0x30, 0x8d, 0x82, 0xd5, 0xf6, 0x18, 0xf4, 0xed, 0xdc, 0x86, 0x61, 0xb6, 0x23, 0x49, 0x25, - 0x08, 0xc8, 0xbc, 0x76, 0x76, 0x26, 0xe9, 0xed, 0x57, 0xc7, 0x60, 0xbb, 0x2b, 0x49, 0x95, 0x55, - 0x07, 0x75, 0x98, 0xab, 0xe0, 0x40, 0xb5, 0xb2, 0x21, 0xee, 0x9c, 0xae, 0x86, 0x03, 0xfd, 0xe2, - 0x54, 0xe0, 0x35, 0xe8, 0x08, 0xf9, 0x52, 0xc0, 0xb5, 0x60, 0x23, 0x5f, 0xc1, 0x0a, 0xba, 0x0e, - 0x3a, 0xf4, 0x0a, 0x56, 0xc0, 0xf5, 0xc8, 0x46, 0xd6, 0x13, 0xaa, 0xfd, 0x43, 0x28, 0xd0, 0xdb, - 0x57, 0x01, 0x3f, 0x82, 0x82, 0xbc, 0x8e, 0xc9, 0xb9, 0x25, 0xf6, 0xe3, 0x24, 0xd5, 0x04, 0x6e, - 0x63, 0xa8, 0xf9, 0x13, 0x2d, 0xfe, 0x8e, 0x8f, 0xf6, 0x4f, 0x75, 0x7b, 0x98, 0x97, 0xa8, 0xfd, - 0xb3, 0xba, 0xff, 0x7c, 0x50, 0xe3, 0xec, 0xe7, 0x11, 0x92, 0x00, 0x7e, 0x11, 0xef, 0x1e, 0xb0, - 0x5f, 0x42, 0x09, 0x46, 0xfd, 0x4e, 0x39, 0xe4, 0xec, 0x57, 0x18, 0x12, 0x69, 0x25, 0x91, 0x5f, - 0xcb, 0x0c, 0x68, 0x33, 0x09, 0xfe, 0x46, 0x0e, 0x2d, 0x9f, 0x14, 0xb9, 0x29, 0x77, 0x52, 0xb0, - 0x1b, 0x64, 0x30, 0xb7, 0x34, 0xa5, 0x80, 0x1b, 0x91, 0x63, 0xc3, 0x86, 0x66, 0x0f, 0x3a, 0xf9, - 0xfb, 0x24, 0xbd, 0x74, 0xea, 0xac, 0x8c, 0xe0, 0x9e, 0x24, 0xbd, 0x16, 0x63, 0xec, 0x8c, 0x6c, - 0x37, 0x8c, 0xea, 0x2c, 0x8d, 0x60, 0x4f, 0x92, 0xde, 0x97, 0x11, 0xb6, 0x46, 0x72, 0x6f, 0x92, - 0xde, 0x43, 0x71, 0xd6, 0x46, 0x78, 0x9f, 0xce, 0xac, 0xbc, 0x51, 0xfb, 0x2d, 0x7a, 0x38, 0xc0, - 0xc5, 0x88, 0x13, 0x38, 0x15, 0xb5, 0x91, 0xba, 0x29, 0x89, 0x3d, 0x26, 0x17, 0xe3, 0x4e, 0xc0, - 0x6e, 0x46, 0x63, 0xd4, 0xdf, 0x4c, 0x89, 0xbe, 0x05, 0x8d, 0x9c, 0x94, 0xdc, 0x8a, 0xa4, 0xe2, - 0x86, 0xc7, 0xd4, 0xd1, 0x6d, 0xf0, 0xa7, 0x30, 0xbd, 0xe5, 0xba, 0x3d, 0x69, 0xae, 0xf8, 0x50, - 0x99, 0x77, 0x20, 0x63, 0xb2, 0x8d, 0xf2, 0xbd, 0x33, 0x02, 0xa0, 0x4c, 0xef, 0x42, 0x51, 0x49, - 0x40, 0x91, 0xba, 0x3b, 0xa2, 0x83, 0xdd, 0xdd, 0xef, 0x92, 0xb4, 0xde, 0x64, 0x3d, 0xf2, 0xb8, - 0xad, 0x99, 0x78, 0x65, 0x3d, 0x39, 0x3f, 0x9a, 0x65, 0x35, 0x68, 0x4e, 0xf2, 0xbe, 0x2b, 0xeb, - 0x29, 0x47, 0x3b, 0x95, 0x2e, 0x9c, 0xec, 0x6a, 0x96, 0x45, 0x60, 0xb8, 0x5e, 0xa5, 0xa4, 0xd8, - 0x1a, 0x5e, 0x2d, 0x3d, 0x4d, 0x52, 0xe6, 0x28, 0xcc, 0x49, 0x2d, 0xd0, 0x46, 0x1b, 0xa1, 0x4e, - 0x6e, 0xa1, 0x14, 0x48, 0x40, 0x87, 0x3b, 0x05, 0x27, 0x0a, 0x89, 0xa9, 0x90, 0xa7, 0x46, 0xec, - 0x10, 0xf6, 0x34, 0x1c, 0x5e, 0x94, 0x9d, 0x0e, 0x7d, 0x7a, 0x0b, 0x3a, 0x34, 0x49, 0x91, 0xce, - 0x68, 0x01, 0x8d, 0x49, 0x44, 0x39, 0xb3, 0x45, 0xd2, 0xd0, 0x11, 0xce, 0xc2, 0x91, 0x26, 0x3b, - 0xa9, 0xbc, 0x9f, 0xad, 0x74, 0xe1, 0xf9, 0x1c, 0x15, 0xca, 0x78, 0x3d, 0x37, 0x12, 0x1b, 0x9d, - 0x3a, 0x4f, 0xa9, 0xcb, 0xed, 0x3d, 0xce, 0x3a, 0x3d, 0x4e, 0xc8, 0x8f, 0x9c, 0xe2, 0x48, 0xe5, - 0x3b, 0xf2, 0xe4, 0xaa, 0x10, 0xc4, 0x7f, 0x57, 0x9e, 0x90, 0x15, 0xa4, 0x59, 0xfc, 0x4d, 0x9e, - 0x90, 0x15, 0xaa, 0xb8, 0xbc, 0x17, 0xb3, 0x06, 0xa3, 0xf7, 0xe5, 0x09, 0x59, 0x5b, 0x6b, 0x5e, - 0x1f, 0xc4, 0x34, 0x41, 0xe6, 0x43, 0x50, 0xcd, 0xa0, 0x9a, 0x82, 0x99, 0xaa, 0x60, 0x17, 0xb4, - 0x29, 0xa0, 0xcf, 0x93, 0xc0, 0x85, 0x6d, 0x78, 0x6b, 0xfb, 0x15, 0x7c, 0x5d, 0x62, 0x17, 0xb5, - 0xe1, 0xc6, 0xb7, 0xf7, 0x9b, 0x6c, 0x0b, 0x04, 0x23, 0x4e, 0x18, 0x6e, 0xf6, 0x83, 0x22, 0xbb, - 0xb8, 0x0d, 0x53, 0xd9, 0xf1, 0x8a, 0x7e, 0x45, 0x5e, 0x7c, 0x5f, 0xd2, 0x86, 0xd7, 0xd0, 0x11, - 0x99, 0x43, 0xd9, 0xa5, 0xfa, 0xb1, 0x8b, 0x5d, 0x86, 0x00, 0x63, 0x5e, 0x41, 0x7b, 0xbc, 0xbc, - 0x8d, 0xa6, 0x5b, 0x1d, 0xe0, 0xc5, 0x41, 0xee, 0x95, 0xc4, 0x14, 0xbb, 0xa2, 0x8d, 0xe8, 0xd6, - 0xb9, 0x65, 0xc7, 0xd9, 0x95, 0x1a, 0x52, 0xec, 0xb2, 0xe3, 0x6c, 0x6b, 0x1b, 0x8e, 0x4e, 0x5e, - 0xc1, 0x2f, 0x72, 0xb6, 0x0d, 0x8d, 0x5e, 0x8e, 0xc6, 0x76, 0x50, 0xcd, 0x0d, 0x1d, 0xc6, 0x76, - 0x80, 0x6a, 0xaf, 0x23, 0x9c, 0x09, 0x27, 0xe4, 0xec, 0xda, 0x36, 0xec, 0x14, 0xb0, 0x33, 0xf0, - 0x37, 0x87, 0xec, 0x3a, 0x50, 0xef, 0xa9, 0x05, 0x01, 0xf7, 0xc4, 0x58, 0xc8, 0x03, 0x76, 0x3d, - 0xf8, 0xe2, 0xf1, 0x87, 0x6d, 0xf2, 0x5a, 0xc1, 0xf3, 0x38, 0x3e, 0x6c, 0x64, 0x7b, 0xd9, 0x8f, - 0x00, 0x0d, 0xe2, 0x78, 0x1b, 0xf2, 0x40, 0x64, 0x7b, 0xd9, 0x8f, 0xd1, 0x89, 0x28, 0x44, 0xd3, - 0x3f, 0xdb, 0xcb, 0x7e, 0xd2, 0x86, 0x2b, 0x68, 0x1e, 0x84, 0x34, 0x02, 0x3f, 0x45, 0x24, 0x79, - 0x21, 0x2f, 0x91, 0x9f, 0xb5, 0xc9, 0x6d, 0xc8, 0x66, 0xb9, 0x38, 0xfc, 0xbc, 0x8d, 0x0a, 0x32, - 0x57, 0xe6, 0xbc, 0xca, 0xee, 0x69, 0x93, 0xfb, 0x85, 0xc2, 0xd1, 0x6c, 0xb7, 0x4c, 0x2e, 0x2f, - 0x73, 0x27, 0xe4, 0x40, 0xf6, 0xb4, 0x51, 0x81, 0xe8, 0x4b, 0x3f, 0x6f, 0x46, 0xde, 0xfa, 0xde, - 0xdb, 0x46, 0x03, 0x6f, 0x6e, 0x89, 0x34, 0x7c, 0x5f, 0x9b, 0x3a, 0x3c, 0x1b, 0xe4, 0x7e, 0x74, - 0x81, 0x56, 0x02, 0x03, 0x3d, 0x00, 0x08, 0x97, 0x9d, 0x1a, 0xfa, 0x43, 0x1b, 0xd5, 0x9b, 0xba, - 0xb6, 0xd3, 0xe0, 0x1f, 0xa1, 0x87, 0x5b, 0x33, 0x0d, 0x3d, 0xd8, 0x26, 0xa7, 0x3b, 0x17, 0x19, - 0xe1, 0x7b, 0xec, 0x21, 0xd3, 0x1c, 0x16, 0xbe, 0xc3, 0xfe, 0xd4, 0x26, 0x17, 0x07, 0x2e, 0xd2, - 0x10, 0x3f, 0x5c, 0x6f, 0x43, 0xfe, 0x08, 0x06, 0x2d, 0x1b, 0x66, 0x47, 0x36, 0x1d, 0xce, 0x1e, - 0x85, 0x77, 0xd9, 0xa0, 0xa2, 0x73, 0x04, 0x7b, 0x2c, 0x02, 0x0d, 0x39, 0xd5, 0x2a, 0x2f, 0xb2, - 0xc7, 0xeb, 0x26, 0x69, 0xf6, 0x84, 0x1c, 0xac, 0xb1, 0x6c, 0x2f, 0x7b, 0x12, 0xc5, 0x35, 0xee, - 0x0a, 0x1e, 0x86, 0x47, 0x38, 0xe1, 0x14, 0x7b, 0x4a, 0x29, 0x42, 0xfa, 0x34, 0x02, 0x53, 0xf6, - 0x73, 0x53, 0x4e, 0x50, 0x64, 0xcf, 0xb4, 0x99, 0xef, 0x14, 0xae, 0x87, 0xb7, 0xda, 0xb3, 0x92, - 0x79, 0xd9, 0x3d, 0x9a, 0x53, 0xf3, 0xd1, 0x56, 0x6c, 0xe7, 0x54, 0xeb, 0xb1, 0x56, 0x6c, 0x28, - 0x79, 0x89, 0x4f, 0x57, 0xa9, 0xfd, 0x78, 0x2b, 0xad, 0x44, 0xb2, 0x3d, 0x96, 0xef, 0xff, 0x16, - 0x61, 0x4f, 0x44, 0x30, 0x6d, 0xf7, 0x64, 0x2b, 0xb6, 0x96, 0x06, 0xd3, 0xba, 0x4f, 0xb5, 0x52, - 0x76, 0x25, 0x8e, 0xa5, 0x92, 0xc0, 0xa7, 0x5b, 0xe5, 0x1b, 0xcb, 0x80, 0x5a, 0xfb, 0x99, 0x56, - 0xec, 0x38, 0x21, 0x18, 0xe5, 0xd5, 0xb2, 0x53, 0x80, 0xf3, 0x67, 0x5b, 0xb1, 0x65, 0x8c, 0xc2, - 0xda, 0xe2, 0xb9, 0x56, 0x2a, 0x11, 0xc5, 0xb7, 0x36, 0x11, 0xca, 0x00, 0xcf, 0xb7, 0xca, 0x97, - 0x58, 0x1d, 0xd5, 0xfa, 0x2f, 0x80, 0x0f, 0x2d, 0x0b, 0x7d, 0xd3, 0x22, 0x70, 0x0a, 0x74, 0x8a, - 0x60, 0xa7, 0xb5, 0x6b, 0x70, 0xcc, 0x3b, 0xa6, 0xe6, 0x0b, 0x04, 0x3d, 0xbd, 0x9d, 0x12, 0x47, - 0x60, 0x7e, 0xa6, 0x0a, 0xe4, 0x8c, 0x76, 0xbd, 0xbd, 0xc8, 0x71, 0xd8, 0x9d, 0xd9, 0xae, 0x3f, - 0xa5, 0xc8, 0x09, 0x41, 0xd8, 0x59, 0xc6, 0x57, 0xa4, 0x03, 0x67, 0x1b, 0xc5, 0x51, 0x5e, 0xf1, - 0x37, 0x01, 0x3b, 0xa7, 0x5d, 0x7f, 0x9a, 0x19, 0xe2, 0x41, 0x09, 0xd0, 0xb9, 0xed, 0xf1, 0x4f, - 0x33, 0x84, 0x9d, 0xd7, 0x1e, 0xfb, 0x82, 0x43, 0xd0, 0xf9, 0xed, 0x94, 0x25, 0x82, 0xc6, 0x9d, - 0xb2, 0x5b, 0x04, 0x21, 0xb7, 0xc4, 0xbe, 0xdf, 0x4e, 0xa9, 0xa0, 0x56, 0x8f, 0xef, 0x09, 0xc7, - 0xf5, 0x42, 0x42, 0x7f, 0xd0, 0x4e, 0xb9, 0xae, 0x7f, 0x01, 0xaa, 0x56, 0xb9, 0xdc, 0x0b, 0x5d, - 0x10, 0x17, 0xd4, 0x7b, 0x70, 0x61, 0x3b, 0x0d, 0xa5, 0x21, 0x36, 0xe2, 0x88, 0xc2, 0x14, 0xe1, - 0x17, 0xb5, 0xd3, 0x28, 0xd4, 0xf1, 0x80, 0x87, 0x3c, 0x90, 0x7d, 0xd9, 0xd2, 0x4e, 0xf9, 0x8e, - 0x86, 0x1e, 0x71, 0x04, 0x8c, 0x2e, 0x36, 0x5d, 0x1a, 0x09, 0xb8, 0x10, 0xe0, 0x7f, 0x89, 0xe9, - 0xd2, 0x46, 0x9d, 0xec, 0x4b, 0x8d, 0x5a, 0x8e, 0x3b, 0x81, 0x8c, 0x77, 0x99, 0x21, 0x98, 0x13, - 0x7e, 0xe0, 0x50, 0x8a, 0xbe, 0x07, 0xe5, 0xcb, 0x8d, 0x7d, 0x2f, 0xaf, 0xca, 0x30, 0x57, 0x98, - 0xc1, 0xfa, 0x77, 0x3e, 0x83, 0x7e, 0x5f, 0x69, 0x3c, 0xca, 0x95, 0x96, 0xb0, 0xad, 0x26, 0x71, - 0xa4, 0x85, 0x73, 0x00, 0xc1, 0xdb, 0x4c, 0x20, 0xe4, 0x53, 0x2e, 0x05, 0x24, 0xd8, 0x1e, 0x17, - 0x6c, 0x10, 0x53, 0x3c, 0x80, 0xc5, 0x8e, 0x46, 0x6a, 0xfd, 0x01, 0x07, 0xb5, 0x9d, 0x66, 0x0c, - 0x86, 0x78, 0x65, 0x82, 0x07, 0x1b, 0x26, 0x09, 0xdd, 0x05, 0xc2, 0xe3, 0xbc, 0x90, 0x09, 0xf3, - 0x7c, 0x1a, 0x49, 0xfe, 0x10, 0x65, 0x32, 0xce, 0x0b, 0xfd, 0x81, 0x5f, 0xd1, 0xe0, 0x47, 0x28, - 0xb0, 0x71, 0x5e, 0xe8, 0x75, 0x2b, 0x88, 0xf3, 0x31, 0x08, 0x8f, 0xf3, 0xc2, 0xe0, 0xa1, 0xbd, - 0x6e, 0x28, 0x1c, 0x4f, 0x96, 0xd3, 0x27, 0x06, 0xee, 0x8a, 0xc2, 0x9f, 0xb6, 0xd3, 0x11, 0x79, - 0x9c, 0x17, 0x86, 0x79, 0xc9, 0x11, 0xee, 0x26, 0x9e, 0xf5, 0x3c, 0x1e, 0x8c, 0x04, 0x7e, 0xb1, - 0x26, 0x6b, 0xe9, 0x33, 0x8c, 0xe0, 0x38, 0x2f, 0xf4, 0xf8, 0xa1, 0xeb, 0xf1, 0xa8, 0xed, 0xe7, - 0x9a, 0xe2, 0x60, 0xd7, 0xb0, 0x1f, 0x54, 0x08, 0xfa, 0xa2, 0xdd, 0x5e, 0x6b, 0x1d, 0x18, 0xfd, - 0xa6, 0x11, 0xff, 0xc0, 0x7a, 0x73, 0x07, 0xed, 0x07, 0x49, 0x1e, 0xc3, 0xe5, 0x15, 0xfd, 0x2d, - 0x1d, 0xf6, 0x41, 0x56, 0xd3, 0x1c, 0x42, 0xbc, 0xf9, 0x6f, 0xed, 0xd0, 0xae, 0x1b, 0xa4, 0xea, - 0x75, 0x7f, 0x5b, 0x07, 0xf5, 0x64, 0x0e, 0xb9, 0xde, 0x24, 0xdc, 0xfe, 0x8f, 0xdc, 0x63, 0x6b, - 0x70, 0x47, 0x87, 0xdd, 0x62, 0x7d, 0x65, 0x2e, 0x73, 0xbd, 0x4b, 0xb8, 0xf3, 0x1f, 0xd9, 0x63, - 0xc3, 0x70, 0x57, 0x87, 0xfd, 0x7f, 0xac, 0x96, 0x39, 0xa4, 0xf1, 0x04, 0xdc, 0xdd, 0x41, 0x13, - 0x65, 0xa4, 0x5c, 0x6b, 0xc0, 0x2f, 0xe8, 0xc0, 0x2d, 0x10, 0x9d, 0x83, 0xe2, 0x82, 0x0b, 0x3b, - 0x68, 0x43, 0xae, 0xef, 0xbe, 0xe2, 0xb2, 0x8b, 0x20, 0x8b, 0xc7, 0xd3, 0xaf, 0x9e, 0x2d, 0x90, - 0xe9, 0x5b, 0xff, 0xb8, 0xdd, 0xc5, 0x1d, 0x54, 0x71, 0x83, 0xf9, 0x38, 0x7a, 0x89, 0x44, 0xfb, - 0xe2, 0xe8, 0xa5, 0x40, 0x07, 0x1a, 0x74, 0x2f, 0x83, 0x77, 0x7d, 0xb9, 0x1d, 0x97, 0x5d, 0x8e, - 0xae, 0xe0, 0x86, 0x3a, 0x2e, 0xb8, 0x42, 0xba, 0x6a, 0x08, 0x70, 0x25, 0xd0, 0xbe, 0x8d, 0x71, - 0x74, 0x2b, 0xd0, 0xe1, 0x06, 0xdd, 0x6d, 0x1d, 0xb4, 0x66, 0xc8, 0x0b, 0xd3, 0xb8, 0x64, 0x3b, - 0x24, 0x31, 0x4c, 0x9d, 0xe7, 0x76, 0xcc, 0x25, 0xc1, 0xa9, 0x6b, 0x67, 0x87, 0x2a, 0xed, 0xa8, - 0x44, 0x1e, 0xac, 0x76, 0xa1, 0x1a, 0xe6, 0x30, 0x32, 0x87, 0x97, 0xab, 0x3a, 0xec, 0x56, 0xeb, - 0xa0, 0xb9, 0x8c, 0x8d, 0xca, 0xd5, 0x88, 0x2c, 0xb7, 0xbb, 0x71, 0xb6, 0xd7, 0xa0, 0x77, 0xd9, - 0xc9, 0x38, 0x7a, 0xad, 0x1c, 0x32, 0xb5, 0x0d, 0x8d, 0xcb, 0xae, 0xeb, 0xa0, 0xb9, 0xd6, 0x9f, - 0xcf, 0x0d, 0xd1, 0xd2, 0x7a, 0x24, 0x6d, 0x2c, 0x1f, 0x42, 0x9e, 0x35, 0xd4, 0x67, 0x7e, 0xe5, - 0xc4, 0xfe, 0xd4, 0x41, 0xeb, 0x84, 0x16, 0x8c, 0x04, 0x7c, 0xd2, 0x9d, 0x66, 0x0f, 0xc7, 0x40, - 0xf9, 0x9a, 0x63, 0x8f, 0x74, 0xe0, 0x2c, 0xea, 0x08, 0xde, 0xef, 0x07, 0x15, 0x07, 0x13, 0xfe, - 0xdd, 0x4e, 0x5a, 0x16, 0x09, 0x1b, 0x74, 0x05, 0x0f, 0x68, 0x77, 0xdd, 0xa9, 0x76, 0x89, 0xbc, - 0xd7, 0x9d, 0x9c, 0x64, 0xef, 0x75, 0xea, 0xeb, 0x6e, 0x9a, 0x38, 0x80, 0xde, 0xef, 0x24, 0x2a, - 0xd4, 0x94, 0x93, 0xd1, 0x08, 0x3e, 0xe8, 0xc4, 0xf9, 0x4f, 0x4d, 0xa1, 0x06, 0xe1, 0x87, 0x9d, - 0xf6, 0x57, 0xad, 0xa4, 0x16, 0xea, 0xbf, 0x46, 0xfc, 0x11, 0x9c, 0xd6, 0x6d, 0x8c, 0xe0, 0x63, - 0x38, 0x95, 0x82, 0x59, 0x56, 0x9f, 0x74, 0xd2, 0xa0, 0xaa, 0xf5, 0x38, 0x1e, 0xef, 0xd3, 0x4e, - 0x5a, 0x02, 0xb5, 0x2b, 0x03, 0x7f, 0xd6, 0x49, 0xdb, 0x24, 0xea, 0x1e, 0xfb, 0x1c, 0x8f, 0x47, - 0xf8, 0xb5, 0x80, 0x7d, 0xd1, 0x89, 0x0b, 0x68, 0xd7, 0xab, 0x09, 0xce, 0xbe, 0xec, 0x94, 0x67, - 0xcd, 0x82, 0xef, 0x15, 0xd9, 0xdf, 0x91, 0xa0, 0x21, 0xb7, 0x10, 0xf8, 0x0a, 0x39, 0x36, 0x45, - 0x9b, 0xd3, 0x21, 0xdf, 0x13, 0x53, 0xec, 0xb8, 0x14, 0xee, 0xe4, 0xe9, 0x79, 0xd8, 0xa9, 0x70, - 0x76, 0x7c, 0x0a, 0x77, 0xfc, 0xfe, 0x66, 0x2a, 0x8b, 0x4c, 0x50, 0x62, 0x27, 0xa4, 0xf0, 0x05, - 0x41, 0x02, 0x7e, 0x4d, 0x10, 0x76, 0x62, 0x0a, 0x97, 0x48, 0xce, 0x0c, 0x4c, 0x4e, 0x82, 0x49, - 0xaf, 0x33, 0xb3, 0x61, 0x52, 0xfa, 0x3c, 0x19, 0x3e, 0x01, 0x1c, 0xc9, 0xf9, 0xd1, 0xec, 0x94, - 0x7a, 0xfb, 0x3f, 0xb8, 0x13, 0xb0, 0x53, 0x53, 0x34, 0x22, 0x24, 0x22, 0x9f, 0x43, 0xb4, 0xc7, - 0x3f, 0x2d, 0x45, 0x15, 0xa6, 0x21, 0xbf, 0x26, 0x80, 0x9e, 0x8e, 0x38, 0x84, 0xf6, 0x3a, 0x33, - 0xec, 0x0c, 0xc4, 0xa1, 0x96, 0xf2, 0x73, 0x66, 0x8a, 0xba, 0x8f, 0xc7, 0xb3, 0x52, 0x94, 0x2b, - 0x7a, 0x8c, 0xb9, 0x3d, 0x3b, 0x45, 0x25, 0x1d, 0x85, 0xb5, 0xeb, 0x73, 0xc0, 0x69, 0x80, 0x0b, - 0x59, 0x49, 0xec, 0xdc, 0x14, 0xb6, 0xc8, 0x33, 0x21, 0x25, 0x16, 0x57, 0x81, 0x61, 0x95, 0x9d, - 0x97, 0xa2, 0xd5, 0x2f, 0x02, 0xfa, 0x35, 0x41, 0xf8, 0xf9, 0xa9, 0xc8, 0x41, 0x03, 0x23, 0xf1, - 0x7d, 0xf0, 0x57, 0x08, 0x0d, 0xd5, 0x3a, 0xca, 0xd3, 0x0f, 0x1a, 0x51, 0x5c, 0xd3, 0x5d, 0x00, - 0xda, 0x58, 0xc5, 0x2f, 0x4c, 0xc9, 0x73, 0x44, 0xc5, 0x14, 0xef, 0x45, 0xe8, 0xf2, 0x58, 0xbe, - 0x07, 0x6e, 0xb7, 0x80, 0xff, 0x58, 0xbe, 0x87, 0x54, 0x42, 0xe1, 0x54, 0xaa, 0x7a, 0x58, 0x2e, - 0x4e, 0x51, 0x51, 0x35, 0x4a, 0xd4, 0xf8, 0x5c, 0x02, 0x61, 0xa6, 0x58, 0x24, 0x27, 0x02, 0x3b, - 0xfc, 0x62, 0xfd, 0x03, 0x52, 0x8a, 0x2a, 0x2e, 0x2e, 0x54, 0xef, 0xa4, 0xcb, 0x10, 0x2e, 0x53, - 0x2c, 0xa2, 0xd8, 0x1c, 0x81, 0xa2, 0xc3, 0xda, 0x70, 0xb9, 0x36, 0xd2, 0x87, 0x88, 0xba, 0xbf, - 0x2b, 0x52, 0x54, 0xf7, 0x51, 0x91, 0xf2, 0x76, 0x25, 0xb2, 0xa7, 0xbc, 0x49, 0x0c, 0xbe, 0xb6, - 0x1a, 0x76, 0xe6, 0x7c, 0x53, 0xf7, 0xb6, 0xcd, 0xb0, 0xab, 0x0b, 0x95, 0xbf, 0xed, 0x31, 0x76, - 0x4a, 0x2c, 0xd7, 0x4c, 0x4d, 0x81, 0x38, 0x47, 0xbd, 0xed, 0x44, 0x59, 0xd4, 0x05, 0xca, 0xd3, - 0x2e, 0x30, 0xc8, 0xd5, 0x26, 0xe6, 0xca, 0xcf, 0x55, 0x60, 0x10, 0x17, 0x2a, 0xbb, 0xab, 0xc1, - 0x20, 0x57, 0x9b, 0x98, 0x95, 0x9f, 0x6b, 0xb4, 0xd1, 0xec, 0xfc, 0x5c, 0x0b, 0x72, 0x51, 0x91, - 0xf2, 0x76, 0x9d, 0xac, 0x2e, 0xe9, 0x2d, 0x92, 0x9f, 0xeb, 0x0d, 0xbb, 0x39, 0xf2, 0xf3, 0x43, - 0xc3, 0x6e, 0x56, 0x7e, 0x7e, 0x14, 0x63, 0x17, 0xcd, 0xcf, 0x8f, 0x35, 0x85, 0xc6, 0xfc, 0xfc, - 0x04, 0xf9, 0xa9, 0x0b, 0x94, 0xa7, 0x9f, 0x22, 0xc8, 0x98, 0xe7, 0x4e, 0x9b, 0xea, 0x52, 0x45, - 0xcc, 0x7e, 0x06, 0x8b, 0x98, 0x88, 0xf6, 0x42, 0x3f, 0x9f, 0x0d, 0xf7, 0xf2, 0x02, 0xfb, 0x45, - 0x4a, 0xfe, 0x22, 0xcd, 0xdb, 0xc4, 0x03, 0x91, 0xff, 0x1e, 0xfb, 0x65, 0x0a, 0x9f, 0xf7, 0x9c, - 0xa3, 0x91, 0x3d, 0xf6, 0x2b, 0xd3, 0xc4, 0x6c, 0xf8, 0x35, 0xb4, 0x47, 0x78, 0xe0, 0xfa, 0xc5, - 0x4c, 0xb1, 0xc8, 0x7e, 0x83, 0x09, 0x2f, 0xdb, 0x58, 0xfa, 0x7e, 0x8b, 0xc9, 0xb1, 0xb1, 0xe6, - 0x04, 0x82, 0x07, 0xec, 0x06, 0xa8, 0xe7, 0x78, 0x21, 0xef, 0xc3, 0xfc, 0xc6, 0x94, 0x3c, 0x16, - 0x56, 0x78, 0x9e, 0x56, 0x3a, 0x76, 0x53, 0x4a, 0x1f, 0x70, 0xc1, 0x87, 0x3c, 0xde, 0x9c, 0xa2, - 0x85, 0x31, 0xef, 0xf7, 0x3a, 0x33, 0x21, 0xbb, 0x45, 0xea, 0xab, 0x55, 0x31, 0x64, 0xb7, 0x62, - 0x09, 0x50, 0x53, 0x4a, 0xcf, 0xb3, 0xdb, 0x30, 0x48, 0x11, 0x50, 0x4d, 0xb1, 0xdb, 0xb1, 0x2c, - 0x1a, 0xe7, 0x98, 0xd8, 0x77, 0xc0, 0x81, 0xc1, 0xe4, 0x25, 0xfc, 0x9d, 0x29, 0xbd, 0x8a, 0x03, - 0xd4, 0xf3, 0xfc, 0x2e, 0x74, 0x65, 0xd0, 0x09, 0x05, 0x2d, 0x6d, 0x77, 0xc3, 0x5b, 0x4e, 0x04, - 0x44, 0x4d, 0xc8, 0xe4, 0xfc, 0x4e, 0x96, 0x47, 0x14, 0xa3, 0x6a, 0x64, 0xbf, 0x6f, 0xc0, 0xf5, - 0x58, 0xde, 0x83, 0x40, 0xb4, 0xd7, 0xd6, 0xc3, 0x00, 0x52, 0xbb, 0x67, 0xc1, 0xc4, 0x8b, 0xed, - 0xc1, 0xd2, 0xa4, 0x0e, 0x88, 0xc6, 0xf7, 0xbd, 0x31, 0x54, 0x7b, 0xbe, 0x4f, 0x4f, 0x3c, 0xd2, - 0x8b, 0xbe, 0xaa, 0xd8, 0xfd, 0xd1, 0xf9, 0xa5, 0x2e, 0xb2, 0x3d, 0xc1, 0x1e, 0x88, 0x2e, 0x31, - 0xea, 0xc5, 0xa7, 0x76, 0xb5, 0x7f, 0x88, 0x5a, 0x64, 0x3d, 0xfd, 0x33, 0x81, 0x3f, 0x22, 0x01, - 0x75, 0x98, 0xbc, 0x3c, 0x98, 0xa2, 0xfd, 0x85, 0xc2, 0x34, 0x45, 0xa5, 0xff, 0x50, 0x74, 0xc6, - 0x6b, 0x19, 0x3e, 0xfb, 0xea, 0x49, 0x30, 0x8b, 0xeb, 0xc3, 0xd1, 0x5a, 0xaf, 0x73, 0x7d, 0x24, - 0x3a, 0xdd, 0xe3, 0x5c, 0x1f, 0x8d, 0x5a, 0xd4, 0xb9, 0x3e, 0x26, 0x07, 0xcb, 0xc0, 0xe4, 0xe5, - 0x71, 0x70, 0x55, 0x58, 0x03, 0xd7, 0x27, 0xa2, 0xb3, 0x2f, 0xca, 0xf5, 0x49, 0x94, 0x3f, 0x0d, - 0x0d, 0xea, 0xf1, 0xa9, 0x94, 0xbe, 0xfb, 0x57, 0xef, 0xa4, 0xa7, 0xe3, 0x35, 0x86, 0x29, 0xf0, - 0x8c, 0x5e, 0x34, 0xea, 0x74, 0x71, 0xdc, 0x78, 0x56, 0xbe, 0xbf, 0x0c, 0x29, 0x80, 0xcf, 0x45, - 0x95, 0xb3, 0x9e, 0xf9, 0x32, 0xf2, 0x7c, 0x34, 0x49, 0x9a, 0x11, 0x2c, 0x5e, 0x88, 0xae, 0x8c, - 0x5a, 0xa2, 0xcd, 0x5e, 0x8c, 0x75, 0x32, 0xb6, 0x49, 0x62, 0x7b, 0x63, 0x9d, 0xd4, 0x1f, 0x3e, - 0x3c, 0xc1, 0x5e, 0x8a, 0xc5, 0x52, 0x02, 0xc4, 0x7a, 0x39, 0x16, 0x4b, 0x6f, 0xab, 0x54, 0xac, - 0x57, 0xf4, 0xcb, 0xa3, 0xa1, 0x9f, 0x7f, 0x46, 0x3f, 0xeb, 0x85, 0x02, 0xf0, 0xd5, 0xa8, 0x72, - 0xa4, 0x9f, 0xaf, 0x45, 0x0b, 0x37, 0xd6, 0xcf, 0xd7, 0xa3, 0x6f, 0xc8, 0xc6, 0x7e, 0xbe, 0x11, - 0x2b, 0xbc, 0x78, 0x3f, 0xdf, 0x8c, 0x15, 0x5e, 0xa4, 0x9f, 0x6f, 0xc5, 0x62, 0x45, 0xfb, 0xf9, - 0x76, 0x2c, 0x56, 0x43, 0x3f, 0xff, 0x92, 0xa2, 0x63, 0x62, 0xc3, 0x3c, 0xa4, 0x92, 0x50, 0xf1, - 0xfe, 0x1a, 0xed, 0x1a, 0xb9, 0x53, 0xf8, 0x3b, 0xd1, 0x3c, 0xe0, 0x53, 0x86, 0x27, 0xd8, 0xbb, - 0x98, 0xbe, 0x11, 0x10, 0xf1, 0xff, 0x16, 0xa5, 0x4c, 0x88, 0x8e, 0xfd, 0x5e, 0x74, 0x9a, 0x2a, - 0x50, 0xb9, 0x7f, 0x3f, 0x1a, 0x56, 0x7f, 0x0f, 0xf1, 0x04, 0xfb, 0x20, 0xd6, 0x7d, 0x89, 0x23, - 0xc8, 0x87, 0xb1, 0x9c, 0x49, 0x81, 0x8e, 0xf3, 0x51, 0xb4, 0x0c, 0x23, 0x7d, 0xf8, 0x38, 0x5a, - 0xb3, 0xba, 0x0f, 0x9f, 0xa0, 0x0f, 0x11, 0x10, 0xee, 0x3f, 0x8d, 0x96, 0x57, 0xb4, 0x0f, 0x9f, - 0x45, 0xa7, 0x6f, 0xbc, 0x0f, 0x9f, 0x47, 0xc3, 0x46, 0xfa, 0xf0, 0x45, 0xac, 0x54, 0x23, 0x7d, - 0xf8, 0x32, 0x56, 0xdf, 0xf1, 0x3e, 0xfc, 0x3d, 0x65, 0x1f, 0x6c, 0x7d, 0x75, 0xce, 0x9a, 0x30, - 0xab, 0xe7, 0xb1, 0xeb, 0xe8, 0x48, 0x3f, 0xbb, 0x36, 0x8c, 0xc2, 0x71, 0xeb, 0xe8, 0x98, 0x36, - 0x47, 0x8d, 0x18, 0x8d, 0xe3, 0xd7, 0xd9, 0x6d, 0xd6, 0xda, 0xb9, 0x6b, 0xc5, 0x28, 0x9d, 0xb0, - 0x8e, 0xb8, 0xcc, 0x39, 0x0f, 0x8d, 0xce, 0x89, 0xe0, 0x32, 0x7b, 0x3e, 0x1a, 0x85, 0x93, 0xc0, - 0x65, 0x8e, 0x79, 0x69, 0x34, 0x4e, 0x06, 0x97, 0xb9, 0xe7, 0xa7, 0x51, 0x3a, 0x65, 0x9d, 0xfa, - 0x9e, 0xa8, 0x2e, 0xfb, 0x9f, 0x4c, 0xdb, 0x8b, 0xad, 0xf9, 0xeb, 0x5d, 0x8f, 0x3d, 0x95, 0xa6, - 0x53, 0x46, 0x26, 0xd7, 0x93, 0xcd, 0xb2, 0xa7, 0xd3, 0xf8, 0xd6, 0x3d, 0xe5, 0x04, 0xec, 0x99, - 0x34, 0xbe, 0x7d, 0x4c, 0x39, 0x81, 0xb4, 0x18, 0xcb, 0xf7, 0x7f, 0x8b, 0x3d, 0x9b, 0xa6, 0xf7, - 0xb2, 0xfa, 0x91, 0xf9, 0x73, 0x69, 0xf9, 0xa5, 0x82, 0x1a, 0x47, 0xe6, 0xd8, 0xf3, 0x69, 0x7a, - 0x53, 0xaa, 0x3d, 0x04, 0x7b, 0x01, 0xfe, 0xfb, 0xca, 0x82, 0xbd, 0x98, 0xa6, 0xd5, 0xb1, 0x6f, - 0xba, 0xea, 0x07, 0x22, 0xc7, 0xc5, 0x61, 0xf4, 0x56, 0xdb, 0x1b, 0xc7, 0x0e, 0x27, 0xec, 0xa5, - 0x38, 0xf6, 0x4d, 0xc2, 0x5e, 0x46, 0x08, 0xfc, 0x2f, 0x06, 0x55, 0xc4, 0x2b, 0x69, 0x7c, 0x48, - 0xa0, 0xa6, 0x5c, 0x64, 0xd2, 0xb4, 0x2d, 0x47, 0x5b, 0xd5, 0xd2, 0xab, 0x4a, 0xc3, 0x2b, 0x66, - 0xbd, 0x1c, 0x17, 0xec, 0x35, 0x10, 0x56, 0xeb, 0xf4, 0xeb, 0x69, 0xbc, 0x62, 0xd1, 0xa0, 0x2d, - 0xc2, 0xa0, 0x5f, 0x70, 0xca, 0x9c, 0xbd, 0x91, 0xc6, 0x4f, 0xbd, 0x03, 0xbf, 0xb2, 0xde, 0x09, - 0x79, 0xfa, 0x70, 0xf6, 0x26, 0x9c, 0x1c, 0xc1, 0xa7, 0xb3, 0x1e, 0xf6, 0x10, 0x6f, 0xe9, 0x76, - 0x4e, 0x04, 0xd4, 0x7e, 0x3b, 0x2d, 0xbf, 0xa8, 0x85, 0x3c, 0x10, 0x48, 0xcb, 0x5f, 0xd2, 0xf2, - 0x8b, 0x1a, 0x01, 0xec, 0xaf, 0x69, 0x79, 0xdd, 0xae, 0x6e, 0x7a, 0xd9, 0x3b, 0x69, 0xf9, 0x11, - 0x2f, 0x14, 0x01, 0x7b, 0x17, 0xcf, 0x83, 0xf9, 0xc0, 0xad, 0xb0, 0xbf, 0xa5, 0xe5, 0xaf, 0xf6, - 0x26, 0xa5, 0x8f, 0xf7, 0xd2, 0xf2, 0x57, 0xe8, 0x93, 0x82, 0xbd, 0x0f, 0x77, 0x6a, 0xa0, 0x3e, - 0x48, 0xe3, 0xfa, 0xc4, 0x2f, 0x38, 0x02, 0x3b, 0x82, 0x10, 0xda, 0x1f, 0x46, 0xd0, 0xc3, 0x0c, - 0xfa, 0x11, 0xf2, 0x11, 0xd1, 0x65, 0x1f, 0x47, 0x10, 0xe8, 0xb1, 0x4f, 0x24, 0x05, 0x7f, 0x33, - 0x0f, 0xd8, 0xa7, 0x92, 0x42, 0xd5, 0x29, 0xc2, 0xfc, 0x33, 0x49, 0xa1, 0xea, 0x14, 0xd9, 0xe7, - 0x18, 0x4c, 0xda, 0xf1, 0x51, 0x16, 0xbf, 0x00, 0xa1, 0x0d, 0x05, 0xbc, 0x42, 0xbf, 0x44, 0xff, - 0x36, 0x14, 0xcc, 0x2f, 0x07, 0x31, 0xd2, 0x1b, 0x82, 0x22, 0x3b, 0xb6, 0x9b, 0x5c, 0xe3, 0x22, - 0x95, 0x1d, 0x87, 0xe7, 0x51, 0xf4, 0xf4, 0xf8, 0x6e, 0x7c, 0x5f, 0xe5, 0x55, 0xee, 0x08, 0x76, - 0x42, 0x37, 0x7e, 0xb7, 0x20, 0x2f, 0xa4, 0xd9, 0x89, 0xdd, 0xf2, 0x43, 0xcb, 0x26, 0x1e, 0x84, - 0xb8, 0x48, 0x67, 0x27, 0x29, 0x39, 0x10, 0x76, 0x72, 0x37, 0xbe, 0x01, 0xb8, 0xa5, 0x29, 0x99, - 0xa5, 0x53, 0xa4, 0x5b, 0x6a, 0xb3, 0x53, 0xbb, 0xf1, 0x29, 0x47, 0xb3, 0x3f, 0xad, 0x1b, 0xbf, - 0xeb, 0x20, 0xf6, 0xa7, 0x43, 0x2b, 0x57, 0xa5, 0x08, 0x67, 0x74, 0xcb, 0x7f, 0x67, 0x08, 0x0a, - 0x95, 0x2a, 0x3b, 0xb3, 0x5b, 0x2d, 0x29, 0x21, 0xb8, 0xd7, 0xf3, 0x79, 0x56, 0x5c, 0x50, 0x4f, - 0xe9, 0xd9, 0xdd, 0x6a, 0xed, 0x8b, 0x58, 0xb0, 0x73, 0xe2, 0xa0, 0x4c, 0xec, 0xb9, 0x71, 0x30, - 0xeb, 0x15, 0xf9, 0x34, 0x3b, 0x0f, 0x1c, 0xf3, 0xbe, 0xaa, 0xac, 0xf3, 0x65, 0x33, 0x70, 0x2b, - 0xd8, 0xf3, 0x7d, 0x1f, 0xbd, 0xa3, 0xa6, 0xf4, 0xfb, 0x03, 0xd3, 0x96, 0x2e, 0x2f, 0x40, 0x3f, - 0xc6, 0xbc, 0x23, 0xf8, 0x34, 0xbb, 0x10, 0xb2, 0xb1, 0x6a, 0x95, 0xcb, 0xb2, 0xba, 0x48, 0xca, - 0xa8, 0xcd, 0xb6, 0x74, 0x53, 0x41, 0xd6, 0xe7, 0x2a, 0xbb, 0xb8, 0x5b, 0xfe, 0x36, 0x63, 0xb3, - 0x52, 0xbe, 0xa4, 0x9b, 0x2a, 0xdf, 0xfc, 0xbe, 0xd4, 0x1c, 0x31, 0xbb, 0xed, 0x83, 0xac, 0x26, - 0x0d, 0xf7, 0x54, 0xaa, 0xb1, 0x5f, 0x98, 0x5f, 0xd6, 0x4d, 0x13, 0x52, 0xfe, 0x6e, 0x54, 0x5b, - 0x5c, 0xde, 0x4d, 0xcb, 0x38, 0xb0, 0x46, 0xf5, 0x2b, 0x74, 0x57, 0x5d, 0xcf, 0x09, 0x66, 0xd8, - 0x95, 0xdd, 0x66, 0x56, 0x49, 0x60, 0xeb, 0x3f, 0x0a, 0x86, 0x5d, 0xf4, 0xb6, 0x39, 0x1d, 0x43, - 0xb4, 0xbd, 0x3b, 0xfa, 0x8b, 0x57, 0x40, 0x3b, 0xba, 0xcd, 0xaf, 0x55, 0xd1, 0xde, 0xd9, 0x7d, - 0x08, 0xb7, 0x56, 0x36, 0xfc, 0x3b, 0x14, 0xfe, 0xb9, 0xc2, 0xaf, 0x54, 0xcb, 0x5c, 0x70, 0xdc, - 0x25, 0xec, 0x63, 0x2f, 0xc7, 0xda, 0xe0, 0x94, 0xd1, 0x4c, 0x90, 0xc2, 0x88, 0x13, 0x08, 0xd7, - 0x29, 0x1f, 0x0a, 0x64, 0x5e, 0x04, 0xe9, 0x02, 0x32, 0x9f, 0x4c, 0x7a, 0x79, 0xb1, 0x56, 0x45, - 0x73, 0xc1, 0xfa, 0xaf, 0xef, 0xde, 0xbb, 0x36, 0xf1, 0xe0, 0xde, 0xb5, 0x89, 0x17, 0xf6, 0xae, - 0x4d, 0x6c, 0x79, 0x69, 0xed, 0x3e, 0xd6, 0xea, 0x82, 0x5f, 0xe9, 0xac, 0xba, 0x5e, 0xa9, 0xe0, - 0x54, 0x3b, 0x85, 0x5b, 0x9c, 0xc0, 0x3f, 0x3d, 0x8d, 0x24, 0xfe, 0x37, 0x00, 0x00, 0xff, 0xff, - 0x95, 0x44, 0x8f, 0x32, 0x22, 0x38, 0x00, 0x00, + // 6355 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x7c, 0x7b, 0x69, 0x78, 0x14, 0xc7, + 0xb9, 0x2e, 0x83, 0xc0, 0x88, 0x06, 0x44, 0xb9, 0x0d, 0x68, 0x4c, 0x6c, 0x90, 0x50, 0xee, 0x95, + 0x42, 0x6e, 0x34, 0x18, 0x3b, 0x52, 0x9e, 0x7b, 0x73, 0x93, 0x23, 0xb4, 0x31, 0x39, 0x92, 0x10, + 0x9a, 0x91, 0x9c, 0xf3, 0x4b, 0x4f, 0x6b, 0xba, 0x34, 0xea, 0x30, 0xd3, 0x3d, 0xee, 0xae, 0x01, + 0xc9, 0x39, 0x39, 0x8f, 0xf7, 0x7d, 0x4f, 0x8c, 0xf1, 0xce, 0xea, 0x35, 0xfb, 0xee, 0x7d, 0x4d, + 0x0c, 0x5e, 0x12, 0x3b, 0x5e, 0xf1, 0x6e, 0x6c, 0xc7, 0x7b, 0x12, 0xc7, 0xfb, 0x9a, 0xf3, 0x7c, + 0x6f, 0x55, 0xf5, 0x74, 0x8f, 0xe4, 0xf3, 0x4b, 0x5d, 0xef, 0xb7, 0xbd, 0xf5, 0xd5, 0x57, 0x4b, + 0x57, 0x8f, 0x0c, 0xc6, 0x27, 0x4b, 0x3e, 0x0f, 0x02, 0xc7, 0x73, 0x5b, 0x4b, 0xbe, 0x27, 0x3c, + 0x73, 0x8e, 0x70, 0x4a, 0x63, 0xcb, 0xeb, 0x8a, 0x5c, 0x58, 0xb6, 0x25, 0x2c, 0x89, 0x2e, 0x5f, + 0x92, 0xf7, 0xf2, 0x1e, 0x1e, 0x53, 0xf4, 0x24, 0xd1, 0x55, 0x6f, 0x25, 0x8c, 0xf9, 0x3d, 0x0e, + 0x2f, 0xd8, 0xd9, 0xa9, 0x12, 0x37, 0x97, 0x18, 0xb3, 0x45, 0x29, 0x99, 0x68, 0x48, 0xb4, 0xcc, + 0x5d, 0x37, 0x67, 0xef, 0xb3, 0x2b, 0x67, 0x0d, 0xcd, 0x16, 0x25, 0x33, 0x69, 0xcc, 0x19, 0x2f, + 0x58, 0xf9, 0xe4, 0xec, 0x86, 0x44, 0xcb, 0x22, 0x85, 0x03, 0x91, 0x12, 0xee, 0x26, 0x6b, 0x22, + 0x16, 0x40, 0xcc, 0x15, 0xc6, 0x3c, 0x9b, 0xe7, 0x9c, 0xa2, 0x55, 0x48, 0xce, 0x89, 0x08, 0x35, + 0x48, 0xf2, 0x9c, 0x57, 0x28, 0x58, 0x82, 0x27, 0xe7, 0x46, 0xe5, 0x0a, 0x84, 0x7c, 0xc2, 0xf2, + 0x03, 0x2e, 0x92, 0x07, 0x35, 0x24, 0x5a, 0xe6, 0x87, 0x72, 0x09, 0x9a, 0xcb, 0x8d, 0xb9, 0xbc, + 0xc0, 0x8b, 0x41, 0x72, 0x5e, 0x43, 0x4d, 0x28, 0x95, 0x10, 0xc9, 0x2c, 0xdf, 0xb7, 0xa6, 0x92, + 0xb5, 0x0d, 0x89, 0x96, 0x5a, 0x2d, 0x03, 0xb4, 0x6a, 0x6b, 0xc2, 0xa8, 0xeb, 0xc9, 0x66, 0xd6, + 0x79, 0x5e, 0x81, 0x5b, 0x6e, 0x96, 0xfb, 0x45, 0xf3, 0xff, 0x19, 0xf3, 0x05, 0xf7, 0x8b, 0xa3, + 0x62, 0xaa, 0xc4, 0xd1, 0xf7, 0xba, 0xb5, 0xc9, 0x56, 0x4a, 0x61, 0x6b, 0x5c, 0x91, 0x32, 0xa4, + 0x9c, 0xd5, 0x0a, 0xd5, 0xa6, 0x0c, 0x08, 0x3e, 0x29, 0x90, 0x1b, 0x4d, 0x03, 0x88, 0xf9, 0x35, + 0x63, 0x71, 0x69, 0xc2, 0xb7, 0x02, 0x3e, 0x6a, 0x3b, 0x81, 0xb0, 0xdc, 0x1c, 0x47, 0x9a, 0x74, + 0x02, 0xeb, 0xa4, 0xb0, 0x4b, 0xc9, 0x56, 0xed, 0x9f, 0x6d, 0x2c, 0xae, 0xc4, 0xdb, 0x58, 0xe6, + 0xfe, 0x94, 0xb9, 0xda, 0x98, 0xeb, 0x7a, 0x36, 0x0f, 0x92, 0x89, 0x86, 0x9a, 0x96, 0x05, 0x6b, + 0x97, 0x54, 0xb3, 0x1a, 0xf0, 0x6c, 0x3e, 0x24, 0x55, 0x28, 0xdc, 0x31, 0x64, 0x34, 0x2a, 0xbc, + 0x4d, 0xdc, 0x75, 0x8e, 0xe5, 0x7e, 0x8c, 0x53, 0x1d, 0x84, 0x59, 0x2d, 0x33, 0x5b, 0x0d, 0xe6, + 0xe6, 0x7d, 0xab, 0x28, 0xd5, 0x47, 0x03, 0xe7, 0xd8, 0x2a, 0x7a, 0x90, 0x42, 0x3f, 0xe3, 0x1c, + 0xcb, 0xcd, 0x6f, 0x1a, 0x49, 0xc7, 0x75, 0x3d, 0x7b, 0x6c, 0x74, 0x5c, 0x8c, 0x16, 0x1d, 0x37, + 0x6a, 0x37, 0x27, 0x62, 0xb7, 0x44, 0x6a, 0xf5, 0x88, 0x7e, 0xc7, 0xfd, 0x22, 0x6b, 0x6b, 0x32, + 0x6a, 0x3d, 0x77, 0x46, 0x6b, 0x6b, 0xb2, 0x62, 0xfd, 0x6d, 0xe3, 0xd0, 0x8a, 0x35, 0x77, 0xad, + 0xb1, 0x02, 0x1f, 0x0d, 0x84, 0x57, 0xda, 0xe2, 0xf9, 0x36, 0xaa, 0x43, 0x8f, 0xf1, 0x32, 0x6d, + 0xde, 0x0d, 0xa5, 0x8c, 0xd2, 0x59, 0xf5, 0x4e, 0x6c, 0xd0, 0x29, 0x6b, 0xe6, 0x11, 0xc6, 0x5c, + 0x2f, 0x97, 0x2b, 0xfb, 0x6a, 0xc0, 0x97, 0x56, 0xa7, 0x76, 0x03, 0x09, 0x75, 0xe9, 0x40, 0xd3, + 0xfc, 0xbf, 0x46, 0x6d, 0xd1, 0xb3, 0x9d, 0x71, 0x47, 0xa5, 0x76, 0x86, 0x32, 0xe9, 0x57, 0x72, + 0x5d, 0x26, 0x5a, 0xdf, 0x5c, 0x4d, 0x65, 0xe2, 0x17, 0x91, 0xe2, 0x19, 0x06, 0x92, 0xca, 0x6b, + 0x3d, 0x0a, 0xc7, 0x2f, 0x9a, 0xdf, 0x32, 0xea, 0x82, 0xf2, 0xd8, 0x68, 0x65, 0x5a, 0x23, 0xc1, + 0x0b, 0xa6, 0x73, 0x44, 0x91, 0xac, 0x9f, 0x35, 0xb4, 0x28, 0x28, 0x8f, 0x75, 0x87, 0xda, 0xeb, + 0x0e, 0x32, 0xe6, 0x50, 0x49, 0xac, 0xfa, 0x55, 0x8d, 0x31, 0x87, 0x60, 0xf3, 0xcb, 0xe1, 0xac, + 0xae, 0x5b, 0x5b, 0x27, 0x9d, 0x10, 0x1e, 0xa9, 0x67, 0x9a, 0xe5, 0xcc, 0xa8, 0xd9, 0x6c, 0x15, + 0xd0, 0xb3, 0x85, 0x43, 0xf4, 0x68, 0xfe, 0x6f, 0xa3, 0x36, 0x37, 0xe1, 0x14, 0x6c, 0x1f, 0x33, + 0x9c, 0x2a, 0xd0, 0xa8, 0x58, 0x0f, 0x85, 0x32, 0xf3, 0xab, 0x46, 0x4d, 0xe0, 0xe4, 0xc1, 0xb2, + 0x6e, 0xed, 0x21, 0x52, 0x25, 0x93, 0xb3, 0x0a, 0x96, 0xdf, 0x53, 0x76, 0x73, 0x19, 0x27, 0xaf, + 0xa2, 0x90, 0x96, 0xd9, 0x6a, 0x18, 0xe3, 0xb4, 0xde, 0xc8, 0xe9, 0x36, 0x17, 0x3d, 0x5b, 0xac, + 0x7a, 0xa6, 0xd7, 0xa1, 0xa1, 0xf9, 0xe3, 0xe1, 0x92, 0xd4, 0x60, 0x2c, 0xf4, 0x4b, 0xee, 0xa8, + 0xe5, 0xe7, 0x83, 0x51, 0x5a, 0x6a, 0x68, 0xbc, 0x17, 0x0d, 0x19, 0x7e, 0xc9, 0xed, 0xf0, 0xf3, + 0x41, 0x1f, 0x77, 0xcd, 0x66, 0x63, 0xe1, 0x84, 0x15, 0x60, 0x96, 0x39, 0x6e, 0x4e, 0x24, 0xe7, + 0x45, 0x2a, 0x62, 0xc1, 0x84, 0x15, 0x74, 0x29, 0x81, 0xd9, 0x6c, 0xd4, 0x7a, 0xbe, 0xcd, 0xfd, + 0xd1, 0x31, 0x5a, 0x1a, 0xa8, 0x3f, 0x0b, 0x65, 0xe0, 0x75, 0x53, 0x69, 0xc1, 0x8b, 0x43, 0xf3, + 0x20, 0x5d, 0x37, 0x65, 0xb6, 0x1b, 0x0b, 0xac, 0x7c, 0x9e, 0xc8, 0xf7, 0x7b, 0x36, 0x4f, 0xce, + 0x8f, 0x96, 0x48, 0x87, 0x14, 0x08, 0xc7, 0xa3, 0xd1, 0xe6, 0x43, 0x51, 0x4d, 0xb3, 0xc3, 0x38, + 0x78, 0x5c, 0x04, 0xa3, 0x63, 0x72, 0x7c, 0x46, 0x31, 0xe7, 0x92, 0xc6, 0xff, 0x30, 0x7a, 0x43, + 0x8b, 0xc7, 0x45, 0x10, 0x05, 0x56, 0x7d, 0xd5, 0x98, 0x37, 0x54, 0x72, 0x31, 0x6e, 0x0d, 0xc6, + 0x5c, 0x2a, 0x02, 0x3d, 0xfd, 0xa3, 0xc9, 0x97, 0x82, 0x55, 0x05, 0xe3, 0x20, 0xc9, 0xdd, 0x5c, + 0x61, 0xcc, 0x21, 0x08, 0xa3, 0x1c, 0x57, 0x05, 0x4e, 0xeb, 0x94, 0xcd, 0x83, 0x1c, 0x86, 0x57, + 0x27, 0x07, 0x88, 0xd9, 0x62, 0xd4, 0x52, 0x82, 0x61, 0x2d, 0xcb, 0x73, 0x91, 0xb4, 0x56, 0x34, + 0x86, 0xe6, 0xf9, 0xf2, 0x61, 0xf5, 0x4b, 0x73, 0x8d, 0x5a, 0x5d, 0x38, 0x66, 0xad, 0x31, 0x67, + 0xa0, 0x5c, 0x28, 0xb0, 0x59, 0xe6, 0x7c, 0x63, 0x6e, 0xda, 0x15, 0x6d, 0x47, 0xb1, 0x84, 0x69, + 0x18, 0x07, 0x0d, 0x3b, 0x78, 0x9e, 0x6d, 0x2e, 0x30, 0xe6, 0xf5, 0x14, 0x3c, 0x4b, 0x1c, 0xb9, + 0x96, 0xd5, 0x84, 0x8d, 0xb6, 0xa3, 0xd8, 0x1c, 0xd2, 0xca, 0x08, 0xdf, 0x71, 0xf3, 0x6c, 0x2e, + 0x19, 0xaf, 0x9b, 0x12, 0x3c, 0x60, 0x07, 0x99, 0x0b, 0x8d, 0xda, 0xfe, 0xa9, 0xe0, 0x98, 0xc2, + 0x3a, 0x47, 0x30, 0x6e, 0x32, 0x63, 0x21, 0x5a, 0x5d, 0x72, 0xc3, 0x60, 0xe3, 0xe6, 0xc1, 0xc6, + 0x22, 0x89, 0x94, 0x7d, 0x8b, 0xd2, 0xcf, 0xf2, 0xe6, 0x22, 0x63, 0x3e, 0xa0, 0x6e, 0xb7, 0x5c, + 0x64, 0x13, 0xa1, 0x87, 0xf5, 0x7c, 0x92, 0x39, 0x61, 0x2b, 0xc3, 0x05, 0xfb, 0x5e, 0xa8, 0x9a, + 0x75, 0x8a, 0x9c, 0x6d, 0x0a, 0x9b, 0xdf, 0x09, 0x3c, 0x97, 0x15, 0xcc, 0xa5, 0xc6, 0xc1, 0x59, + 0xa7, 0x6b, 0xdd, 0x08, 0xcf, 0x09, 0xcf, 0xd7, 0xb4, 0xa7, 0xcc, 0x3a, 0x63, 0xfe, 0x88, 0x55, + 0x28, 0xf3, 0x3e, 0x27, 0x10, 0xec, 0xa2, 0x04, 0xb5, 0x3b, 0xbd, 0x42, 0xb9, 0xe8, 0x0e, 0xf1, + 0x71, 0xb6, 0x8f, 0xfa, 0x3b, 0xb7, 0xd3, 0x2b, 0xbb, 0x82, 0xdd, 0x50, 0x6f, 0xd6, 0x1a, 0x35, + 0x99, 0x72, 0x91, 0xdd, 0x88, 0xa7, 0x8e, 0xcd, 0x79, 0x76, 0x13, 0x9e, 0xfa, 0x1d, 0x97, 0xdd, + 0x2c, 0x9f, 0xac, 0x49, 0x76, 0x4b, 0x3d, 0xd9, 0xf4, 0x38, 0x7e, 0x20, 0xd8, 0xad, 0xf5, 0x26, + 0x33, 0x16, 0xf4, 0xfa, 0x5e, 0xb9, 0xd4, 0xe9, 0xb9, 0x39, 0x4b, 0xb0, 0xdb, 0xea, 0xcd, 0xc5, + 0x86, 0xd1, 0x91, 0xcf, 0x8f, 0xae, 0x73, 0x44, 0x87, 0x6b, 0xb3, 0xdb, 0xeb, 0x29, 0xa4, 0x02, + 0x36, 0xf8, 0xec, 0x8e, 0xa8, 0xc2, 0x77, 0x3d, 0x9f, 0xdd, 0x29, 0xe3, 0x0a, 0x9b, 0xdd, 0x55, + 0x6f, 0x2e, 0xa0, 0xbc, 0xda, 0x36, 0xdf, 0xcc, 0xee, 0x86, 0x9d, 0x6c, 0x0c, 0x7a, 0x25, 0xf6, + 0x07, 0xd8, 0xc9, 0x76, 0xc6, 0x2a, 0x96, 0xd8, 0x1f, 0xa1, 0x3d, 0x62, 0xf9, 0x24, 0xbd, 0xa7, + 0xde, 0x5c, 0x68, 0xcc, 0x1b, 0xb1, 0x7c, 0x88, 0xf6, 0xd6, 0x9b, 0x8b, 0x8c, 0xda, 0x11, 0xcb, + 0x77, 0x68, 0x5f, 0x62, 0xfb, 0xea, 0xcd, 0x83, 0x8d, 0x85, 0x94, 0xa6, 0x0e, 0xda, 0x40, 0x3b, + 0xf2, 0x79, 0x76, 0x6f, 0xbd, 0x69, 0x1a, 0x8b, 0x08, 0xda, 0x30, 0xf6, 0x3d, 0x9e, 0x13, 0x84, + 0xdd, 0x57, 0x6f, 0x26, 0x8d, 0x43, 0x3a, 0x4a, 0x25, 0xdf, 0x9b, 0x44, 0x4a, 0xf4, 0xac, 0x63, + 0xf7, 0x83, 0xcb, 0x90, 0xb7, 0x65, 0xa0, 0x5c, 0x1c, 0xe3, 0x3e, 0xdb, 0xb1, 0xd2, 0x9c, 0x6f, + 0xcc, 0x19, 0xb2, 0xdc, 0x4d, 0x6c, 0xe7, 0x4a, 0x12, 0x75, 0x71, 0x37, 0xe0, 0x68, 0xef, 0x5a, + 0x49, 0xa1, 0x3b, 0xcb, 0x45, 0x6c, 0x8b, 0x6c, 0xf7, 0x4a, 0x4a, 0xd0, 0x20, 0xf7, 0x73, 0xdc, + 0x15, 0x50, 0xd8, 0xb3, 0x92, 0xd2, 0x37, 0x20, 0x9c, 0x02, 0x67, 0x57, 0xc1, 0x4f, 0x1f, 0xb7, + 0x6c, 0x76, 0xf5, 0x4a, 0xca, 0x42, 0x9f, 0x95, 0x67, 0xd7, 0xac, 0xa4, 0x8e, 0x22, 0xbf, 0x18, + 0x38, 0x76, 0x2d, 0x42, 0xf4, 0x59, 0xba, 0x7d, 0x1d, 0x42, 0x0c, 0x88, 0x09, 0xd9, 0xbc, 0x1e, + 0xfa, 0x95, 0xc5, 0x8a, 0x9d, 0x37, 0xb0, 0xfa, 0xf5, 0x31, 0x63, 0x51, 0x6c, 0xf9, 0x32, 0x17, + 0x1b, 0x0b, 0x86, 0xdd, 0xa0, 0xc4, 0x73, 0xb4, 0x98, 0xdb, 0x6c, 0x16, 0x15, 0x67, 0xa7, 0x15, + 0x88, 0xb4, 0x2b, 0x3a, 0x82, 0xb4, 0x2b, 0x58, 0x82, 0x8a, 0x33, 0x44, 0x86, 0xb8, 0x55, 0x60, + 0xb3, 0xcd, 0x43, 0x8c, 0xc5, 0x21, 0xa4, 0xea, 0xbd, 0xc6, 0x5c, 0x62, 0xb0, 0x10, 0xd4, 0xa5, + 0x3d, 0x27, 0x66, 0x8d, 0x02, 0x9d, 0x4b, 0x15, 0x59, 0x51, 0xd4, 0x15, 0x7f, 0x50, 0x4c, 0x13, + 0xb5, 0x3b, 0x4f, 0x43, 0x14, 0x55, 0xb2, 0x31, 0x4c, 0xd3, 0xa8, 0xab, 0x40, 0xa0, 0xb3, 0x40, + 0x47, 0x96, 0x98, 0xe2, 0xb3, 0x50, 0x87, 0x91, 0xa8, 0x26, 0xb4, 0x28, 0xee, 0x00, 0x8c, 0xea, + 0xcc, 0x65, 0x86, 0x19, 0x51, 0xd5, 0x94, 0x16, 0xc7, 0x75, 0xc1, 0x89, 0xe9, 0x60, 0xca, 0xa1, + 0xa4, 0xb5, 0x44, 0x07, 0x0b, 0x51, 0x30, 0x5b, 0x6a, 0xd6, 0x1b, 0x87, 0xc4, 0x60, 0x45, 0x6e, + 0x99, 0x99, 0x34, 0x96, 0xc4, 0x04, 0x9a, 0x5f, 0xfd, 0x34, 0x4f, 0xa0, 0x98, 0x34, 0x0f, 0x35, + 0x96, 0xc6, 0x0d, 0x34, 0xcb, 0x43, 0xa7, 0x59, 0x80, 0xe8, 0x72, 0x3d, 0x48, 0x32, 0xa4, 0xe4, + 0xb9, 0x42, 0xb3, 0xd7, 0x20, 0x68, 0xae, 0xd4, 0xfd, 0xd7, 0xa8, 0x62, 0xd9, 0xa0, 0xe9, 0x6b, + 0x5c, 0x93, 0x6c, 0xac, 0x76, 0x03, 0x8e, 0xab, 0x74, 0xa7, 0x42, 0x75, 0x4d, 0xb1, 0xa9, 0x5a, + 0x1f, 0x0c, 0xbf, 0xac, 0x87, 0x97, 0xac, 0x25, 0xbf, 0x16, 0x9d, 0x71, 0x09, 0x81, 0xdd, 0x57, + 0xb4, 0xb1, 0xc4, 0x14, 0xb7, 0xd5, 0xba, 0xd7, 0x12, 0xd5, 0xcc, 0xbe, 0x1a, 0x77, 0x00, 0x5e, + 0xff, 0x47, 0x77, 0x4f, 0xa9, 0x6a, 0x56, 0x5f, 0x8b, 0xeb, 0x82, 0x53, 0x6b, 0x98, 0x4c, 0xa5, + 0x25, 0x79, 0xad, 0xd5, 0x2e, 0x2a, 0x30, 0xb8, 0x1d, 0x19, 0x8e, 0x63, 0x88, 0x2b, 0x7e, 0x47, + 0x85, 0x03, 0x16, 0x4a, 0x34, 0xc7, 0xaf, 0x4f, 0x77, 0x06, 0x9e, 0x6d, 0xe6, 0x72, 0x63, 0x59, + 0x95, 0x89, 0xe6, 0xda, 0x3e, 0xdd, 0x06, 0x7c, 0xbf, 0xa1, 0x73, 0x88, 0x55, 0x0c, 0x5c, 0xbf, + 0xa9, 0xbb, 0x25, 0x21, 0xf0, 0xfc, 0xff, 0x3a, 0x87, 0x12, 0x53, 0x1c, 0xbf, 0xa5, 0x3b, 0x2b, + 0x51, 0xcd, 0xef, 0xdb, 0x71, 0x07, 0xe0, 0xf6, 0x6f, 0x3a, 0xbe, 0x52, 0xd5, 0xbc, 0x3a, 0xe2, + 0xba, 0xe0, 0xb4, 0x8e, 0x96, 0xb6, 0x4e, 0xcf, 0x2a, 0xf0, 0x20, 0xc7, 0x89, 0xd1, 0x6b, 0x0d, + 0xb4, 0xce, 0x6a, 0x04, 0x84, 0x5e, 0x6f, 0x30, 0x97, 0x18, 0x8b, 0x35, 0xa4, 0x23, 0xbf, 0xd1, + 0x60, 0x1e, 0x62, 0xd4, 0x69, 0x54, 0xb1, 0x7c, 0x33, 0x66, 0x0d, 0x36, 0x6f, 0x35, 0x98, 0x4b, + 0x0d, 0x16, 0x5a, 0x6b, 0x32, 0x7f, 0x8b, 0x69, 0x82, 0xcb, 0xdf, 0x1b, 0x68, 0x1b, 0xee, 0xcb, + 0x12, 0x0d, 0x9b, 0x76, 0xe7, 0xbe, 0x2c, 0xe2, 0x73, 0xda, 0x25, 0xfb, 0xb2, 0x95, 0x1d, 0x78, + 0xa1, 0x51, 0xdb, 0x97, 0x55, 0x11, 0xf3, 0x52, 0x11, 0xa1, 0x26, 0xcc, 0x3a, 0xc3, 0xe8, 0xcb, + 0x86, 0x31, 0x1c, 0x29, 0x83, 0xf3, 0xef, 0xc1, 0x77, 0x37, 0xf9, 0x76, 0x01, 0x77, 0xc3, 0xb7, + 0x07, 0xdf, 0xdd, 0xda, 0x77, 0x09, 0xbe, 0xbb, 0x95, 0xef, 0x63, 0xa4, 0x22, 0x7c, 0xfb, 0xf0, + 0xdd, 0x1d, 0xfa, 0x0e, 0xa4, 0x0c, 0xbe, 0x05, 0xf9, 0xee, 0x05, 0xef, 0x49, 0x82, 0x7b, 0x25, + 0xef, 0x29, 0xf2, 0xdd, 0x1b, 0xf2, 0x3e, 0x96, 0x7c, 0xf7, 0x6a, 0xde, 0xdf, 0x97, 0x8a, 0xf0, + 0xfd, 0x9f, 0xe4, 0xbb, 0xb7, 0xc2, 0xfb, 0x07, 0x52, 0x06, 0xdf, 0xff, 0x25, 0x37, 0x67, 0x6e, + 0x09, 0x8e, 0xe5, 0x96, 0x7d, 0x80, 0xc4, 0x69, 0x04, 0x81, 0x3e, 0xc4, 0x00, 0x69, 0x48, 0xc7, + 0xfb, 0x08, 0x03, 0xa4, 0x51, 0x15, 0xf6, 0xe3, 0x98, 0x35, 0xa2, 0x7f, 0xd2, 0x40, 0x5b, 0x51, + 0x1f, 0x97, 0xcb, 0x39, 0xfb, 0xb4, 0x01, 0x3b, 0x15, 0x57, 0x4b, 0x29, 0xfb, 0x0c, 0x16, 0x68, + 0x6b, 0xcf, 0x9f, 0x37, 0x10, 0x29, 0x40, 0xca, 0xed, 0xbf, 0x2a, 0x46, 0xf0, 0x79, 0x5c, 0x23, + 0x69, 0xa4, 0x5d, 0xc1, 0xfd, 0xcd, 0x56, 0x81, 0xdc, 0x1e, 0xdf, 0x48, 0x6e, 0x34, 0x02, 0xcf, + 0x27, 0x34, 0xd2, 0x2e, 0xda, 0x8b, 0x31, 0x39, 0x21, 0x41, 0x07, 0x81, 0x5e, 0x39, 0x28, 0x27, + 0xe2, 0x84, 0xd3, 0x1b, 0x8e, 0xca, 0x49, 0x09, 0x62, 0xd8, 0xab, 0x87, 0xe5, 0x64, 0xa5, 0x8b, + 0x48, 0xa7, 0x24, 0x68, 0xe7, 0xec, 0xad, 0x0c, 0xcc, 0xa9, 0x4a, 0x8a, 0xec, 0x9d, 0x86, 0xb3, + 0x51, 0xf7, 0x46, 0x0a, 0x71, 0x16, 0x04, 0xdd, 0x1b, 0x11, 0xe2, 0x6c, 0x84, 0xe8, 0xde, 0xa8, + 0x43, 0x9c, 0x83, 0x10, 0xdd, 0x1b, 0x55, 0x88, 0x73, 0x95, 0x2e, 0x42, 0x9c, 0x87, 0x10, 0xdd, + 0x1b, 0xc3, 0x10, 0xe7, 0x2b, 0x29, 0x42, 0x5c, 0x80, 0x10, 0x03, 0xe8, 0xc5, 0x56, 0x08, 0x06, + 0x64, 0x2f, 0xe4, 0x39, 0x6d, 0x20, 0xec, 0xc5, 0x36, 0x84, 0x18, 0xd0, 0xbd, 0xb8, 0x58, 0xe9, + 0x22, 0xc4, 0x25, 0x08, 0x31, 0x50, 0xe9, 0xc5, 0xa5, 0x4a, 0x8a, 0x10, 0x97, 0x49, 0x4f, 0xe5, + 0x42, 0x41, 0xf6, 0x64, 0xbb, 0xd4, 0x46, 0x1b, 0xa1, 0x76, 0x24, 0xe8, 0x24, 0x24, 0x01, 0x1d, + 0x6e, 0x27, 0x1d, 0x06, 0x16, 0x4a, 0x4c, 0x85, 0xdc, 0x15, 0xb1, 0x43, 0xd8, 0xdd, 0x09, 0x2a, + 0x11, 0x65, 0xa7, 0x43, 0xef, 0x89, 0x68, 0x21, 0xfc, 0x55, 0x20, 0x3e, 0x58, 0x28, 0xcb, 0xf5, + 0x69, 0x6f, 0x02, 0xc7, 0xa1, 0x42, 0x39, 0x5c, 0x84, 0xf6, 0x25, 0xe8, 0xe0, 0x46, 0x08, 0xb1, + 0xbb, 0x0f, 0x6c, 0xfb, 0x1d, 0x57, 0xe9, 0xdf, 0x0f, 0x22, 0x68, 0x6b, 0x83, 0x07, 0xe0, 0x11, + 0x10, 0x59, 0xfc, 0x59, 0x6a, 0x94, 0x0b, 0xc2, 0x29, 0x15, 0xa6, 0x60, 0xf4, 0x60, 0x82, 0x4a, + 0x5a, 0x43, 0xda, 0xee, 0x21, 0x84, 0xd6, 0x28, 0x99, 0xfe, 0x05, 0x64, 0xbb, 0x9c, 0xcd, 0x8e, + 0x2d, 0x17, 0xab, 0x87, 0x91, 0x0a, 0x09, 0x68, 0xb3, 0x47, 0x12, 0xaa, 0xf6, 0x24, 0x4c, 0x76, + 0x8f, 0x26, 0x68, 0x55, 0x0a, 0x21, 0xad, 0xf9, 0x18, 0x7a, 0xd2, 0xef, 0xd9, 0xf0, 0xf5, 0x38, + 0x9c, 0xf7, 0x7b, 0xb6, 0x16, 0x3f, 0x81, 0x51, 0xe9, 0xf7, 0x6c, 0x72, 0xb1, 0x3f, 0x41, 0x47, + 0xcd, 0x08, 0x99, 0x61, 0x37, 0x70, 0xf2, 0x2e, 0xb7, 0xd9, 0x93, 0x09, 0xf3, 0x30, 0xa3, 0x5e, + 0xe5, 0x43, 0xa3, 0xa1, 0xf4, 0xa9, 0x84, 0xb9, 0xdc, 0x58, 0x5a, 0x25, 0xcd, 0x48, 0xd9, 0xd3, + 0x51, 0x59, 0x26, 0x6e, 0xf7, 0x0c, 0xe2, 0xc5, 0x64, 0xca, 0xea, 0xd9, 0x84, 0xf9, 0x25, 0x63, + 0x99, 0xa4, 0x35, 0x2d, 0xdc, 0x73, 0x09, 0xf3, 0x50, 0x63, 0x49, 0x5c, 0xa8, 0xec, 0x9e, 0x8f, + 0x88, 0xaa, 0x82, 0xbd, 0x90, 0x30, 0xeb, 0x0d, 0x33, 0x2a, 0x52, 0x36, 0x07, 0x12, 0xe6, 0xe1, + 0x46, 0x52, 0x0f, 0xdd, 0xb4, 0x68, 0x2f, 0x4a, 0x2a, 0x55, 0x62, 0x65, 0xfb, 0x52, 0x4c, 0x58, + 0x15, 0xf1, 0x65, 0x49, 0x26, 0x26, 0x54, 0x76, 0x7f, 0x4d, 0x98, 0x4d, 0xc6, 0x0a, 0x2d, 0xea, + 0xf1, 0xfc, 0x5c, 0xc5, 0x2e, 0xb4, 0x7f, 0x25, 0x61, 0x36, 0x1a, 0x87, 0xcd, 0xac, 0xa4, 0xfc, + 0xbc, 0x3a, 0x83, 0x4a, 0x15, 0x8b, 0xd7, 0xa0, 0x12, 0x2d, 0x95, 0x69, 0x81, 0x5e, 0x4f, 0x98, + 0x2b, 0x8d, 0xe5, 0x33, 0xa9, 0xa8, 0x30, 0x6f, 0x20, 0x45, 0x51, 0x85, 0x58, 0x6f, 0xde, 0x9c, + 0x66, 0x5f, 0xc5, 0xe1, 0x2d, 0x54, 0x59, 0xc7, 0x18, 0xe6, 0xc6, 0x6f, 0x18, 0x55, 0x64, 0xc7, + 0x58, 0x30, 0x4c, 0xad, 0xdf, 0xea, 0x16, 0xea, 0xf3, 0x77, 0x0c, 0xaf, 0x61, 0x63, 0xe1, 0xbc, + 0xfa, 0x3d, 0xc3, 0xa6, 0xca, 0x1d, 0x5a, 0x72, 0xb3, 0x5e, 0x17, 0xcf, 0xb1, 0x1b, 0xe2, 0x10, + 0x39, 0xb9, 0x31, 0x84, 0xba, 0x78, 0x4e, 0x42, 0x37, 0xc5, 0x21, 0x32, 0xbc, 0x99, 0xe1, 0x25, + 0x88, 0x3b, 0x72, 0xb1, 0xbe, 0x85, 0xd1, 0xbc, 0xea, 0x29, 0x78, 0x9e, 0x1f, 0xfa, 0xbe, 0xb5, + 0x0a, 0x23, 0x4f, 0xb7, 0x55, 0xb0, 0xd0, 0xfb, 0xed, 0x55, 0x18, 0xd9, 0xde, 0xc1, 0x68, 0x95, + 0x00, 0x06, 0xff, 0x77, 0x32, 0xf9, 0x7a, 0x56, 0x76, 0xe5, 0xdc, 0xdb, 0x87, 0xf0, 0x68, 0x93, + 0x8b, 0x7b, 0x2b, 0x4d, 0xb2, 0xbe, 0x8f, 0x99, 0xcb, 0x8c, 0x83, 0xd1, 0x3c, 0xda, 0x11, 0x13, + 0x3d, 0xbe, 0x95, 0x93, 0x6b, 0x0d, 0xa3, 0x69, 0x1d, 0xc3, 0xc9, 0xfa, 0x81, 0xe9, 0x30, 0x79, + 0xf9, 0x13, 0xb2, 0xd9, 0xe7, 0xe5, 0x8f, 0xe8, 0xf0, 0xf3, 0xec, 0x61, 0x84, 0xe8, 0xf3, 0xf2, + 0x6b, 0x3b, 0xfc, 0x7c, 0xc0, 0x1e, 0x61, 0x78, 0xaf, 0xf3, 0xf2, 0x6b, 0xd9, 0xa3, 0x8c, 0x96, + 0x78, 0xd2, 0x5b, 0xc3, 0x1e, 0x63, 0xea, 0xb5, 0xd1, 0x66, 0x8f, 0x33, 0xaa, 0x58, 0x7a, 0x24, + 0xa7, 0x19, 0xce, 0x6d, 0xbc, 0xf0, 0xf5, 0x72, 0x97, 0x3d, 0xc1, 0xe8, 0x4d, 0x70, 0xd0, 0xdb, + 0xc2, 0xf6, 0x43, 0xbf, 0xd3, 0x73, 0x37, 0xb3, 0x27, 0xe1, 0xa6, 0x73, 0xa8, 0xf3, 0xc8, 0xb5, + 0xec, 0x29, 0xc0, 0x34, 0xf0, 0xec, 0x69, 0xf9, 0x78, 0x8c, 0x2f, 0xd8, 0x33, 0x78, 0xec, 0xc8, + 0x79, 0x01, 0x7b, 0x56, 0x3e, 0x06, 0x8e, 0xcb, 0x9e, 0x03, 0xb1, 0x0e, 0x61, 0xb9, 0xe0, 0xf9, + 0x3c, 0x32, 0x45, 0x4d, 0x49, 0xf4, 0x05, 0xc4, 0xea, 0xf4, 0x02, 0x76, 0x40, 0x3d, 0x09, 0xf6, + 0x22, 0x7a, 0xd6, 0xc5, 0xf3, 0x3e, 0xe7, 0x01, 0x7b, 0x09, 0x78, 0xf7, 0x64, 0x89, 0xbd, 0xcc, + 0xcc, 0x79, 0xc6, 0xec, 0xc1, 0x34, 0xfb, 0x2b, 0x14, 0x86, 0x2c, 0xdb, 0xb1, 0xdc, 0x80, 0xbd, + 0x02, 0x85, 0x8c, 0xe3, 0xb2, 0x57, 0xf1, 0x94, 0xb5, 0x5c, 0xf6, 0x1a, 0xa3, 0xb5, 0x36, 0xeb, + 0x97, 0xdd, 0x9c, 0x25, 0xb0, 0x66, 0xbe, 0x8e, 0x22, 0xd1, 0x08, 0xf2, 0xfd, 0x06, 0xbd, 0x62, + 0x2d, 0xd6, 0x90, 0x2e, 0xc3, 0x37, 0x63, 0x8a, 0xc3, 0x8e, 0x2b, 0xd8, 0x5b, 0x28, 0xd5, 0x3e, + 0x2f, 0xef, 0xe4, 0xac, 0x42, 0x87, 0x6b, 0xb3, 0xcb, 0x93, 0x38, 0x31, 0x48, 0x60, 0x83, 0xcf, + 0xae, 0x48, 0x46, 0x14, 0xbe, 0xeb, 0xf9, 0xec, 0xca, 0x24, 0xc5, 0x1f, 0x76, 0x2d, 0x7f, 0x6a, + 0xc0, 0xc3, 0xc9, 0x64, 0x7b, 0x92, 0x82, 0x69, 0x44, 0x07, 0xdb, 0x91, 0xa4, 0x60, 0x1a, 0x05, + 0xab, 0x9d, 0x31, 0xe8, 0x3b, 0x99, 0x0d, 0x03, 0x6c, 0x57, 0x92, 0x4a, 0x10, 0x50, 0xb8, 0xed, + 0xec, 0x4e, 0xd2, 0xee, 0x57, 0xc1, 0x60, 0xbb, 0x27, 0x49, 0x95, 0x55, 0x01, 0x75, 0x98, 0xab, + 0xe0, 0x40, 0xb5, 0xd2, 0x01, 0xee, 0x9c, 0xae, 0x86, 0x03, 0xbd, 0x71, 0x2a, 0xf0, 0x1a, 0x74, + 0x84, 0x7c, 0x29, 0xe0, 0x5a, 0xb0, 0x91, 0x5b, 0xb0, 0x82, 0xae, 0x83, 0x0e, 0x6d, 0xc1, 0x0a, + 0xb8, 0x1e, 0xd9, 0x48, 0xbb, 0x42, 0xb5, 0x7f, 0x0c, 0x05, 0xda, 0x7d, 0x15, 0xf0, 0x13, 0x28, + 0xc8, 0xeb, 0x98, 0x8c, 0x93, 0x67, 0x3f, 0x4d, 0x52, 0x4d, 0xe0, 0x36, 0x86, 0x9a, 0x3f, 0xd3, + 0xe2, 0xef, 0x7a, 0x68, 0xff, 0x5c, 0xb7, 0x07, 0x78, 0x9e, 0xda, 0xbf, 0xa8, 0xf8, 0xcf, 0xfa, + 0x65, 0xce, 0x7e, 0x19, 0x21, 0x09, 0xe0, 0x57, 0xf1, 0xee, 0x01, 0xfb, 0x35, 0x94, 0x60, 0xd4, + 0x63, 0x15, 0x02, 0xce, 0x7e, 0x83, 0x21, 0x91, 0x56, 0x12, 0xf9, 0xad, 0xcc, 0x80, 0x36, 0x93, + 0xe0, 0xef, 0xe4, 0xd0, 0xf2, 0x71, 0x91, 0x99, 0x70, 0xc6, 0x05, 0xbb, 0x41, 0x06, 0x73, 0xf2, + 0x13, 0x0a, 0xb8, 0x11, 0x39, 0x0e, 0xd9, 0xd0, 0xec, 0x41, 0x27, 0xff, 0x98, 0xa4, 0x4d, 0xa7, + 0xc2, 0x2a, 0x14, 0xdc, 0x93, 0xa4, 0x6d, 0x31, 0xc6, 0x2e, 0x94, 0xed, 0x85, 0x51, 0x85, 0x65, + 0x28, 0xd8, 0x97, 0xa4, 0xfd, 0x32, 0xc2, 0x36, 0x94, 0xdc, 0x9b, 0xa4, 0x7d, 0x28, 0xce, 0x3a, + 0x14, 0xde, 0xa7, 0x33, 0x2b, 0x6f, 0xd4, 0x7e, 0x8f, 0x1e, 0xf6, 0x72, 0x31, 0x68, 0xf9, 0x56, + 0x51, 0x1d, 0xa4, 0x6e, 0x4a, 0xe2, 0x8c, 0xc9, 0xc5, 0x88, 0xe5, 0xb3, 0x9b, 0xd1, 0x18, 0xf2, + 0xb6, 0x50, 0xa2, 0x6f, 0x41, 0x23, 0x23, 0x25, 0xb7, 0x22, 0xa9, 0xb8, 0xe1, 0x09, 0xeb, 0xe8, + 0x36, 0xf8, 0x53, 0x98, 0x3e, 0x72, 0xdd, 0x9e, 0x0c, 0xaf, 0xf8, 0x50, 0x99, 0x77, 0x20, 0x63, + 0xb2, 0x8d, 0xf2, 0xbd, 0x33, 0x02, 0xa0, 0x4c, 0xef, 0x42, 0x51, 0x49, 0x40, 0x91, 0xba, 0x3b, + 0xa2, 0x83, 0xd3, 0xdd, 0x1f, 0x92, 0xb4, 0xde, 0xa4, 0x5d, 0xf2, 0xb8, 0x63, 0x25, 0xf1, 0x4a, + 0xbb, 0x72, 0x7e, 0xac, 0x94, 0xd5, 0xa0, 0x39, 0xc9, 0xfb, 0xae, 0xb4, 0xab, 0x1c, 0xed, 0x56, + 0xba, 0x70, 0xb2, 0x67, 0xa5, 0x2c, 0x82, 0x90, 0xeb, 0x55, 0x4a, 0x8a, 0xa3, 0xe1, 0xd5, 0xd2, + 0xd3, 0x38, 0x65, 0x8e, 0xc2, 0x9c, 0xdc, 0x00, 0x6d, 0xb4, 0x11, 0xea, 0x94, 0x06, 0x4a, 0x81, + 0x04, 0x74, 0xb8, 0x53, 0xf1, 0x46, 0x21, 0x31, 0x15, 0xf2, 0xb4, 0x88, 0x1d, 0xc2, 0x9e, 0x8e, + 0x97, 0x17, 0x65, 0xa7, 0x43, 0x9f, 0xd1, 0x80, 0x0e, 0x8d, 0x53, 0xa4, 0x33, 0x1b, 0x40, 0x63, + 0x1c, 0x51, 0xce, 0x6a, 0x90, 0x34, 0x74, 0x84, 0xb3, 0xf1, 0x4a, 0x93, 0x1e, 0x57, 0xde, 0xcf, + 0x51, 0xba, 0xf0, 0x7c, 0xae, 0x0a, 0x15, 0x7a, 0x3d, 0x2f, 0x12, 0x1b, 0x9d, 0x3a, 0x5f, 0xa9, + 0xcb, 0xe3, 0x3d, 0xde, 0x75, 0x3a, 0xad, 0x80, 0x1f, 0x3d, 0xc1, 0x91, 0xca, 0x7f, 0xc8, 0x37, + 0x57, 0x85, 0x20, 0xfe, 0xdb, 0xf2, 0x0d, 0x59, 0x41, 0x9a, 0xc5, 0x3f, 0xe5, 0x1b, 0xb2, 0x42, + 0x15, 0x97, 0x77, 0x62, 0xd6, 0x60, 0xf4, 0xae, 0x7c, 0x43, 0xd6, 0xd6, 0x9a, 0xd7, 0x7b, 0x31, + 0x4d, 0x90, 0x79, 0x1f, 0x54, 0x3b, 0x50, 0x4d, 0xfe, 0x54, 0x49, 0xb0, 0x0b, 0x9b, 0x14, 0xd0, + 0xed, 0x4a, 0x60, 0x6b, 0x13, 0x76, 0x6d, 0xaf, 0x88, 0xcf, 0x30, 0xec, 0xa2, 0x26, 0xdc, 0xf8, + 0x76, 0x7d, 0x9d, 0x6d, 0x83, 0x60, 0xd0, 0x0a, 0x82, 0x2d, 0x9e, 0x6f, 0xb3, 0x8b, 0x9b, 0x30, + 0x95, 0x2d, 0xd7, 0xf6, 0x8a, 0xf2, 0xe2, 0xfb, 0x92, 0x26, 0x6c, 0x43, 0xeb, 0x3b, 0x8e, 0x60, + 0x97, 0xea, 0xc7, 0xb5, 0xec, 0x32, 0x04, 0x18, 0x76, 0x73, 0xda, 0xe3, 0xe5, 0x4d, 0x34, 0xdd, + 0x2a, 0x00, 0xb7, 0xfb, 0xb8, 0x9b, 0x17, 0x13, 0xec, 0x8a, 0x26, 0xa2, 0x5b, 0xe1, 0x96, 0x1e, + 0x61, 0x57, 0x6a, 0x48, 0xb1, 0x4b, 0x8f, 0xb0, 0xed, 0x4d, 0x78, 0x75, 0x72, 0x73, 0x9e, 0xcd, + 0xd9, 0x0e, 0x34, 0xba, 0x38, 0x1a, 0x3b, 0x41, 0x35, 0xd3, 0x7f, 0x24, 0xdb, 0x05, 0xaa, 0x5d, + 0x96, 0xb0, 0xc6, 0xac, 0x80, 0xb3, 0x6b, 0x9b, 0x70, 0x52, 0xc0, 0xc9, 0xc0, 0xdb, 0x12, 0xb0, + 0xeb, 0x40, 0xbd, 0xb3, 0xec, 0xfb, 0xdc, 0x15, 0xc3, 0x01, 0xf7, 0xd9, 0xf5, 0xe0, 0x8b, 0xc7, + 0x1f, 0x37, 0xc9, 0x6b, 0x05, 0xd7, 0xe5, 0xf8, 0x36, 0x92, 0xee, 0x62, 0x3f, 0x01, 0xd4, 0x87, + 0xd7, 0xdb, 0x80, 0xfb, 0x22, 0xdd, 0xc5, 0x7e, 0x8a, 0x4e, 0x44, 0x21, 0x9a, 0xfe, 0xe9, 0x2e, + 0xf6, 0xb3, 0x26, 0x5c, 0x41, 0x73, 0x3f, 0xa0, 0x11, 0xf8, 0x39, 0x22, 0xc9, 0x0b, 0x79, 0x89, + 0xfc, 0xa2, 0x49, 0x1e, 0x43, 0xb6, 0xc8, 0xc5, 0xe1, 0x97, 0x4d, 0x54, 0x90, 0x99, 0x02, 0xe7, + 0x25, 0x76, 0x4f, 0x93, 0x3c, 0x2f, 0xe4, 0x36, 0xb1, 0xbd, 0x32, 0xb9, 0xbc, 0xc0, 0xad, 0x80, + 0x03, 0xd9, 0xd7, 0x44, 0x05, 0xa2, 0x2f, 0xfd, 0xdc, 0x29, 0x79, 0xeb, 0x7b, 0x6f, 0x13, 0x0d, + 0x7c, 0x78, 0x4b, 0xa4, 0xe1, 0xfb, 0x9a, 0xd4, 0xcb, 0x73, 0x88, 0xdc, 0x8f, 0x2e, 0xd0, 0x4a, + 0x10, 0x42, 0x0f, 0x00, 0xc2, 0x65, 0xa7, 0x86, 0xfe, 0xd4, 0x44, 0xf5, 0xa6, 0xae, 0xed, 0x34, + 0xf8, 0x67, 0xe8, 0xe1, 0xd6, 0x4c, 0x43, 0x0f, 0x36, 0xc9, 0xe9, 0xce, 0x45, 0x87, 0xf0, 0x5c, + 0xf6, 0x50, 0xd8, 0x1c, 0x10, 0x9e, 0xc5, 0xfe, 0xd2, 0x24, 0x17, 0x07, 0x2e, 0xda, 0x20, 0x7e, + 0xb8, 0xd2, 0x86, 0xfc, 0x11, 0x0c, 0x5a, 0x3a, 0x48, 0x0f, 0x6e, 0x3e, 0x8a, 0x3d, 0x0a, 0xef, + 0xb2, 0x41, 0x45, 0x67, 0x09, 0xf6, 0x58, 0x04, 0xea, 0xb7, 0x4a, 0x25, 0x6e, 0xb3, 0xc7, 0x2b, + 0x26, 0x6d, 0xec, 0x09, 0x39, 0x58, 0xc3, 0xe9, 0x2e, 0xb6, 0x1f, 0xc5, 0x35, 0xe2, 0x08, 0x1e, + 0x04, 0xeb, 0xad, 0x60, 0x82, 0x3d, 0xa9, 0x14, 0x21, 0x7d, 0x0a, 0x81, 0x29, 0xfb, 0x99, 0x09, + 0xcb, 0xb7, 0xd9, 0xd3, 0x4d, 0xe1, 0x77, 0x0a, 0xc7, 0xc5, 0xae, 0xf6, 0x8c, 0x64, 0x5e, 0x70, + 0x36, 0x71, 0x6a, 0x3e, 0xda, 0x88, 0xe3, 0x9c, 0x6a, 0x3d, 0xd6, 0x88, 0x03, 0x25, 0xcf, 0xf3, + 0xc9, 0x12, 0xb5, 0x1f, 0x6f, 0xa4, 0x95, 0x48, 0xb6, 0x87, 0xb3, 0x3d, 0xdf, 0x20, 0xec, 0x89, + 0x08, 0xa6, 0xed, 0xf6, 0x37, 0xe2, 0x68, 0x19, 0x62, 0x5a, 0xf7, 0xc9, 0x46, 0xca, 0xae, 0xc4, + 0xb1, 0x54, 0x12, 0xf8, 0x54, 0xa3, 0xdc, 0xb1, 0x42, 0x50, 0x6b, 0x3f, 0xdd, 0x88, 0x13, 0x27, + 0x04, 0x43, 0xbc, 0x54, 0xb0, 0x72, 0x70, 0xfe, 0x4c, 0x23, 0x8e, 0x8c, 0x51, 0x58, 0x5b, 0x3c, + 0xdb, 0x48, 0x25, 0xa2, 0xf8, 0x96, 0xc7, 0x02, 0x19, 0xe0, 0xb9, 0x46, 0xb9, 0x89, 0x55, 0x50, + 0xad, 0xff, 0x3c, 0xf8, 0xd0, 0xb2, 0xd0, 0x3d, 0x29, 0x7c, 0x2b, 0x47, 0x6f, 0x11, 0xec, 0xf4, + 0x66, 0x0d, 0x0e, 0xbb, 0xc7, 0x94, 0x3d, 0x81, 0xa0, 0x67, 0x34, 0x53, 0xe2, 0x08, 0xcc, 0x4e, + 0x95, 0x80, 0x9c, 0xd9, 0xac, 0x8f, 0x17, 0x19, 0x0e, 0xbb, 0xb3, 0x9a, 0xf5, 0xa7, 0x14, 0x39, + 0x21, 0x08, 0x3b, 0x3b, 0xf4, 0x15, 0xe9, 0xc0, 0x39, 0xa1, 0xe2, 0x10, 0x2f, 0x7a, 0x9b, 0x81, + 0x9d, 0xdb, 0xac, 0x3f, 0xcd, 0xf4, 0x73, 0x3f, 0x0f, 0xe8, 0xbc, 0xe6, 0xf8, 0xa7, 0x19, 0xc2, + 0xce, 0x6f, 0x8e, 0x7d, 0xc1, 0x21, 0xe8, 0x82, 0x66, 0xca, 0x12, 0x41, 0x23, 0x56, 0xc1, 0xb1, + 0x41, 0xc8, 0xc9, 0xb3, 0x1f, 0x36, 0x53, 0x2a, 0xa8, 0xd5, 0xe9, 0xb9, 0xc2, 0x72, 0xdc, 0x80, + 0xd0, 0x1f, 0x35, 0x53, 0xae, 0x2b, 0x5f, 0x80, 0x4a, 0x25, 0x2e, 0xcf, 0x42, 0x17, 0xc6, 0x05, + 0x95, 0x1e, 0x6c, 0x6d, 0xa6, 0xa1, 0x0c, 0x89, 0x0d, 0x5a, 0x22, 0x37, 0x41, 0xf8, 0x45, 0xcd, + 0x34, 0x0a, 0x15, 0xdc, 0xe7, 0x01, 0xf7, 0x65, 0x5f, 0xb6, 0x35, 0x53, 0xbe, 0xa3, 0xa1, 0x07, + 0x2d, 0x01, 0xa3, 0x8b, 0xc3, 0x2e, 0x0d, 0xfa, 0x5c, 0x08, 0xf0, 0xbf, 0x24, 0xec, 0xd2, 0x46, + 0x9d, 0xec, 0x4b, 0x43, 0xb5, 0x0c, 0xb7, 0x7c, 0x19, 0xef, 0xb2, 0x90, 0x60, 0x46, 0x78, 0xbe, + 0x45, 0x29, 0x3a, 0x16, 0xca, 0x97, 0x87, 0xf6, 0x5d, 0xbc, 0x24, 0xc3, 0x5c, 0x11, 0x0e, 0xd6, + 0xbf, 0xf3, 0x29, 0xf4, 0xfb, 0xca, 0xd0, 0xa3, 0x5c, 0x69, 0x09, 0xdb, 0x1e, 0x26, 0x8e, 0xb4, + 0xf0, 0x1e, 0x40, 0xf0, 0x8e, 0x30, 0x10, 0xf2, 0x29, 0x97, 0x02, 0x12, 0xec, 0x8c, 0x0b, 0x36, + 0x88, 0x09, 0xee, 0xc3, 0x62, 0x57, 0x35, 0xb5, 0x1e, 0x9f, 0x83, 0xda, 0xee, 0x70, 0x0c, 0xfa, + 0x79, 0x71, 0x8c, 0xfb, 0x1b, 0xc6, 0x09, 0xdd, 0x03, 0xc2, 0x23, 0x3c, 0xd7, 0x11, 0x64, 0xf9, + 0x24, 0x92, 0xfc, 0x3e, 0xca, 0x64, 0x84, 0xe7, 0x7a, 0x7c, 0xaf, 0xa8, 0xc1, 0x0f, 0x50, 0x60, + 0x23, 0x3c, 0xd7, 0xe5, 0x14, 0x11, 0xe7, 0x43, 0x10, 0x1e, 0xe1, 0xb9, 0xbe, 0x23, 0xf4, 0x4f, + 0x4d, 0x08, 0xfe, 0x28, 0x84, 0xd7, 0x46, 0xe1, 0x8f, 0x9b, 0xe9, 0x15, 0x79, 0x84, 0xe7, 0x06, + 0x78, 0xde, 0x12, 0xce, 0x66, 0x9e, 0x76, 0x5d, 0xee, 0x0f, 0xfa, 0x9e, 0x5d, 0x96, 0xb5, 0xf4, + 0x09, 0x46, 0x70, 0x84, 0xe7, 0x3a, 0xbd, 0xc0, 0x71, 0x79, 0xd4, 0xf6, 0x53, 0x4d, 0xb1, 0x6f, + 0xed, 0x80, 0xe7, 0x17, 0x09, 0xfa, 0xac, 0xd9, 0x5c, 0x61, 0x1c, 0x1a, 0xfd, 0xa6, 0x11, 0xff, + 0xc0, 0x7a, 0x73, 0x0b, 0x9d, 0x07, 0x49, 0x1e, 0xc3, 0xe5, 0x15, 0xfd, 0x2d, 0x2d, 0xe6, 0x61, + 0x46, 0xfd, 0x0c, 0x42, 0xec, 0xfc, 0xb7, 0xb6, 0x68, 0xd7, 0x55, 0x52, 0xb5, 0xdd, 0xdf, 0xd6, + 0x42, 0x3d, 0x99, 0x41, 0xae, 0x0f, 0x09, 0xb7, 0x7f, 0x91, 0x7b, 0x1c, 0x0d, 0xee, 0x68, 0x31, + 0x1b, 0x8c, 0x2f, 0xcd, 0x64, 0xae, 0x4f, 0x09, 0x77, 0x7e, 0x91, 0x3d, 0x0e, 0x0c, 0x77, 0xb5, + 0x98, 0xff, 0xcb, 0x68, 0x98, 0x41, 0x1a, 0x4f, 0xc0, 0xdd, 0x2d, 0x34, 0x51, 0x06, 0x0b, 0xe5, + 0x2a, 0xfc, 0xc2, 0x16, 0xdc, 0x02, 0xd1, 0x7b, 0x50, 0x5c, 0xb0, 0xb5, 0x85, 0x0e, 0xe4, 0xfa, + 0xee, 0x2b, 0x2e, 0xbb, 0x08, 0xb2, 0x78, 0x3c, 0xbd, 0xf5, 0x6c, 0x83, 0x4c, 0xdf, 0xfa, 0xc7, + 0xed, 0x2e, 0x6e, 0xa1, 0x8a, 0xeb, 0xcb, 0xc6, 0xd1, 0x4b, 0x24, 0xda, 0x1d, 0x47, 0x2f, 0x05, + 0xda, 0x5b, 0xa5, 0x7b, 0x19, 0xbc, 0xeb, 0xcb, 0xed, 0xb8, 0xec, 0x72, 0x74, 0x05, 0x37, 0xd4, + 0x71, 0xc1, 0x15, 0xd2, 0x55, 0x55, 0x80, 0x2b, 0x81, 0x76, 0x6f, 0x8c, 0xa3, 0xdb, 0x81, 0x0e, + 0x54, 0xe9, 0xee, 0x68, 0xa1, 0x35, 0x43, 0x5e, 0x98, 0xc6, 0x25, 0x3b, 0x21, 0x89, 0x61, 0xea, + 0x7d, 0x6e, 0xd7, 0x4c, 0x12, 0xbc, 0x75, 0xed, 0x6e, 0x51, 0xa5, 0x1d, 0x95, 0xc8, 0x17, 0xab, + 0x3d, 0xa8, 0x86, 0x19, 0x8c, 0xc2, 0x97, 0x97, 0xab, 0x5a, 0xcc, 0x46, 0xe3, 0xb0, 0x99, 0x8c, + 0x43, 0x95, 0xab, 0x11, 0x59, 0x1e, 0x77, 0xe3, 0x6c, 0xaf, 0x41, 0xef, 0xd2, 0xe3, 0x71, 0xf4, + 0x5a, 0x39, 0x64, 0xea, 0x18, 0x1a, 0x97, 0x5d, 0xd7, 0x42, 0x73, 0xad, 0x27, 0x9b, 0xe9, 0xa7, + 0xa5, 0xf5, 0x68, 0x3a, 0x58, 0x3e, 0x84, 0x3c, 0x6b, 0xa8, 0xf2, 0x73, 0x20, 0xf6, 0x97, 0x16, + 0x5a, 0x27, 0xb4, 0x60, 0xd0, 0xe7, 0xe3, 0xce, 0x24, 0x7b, 0x38, 0x06, 0xca, 0x6d, 0x8e, 0x3d, + 0xd2, 0x82, 0x77, 0x51, 0x4b, 0xf0, 0x1e, 0xcf, 0x2f, 0x5a, 0x98, 0xf0, 0x6f, 0xb7, 0xd2, 0xb2, + 0x48, 0x58, 0x9f, 0x23, 0xb8, 0x4f, 0xa7, 0xeb, 0x56, 0x75, 0x4a, 0xe4, 0x5d, 0xce, 0xf8, 0x38, + 0x7b, 0xa7, 0x55, 0x5f, 0x77, 0xd3, 0xc4, 0x01, 0xf4, 0x6e, 0x2b, 0x51, 0xa1, 0xa6, 0x9c, 0x8c, + 0xa1, 0xe0, 0xbd, 0x56, 0xbc, 0xff, 0xa9, 0x29, 0x54, 0x25, 0x7c, 0xbf, 0xd5, 0x3c, 0xdc, 0x48, + 0x6a, 0xa1, 0xfe, 0x1b, 0x8a, 0x3f, 0x80, 0xd3, 0x8a, 0x4d, 0x28, 0xf8, 0x10, 0x4e, 0xa5, 0x60, + 0x9a, 0xd5, 0x47, 0xad, 0x34, 0xa8, 0x6a, 0x3d, 0x8e, 0xc7, 0xfb, 0xb8, 0x95, 0x96, 0x40, 0xed, + 0x2a, 0x84, 0x3f, 0x69, 0xa5, 0x63, 0x12, 0x75, 0x8f, 0x7d, 0x8a, 0xc7, 0xf5, 0x5e, 0xd9, 0x67, + 0x9f, 0xb5, 0xe2, 0x02, 0xda, 0x71, 0xcb, 0x82, 0xb3, 0xcf, 0x5b, 0xe5, 0xbb, 0x66, 0xce, 0x73, + 0x6d, 0xf6, 0x2f, 0x24, 0xa8, 0xdf, 0xc9, 0xf9, 0x9e, 0x42, 0x8e, 0x4b, 0xd1, 0xe1, 0xb4, 0xdf, + 0x73, 0xc5, 0x04, 0x3b, 0x3e, 0x85, 0x3b, 0x79, 0x7a, 0x1e, 0xb0, 0x8a, 0x9c, 0x9d, 0x90, 0xc2, + 0x1d, 0xbf, 0xb7, 0x85, 0xca, 0xa2, 0xc3, 0xcf, 0xb3, 0x13, 0x53, 0xf8, 0x82, 0x20, 0x01, 0xaf, + 0x2c, 0x08, 0x3b, 0x29, 0x85, 0x4b, 0x24, 0x6b, 0x0a, 0x26, 0x27, 0xc3, 0xa4, 0xcb, 0x9a, 0xda, + 0x30, 0x2e, 0x7d, 0x9e, 0x02, 0x9f, 0x00, 0x8e, 0xe6, 0x7c, 0x13, 0x3b, 0xb5, 0xd2, 0xfe, 0x0f, + 0x6e, 0xf9, 0xec, 0xb4, 0x14, 0x8d, 0x08, 0x89, 0xc8, 0x67, 0x3f, 0x9d, 0xf1, 0x4f, 0x4f, 0x51, + 0x85, 0x69, 0xc8, 0x2b, 0x0b, 0xa0, 0x67, 0x20, 0x0e, 0xa1, 0x5d, 0xd6, 0x14, 0x3b, 0x13, 0x71, + 0xa8, 0xa5, 0xfc, 0x9c, 0x95, 0xa2, 0xee, 0xe3, 0xf1, 0xec, 0x14, 0xe5, 0x8a, 0x1e, 0x63, 0x6e, + 0xcf, 0x49, 0x51, 0x49, 0x47, 0x61, 0xed, 0xfa, 0x5c, 0x70, 0xea, 0xe5, 0x42, 0x56, 0x12, 0x3b, + 0x2f, 0x85, 0x23, 0xf2, 0x54, 0x40, 0x89, 0xc5, 0x55, 0x60, 0x50, 0x62, 0xe7, 0xa7, 0x68, 0xf5, + 0x8b, 0x80, 0x5e, 0x59, 0x10, 0x7e, 0x41, 0x2a, 0xf2, 0xa2, 0x81, 0x91, 0xf8, 0x21, 0xf8, 0x2b, + 0x84, 0x86, 0x6a, 0x0d, 0xe5, 0xe9, 0x47, 0xd5, 0x28, 0xae, 0xe9, 0x2e, 0x04, 0x6d, 0xac, 0xe2, + 0x5b, 0x53, 0xf2, 0x3d, 0xa2, 0x18, 0x16, 0xef, 0x45, 0xe8, 0xf2, 0x70, 0xb6, 0x13, 0x6e, 0xb7, + 0x81, 0xff, 0x70, 0xb6, 0x93, 0x54, 0x02, 0x61, 0x15, 0x4b, 0x7a, 0x58, 0x2e, 0x4e, 0x51, 0x51, + 0x55, 0x4b, 0xd4, 0xf8, 0x5c, 0x02, 0x61, 0x87, 0x6d, 0x93, 0x13, 0x81, 0x13, 0xbe, 0x5d, 0xf9, + 0x80, 0x94, 0xa2, 0x8a, 0x8b, 0x0b, 0xd5, 0x9e, 0x74, 0x19, 0xc2, 0x75, 0xd8, 0x36, 0x8a, 0xcd, + 0x12, 0x28, 0x3a, 0xac, 0x0d, 0x97, 0x6b, 0x23, 0xfd, 0x12, 0x51, 0xf1, 0x77, 0x45, 0x8a, 0xea, + 0x3e, 0x2a, 0x52, 0xde, 0xae, 0x44, 0xf6, 0x94, 0x37, 0x89, 0xc1, 0xd7, 0xf6, 0x90, 0x5d, 0xf8, + 0x7e, 0x53, 0xf1, 0xb6, 0x23, 0x64, 0x57, 0x11, 0x2a, 0x7f, 0x3b, 0x63, 0xec, 0x94, 0x58, 0xae, + 0x99, 0x9a, 0x02, 0x71, 0x8e, 0x7a, 0xdb, 0x8d, 0xb2, 0xa8, 0x08, 0x94, 0xa7, 0x3d, 0x60, 0x90, + 0x29, 0x8f, 0xcd, 0x94, 0x9f, 0xab, 0xc0, 0x20, 0x2e, 0x54, 0x76, 0x57, 0x83, 0x41, 0xa6, 0x3c, + 0x36, 0x2d, 0x3f, 0xd7, 0x68, 0xa3, 0xe9, 0xf9, 0xb9, 0x16, 0xe4, 0xa2, 0x22, 0xe5, 0xed, 0x3a, + 0x59, 0x5d, 0xd2, 0x5b, 0x24, 0x3f, 0xd7, 0x87, 0xec, 0x66, 0xc8, 0xcf, 0x8f, 0x43, 0x76, 0xd3, + 0xf2, 0xf3, 0x93, 0x18, 0xbb, 0x68, 0x7e, 0x7e, 0xaa, 0x29, 0x54, 0xe7, 0xe7, 0x67, 0xc8, 0x4f, + 0x45, 0xa0, 0x3c, 0xfd, 0x1c, 0x41, 0x86, 0x5d, 0x67, 0x32, 0xac, 0x2e, 0x55, 0xc4, 0xec, 0x17, + 0xb0, 0x88, 0x89, 0xe8, 0x2c, 0xf4, 0xcb, 0xe9, 0x70, 0x17, 0xcf, 0xb1, 0x5f, 0xa5, 0xe4, 0x2f, + 0xd2, 0xdc, 0xcd, 0xdc, 0x17, 0xd9, 0x63, 0xd9, 0xaf, 0x53, 0xf8, 0xbc, 0x67, 0x6d, 0x42, 0xf6, + 0xd8, 0x6f, 0xc2, 0x26, 0x66, 0xc3, 0x6f, 0xa1, 0x3d, 0xc8, 0x7d, 0xc7, 0xb3, 0x3b, 0x6c, 0x9b, + 0xfd, 0x0e, 0x13, 0x5e, 0xb6, 0xb1, 0xf4, 0xfd, 0x1e, 0x93, 0x63, 0x63, 0xd9, 0xf2, 0x05, 0xf7, + 0xd9, 0x0d, 0x50, 0xcf, 0xf0, 0x5c, 0xd6, 0x83, 0xf9, 0x8d, 0x29, 0xf9, 0x5a, 0x58, 0xe4, 0x59, + 0x5a, 0xe9, 0xd8, 0x4d, 0x29, 0xfd, 0x82, 0x0b, 0x3e, 0xe4, 0xf1, 0xe6, 0x14, 0x2d, 0x8c, 0x59, + 0xaf, 0xcb, 0x9a, 0x0a, 0xd8, 0x2d, 0x52, 0x5f, 0xad, 0x8a, 0x01, 0xbb, 0x15, 0x4b, 0x80, 0x9a, + 0x52, 0x7a, 0x9e, 0xdd, 0x86, 0x41, 0x8a, 0x80, 0x6a, 0x8a, 0xdd, 0x8e, 0x65, 0x31, 0x74, 0x8e, + 0x89, 0x7d, 0x07, 0x1c, 0x84, 0x98, 0xbc, 0x84, 0xbf, 0x33, 0xa5, 0x57, 0x71, 0x80, 0x7a, 0x9e, + 0xdf, 0x85, 0xae, 0xf4, 0x59, 0x81, 0xa0, 0xa5, 0xed, 0x6e, 0x78, 0xcb, 0x08, 0x9f, 0xa8, 0x09, + 0x99, 0x9c, 0x3f, 0xc8, 0xf2, 0x88, 0x62, 0x54, 0x8d, 0xec, 0x8f, 0x55, 0xb8, 0x1e, 0xcb, 0x7b, + 0x10, 0x88, 0xce, 0xda, 0x7a, 0x18, 0x40, 0x6a, 0xef, 0x34, 0x98, 0x78, 0xb1, 0x7d, 0x58, 0x9a, + 0xd4, 0x0b, 0x62, 0xe8, 0xfb, 0xde, 0x18, 0xaa, 0x3d, 0xdf, 0xa7, 0x27, 0x1e, 0xe9, 0x45, 0xb7, + 0x2a, 0x76, 0x7f, 0x74, 0x7e, 0xa9, 0x8b, 0x6c, 0x57, 0xb0, 0x07, 0xa2, 0x4b, 0x8c, 0xda, 0xf8, + 0xd4, 0xa9, 0xf6, 0x4f, 0x51, 0x8b, 0xb4, 0xab, 0x7f, 0x26, 0xf0, 0x67, 0x24, 0xa0, 0x02, 0x93, + 0x97, 0x07, 0x53, 0x74, 0xbe, 0x50, 0x98, 0xa6, 0xa8, 0xf4, 0x1f, 0x8a, 0xce, 0x78, 0x2d, 0xc3, + 0x67, 0x5f, 0x3d, 0x09, 0xa6, 0x71, 0x7d, 0x38, 0x5a, 0xeb, 0x15, 0xae, 0x8f, 0x44, 0xa7, 0x7b, + 0x9c, 0xeb, 0xa3, 0x51, 0x8b, 0x0a, 0xd7, 0xc7, 0xe4, 0x60, 0x85, 0x30, 0x79, 0x79, 0x1c, 0x5c, + 0x15, 0x56, 0xc5, 0xf5, 0x89, 0xe8, 0xec, 0x8b, 0x72, 0xdd, 0x8f, 0xf2, 0xa7, 0xa1, 0x41, 0x3d, + 0x3e, 0x99, 0xd2, 0x77, 0xff, 0x6a, 0x4f, 0x7a, 0x2a, 0x5e, 0x63, 0x98, 0x02, 0x4f, 0xeb, 0x45, + 0xa3, 0x42, 0x17, 0xaf, 0x1b, 0xcf, 0xc8, 0xfd, 0x2b, 0x24, 0x05, 0xf0, 0xd9, 0xa8, 0x72, 0xda, + 0x0d, 0xbf, 0x8c, 0x3c, 0x17, 0x4d, 0x92, 0x66, 0x04, 0x8b, 0xe7, 0xa3, 0x2b, 0xa3, 0x96, 0x68, + 0xb3, 0x17, 0x62, 0x9d, 0x8c, 0x1d, 0x92, 0xd8, 0x81, 0x58, 0x27, 0xf5, 0x87, 0x0f, 0x57, 0xb0, + 0x17, 0x63, 0xb1, 0x94, 0x00, 0xb1, 0x5e, 0x8a, 0xc5, 0xd2, 0xc7, 0x2a, 0x15, 0xeb, 0x65, 0xbd, + 0x79, 0x54, 0xf5, 0xf3, 0xaf, 0xe8, 0x67, 0xa5, 0x50, 0x00, 0xbe, 0x12, 0x55, 0x8e, 0xf4, 0xf3, + 0xd5, 0x68, 0xe1, 0xc6, 0xfa, 0xf9, 0x5a, 0x74, 0x87, 0xac, 0xee, 0xe7, 0xeb, 0xb1, 0xc2, 0x8b, + 0xf7, 0xf3, 0x8d, 0x58, 0xe1, 0x45, 0xfa, 0xf9, 0x66, 0x2c, 0x56, 0xb4, 0x9f, 0x6f, 0xc5, 0x62, + 0x55, 0xf5, 0xf3, 0x6f, 0x29, 0x7a, 0x4d, 0xac, 0x9a, 0x87, 0x54, 0x12, 0x2a, 0xde, 0xdf, 0xa3, + 0x5d, 0x23, 0x77, 0x0a, 0xff, 0x47, 0x34, 0x0f, 0xf8, 0x94, 0xe1, 0x0a, 0xf6, 0x36, 0xa6, 0x6f, + 0x04, 0x44, 0xfc, 0x7f, 0x46, 0x29, 0x13, 0xa2, 0x63, 0xbf, 0x13, 0x9d, 0xa6, 0x0a, 0x54, 0xee, + 0xdf, 0x8d, 0x86, 0xd5, 0xdf, 0x43, 0x5c, 0xc1, 0xde, 0x8b, 0x75, 0x5f, 0xe2, 0x08, 0xf2, 0x7e, + 0x2c, 0x67, 0x52, 0xa0, 0xe3, 0x7c, 0x10, 0x2d, 0xc3, 0x48, 0x1f, 0x3e, 0x8c, 0xd6, 0xac, 0xee, + 0xc3, 0x47, 0xe8, 0x43, 0x04, 0x84, 0xfb, 0x8f, 0xa3, 0xe5, 0x15, 0xed, 0xc3, 0x27, 0xd1, 0xe9, + 0x1b, 0xef, 0xc3, 0xa7, 0xd1, 0xb0, 0x91, 0x3e, 0x7c, 0x16, 0x2b, 0xd5, 0x48, 0x1f, 0x3e, 0x8f, + 0xd5, 0x77, 0xbc, 0x0f, 0xff, 0x4a, 0x99, 0xab, 0x8c, 0xc3, 0x67, 0xac, 0x89, 0x70, 0xf5, 0x3c, + 0x6e, 0x0d, 0xbd, 0xd2, 0x4f, 0xaf, 0x8d, 0x50, 0xe1, 0xf8, 0x35, 0xf4, 0x9a, 0x36, 0x43, 0x8d, + 0x84, 0x1a, 0x27, 0xac, 0x31, 0x9b, 0x8c, 0x15, 0x33, 0xd7, 0x4a, 0xa8, 0x74, 0xe2, 0x1a, 0xe2, + 0x32, 0xe3, 0x3c, 0x0c, 0x75, 0x4e, 0x02, 0x97, 0xe9, 0xf3, 0x31, 0x54, 0x38, 0x19, 0x5c, 0x66, + 0x98, 0x97, 0xa1, 0xc6, 0x29, 0xe0, 0x32, 0xf3, 0xfc, 0x0c, 0x95, 0x4e, 0x5d, 0xa3, 0xbe, 0x27, + 0xaa, 0xcb, 0xfe, 0xfd, 0x6d, 0x66, 0xad, 0x51, 0xb3, 0xce, 0x71, 0xd9, 0x93, 0x6d, 0xf4, 0x96, + 0xd1, 0x91, 0xe9, 0x4c, 0xa7, 0xd9, 0x53, 0x6d, 0xf8, 0xd6, 0x3d, 0x61, 0xf9, 0xec, 0xe9, 0x36, + 0x7c, 0xfb, 0x98, 0xb0, 0x7c, 0x69, 0x31, 0x9c, 0xed, 0xf9, 0x06, 0x7b, 0xa6, 0x8d, 0xf6, 0x65, + 0xf5, 0x23, 0xf3, 0x67, 0xdb, 0xe4, 0x97, 0x0a, 0x6a, 0x1c, 0x9d, 0x61, 0xcf, 0xb5, 0xd1, 0x4e, + 0xa9, 0xce, 0x10, 0xec, 0x79, 0xf8, 0xef, 0x2e, 0x08, 0xf6, 0x42, 0x1b, 0xad, 0x8e, 0xdd, 0x93, + 0x25, 0xcf, 0x17, 0x19, 0x2e, 0x8e, 0xa4, 0x5d, 0xed, 0x40, 0x1c, 0x3b, 0x8a, 0xb0, 0x17, 0xe3, + 0xd8, 0xd7, 0x09, 0x7b, 0x09, 0x21, 0xf0, 0xef, 0x1c, 0x54, 0x11, 0x2f, 0xb7, 0xe1, 0x43, 0x02, + 0x35, 0xe5, 0x22, 0xd3, 0x46, 0xc7, 0x72, 0xb4, 0x55, 0x2d, 0xbd, 0xa2, 0x34, 0x5c, 0x3b, 0xed, + 0x66, 0xb8, 0x60, 0xaf, 0x82, 0xb0, 0x5a, 0xa7, 0x5f, 0x6b, 0xc3, 0x16, 0x8b, 0x06, 0x1d, 0x11, + 0xfa, 0xbc, 0x9c, 0x55, 0xe0, 0xec, 0xf5, 0x36, 0xfc, 0xd4, 0xdb, 0xf7, 0x8a, 0xeb, 0xac, 0x80, + 0xb7, 0x1d, 0xc5, 0xde, 0x80, 0x93, 0xf5, 0x7c, 0x32, 0xed, 0xe2, 0x0c, 0xf1, 0xa6, 0x6e, 0x67, + 0x84, 0x4f, 0xed, 0xb7, 0xda, 0xe4, 0x17, 0xb5, 0x80, 0xfb, 0x02, 0x69, 0xf9, 0x5b, 0x9b, 0xfc, + 0xa2, 0x46, 0x00, 0xfb, 0x7b, 0x9b, 0xbc, 0x6e, 0x57, 0x37, 0xbd, 0xec, 0x1f, 0x6d, 0xf2, 0x23, + 0x5e, 0x20, 0x7c, 0xf6, 0x36, 0x9e, 0xfb, 0xb2, 0xbe, 0x53, 0x64, 0xff, 0x6c, 0x93, 0xbf, 0xda, + 0x1b, 0x97, 0x3e, 0xde, 0x69, 0x93, 0xbf, 0x42, 0x1f, 0x17, 0xec, 0x5d, 0xb8, 0x53, 0x03, 0xf5, + 0x5e, 0x1b, 0xae, 0x4f, 0xbc, 0x9c, 0x25, 0x70, 0x22, 0x08, 0xa0, 0xfd, 0x7e, 0x04, 0x3d, 0x32, + 0x44, 0x3f, 0x40, 0x3e, 0x22, 0xba, 0xec, 0xc3, 0x08, 0x02, 0x3d, 0xf6, 0x91, 0xa4, 0xe0, 0x6d, + 0xe1, 0x3e, 0xfb, 0x58, 0x52, 0x28, 0x59, 0x36, 0xcc, 0x3f, 0x91, 0x14, 0x4a, 0x96, 0xcd, 0x3e, + 0xc5, 0x60, 0xd2, 0x89, 0x8f, 0xb2, 0xf8, 0x19, 0x08, 0x6d, 0xc8, 0x61, 0x0b, 0xfd, 0x1c, 0xfd, + 0xdb, 0x90, 0x0b, 0x7f, 0x39, 0x88, 0x91, 0xde, 0xe0, 0xdb, 0xec, 0xb8, 0x76, 0x72, 0x8d, 0x8b, + 0x54, 0x76, 0x3c, 0x9e, 0x87, 0xd0, 0xd3, 0x13, 0xda, 0xf1, 0x7d, 0x95, 0x97, 0xb8, 0x25, 0xd8, + 0x89, 0xed, 0xf8, 0xdd, 0x82, 0xbc, 0x90, 0x66, 0x27, 0xb5, 0xcb, 0x0f, 0x2d, 0x9b, 0xb9, 0x1f, + 0xe0, 0x22, 0x9d, 0x9d, 0xac, 0xe4, 0x40, 0xd8, 0x29, 0xed, 0xf8, 0x06, 0xe0, 0xe4, 0x27, 0x64, + 0x96, 0x4e, 0x95, 0x6e, 0xa9, 0xcd, 0x4e, 0x6b, 0xc7, 0xa7, 0x1c, 0xcd, 0xfe, 0xf4, 0x76, 0xfc, + 0xae, 0x83, 0xd8, 0x9f, 0x01, 0xad, 0x4c, 0x89, 0x22, 0x9c, 0xd9, 0x2e, 0xff, 0x9d, 0xc1, 0xcf, + 0x15, 0x4b, 0xec, 0xac, 0x76, 0xb5, 0xa4, 0x04, 0xe0, 0x5e, 0xc9, 0xe7, 0xd9, 0x71, 0x41, 0x25, + 0xa5, 0xe7, 0xb4, 0xab, 0xb5, 0x2f, 0x62, 0xc1, 0xce, 0x8d, 0x83, 0x32, 0xb1, 0xe7, 0xc5, 0xc1, + 0xb4, 0x6b, 0xf3, 0x49, 0x76, 0x3e, 0x38, 0x66, 0x3d, 0x55, 0x59, 0x17, 0xc8, 0xa6, 0xef, 0x14, + 0x71, 0xe6, 0xfb, 0x21, 0x7a, 0x47, 0x4d, 0xe9, 0xf7, 0x47, 0x61, 0x5b, 0xba, 0xbc, 0x10, 0xfd, + 0x18, 0x76, 0xd7, 0xf3, 0x49, 0xb6, 0x15, 0xb2, 0xe1, 0x52, 0x89, 0xcb, 0xb2, 0xba, 0x48, 0xca, + 0xa8, 0xcd, 0xb6, 0xb5, 0x53, 0x41, 0x56, 0xe6, 0x2a, 0xbb, 0xb8, 0x5d, 0xfe, 0x36, 0x63, 0x8b, + 0x52, 0xbe, 0xa4, 0x9d, 0x2a, 0x3f, 0xfc, 0x7d, 0x69, 0xf8, 0x8a, 0xd9, 0x6e, 0x1e, 0x66, 0xd4, + 0x6b, 0xb8, 0xb3, 0x58, 0x8a, 0xfd, 0xc2, 0xfc, 0xb2, 0x76, 0x9a, 0x90, 0xf2, 0x77, 0xa3, 0xda, + 0xe2, 0xf2, 0x76, 0x5a, 0xc6, 0x81, 0x55, 0xab, 0x5f, 0xa1, 0xbb, 0xea, 0xb8, 0x96, 0x3f, 0xc5, + 0xae, 0x6c, 0x0f, 0x67, 0x95, 0x04, 0xb6, 0x7f, 0x51, 0x30, 0x9c, 0xa2, 0x77, 0xcc, 0xe8, 0x18, + 0xa2, 0x9d, 0xed, 0xd1, 0x5f, 0xbc, 0x02, 0xda, 0xd5, 0x1e, 0xfe, 0x5a, 0x15, 0xed, 0xdd, 0xed, + 0xab, 0x7f, 0x10, 0xfd, 0xaf, 0x47, 0xfc, 0xd3, 0x9d, 0xb9, 0xdc, 0x58, 0x56, 0x05, 0xa5, 0xdd, + 0xcd, 0x56, 0xc1, 0xb1, 0xd9, 0x2c, 0xf3, 0x50, 0x63, 0x69, 0x95, 0x2c, 0x33, 0xe1, 0x95, 0x0b, + 0x36, 0x4b, 0x98, 0xf5, 0xc6, 0x21, 0x55, 0xa2, 0xfe, 0x72, 0x20, 0xd8, 0xec, 0x19, 0xfc, 0x91, + 0x60, 0xc0, 0x13, 0xac, 0x66, 0xf5, 0x19, 0x09, 0xdc, 0x99, 0x55, 0xfd, 0xfb, 0x5e, 0xdc, 0x44, + 0xa3, 0x03, 0x9e, 0xcb, 0xd9, 0x2c, 0xf3, 0x4b, 0x46, 0xfd, 0x0c, 0xff, 0xf0, 0xe7, 0x79, 0x81, + 0x60, 0x09, 0xf3, 0x70, 0xe3, 0xd0, 0xe9, 0xc2, 0x2e, 0x2e, 0xc5, 0xb3, 0xcd, 0xc3, 0x8c, 0xe4, + 0x0c, 0x7e, 0x79, 0x9e, 0x92, 0x51, 0xb3, 0xfa, 0xfb, 0x51, 0x2e, 0xfa, 0x3f, 0x4e, 0xe3, 0x5d, + 0x26, 0xb4, 0x92, 0x8d, 0x65, 0xd5, 0x06, 0xb8, 0x09, 0x4c, 0x98, 0x49, 0x63, 0x49, 0x1c, 0x1f, + 0xc4, 0xff, 0x9a, 0xb2, 0xd9, 0x33, 0x48, 0xe4, 0x7d, 0x60, 0xcd, 0x6a, 0x6e, 0x2c, 0xae, 0xfa, + 0xd7, 0x36, 0xfc, 0x97, 0x8b, 0x57, 0x2c, 0x15, 0xb8, 0xe0, 0xb8, 0xd4, 0x99, 0x65, 0x2e, 0xc2, + 0x22, 0x6d, 0x15, 0xd0, 0x4c, 0x90, 0xc2, 0xa0, 0xe5, 0x0b, 0xc7, 0x2a, 0x1c, 0x01, 0x64, 0x76, + 0x04, 0x59, 0x0b, 0xa4, 0x86, 0x4c, 0xba, 0xb8, 0x5d, 0x2e, 0xa1, 0x39, 0x67, 0xdd, 0x57, 0xf6, + 0x1e, 0x58, 0x91, 0x78, 0xf0, 0xc0, 0x8a, 0xc4, 0xf3, 0x07, 0x56, 0x24, 0xb6, 0xbd, 0xb8, 0x62, + 0x96, 0xb1, 0x34, 0xe7, 0x15, 0x5b, 0x4b, 0x8e, 0x9b, 0xcf, 0x59, 0xa5, 0x56, 0xe1, 0xd8, 0x63, + 0xf8, 0xef, 0xb3, 0xc1, 0xc4, 0x7f, 0x07, 0x00, 0x00, 0xff, 0xff, 0x88, 0x72, 0x61, 0xd1, 0xd9, + 0x3c, 0x00, 0x00, } diff --git a/proto/executor.proto b/proto/executor.proto index f1aea3a1..9176e718 100644 --- a/proto/executor.proto +++ b/proto/executor.proto @@ -161,55 +161,6 @@ enum FTSQueryType { FTSQueryTypeWithScore = 2; } -enum FTSBooleanOccur { - FTSBooleanOccurInvalid = 0; - FTSBooleanOccurShould = 1; - FTSBooleanOccurMust = 2; - FTSBooleanOccurMustNot = 3; -} - -enum FTSBooleanModifier { - FTSBooleanModifierNone = 0; - FTSBooleanModifierBoost = 1; - FTSBooleanModifierDeBoost = 2; - FTSBooleanModifierNegate = 3; -} - -enum FTSBooleanTermType { - FTSBooleanTermInvalid = 0; - FTSBooleanTermWord = 1; - FTSBooleanTermPhrase = 2; - FTSBooleanTermPrefix = 3; -} - -message FTSBooleanTerm { - optional FTSBooleanTermType term_type = 1 [(gogoproto.nullable) = false]; - optional string text = 2 [(gogoproto.nullable) = false]; - optional uint32 phrase_distance = 3 [(gogoproto.nullable) = false]; -} - -message FTSBooleanQuery { - repeated FTSBooleanNode nodes = 1; - // The Boolean query carries the analyzer selected by the FULLTEXT index so - // TiFlash does not have to infer NGRAM semantics from the raw query text. - optional string query_tokenizer = 2 [(gogoproto.nullable) = false]; - optional uint32 ngram_token_size = 3 [(gogoproto.nullable) = false]; - // STANDARD_V1 analyzer settings. If both token-size fields are zero, TiFlash - // uses the default STANDARD_V1 analyzer settings. - optional uint32 innodb_ft_min_token_size = 4 [(gogoproto.nullable) = false]; - optional uint32 innodb_ft_max_token_size = 5 [(gogoproto.nullable) = false]; - optional bool innodb_ft_enable_stopword = 6 [(gogoproto.nullable) = false]; -} - -message FTSBooleanNode { - optional FTSBooleanOccur occur = 1 [(gogoproto.nullable) = false]; - optional FTSBooleanModifier modifier = 2 [(gogoproto.nullable) = false]; - oneof node { - FTSBooleanTerm term = 3; - FTSBooleanQuery sub_expression = 4; - } -} - message FTSQueryInfo { optional FTSQueryType query_type = 1 [(gogoproto.nullable) = false]; optional int64 index_id = 2 [(gogoproto.nullable) = false]; diff --git a/proto/expression.proto b/proto/expression.proto index c6369c29..ceb5f99f 100644 --- a/proto/expression.proto +++ b/proto/expression.proto @@ -774,6 +774,59 @@ enum ScalarFuncSig { } // Evaluators should implement evaluation functions for every expression type. +// Boolean full-text query representation shared by scan-level FTS metadata and +// scalar expressions. These types live in expression.proto so Expr can carry +// the query as a typed field without introducing an import cycle with +// executor.proto. +enum FTSBooleanOccur { + FTSBooleanOccurInvalid = 0; + FTSBooleanOccurShould = 1; + FTSBooleanOccurMust = 2; + FTSBooleanOccurMustNot = 3; +} + +enum FTSBooleanModifier { + FTSBooleanModifierNone = 0; + FTSBooleanModifierBoost = 1; + FTSBooleanModifierDeBoost = 2; + FTSBooleanModifierNegate = 3; +} + +enum FTSBooleanTermType { + FTSBooleanTermInvalid = 0; + FTSBooleanTermWord = 1; + FTSBooleanTermPhrase = 2; + FTSBooleanTermPrefix = 3; +} + +message FTSBooleanTerm { + optional FTSBooleanTermType term_type = 1 [(gogoproto.nullable) = false]; + optional string text = 2 [(gogoproto.nullable) = false]; + optional uint32 phrase_distance = 3 [(gogoproto.nullable) = false]; +} + +message FTSBooleanQuery { + repeated FTSBooleanNode nodes = 1; + // The Boolean query carries the analyzer selected by the FULLTEXT index so + // TiFlash does not have to infer NGRAM semantics from the raw query text. + optional string query_tokenizer = 2 [(gogoproto.nullable) = false]; + optional uint32 ngram_token_size = 3 [(gogoproto.nullable) = false]; + // STANDARD_V1 analyzer settings. If both token-size fields are zero, TiFlash + // uses the default STANDARD_V1 analyzer settings. + optional uint32 innodb_ft_min_token_size = 4 [(gogoproto.nullable) = false]; + optional uint32 innodb_ft_max_token_size = 5 [(gogoproto.nullable) = false]; + optional bool innodb_ft_enable_stopword = 6 [(gogoproto.nullable) = false]; +} + +message FTSBooleanNode { + optional FTSBooleanOccur occur = 1 [(gogoproto.nullable) = false]; + optional FTSBooleanModifier modifier = 2 [(gogoproto.nullable) = false]; + oneof node { + FTSBooleanTerm term = 3; + FTSBooleanQuery sub_expression = 4; + } +} + message Expr { optional ExprType tp = 1 [(gogoproto.nullable) = false]; optional bytes val = 2; @@ -784,6 +837,10 @@ message Expr { optional bool has_distinct = 7 [(gogoproto.nullable) = false]; repeated ByItem order_by = 8; optional AggFunctionMode aggFuncMode = 9; + // Boolean MATCH metadata for scalar functions such as FTSMatchExpression. + // This is separate from children so query syntax/configuration cannot be + // mistaken for a MATCH document column. + optional FTSBooleanQuery fts_boolean_query = 10; } // Expression organized in RPN form. From 2c0cddbdaca8dbcd45bf48d49750a90fa68d44cc Mon Sep 17 00:00:00 2001 From: Zhigao TONG Date: Wed, 30 Sep 2026 16:06:04 +0800 Subject: [PATCH 06/12] proto: store FTS metadata in Expr.val --- go-tipb/analyze.pb.go | 1 + go-tipb/expression.pb.go | 1082 +++++++++++++++++++++----------------- proto/expression.proto | 13 +- 3 files changed, 614 insertions(+), 482 deletions(-) diff --git a/go-tipb/analyze.pb.go b/go-tipb/analyze.pb.go index e95c65a8..7ea0357b 100644 --- a/go-tipb/analyze.pb.go +++ b/go-tipb/analyze.pb.go @@ -84,6 +84,7 @@ It has these top-level messages: FieldType FTSBooleanTerm FTSBooleanQuery + FTSMatchExpressionMetadata FTSBooleanNode Expr RpnExpr diff --git a/go-tipb/expression.pb.go b/go-tipb/expression.pb.go index 215d2c5d..c8e4dc08 100644 --- a/go-tipb/expression.pb.go +++ b/go-tipb/expression.pb.go @@ -2490,6 +2490,37 @@ func (m *FTSBooleanQuery) GetInnodbFtEnableStopword() bool { return false } +// Versioned Boolean MATCH metadata stored in Expr.val when Expr.sig is +// FTSMatchExpression. Expr.val is already the generic scalar-function +// metadata slot, so this avoids adding an FTS-specific field to Expr while +// keeping the SQL arguments in Expr.children unchanged. +type FTSMatchExpressionMetadata struct { + Version uint32 `protobuf:"varint,1,opt,name=version" json:"version"` + BooleanQuery *FTSBooleanQuery `protobuf:"bytes,2,opt,name=boolean_query,json=booleanQuery" json:"boolean_query,omitempty"` + XXX_unrecognized []byte `json:"-"` +} + +func (m *FTSMatchExpressionMetadata) Reset() { *m = FTSMatchExpressionMetadata{} } +func (m *FTSMatchExpressionMetadata) String() string { return proto.CompactTextString(m) } +func (*FTSMatchExpressionMetadata) ProtoMessage() {} +func (*FTSMatchExpressionMetadata) Descriptor() ([]byte, []int) { + return fileDescriptorExpression, []int{3} +} + +func (m *FTSMatchExpressionMetadata) GetVersion() uint32 { + if m != nil { + return m.Version + } + return 0 +} + +func (m *FTSMatchExpressionMetadata) GetBooleanQuery() *FTSBooleanQuery { + if m != nil { + return m.BooleanQuery + } + return nil +} + type FTSBooleanNode struct { Occur FTSBooleanOccur `protobuf:"varint,1,opt,name=occur,enum=tipb.FTSBooleanOccur" json:"occur"` Modifier FTSBooleanModifier `protobuf:"varint,2,opt,name=modifier,enum=tipb.FTSBooleanModifier" json:"modifier"` @@ -2503,7 +2534,7 @@ type FTSBooleanNode struct { func (m *FTSBooleanNode) Reset() { *m = FTSBooleanNode{} } func (m *FTSBooleanNode) String() string { return proto.CompactTextString(m) } func (*FTSBooleanNode) ProtoMessage() {} -func (*FTSBooleanNode) Descriptor() ([]byte, []int) { return fileDescriptorExpression, []int{3} } +func (*FTSBooleanNode) Descriptor() ([]byte, []int) { return fileDescriptorExpression, []int{4} } type isFTSBooleanNode_Node interface { isFTSBooleanNode_Node() @@ -2631,26 +2662,22 @@ func _FTSBooleanNode_OneofSizer(msg proto.Message) (n int) { } type Expr struct { - Tp ExprType `protobuf:"varint,1,opt,name=tp,enum=tipb.ExprType" json:"tp"` - Val []byte `protobuf:"bytes,2,opt,name=val" json:"val,omitempty"` - Children []*Expr `protobuf:"bytes,3,rep,name=children" json:"children,omitempty"` - RpnArgsLen *uint32 `protobuf:"varint,6,opt,name=rpn_args_len,json=rpnArgsLen" json:"rpn_args_len,omitempty"` - Sig ScalarFuncSig `protobuf:"varint,4,opt,name=sig,enum=tipb.ScalarFuncSig" json:"sig"` - FieldType *FieldType `protobuf:"bytes,5,opt,name=field_type,json=fieldType" json:"field_type,omitempty"` - HasDistinct bool `protobuf:"varint,7,opt,name=has_distinct,json=hasDistinct" json:"has_distinct"` - OrderBy []*ByItem `protobuf:"bytes,8,rep,name=order_by,json=orderBy" json:"order_by,omitempty"` - AggFuncMode *AggFunctionMode `protobuf:"varint,9,opt,name=aggFuncMode,enum=tipb.AggFunctionMode" json:"aggFuncMode,omitempty"` - // Boolean MATCH metadata for scalar functions such as FTSMatchExpression. - // This is separate from children so query syntax/configuration cannot be - // mistaken for a MATCH document column. - FtsBooleanQuery *FTSBooleanQuery `protobuf:"bytes,10,opt,name=fts_boolean_query,json=ftsBooleanQuery" json:"fts_boolean_query,omitempty"` + Tp ExprType `protobuf:"varint,1,opt,name=tp,enum=tipb.ExprType" json:"tp"` + Val []byte `protobuf:"bytes,2,opt,name=val" json:"val,omitempty"` + Children []*Expr `protobuf:"bytes,3,rep,name=children" json:"children,omitempty"` + RpnArgsLen *uint32 `protobuf:"varint,6,opt,name=rpn_args_len,json=rpnArgsLen" json:"rpn_args_len,omitempty"` + Sig ScalarFuncSig `protobuf:"varint,4,opt,name=sig,enum=tipb.ScalarFuncSig" json:"sig"` + FieldType *FieldType `protobuf:"bytes,5,opt,name=field_type,json=fieldType" json:"field_type,omitempty"` + HasDistinct bool `protobuf:"varint,7,opt,name=has_distinct,json=hasDistinct" json:"has_distinct"` + OrderBy []*ByItem `protobuf:"bytes,8,rep,name=order_by,json=orderBy" json:"order_by,omitempty"` + AggFuncMode *AggFunctionMode `protobuf:"varint,9,opt,name=aggFuncMode,enum=tipb.AggFunctionMode" json:"aggFuncMode,omitempty"` XXX_unrecognized []byte `json:"-"` } func (m *Expr) Reset() { *m = Expr{} } func (m *Expr) String() string { return proto.CompactTextString(m) } func (*Expr) ProtoMessage() {} -func (*Expr) Descriptor() ([]byte, []int) { return fileDescriptorExpression, []int{4} } +func (*Expr) Descriptor() ([]byte, []int) { return fileDescriptorExpression, []int{5} } func (m *Expr) GetTp() ExprType { if m != nil { @@ -2715,13 +2742,6 @@ func (m *Expr) GetAggFuncMode() AggFunctionMode { return AggFunctionMode_CompleteMode } -func (m *Expr) GetFtsBooleanQuery() *FTSBooleanQuery { - if m != nil { - return m.FtsBooleanQuery - } - return nil -} - // Expression organized in RPN form. // https://en.wikipedia.org/wiki/Reverse_Polish_notation type RpnExpr struct { @@ -2733,7 +2753,7 @@ type RpnExpr struct { func (m *RpnExpr) Reset() { *m = RpnExpr{} } func (m *RpnExpr) String() string { return proto.CompactTextString(m) } func (*RpnExpr) ProtoMessage() {} -func (*RpnExpr) Descriptor() ([]byte, []int) { return fileDescriptorExpression, []int{5} } +func (*RpnExpr) Descriptor() ([]byte, []int) { return fileDescriptorExpression, []int{6} } func (m *RpnExpr) GetExprs() []*Expr { if m != nil { @@ -2753,7 +2773,7 @@ type ByItem struct { func (m *ByItem) Reset() { *m = ByItem{} } func (m *ByItem) String() string { return proto.CompactTextString(m) } func (*ByItem) ProtoMessage() {} -func (*ByItem) Descriptor() ([]byte, []int) { return fileDescriptorExpression, []int{6} } +func (*ByItem) Descriptor() ([]byte, []int) { return fileDescriptorExpression, []int{7} } func (m *ByItem) GetExpr() *Expr { if m != nil { @@ -2780,6 +2800,7 @@ func init() { proto.RegisterType((*FieldType)(nil), "tipb.FieldType") proto.RegisterType((*FTSBooleanTerm)(nil), "tipb.FTSBooleanTerm") proto.RegisterType((*FTSBooleanQuery)(nil), "tipb.FTSBooleanQuery") + proto.RegisterType((*FTSMatchExpressionMetadata)(nil), "tipb.FTSMatchExpressionMetadata") proto.RegisterType((*FTSBooleanNode)(nil), "tipb.FTSBooleanNode") proto.RegisterType((*Expr)(nil), "tipb.Expr") proto.RegisterType((*RpnExpr)(nil), "tipb.RpnExpr") @@ -2939,6 +2960,40 @@ func (m *FTSBooleanQuery) MarshalTo(dAtA []byte) (int, error) { return i, nil } +func (m *FTSMatchExpressionMetadata) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *FTSMatchExpressionMetadata) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0x8 + i++ + i = encodeVarintExpression(dAtA, i, uint64(m.Version)) + if m.BooleanQuery != nil { + dAtA[i] = 0x12 + i++ + i = encodeVarintExpression(dAtA, i, uint64(m.BooleanQuery.Size())) + n1, err := m.BooleanQuery.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n1 + } + if m.XXX_unrecognized != nil { + i += copy(dAtA[i:], m.XXX_unrecognized) + } + return i, nil +} + func (m *FTSBooleanNode) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) @@ -2961,11 +3016,11 @@ func (m *FTSBooleanNode) MarshalTo(dAtA []byte) (int, error) { i++ i = encodeVarintExpression(dAtA, i, uint64(m.Modifier)) if m.Node != nil { - nn1, err := m.Node.MarshalTo(dAtA[i:]) + nn2, err := m.Node.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += nn1 + i += nn2 } if m.XXX_unrecognized != nil { i += copy(dAtA[i:], m.XXX_unrecognized) @@ -2979,11 +3034,11 @@ func (m *FTSBooleanNode_Term) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x1a i++ i = encodeVarintExpression(dAtA, i, uint64(m.Term.Size())) - n2, err := m.Term.MarshalTo(dAtA[i:]) + n3, err := m.Term.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n2 + i += n3 } return i, nil } @@ -2993,11 +3048,11 @@ func (m *FTSBooleanNode_SubExpression) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x22 i++ i = encodeVarintExpression(dAtA, i, uint64(m.SubExpression.Size())) - n3, err := m.SubExpression.MarshalTo(dAtA[i:]) + n4, err := m.SubExpression.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n3 + i += n4 } return i, nil } @@ -3044,11 +3099,11 @@ func (m *Expr) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x2a i++ i = encodeVarintExpression(dAtA, i, uint64(m.FieldType.Size())) - n4, err := m.FieldType.MarshalTo(dAtA[i:]) + n5, err := m.FieldType.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n4 + i += n5 } if m.RpnArgsLen != nil { dAtA[i] = 0x30 @@ -3080,16 +3135,6 @@ func (m *Expr) MarshalTo(dAtA []byte) (int, error) { i++ i = encodeVarintExpression(dAtA, i, uint64(*m.AggFuncMode)) } - if m.FtsBooleanQuery != nil { - dAtA[i] = 0x52 - i++ - i = encodeVarintExpression(dAtA, i, uint64(m.FtsBooleanQuery.Size())) - n5, err := m.FtsBooleanQuery.MarshalTo(dAtA[i:]) - if err != nil { - return 0, err - } - i += n5 - } if m.XXX_unrecognized != nil { i += copy(dAtA[i:], m.XXX_unrecognized) } @@ -3244,6 +3289,20 @@ func (m *FTSBooleanQuery) Size() (n int) { return n } +func (m *FTSMatchExpressionMetadata) Size() (n int) { + var l int + _ = l + n += 1 + sovExpression(uint64(m.Version)) + if m.BooleanQuery != nil { + l = m.BooleanQuery.Size() + n += 1 + l + sovExpression(uint64(l)) + } + if m.XXX_unrecognized != nil { + n += len(m.XXX_unrecognized) + } + return n +} + func (m *FTSBooleanNode) Size() (n int) { var l int _ = l @@ -3308,10 +3367,6 @@ func (m *Expr) Size() (n int) { if m.AggFuncMode != nil { n += 1 + sovExpression(uint64(*m.AggFuncMode)) } - if m.FtsBooleanQuery != nil { - l = m.FtsBooleanQuery.Size() - n += 1 + l + sovExpression(uint64(l)) - } if m.XXX_unrecognized != nil { n += len(m.XXX_unrecognized) } @@ -3894,6 +3949,109 @@ func (m *FTSBooleanQuery) Unmarshal(dAtA []byte) error { } return nil } +func (m *FTSMatchExpressionMetadata) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowExpression + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: FTSMatchExpressionMetadata: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: FTSMatchExpressionMetadata: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Version", wireType) + } + m.Version = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowExpression + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.Version |= (uint32(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field BooleanQuery", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowExpression + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthExpression + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.BooleanQuery == nil { + m.BooleanQuery = &FTSBooleanQuery{} + } + if err := m.BooleanQuery.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipExpression(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthExpression + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} func (m *FTSBooleanNode) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 @@ -4300,39 +4458,6 @@ func (m *Expr) Unmarshal(dAtA []byte) error { } } m.AggFuncMode = &v - case 10: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field FtsBooleanQuery", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowExpression - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= (int(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthExpression - } - postIndex := iNdEx + msglen - if postIndex > l { - return io.ErrUnexpectedEOF - } - if m.FtsBooleanQuery == nil { - m.FtsBooleanQuery = &FTSBooleanQuery{} - } - if err := m.FtsBooleanQuery.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipExpression(dAtA[iNdEx:]) @@ -4682,403 +4807,404 @@ var ( func init() { proto.RegisterFile("expression.proto", fileDescriptorExpression) } var fileDescriptorExpression = []byte{ - // 6355 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x7c, 0x7b, 0x69, 0x78, 0x14, 0xc7, - 0xb9, 0x2e, 0x83, 0xc0, 0x88, 0x06, 0x44, 0xb9, 0x0d, 0x68, 0x4c, 0x6c, 0x90, 0x50, 0xee, 0x95, - 0x42, 0x6e, 0x34, 0x18, 0x3b, 0x52, 0x9e, 0x7b, 0x73, 0x93, 0x23, 0xb4, 0x31, 0x39, 0x92, 0x10, - 0x9a, 0x91, 0x9c, 0xf3, 0x4b, 0x4f, 0x6b, 0xba, 0x34, 0xea, 0x30, 0xd3, 0x3d, 0xee, 0xae, 0x01, - 0xc9, 0x39, 0x39, 0x8f, 0xf7, 0x7d, 0x4f, 0x8c, 0xf1, 0xce, 0xea, 0x35, 0xfb, 0xee, 0x7d, 0x4d, - 0x0c, 0x5e, 0x12, 0x3b, 0x5e, 0xf1, 0x6e, 0x6c, 0xc7, 0x7b, 0x12, 0xc7, 0xfb, 0x9a, 0xf3, 0x7c, - 0x6f, 0x55, 0xf5, 0x74, 0x8f, 0xe4, 0xf3, 0x4b, 0x5d, 0xef, 0xb7, 0xbd, 0xf5, 0xd5, 0x57, 0x4b, - 0x57, 0x8f, 0x0c, 0xc6, 0x27, 0x4b, 0x3e, 0x0f, 0x02, 0xc7, 0x73, 0x5b, 0x4b, 0xbe, 0x27, 0x3c, - 0x73, 0x8e, 0x70, 0x4a, 0x63, 0xcb, 0xeb, 0x8a, 0x5c, 0x58, 0xb6, 0x25, 0x2c, 0x89, 0x2e, 0x5f, - 0x92, 0xf7, 0xf2, 0x1e, 0x1e, 0x53, 0xf4, 0x24, 0xd1, 0x55, 0x6f, 0x25, 0x8c, 0xf9, 0x3d, 0x0e, - 0x2f, 0xd8, 0xd9, 0xa9, 0x12, 0x37, 0x97, 0x18, 0xb3, 0x45, 0x29, 0x99, 0x68, 0x48, 0xb4, 0xcc, - 0x5d, 0x37, 0x67, 0xef, 0xb3, 0x2b, 0x67, 0x0d, 0xcd, 0x16, 0x25, 0x33, 0x69, 0xcc, 0x19, 0x2f, - 0x58, 0xf9, 0xe4, 0xec, 0x86, 0x44, 0xcb, 0x22, 0x85, 0x03, 0x91, 0x12, 0xee, 0x26, 0x6b, 0x22, - 0x16, 0x40, 0xcc, 0x15, 0xc6, 0x3c, 0x9b, 0xe7, 0x9c, 0xa2, 0x55, 0x48, 0xce, 0x89, 0x08, 0x35, - 0x48, 0xf2, 0x9c, 0x57, 0x28, 0x58, 0x82, 0x27, 0xe7, 0x46, 0xe5, 0x0a, 0x84, 0x7c, 0xc2, 0xf2, - 0x03, 0x2e, 0x92, 0x07, 0x35, 0x24, 0x5a, 0xe6, 0x87, 0x72, 0x09, 0x9a, 0xcb, 0x8d, 0xb9, 0xbc, - 0xc0, 0x8b, 0x41, 0x72, 0x5e, 0x43, 0x4d, 0x28, 0x95, 0x10, 0xc9, 0x2c, 0xdf, 0xb7, 0xa6, 0x92, - 0xb5, 0x0d, 0x89, 0x96, 0x5a, 0x2d, 0x03, 0xb4, 0x6a, 0x6b, 0xc2, 0xa8, 0xeb, 0xc9, 0x66, 0xd6, - 0x79, 0x5e, 0x81, 0x5b, 0x6e, 0x96, 0xfb, 0x45, 0xf3, 0xff, 0x19, 0xf3, 0x05, 0xf7, 0x8b, 0xa3, - 0x62, 0xaa, 0xc4, 0xd1, 0xf7, 0xba, 0xb5, 0xc9, 0x56, 0x4a, 0x61, 0x6b, 0x5c, 0x91, 0x32, 0xa4, - 0x9c, 0xd5, 0x0a, 0xd5, 0xa6, 0x0c, 0x08, 0x3e, 0x29, 0x90, 0x1b, 0x4d, 0x03, 0x88, 0xf9, 0x35, - 0x63, 0x71, 0x69, 0xc2, 0xb7, 0x02, 0x3e, 0x6a, 0x3b, 0x81, 0xb0, 0xdc, 0x1c, 0x47, 0x9a, 0x74, - 0x02, 0xeb, 0xa4, 0xb0, 0x4b, 0xc9, 0x56, 0xed, 0x9f, 0x6d, 0x2c, 0xae, 0xc4, 0xdb, 0x58, 0xe6, - 0xfe, 0x94, 0xb9, 0xda, 0x98, 0xeb, 0x7a, 0x36, 0x0f, 0x92, 0x89, 0x86, 0x9a, 0x96, 0x05, 0x6b, - 0x97, 0x54, 0xb3, 0x1a, 0xf0, 0x6c, 0x3e, 0x24, 0x55, 0x28, 0xdc, 0x31, 0x64, 0x34, 0x2a, 0xbc, - 0x4d, 0xdc, 0x75, 0x8e, 0xe5, 0x7e, 0x8c, 0x53, 0x1d, 0x84, 0x59, 0x2d, 0x33, 0x5b, 0x0d, 0xe6, - 0xe6, 0x7d, 0xab, 0x28, 0xd5, 0x47, 0x03, 0xe7, 0xd8, 0x2a, 0x7a, 0x90, 0x42, 0x3f, 0xe3, 0x1c, - 0xcb, 0xcd, 0x6f, 0x1a, 0x49, 0xc7, 0x75, 0x3d, 0x7b, 0x6c, 0x74, 0x5c, 0x8c, 0x16, 0x1d, 0x37, - 0x6a, 0x37, 0x27, 0x62, 0xb7, 0x44, 0x6a, 0xf5, 0x88, 0x7e, 0xc7, 0xfd, 0x22, 0x6b, 0x6b, 0x32, - 0x6a, 0x3d, 0x77, 0x46, 0x6b, 0x6b, 0xb2, 0x62, 0xfd, 0x6d, 0xe3, 0xd0, 0x8a, 0x35, 0x77, 0xad, - 0xb1, 0x02, 0x1f, 0x0d, 0x84, 0x57, 0xda, 0xe2, 0xf9, 0x36, 0xaa, 0x43, 0x8f, 0xf1, 0x32, 0x6d, - 0xde, 0x0d, 0xa5, 0x8c, 0xd2, 0x59, 0xf5, 0x4e, 0x6c, 0xd0, 0x29, 0x6b, 0xe6, 0x11, 0xc6, 0x5c, - 0x2f, 0x97, 0x2b, 0xfb, 0x6a, 0xc0, 0x97, 0x56, 0xa7, 0x76, 0x03, 0x09, 0x75, 0xe9, 0x40, 0xd3, - 0xfc, 0xbf, 0x46, 0x6d, 0xd1, 0xb3, 0x9d, 0x71, 0x47, 0xa5, 0x76, 0x86, 0x32, 0xe9, 0x57, 0x72, - 0x5d, 0x26, 0x5a, 0xdf, 0x5c, 0x4d, 0x65, 0xe2, 0x17, 0x91, 0xe2, 0x19, 0x06, 0x92, 0xca, 0x6b, - 0x3d, 0x0a, 0xc7, 0x2f, 0x9a, 0xdf, 0x32, 0xea, 0x82, 0xf2, 0xd8, 0x68, 0x65, 0x5a, 0x23, 0xc1, - 0x0b, 0xa6, 0x73, 0x44, 0x91, 0xac, 0x9f, 0x35, 0xb4, 0x28, 0x28, 0x8f, 0x75, 0x87, 0xda, 0xeb, - 0x0e, 0x32, 0xe6, 0x50, 0x49, 0xac, 0xfa, 0x55, 0x8d, 0x31, 0x87, 0x60, 0xf3, 0xcb, 0xe1, 0xac, - 0xae, 0x5b, 0x5b, 0x27, 0x9d, 0x10, 0x1e, 0xa9, 0x67, 0x9a, 0xe5, 0xcc, 0xa8, 0xd9, 0x6c, 0x15, - 0xd0, 0xb3, 0x85, 0x43, 0xf4, 0x68, 0xfe, 0x6f, 0xa3, 0x36, 0x37, 0xe1, 0x14, 0x6c, 0x1f, 0x33, - 0x9c, 0x2a, 0xd0, 0xa8, 0x58, 0x0f, 0x85, 0x32, 0xf3, 0xab, 0x46, 0x4d, 0xe0, 0xe4, 0xc1, 0xb2, - 0x6e, 0xed, 0x21, 0x52, 0x25, 0x93, 0xb3, 0x0a, 0x96, 0xdf, 0x53, 0x76, 0x73, 0x19, 0x27, 0xaf, - 0xa2, 0x90, 0x96, 0xd9, 0x6a, 0x18, 0xe3, 0xb4, 0xde, 0xc8, 0xe9, 0x36, 0x17, 0x3d, 0x5b, 0xac, - 0x7a, 0xa6, 0xd7, 0xa1, 0xa1, 0xf9, 0xe3, 0xe1, 0x92, 0xd4, 0x60, 0x2c, 0xf4, 0x4b, 0xee, 0xa8, - 0xe5, 0xe7, 0x83, 0x51, 0x5a, 0x6a, 0x68, 0xbc, 0x17, 0x0d, 0x19, 0x7e, 0xc9, 0xed, 0xf0, 0xf3, - 0x41, 0x1f, 0x77, 0xcd, 0x66, 0x63, 0xe1, 0x84, 0x15, 0x60, 0x96, 0x39, 0x6e, 0x4e, 0x24, 0xe7, - 0x45, 0x2a, 0x62, 0xc1, 0x84, 0x15, 0x74, 0x29, 0x81, 0xd9, 0x6c, 0xd4, 0x7a, 0xbe, 0xcd, 0xfd, - 0xd1, 0x31, 0x5a, 0x1a, 0xa8, 0x3f, 0x0b, 0x65, 0xe0, 0x75, 0x53, 0x69, 0xc1, 0x8b, 0x43, 0xf3, - 0x20, 0x5d, 0x37, 0x65, 0xb6, 0x1b, 0x0b, 0xac, 0x7c, 0x9e, 0xc8, 0xf7, 0x7b, 0x36, 0x4f, 0xce, - 0x8f, 0x96, 0x48, 0x87, 0x14, 0x08, 0xc7, 0xa3, 0xd1, 0xe6, 0x43, 0x51, 0x4d, 0xb3, 0xc3, 0x38, - 0x78, 0x5c, 0x04, 0xa3, 0x63, 0x72, 0x7c, 0x46, 0x31, 0xe7, 0x92, 0xc6, 0xff, 0x30, 0x7a, 0x43, - 0x8b, 0xc7, 0x45, 0x10, 0x05, 0x56, 0x7d, 0xd5, 0x98, 0x37, 0x54, 0x72, 0x31, 0x6e, 0x0d, 0xc6, - 0x5c, 0x2a, 0x02, 0x3d, 0xfd, 0xa3, 0xc9, 0x97, 0x82, 0x55, 0x05, 0xe3, 0x20, 0xc9, 0xdd, 0x5c, - 0x61, 0xcc, 0x21, 0x08, 0xa3, 0x1c, 0x57, 0x05, 0x4e, 0xeb, 0x94, 0xcd, 0x83, 0x1c, 0x86, 0x57, - 0x27, 0x07, 0x88, 0xd9, 0x62, 0xd4, 0x52, 0x82, 0x61, 0x2d, 0xcb, 0x73, 0x91, 0xb4, 0x56, 0x34, - 0x86, 0xe6, 0xf9, 0xf2, 0x61, 0xf5, 0x4b, 0x73, 0x8d, 0x5a, 0x5d, 0x38, 0x66, 0xad, 0x31, 0x67, - 0xa0, 0x5c, 0x28, 0xb0, 0x59, 0xe6, 0x7c, 0x63, 0x6e, 0xda, 0x15, 0x6d, 0x47, 0xb1, 0x84, 0x69, - 0x18, 0x07, 0x0d, 0x3b, 0x78, 0x9e, 0x6d, 0x2e, 0x30, 0xe6, 0xf5, 0x14, 0x3c, 0x4b, 0x1c, 0xb9, - 0x96, 0xd5, 0x84, 0x8d, 0xb6, 0xa3, 0xd8, 0x1c, 0xd2, 0xca, 0x08, 0xdf, 0x71, 0xf3, 0x6c, 0x2e, - 0x19, 0xaf, 0x9b, 0x12, 0x3c, 0x60, 0x07, 0x99, 0x0b, 0x8d, 0xda, 0xfe, 0xa9, 0xe0, 0x98, 0xc2, - 0x3a, 0x47, 0x30, 0x6e, 0x32, 0x63, 0x21, 0x5a, 0x5d, 0x72, 0xc3, 0x60, 0xe3, 0xe6, 0xc1, 0xc6, - 0x22, 0x89, 0x94, 0x7d, 0x8b, 0xd2, 0xcf, 0xf2, 0xe6, 0x22, 0x63, 0x3e, 0xa0, 0x6e, 0xb7, 0x5c, - 0x64, 0x13, 0xa1, 0x87, 0xf5, 0x7c, 0x92, 0x39, 0x61, 0x2b, 0xc3, 0x05, 0xfb, 0x5e, 0xa8, 0x9a, - 0x75, 0x8a, 0x9c, 0x6d, 0x0a, 0x9b, 0xdf, 0x09, 0x3c, 0x97, 0x15, 0xcc, 0xa5, 0xc6, 0xc1, 0x59, - 0xa7, 0x6b, 0xdd, 0x08, 0xcf, 0x09, 0xcf, 0xd7, 0xb4, 0xa7, 0xcc, 0x3a, 0x63, 0xfe, 0x88, 0x55, - 0x28, 0xf3, 0x3e, 0x27, 0x10, 0xec, 0xa2, 0x04, 0xb5, 0x3b, 0xbd, 0x42, 0xb9, 0xe8, 0x0e, 0xf1, - 0x71, 0xb6, 0x8f, 0xfa, 0x3b, 0xb7, 0xd3, 0x2b, 0xbb, 0x82, 0xdd, 0x50, 0x6f, 0xd6, 0x1a, 0x35, - 0x99, 0x72, 0x91, 0xdd, 0x88, 0xa7, 0x8e, 0xcd, 0x79, 0x76, 0x13, 0x9e, 0xfa, 0x1d, 0x97, 0xdd, - 0x2c, 0x9f, 0xac, 0x49, 0x76, 0x4b, 0x3d, 0xd9, 0xf4, 0x38, 0x7e, 0x20, 0xd8, 0xad, 0xf5, 0x26, - 0x33, 0x16, 0xf4, 0xfa, 0x5e, 0xb9, 0xd4, 0xe9, 0xb9, 0x39, 0x4b, 0xb0, 0xdb, 0xea, 0xcd, 0xc5, - 0x86, 0xd1, 0x91, 0xcf, 0x8f, 0xae, 0x73, 0x44, 0x87, 0x6b, 0xb3, 0xdb, 0xeb, 0x29, 0xa4, 0x02, - 0x36, 0xf8, 0xec, 0x8e, 0xa8, 0xc2, 0x77, 0x3d, 0x9f, 0xdd, 0x29, 0xe3, 0x0a, 0x9b, 0xdd, 0x55, - 0x6f, 0x2e, 0xa0, 0xbc, 0xda, 0x36, 0xdf, 0xcc, 0xee, 0x86, 0x9d, 0x6c, 0x0c, 0x7a, 0x25, 0xf6, - 0x07, 0xd8, 0xc9, 0x76, 0xc6, 0x2a, 0x96, 0xd8, 0x1f, 0xa1, 0x3d, 0x62, 0xf9, 0x24, 0xbd, 0xa7, - 0xde, 0x5c, 0x68, 0xcc, 0x1b, 0xb1, 0x7c, 0x88, 0xf6, 0xd6, 0x9b, 0x8b, 0x8c, 0xda, 0x11, 0xcb, - 0x77, 0x68, 0x5f, 0x62, 0xfb, 0xea, 0xcd, 0x83, 0x8d, 0x85, 0x94, 0xa6, 0x0e, 0xda, 0x40, 0x3b, - 0xf2, 0x79, 0x76, 0x6f, 0xbd, 0x69, 0x1a, 0x8b, 0x08, 0xda, 0x30, 0xf6, 0x3d, 0x9e, 0x13, 0x84, - 0xdd, 0x57, 0x6f, 0x26, 0x8d, 0x43, 0x3a, 0x4a, 0x25, 0xdf, 0x9b, 0x44, 0x4a, 0xf4, 0xac, 0x63, - 0xf7, 0x83, 0xcb, 0x90, 0xb7, 0x65, 0xa0, 0x5c, 0x1c, 0xe3, 0x3e, 0xdb, 0xb1, 0xd2, 0x9c, 0x6f, - 0xcc, 0x19, 0xb2, 0xdc, 0x4d, 0x6c, 0xe7, 0x4a, 0x12, 0x75, 0x71, 0x37, 0xe0, 0x68, 0xef, 0x5a, - 0x49, 0xa1, 0x3b, 0xcb, 0x45, 0x6c, 0x8b, 0x6c, 0xf7, 0x4a, 0x4a, 0xd0, 0x20, 0xf7, 0x73, 0xdc, - 0x15, 0x50, 0xd8, 0xb3, 0x92, 0xd2, 0x37, 0x20, 0x9c, 0x02, 0x67, 0x57, 0xc1, 0x4f, 0x1f, 0xb7, - 0x6c, 0x76, 0xf5, 0x4a, 0xca, 0x42, 0x9f, 0x95, 0x67, 0xd7, 0xac, 0xa4, 0x8e, 0x22, 0xbf, 0x18, - 0x38, 0x76, 0x2d, 0x42, 0xf4, 0x59, 0xba, 0x7d, 0x1d, 0x42, 0x0c, 0x88, 0x09, 0xd9, 0xbc, 0x1e, - 0xfa, 0x95, 0xc5, 0x8a, 0x9d, 0x37, 0xb0, 0xfa, 0xf5, 0x31, 0x63, 0x51, 0x6c, 0xf9, 0x32, 0x17, - 0x1b, 0x0b, 0x86, 0xdd, 0xa0, 0xc4, 0x73, 0xb4, 0x98, 0xdb, 0x6c, 0x16, 0x15, 0x67, 0xa7, 0x15, - 0x88, 0xb4, 0x2b, 0x3a, 0x82, 0xb4, 0x2b, 0x58, 0x82, 0x8a, 0x33, 0x44, 0x86, 0xb8, 0x55, 0x60, - 0xb3, 0xcd, 0x43, 0x8c, 0xc5, 0x21, 0xa4, 0xea, 0xbd, 0xc6, 0x5c, 0x62, 0xb0, 0x10, 0xd4, 0xa5, - 0x3d, 0x27, 0x66, 0x8d, 0x02, 0x9d, 0x4b, 0x15, 0x59, 0x51, 0xd4, 0x15, 0x7f, 0x50, 0x4c, 0x13, - 0xb5, 0x3b, 0x4f, 0x43, 0x14, 0x55, 0xb2, 0x31, 0x4c, 0xd3, 0xa8, 0xab, 0x40, 0xa0, 0xb3, 0x40, - 0x47, 0x96, 0x98, 0xe2, 0xb3, 0x50, 0x87, 0x91, 0xa8, 0x26, 0xb4, 0x28, 0xee, 0x00, 0x8c, 0xea, - 0xcc, 0x65, 0x86, 0x19, 0x51, 0xd5, 0x94, 0x16, 0xc7, 0x75, 0xc1, 0x89, 0xe9, 0x60, 0xca, 0xa1, - 0xa4, 0xb5, 0x44, 0x07, 0x0b, 0x51, 0x30, 0x5b, 0x6a, 0xd6, 0x1b, 0x87, 0xc4, 0x60, 0x45, 0x6e, - 0x99, 0x99, 0x34, 0x96, 0xc4, 0x04, 0x9a, 0x5f, 0xfd, 0x34, 0x4f, 0xa0, 0x98, 0x34, 0x0f, 0x35, - 0x96, 0xc6, 0x0d, 0x34, 0xcb, 0x43, 0xa7, 0x59, 0x80, 0xe8, 0x72, 0x3d, 0x48, 0x32, 0xa4, 0xe4, - 0xb9, 0x42, 0xb3, 0xd7, 0x20, 0x68, 0xae, 0xd4, 0xfd, 0xd7, 0xa8, 0x62, 0xd9, 0xa0, 0xe9, 0x6b, - 0x5c, 0x93, 0x6c, 0xac, 0x76, 0x03, 0x8e, 0xab, 0x74, 0xa7, 0x42, 0x75, 0x4d, 0xb1, 0xa9, 0x5a, - 0x1f, 0x0c, 0xbf, 0xac, 0x87, 0x97, 0xac, 0x25, 0xbf, 0x16, 0x9d, 0x71, 0x09, 0x81, 0xdd, 0x57, - 0xb4, 0xb1, 0xc4, 0x14, 0xb7, 0xd5, 0xba, 0xd7, 0x12, 0xd5, 0xcc, 0xbe, 0x1a, 0x77, 0x00, 0x5e, - 0xff, 0x47, 0x77, 0x4f, 0xa9, 0x6a, 0x56, 0x5f, 0x8b, 0xeb, 0x82, 0x53, 0x6b, 0x98, 0x4c, 0xa5, - 0x25, 0x79, 0xad, 0xd5, 0x2e, 0x2a, 0x30, 0xb8, 0x1d, 0x19, 0x8e, 0x63, 0x88, 0x2b, 0x7e, 0x47, - 0x85, 0x03, 0x16, 0x4a, 0x34, 0xc7, 0xaf, 0x4f, 0x77, 0x06, 0x9e, 0x6d, 0xe6, 0x72, 0x63, 0x59, - 0x95, 0x89, 0xe6, 0xda, 0x3e, 0xdd, 0x06, 0x7c, 0xbf, 0xa1, 0x73, 0x88, 0x55, 0x0c, 0x5c, 0xbf, - 0xa9, 0xbb, 0x25, 0x21, 0xf0, 0xfc, 0xff, 0x3a, 0x87, 0x12, 0x53, 0x1c, 0xbf, 0xa5, 0x3b, 0x2b, - 0x51, 0xcd, 0xef, 0xdb, 0x71, 0x07, 0xe0, 0xf6, 0x6f, 0x3a, 0xbe, 0x52, 0xd5, 0xbc, 0x3a, 0xe2, - 0xba, 0xe0, 0xb4, 0x8e, 0x96, 0xb6, 0x4e, 0xcf, 0x2a, 0xf0, 0x20, 0xc7, 0x89, 0xd1, 0x6b, 0x0d, - 0xb4, 0xce, 0x6a, 0x04, 0x84, 0x5e, 0x6f, 0x30, 0x97, 0x18, 0x8b, 0x35, 0xa4, 0x23, 0xbf, 0xd1, - 0x60, 0x1e, 0x62, 0xd4, 0x69, 0x54, 0xb1, 0x7c, 0x33, 0x66, 0x0d, 0x36, 0x6f, 0x35, 0x98, 0x4b, - 0x0d, 0x16, 0x5a, 0x6b, 0x32, 0x7f, 0x8b, 0x69, 0x82, 0xcb, 0xdf, 0x1b, 0x68, 0x1b, 0xee, 0xcb, - 0x12, 0x0d, 0x9b, 0x76, 0xe7, 0xbe, 0x2c, 0xe2, 0x73, 0xda, 0x25, 0xfb, 0xb2, 0x95, 0x1d, 0x78, - 0xa1, 0x51, 0xdb, 0x97, 0x55, 0x11, 0xf3, 0x52, 0x11, 0xa1, 0x26, 0xcc, 0x3a, 0xc3, 0xe8, 0xcb, - 0x86, 0x31, 0x1c, 0x29, 0x83, 0xf3, 0xef, 0xc1, 0x77, 0x37, 0xf9, 0x76, 0x01, 0x77, 0xc3, 0xb7, - 0x07, 0xdf, 0xdd, 0xda, 0x77, 0x09, 0xbe, 0xbb, 0x95, 0xef, 0x63, 0xa4, 0x22, 0x7c, 0xfb, 0xf0, - 0xdd, 0x1d, 0xfa, 0x0e, 0xa4, 0x0c, 0xbe, 0x05, 0xf9, 0xee, 0x05, 0xef, 0x49, 0x82, 0x7b, 0x25, - 0xef, 0x29, 0xf2, 0xdd, 0x1b, 0xf2, 0x3e, 0x96, 0x7c, 0xf7, 0x6a, 0xde, 0xdf, 0x97, 0x8a, 0xf0, - 0xfd, 0x9f, 0xe4, 0xbb, 0xb7, 0xc2, 0xfb, 0x07, 0x52, 0x06, 0xdf, 0xff, 0x25, 0x37, 0x67, 0x6e, - 0x09, 0x8e, 0xe5, 0x96, 0x7d, 0x80, 0xc4, 0x69, 0x04, 0x81, 0x3e, 0xc4, 0x00, 0x69, 0x48, 0xc7, - 0xfb, 0x08, 0x03, 0xa4, 0x51, 0x15, 0xf6, 0xe3, 0x98, 0x35, 0xa2, 0x7f, 0xd2, 0x40, 0x5b, 0x51, - 0x1f, 0x97, 0xcb, 0x39, 0xfb, 0xb4, 0x01, 0x3b, 0x15, 0x57, 0x4b, 0x29, 0xfb, 0x0c, 0x16, 0x68, - 0x6b, 0xcf, 0x9f, 0x37, 0x10, 0x29, 0x40, 0xca, 0xed, 0xbf, 0x2a, 0x46, 0xf0, 0x79, 0x5c, 0x23, - 0x69, 0xa4, 0x5d, 0xc1, 0xfd, 0xcd, 0x56, 0x81, 0xdc, 0x1e, 0xdf, 0x48, 0x6e, 0x34, 0x02, 0xcf, - 0x27, 0x34, 0xd2, 0x2e, 0xda, 0x8b, 0x31, 0x39, 0x21, 0x41, 0x07, 0x81, 0x5e, 0x39, 0x28, 0x27, - 0xe2, 0x84, 0xd3, 0x1b, 0x8e, 0xca, 0x49, 0x09, 0x62, 0xd8, 0xab, 0x87, 0xe5, 0x64, 0xa5, 0x8b, - 0x48, 0xa7, 0x24, 0x68, 0xe7, 0xec, 0xad, 0x0c, 0xcc, 0xa9, 0x4a, 0x8a, 0xec, 0x9d, 0x86, 0xb3, - 0x51, 0xf7, 0x46, 0x0a, 0x71, 0x16, 0x04, 0xdd, 0x1b, 0x11, 0xe2, 0x6c, 0x84, 0xe8, 0xde, 0xa8, - 0x43, 0x9c, 0x83, 0x10, 0xdd, 0x1b, 0x55, 0x88, 0x73, 0x95, 0x2e, 0x42, 0x9c, 0x87, 0x10, 0xdd, - 0x1b, 0xc3, 0x10, 0xe7, 0x2b, 0x29, 0x42, 0x5c, 0x80, 0x10, 0x03, 0xe8, 0xc5, 0x56, 0x08, 0x06, - 0x64, 0x2f, 0xe4, 0x39, 0x6d, 0x20, 0xec, 0xc5, 0x36, 0x84, 0x18, 0xd0, 0xbd, 0xb8, 0x58, 0xe9, - 0x22, 0xc4, 0x25, 0x08, 0x31, 0x50, 0xe9, 0xc5, 0xa5, 0x4a, 0x8a, 0x10, 0x97, 0x49, 0x4f, 0xe5, - 0x42, 0x41, 0xf6, 0x64, 0xbb, 0xd4, 0x46, 0x1b, 0xa1, 0x76, 0x24, 0xe8, 0x24, 0x24, 0x01, 0x1d, - 0x6e, 0x27, 0x1d, 0x06, 0x16, 0x4a, 0x4c, 0x85, 0xdc, 0x15, 0xb1, 0x43, 0xd8, 0xdd, 0x09, 0x2a, - 0x11, 0x65, 0xa7, 0x43, 0xef, 0x89, 0x68, 0x21, 0xfc, 0x55, 0x20, 0x3e, 0x58, 0x28, 0xcb, 0xf5, - 0x69, 0x6f, 0x02, 0xc7, 0xa1, 0x42, 0x39, 0x5c, 0x84, 0xf6, 0x25, 0xe8, 0xe0, 0x46, 0x08, 0xb1, - 0xbb, 0x0f, 0x6c, 0xfb, 0x1d, 0x57, 0xe9, 0xdf, 0x0f, 0x22, 0x68, 0x6b, 0x83, 0x07, 0xe0, 0x11, - 0x10, 0x59, 0xfc, 0x59, 0x6a, 0x94, 0x0b, 0xc2, 0x29, 0x15, 0xa6, 0x60, 0xf4, 0x60, 0x82, 0x4a, - 0x5a, 0x43, 0xda, 0xee, 0x21, 0x84, 0xd6, 0x28, 0x99, 0xfe, 0x05, 0x64, 0xbb, 0x9c, 0xcd, 0x8e, - 0x2d, 0x17, 0xab, 0x87, 0x91, 0x0a, 0x09, 0x68, 0xb3, 0x47, 0x12, 0xaa, 0xf6, 0x24, 0x4c, 0x76, - 0x8f, 0x26, 0x68, 0x55, 0x0a, 0x21, 0xad, 0xf9, 0x18, 0x7a, 0xd2, 0xef, 0xd9, 0xf0, 0xf5, 0x38, - 0x9c, 0xf7, 0x7b, 0xb6, 0x16, 0x3f, 0x81, 0x51, 0xe9, 0xf7, 0x6c, 0x72, 0xb1, 0x3f, 0x41, 0x47, - 0xcd, 0x08, 0x99, 0x61, 0x37, 0x70, 0xf2, 0x2e, 0xb7, 0xd9, 0x93, 0x09, 0xf3, 0x30, 0xa3, 0x5e, - 0xe5, 0x43, 0xa3, 0xa1, 0xf4, 0xa9, 0x84, 0xb9, 0xdc, 0x58, 0x5a, 0x25, 0xcd, 0x48, 0xd9, 0xd3, - 0x51, 0x59, 0x26, 0x6e, 0xf7, 0x0c, 0xe2, 0xc5, 0x64, 0xca, 0xea, 0xd9, 0x84, 0xf9, 0x25, 0x63, - 0x99, 0xa4, 0x35, 0x2d, 0xdc, 0x73, 0x09, 0xf3, 0x50, 0x63, 0x49, 0x5c, 0xa8, 0xec, 0x9e, 0x8f, - 0x88, 0xaa, 0x82, 0xbd, 0x90, 0x30, 0xeb, 0x0d, 0x33, 0x2a, 0x52, 0x36, 0x07, 0x12, 0xe6, 0xe1, - 0x46, 0x52, 0x0f, 0xdd, 0xb4, 0x68, 0x2f, 0x4a, 0x2a, 0x55, 0x62, 0x65, 0xfb, 0x52, 0x4c, 0x58, - 0x15, 0xf1, 0x65, 0x49, 0x26, 0x26, 0x54, 0x76, 0x7f, 0x4d, 0x98, 0x4d, 0xc6, 0x0a, 0x2d, 0xea, - 0xf1, 0xfc, 0x5c, 0xc5, 0x2e, 0xb4, 0x7f, 0x25, 0x61, 0x36, 0x1a, 0x87, 0xcd, 0xac, 0xa4, 0xfc, - 0xbc, 0x3a, 0x83, 0x4a, 0x15, 0x8b, 0xd7, 0xa0, 0x12, 0x2d, 0x95, 0x69, 0x81, 0x5e, 0x4f, 0x98, - 0x2b, 0x8d, 0xe5, 0x33, 0xa9, 0xa8, 0x30, 0x6f, 0x20, 0x45, 0x51, 0x85, 0x58, 0x6f, 0xde, 0x9c, - 0x66, 0x5f, 0xc5, 0xe1, 0x2d, 0x54, 0x59, 0xc7, 0x18, 0xe6, 0xc6, 0x6f, 0x18, 0x55, 0x64, 0xc7, - 0x58, 0x30, 0x4c, 0xad, 0xdf, 0xea, 0x16, 0xea, 0xf3, 0x77, 0x0c, 0xaf, 0x61, 0x63, 0xe1, 0xbc, - 0xfa, 0x3d, 0xc3, 0xa6, 0xca, 0x1d, 0x5a, 0x72, 0xb3, 0x5e, 0x17, 0xcf, 0xb1, 0x1b, 0xe2, 0x10, - 0x39, 0xb9, 0x31, 0x84, 0xba, 0x78, 0x4e, 0x42, 0x37, 0xc5, 0x21, 0x32, 0xbc, 0x99, 0xe1, 0x25, - 0x88, 0x3b, 0x72, 0xb1, 0xbe, 0x85, 0xd1, 0xbc, 0xea, 0x29, 0x78, 0x9e, 0x1f, 0xfa, 0xbe, 0xb5, - 0x0a, 0x23, 0x4f, 0xb7, 0x55, 0xb0, 0xd0, 0xfb, 0xed, 0x55, 0x18, 0xd9, 0xde, 0xc1, 0x68, 0x95, - 0x00, 0x06, 0xff, 0x77, 0x32, 0xf9, 0x7a, 0x56, 0x76, 0xe5, 0xdc, 0xdb, 0x87, 0xf0, 0x68, 0x93, - 0x8b, 0x7b, 0x2b, 0x4d, 0xb2, 0xbe, 0x8f, 0x99, 0xcb, 0x8c, 0x83, 0xd1, 0x3c, 0xda, 0x11, 0x13, - 0x3d, 0xbe, 0x95, 0x93, 0x6b, 0x0d, 0xa3, 0x69, 0x1d, 0xc3, 0xc9, 0xfa, 0x81, 0xe9, 0x30, 0x79, - 0xf9, 0x13, 0xb2, 0xd9, 0xe7, 0xe5, 0x8f, 0xe8, 0xf0, 0xf3, 0xec, 0x61, 0x84, 0xe8, 0xf3, 0xf2, - 0x6b, 0x3b, 0xfc, 0x7c, 0xc0, 0x1e, 0x61, 0x78, 0xaf, 0xf3, 0xf2, 0x6b, 0xd9, 0xa3, 0x8c, 0x96, - 0x78, 0xd2, 0x5b, 0xc3, 0x1e, 0x63, 0xea, 0xb5, 0xd1, 0x66, 0x8f, 0x33, 0xaa, 0x58, 0x7a, 0x24, - 0xa7, 0x19, 0xce, 0x6d, 0xbc, 0xf0, 0xf5, 0x72, 0x97, 0x3d, 0xc1, 0xe8, 0x4d, 0x70, 0xd0, 0xdb, - 0xc2, 0xf6, 0x43, 0xbf, 0xd3, 0x73, 0x37, 0xb3, 0x27, 0xe1, 0xa6, 0x73, 0xa8, 0xf3, 0xc8, 0xb5, - 0xec, 0x29, 0xc0, 0x34, 0xf0, 0xec, 0x69, 0xf9, 0x78, 0x8c, 0x2f, 0xd8, 0x33, 0x78, 0xec, 0xc8, - 0x79, 0x01, 0x7b, 0x56, 0x3e, 0x06, 0x8e, 0xcb, 0x9e, 0x03, 0xb1, 0x0e, 0x61, 0xb9, 0xe0, 0xf9, - 0x3c, 0x32, 0x45, 0x4d, 0x49, 0xf4, 0x05, 0xc4, 0xea, 0xf4, 0x02, 0x76, 0x40, 0x3d, 0x09, 0xf6, - 0x22, 0x7a, 0xd6, 0xc5, 0xf3, 0x3e, 0xe7, 0x01, 0x7b, 0x09, 0x78, 0xf7, 0x64, 0x89, 0xbd, 0xcc, - 0xcc, 0x79, 0xc6, 0xec, 0xc1, 0x34, 0xfb, 0x2b, 0x14, 0x86, 0x2c, 0xdb, 0xb1, 0xdc, 0x80, 0xbd, - 0x02, 0x85, 0x8c, 0xe3, 0xb2, 0x57, 0xf1, 0x94, 0xb5, 0x5c, 0xf6, 0x1a, 0xa3, 0xb5, 0x36, 0xeb, - 0x97, 0xdd, 0x9c, 0x25, 0xb0, 0x66, 0xbe, 0x8e, 0x22, 0xd1, 0x08, 0xf2, 0xfd, 0x06, 0xbd, 0x62, - 0x2d, 0xd6, 0x90, 0x2e, 0xc3, 0x37, 0x63, 0x8a, 0xc3, 0x8e, 0x2b, 0xd8, 0x5b, 0x28, 0xd5, 0x3e, - 0x2f, 0xef, 0xe4, 0xac, 0x42, 0x87, 0x6b, 0xb3, 0xcb, 0x93, 0x38, 0x31, 0x48, 0x60, 0x83, 0xcf, - 0xae, 0x48, 0x46, 0x14, 0xbe, 0xeb, 0xf9, 0xec, 0xca, 0x24, 0xc5, 0x1f, 0x76, 0x2d, 0x7f, 0x6a, - 0xc0, 0xc3, 0xc9, 0x64, 0x7b, 0x92, 0x82, 0x69, 0x44, 0x07, 0xdb, 0x91, 0xa4, 0x60, 0x1a, 0x05, - 0xab, 0x9d, 0x31, 0xe8, 0x3b, 0x99, 0x0d, 0x03, 0x6c, 0x57, 0x92, 0x4a, 0x10, 0x50, 0xb8, 0xed, - 0xec, 0x4e, 0xd2, 0xee, 0x57, 0xc1, 0x60, 0xbb, 0x27, 0x49, 0x95, 0x55, 0x01, 0x75, 0x98, 0xab, - 0xe0, 0x40, 0xb5, 0xd2, 0x01, 0xee, 0x9c, 0xae, 0x86, 0x03, 0xbd, 0x71, 0x2a, 0xf0, 0x1a, 0x74, - 0x84, 0x7c, 0x29, 0xe0, 0x5a, 0xb0, 0x91, 0x5b, 0xb0, 0x82, 0xae, 0x83, 0x0e, 0x6d, 0xc1, 0x0a, - 0xb8, 0x1e, 0xd9, 0x48, 0xbb, 0x42, 0xb5, 0x7f, 0x0c, 0x05, 0xda, 0x7d, 0x15, 0xf0, 0x13, 0x28, - 0xc8, 0xeb, 0x98, 0x8c, 0x93, 0x67, 0x3f, 0x4d, 0x52, 0x4d, 0xe0, 0x36, 0x86, 0x9a, 0x3f, 0xd3, - 0xe2, 0xef, 0x7a, 0x68, 0xff, 0x5c, 0xb7, 0x07, 0x78, 0x9e, 0xda, 0xbf, 0xa8, 0xf8, 0xcf, 0xfa, - 0x65, 0xce, 0x7e, 0x19, 0x21, 0x09, 0xe0, 0x57, 0xf1, 0xee, 0x01, 0xfb, 0x35, 0x94, 0x60, 0xd4, - 0x63, 0x15, 0x02, 0xce, 0x7e, 0x83, 0x21, 0x91, 0x56, 0x12, 0xf9, 0xad, 0xcc, 0x80, 0x36, 0x93, - 0xe0, 0xef, 0xe4, 0xd0, 0xf2, 0x71, 0x91, 0x99, 0x70, 0xc6, 0x05, 0xbb, 0x41, 0x06, 0x73, 0xf2, - 0x13, 0x0a, 0xb8, 0x11, 0x39, 0x0e, 0xd9, 0xd0, 0xec, 0x41, 0x27, 0xff, 0x98, 0xa4, 0x4d, 0xa7, - 0xc2, 0x2a, 0x14, 0xdc, 0x93, 0xa4, 0x6d, 0x31, 0xc6, 0x2e, 0x94, 0xed, 0x85, 0x51, 0x85, 0x65, - 0x28, 0xd8, 0x97, 0xa4, 0xfd, 0x32, 0xc2, 0x36, 0x94, 0xdc, 0x9b, 0xa4, 0x7d, 0x28, 0xce, 0x3a, - 0x14, 0xde, 0xa7, 0x33, 0x2b, 0x6f, 0xd4, 0x7e, 0x8f, 0x1e, 0xf6, 0x72, 0x31, 0x68, 0xf9, 0x56, - 0x51, 0x1d, 0xa4, 0x6e, 0x4a, 0xe2, 0x8c, 0xc9, 0xc5, 0x88, 0xe5, 0xb3, 0x9b, 0xd1, 0x18, 0xf2, - 0xb6, 0x50, 0xa2, 0x6f, 0x41, 0x23, 0x23, 0x25, 0xb7, 0x22, 0xa9, 0xb8, 0xe1, 0x09, 0xeb, 0xe8, - 0x36, 0xf8, 0x53, 0x98, 0x3e, 0x72, 0xdd, 0x9e, 0x0c, 0xaf, 0xf8, 0x50, 0x99, 0x77, 0x20, 0x63, - 0xb2, 0x8d, 0xf2, 0xbd, 0x33, 0x02, 0xa0, 0x4c, 0xef, 0x42, 0x51, 0x49, 0x40, 0x91, 0xba, 0x3b, - 0xa2, 0x83, 0xd3, 0xdd, 0x1f, 0x92, 0xb4, 0xde, 0xa4, 0x5d, 0xf2, 0xb8, 0x63, 0x25, 0xf1, 0x4a, - 0xbb, 0x72, 0x7e, 0xac, 0x94, 0xd5, 0xa0, 0x39, 0xc9, 0xfb, 0xae, 0xb4, 0xab, 0x1c, 0xed, 0x56, - 0xba, 0x70, 0xb2, 0x67, 0xa5, 0x2c, 0x82, 0x90, 0xeb, 0x55, 0x4a, 0x8a, 0xa3, 0xe1, 0xd5, 0xd2, - 0xd3, 0x38, 0x65, 0x8e, 0xc2, 0x9c, 0xdc, 0x00, 0x6d, 0xb4, 0x11, 0xea, 0x94, 0x06, 0x4a, 0x81, - 0x04, 0x74, 0xb8, 0x53, 0xf1, 0x46, 0x21, 0x31, 0x15, 0xf2, 0xb4, 0x88, 0x1d, 0xc2, 0x9e, 0x8e, - 0x97, 0x17, 0x65, 0xa7, 0x43, 0x9f, 0xd1, 0x80, 0x0e, 0x8d, 0x53, 0xa4, 0x33, 0x1b, 0x40, 0x63, - 0x1c, 0x51, 0xce, 0x6a, 0x90, 0x34, 0x74, 0x84, 0xb3, 0xf1, 0x4a, 0x93, 0x1e, 0x57, 0xde, 0xcf, - 0x51, 0xba, 0xf0, 0x7c, 0xae, 0x0a, 0x15, 0x7a, 0x3d, 0x2f, 0x12, 0x1b, 0x9d, 0x3a, 0x5f, 0xa9, - 0xcb, 0xe3, 0x3d, 0xde, 0x75, 0x3a, 0xad, 0x80, 0x1f, 0x3d, 0xc1, 0x91, 0xca, 0x7f, 0xc8, 0x37, - 0x57, 0x85, 0x20, 0xfe, 0xdb, 0xf2, 0x0d, 0x59, 0x41, 0x9a, 0xc5, 0x3f, 0xe5, 0x1b, 0xb2, 0x42, - 0x15, 0x97, 0x77, 0x62, 0xd6, 0x60, 0xf4, 0xae, 0x7c, 0x43, 0xd6, 0xd6, 0x9a, 0xd7, 0x7b, 0x31, - 0x4d, 0x90, 0x79, 0x1f, 0x54, 0x3b, 0x50, 0x4d, 0xfe, 0x54, 0x49, 0xb0, 0x0b, 0x9b, 0x14, 0xd0, - 0xed, 0x4a, 0x60, 0x6b, 0x13, 0x76, 0x6d, 0xaf, 0x88, 0xcf, 0x30, 0xec, 0xa2, 0x26, 0xdc, 0xf8, - 0x76, 0x7d, 0x9d, 0x6d, 0x83, 0x60, 0xd0, 0x0a, 0x82, 0x2d, 0x9e, 0x6f, 0xb3, 0x8b, 0x9b, 0x30, - 0x95, 0x2d, 0xd7, 0xf6, 0x8a, 0xf2, 0xe2, 0xfb, 0x92, 0x26, 0x6c, 0x43, 0xeb, 0x3b, 0x8e, 0x60, - 0x97, 0xea, 0xc7, 0xb5, 0xec, 0x32, 0x04, 0x18, 0x76, 0x73, 0xda, 0xe3, 0xe5, 0x4d, 0x34, 0xdd, - 0x2a, 0x00, 0xb7, 0xfb, 0xb8, 0x9b, 0x17, 0x13, 0xec, 0x8a, 0x26, 0xa2, 0x5b, 0xe1, 0x96, 0x1e, - 0x61, 0x57, 0x6a, 0x48, 0xb1, 0x4b, 0x8f, 0xb0, 0xed, 0x4d, 0x78, 0x75, 0x72, 0x73, 0x9e, 0xcd, - 0xd9, 0x0e, 0x34, 0xba, 0x38, 0x1a, 0x3b, 0x41, 0x35, 0xd3, 0x7f, 0x24, 0xdb, 0x05, 0xaa, 0x5d, - 0x96, 0xb0, 0xc6, 0xac, 0x80, 0xb3, 0x6b, 0x9b, 0x70, 0x52, 0xc0, 0xc9, 0xc0, 0xdb, 0x12, 0xb0, - 0xeb, 0x40, 0xbd, 0xb3, 0xec, 0xfb, 0xdc, 0x15, 0xc3, 0x01, 0xf7, 0xd9, 0xf5, 0xe0, 0x8b, 0xc7, - 0x1f, 0x37, 0xc9, 0x6b, 0x05, 0xd7, 0xe5, 0xf8, 0x36, 0x92, 0xee, 0x62, 0x3f, 0x01, 0xd4, 0x87, - 0xd7, 0xdb, 0x80, 0xfb, 0x22, 0xdd, 0xc5, 0x7e, 0x8a, 0x4e, 0x44, 0x21, 0x9a, 0xfe, 0xe9, 0x2e, - 0xf6, 0xb3, 0x26, 0x5c, 0x41, 0x73, 0x3f, 0xa0, 0x11, 0xf8, 0x39, 0x22, 0xc9, 0x0b, 0x79, 0x89, - 0xfc, 0xa2, 0x49, 0x1e, 0x43, 0xb6, 0xc8, 0xc5, 0xe1, 0x97, 0x4d, 0x54, 0x90, 0x99, 0x02, 0xe7, - 0x25, 0x76, 0x4f, 0x93, 0x3c, 0x2f, 0xe4, 0x36, 0xb1, 0xbd, 0x32, 0xb9, 0xbc, 0xc0, 0xad, 0x80, - 0x03, 0xd9, 0xd7, 0x44, 0x05, 0xa2, 0x2f, 0xfd, 0xdc, 0x29, 0x79, 0xeb, 0x7b, 0x6f, 0x13, 0x0d, - 0x7c, 0x78, 0x4b, 0xa4, 0xe1, 0xfb, 0x9a, 0xd4, 0xcb, 0x73, 0x88, 0xdc, 0x8f, 0x2e, 0xd0, 0x4a, - 0x10, 0x42, 0x0f, 0x00, 0xc2, 0x65, 0xa7, 0x86, 0xfe, 0xd4, 0x44, 0xf5, 0xa6, 0xae, 0xed, 0x34, - 0xf8, 0x67, 0xe8, 0xe1, 0xd6, 0x4c, 0x43, 0x0f, 0x36, 0xc9, 0xe9, 0xce, 0x45, 0x87, 0xf0, 0x5c, - 0xf6, 0x50, 0xd8, 0x1c, 0x10, 0x9e, 0xc5, 0xfe, 0xd2, 0x24, 0x17, 0x07, 0x2e, 0xda, 0x20, 0x7e, - 0xb8, 0xd2, 0x86, 0xfc, 0x11, 0x0c, 0x5a, 0x3a, 0x48, 0x0f, 0x6e, 0x3e, 0x8a, 0x3d, 0x0a, 0xef, - 0xb2, 0x41, 0x45, 0x67, 0x09, 0xf6, 0x58, 0x04, 0xea, 0xb7, 0x4a, 0x25, 0x6e, 0xb3, 0xc7, 0x2b, - 0x26, 0x6d, 0xec, 0x09, 0x39, 0x58, 0xc3, 0xe9, 0x2e, 0xb6, 0x1f, 0xc5, 0x35, 0xe2, 0x08, 0x1e, - 0x04, 0xeb, 0xad, 0x60, 0x82, 0x3d, 0xa9, 0x14, 0x21, 0x7d, 0x0a, 0x81, 0x29, 0xfb, 0x99, 0x09, - 0xcb, 0xb7, 0xd9, 0xd3, 0x4d, 0xe1, 0x77, 0x0a, 0xc7, 0xc5, 0xae, 0xf6, 0x8c, 0x64, 0x5e, 0x70, - 0x36, 0x71, 0x6a, 0x3e, 0xda, 0x88, 0xe3, 0x9c, 0x6a, 0x3d, 0xd6, 0x88, 0x03, 0x25, 0xcf, 0xf3, - 0xc9, 0x12, 0xb5, 0x1f, 0x6f, 0xa4, 0x95, 0x48, 0xb6, 0x87, 0xb3, 0x3d, 0xdf, 0x20, 0xec, 0x89, - 0x08, 0xa6, 0xed, 0xf6, 0x37, 0xe2, 0x68, 0x19, 0x62, 0x5a, 0xf7, 0xc9, 0x46, 0xca, 0xae, 0xc4, - 0xb1, 0x54, 0x12, 0xf8, 0x54, 0xa3, 0xdc, 0xb1, 0x42, 0x50, 0x6b, 0x3f, 0xdd, 0x88, 0x13, 0x27, - 0x04, 0x43, 0xbc, 0x54, 0xb0, 0x72, 0x70, 0xfe, 0x4c, 0x23, 0x8e, 0x8c, 0x51, 0x58, 0x5b, 0x3c, - 0xdb, 0x48, 0x25, 0xa2, 0xf8, 0x96, 0xc7, 0x02, 0x19, 0xe0, 0xb9, 0x46, 0xb9, 0x89, 0x55, 0x50, - 0xad, 0xff, 0x3c, 0xf8, 0xd0, 0xb2, 0xd0, 0x3d, 0x29, 0x7c, 0x2b, 0x47, 0x6f, 0x11, 0xec, 0xf4, - 0x66, 0x0d, 0x0e, 0xbb, 0xc7, 0x94, 0x3d, 0x81, 0xa0, 0x67, 0x34, 0x53, 0xe2, 0x08, 0xcc, 0x4e, - 0x95, 0x80, 0x9c, 0xd9, 0xac, 0x8f, 0x17, 0x19, 0x0e, 0xbb, 0xb3, 0x9a, 0xf5, 0xa7, 0x14, 0x39, - 0x21, 0x08, 0x3b, 0x3b, 0xf4, 0x15, 0xe9, 0xc0, 0x39, 0xa1, 0xe2, 0x10, 0x2f, 0x7a, 0x9b, 0x81, - 0x9d, 0xdb, 0xac, 0x3f, 0xcd, 0xf4, 0x73, 0x3f, 0x0f, 0xe8, 0xbc, 0xe6, 0xf8, 0xa7, 0x19, 0xc2, - 0xce, 0x6f, 0x8e, 0x7d, 0xc1, 0x21, 0xe8, 0x82, 0x66, 0xca, 0x12, 0x41, 0x23, 0x56, 0xc1, 0xb1, - 0x41, 0xc8, 0xc9, 0xb3, 0x1f, 0x36, 0x53, 0x2a, 0xa8, 0xd5, 0xe9, 0xb9, 0xc2, 0x72, 0xdc, 0x80, - 0xd0, 0x1f, 0x35, 0x53, 0xae, 0x2b, 0x5f, 0x80, 0x4a, 0x25, 0x2e, 0xcf, 0x42, 0x17, 0xc6, 0x05, - 0x95, 0x1e, 0x6c, 0x6d, 0xa6, 0xa1, 0x0c, 0x89, 0x0d, 0x5a, 0x22, 0x37, 0x41, 0xf8, 0x45, 0xcd, - 0x34, 0x0a, 0x15, 0xdc, 0xe7, 0x01, 0xf7, 0x65, 0x5f, 0xb6, 0x35, 0x53, 0xbe, 0xa3, 0xa1, 0x07, - 0x2d, 0x01, 0xa3, 0x8b, 0xc3, 0x2e, 0x0d, 0xfa, 0x5c, 0x08, 0xf0, 0xbf, 0x24, 0xec, 0xd2, 0x46, - 0x9d, 0xec, 0x4b, 0x43, 0xb5, 0x0c, 0xb7, 0x7c, 0x19, 0xef, 0xb2, 0x90, 0x60, 0x46, 0x78, 0xbe, - 0x45, 0x29, 0x3a, 0x16, 0xca, 0x97, 0x87, 0xf6, 0x5d, 0xbc, 0x24, 0xc3, 0x5c, 0x11, 0x0e, 0xd6, - 0xbf, 0xf3, 0x29, 0xf4, 0xfb, 0xca, 0xd0, 0xa3, 0x5c, 0x69, 0x09, 0xdb, 0x1e, 0x26, 0x8e, 0xb4, - 0xf0, 0x1e, 0x40, 0xf0, 0x8e, 0x30, 0x10, 0xf2, 0x29, 0x97, 0x02, 0x12, 0xec, 0x8c, 0x0b, 0x36, - 0x88, 0x09, 0xee, 0xc3, 0x62, 0x57, 0x35, 0xb5, 0x1e, 0x9f, 0x83, 0xda, 0xee, 0x70, 0x0c, 0xfa, - 0x79, 0x71, 0x8c, 0xfb, 0x1b, 0xc6, 0x09, 0xdd, 0x03, 0xc2, 0x23, 0x3c, 0xd7, 0x11, 0x64, 0xf9, - 0x24, 0x92, 0xfc, 0x3e, 0xca, 0x64, 0x84, 0xe7, 0x7a, 0x7c, 0xaf, 0xa8, 0xc1, 0x0f, 0x50, 0x60, - 0x23, 0x3c, 0xd7, 0xe5, 0x14, 0x11, 0xe7, 0x43, 0x10, 0x1e, 0xe1, 0xb9, 0xbe, 0x23, 0xf4, 0x4f, - 0x4d, 0x08, 0xfe, 0x28, 0x84, 0xd7, 0x46, 0xe1, 0x8f, 0x9b, 0xe9, 0x15, 0x79, 0x84, 0xe7, 0x06, - 0x78, 0xde, 0x12, 0xce, 0x66, 0x9e, 0x76, 0x5d, 0xee, 0x0f, 0xfa, 0x9e, 0x5d, 0x96, 0xb5, 0xf4, - 0x09, 0x46, 0x70, 0x84, 0xe7, 0x3a, 0xbd, 0xc0, 0x71, 0x79, 0xd4, 0xf6, 0x53, 0x4d, 0xb1, 0x6f, - 0xed, 0x80, 0xe7, 0x17, 0x09, 0xfa, 0xac, 0xd9, 0x5c, 0x61, 0x1c, 0x1a, 0xfd, 0xa6, 0x11, 0xff, - 0xc0, 0x7a, 0x73, 0x0b, 0x9d, 0x07, 0x49, 0x1e, 0xc3, 0xe5, 0x15, 0xfd, 0x2d, 0x2d, 0xe6, 0x61, - 0x46, 0xfd, 0x0c, 0x42, 0xec, 0xfc, 0xb7, 0xb6, 0x68, 0xd7, 0x55, 0x52, 0xb5, 0xdd, 0xdf, 0xd6, - 0x42, 0x3d, 0x99, 0x41, 0xae, 0x0f, 0x09, 0xb7, 0x7f, 0x91, 0x7b, 0x1c, 0x0d, 0xee, 0x68, 0x31, - 0x1b, 0x8c, 0x2f, 0xcd, 0x64, 0xae, 0x4f, 0x09, 0x77, 0x7e, 0x91, 0x3d, 0x0e, 0x0c, 0x77, 0xb5, - 0x98, 0xff, 0xcb, 0x68, 0x98, 0x41, 0x1a, 0x4f, 0xc0, 0xdd, 0x2d, 0x34, 0x51, 0x06, 0x0b, 0xe5, - 0x2a, 0xfc, 0xc2, 0x16, 0xdc, 0x02, 0xd1, 0x7b, 0x50, 0x5c, 0xb0, 0xb5, 0x85, 0x0e, 0xe4, 0xfa, - 0xee, 0x2b, 0x2e, 0xbb, 0x08, 0xb2, 0x78, 0x3c, 0xbd, 0xf5, 0x6c, 0x83, 0x4c, 0xdf, 0xfa, 0xc7, - 0xed, 0x2e, 0x6e, 0xa1, 0x8a, 0xeb, 0xcb, 0xc6, 0xd1, 0x4b, 0x24, 0xda, 0x1d, 0x47, 0x2f, 0x05, - 0xda, 0x5b, 0xa5, 0x7b, 0x19, 0xbc, 0xeb, 0xcb, 0xed, 0xb8, 0xec, 0x72, 0x74, 0x05, 0x37, 0xd4, - 0x71, 0xc1, 0x15, 0xd2, 0x55, 0x55, 0x80, 0x2b, 0x81, 0x76, 0x6f, 0x8c, 0xa3, 0xdb, 0x81, 0x0e, - 0x54, 0xe9, 0xee, 0x68, 0xa1, 0x35, 0x43, 0x5e, 0x98, 0xc6, 0x25, 0x3b, 0x21, 0x89, 0x61, 0xea, - 0x7d, 0x6e, 0xd7, 0x4c, 0x12, 0xbc, 0x75, 0xed, 0x6e, 0x51, 0xa5, 0x1d, 0x95, 0xc8, 0x17, 0xab, - 0x3d, 0xa8, 0x86, 0x19, 0x8c, 0xc2, 0x97, 0x97, 0xab, 0x5a, 0xcc, 0x46, 0xe3, 0xb0, 0x99, 0x8c, - 0x43, 0x95, 0xab, 0x11, 0x59, 0x1e, 0x77, 0xe3, 0x6c, 0xaf, 0x41, 0xef, 0xd2, 0xe3, 0x71, 0xf4, - 0x5a, 0x39, 0x64, 0xea, 0x18, 0x1a, 0x97, 0x5d, 0xd7, 0x42, 0x73, 0xad, 0x27, 0x9b, 0xe9, 0xa7, - 0xa5, 0xf5, 0x68, 0x3a, 0x58, 0x3e, 0x84, 0x3c, 0x6b, 0xa8, 0xf2, 0x73, 0x20, 0xf6, 0x97, 0x16, - 0x5a, 0x27, 0xb4, 0x60, 0xd0, 0xe7, 0xe3, 0xce, 0x24, 0x7b, 0x38, 0x06, 0xca, 0x6d, 0x8e, 0x3d, - 0xd2, 0x82, 0x77, 0x51, 0x4b, 0xf0, 0x1e, 0xcf, 0x2f, 0x5a, 0x98, 0xf0, 0x6f, 0xb7, 0xd2, 0xb2, - 0x48, 0x58, 0x9f, 0x23, 0xb8, 0x4f, 0xa7, 0xeb, 0x56, 0x75, 0x4a, 0xe4, 0x5d, 0xce, 0xf8, 0x38, - 0x7b, 0xa7, 0x55, 0x5f, 0x77, 0xd3, 0xc4, 0x01, 0xf4, 0x6e, 0x2b, 0x51, 0xa1, 0xa6, 0x9c, 0x8c, - 0xa1, 0xe0, 0xbd, 0x56, 0xbc, 0xff, 0xa9, 0x29, 0x54, 0x25, 0x7c, 0xbf, 0xd5, 0x3c, 0xdc, 0x48, - 0x6a, 0xa1, 0xfe, 0x1b, 0x8a, 0x3f, 0x80, 0xd3, 0x8a, 0x4d, 0x28, 0xf8, 0x10, 0x4e, 0xa5, 0x60, - 0x9a, 0xd5, 0x47, 0xad, 0x34, 0xa8, 0x6a, 0x3d, 0x8e, 0xc7, 0xfb, 0xb8, 0x95, 0x96, 0x40, 0xed, - 0x2a, 0x84, 0x3f, 0x69, 0xa5, 0x63, 0x12, 0x75, 0x8f, 0x7d, 0x8a, 0xc7, 0xf5, 0x5e, 0xd9, 0x67, - 0x9f, 0xb5, 0xe2, 0x02, 0xda, 0x71, 0xcb, 0x82, 0xb3, 0xcf, 0x5b, 0xe5, 0xbb, 0x66, 0xce, 0x73, - 0x6d, 0xf6, 0x2f, 0x24, 0xa8, 0xdf, 0xc9, 0xf9, 0x9e, 0x42, 0x8e, 0x4b, 0xd1, 0xe1, 0xb4, 0xdf, - 0x73, 0xc5, 0x04, 0x3b, 0x3e, 0x85, 0x3b, 0x79, 0x7a, 0x1e, 0xb0, 0x8a, 0x9c, 0x9d, 0x90, 0xc2, - 0x1d, 0xbf, 0xb7, 0x85, 0xca, 0xa2, 0xc3, 0xcf, 0xb3, 0x13, 0x53, 0xf8, 0x82, 0x20, 0x01, 0xaf, - 0x2c, 0x08, 0x3b, 0x29, 0x85, 0x4b, 0x24, 0x6b, 0x0a, 0x26, 0x27, 0xc3, 0xa4, 0xcb, 0x9a, 0xda, - 0x30, 0x2e, 0x7d, 0x9e, 0x02, 0x9f, 0x00, 0x8e, 0xe6, 0x7c, 0x13, 0x3b, 0xb5, 0xd2, 0xfe, 0x0f, - 0x6e, 0xf9, 0xec, 0xb4, 0x14, 0x8d, 0x08, 0x89, 0xc8, 0x67, 0x3f, 0x9d, 0xf1, 0x4f, 0x4f, 0x51, - 0x85, 0x69, 0xc8, 0x2b, 0x0b, 0xa0, 0x67, 0x20, 0x0e, 0xa1, 0x5d, 0xd6, 0x14, 0x3b, 0x13, 0x71, - 0xa8, 0xa5, 0xfc, 0x9c, 0x95, 0xa2, 0xee, 0xe3, 0xf1, 0xec, 0x14, 0xe5, 0x8a, 0x1e, 0x63, 0x6e, - 0xcf, 0x49, 0x51, 0x49, 0x47, 0x61, 0xed, 0xfa, 0x5c, 0x70, 0xea, 0xe5, 0x42, 0x56, 0x12, 0x3b, - 0x2f, 0x85, 0x23, 0xf2, 0x54, 0x40, 0x89, 0xc5, 0x55, 0x60, 0x50, 0x62, 0xe7, 0xa7, 0x68, 0xf5, - 0x8b, 0x80, 0x5e, 0x59, 0x10, 0x7e, 0x41, 0x2a, 0xf2, 0xa2, 0x81, 0x91, 0xf8, 0x21, 0xf8, 0x2b, - 0x84, 0x86, 0x6a, 0x0d, 0xe5, 0xe9, 0x47, 0xd5, 0x28, 0xae, 0xe9, 0x2e, 0x04, 0x6d, 0xac, 0xe2, - 0x5b, 0x53, 0xf2, 0x3d, 0xa2, 0x18, 0x16, 0xef, 0x45, 0xe8, 0xf2, 0x70, 0xb6, 0x13, 0x6e, 0xb7, - 0x81, 0xff, 0x70, 0xb6, 0x93, 0x54, 0x02, 0x61, 0x15, 0x4b, 0x7a, 0x58, 0x2e, 0x4e, 0x51, 0x51, - 0x55, 0x4b, 0xd4, 0xf8, 0x5c, 0x02, 0x61, 0x87, 0x6d, 0x93, 0x13, 0x81, 0x13, 0xbe, 0x5d, 0xf9, - 0x80, 0x94, 0xa2, 0x8a, 0x8b, 0x0b, 0xd5, 0x9e, 0x74, 0x19, 0xc2, 0x75, 0xd8, 0x36, 0x8a, 0xcd, - 0x12, 0x28, 0x3a, 0xac, 0x0d, 0x97, 0x6b, 0x23, 0xfd, 0x12, 0x51, 0xf1, 0x77, 0x45, 0x8a, 0xea, - 0x3e, 0x2a, 0x52, 0xde, 0xae, 0x44, 0xf6, 0x94, 0x37, 0x89, 0xc1, 0xd7, 0xf6, 0x90, 0x5d, 0xf8, - 0x7e, 0x53, 0xf1, 0xb6, 0x23, 0x64, 0x57, 0x11, 0x2a, 0x7f, 0x3b, 0x63, 0xec, 0x94, 0x58, 0xae, - 0x99, 0x9a, 0x02, 0x71, 0x8e, 0x7a, 0xdb, 0x8d, 0xb2, 0xa8, 0x08, 0x94, 0xa7, 0x3d, 0x60, 0x90, - 0x29, 0x8f, 0xcd, 0x94, 0x9f, 0xab, 0xc0, 0x20, 0x2e, 0x54, 0x76, 0x57, 0x83, 0x41, 0xa6, 0x3c, - 0x36, 0x2d, 0x3f, 0xd7, 0x68, 0xa3, 0xe9, 0xf9, 0xb9, 0x16, 0xe4, 0xa2, 0x22, 0xe5, 0xed, 0x3a, - 0x59, 0x5d, 0xd2, 0x5b, 0x24, 0x3f, 0xd7, 0x87, 0xec, 0x66, 0xc8, 0xcf, 0x8f, 0x43, 0x76, 0xd3, - 0xf2, 0xf3, 0x93, 0x18, 0xbb, 0x68, 0x7e, 0x7e, 0xaa, 0x29, 0x54, 0xe7, 0xe7, 0x67, 0xc8, 0x4f, - 0x45, 0xa0, 0x3c, 0xfd, 0x1c, 0x41, 0x86, 0x5d, 0x67, 0x32, 0xac, 0x2e, 0x55, 0xc4, 0xec, 0x17, - 0xb0, 0x88, 0x89, 0xe8, 0x2c, 0xf4, 0xcb, 0xe9, 0x70, 0x17, 0xcf, 0xb1, 0x5f, 0xa5, 0xe4, 0x2f, - 0xd2, 0xdc, 0xcd, 0xdc, 0x17, 0xd9, 0x63, 0xd9, 0xaf, 0x53, 0xf8, 0xbc, 0x67, 0x6d, 0x42, 0xf6, - 0xd8, 0x6f, 0xc2, 0x26, 0x66, 0xc3, 0x6f, 0xa1, 0x3d, 0xc8, 0x7d, 0xc7, 0xb3, 0x3b, 0x6c, 0x9b, - 0xfd, 0x0e, 0x13, 0x5e, 0xb6, 0xb1, 0xf4, 0xfd, 0x1e, 0x93, 0x63, 0x63, 0xd9, 0xf2, 0x05, 0xf7, - 0xd9, 0x0d, 0x50, 0xcf, 0xf0, 0x5c, 0xd6, 0x83, 0xf9, 0x8d, 0x29, 0xf9, 0x5a, 0x58, 0xe4, 0x59, - 0x5a, 0xe9, 0xd8, 0x4d, 0x29, 0xfd, 0x82, 0x0b, 0x3e, 0xe4, 0xf1, 0xe6, 0x14, 0x2d, 0x8c, 0x59, - 0xaf, 0xcb, 0x9a, 0x0a, 0xd8, 0x2d, 0x52, 0x5f, 0xad, 0x8a, 0x01, 0xbb, 0x15, 0x4b, 0x80, 0x9a, - 0x52, 0x7a, 0x9e, 0xdd, 0x86, 0x41, 0x8a, 0x80, 0x6a, 0x8a, 0xdd, 0x8e, 0x65, 0x31, 0x74, 0x8e, - 0x89, 0x7d, 0x07, 0x1c, 0x84, 0x98, 0xbc, 0x84, 0xbf, 0x33, 0xa5, 0x57, 0x71, 0x80, 0x7a, 0x9e, - 0xdf, 0x85, 0xae, 0xf4, 0x59, 0x81, 0xa0, 0xa5, 0xed, 0x6e, 0x78, 0xcb, 0x08, 0x9f, 0xa8, 0x09, - 0x99, 0x9c, 0x3f, 0xc8, 0xf2, 0x88, 0x62, 0x54, 0x8d, 0xec, 0x8f, 0x55, 0xb8, 0x1e, 0xcb, 0x7b, - 0x10, 0x88, 0xce, 0xda, 0x7a, 0x18, 0x40, 0x6a, 0xef, 0x34, 0x98, 0x78, 0xb1, 0x7d, 0x58, 0x9a, - 0xd4, 0x0b, 0x62, 0xe8, 0xfb, 0xde, 0x18, 0xaa, 0x3d, 0xdf, 0xa7, 0x27, 0x1e, 0xe9, 0x45, 0xb7, - 0x2a, 0x76, 0x7f, 0x74, 0x7e, 0xa9, 0x8b, 0x6c, 0x57, 0xb0, 0x07, 0xa2, 0x4b, 0x8c, 0xda, 0xf8, - 0xd4, 0xa9, 0xf6, 0x4f, 0x51, 0x8b, 0xb4, 0xab, 0x7f, 0x26, 0xf0, 0x67, 0x24, 0xa0, 0x02, 0x93, - 0x97, 0x07, 0x53, 0x74, 0xbe, 0x50, 0x98, 0xa6, 0xa8, 0xf4, 0x1f, 0x8a, 0xce, 0x78, 0x2d, 0xc3, - 0x67, 0x5f, 0x3d, 0x09, 0xa6, 0x71, 0x7d, 0x38, 0x5a, 0xeb, 0x15, 0xae, 0x8f, 0x44, 0xa7, 0x7b, - 0x9c, 0xeb, 0xa3, 0x51, 0x8b, 0x0a, 0xd7, 0xc7, 0xe4, 0x60, 0x85, 0x30, 0x79, 0x79, 0x1c, 0x5c, - 0x15, 0x56, 0xc5, 0xf5, 0x89, 0xe8, 0xec, 0x8b, 0x72, 0xdd, 0x8f, 0xf2, 0xa7, 0xa1, 0x41, 0x3d, - 0x3e, 0x99, 0xd2, 0x77, 0xff, 0x6a, 0x4f, 0x7a, 0x2a, 0x5e, 0x63, 0x98, 0x02, 0x4f, 0xeb, 0x45, - 0xa3, 0x42, 0x17, 0xaf, 0x1b, 0xcf, 0xc8, 0xfd, 0x2b, 0x24, 0x05, 0xf0, 0xd9, 0xa8, 0x72, 0xda, - 0x0d, 0xbf, 0x8c, 0x3c, 0x17, 0x4d, 0x92, 0x66, 0x04, 0x8b, 0xe7, 0xa3, 0x2b, 0xa3, 0x96, 0x68, - 0xb3, 0x17, 0x62, 0x9d, 0x8c, 0x1d, 0x92, 0xd8, 0x81, 0x58, 0x27, 0xf5, 0x87, 0x0f, 0x57, 0xb0, - 0x17, 0x63, 0xb1, 0x94, 0x00, 0xb1, 0x5e, 0x8a, 0xc5, 0xd2, 0xc7, 0x2a, 0x15, 0xeb, 0x65, 0xbd, - 0x79, 0x54, 0xf5, 0xf3, 0xaf, 0xe8, 0x67, 0xa5, 0x50, 0x00, 0xbe, 0x12, 0x55, 0x8e, 0xf4, 0xf3, - 0xd5, 0x68, 0xe1, 0xc6, 0xfa, 0xf9, 0x5a, 0x74, 0x87, 0xac, 0xee, 0xe7, 0xeb, 0xb1, 0xc2, 0x8b, - 0xf7, 0xf3, 0x8d, 0x58, 0xe1, 0x45, 0xfa, 0xf9, 0x66, 0x2c, 0x56, 0xb4, 0x9f, 0x6f, 0xc5, 0x62, - 0x55, 0xf5, 0xf3, 0x6f, 0x29, 0x7a, 0x4d, 0xac, 0x9a, 0x87, 0x54, 0x12, 0x2a, 0xde, 0xdf, 0xa3, - 0x5d, 0x23, 0x77, 0x0a, 0xff, 0x47, 0x34, 0x0f, 0xf8, 0x94, 0xe1, 0x0a, 0xf6, 0x36, 0xa6, 0x6f, - 0x04, 0x44, 0xfc, 0x7f, 0x46, 0x29, 0x13, 0xa2, 0x63, 0xbf, 0x13, 0x9d, 0xa6, 0x0a, 0x54, 0xee, - 0xdf, 0x8d, 0x86, 0xd5, 0xdf, 0x43, 0x5c, 0xc1, 0xde, 0x8b, 0x75, 0x5f, 0xe2, 0x08, 0xf2, 0x7e, - 0x2c, 0x67, 0x52, 0xa0, 0xe3, 0x7c, 0x10, 0x2d, 0xc3, 0x48, 0x1f, 0x3e, 0x8c, 0xd6, 0xac, 0xee, - 0xc3, 0x47, 0xe8, 0x43, 0x04, 0x84, 0xfb, 0x8f, 0xa3, 0xe5, 0x15, 0xed, 0xc3, 0x27, 0xd1, 0xe9, - 0x1b, 0xef, 0xc3, 0xa7, 0xd1, 0xb0, 0x91, 0x3e, 0x7c, 0x16, 0x2b, 0xd5, 0x48, 0x1f, 0x3e, 0x8f, - 0xd5, 0x77, 0xbc, 0x0f, 0xff, 0x4a, 0x99, 0xab, 0x8c, 0xc3, 0x67, 0xac, 0x89, 0x70, 0xf5, 0x3c, - 0x6e, 0x0d, 0xbd, 0xd2, 0x4f, 0xaf, 0x8d, 0x50, 0xe1, 0xf8, 0x35, 0xf4, 0x9a, 0x36, 0x43, 0x8d, - 0x84, 0x1a, 0x27, 0xac, 0x31, 0x9b, 0x8c, 0x15, 0x33, 0xd7, 0x4a, 0xa8, 0x74, 0xe2, 0x1a, 0xe2, - 0x32, 0xe3, 0x3c, 0x0c, 0x75, 0x4e, 0x02, 0x97, 0xe9, 0xf3, 0x31, 0x54, 0x38, 0x19, 0x5c, 0x66, - 0x98, 0x97, 0xa1, 0xc6, 0x29, 0xe0, 0x32, 0xf3, 0xfc, 0x0c, 0x95, 0x4e, 0x5d, 0xa3, 0xbe, 0x27, - 0xaa, 0xcb, 0xfe, 0xfd, 0x6d, 0x66, 0xad, 0x51, 0xb3, 0xce, 0x71, 0xd9, 0x93, 0x6d, 0xf4, 0x96, - 0xd1, 0x91, 0xe9, 0x4c, 0xa7, 0xd9, 0x53, 0x6d, 0xf8, 0xd6, 0x3d, 0x61, 0xf9, 0xec, 0xe9, 0x36, - 0x7c, 0xfb, 0x98, 0xb0, 0x7c, 0x69, 0x31, 0x9c, 0xed, 0xf9, 0x06, 0x7b, 0xa6, 0x8d, 0xf6, 0x65, - 0xf5, 0x23, 0xf3, 0x67, 0xdb, 0xe4, 0x97, 0x0a, 0x6a, 0x1c, 0x9d, 0x61, 0xcf, 0xb5, 0xd1, 0x4e, - 0xa9, 0xce, 0x10, 0xec, 0x79, 0xf8, 0xef, 0x2e, 0x08, 0xf6, 0x42, 0x1b, 0xad, 0x8e, 0xdd, 0x93, - 0x25, 0xcf, 0x17, 0x19, 0x2e, 0x8e, 0xa4, 0x5d, 0xed, 0x40, 0x1c, 0x3b, 0x8a, 0xb0, 0x17, 0xe3, - 0xd8, 0xd7, 0x09, 0x7b, 0x09, 0x21, 0xf0, 0xef, 0x1c, 0x54, 0x11, 0x2f, 0xb7, 0xe1, 0x43, 0x02, - 0x35, 0xe5, 0x22, 0xd3, 0x46, 0xc7, 0x72, 0xb4, 0x55, 0x2d, 0xbd, 0xa2, 0x34, 0x5c, 0x3b, 0xed, - 0x66, 0xb8, 0x60, 0xaf, 0x82, 0xb0, 0x5a, 0xa7, 0x5f, 0x6b, 0xc3, 0x16, 0x8b, 0x06, 0x1d, 0x11, - 0xfa, 0xbc, 0x9c, 0x55, 0xe0, 0xec, 0xf5, 0x36, 0xfc, 0xd4, 0xdb, 0xf7, 0x8a, 0xeb, 0xac, 0x80, - 0xb7, 0x1d, 0xc5, 0xde, 0x80, 0x93, 0xf5, 0x7c, 0x32, 0xed, 0xe2, 0x0c, 0xf1, 0xa6, 0x6e, 0x67, - 0x84, 0x4f, 0xed, 0xb7, 0xda, 0xe4, 0x17, 0xb5, 0x80, 0xfb, 0x02, 0x69, 0xf9, 0x5b, 0x9b, 0xfc, - 0xa2, 0x46, 0x00, 0xfb, 0x7b, 0x9b, 0xbc, 0x6e, 0x57, 0x37, 0xbd, 0xec, 0x1f, 0x6d, 0xf2, 0x23, - 0x5e, 0x20, 0x7c, 0xf6, 0x36, 0x9e, 0xfb, 0xb2, 0xbe, 0x53, 0x64, 0xff, 0x6c, 0x93, 0xbf, 0xda, - 0x1b, 0x97, 0x3e, 0xde, 0x69, 0x93, 0xbf, 0x42, 0x1f, 0x17, 0xec, 0x5d, 0xb8, 0x53, 0x03, 0xf5, - 0x5e, 0x1b, 0xae, 0x4f, 0xbc, 0x9c, 0x25, 0x70, 0x22, 0x08, 0xa0, 0xfd, 0x7e, 0x04, 0x3d, 0x32, - 0x44, 0x3f, 0x40, 0x3e, 0x22, 0xba, 0xec, 0xc3, 0x08, 0x02, 0x3d, 0xf6, 0x91, 0xa4, 0xe0, 0x6d, - 0xe1, 0x3e, 0xfb, 0x58, 0x52, 0x28, 0x59, 0x36, 0xcc, 0x3f, 0x91, 0x14, 0x4a, 0x96, 0xcd, 0x3e, - 0xc5, 0x60, 0xd2, 0x89, 0x8f, 0xb2, 0xf8, 0x19, 0x08, 0x6d, 0xc8, 0x61, 0x0b, 0xfd, 0x1c, 0xfd, - 0xdb, 0x90, 0x0b, 0x7f, 0x39, 0x88, 0x91, 0xde, 0xe0, 0xdb, 0xec, 0xb8, 0x76, 0x72, 0x8d, 0x8b, - 0x54, 0x76, 0x3c, 0x9e, 0x87, 0xd0, 0xd3, 0x13, 0xda, 0xf1, 0x7d, 0x95, 0x97, 0xb8, 0x25, 0xd8, - 0x89, 0xed, 0xf8, 0xdd, 0x82, 0xbc, 0x90, 0x66, 0x27, 0xb5, 0xcb, 0x0f, 0x2d, 0x9b, 0xb9, 0x1f, - 0xe0, 0x22, 0x9d, 0x9d, 0xac, 0xe4, 0x40, 0xd8, 0x29, 0xed, 0xf8, 0x06, 0xe0, 0xe4, 0x27, 0x64, - 0x96, 0x4e, 0x95, 0x6e, 0xa9, 0xcd, 0x4e, 0x6b, 0xc7, 0xa7, 0x1c, 0xcd, 0xfe, 0xf4, 0x76, 0xfc, - 0xae, 0x83, 0xd8, 0x9f, 0x01, 0xad, 0x4c, 0x89, 0x22, 0x9c, 0xd9, 0x2e, 0xff, 0x9d, 0xc1, 0xcf, - 0x15, 0x4b, 0xec, 0xac, 0x76, 0xb5, 0xa4, 0x04, 0xe0, 0x5e, 0xc9, 0xe7, 0xd9, 0x71, 0x41, 0x25, - 0xa5, 0xe7, 0xb4, 0xab, 0xb5, 0x2f, 0x62, 0xc1, 0xce, 0x8d, 0x83, 0x32, 0xb1, 0xe7, 0xc5, 0xc1, - 0xb4, 0x6b, 0xf3, 0x49, 0x76, 0x3e, 0x38, 0x66, 0x3d, 0x55, 0x59, 0x17, 0xc8, 0xa6, 0xef, 0x14, - 0x71, 0xe6, 0xfb, 0x21, 0x7a, 0x47, 0x4d, 0xe9, 0xf7, 0x47, 0x61, 0x5b, 0xba, 0xbc, 0x10, 0xfd, - 0x18, 0x76, 0xd7, 0xf3, 0x49, 0xb6, 0x15, 0xb2, 0xe1, 0x52, 0x89, 0xcb, 0xb2, 0xba, 0x48, 0xca, - 0xa8, 0xcd, 0xb6, 0xb5, 0x53, 0x41, 0x56, 0xe6, 0x2a, 0xbb, 0xb8, 0x5d, 0xfe, 0x36, 0x63, 0x8b, - 0x52, 0xbe, 0xa4, 0x9d, 0x2a, 0x3f, 0xfc, 0x7d, 0x69, 0xf8, 0x8a, 0xd9, 0x6e, 0x1e, 0x66, 0xd4, - 0x6b, 0xb8, 0xb3, 0x58, 0x8a, 0xfd, 0xc2, 0xfc, 0xb2, 0x76, 0x9a, 0x90, 0xf2, 0x77, 0xa3, 0xda, - 0xe2, 0xf2, 0x76, 0x5a, 0xc6, 0x81, 0x55, 0xab, 0x5f, 0xa1, 0xbb, 0xea, 0xb8, 0x96, 0x3f, 0xc5, - 0xae, 0x6c, 0x0f, 0x67, 0x95, 0x04, 0xb6, 0x7f, 0x51, 0x30, 0x9c, 0xa2, 0x77, 0xcc, 0xe8, 0x18, - 0xa2, 0x9d, 0xed, 0xd1, 0x5f, 0xbc, 0x02, 0xda, 0xd5, 0x1e, 0xfe, 0x5a, 0x15, 0xed, 0xdd, 0xed, - 0xab, 0x7f, 0x10, 0xfd, 0xaf, 0x47, 0xfc, 0xd3, 0x9d, 0xb9, 0xdc, 0x58, 0x56, 0x05, 0xa5, 0xdd, - 0xcd, 0x56, 0xc1, 0xb1, 0xd9, 0x2c, 0xf3, 0x50, 0x63, 0x69, 0x95, 0x2c, 0x33, 0xe1, 0x95, 0x0b, - 0x36, 0x4b, 0x98, 0xf5, 0xc6, 0x21, 0x55, 0xa2, 0xfe, 0x72, 0x20, 0xd8, 0xec, 0x19, 0xfc, 0x91, - 0x60, 0xc0, 0x13, 0xac, 0x66, 0xf5, 0x19, 0x09, 0xdc, 0x99, 0x55, 0xfd, 0xfb, 0x5e, 0xdc, 0x44, - 0xa3, 0x03, 0x9e, 0xcb, 0xd9, 0x2c, 0xf3, 0x4b, 0x46, 0xfd, 0x0c, 0xff, 0xf0, 0xe7, 0x79, 0x81, - 0x60, 0x09, 0xf3, 0x70, 0xe3, 0xd0, 0xe9, 0xc2, 0x2e, 0x2e, 0xc5, 0xb3, 0xcd, 0xc3, 0x8c, 0xe4, - 0x0c, 0x7e, 0x79, 0x9e, 0x92, 0x51, 0xb3, 0xfa, 0xfb, 0x51, 0x2e, 0xfa, 0x3f, 0x4e, 0xe3, 0x5d, - 0x26, 0xb4, 0x92, 0x8d, 0x65, 0xd5, 0x06, 0xb8, 0x09, 0x4c, 0x98, 0x49, 0x63, 0x49, 0x1c, 0x1f, - 0xc4, 0xff, 0x9a, 0xb2, 0xd9, 0x33, 0x48, 0xe4, 0x7d, 0x60, 0xcd, 0x6a, 0x6e, 0x2c, 0xae, 0xfa, - 0xd7, 0x36, 0xfc, 0x97, 0x8b, 0x57, 0x2c, 0x15, 0xb8, 0xe0, 0xb8, 0xd4, 0x99, 0x65, 0x2e, 0xc2, - 0x22, 0x6d, 0x15, 0xd0, 0x4c, 0x90, 0xc2, 0xa0, 0xe5, 0x0b, 0xc7, 0x2a, 0x1c, 0x01, 0x64, 0x76, - 0x04, 0x59, 0x0b, 0xa4, 0x86, 0x4c, 0xba, 0xb8, 0x5d, 0x2e, 0xa1, 0x39, 0x67, 0xdd, 0x57, 0xf6, - 0x1e, 0x58, 0x91, 0x78, 0xf0, 0xc0, 0x8a, 0xc4, 0xf3, 0x07, 0x56, 0x24, 0xb6, 0xbd, 0xb8, 0x62, - 0x96, 0xb1, 0x34, 0xe7, 0x15, 0x5b, 0x4b, 0x8e, 0x9b, 0xcf, 0x59, 0xa5, 0x56, 0xe1, 0xd8, 0x63, - 0xf8, 0xef, 0xb3, 0xc1, 0xc4, 0x7f, 0x07, 0x00, 0x00, 0xff, 0xff, 0x88, 0x72, 0x61, 0xd1, 0xd9, - 0x3c, 0x00, 0x00, + // 6372 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x74, 0x7b, 0x77, 0x78, 0x1b, 0xc7, + 0x99, 0xbe, 0xa0, 0x62, 0x51, 0x2b, 0x89, 0x1a, 0xaf, 0x25, 0x11, 0x52, 0x6c, 0x89, 0x14, 0xf3, + 0xfb, 0x91, 0x51, 0x2e, 0x84, 0x4c, 0x3b, 0x64, 0x9e, 0x5c, 0x2e, 0x39, 0x8a, 0x4d, 0xc8, 0x91, + 0x14, 0x45, 0x80, 0x74, 0xee, 0x2f, 0x3d, 0x4b, 0xec, 0x10, 0xdc, 0x08, 0xd8, 0x85, 0x77, 0x07, + 0x12, 0xe9, 0x5c, 0xee, 0x71, 0xef, 0x3d, 0xb1, 0x2c, 0x77, 0x55, 0xd7, 0xf4, 0xee, 0x5e, 0x13, + 0x4b, 0x2e, 0x89, 0x1d, 0x57, 0xb9, 0x5b, 0xb6, 0xe3, 0x9e, 0xd8, 0x71, 0xaf, 0xb9, 0xe7, 0x7b, + 0x67, 0x66, 0xb1, 0x0b, 0xd2, 0x7f, 0x71, 0xe7, 0xfd, 0xda, 0x3b, 0xdf, 0x7c, 0x53, 0x76, 0x16, + 0x34, 0x18, 0x9f, 0x28, 0xf9, 0x3c, 0x08, 0x1c, 0xcf, 0x6d, 0x29, 0xf9, 0x9e, 0xf0, 0xcc, 0xd9, + 0xc2, 0x29, 0x8d, 0x2e, 0xaf, 0x2d, 0x72, 0x61, 0xd9, 0x96, 0xb0, 0x24, 0xba, 0x7c, 0x71, 0xde, + 0xcb, 0x7b, 0x78, 0x4c, 0xd1, 0x93, 0x44, 0x57, 0xbd, 0x99, 0x30, 0xe6, 0xf5, 0x38, 0xbc, 0x60, + 0x67, 0x27, 0x4b, 0xdc, 0x5c, 0x6c, 0xcc, 0x14, 0xa5, 0x64, 0xa2, 0x3e, 0xd1, 0x3c, 0x67, 0xed, + 0xec, 0xbd, 0xcf, 0xac, 0x9c, 0x31, 0x34, 0x53, 0x94, 0xcc, 0xa4, 0x31, 0x7b, 0xac, 0x60, 0xe5, + 0x93, 0x33, 0xeb, 0x13, 0xcd, 0x0b, 0x15, 0x0e, 0x44, 0x4a, 0xb8, 0x9b, 0x9c, 0x15, 0xb1, 0x00, + 0x62, 0xae, 0x30, 0xe6, 0xda, 0x3c, 0xe7, 0x14, 0xad, 0x42, 0x72, 0x76, 0x44, 0xa8, 0x41, 0x92, + 0xe7, 0xbc, 0x42, 0xc1, 0x12, 0x3c, 0x39, 0x27, 0x2a, 0x57, 0x20, 0xe4, 0xe3, 0x96, 0x1f, 0x70, + 0x91, 0x3c, 0xa8, 0x3e, 0xd1, 0x3c, 0x2f, 0x94, 0x4b, 0xd0, 0x5c, 0x6e, 0xcc, 0xe1, 0x05, 0x5e, + 0x0c, 0x92, 0x73, 0xeb, 0x67, 0x85, 0x52, 0x09, 0x91, 0xcc, 0xf2, 0x7d, 0x6b, 0x32, 0x59, 0x53, + 0x9f, 0x68, 0xae, 0xd1, 0x32, 0x40, 0xab, 0xb6, 0x26, 0x8c, 0xda, 0x9e, 0x6c, 0x66, 0xad, 0xe7, + 0x15, 0xb8, 0xe5, 0x66, 0xb9, 0x5f, 0x34, 0xff, 0xdd, 0x98, 0x27, 0xb8, 0x5f, 0xdc, 0x28, 0x26, + 0x4b, 0x1c, 0x7d, 0xaf, 0x6d, 0x4d, 0xb6, 0x50, 0x0a, 0x5b, 0xe2, 0x8a, 0x94, 0x21, 0xe5, 0xac, + 0x46, 0xa8, 0x36, 0x65, 0x40, 0xf0, 0x09, 0x81, 0xdc, 0x68, 0x1a, 0x40, 0xcc, 0xaf, 0x19, 0x8b, + 0x4a, 0xe3, 0xbe, 0x15, 0xf0, 0x8d, 0xb6, 0x13, 0x08, 0xcb, 0xcd, 0x71, 0xa4, 0x49, 0x27, 0xb0, + 0x56, 0x0a, 0xbb, 0x94, 0x6c, 0xd5, 0xfe, 0x99, 0xc6, 0xa2, 0x4a, 0xbc, 0x0d, 0x65, 0xee, 0x4f, + 0x9a, 0xab, 0x8d, 0x39, 0xae, 0x67, 0xf3, 0x20, 0x99, 0xa8, 0x9f, 0xd5, 0x3c, 0xbf, 0x75, 0x71, + 0x35, 0xab, 0x01, 0xcf, 0xe6, 0x43, 0x52, 0x85, 0xc2, 0x1d, 0x4d, 0x46, 0x1b, 0x85, 0xb7, 0x89, + 0xbb, 0xce, 0x31, 0xdc, 0x8f, 0x71, 0xaa, 0x85, 0x30, 0xab, 0x65, 0x66, 0x8b, 0xc1, 0xdc, 0xbc, + 0x6f, 0x15, 0xa5, 0xfa, 0xc6, 0xc0, 0x39, 0xa6, 0x8a, 0x1e, 0xa4, 0xd0, 0xcf, 0x38, 0xc7, 0x70, + 0xf3, 0x5b, 0x46, 0xd2, 0x71, 0x5d, 0xcf, 0x1e, 0xdd, 0x38, 0x26, 0x36, 0x16, 0x1d, 0x37, 0x6a, + 0x37, 0x3b, 0x62, 0xb7, 0x58, 0x6a, 0xf5, 0x88, 0x7e, 0xc7, 0xfd, 0x22, 0x6b, 0x6b, 0x22, 0x6a, + 0x3d, 0x67, 0x5a, 0x6b, 0x6b, 0xa2, 0x62, 0xfd, 0x1d, 0x63, 0x59, 0xc5, 0x9a, 0xbb, 0xd6, 0x68, + 0x81, 0x6f, 0x0c, 0x84, 0x57, 0xda, 0xe2, 0xf9, 0x36, 0xaa, 0x43, 0x8f, 0xf1, 0x52, 0x6d, 0xde, + 0x0d, 0xa5, 0x8c, 0xd2, 0x59, 0x35, 0x61, 0x2c, 0xef, 0xc9, 0x66, 0xfa, 0x2d, 0x91, 0x1b, 0xef, + 0x0e, 0x27, 0x4b, 0xbf, 0x9a, 0x1e, 0x54, 0x6a, 0x9b, 0xb9, 0x4f, 0x10, 0x46, 0x5f, 0x73, 0xd1, + 0xa0, 0xf9, 0x4d, 0x63, 0xe1, 0xa8, 0xcc, 0xf7, 0x46, 0x24, 0x11, 0x79, 0x9d, 0xdf, 0xba, 0xa4, + 0x7a, 0x34, 0x30, 0x66, 0x43, 0x0b, 0x46, 0x23, 0xad, 0x55, 0xef, 0xc4, 0xca, 0x8d, 0xc6, 0xcb, + 0x3c, 0xdc, 0x98, 0xe3, 0xe5, 0x72, 0x65, 0x5f, 0x95, 0xda, 0x14, 0x37, 0xeb, 0x49, 0xa8, 0x8b, + 0x16, 0x9a, 0xe6, 0x37, 0x8d, 0x9a, 0xa2, 0x67, 0x3b, 0x63, 0x8e, 0x1a, 0xd4, 0x69, 0x0a, 0xb4, + 0x5f, 0xc9, 0x75, 0x81, 0x6a, 0x7d, 0x73, 0x35, 0x15, 0xa8, 0x5f, 0xc4, 0xe0, 0x4e, 0x53, 0x42, + 0x54, 0xd8, 0xeb, 0x50, 0xb2, 0x7e, 0xd1, 0xfc, 0xb6, 0x51, 0x1b, 0x94, 0x47, 0x37, 0x56, 0x16, + 0x14, 0x0c, 0xed, 0x17, 0x75, 0x75, 0xdd, 0x8c, 0xa1, 0x85, 0x41, 0x79, 0xb4, 0x92, 0xd1, 0xb5, + 0x07, 0x19, 0xb3, 0xa9, 0x18, 0x57, 0xbd, 0x35, 0xd3, 0x98, 0x4d, 0xb0, 0xf9, 0xe5, 0x70, 0x3d, + 0xa9, 0x6d, 0xad, 0x95, 0x4e, 0x08, 0x8f, 0xcc, 0x24, 0x5a, 0x5f, 0x98, 0x31, 0x6b, 0xb3, 0x55, + 0x40, 0xcf, 0x16, 0x0c, 0xd1, 0xa3, 0xf9, 0xff, 0x8d, 0x9a, 0xdc, 0xb8, 0x53, 0xb0, 0x7d, 0xac, + 0x2d, 0x54, 0xfb, 0x46, 0xc5, 0x7a, 0x28, 0x94, 0x99, 0x5f, 0x35, 0x66, 0x05, 0x4e, 0x1e, 0x2c, + 0x6b, 0x5b, 0x0f, 0x91, 0x2a, 0x99, 0x9c, 0x55, 0xb0, 0xfc, 0x9e, 0xb2, 0x9b, 0xcb, 0x38, 0x79, + 0x15, 0x85, 0xb4, 0xcc, 0x16, 0xc3, 0x18, 0xa3, 0x95, 0x4e, 0x4e, 0xf4, 0x39, 0xe8, 0xd9, 0x22, + 0xd5, 0x33, 0xbd, 0x02, 0x0e, 0xcd, 0x1b, 0x0b, 0x17, 0xc3, 0x7a, 0x63, 0x81, 0x5f, 0x72, 0x37, + 0x5a, 0x7e, 0x3e, 0xd8, 0x48, 0x8b, 0x1c, 0x55, 0xda, 0xc2, 0x21, 0xc3, 0x2f, 0xb9, 0x1d, 0x7e, + 0x3e, 0xe8, 0xe3, 0xae, 0xd9, 0x64, 0x2c, 0x18, 0xb7, 0x02, 0xcc, 0x6f, 0xc7, 0xcd, 0x89, 0xe4, + 0xdc, 0x48, 0x2d, 0xce, 0x1f, 0xb7, 0x82, 0x2e, 0x25, 0x30, 0x9b, 0x8c, 0x1a, 0xcf, 0xb7, 0xb9, + 0xbf, 0x71, 0x94, 0x16, 0x25, 0xea, 0xcf, 0x02, 0x19, 0x78, 0xed, 0x64, 0x5a, 0xf0, 0xe2, 0xd0, + 0x5c, 0x48, 0xd7, 0x4e, 0x9a, 0xed, 0xc6, 0x7c, 0x2b, 0x9f, 0x27, 0xf2, 0xfd, 0x9e, 0xcd, 0x93, + 0xf3, 0xa2, 0x25, 0xd2, 0x21, 0x05, 0x82, 0x6a, 0x97, 0x26, 0x7e, 0x54, 0x73, 0xd5, 0x57, 0x8d, + 0xb9, 0x43, 0x25, 0x17, 0x49, 0xaf, 0x37, 0xe6, 0xd0, 0x08, 0xea, 0x55, 0x23, 0x9a, 0x39, 0x29, + 0x58, 0x55, 0x30, 0x0e, 0x92, 0x81, 0xcd, 0x15, 0xc6, 0x6c, 0x82, 0x30, 0x44, 0x71, 0x55, 0xe0, + 0xb4, 0xbc, 0xd9, 0x3c, 0xc8, 0x61, 0x6c, 0x74, 0xcf, 0x80, 0x98, 0xcd, 0x46, 0x0d, 0x65, 0x07, + 0xd6, 0xb2, 0xb6, 0x16, 0x4a, 0x6b, 0x45, 0x63, 0x68, 0xae, 0x2f, 0x1f, 0x56, 0xbf, 0x38, 0xc7, + 0xa8, 0xd1, 0xa3, 0x6e, 0xd6, 0x18, 0xb3, 0x07, 0xca, 0x85, 0x02, 0x9b, 0x61, 0xce, 0x33, 0xe6, + 0xa4, 0x5d, 0xd1, 0x76, 0x24, 0x4b, 0x98, 0x86, 0x71, 0xd0, 0xb0, 0x83, 0xe7, 0x99, 0xe6, 0x7c, + 0x63, 0x6e, 0x4f, 0xc1, 0xb3, 0xc4, 0x11, 0xad, 0x6c, 0x56, 0xd8, 0x68, 0x3b, 0x92, 0xcd, 0x26, + 0xad, 0x8c, 0xf0, 0x1d, 0x37, 0xcf, 0xe6, 0x90, 0xf1, 0xda, 0x49, 0xc1, 0x03, 0x76, 0x90, 0xb9, + 0xc0, 0xa8, 0xe9, 0x9f, 0x0c, 0x8e, 0x2e, 0xac, 0x75, 0x04, 0xe3, 0x26, 0x33, 0x16, 0xa0, 0xd5, + 0x25, 0xf7, 0x19, 0x36, 0x66, 0x1e, 0x6c, 0x2c, 0x94, 0x48, 0xd9, 0xb7, 0x28, 0x77, 0x2c, 0x6f, + 0x2e, 0x34, 0xe6, 0x01, 0xea, 0x76, 0xcb, 0x45, 0x36, 0x1e, 0x7a, 0x58, 0xc7, 0x27, 0x98, 0x13, + 0xb6, 0x32, 0x5c, 0xb0, 0xef, 0x87, 0xaa, 0x59, 0xa7, 0xc8, 0xd9, 0xa6, 0xb0, 0xf9, 0xdd, 0xc0, + 0x73, 0x59, 0xc1, 0x5c, 0x62, 0x1c, 0x9c, 0x75, 0xba, 0xd6, 0x8e, 0xf0, 0x9c, 0xf0, 0x7c, 0x4d, + 0x7b, 0xd2, 0xac, 0x35, 0xe6, 0x8d, 0x58, 0x85, 0x32, 0xef, 0x73, 0x02, 0xc1, 0x2e, 0x4c, 0x50, + 0xbb, 0xd3, 0x2b, 0x94, 0x8b, 0xee, 0x10, 0x1f, 0x63, 0xfb, 0xa8, 0xbf, 0x73, 0x3a, 0xbd, 0xb2, + 0x2b, 0xd8, 0xf5, 0x75, 0x66, 0x8d, 0x31, 0x2b, 0x53, 0x2e, 0xb2, 0x1b, 0xf0, 0xd4, 0xb1, 0x39, + 0xcf, 0x6e, 0xc4, 0x53, 0xbf, 0xe3, 0xb2, 0x9b, 0xe4, 0x93, 0x35, 0xc1, 0x6e, 0xae, 0x23, 0x9b, + 0x1e, 0xc7, 0x0f, 0x04, 0xbb, 0xa5, 0xce, 0x64, 0xc6, 0xfc, 0x5e, 0xdf, 0x2b, 0x97, 0x3a, 0x3d, + 0x37, 0x67, 0x09, 0x76, 0x6b, 0x9d, 0xb9, 0xc8, 0x30, 0x3a, 0xf2, 0xf9, 0x8d, 0x6b, 0x1d, 0xd1, + 0xe1, 0xda, 0xec, 0xb6, 0x3a, 0x0a, 0xa9, 0x80, 0xf5, 0x3e, 0xbb, 0x3d, 0xaa, 0xf0, 0x3d, 0xcf, + 0x67, 0x77, 0xc8, 0xb8, 0xc2, 0x66, 0x77, 0xd6, 0x99, 0xf3, 0x29, 0xaf, 0xb6, 0xcd, 0x37, 0xb3, + 0xbb, 0x60, 0x27, 0x1b, 0x83, 0x5e, 0x89, 0xfd, 0x11, 0x76, 0xb2, 0x9d, 0xb1, 0x8a, 0x25, 0xf6, + 0x27, 0x68, 0x8f, 0x58, 0x3e, 0x49, 0xef, 0xae, 0x33, 0x17, 0x18, 0x73, 0x47, 0x2c, 0x1f, 0xa2, + 0xbd, 0x75, 0xe6, 0x42, 0xa3, 0x66, 0xc4, 0xf2, 0x1d, 0xda, 0xce, 0xd8, 0xbe, 0x3a, 0xf3, 0x60, + 0x63, 0x01, 0xa5, 0xa9, 0x83, 0xf6, 0xdd, 0x8e, 0x7c, 0x9e, 0xdd, 0x53, 0x67, 0x9a, 0xc6, 0x42, + 0x82, 0xd6, 0x8f, 0x7e, 0x9f, 0xe7, 0x04, 0x61, 0xf7, 0xd6, 0x99, 0x49, 0xe3, 0x90, 0x8e, 0x52, + 0xc9, 0xf7, 0x26, 0x90, 0x12, 0x3d, 0x65, 0xd8, 0x7d, 0xe0, 0x32, 0xe4, 0x6d, 0x19, 0x28, 0x17, + 0x47, 0xb9, 0xcf, 0x76, 0xac, 0x34, 0xe7, 0x19, 0xb3, 0x87, 0x2c, 0x77, 0x13, 0xdb, 0xb9, 0x92, + 0x44, 0x5d, 0xdc, 0x0d, 0x38, 0xda, 0xbb, 0x56, 0x52, 0xe8, 0xce, 0x72, 0x11, 0xbb, 0x29, 0xdb, + 0xbd, 0x92, 0x12, 0x34, 0xc8, 0xfd, 0x1c, 0x77, 0x05, 0x14, 0xf6, 0xac, 0xa4, 0xf4, 0x0d, 0x08, + 0xa7, 0xc0, 0xd9, 0x95, 0xf0, 0xd3, 0xc7, 0x2d, 0x9b, 0x5d, 0xb5, 0x92, 0xb2, 0xd0, 0x67, 0xe5, + 0xd9, 0xd5, 0x2b, 0xa9, 0xa3, 0xc8, 0x2f, 0x06, 0x8e, 0x5d, 0x83, 0x10, 0x7d, 0x96, 0x6e, 0x5f, + 0x8b, 0x10, 0x03, 0x62, 0x5c, 0x36, 0xaf, 0x83, 0x7e, 0x65, 0xa5, 0x61, 0xe7, 0x0e, 0xac, 0x7e, + 0x6d, 0xd4, 0x58, 0x18, 0x5b, 0x7b, 0xcc, 0x45, 0xc6, 0xfc, 0x61, 0x37, 0x28, 0xf1, 0x1c, 0xad, + 0xc4, 0x36, 0x9b, 0x41, 0xc5, 0xd9, 0x69, 0x05, 0x22, 0xed, 0x8a, 0x8e, 0x20, 0xed, 0x0a, 0x96, + 0xa0, 0xe2, 0x0c, 0x91, 0x21, 0x6e, 0x15, 0xd8, 0x4c, 0xf3, 0x10, 0x63, 0x51, 0x08, 0xa9, 0x7a, + 0x9f, 0x65, 0x2e, 0x36, 0x58, 0x08, 0xea, 0xd2, 0x9e, 0x1d, 0xb3, 0x46, 0x81, 0xce, 0xa1, 0x8a, + 0xac, 0x28, 0xea, 0x8a, 0x3f, 0x28, 0xa6, 0x89, 0xda, 0x9d, 0xab, 0x21, 0x8a, 0x2a, 0xd9, 0x18, + 0xa6, 0x69, 0xd4, 0x56, 0x20, 0xd0, 0x99, 0xaf, 0x23, 0x4b, 0x4c, 0xf1, 0x59, 0xa0, 0xc3, 0x48, + 0x54, 0x13, 0x5a, 0x18, 0x77, 0x00, 0x46, 0xb5, 0xe6, 0x52, 0xc3, 0x8c, 0xa8, 0x6a, 0x4a, 0x8b, + 0xe2, 0xba, 0xe0, 0xc4, 0x74, 0x30, 0xe5, 0x50, 0xd2, 0x5a, 0xac, 0x83, 0x85, 0x28, 0x98, 0x2d, + 0x31, 0xeb, 0x8c, 0x43, 0x62, 0xb0, 0x22, 0xb7, 0xd4, 0x4c, 0x1a, 0x8b, 0x63, 0x02, 0xcd, 0xaf, + 0x6e, 0x8a, 0x27, 0x50, 0x4c, 0x9a, 0xcb, 0x8c, 0x25, 0x71, 0x03, 0xcd, 0x72, 0xd9, 0x14, 0x0b, + 0x10, 0x5d, 0xae, 0x07, 0x49, 0x86, 0x94, 0x3c, 0x57, 0x68, 0xf6, 0x1a, 0x04, 0xcd, 0x95, 0xba, + 0xff, 0x1a, 0x55, 0x2c, 0xeb, 0x35, 0x7d, 0x8d, 0x6b, 0x92, 0x0d, 0xd5, 0x6e, 0xc0, 0x71, 0x95, + 0xee, 0x54, 0xa8, 0xae, 0x29, 0x36, 0x56, 0xeb, 0x83, 0xe1, 0x97, 0xf5, 0xf0, 0x92, 0xb5, 0xe4, + 0xd7, 0xac, 0x33, 0x2e, 0x21, 0xb0, 0xfb, 0x8a, 0x36, 0x96, 0x98, 0xe2, 0xb6, 0x5a, 0xf7, 0x5a, + 0xa2, 0x9a, 0xd9, 0x57, 0xe3, 0x0e, 0xc0, 0xeb, 0xdf, 0x74, 0xf7, 0x94, 0xaa, 0x66, 0xf5, 0xb5, + 0xb8, 0x2e, 0x38, 0xb5, 0x84, 0xc9, 0x54, 0x5a, 0x92, 0x57, 0xab, 0x76, 0x51, 0x81, 0xc1, 0xed, + 0x88, 0x70, 0x1c, 0x43, 0x5c, 0xf1, 0x3b, 0x32, 0x1c, 0xb0, 0x50, 0xa2, 0x39, 0x7e, 0x7d, 0xaa, + 0x33, 0xf0, 0x6c, 0x33, 0x97, 0x1b, 0x4b, 0xab, 0x4c, 0x34, 0xd7, 0xf6, 0xa9, 0x36, 0xe0, 0xfb, + 0x0d, 0x9d, 0x43, 0xac, 0x62, 0xe0, 0xfa, 0x2d, 0xdd, 0x2d, 0x09, 0x81, 0xe7, 0x7f, 0xe8, 0x1c, + 0x4a, 0x4c, 0x71, 0xfc, 0xb6, 0xee, 0xac, 0x44, 0x35, 0xbf, 0xef, 0xc4, 0x1d, 0x80, 0xdb, 0x7f, + 0xea, 0xf8, 0x4a, 0x55, 0xf3, 0xea, 0x88, 0xeb, 0x82, 0xd3, 0x5a, 0x5a, 0xda, 0x3a, 0x3d, 0xab, + 0xc0, 0x83, 0x1c, 0x27, 0x46, 0xaf, 0xd6, 0xd3, 0x3a, 0xab, 0x11, 0x10, 0x7a, 0xad, 0xde, 0x5c, + 0x6c, 0x2c, 0xd2, 0x90, 0x8e, 0xfc, 0x7a, 0xbd, 0x79, 0x88, 0x51, 0xab, 0x51, 0xc5, 0xf2, 0x8d, + 0x98, 0x35, 0xd8, 0xbc, 0x59, 0x6f, 0x2e, 0x31, 0x58, 0x68, 0xad, 0xc9, 0xfc, 0x3d, 0xa6, 0x09, + 0x2e, 0xff, 0xa8, 0xa7, 0x6d, 0xb8, 0x2f, 0x4b, 0x34, 0x6c, 0xda, 0x9d, 0xfb, 0xb2, 0x88, 0xcf, + 0x69, 0x97, 0xec, 0xcb, 0x56, 0x76, 0xe0, 0x05, 0x46, 0x4d, 0x5f, 0x56, 0x45, 0xcc, 0x4b, 0x45, + 0x84, 0x1a, 0x37, 0x6b, 0x0d, 0xa3, 0x2f, 0x1b, 0xc6, 0x70, 0xa4, 0x0c, 0xce, 0xbf, 0x0f, 0xdf, + 0xdd, 0xe4, 0xdb, 0x05, 0xdc, 0x0d, 0xdf, 0x1e, 0x7c, 0x77, 0x6b, 0xdf, 0x25, 0xf8, 0xee, 0x56, + 0xbe, 0x8f, 0x96, 0x8a, 0xf0, 0xed, 0xc3, 0x77, 0x77, 0xe8, 0x3b, 0x90, 0x32, 0xf8, 0x16, 0xe4, + 0xbb, 0x17, 0xbc, 0x27, 0x08, 0xee, 0x95, 0xbc, 0x27, 0xc9, 0x77, 0x6f, 0xc8, 0xfb, 0x18, 0xf2, + 0xdd, 0xab, 0x79, 0xff, 0x40, 0x2a, 0xc2, 0xf7, 0xff, 0x90, 0xef, 0xde, 0x0a, 0xef, 0x1f, 0x4a, + 0x19, 0x7c, 0xff, 0xaf, 0xdc, 0x9c, 0xb9, 0x25, 0x38, 0x96, 0x5b, 0xf6, 0x01, 0x12, 0xa7, 0x11, + 0x04, 0xfa, 0x10, 0x03, 0xa4, 0x21, 0x1d, 0xef, 0x23, 0x0c, 0x90, 0x46, 0x55, 0xd8, 0x8f, 0x63, + 0xd6, 0x88, 0xfe, 0x49, 0x3d, 0x6d, 0x45, 0x7d, 0x5c, 0x2e, 0xe7, 0xec, 0xd3, 0x7a, 0xec, 0x54, + 0x5c, 0x2d, 0xa5, 0xec, 0x33, 0x58, 0xa0, 0xad, 0x3d, 0x7f, 0x5e, 0x4f, 0xa4, 0x00, 0x29, 0xb7, + 0xff, 0xaa, 0x18, 0xc1, 0xe7, 0xb1, 0x0d, 0xa4, 0x91, 0x76, 0x05, 0xf7, 0x37, 0x5b, 0x05, 0x72, + 0x7b, 0x5c, 0x03, 0xb9, 0xd1, 0x08, 0x3c, 0x1f, 0xdf, 0x40, 0xbb, 0x68, 0x2f, 0xc6, 0xe4, 0xf8, + 0x04, 0x1d, 0x04, 0x7a, 0xe5, 0xa0, 0x9c, 0x80, 0x13, 0x4e, 0x6f, 0x38, 0x2a, 0x27, 0x26, 0x88, + 0x61, 0xaf, 0x1e, 0x96, 0x93, 0x94, 0x2e, 0x22, 0x9d, 0x9c, 0xa0, 0x9d, 0xb3, 0xb7, 0x32, 0x30, + 0xa7, 0x28, 0x29, 0xb2, 0x77, 0x2a, 0xce, 0x46, 0xdd, 0x1b, 0x28, 0xc4, 0x99, 0x10, 0x74, 0x6f, + 0x40, 0x88, 0xb3, 0x10, 0xa2, 0x7b, 0x83, 0x0e, 0x71, 0x36, 0x42, 0x74, 0x6f, 0x50, 0x21, 0xce, + 0x51, 0xba, 0x08, 0x71, 0x2e, 0x42, 0x74, 0x6f, 0x08, 0x43, 0x9c, 0xa7, 0xa4, 0x08, 0x71, 0x3e, + 0x42, 0x0c, 0xa0, 0x17, 0x5b, 0x21, 0x18, 0x90, 0xbd, 0x90, 0xe7, 0xb4, 0x81, 0xb0, 0x17, 0xdb, + 0x10, 0x62, 0x40, 0xf7, 0xe2, 0x22, 0xa5, 0x8b, 0x10, 0x17, 0x23, 0xc4, 0x40, 0xa5, 0x17, 0x97, + 0x28, 0x29, 0x42, 0x5c, 0x2a, 0x3d, 0x95, 0x0b, 0x05, 0xd9, 0x93, 0xed, 0x52, 0x1b, 0x6d, 0x84, + 0xda, 0x91, 0xa0, 0x93, 0x90, 0x04, 0x74, 0xb8, 0x9d, 0x74, 0x18, 0x58, 0x20, 0x31, 0x15, 0x72, + 0x57, 0xc4, 0x0e, 0x61, 0x77, 0x27, 0xa8, 0x44, 0x94, 0x9d, 0x0e, 0xbd, 0x27, 0xa2, 0x85, 0xf0, + 0x57, 0x82, 0xf8, 0x60, 0xa1, 0x2c, 0xd7, 0xa7, 0xbd, 0x09, 0x1c, 0x87, 0x0a, 0xe5, 0x70, 0x11, + 0xda, 0x97, 0xa0, 0x83, 0x1b, 0x21, 0xc4, 0xee, 0x5e, 0xb0, 0xed, 0x77, 0x5c, 0xa5, 0x7f, 0x1f, + 0x88, 0xa0, 0xad, 0x0d, 0xee, 0x87, 0x47, 0x40, 0x64, 0xf1, 0x17, 0xa9, 0x51, 0x2e, 0x08, 0xa7, + 0x54, 0x98, 0x84, 0xd1, 0x03, 0x09, 0x2a, 0x69, 0x0d, 0x69, 0xbb, 0x07, 0x11, 0x5a, 0xa3, 0x64, + 0xfa, 0x57, 0x90, 0xed, 0x72, 0x36, 0x3b, 0xb6, 0x5c, 0xac, 0x1e, 0x42, 0x2a, 0x24, 0xa0, 0xcd, + 0x1e, 0x4e, 0xa8, 0xda, 0x93, 0x30, 0xd9, 0x3d, 0x92, 0xa0, 0x55, 0x29, 0x84, 0xb4, 0xe6, 0xa3, + 0xe8, 0x49, 0xbf, 0x67, 0xc3, 0xd7, 0x63, 0x70, 0xde, 0xef, 0xd9, 0x5a, 0xfc, 0x38, 0x46, 0xa5, + 0xdf, 0xb3, 0xc9, 0xc5, 0xfe, 0x04, 0x1d, 0x35, 0x23, 0x64, 0x86, 0xdd, 0xc0, 0xc9, 0xbb, 0xdc, + 0x66, 0x4f, 0x24, 0xcc, 0x43, 0x8d, 0x3a, 0x95, 0x0f, 0x8d, 0x86, 0xd2, 0x27, 0x13, 0xe6, 0x72, + 0x63, 0x49, 0x95, 0x34, 0x23, 0x65, 0x4f, 0x45, 0x65, 0x99, 0xb8, 0xdd, 0xd3, 0x88, 0x17, 0x93, + 0x29, 0xab, 0x67, 0x12, 0xe6, 0x97, 0x8c, 0xa5, 0x92, 0xd6, 0x94, 0x70, 0xcf, 0x26, 0xcc, 0x65, + 0xc6, 0xe2, 0xb8, 0x50, 0xd9, 0x3d, 0x17, 0x11, 0x55, 0x05, 0x7b, 0x3e, 0x61, 0xd6, 0x19, 0x66, + 0x54, 0xa4, 0x6c, 0x0e, 0x24, 0xcc, 0xc3, 0x8c, 0xa4, 0x1e, 0xba, 0x29, 0xd1, 0x5e, 0x90, 0x54, + 0xaa, 0xc4, 0xca, 0xf6, 0xc5, 0x98, 0xb0, 0x2a, 0xe2, 0x4b, 0x92, 0x4c, 0x4c, 0xa8, 0xec, 0xfe, + 0x96, 0x30, 0x1b, 0x8d, 0x15, 0x5a, 0xd4, 0xe3, 0xf9, 0xb9, 0x8a, 0x5d, 0x68, 0xff, 0x72, 0xc2, + 0x6c, 0x30, 0x0e, 0x9d, 0x5e, 0x49, 0xf9, 0x79, 0x65, 0x1a, 0x95, 0x2a, 0x16, 0xaf, 0x42, 0x25, + 0x5a, 0x2a, 0x53, 0x02, 0xbd, 0x96, 0x30, 0x57, 0x1a, 0xcb, 0xa7, 0x53, 0x51, 0x61, 0x5e, 0x47, + 0x8a, 0xa2, 0x0a, 0xb1, 0xde, 0xbc, 0x31, 0xc5, 0xbe, 0x8a, 0xc3, 0x9b, 0xa8, 0xb2, 0x8e, 0x51, + 0xcc, 0x8d, 0xdf, 0x32, 0xaa, 0xc8, 0x8e, 0xd1, 0x60, 0x98, 0x5a, 0xbf, 0xd3, 0x2d, 0xd4, 0xe7, + 0xef, 0x19, 0x5e, 0xc3, 0x46, 0xc3, 0x79, 0xf5, 0x07, 0x86, 0x4d, 0x95, 0x3b, 0xb4, 0xe4, 0x66, + 0xbd, 0x2e, 0x9e, 0x63, 0xd7, 0xc7, 0x21, 0x72, 0x72, 0x43, 0x08, 0x75, 0xf1, 0x9c, 0x84, 0x6e, + 0x8c, 0x43, 0x64, 0x78, 0x13, 0xc3, 0x4b, 0x10, 0x77, 0xe4, 0x62, 0x7d, 0x33, 0xa3, 0x79, 0xd5, + 0x53, 0xf0, 0x3c, 0x3f, 0xf4, 0x7d, 0x4b, 0x15, 0x46, 0x9e, 0x6e, 0xad, 0x60, 0xa1, 0xf7, 0xdb, + 0xaa, 0x30, 0xb2, 0xbd, 0x9d, 0xd1, 0x2a, 0x01, 0x0c, 0xfe, 0xef, 0x60, 0xf2, 0xf5, 0xac, 0xec, + 0xca, 0xb9, 0xb7, 0x0f, 0xe1, 0xd1, 0x26, 0x17, 0xf7, 0x54, 0x9a, 0x64, 0x7d, 0x2f, 0x33, 0x97, + 0x1a, 0x07, 0xa3, 0x79, 0x94, 0x23, 0xc6, 0x7b, 0x7c, 0x2b, 0x27, 0xd7, 0x1a, 0x46, 0xd3, 0x3a, + 0x86, 0x93, 0xf5, 0xfd, 0x53, 0x61, 0xf2, 0xf2, 0x67, 0x64, 0xb3, 0xcf, 0xcb, 0x1f, 0xde, 0xe1, + 0xe7, 0xd9, 0x43, 0x08, 0xd1, 0xe7, 0xe5, 0x5b, 0x3b, 0xfc, 0x7c, 0xc0, 0x1e, 0x66, 0x78, 0xaf, + 0xf3, 0xf2, 0xad, 0xec, 0x11, 0x46, 0x4b, 0x3c, 0xe9, 0xad, 0x61, 0x8f, 0x32, 0xf5, 0xda, 0x68, + 0xb3, 0xc7, 0x18, 0x55, 0x2c, 0x3d, 0x92, 0xd3, 0x0c, 0xe7, 0x36, 0x5e, 0xf8, 0x7a, 0xb9, 0xcb, + 0x1e, 0x67, 0xf4, 0x26, 0x38, 0xe8, 0x6d, 0x61, 0xfb, 0xa1, 0xdf, 0xe9, 0xb9, 0x9b, 0xd9, 0x13, + 0x70, 0xd3, 0x39, 0xd4, 0x79, 0x44, 0x2b, 0x7b, 0x12, 0x30, 0x0d, 0x3c, 0x7b, 0x4a, 0x3e, 0x1e, + 0xed, 0x0b, 0xf6, 0x34, 0x1e, 0x3b, 0x72, 0x5e, 0xc0, 0x9e, 0x91, 0x8f, 0x81, 0xe3, 0xb2, 0x67, + 0x41, 0xac, 0x43, 0x58, 0x2e, 0x78, 0x3e, 0x87, 0x4c, 0x51, 0x53, 0x12, 0x7d, 0x1e, 0xb1, 0x3a, + 0xbd, 0x80, 0x1d, 0x50, 0x4f, 0x82, 0xbd, 0x80, 0x9e, 0x75, 0xf1, 0xbc, 0xcf, 0x79, 0xc0, 0x5e, + 0x04, 0xde, 0x3d, 0x51, 0x62, 0x2f, 0x31, 0x73, 0xae, 0x31, 0x73, 0x30, 0xcd, 0xfe, 0x06, 0x85, + 0x21, 0xcb, 0x76, 0x2c, 0x37, 0x60, 0x2f, 0x43, 0x21, 0xe3, 0xb8, 0xec, 0x15, 0x3c, 0x65, 0x2d, + 0x97, 0xbd, 0xca, 0x68, 0xad, 0xcd, 0xfa, 0x65, 0x37, 0x67, 0x09, 0xac, 0x99, 0xaf, 0xa1, 0x48, + 0x34, 0x82, 0x7c, 0xbf, 0x4e, 0xaf, 0x58, 0x8b, 0x34, 0xa4, 0xcb, 0xf0, 0x8d, 0x98, 0xe2, 0xb0, + 0xe3, 0x0a, 0xf6, 0x26, 0x4a, 0xb5, 0xcf, 0xcb, 0x3b, 0x39, 0xab, 0xd0, 0xe1, 0xda, 0xec, 0xb2, + 0x24, 0x4e, 0x0c, 0x12, 0x58, 0xef, 0xb3, 0xcb, 0x93, 0x11, 0x85, 0xef, 0x79, 0x3e, 0xbb, 0x22, + 0x49, 0xf1, 0x87, 0x5d, 0xcb, 0x9f, 0x1c, 0xf0, 0x70, 0x32, 0xd9, 0x9e, 0xa4, 0x60, 0x1a, 0xd1, + 0xc1, 0x76, 0x24, 0x29, 0x98, 0x46, 0xc1, 0x6a, 0x67, 0x0c, 0xfa, 0x6e, 0x66, 0xfd, 0x00, 0xdb, + 0x95, 0xa4, 0x12, 0x04, 0x14, 0x6e, 0x3b, 0xbb, 0x93, 0xb4, 0xfb, 0x55, 0x30, 0xd8, 0xee, 0x49, + 0x52, 0x65, 0x55, 0x40, 0x1d, 0xe6, 0x4a, 0x38, 0x50, 0xad, 0x74, 0x80, 0x3b, 0xa7, 0xab, 0xe0, + 0x40, 0x6f, 0x9c, 0x0a, 0xbc, 0x1a, 0x1d, 0x21, 0x5f, 0x0a, 0xb8, 0x06, 0x6c, 0xe4, 0x16, 0xac, + 0xa0, 0x6b, 0xa1, 0x43, 0x5b, 0xb0, 0x02, 0xae, 0x43, 0x36, 0xd2, 0xae, 0x50, 0xed, 0x9f, 0x40, + 0x81, 0x76, 0x5f, 0x05, 0xfc, 0x14, 0x0a, 0xf2, 0x3a, 0x26, 0xe3, 0xe4, 0xd9, 0xcf, 0x92, 0x54, + 0x13, 0xb8, 0x8d, 0xa1, 0xe6, 0xcf, 0xb5, 0xf8, 0x7b, 0x1e, 0xda, 0xbf, 0xd0, 0xed, 0x01, 0x9e, + 0xa7, 0xf6, 0x2f, 0x2b, 0xfe, 0xb3, 0x7e, 0x99, 0xb3, 0x5f, 0x45, 0x48, 0x02, 0xf8, 0x75, 0xbc, + 0x7b, 0xc0, 0x7e, 0x03, 0x25, 0x18, 0xf5, 0x58, 0x85, 0x80, 0xb3, 0xdf, 0x62, 0x48, 0xa4, 0x95, + 0x44, 0x7e, 0x27, 0x33, 0xa0, 0xcd, 0x24, 0xf8, 0x7b, 0x39, 0xb4, 0x7c, 0x4c, 0x64, 0xc6, 0x9d, + 0x31, 0xc1, 0xae, 0x97, 0xc1, 0x9c, 0xfc, 0xb8, 0x02, 0x6e, 0x40, 0x8e, 0x43, 0x36, 0x34, 0x7b, + 0xd0, 0xc9, 0x3f, 0x25, 0x69, 0xd3, 0xa9, 0xb0, 0x0a, 0x05, 0x77, 0x27, 0x69, 0x5b, 0x8c, 0xb1, + 0x0b, 0x65, 0x7b, 0x61, 0x54, 0x61, 0x19, 0x0a, 0xf6, 0x25, 0x69, 0xbf, 0x8c, 0xb0, 0x0d, 0x25, + 0xf7, 0x24, 0x69, 0x1f, 0x8a, 0xb3, 0x0e, 0x85, 0xf7, 0xea, 0xcc, 0xca, 0x1b, 0xb5, 0x3f, 0xa0, + 0x87, 0xbd, 0x5c, 0x0c, 0x5a, 0xbe, 0x55, 0x54, 0x07, 0xa9, 0x1b, 0x93, 0x38, 0x63, 0x72, 0x31, + 0x62, 0xf9, 0xec, 0x26, 0x34, 0x86, 0xbc, 0x2d, 0x94, 0xe8, 0x9b, 0xd1, 0xc8, 0x48, 0xc9, 0x2d, + 0x48, 0x2a, 0x6e, 0x78, 0xc2, 0x3a, 0xba, 0x15, 0xfe, 0x14, 0xa6, 0x8f, 0x5c, 0xb7, 0x25, 0xc3, + 0x2b, 0x3e, 0x54, 0xe6, 0xed, 0xc8, 0x98, 0x6c, 0xa3, 0x7c, 0xef, 0x88, 0x00, 0x28, 0xd3, 0x3b, + 0x51, 0x54, 0x12, 0x50, 0xa4, 0xee, 0x8a, 0xe8, 0xe0, 0x74, 0xf7, 0xc7, 0x24, 0xad, 0x37, 0x69, + 0x97, 0x3c, 0xee, 0x58, 0x49, 0xbc, 0xd2, 0xae, 0x9c, 0x1f, 0x2b, 0x65, 0x35, 0x68, 0x4e, 0xf2, + 0xbe, 0x2b, 0xed, 0x2a, 0x47, 0xbb, 0x95, 0x2e, 0x9c, 0xec, 0x59, 0x29, 0x8b, 0x20, 0xe4, 0x7a, + 0xa5, 0x92, 0xe2, 0x68, 0x78, 0x95, 0xf4, 0x34, 0x46, 0x99, 0xa3, 0x30, 0x27, 0xd5, 0x43, 0x1b, + 0x6d, 0x84, 0x3a, 0xb9, 0x9e, 0x52, 0x20, 0x01, 0x1d, 0xee, 0x14, 0xbc, 0x51, 0x48, 0x4c, 0x85, + 0x3c, 0x35, 0x62, 0x87, 0xb0, 0xa7, 0xe1, 0xe5, 0x45, 0xd9, 0xe9, 0xd0, 0xa7, 0xd7, 0xa3, 0x43, + 0x63, 0x14, 0xe9, 0x8c, 0x7a, 0xd0, 0x18, 0x43, 0x94, 0x33, 0xeb, 0x25, 0x0d, 0x1d, 0xe1, 0x2c, + 0xbc, 0xd2, 0xa4, 0xc7, 0x94, 0xf7, 0xb3, 0x95, 0x2e, 0x3c, 0x9f, 0xa3, 0x42, 0x85, 0x5e, 0xcf, + 0x8d, 0xc4, 0x46, 0xa7, 0xce, 0x53, 0xea, 0xf2, 0x78, 0x8f, 0x77, 0x9d, 0x4e, 0x2b, 0xe0, 0x47, + 0x8d, 0x73, 0xa4, 0xf2, 0x2d, 0xf9, 0xe6, 0xaa, 0x10, 0xc4, 0x7f, 0x5b, 0xbe, 0x21, 0x2b, 0x48, + 0xb3, 0xf8, 0xa7, 0x7c, 0x43, 0x56, 0xa8, 0xe2, 0xf2, 0x4e, 0xcc, 0x1a, 0x8c, 0xde, 0x95, 0x6f, + 0xc8, 0xda, 0x5a, 0xf3, 0x7a, 0x2f, 0xa6, 0x09, 0x32, 0xef, 0x83, 0x6a, 0x07, 0xaa, 0xc9, 0x9f, + 0x2c, 0x09, 0x76, 0x41, 0xa3, 0x02, 0xba, 0x5d, 0x09, 0x6c, 0x6d, 0xc4, 0xae, 0xed, 0x15, 0xf1, + 0x0d, 0x85, 0x5d, 0xd8, 0x88, 0x1b, 0xdf, 0xae, 0xaf, 0xb3, 0x6d, 0x10, 0x0c, 0x5a, 0x41, 0xb0, + 0xc5, 0xf3, 0x6d, 0x76, 0x51, 0x23, 0xa6, 0xb2, 0xe5, 0xda, 0x5e, 0x51, 0x5e, 0x7c, 0x5f, 0xdc, + 0x88, 0x6d, 0x68, 0x5d, 0xc7, 0xe1, 0xec, 0x12, 0xfd, 0xd8, 0xca, 0x2e, 0x45, 0x80, 0x61, 0x37, + 0xa7, 0x3d, 0x5e, 0xd6, 0x48, 0xd3, 0xad, 0x02, 0x70, 0xbb, 0x8f, 0xbb, 0x79, 0x31, 0xce, 0x2e, + 0x6f, 0x24, 0xba, 0x15, 0x6e, 0xe9, 0x11, 0x76, 0x85, 0x86, 0x14, 0xbb, 0xf4, 0x08, 0xdb, 0xde, + 0x88, 0x57, 0x27, 0x37, 0xe7, 0xd9, 0x9c, 0xed, 0x40, 0xa3, 0x8b, 0xa3, 0xb1, 0x13, 0x54, 0x33, + 0xfd, 0x47, 0xb0, 0x5d, 0xa0, 0xda, 0x65, 0x09, 0x6b, 0xd4, 0x0a, 0x38, 0xbb, 0xa6, 0x11, 0x27, + 0x05, 0x9c, 0x0c, 0xbc, 0x2d, 0x01, 0xbb, 0x16, 0xd4, 0x3b, 0xcb, 0xbe, 0xcf, 0x5d, 0x31, 0x1c, + 0x70, 0x9f, 0x5d, 0x07, 0xbe, 0x78, 0xfc, 0x49, 0xa3, 0xbc, 0x56, 0x70, 0x5d, 0x8e, 0x0f, 0x1b, + 0xe9, 0x2e, 0xf6, 0x53, 0x40, 0x7d, 0x78, 0xbd, 0x0d, 0xb8, 0x2f, 0xd2, 0x5d, 0xec, 0x67, 0xe8, + 0x44, 0x14, 0xa2, 0xe9, 0x9f, 0xee, 0x62, 0x3f, 0x6f, 0xc4, 0x15, 0xb4, 0xfc, 0x50, 0xc7, 0x7e, + 0x81, 0x48, 0xf2, 0x42, 0x5e, 0x22, 0xbf, 0x6c, 0x94, 0xc7, 0x90, 0x2d, 0x72, 0x71, 0xf8, 0x55, + 0x23, 0x15, 0x64, 0xa6, 0xc0, 0x79, 0x89, 0xdd, 0xdd, 0x28, 0xcf, 0x0b, 0xb9, 0x4d, 0x6c, 0xaf, + 0x4c, 0x2e, 0x2f, 0x70, 0x2b, 0xe0, 0x40, 0xf6, 0x35, 0x52, 0x81, 0xe8, 0x4b, 0x3f, 0x77, 0x52, + 0xde, 0xfa, 0xde, 0xd3, 0x48, 0x03, 0x1f, 0xde, 0x12, 0x69, 0xf8, 0xde, 0x46, 0xf5, 0xf2, 0x1c, + 0x22, 0xf7, 0xa1, 0x0b, 0xb4, 0x12, 0x84, 0xd0, 0xfd, 0x80, 0x70, 0xd9, 0xa9, 0xa1, 0x3f, 0x37, + 0x52, 0xbd, 0xa9, 0x6b, 0x3b, 0x0d, 0xfe, 0x05, 0x7a, 0xb8, 0x35, 0xd3, 0xd0, 0x03, 0x8d, 0x72, + 0xba, 0x73, 0xd1, 0x21, 0x3c, 0x97, 0x3d, 0x18, 0x36, 0x07, 0x84, 0x67, 0xb1, 0xbf, 0x36, 0xca, + 0xc5, 0x81, 0x8b, 0x36, 0x88, 0x1f, 0xaa, 0xb4, 0x21, 0x7f, 0x18, 0x83, 0x96, 0x0e, 0xd2, 0x83, + 0x9b, 0x8f, 0x64, 0x8f, 0xc0, 0xbb, 0x6c, 0x50, 0xd1, 0x59, 0x82, 0x3d, 0x1a, 0x81, 0xfa, 0xad, + 0x52, 0x89, 0xdb, 0xec, 0xb1, 0x8a, 0x49, 0x1b, 0x7b, 0x5c, 0x0e, 0xd6, 0x70, 0xba, 0x8b, 0xed, + 0x47, 0x71, 0x8d, 0x38, 0x82, 0x07, 0xc1, 0x3a, 0x2b, 0x18, 0x67, 0x4f, 0x28, 0x45, 0x48, 0x9f, + 0x44, 0x60, 0xca, 0x7e, 0x66, 0xdc, 0xf2, 0x6d, 0xf6, 0x54, 0x63, 0xf8, 0x9d, 0xc2, 0x71, 0xb1, + 0xab, 0x3d, 0x2d, 0x99, 0x17, 0x9c, 0x4d, 0x9c, 0x9a, 0x8f, 0x34, 0xe0, 0x38, 0xa7, 0x5a, 0x8f, + 0x36, 0xe0, 0x40, 0xc9, 0xf3, 0x7c, 0xa2, 0x44, 0xed, 0xc7, 0x1a, 0x68, 0x25, 0x92, 0xed, 0xe1, + 0x6c, 0xcf, 0x37, 0x08, 0x7b, 0x3c, 0x82, 0x69, 0xbb, 0xfd, 0x0d, 0x38, 0x5a, 0x86, 0x98, 0xd6, + 0x7d, 0xa2, 0x81, 0xb2, 0x2b, 0x71, 0x2c, 0x95, 0x04, 0x3e, 0xd9, 0x20, 0x77, 0xac, 0x10, 0xd4, + 0xda, 0x4f, 0x35, 0xe0, 0xc4, 0x09, 0xc1, 0x10, 0x2f, 0x15, 0xac, 0x1c, 0x9c, 0x3f, 0xdd, 0x80, + 0x23, 0x63, 0x14, 0xd6, 0x16, 0xcf, 0x34, 0x50, 0x89, 0x28, 0xbe, 0xe5, 0xd1, 0x40, 0x06, 0x78, + 0xb6, 0x41, 0x6e, 0x62, 0x15, 0x54, 0xeb, 0x3f, 0x07, 0x3e, 0xb4, 0x2c, 0x74, 0x4f, 0x08, 0xdf, + 0xca, 0xd1, 0x5b, 0x04, 0x3b, 0xad, 0x49, 0x83, 0xc3, 0xee, 0xd1, 0x65, 0x4f, 0x20, 0xe8, 0xe9, + 0x4d, 0x94, 0x38, 0x02, 0xb3, 0x93, 0x25, 0x20, 0x67, 0x34, 0xe9, 0xe3, 0x45, 0x86, 0xc3, 0xee, + 0xcc, 0x26, 0xfd, 0x29, 0x45, 0x4e, 0x08, 0xc2, 0xce, 0x0a, 0x7d, 0x45, 0x3a, 0x70, 0x76, 0xa8, + 0x38, 0xc4, 0x8b, 0xde, 0x66, 0x60, 0xe7, 0x34, 0xe9, 0x4f, 0x33, 0xfd, 0xdc, 0xcf, 0x03, 0x3a, + 0xb7, 0x29, 0xfe, 0x69, 0x86, 0xb0, 0xf3, 0x9a, 0x62, 0x5f, 0x70, 0x08, 0x3a, 0xbf, 0x89, 0xb2, + 0x44, 0xd0, 0x88, 0x55, 0x70, 0x6c, 0x10, 0x72, 0xf2, 0xec, 0x47, 0x4d, 0x94, 0x0a, 0x6a, 0x75, + 0x7a, 0xae, 0xb0, 0x1c, 0x37, 0x20, 0xf4, 0xc7, 0x4d, 0x94, 0xeb, 0xca, 0x17, 0xa0, 0x52, 0x89, + 0xcb, 0xb3, 0xd0, 0x05, 0x71, 0x41, 0xa5, 0x07, 0x5b, 0x9b, 0x68, 0x28, 0x43, 0x62, 0x83, 0x96, + 0xc8, 0x8d, 0x13, 0x7e, 0x61, 0x13, 0x8d, 0x42, 0x05, 0xf7, 0x79, 0xc0, 0x7d, 0xd9, 0x97, 0x6d, + 0x4d, 0x94, 0xef, 0x68, 0xe8, 0x41, 0x4b, 0xc0, 0xe8, 0xa2, 0xb0, 0x4b, 0x83, 0x3e, 0x17, 0x02, + 0xfc, 0x2f, 0x0e, 0xbb, 0xb4, 0x41, 0x27, 0xfb, 0x92, 0x50, 0x2d, 0xc3, 0x2d, 0x5f, 0xc6, 0xbb, + 0x34, 0x24, 0x98, 0x11, 0x9e, 0x6f, 0x51, 0x8a, 0x8e, 0x81, 0xf2, 0x65, 0xa1, 0x7d, 0x17, 0x2f, + 0xc9, 0x30, 0x97, 0x87, 0x83, 0xf5, 0x5f, 0x7c, 0x12, 0xfd, 0xbe, 0x22, 0xf4, 0x28, 0x57, 0x5a, + 0xc2, 0xb6, 0x87, 0x89, 0x23, 0x2d, 0xbc, 0x07, 0x10, 0xbc, 0x23, 0x0c, 0x84, 0x7c, 0xca, 0xa5, + 0x80, 0x04, 0x3b, 0xe3, 0x82, 0xf5, 0x62, 0x9c, 0xfb, 0xb0, 0xd8, 0x55, 0x4d, 0xad, 0xc7, 0xe7, + 0xa0, 0xb6, 0x3b, 0x1c, 0x83, 0x7e, 0x5e, 0x1c, 0xe5, 0xfe, 0xfa, 0x31, 0x42, 0xf7, 0x80, 0xf0, + 0x08, 0xcf, 0x75, 0x04, 0x59, 0x3e, 0x81, 0x24, 0xbf, 0x8f, 0x32, 0x19, 0xe1, 0xb9, 0x1e, 0xdf, + 0x2b, 0x6a, 0xf0, 0x03, 0x14, 0xd8, 0x08, 0xcf, 0x75, 0x39, 0x45, 0xc4, 0xf9, 0x10, 0x84, 0x47, + 0x78, 0xae, 0xef, 0x70, 0xfd, 0x0b, 0x15, 0x82, 0x3f, 0x0a, 0xe1, 0xd6, 0x28, 0xfc, 0x71, 0x13, + 0xbd, 0x22, 0x8f, 0xf0, 0xdc, 0x00, 0xcf, 0x5b, 0xc2, 0xd9, 0xcc, 0xd3, 0xae, 0xcb, 0xfd, 0x41, + 0xdf, 0xb3, 0xcb, 0xb2, 0x96, 0x3e, 0xc1, 0x08, 0x8e, 0xf0, 0x5c, 0xa7, 0x17, 0x38, 0x2e, 0x8f, + 0xda, 0x7e, 0xaa, 0x29, 0xf6, 0xb5, 0x0e, 0x78, 0x7e, 0x91, 0xa0, 0xcf, 0x9a, 0xcc, 0x15, 0xc6, + 0xb2, 0xe8, 0x37, 0x8d, 0xf8, 0x07, 0xd6, 0x9b, 0x9a, 0xe9, 0x3c, 0x48, 0xf2, 0x18, 0x2e, 0xaf, + 0xe8, 0x6f, 0x6e, 0x36, 0x0f, 0x35, 0xea, 0xa6, 0x11, 0x62, 0xe7, 0xbf, 0xa5, 0x59, 0xbb, 0xae, + 0x92, 0xaa, 0xed, 0xfe, 0xd6, 0x66, 0xea, 0xc9, 0x34, 0x72, 0x7d, 0x48, 0xb8, 0xed, 0x8b, 0xdc, + 0xe3, 0x68, 0x70, 0x7b, 0xb3, 0x59, 0x6f, 0x7c, 0x69, 0x3a, 0x73, 0x7d, 0x4a, 0xb8, 0xe3, 0x8b, + 0xec, 0x71, 0x60, 0xb8, 0xb3, 0xd9, 0xfc, 0x7f, 0x46, 0xfd, 0x34, 0xd2, 0x78, 0x02, 0xee, 0x6a, + 0xa6, 0x89, 0x32, 0x58, 0x28, 0x57, 0xe1, 0x17, 0x34, 0xe3, 0x16, 0x88, 0xde, 0x83, 0xe2, 0x82, + 0xad, 0xcd, 0x74, 0x20, 0xd7, 0x77, 0x5f, 0x71, 0xd9, 0x85, 0x90, 0xc5, 0xe3, 0xe9, 0xad, 0x67, + 0x1b, 0x64, 0xfa, 0xd6, 0x3f, 0x6e, 0x77, 0x51, 0x33, 0x55, 0x5c, 0x5f, 0x36, 0x8e, 0x5e, 0x2c, + 0xd1, 0xee, 0x38, 0x7a, 0x09, 0xd0, 0xde, 0x2a, 0xdd, 0x4b, 0xe1, 0x5d, 0x5f, 0x6e, 0xc7, 0x65, + 0x97, 0xa1, 0x2b, 0xb8, 0xa1, 0x8e, 0x0b, 0x2e, 0x97, 0xae, 0xaa, 0x02, 0x5c, 0x01, 0xb4, 0x7b, + 0x43, 0x1c, 0xdd, 0x0e, 0x74, 0xa0, 0x4a, 0x77, 0x47, 0x33, 0xad, 0x19, 0xf2, 0xc2, 0x34, 0x2e, + 0xd9, 0x09, 0x49, 0x0c, 0x53, 0xef, 0x73, 0xbb, 0xa6, 0x93, 0xe0, 0xad, 0x6b, 0x77, 0xb3, 0x2a, + 0xed, 0xa8, 0x44, 0xbe, 0x58, 0xed, 0x41, 0x35, 0x4c, 0x63, 0x14, 0xbe, 0xbc, 0x5c, 0xd9, 0x6c, + 0x36, 0x18, 0x87, 0x4e, 0x67, 0x1c, 0xaa, 0x5c, 0x85, 0xc8, 0xf2, 0xb8, 0x1b, 0x67, 0x7b, 0x35, + 0x7a, 0x97, 0x1e, 0x8b, 0xa3, 0xd7, 0xc8, 0x21, 0x53, 0xc7, 0xd0, 0xb8, 0xec, 0xda, 0x66, 0x9a, + 0x6b, 0xfa, 0xa7, 0x50, 0x47, 0xd1, 0xc1, 0xf2, 0x41, 0xe4, 0x79, 0xea, 0xaf, 0xa3, 0xd8, 0x5f, + 0x9b, 0x69, 0x9d, 0xd0, 0x82, 0x41, 0x9f, 0x8f, 0x39, 0x13, 0xec, 0xa1, 0x18, 0x28, 0xb7, 0x39, + 0xf6, 0x70, 0x33, 0xde, 0x45, 0x2d, 0xc1, 0x7b, 0x3c, 0xbf, 0x68, 0x61, 0xc2, 0xbf, 0xdd, 0x42, + 0xcb, 0x22, 0x61, 0x7d, 0x8e, 0xe0, 0x3e, 0x9d, 0xae, 0x5b, 0xd4, 0x29, 0x91, 0x77, 0x39, 0x63, + 0x63, 0xec, 0x9d, 0x16, 0x7d, 0xdd, 0x4d, 0x13, 0x07, 0xd0, 0xbb, 0x2d, 0x44, 0x85, 0x9a, 0x72, + 0x32, 0x86, 0x82, 0xf7, 0x5a, 0xf0, 0xfe, 0xa7, 0xa6, 0x50, 0x95, 0xf0, 0xfd, 0x16, 0xf3, 0x30, + 0x23, 0xa9, 0x85, 0xfa, 0x6f, 0x28, 0xfe, 0x00, 0x4e, 0x2b, 0x36, 0xa1, 0xe0, 0x43, 0x38, 0x95, + 0x82, 0x29, 0x56, 0x1f, 0xb5, 0xd0, 0xa0, 0xaa, 0xf5, 0x38, 0x1e, 0xef, 0xe3, 0x16, 0x5a, 0x02, + 0xb5, 0xab, 0x10, 0xfe, 0xa4, 0x85, 0x8e, 0x49, 0xd4, 0x3d, 0xf6, 0x29, 0x1e, 0xd7, 0x79, 0x65, + 0x9f, 0x7d, 0xd6, 0x82, 0x0b, 0x68, 0xc7, 0x2d, 0x0b, 0xce, 0x3e, 0x6f, 0x91, 0xef, 0x9a, 0x39, + 0xcf, 0xb5, 0xd9, 0xbf, 0x90, 0xa0, 0x7e, 0x27, 0xe7, 0x7b, 0x0a, 0x39, 0x36, 0x45, 0x87, 0xd3, + 0x7e, 0xcf, 0x15, 0xe3, 0xec, 0xb8, 0x14, 0xee, 0xe4, 0xe9, 0x79, 0xc0, 0x2a, 0x72, 0x76, 0x7c, + 0x0a, 0x77, 0xfc, 0xde, 0x16, 0x2a, 0x8b, 0x0e, 0x3f, 0xcf, 0x4e, 0x48, 0xe1, 0x0b, 0x82, 0x04, + 0xbc, 0xb2, 0x20, 0xec, 0xc4, 0x14, 0x2e, 0x91, 0xac, 0x49, 0x98, 0x9c, 0x04, 0x93, 0x2e, 0x6b, + 0x72, 0xfd, 0x98, 0xf4, 0x79, 0x32, 0x7c, 0x02, 0x38, 0x8a, 0xf3, 0x4d, 0xec, 0x94, 0x4a, 0xfb, + 0xbf, 0xb9, 0xe5, 0xb3, 0x53, 0x53, 0x34, 0x22, 0x24, 0x22, 0x9f, 0xfd, 0x74, 0xc6, 0x3f, 0x2d, + 0x45, 0x15, 0xa6, 0x21, 0xaf, 0x2c, 0x80, 0x9e, 0x8e, 0x38, 0x84, 0x76, 0x59, 0x93, 0xec, 0x0c, + 0xc4, 0xa1, 0x96, 0xf2, 0x73, 0x66, 0x8a, 0xba, 0x8f, 0xc7, 0xb3, 0x52, 0x94, 0x2b, 0x7a, 0x8c, + 0xb9, 0x3d, 0x3b, 0x45, 0x25, 0x1d, 0x85, 0xb5, 0xeb, 0x73, 0xc0, 0xa9, 0x97, 0x0b, 0x59, 0x49, + 0xec, 0xdc, 0x14, 0x8e, 0xc8, 0x93, 0x01, 0x25, 0x16, 0x57, 0x81, 0x41, 0x89, 0x9d, 0x97, 0xa2, + 0xd5, 0x2f, 0x02, 0x7a, 0x65, 0x41, 0xf8, 0xf9, 0xa9, 0xc8, 0x8b, 0x06, 0x46, 0xe2, 0x47, 0xe0, + 0xaf, 0x10, 0x1a, 0xaa, 0x35, 0x94, 0xa7, 0x1f, 0x57, 0xa3, 0xb8, 0xa6, 0xbb, 0x00, 0xb4, 0xb1, + 0x8a, 0x6f, 0x4d, 0xc9, 0xf7, 0x88, 0x62, 0x58, 0xbc, 0x17, 0xa2, 0xcb, 0xc3, 0xd9, 0x4e, 0xb8, + 0xdd, 0x06, 0xfe, 0xc3, 0xd9, 0x4e, 0x52, 0x09, 0x84, 0x55, 0x2c, 0xe9, 0x61, 0xb9, 0x28, 0x45, + 0x45, 0x55, 0x2d, 0x51, 0xe3, 0x73, 0x31, 0x84, 0x1d, 0xb6, 0x4d, 0x4e, 0x04, 0x4e, 0xf8, 0x76, + 0xe5, 0x03, 0x52, 0x8a, 0x2a, 0x2e, 0x2e, 0x54, 0x7b, 0xd2, 0xa5, 0x08, 0xd7, 0x61, 0xdb, 0x28, + 0x36, 0x4b, 0xa0, 0xe8, 0xb0, 0x36, 0x5c, 0xa6, 0x8d, 0xf4, 0x4b, 0x44, 0xc5, 0xdf, 0xe5, 0x29, + 0xaa, 0xfb, 0xa8, 0x48, 0x79, 0xbb, 0x02, 0xd9, 0x53, 0xde, 0x24, 0x06, 0x5f, 0xdb, 0x43, 0x76, + 0xe1, 0xfb, 0x4d, 0xc5, 0xdb, 0x8e, 0x90, 0x5d, 0x45, 0xa8, 0xfc, 0xed, 0x8c, 0xb1, 0x53, 0x62, + 0xb9, 0x66, 0x6a, 0x0a, 0xc4, 0x39, 0xea, 0x6d, 0x37, 0xca, 0xa2, 0x22, 0x50, 0x9e, 0xf6, 0x80, + 0x41, 0xa6, 0x3c, 0x3a, 0x5d, 0x7e, 0xae, 0x04, 0x83, 0xb8, 0x50, 0xd9, 0x5d, 0x05, 0x06, 0x99, + 0xf2, 0xe8, 0x94, 0xfc, 0x5c, 0xad, 0x8d, 0xa6, 0xe6, 0xe7, 0x1a, 0x90, 0x8b, 0x8a, 0x94, 0xb7, + 0x6b, 0x65, 0x75, 0x49, 0x6f, 0x91, 0xfc, 0x5c, 0x17, 0xb2, 0x9b, 0x26, 0x3f, 0x3f, 0x09, 0xd9, + 0x4d, 0xc9, 0xcf, 0x4f, 0x63, 0xec, 0xa2, 0xf9, 0xf9, 0x99, 0xa6, 0x50, 0x9d, 0x9f, 0x9f, 0x23, + 0x3f, 0x15, 0x81, 0xf2, 0xf4, 0x0b, 0x04, 0x19, 0x76, 0x9d, 0x89, 0xb0, 0xba, 0x54, 0x11, 0xb3, + 0x5f, 0xc2, 0x22, 0x26, 0xa2, 0xb3, 0xd0, 0xaf, 0xa6, 0xc2, 0x5d, 0x3c, 0xc7, 0x7e, 0x9d, 0x92, + 0xbf, 0x48, 0x73, 0x37, 0x73, 0x5f, 0x64, 0x8f, 0x61, 0xbf, 0x49, 0xe1, 0xf3, 0x9e, 0xb5, 0x09, + 0xd9, 0x63, 0xbf, 0x0d, 0x9b, 0x98, 0x0d, 0xbf, 0x83, 0xf6, 0x20, 0xf7, 0x1d, 0xcf, 0xee, 0xb0, + 0x6d, 0xf6, 0x7b, 0x4c, 0x78, 0xd9, 0xc6, 0xd2, 0xf7, 0x07, 0x4c, 0x8e, 0x0d, 0x65, 0xcb, 0x17, + 0xdc, 0x67, 0xd7, 0x43, 0x3d, 0xc3, 0x73, 0x59, 0x0f, 0xe6, 0x37, 0xa4, 0xe4, 0x6b, 0x61, 0x91, + 0x67, 0x69, 0xa5, 0x63, 0x37, 0xa6, 0xf4, 0x0b, 0x2e, 0xf8, 0x90, 0xc7, 0x9b, 0x52, 0xb4, 0x30, + 0x66, 0xbd, 0x2e, 0x6b, 0x32, 0x60, 0x37, 0x4b, 0x7d, 0xb5, 0x2a, 0x06, 0xec, 0x16, 0x2c, 0x01, + 0x6a, 0x4a, 0xe9, 0x79, 0x76, 0x2b, 0x06, 0x29, 0x02, 0xaa, 0x29, 0x76, 0x1b, 0x96, 0xc5, 0xd0, + 0x39, 0x26, 0xf6, 0xed, 0x70, 0x10, 0x62, 0xf2, 0x12, 0xfe, 0x8e, 0x94, 0x5e, 0xc5, 0x01, 0xea, + 0x79, 0x7e, 0x27, 0xba, 0xd2, 0x67, 0x05, 0x82, 0x96, 0xb6, 0xbb, 0xe0, 0x2d, 0x23, 0x7c, 0xa2, + 0x26, 0x64, 0x72, 0xfe, 0x28, 0xcb, 0x23, 0x8a, 0x51, 0x35, 0xb2, 0x3f, 0x55, 0xe1, 0x7a, 0x2c, + 0xef, 0x46, 0x20, 0x3a, 0x6b, 0xeb, 0x61, 0x00, 0xa9, 0xbd, 0x53, 0x60, 0xe2, 0xc5, 0xf6, 0x61, + 0x69, 0x52, 0x2f, 0x88, 0xa1, 0xef, 0x7b, 0x62, 0xa8, 0xf6, 0x7c, 0xaf, 0x9e, 0x78, 0xa4, 0x17, + 0xdd, 0xaa, 0xd8, 0x7d, 0xd1, 0xf9, 0xa5, 0x2e, 0xb2, 0x5d, 0xc1, 0xee, 0x8f, 0x2e, 0x31, 0x6a, + 0xe3, 0x53, 0xa7, 0xda, 0x3f, 0x47, 0x2d, 0xd2, 0xae, 0xfe, 0x99, 0xc0, 0x5f, 0x90, 0x80, 0x0a, + 0x4c, 0x5e, 0x1e, 0x48, 0xd1, 0xf9, 0x42, 0x61, 0x9a, 0xa2, 0xd2, 0x7f, 0x30, 0x3a, 0xe3, 0xb5, + 0x0c, 0x9f, 0x7d, 0xf5, 0x24, 0x98, 0xc2, 0xf5, 0xa1, 0x68, 0xad, 0x57, 0xb8, 0x3e, 0x1c, 0x9d, + 0xee, 0x71, 0xae, 0x8f, 0x44, 0x2d, 0x2a, 0x5c, 0x1f, 0x95, 0x83, 0x15, 0xc2, 0xe4, 0xe5, 0x31, + 0x70, 0x55, 0x58, 0x15, 0xd7, 0xc7, 0xa3, 0xb3, 0x2f, 0xca, 0x75, 0x3f, 0xca, 0x9f, 0x86, 0x06, + 0xf5, 0xf8, 0x44, 0x4a, 0xdf, 0xfd, 0xab, 0x3d, 0xe9, 0xc9, 0x78, 0x8d, 0x61, 0x0a, 0x3c, 0xa5, + 0x17, 0x8d, 0x0a, 0x5d, 0xbc, 0x6e, 0x3c, 0x2d, 0xf7, 0xaf, 0x90, 0x14, 0xc0, 0x67, 0xa2, 0xca, + 0x69, 0x37, 0xfc, 0x32, 0xf2, 0x6c, 0x34, 0x49, 0x9a, 0x11, 0x2c, 0x9e, 0x8b, 0xae, 0x8c, 0x5a, + 0xa2, 0xcd, 0x9e, 0x8f, 0x75, 0x32, 0x76, 0x48, 0x62, 0x07, 0x62, 0x9d, 0xd4, 0x1f, 0x3e, 0x5c, + 0xc1, 0x5e, 0x88, 0xc5, 0x52, 0x02, 0xc4, 0x7a, 0x31, 0x16, 0x4b, 0x1f, 0xab, 0x54, 0xac, 0x97, + 0xf4, 0xe6, 0x51, 0xd5, 0xcf, 0xbf, 0xa1, 0x9f, 0x95, 0x42, 0x01, 0xf8, 0x72, 0x54, 0x39, 0xd2, + 0xcf, 0x57, 0xa2, 0x85, 0x1b, 0xeb, 0xe7, 0xab, 0xd1, 0x1d, 0xb2, 0xba, 0x9f, 0xaf, 0xc5, 0x0a, + 0x2f, 0xde, 0xcf, 0xd7, 0x63, 0x85, 0x17, 0xe9, 0xe7, 0x1b, 0xb1, 0x58, 0xd1, 0x7e, 0xbe, 0x19, + 0x8b, 0x55, 0xd5, 0xcf, 0xbf, 0xa7, 0xe8, 0x35, 0xb1, 0x6a, 0x1e, 0x52, 0x49, 0xa8, 0x78, 0xff, + 0x88, 0x76, 0x8d, 0xdc, 0x29, 0xfc, 0xad, 0x68, 0x1e, 0xf0, 0x29, 0xc3, 0x15, 0xec, 0x6d, 0x4c, + 0xdf, 0x08, 0x88, 0xf8, 0xff, 0x8c, 0x52, 0x26, 0x44, 0xc7, 0x7e, 0x27, 0x3a, 0x4d, 0x15, 0xa8, + 0xdc, 0xbf, 0x1b, 0x0d, 0xab, 0xbf, 0x87, 0xb8, 0x82, 0xbd, 0x17, 0xeb, 0xbe, 0xc4, 0x11, 0xe4, + 0xfd, 0x58, 0xce, 0xa4, 0x40, 0xc7, 0xf9, 0x20, 0x5a, 0x86, 0x91, 0x3e, 0x7c, 0x18, 0xad, 0x59, + 0xdd, 0x87, 0x8f, 0xd0, 0x87, 0x08, 0x08, 0xf7, 0x1f, 0x47, 0xcb, 0x2b, 0xda, 0x87, 0x4f, 0xa2, + 0xd3, 0x37, 0xde, 0x87, 0x4f, 0xa3, 0x61, 0x23, 0x7d, 0xf8, 0x2c, 0x56, 0xaa, 0x91, 0x3e, 0x7c, + 0x1e, 0xab, 0xef, 0x78, 0x1f, 0xfe, 0x95, 0x32, 0x57, 0x19, 0x87, 0x4d, 0x5b, 0x13, 0xe1, 0xea, + 0x79, 0xec, 0x1a, 0x7a, 0xa5, 0x9f, 0x5a, 0x1b, 0xa1, 0xc2, 0x71, 0x6b, 0xe8, 0x35, 0x6d, 0x9a, + 0x1a, 0x09, 0x35, 0x8e, 0x5f, 0x63, 0x36, 0x1a, 0x2b, 0xa6, 0xaf, 0x95, 0x50, 0xe9, 0x84, 0x35, + 0xc4, 0x65, 0xda, 0x79, 0x18, 0xea, 0x9c, 0x08, 0x2e, 0x53, 0xe7, 0x63, 0xa8, 0x70, 0x12, 0xb8, + 0x4c, 0x33, 0x2f, 0x43, 0x8d, 0x93, 0xc1, 0x65, 0xfa, 0xf9, 0x19, 0x2a, 0x9d, 0xb2, 0x46, 0x7d, + 0x4f, 0x54, 0x97, 0xfd, 0xfb, 0xdb, 0xcc, 0x1a, 0x63, 0xd6, 0x5a, 0xc7, 0x65, 0x4f, 0xb4, 0xd1, + 0x5b, 0x46, 0x47, 0xa6, 0x33, 0x9d, 0x66, 0x4f, 0xb6, 0xe1, 0x5b, 0xf7, 0xb8, 0xe5, 0xb3, 0xa7, + 0xda, 0xf0, 0xed, 0x63, 0xdc, 0xf2, 0xa5, 0xc5, 0x70, 0xb6, 0xe7, 0x1b, 0xec, 0xe9, 0x36, 0xda, + 0x97, 0xd5, 0x8f, 0xcc, 0x9f, 0x69, 0x93, 0x5f, 0x2a, 0xa8, 0x71, 0x54, 0x86, 0x3d, 0xdb, 0x46, + 0x3b, 0xa5, 0x3a, 0x43, 0xb0, 0xe7, 0xe0, 0xbf, 0xbb, 0x20, 0xd8, 0xf3, 0x6d, 0xb4, 0x3a, 0x76, + 0x4f, 0x94, 0x3c, 0x5f, 0x64, 0xb8, 0x38, 0x82, 0x76, 0xb5, 0x03, 0x71, 0xec, 0x48, 0xc2, 0x5e, + 0x88, 0x63, 0x5f, 0x27, 0xec, 0x45, 0x84, 0xc0, 0xff, 0x62, 0x50, 0x45, 0xbc, 0xd4, 0x86, 0x0f, + 0x09, 0xd4, 0x94, 0x8b, 0x4c, 0x1b, 0x1d, 0xcb, 0xd1, 0x56, 0xb5, 0xf4, 0xb2, 0xd2, 0x70, 0xed, + 0xb4, 0x9b, 0xe1, 0x82, 0xbd, 0x02, 0xc2, 0x6a, 0x9d, 0x7e, 0xb5, 0x0d, 0x5b, 0x2c, 0x1a, 0x74, + 0x44, 0xe8, 0xf3, 0x72, 0x56, 0x81, 0xb3, 0xd7, 0xda, 0xf0, 0x53, 0x6f, 0xdf, 0x2b, 0xae, 0xb5, + 0x02, 0xde, 0x76, 0x24, 0x7b, 0x1d, 0x4e, 0xd6, 0xf1, 0x89, 0xb4, 0x8b, 0x33, 0xc4, 0x1b, 0xba, + 0x9d, 0x11, 0x3e, 0xb5, 0xdf, 0x6c, 0x93, 0x5f, 0xd4, 0x02, 0xee, 0x0b, 0xa4, 0xe5, 0xef, 0x6d, + 0xf2, 0x8b, 0x1a, 0x01, 0xec, 0x1f, 0x6d, 0xf2, 0xba, 0x5d, 0xdd, 0xf4, 0xb2, 0xb7, 0xda, 0xe4, + 0x47, 0xbc, 0x40, 0xf8, 0xec, 0x6d, 0x3c, 0xf7, 0x65, 0x7d, 0xa7, 0xc8, 0xfe, 0xd9, 0x26, 0x7f, + 0xb5, 0x37, 0x26, 0x7d, 0xbc, 0xd3, 0x26, 0x7f, 0x85, 0x3e, 0x26, 0xd8, 0xbb, 0x70, 0xa7, 0x06, + 0xea, 0xbd, 0x36, 0x5c, 0x9f, 0x78, 0x39, 0x4b, 0xe0, 0x44, 0x10, 0x40, 0xfb, 0xfd, 0x08, 0x7a, + 0x44, 0x88, 0x7e, 0x80, 0x7c, 0x44, 0x74, 0xd9, 0x87, 0x11, 0x04, 0x7a, 0xec, 0x23, 0x49, 0xc1, + 0xdb, 0xc2, 0x7d, 0xf6, 0xb1, 0xa4, 0x50, 0xb2, 0x6c, 0x98, 0x7f, 0x22, 0x29, 0x94, 0x2c, 0x9b, + 0x7d, 0x8a, 0xc1, 0xa4, 0x13, 0x1f, 0x65, 0xf1, 0x33, 0x10, 0x5a, 0x9f, 0xc3, 0x16, 0xfa, 0x39, + 0xfa, 0xb7, 0x3e, 0x17, 0xfe, 0x72, 0x10, 0x23, 0xbd, 0xde, 0xb7, 0xd9, 0xb1, 0xed, 0xe4, 0x1a, + 0x17, 0xa9, 0xec, 0x38, 0x3c, 0x0f, 0xa1, 0xa7, 0xc7, 0xb7, 0xe3, 0xfb, 0x2a, 0x2f, 0x71, 0x4b, + 0xb0, 0x13, 0xda, 0xf1, 0xbb, 0x05, 0x79, 0x21, 0xcd, 0x4e, 0x6c, 0x97, 0x1f, 0x5a, 0x36, 0x73, + 0x3f, 0xc0, 0x45, 0x3a, 0x3b, 0x49, 0xc9, 0x81, 0xb0, 0x93, 0xdb, 0xf1, 0x0d, 0xc0, 0xc9, 0x8f, + 0xcb, 0x2c, 0x9d, 0x22, 0xdd, 0x52, 0x9b, 0x9d, 0xda, 0x8e, 0x4f, 0x39, 0x9a, 0xfd, 0x69, 0xed, + 0xf8, 0x5d, 0x07, 0xb1, 0x3f, 0x1d, 0x5a, 0x99, 0x12, 0x45, 0x38, 0xa3, 0x5d, 0xfe, 0x3b, 0x83, + 0x9f, 0x2b, 0x96, 0xd8, 0x99, 0xed, 0x6a, 0x49, 0x09, 0xc0, 0xbd, 0x92, 0xcf, 0xb3, 0xe2, 0x82, + 0x4a, 0x4a, 0xcf, 0x6e, 0x57, 0x6b, 0x5f, 0xc4, 0x82, 0x9d, 0x13, 0x07, 0x65, 0x62, 0xcf, 0x8d, + 0x83, 0x69, 0xd7, 0xe6, 0x13, 0xec, 0x3c, 0x70, 0xcc, 0x7a, 0xaa, 0xb2, 0xce, 0x97, 0x4d, 0xdf, + 0x29, 0xe2, 0xcc, 0xf7, 0x23, 0xf4, 0x8e, 0x9a, 0xd2, 0xef, 0x8f, 0xc3, 0xb6, 0x74, 0x79, 0x01, + 0xfa, 0x31, 0xec, 0xae, 0xe3, 0x13, 0x6c, 0x2b, 0x64, 0xc3, 0xa5, 0x12, 0x97, 0x65, 0x75, 0xa1, + 0x94, 0x51, 0x9b, 0x6d, 0x6b, 0xa7, 0x82, 0xac, 0xcc, 0x55, 0x76, 0x51, 0xbb, 0xfc, 0x6d, 0xc6, + 0x16, 0xa5, 0x7c, 0x71, 0x3b, 0x55, 0x7e, 0xf8, 0xfb, 0xd2, 0xf0, 0x15, 0xb3, 0xdd, 0x3c, 0xd4, + 0xa8, 0xd3, 0x70, 0x67, 0xb1, 0x14, 0xfb, 0x85, 0xf9, 0xa5, 0xed, 0x34, 0x21, 0xe5, 0xef, 0x46, + 0xb5, 0xc5, 0x65, 0xed, 0xb4, 0x8c, 0x03, 0xab, 0x56, 0xbf, 0x5c, 0x77, 0xd5, 0x71, 0x2d, 0x7f, + 0x92, 0x5d, 0xd1, 0x1e, 0xce, 0x2a, 0x09, 0x6c, 0xff, 0xa2, 0x60, 0x38, 0x45, 0xef, 0x98, 0xd6, + 0x31, 0x44, 0x3b, 0xdb, 0xa3, 0xbf, 0x78, 0x05, 0xb4, 0xab, 0x3d, 0xfc, 0xb5, 0x2a, 0xda, 0xbb, + 0xdb, 0x57, 0xff, 0x30, 0xfa, 0xcf, 0x92, 0xf8, 0x8f, 0x39, 0x73, 0xb9, 0xb1, 0xb4, 0x0a, 0x4a, + 0xbb, 0x9b, 0xad, 0x82, 0x63, 0xb3, 0x19, 0xe6, 0x32, 0x63, 0x49, 0x95, 0x2c, 0x33, 0xee, 0x95, + 0x0b, 0x36, 0x4b, 0x98, 0x75, 0xc6, 0x21, 0x55, 0xa2, 0xfe, 0x72, 0x20, 0xd8, 0xcc, 0x69, 0xfc, + 0x91, 0x60, 0xc0, 0x13, 0x6c, 0xd6, 0xea, 0xd3, 0x13, 0xb8, 0x33, 0xab, 0xfa, 0xdf, 0xbb, 0xb8, + 0x89, 0x46, 0x07, 0x3c, 0x97, 0xb3, 0x19, 0xe6, 0x97, 0x8c, 0xba, 0x69, 0xfe, 0x5b, 0xcf, 0xf3, + 0x02, 0xc1, 0x12, 0xe6, 0x61, 0xc6, 0xb2, 0xa9, 0xc2, 0x2e, 0x2e, 0xc5, 0x33, 0xcd, 0x43, 0x8d, + 0xe4, 0x34, 0x7e, 0x79, 0x9e, 0x92, 0x31, 0x6b, 0xf5, 0x0f, 0xa2, 0x5c, 0xf4, 0x3f, 0xaa, 0xc6, + 0xbb, 0x4c, 0x68, 0x25, 0x1b, 0x4b, 0xab, 0x0d, 0x70, 0x13, 0x98, 0x30, 0x93, 0xc6, 0xe2, 0x38, + 0x3e, 0x88, 0x7f, 0x51, 0x65, 0x33, 0xa7, 0x91, 0xc8, 0xfb, 0xc0, 0x59, 0xab, 0xb9, 0xb1, 0xa8, + 0xea, 0xff, 0xd2, 0xf0, 0x5f, 0x2e, 0x5e, 0xb1, 0x54, 0xe0, 0x82, 0xe3, 0x52, 0x67, 0x86, 0xb9, + 0x10, 0x8b, 0xb4, 0x55, 0x40, 0x33, 0x41, 0x0a, 0x83, 0x96, 0x2f, 0x1c, 0xab, 0x70, 0x38, 0x90, + 0x99, 0x11, 0xa4, 0x15, 0xc8, 0x2c, 0x32, 0xe9, 0xe2, 0x76, 0xb9, 0x84, 0xe6, 0xec, 0xb5, 0x5f, + 0xd9, 0x7b, 0x60, 0x45, 0xe2, 0x81, 0x03, 0x2b, 0x12, 0xcf, 0x1d, 0x58, 0x91, 0xd8, 0xf6, 0xc2, + 0x8a, 0x19, 0xc6, 0x92, 0x9c, 0x57, 0x6c, 0x29, 0x39, 0x6e, 0x3e, 0x67, 0x95, 0x5a, 0x84, 0x63, + 0x8f, 0xe2, 0xbf, 0xcf, 0x06, 0x13, 0xff, 0x17, 0x00, 0x00, 0xff, 0xff, 0x4c, 0xaf, 0x6c, 0xd5, + 0x10, 0x3d, 0x00, 0x00, } diff --git a/proto/expression.proto b/proto/expression.proto index ceb5f99f..94368981 100644 --- a/proto/expression.proto +++ b/proto/expression.proto @@ -818,6 +818,15 @@ message FTSBooleanQuery { optional bool innodb_ft_enable_stopword = 6 [(gogoproto.nullable) = false]; } +// Versioned Boolean MATCH metadata stored in Expr.val when Expr.sig is +// FTSMatchExpression. Expr.val is already the generic scalar-function +// metadata slot, so this avoids adding an FTS-specific field to Expr while +// keeping the SQL arguments in Expr.children unchanged. +message FTSMatchExpressionMetadata { + optional uint32 version = 1 [(gogoproto.nullable) = false]; + optional FTSBooleanQuery boolean_query = 2; +} + message FTSBooleanNode { optional FTSBooleanOccur occur = 1 [(gogoproto.nullable) = false]; optional FTSBooleanModifier modifier = 2 [(gogoproto.nullable) = false]; @@ -837,10 +846,6 @@ message Expr { optional bool has_distinct = 7 [(gogoproto.nullable) = false]; repeated ByItem order_by = 8; optional AggFunctionMode aggFuncMode = 9; - // Boolean MATCH metadata for scalar functions such as FTSMatchExpression. - // This is separate from children so query syntax/configuration cannot be - // mistaken for a MATCH document column. - optional FTSBooleanQuery fts_boolean_query = 10; } // Expression organized in RPN form. From e8441850c1aa4b2c20213575fd857be2400ce568 Mon Sep 17 00:00:00 2001 From: Zhigao TONG Date: Thu, 8 Oct 2026 12:42:22 +0800 Subject: [PATCH 07/12] tipb: add dedicated Boolean MATCH scalar signature --- go-tipb/executor.pb.go | 3 + go-tipb/expression.pb.go | 793 ++++++++++++++++++++------------------- proto/executor.proto | 3 + proto/expression.proto | 3 +- 4 files changed, 406 insertions(+), 396 deletions(-) diff --git a/go-tipb/executor.pb.go b/go-tipb/executor.pb.go index 809daff2..b0f448bd 100644 --- a/go-tipb/executor.pb.go +++ b/go-tipb/executor.pb.go @@ -1163,6 +1163,9 @@ func (m *ANNQueryInfo) GetHnswEfSearch() uint32 { return 0 } +// FTSQueryInfo describes a scan-level request to use a TiFlash full-text +// columnar index. It is separate from the FTSMatchBooleanExpression scalar +// function, which evaluates each row and does not consult an index. type FTSQueryInfo struct { QueryType FTSQueryType `protobuf:"varint,1,opt,name=query_type,json=queryType,enum=tipb.FTSQueryType" json:"query_type"` IndexId int64 `protobuf:"varint,2,opt,name=index_id,json=indexId" json:"index_id"` diff --git a/go-tipb/expression.pb.go b/go-tipb/expression.pb.go index c8e4dc08..a4e2fb06 100644 --- a/go-tipb/expression.pb.go +++ b/go-tipb/expression.pb.go @@ -627,10 +627,11 @@ const ( ScalarFuncSig_IfVectorFloat32 ScalarFuncSig = 5161 ScalarFuncSig_CaseWhenVectorFloat32 ScalarFuncSig = 5162 // fts - ScalarFuncSig_FTSMatchWord ScalarFuncSig = 5201 - ScalarFuncSig_FTSMatchExpression ScalarFuncSig = 5202 - ScalarFuncSig_FTSMatchPrefix ScalarFuncSig = 5203 - ScalarFuncSig_FTSMatchRegexp ScalarFuncSig = 5204 + ScalarFuncSig_FTSMatchWord ScalarFuncSig = 5201 + ScalarFuncSig_FTSMatchExpression ScalarFuncSig = 5202 + ScalarFuncSig_FTSMatchBooleanExpression ScalarFuncSig = 5206 + ScalarFuncSig_FTSMatchPrefix ScalarFuncSig = 5203 + ScalarFuncSig_FTSMatchRegexp ScalarFuncSig = 5204 // time ScalarFuncSig_DateFormatSig ScalarFuncSig = 6001 ScalarFuncSig_DateLiteral ScalarFuncSig = 6002 @@ -1269,6 +1270,7 @@ var ScalarFuncSig_name = map[int32]string{ 5162: "CaseWhenVectorFloat32", 5201: "FTSMatchWord", 5202: "FTSMatchExpression", + 5206: "FTSMatchBooleanExpression", 5203: "FTSMatchPrefix", 5204: "FTSMatchRegexp", 6001: "DateFormatSig", @@ -1906,6 +1908,7 @@ var ScalarFuncSig_value = map[string]int32{ "CaseWhenVectorFloat32": 5162, "FTSMatchWord": 5201, "FTSMatchExpression": 5202, + "FTSMatchBooleanExpression": 5206, "FTSMatchPrefix": 5203, "FTSMatchRegexp": 5204, "DateFormatSig": 6001, @@ -2491,7 +2494,7 @@ func (m *FTSBooleanQuery) GetInnodbFtEnableStopword() bool { } // Versioned Boolean MATCH metadata stored in Expr.val when Expr.sig is -// FTSMatchExpression. Expr.val is already the generic scalar-function +// FTSMatchBooleanExpression. Expr.val is already the generic scalar-function // metadata slot, so this avoids adding an FTS-specific field to Expr while // keeping the SQL arguments in Expr.children unchanged. type FTSMatchExpressionMetadata struct { @@ -4807,404 +4810,404 @@ var ( func init() { proto.RegisterFile("expression.proto", fileDescriptorExpression) } var fileDescriptorExpression = []byte{ - // 6372 bytes of a gzipped FileDescriptorProto + // 6383 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x74, 0x7b, 0x77, 0x78, 0x1b, 0xc7, - 0x99, 0xbe, 0xa0, 0x62, 0x51, 0x2b, 0x89, 0x1a, 0xaf, 0x25, 0x11, 0x52, 0x6c, 0x89, 0x14, 0xf3, - 0xfb, 0x91, 0x51, 0x2e, 0x84, 0x4c, 0x3b, 0x64, 0x9e, 0x5c, 0x2e, 0x39, 0x8a, 0x4d, 0xc8, 0x91, + 0x99, 0xbe, 0xa0, 0x62, 0x51, 0x2b, 0x89, 0x1a, 0xaf, 0x25, 0x11, 0x56, 0x6c, 0x89, 0x14, 0xf3, + 0xfb, 0x91, 0x51, 0x2e, 0x84, 0x4d, 0x3b, 0x64, 0x9e, 0x5c, 0x2e, 0x39, 0x8a, 0x4d, 0xc8, 0x91, 0x14, 0x45, 0x80, 0x74, 0xee, 0x2f, 0x3d, 0x4b, 0xec, 0x10, 0xdc, 0x08, 0xd8, 0x85, 0x77, 0x07, - 0x12, 0xe9, 0x5c, 0xee, 0x71, 0xef, 0x3d, 0xb1, 0x2c, 0x77, 0x55, 0xd7, 0xf4, 0xee, 0x5e, 0x13, + 0x14, 0xe9, 0x5c, 0xee, 0x71, 0xef, 0x3d, 0xb1, 0x2c, 0x77, 0x55, 0xd7, 0xf4, 0xee, 0x5e, 0x13, 0x4b, 0x2e, 0x89, 0x1d, 0x57, 0xb9, 0x5b, 0xb6, 0xe3, 0x9e, 0xd8, 0x71, 0xaf, 0xb9, 0xe7, 0x7b, 0x67, 0x66, 0xb1, 0x0b, 0xd2, 0x7f, 0x71, 0xe7, 0xfd, 0xda, 0x3b, 0xdf, 0x7c, 0x53, 0x76, 0x16, - 0x34, 0x18, 0x9f, 0x28, 0xf9, 0x3c, 0x08, 0x1c, 0xcf, 0x6d, 0x29, 0xf9, 0x9e, 0xf0, 0xcc, 0xd9, - 0xc2, 0x29, 0x8d, 0x2e, 0xaf, 0x2d, 0x72, 0x61, 0xd9, 0x96, 0xb0, 0x24, 0xba, 0x7c, 0x71, 0xde, - 0xcb, 0x7b, 0x78, 0x4c, 0xd1, 0x93, 0x44, 0x57, 0xbd, 0x99, 0x30, 0xe6, 0xf5, 0x38, 0xbc, 0x60, - 0x67, 0x27, 0x4b, 0xdc, 0x5c, 0x6c, 0xcc, 0x14, 0xa5, 0x64, 0xa2, 0x3e, 0xd1, 0x3c, 0x67, 0xed, - 0xec, 0xbd, 0xcf, 0xac, 0x9c, 0x31, 0x34, 0x53, 0x94, 0xcc, 0xa4, 0x31, 0x7b, 0xac, 0x60, 0xe5, - 0x93, 0x33, 0xeb, 0x13, 0xcd, 0x0b, 0x15, 0x0e, 0x44, 0x4a, 0xb8, 0x9b, 0x9c, 0x15, 0xb1, 0x00, - 0x62, 0xae, 0x30, 0xe6, 0xda, 0x3c, 0xe7, 0x14, 0xad, 0x42, 0x72, 0x76, 0x44, 0xa8, 0x41, 0x92, - 0xe7, 0xbc, 0x42, 0xc1, 0x12, 0x3c, 0x39, 0x27, 0x2a, 0x57, 0x20, 0xe4, 0xe3, 0x96, 0x1f, 0x70, - 0x91, 0x3c, 0xa8, 0x3e, 0xd1, 0x3c, 0x2f, 0x94, 0x4b, 0xd0, 0x5c, 0x6e, 0xcc, 0xe1, 0x05, 0x5e, - 0x0c, 0x92, 0x73, 0xeb, 0x67, 0x85, 0x52, 0x09, 0x91, 0xcc, 0xf2, 0x7d, 0x6b, 0x32, 0x59, 0x53, - 0x9f, 0x68, 0xae, 0xd1, 0x32, 0x40, 0xab, 0xb6, 0x26, 0x8c, 0xda, 0x9e, 0x6c, 0x66, 0xad, 0xe7, - 0x15, 0xb8, 0xe5, 0x66, 0xb9, 0x5f, 0x34, 0xff, 0xdd, 0x98, 0x27, 0xb8, 0x5f, 0xdc, 0x28, 0x26, - 0x4b, 0x1c, 0x7d, 0xaf, 0x6d, 0x4d, 0xb6, 0x50, 0x0a, 0x5b, 0xe2, 0x8a, 0x94, 0x21, 0xe5, 0xac, - 0x46, 0xa8, 0x36, 0x65, 0x40, 0xf0, 0x09, 0x81, 0xdc, 0x68, 0x1a, 0x40, 0xcc, 0xaf, 0x19, 0x8b, + 0x34, 0x18, 0x9f, 0x2c, 0xf9, 0x3c, 0x08, 0x1c, 0xcf, 0x6d, 0x29, 0xf9, 0x9e, 0xf0, 0xcc, 0xb9, + 0xc2, 0x29, 0x8d, 0xae, 0xa8, 0x2d, 0x72, 0x61, 0xd9, 0x96, 0xb0, 0x24, 0xba, 0x62, 0x69, 0xde, + 0xcb, 0x7b, 0x78, 0x4c, 0xd1, 0x93, 0x44, 0x57, 0xbf, 0x99, 0x30, 0x16, 0xf4, 0x38, 0xbc, 0x60, + 0x67, 0xa7, 0x4a, 0xdc, 0x5c, 0x6a, 0xcc, 0x16, 0xa5, 0x64, 0xa2, 0x3e, 0xd1, 0x3c, 0x6f, 0xed, + 0xdc, 0x3d, 0xcf, 0xac, 0x9a, 0x35, 0x34, 0x5b, 0x94, 0xcc, 0xa4, 0x31, 0x77, 0xac, 0x60, 0xe5, + 0x93, 0xb3, 0xeb, 0x13, 0xcd, 0x8b, 0x15, 0x0e, 0x44, 0x4a, 0xb8, 0x9b, 0x9c, 0x13, 0xb1, 0x00, + 0x62, 0xae, 0x34, 0xe6, 0xdb, 0x3c, 0xe7, 0x14, 0xad, 0x42, 0x72, 0x6e, 0x44, 0xa8, 0x41, 0x92, + 0xe7, 0xbc, 0x42, 0xc1, 0x12, 0x3c, 0x39, 0x2f, 0x2a, 0x57, 0x20, 0xe4, 0xe3, 0x96, 0x1f, 0x70, + 0x91, 0x3c, 0xa0, 0x3e, 0xd1, 0xbc, 0x20, 0x94, 0x4b, 0xd0, 0x5c, 0x61, 0xcc, 0xe3, 0x05, 0x5e, + 0x0c, 0x92, 0xf3, 0xeb, 0xe7, 0x84, 0x52, 0x09, 0x91, 0xcc, 0xf2, 0x7d, 0x6b, 0x2a, 0x59, 0x53, + 0x9f, 0x68, 0xae, 0xd1, 0x32, 0x40, 0xab, 0xb7, 0x24, 0x8c, 0xda, 0x9e, 0x6c, 0x66, 0xad, 0xe7, + 0x15, 0xb8, 0xe5, 0x66, 0xb9, 0x5f, 0x34, 0xff, 0xdd, 0x58, 0x20, 0xb8, 0x5f, 0xdc, 0x28, 0xa6, + 0x4a, 0x1c, 0x7d, 0xaf, 0x6d, 0x4d, 0xb6, 0x50, 0x0a, 0x5b, 0xe2, 0x8a, 0x94, 0x21, 0xe5, 0xac, + 0x46, 0xa8, 0x36, 0x65, 0x40, 0xf0, 0x49, 0x81, 0xdc, 0x68, 0x1a, 0x40, 0xcc, 0xaf, 0x19, 0x4b, 0x4a, 0xe3, 0xbe, 0x15, 0xf0, 0x8d, 0xb6, 0x13, 0x08, 0xcb, 0xcd, 0x71, 0xa4, 0x49, 0x27, 0xb0, - 0x56, 0x0a, 0xbb, 0x94, 0x6c, 0xd5, 0xfe, 0x99, 0xc6, 0xa2, 0x4a, 0xbc, 0x0d, 0x65, 0xee, 0x4f, - 0x9a, 0xab, 0x8d, 0x39, 0xae, 0x67, 0xf3, 0x20, 0x99, 0xa8, 0x9f, 0xd5, 0x3c, 0xbf, 0x75, 0x71, + 0x56, 0x0a, 0xbb, 0x94, 0x6c, 0xf5, 0xbe, 0xd9, 0xc6, 0x92, 0x4a, 0xbc, 0x0d, 0x65, 0xee, 0x4f, + 0x99, 0x6b, 0x8c, 0x79, 0xae, 0x67, 0xf3, 0x20, 0x99, 0xa8, 0x9f, 0xd3, 0xbc, 0xb0, 0x75, 0x69, 0x35, 0xab, 0x01, 0xcf, 0xe6, 0x43, 0x52, 0x85, 0xc2, 0x1d, 0x4d, 0x46, 0x1b, 0x85, 0xb7, 0x89, 0xbb, 0xce, 0x31, 0xdc, 0x8f, 0x71, 0xaa, 0x85, 0x30, 0xab, 0x65, 0x66, 0x8b, 0xc1, 0xdc, 0xbc, 0x6f, 0x15, 0xa5, 0xfa, 0xc6, 0xc0, 0x39, 0xa6, 0x8a, 0x1e, 0xa4, 0xd0, 0xcf, 0x38, 0xc7, 0x70, 0xf3, 0x5b, 0x46, 0xd2, 0x71, 0x5d, 0xcf, 0x1e, 0xdd, 0x38, 0x26, 0x36, 0x16, 0x1d, 0x37, 0x6a, - 0x37, 0x3b, 0x62, 0xb7, 0x58, 0x6a, 0xf5, 0x88, 0x7e, 0xc7, 0xfd, 0x22, 0x6b, 0x6b, 0x22, 0x6a, - 0x3d, 0x67, 0x5a, 0x6b, 0x6b, 0xa2, 0x62, 0xfd, 0x1d, 0x63, 0x59, 0xc5, 0x9a, 0xbb, 0xd6, 0x68, - 0x81, 0x6f, 0x0c, 0x84, 0x57, 0xda, 0xe2, 0xf9, 0x36, 0xaa, 0x43, 0x8f, 0xf1, 0x52, 0x6d, 0xde, - 0x0d, 0xa5, 0x8c, 0xd2, 0x59, 0x35, 0x61, 0x2c, 0xef, 0xc9, 0x66, 0xfa, 0x2d, 0x91, 0x1b, 0xef, - 0x0e, 0x27, 0x4b, 0xbf, 0x9a, 0x1e, 0x54, 0x6a, 0x9b, 0xb9, 0x4f, 0x10, 0x46, 0x5f, 0x73, 0xd1, - 0xa0, 0xf9, 0x4d, 0x63, 0xe1, 0xa8, 0xcc, 0xf7, 0x46, 0x24, 0x11, 0x79, 0x9d, 0xdf, 0xba, 0xa4, - 0x7a, 0x34, 0x30, 0x66, 0x43, 0x0b, 0x46, 0x23, 0xad, 0x55, 0xef, 0xc4, 0xca, 0x8d, 0xc6, 0xcb, - 0x3c, 0xdc, 0x98, 0xe3, 0xe5, 0x72, 0x65, 0x5f, 0x95, 0xda, 0x14, 0x37, 0xeb, 0x49, 0xa8, 0x8b, - 0x16, 0x9a, 0xe6, 0x37, 0x8d, 0x9a, 0xa2, 0x67, 0x3b, 0x63, 0x8e, 0x1a, 0xd4, 0x69, 0x0a, 0xb4, - 0x5f, 0xc9, 0x75, 0x81, 0x6a, 0x7d, 0x73, 0x35, 0x15, 0xa8, 0x5f, 0xc4, 0xe0, 0x4e, 0x53, 0x42, + 0x37, 0x37, 0x62, 0xb7, 0x54, 0x6a, 0xf5, 0x88, 0x7e, 0xc7, 0xfd, 0x22, 0x6b, 0x6b, 0x32, 0x6a, + 0x3d, 0x6f, 0x46, 0x6b, 0x6b, 0xb2, 0x62, 0xfd, 0x1d, 0xe3, 0xe0, 0x8a, 0x35, 0x77, 0xad, 0xd1, + 0x02, 0xdf, 0x18, 0x08, 0xaf, 0xb4, 0xd9, 0xf3, 0x6d, 0x54, 0x87, 0x1e, 0xe3, 0xe5, 0xda, 0xbc, + 0x1b, 0x4a, 0x19, 0xa5, 0xb3, 0x7a, 0xd2, 0x58, 0xd1, 0x93, 0xcd, 0xf4, 0x5b, 0x22, 0x37, 0xde, + 0x1d, 0x4e, 0x96, 0x7e, 0x35, 0x3d, 0xa8, 0xd4, 0x26, 0xb8, 0x4f, 0x10, 0x46, 0x5f, 0x73, 0xd1, + 0xa0, 0xf9, 0x4d, 0x63, 0xf1, 0xa8, 0xcc, 0xf7, 0x46, 0x24, 0x11, 0x79, 0x5d, 0xd8, 0xba, 0xac, + 0x7a, 0x34, 0x30, 0x66, 0x43, 0x8b, 0x46, 0x23, 0xad, 0xd5, 0xef, 0xc4, 0xca, 0x8d, 0xc6, 0xcb, + 0x3c, 0xdc, 0x98, 0xe7, 0xe5, 0x72, 0x65, 0x5f, 0x95, 0xda, 0x34, 0x37, 0xeb, 0x49, 0xa8, 0x8b, + 0x16, 0x9a, 0xe6, 0x37, 0x8d, 0x9a, 0xa2, 0x67, 0x3b, 0x63, 0x8e, 0x1a, 0xd4, 0x19, 0x0a, 0xb4, + 0x5f, 0xc9, 0x75, 0x81, 0x6a, 0x7d, 0x73, 0x0d, 0x15, 0xa8, 0x5f, 0xc4, 0xe0, 0xce, 0x50, 0x42, 0x54, 0xd8, 0xeb, 0x50, 0xb2, 0x7e, 0xd1, 0xfc, 0xb6, 0x51, 0x1b, 0x94, 0x47, 0x37, 0x56, 0x16, - 0x14, 0x0c, 0xed, 0x17, 0x75, 0x75, 0xdd, 0x8c, 0xa1, 0x85, 0x41, 0x79, 0xb4, 0x92, 0xd1, 0xb5, - 0x07, 0x19, 0xb3, 0xa9, 0x18, 0x57, 0xbd, 0x35, 0xd3, 0x98, 0x4d, 0xb0, 0xf9, 0xe5, 0x70, 0x3d, - 0xa9, 0x6d, 0xad, 0x95, 0x4e, 0x08, 0x8f, 0xcc, 0x24, 0x5a, 0x5f, 0x98, 0x31, 0x6b, 0xb3, 0x55, - 0x40, 0xcf, 0x16, 0x0c, 0xd1, 0xa3, 0xf9, 0xff, 0x8d, 0x9a, 0xdc, 0xb8, 0x53, 0xb0, 0x7d, 0xac, - 0x2d, 0x54, 0xfb, 0x46, 0xc5, 0x7a, 0x28, 0x94, 0x99, 0x5f, 0x35, 0x66, 0x05, 0x4e, 0x1e, 0x2c, - 0x6b, 0x5b, 0x0f, 0x91, 0x2a, 0x99, 0x9c, 0x55, 0xb0, 0xfc, 0x9e, 0xb2, 0x9b, 0xcb, 0x38, 0x79, - 0x15, 0x85, 0xb4, 0xcc, 0x16, 0xc3, 0x18, 0xa3, 0x95, 0x4e, 0x4e, 0xf4, 0x39, 0xe8, 0xd9, 0x22, - 0xd5, 0x33, 0xbd, 0x02, 0x0e, 0xcd, 0x1b, 0x0b, 0x17, 0xc3, 0x7a, 0x63, 0x81, 0x5f, 0x72, 0x37, - 0x5a, 0x7e, 0x3e, 0xd8, 0x48, 0x8b, 0x1c, 0x55, 0xda, 0xc2, 0x21, 0xc3, 0x2f, 0xb9, 0x1d, 0x7e, - 0x3e, 0xe8, 0xe3, 0xae, 0xd9, 0x64, 0x2c, 0x18, 0xb7, 0x02, 0xcc, 0x6f, 0xc7, 0xcd, 0x89, 0xe4, - 0xdc, 0x48, 0x2d, 0xce, 0x1f, 0xb7, 0x82, 0x2e, 0x25, 0x30, 0x9b, 0x8c, 0x1a, 0xcf, 0xb7, 0xb9, - 0xbf, 0x71, 0x94, 0x16, 0x25, 0xea, 0xcf, 0x02, 0x19, 0x78, 0xed, 0x64, 0x5a, 0xf0, 0xe2, 0xd0, - 0x5c, 0x48, 0xd7, 0x4e, 0x9a, 0xed, 0xc6, 0x7c, 0x2b, 0x9f, 0x27, 0xf2, 0xfd, 0x9e, 0xcd, 0x93, - 0xf3, 0xa2, 0x25, 0xd2, 0x21, 0x05, 0x82, 0x6a, 0x97, 0x26, 0x7e, 0x54, 0x73, 0xd5, 0x57, 0x8d, - 0xb9, 0x43, 0x25, 0x17, 0x49, 0xaf, 0x37, 0xe6, 0xd0, 0x08, 0xea, 0x55, 0x23, 0x9a, 0x39, 0x29, - 0x58, 0x55, 0x30, 0x0e, 0x92, 0x81, 0xcd, 0x15, 0xc6, 0x6c, 0x82, 0x30, 0x44, 0x71, 0x55, 0xe0, - 0xb4, 0xbc, 0xd9, 0x3c, 0xc8, 0x61, 0x6c, 0x74, 0xcf, 0x80, 0x98, 0xcd, 0x46, 0x0d, 0x65, 0x07, - 0xd6, 0xb2, 0xb6, 0x16, 0x4a, 0x6b, 0x45, 0x63, 0x68, 0xae, 0x2f, 0x1f, 0x56, 0xbf, 0x38, 0xc7, - 0xa8, 0xd1, 0xa3, 0x6e, 0xd6, 0x18, 0xb3, 0x07, 0xca, 0x85, 0x02, 0x9b, 0x61, 0xce, 0x33, 0xe6, - 0xa4, 0x5d, 0xd1, 0x76, 0x24, 0x4b, 0x98, 0x86, 0x71, 0xd0, 0xb0, 0x83, 0xe7, 0x99, 0xe6, 0x7c, - 0x63, 0x6e, 0x4f, 0xc1, 0xb3, 0xc4, 0x11, 0xad, 0x6c, 0x56, 0xd8, 0x68, 0x3b, 0x92, 0xcd, 0x26, - 0xad, 0x8c, 0xf0, 0x1d, 0x37, 0xcf, 0xe6, 0x90, 0xf1, 0xda, 0x49, 0xc1, 0x03, 0x76, 0x90, 0xb9, - 0xc0, 0xa8, 0xe9, 0x9f, 0x0c, 0x8e, 0x2e, 0xac, 0x75, 0x04, 0xe3, 0x26, 0x33, 0x16, 0xa0, 0xd5, - 0x25, 0xf7, 0x19, 0x36, 0x66, 0x1e, 0x6c, 0x2c, 0x94, 0x48, 0xd9, 0xb7, 0x28, 0x77, 0x2c, 0x6f, - 0x2e, 0x34, 0xe6, 0x01, 0xea, 0x76, 0xcb, 0x45, 0x36, 0x1e, 0x7a, 0x58, 0xc7, 0x27, 0x98, 0x13, - 0xb6, 0x32, 0x5c, 0xb0, 0xef, 0x87, 0xaa, 0x59, 0xa7, 0xc8, 0xd9, 0xa6, 0xb0, 0xf9, 0xdd, 0xc0, - 0x73, 0x59, 0xc1, 0x5c, 0x62, 0x1c, 0x9c, 0x75, 0xba, 0xd6, 0x8e, 0xf0, 0x9c, 0xf0, 0x7c, 0x4d, - 0x7b, 0xd2, 0xac, 0x35, 0xe6, 0x8d, 0x58, 0x85, 0x32, 0xef, 0x73, 0x02, 0xc1, 0x2e, 0x4c, 0x50, - 0xbb, 0xd3, 0x2b, 0x94, 0x8b, 0xee, 0x10, 0x1f, 0x63, 0xfb, 0xa8, 0xbf, 0x73, 0x3a, 0xbd, 0xb2, - 0x2b, 0xd8, 0xf5, 0x75, 0x66, 0x8d, 0x31, 0x2b, 0x53, 0x2e, 0xb2, 0x1b, 0xf0, 0xd4, 0xb1, 0x39, - 0xcf, 0x6e, 0xc4, 0x53, 0xbf, 0xe3, 0xb2, 0x9b, 0xe4, 0x93, 0x35, 0xc1, 0x6e, 0xae, 0x23, 0x9b, - 0x1e, 0xc7, 0x0f, 0x04, 0xbb, 0xa5, 0xce, 0x64, 0xc6, 0xfc, 0x5e, 0xdf, 0x2b, 0x97, 0x3a, 0x3d, - 0x37, 0x67, 0x09, 0x76, 0x6b, 0x9d, 0xb9, 0xc8, 0x30, 0x3a, 0xf2, 0xf9, 0x8d, 0x6b, 0x1d, 0xd1, - 0xe1, 0xda, 0xec, 0xb6, 0x3a, 0x0a, 0xa9, 0x80, 0xf5, 0x3e, 0xbb, 0x3d, 0xaa, 0xf0, 0x3d, 0xcf, - 0x67, 0x77, 0xc8, 0xb8, 0xc2, 0x66, 0x77, 0xd6, 0x99, 0xf3, 0x29, 0xaf, 0xb6, 0xcd, 0x37, 0xb3, - 0xbb, 0x60, 0x27, 0x1b, 0x83, 0x5e, 0x89, 0xfd, 0x11, 0x76, 0xb2, 0x9d, 0xb1, 0x8a, 0x25, 0xf6, - 0x27, 0x68, 0x8f, 0x58, 0x3e, 0x49, 0xef, 0xae, 0x33, 0x17, 0x18, 0x73, 0x47, 0x2c, 0x1f, 0xa2, - 0xbd, 0x75, 0xe6, 0x42, 0xa3, 0x66, 0xc4, 0xf2, 0x1d, 0xda, 0xce, 0xd8, 0xbe, 0x3a, 0xf3, 0x60, - 0x63, 0x01, 0xa5, 0xa9, 0x83, 0xf6, 0xdd, 0x8e, 0x7c, 0x9e, 0xdd, 0x53, 0x67, 0x9a, 0xc6, 0x42, - 0x82, 0xd6, 0x8f, 0x7e, 0x9f, 0xe7, 0x04, 0x61, 0xf7, 0xd6, 0x99, 0x49, 0xe3, 0x90, 0x8e, 0x52, - 0xc9, 0xf7, 0x26, 0x90, 0x12, 0x3d, 0x65, 0xd8, 0x7d, 0xe0, 0x32, 0xe4, 0x6d, 0x19, 0x28, 0x17, - 0x47, 0xb9, 0xcf, 0x76, 0xac, 0x34, 0xe7, 0x19, 0xb3, 0x87, 0x2c, 0x77, 0x13, 0xdb, 0xb9, 0x92, - 0x44, 0x5d, 0xdc, 0x0d, 0x38, 0xda, 0xbb, 0x56, 0x52, 0xe8, 0xce, 0x72, 0x11, 0xbb, 0x29, 0xdb, - 0xbd, 0x92, 0x12, 0x34, 0xc8, 0xfd, 0x1c, 0x77, 0x05, 0x14, 0xf6, 0xac, 0xa4, 0xf4, 0x0d, 0x08, - 0xa7, 0xc0, 0xd9, 0x95, 0xf0, 0xd3, 0xc7, 0x2d, 0x9b, 0x5d, 0xb5, 0x92, 0xb2, 0xd0, 0x67, 0xe5, - 0xd9, 0xd5, 0x2b, 0xa9, 0xa3, 0xc8, 0x2f, 0x06, 0x8e, 0x5d, 0x83, 0x10, 0x7d, 0x96, 0x6e, 0x5f, - 0x8b, 0x10, 0x03, 0x62, 0x5c, 0x36, 0xaf, 0x83, 0x7e, 0x65, 0xa5, 0x61, 0xe7, 0x0e, 0xac, 0x7e, - 0x6d, 0xd4, 0x58, 0x18, 0x5b, 0x7b, 0xcc, 0x45, 0xc6, 0xfc, 0x61, 0x37, 0x28, 0xf1, 0x1c, 0xad, - 0xc4, 0x36, 0x9b, 0x41, 0xc5, 0xd9, 0x69, 0x05, 0x22, 0xed, 0x8a, 0x8e, 0x20, 0xed, 0x0a, 0x96, - 0xa0, 0xe2, 0x0c, 0x91, 0x21, 0x6e, 0x15, 0xd8, 0x4c, 0xf3, 0x10, 0x63, 0x51, 0x08, 0xa9, 0x7a, - 0x9f, 0x65, 0x2e, 0x36, 0x58, 0x08, 0xea, 0xd2, 0x9e, 0x1d, 0xb3, 0x46, 0x81, 0xce, 0xa1, 0x8a, - 0xac, 0x28, 0xea, 0x8a, 0x3f, 0x28, 0xa6, 0x89, 0xda, 0x9d, 0xab, 0x21, 0x8a, 0x2a, 0xd9, 0x18, - 0xa6, 0x69, 0xd4, 0x56, 0x20, 0xd0, 0x99, 0xaf, 0x23, 0x4b, 0x4c, 0xf1, 0x59, 0xa0, 0xc3, 0x48, - 0x54, 0x13, 0x5a, 0x18, 0x77, 0x00, 0x46, 0xb5, 0xe6, 0x52, 0xc3, 0x8c, 0xa8, 0x6a, 0x4a, 0x8b, - 0xe2, 0xba, 0xe0, 0xc4, 0x74, 0x30, 0xe5, 0x50, 0xd2, 0x5a, 0xac, 0x83, 0x85, 0x28, 0x98, 0x2d, - 0x31, 0xeb, 0x8c, 0x43, 0x62, 0xb0, 0x22, 0xb7, 0xd4, 0x4c, 0x1a, 0x8b, 0x63, 0x02, 0xcd, 0xaf, - 0x6e, 0x8a, 0x27, 0x50, 0x4c, 0x9a, 0xcb, 0x8c, 0x25, 0x71, 0x03, 0xcd, 0x72, 0xd9, 0x14, 0x0b, - 0x10, 0x5d, 0xae, 0x07, 0x49, 0x86, 0x94, 0x3c, 0x57, 0x68, 0xf6, 0x1a, 0x04, 0xcd, 0x95, 0xba, - 0xff, 0x1a, 0x55, 0x2c, 0xeb, 0x35, 0x7d, 0x8d, 0x6b, 0x92, 0x0d, 0xd5, 0x6e, 0xc0, 0x71, 0x95, - 0xee, 0x54, 0xa8, 0xae, 0x29, 0x36, 0x56, 0xeb, 0x83, 0xe1, 0x97, 0xf5, 0xf0, 0x92, 0xb5, 0xe4, - 0xd7, 0xac, 0x33, 0x2e, 0x21, 0xb0, 0xfb, 0x8a, 0x36, 0x96, 0x98, 0xe2, 0xb6, 0x5a, 0xf7, 0x5a, - 0xa2, 0x9a, 0xd9, 0x57, 0xe3, 0x0e, 0xc0, 0xeb, 0xdf, 0x74, 0xf7, 0x94, 0xaa, 0x66, 0xf5, 0xb5, - 0xb8, 0x2e, 0x38, 0xb5, 0x84, 0xc9, 0x54, 0x5a, 0x92, 0x57, 0xab, 0x76, 0x51, 0x81, 0xc1, 0xed, - 0x88, 0x70, 0x1c, 0x43, 0x5c, 0xf1, 0x3b, 0x32, 0x1c, 0xb0, 0x50, 0xa2, 0x39, 0x7e, 0x7d, 0xaa, - 0x33, 0xf0, 0x6c, 0x33, 0x97, 0x1b, 0x4b, 0xab, 0x4c, 0x34, 0xd7, 0xf6, 0xa9, 0x36, 0xe0, 0xfb, - 0x0d, 0x9d, 0x43, 0xac, 0x62, 0xe0, 0xfa, 0x2d, 0xdd, 0x2d, 0x09, 0x81, 0xe7, 0x7f, 0xe8, 0x1c, - 0x4a, 0x4c, 0x71, 0xfc, 0xb6, 0xee, 0xac, 0x44, 0x35, 0xbf, 0xef, 0xc4, 0x1d, 0x80, 0xdb, 0x7f, - 0xea, 0xf8, 0x4a, 0x55, 0xf3, 0xea, 0x88, 0xeb, 0x82, 0xd3, 0x5a, 0x5a, 0xda, 0x3a, 0x3d, 0xab, - 0xc0, 0x83, 0x1c, 0x27, 0x46, 0xaf, 0xd6, 0xd3, 0x3a, 0xab, 0x11, 0x10, 0x7a, 0xad, 0xde, 0x5c, - 0x6c, 0x2c, 0xd2, 0x90, 0x8e, 0xfc, 0x7a, 0xbd, 0x79, 0x88, 0x51, 0xab, 0x51, 0xc5, 0xf2, 0x8d, - 0x98, 0x35, 0xd8, 0xbc, 0x59, 0x6f, 0x2e, 0x31, 0x58, 0x68, 0xad, 0xc9, 0xfc, 0x3d, 0xa6, 0x09, - 0x2e, 0xff, 0xa8, 0xa7, 0x6d, 0xb8, 0x2f, 0x4b, 0x34, 0x6c, 0xda, 0x9d, 0xfb, 0xb2, 0x88, 0xcf, - 0x69, 0x97, 0xec, 0xcb, 0x56, 0x76, 0xe0, 0x05, 0x46, 0x4d, 0x5f, 0x56, 0x45, 0xcc, 0x4b, 0x45, - 0x84, 0x1a, 0x37, 0x6b, 0x0d, 0xa3, 0x2f, 0x1b, 0xc6, 0x70, 0xa4, 0x0c, 0xce, 0xbf, 0x0f, 0xdf, - 0xdd, 0xe4, 0xdb, 0x05, 0xdc, 0x0d, 0xdf, 0x1e, 0x7c, 0x77, 0x6b, 0xdf, 0x25, 0xf8, 0xee, 0x56, - 0xbe, 0x8f, 0x96, 0x8a, 0xf0, 0xed, 0xc3, 0x77, 0x77, 0xe8, 0x3b, 0x90, 0x32, 0xf8, 0x16, 0xe4, - 0xbb, 0x17, 0xbc, 0x27, 0x08, 0xee, 0x95, 0xbc, 0x27, 0xc9, 0x77, 0x6f, 0xc8, 0xfb, 0x18, 0xf2, - 0xdd, 0xab, 0x79, 0xff, 0x40, 0x2a, 0xc2, 0xf7, 0xff, 0x90, 0xef, 0xde, 0x0a, 0xef, 0x1f, 0x4a, - 0x19, 0x7c, 0xff, 0xaf, 0xdc, 0x9c, 0xb9, 0x25, 0x38, 0x96, 0x5b, 0xf6, 0x01, 0x12, 0xa7, 0x11, - 0x04, 0xfa, 0x10, 0x03, 0xa4, 0x21, 0x1d, 0xef, 0x23, 0x0c, 0x90, 0x46, 0x55, 0xd8, 0x8f, 0x63, - 0xd6, 0x88, 0xfe, 0x49, 0x3d, 0x6d, 0x45, 0x7d, 0x5c, 0x2e, 0xe7, 0xec, 0xd3, 0x7a, 0xec, 0x54, - 0x5c, 0x2d, 0xa5, 0xec, 0x33, 0x58, 0xa0, 0xad, 0x3d, 0x7f, 0x5e, 0x4f, 0xa4, 0x00, 0x29, 0xb7, - 0xff, 0xaa, 0x18, 0xc1, 0xe7, 0xb1, 0x0d, 0xa4, 0x91, 0x76, 0x05, 0xf7, 0x37, 0x5b, 0x05, 0x72, - 0x7b, 0x5c, 0x03, 0xb9, 0xd1, 0x08, 0x3c, 0x1f, 0xdf, 0x40, 0xbb, 0x68, 0x2f, 0xc6, 0xe4, 0xf8, - 0x04, 0x1d, 0x04, 0x7a, 0xe5, 0xa0, 0x9c, 0x80, 0x13, 0x4e, 0x6f, 0x38, 0x2a, 0x27, 0x26, 0x88, - 0x61, 0xaf, 0x1e, 0x96, 0x93, 0x94, 0x2e, 0x22, 0x9d, 0x9c, 0xa0, 0x9d, 0xb3, 0xb7, 0x32, 0x30, - 0xa7, 0x28, 0x29, 0xb2, 0x77, 0x2a, 0xce, 0x46, 0xdd, 0x1b, 0x28, 0xc4, 0x99, 0x10, 0x74, 0x6f, - 0x40, 0x88, 0xb3, 0x10, 0xa2, 0x7b, 0x83, 0x0e, 0x71, 0x36, 0x42, 0x74, 0x6f, 0x50, 0x21, 0xce, - 0x51, 0xba, 0x08, 0x71, 0x2e, 0x42, 0x74, 0x6f, 0x08, 0x43, 0x9c, 0xa7, 0xa4, 0x08, 0x71, 0x3e, - 0x42, 0x0c, 0xa0, 0x17, 0x5b, 0x21, 0x18, 0x90, 0xbd, 0x90, 0xe7, 0xb4, 0x81, 0xb0, 0x17, 0xdb, - 0x10, 0x62, 0x40, 0xf7, 0xe2, 0x22, 0xa5, 0x8b, 0x10, 0x17, 0x23, 0xc4, 0x40, 0xa5, 0x17, 0x97, - 0x28, 0x29, 0x42, 0x5c, 0x2a, 0x3d, 0x95, 0x0b, 0x05, 0xd9, 0x93, 0xed, 0x52, 0x1b, 0x6d, 0x84, - 0xda, 0x91, 0xa0, 0x93, 0x90, 0x04, 0x74, 0xb8, 0x9d, 0x74, 0x18, 0x58, 0x20, 0x31, 0x15, 0x72, - 0x57, 0xc4, 0x0e, 0x61, 0x77, 0x27, 0xa8, 0x44, 0x94, 0x9d, 0x0e, 0xbd, 0x27, 0xa2, 0x85, 0xf0, - 0x57, 0x82, 0xf8, 0x60, 0xa1, 0x2c, 0xd7, 0xa7, 0xbd, 0x09, 0x1c, 0x87, 0x0a, 0xe5, 0x70, 0x11, - 0xda, 0x97, 0xa0, 0x83, 0x1b, 0x21, 0xc4, 0xee, 0x5e, 0xb0, 0xed, 0x77, 0x5c, 0xa5, 0x7f, 0x1f, - 0x88, 0xa0, 0xad, 0x0d, 0xee, 0x87, 0x47, 0x40, 0x64, 0xf1, 0x17, 0xa9, 0x51, 0x2e, 0x08, 0xa7, - 0x54, 0x98, 0x84, 0xd1, 0x03, 0x09, 0x2a, 0x69, 0x0d, 0x69, 0xbb, 0x07, 0x11, 0x5a, 0xa3, 0x64, - 0xfa, 0x57, 0x90, 0xed, 0x72, 0x36, 0x3b, 0xb6, 0x5c, 0xac, 0x1e, 0x42, 0x2a, 0x24, 0xa0, 0xcd, - 0x1e, 0x4e, 0xa8, 0xda, 0x93, 0x30, 0xd9, 0x3d, 0x92, 0xa0, 0x55, 0x29, 0x84, 0xb4, 0xe6, 0xa3, - 0xe8, 0x49, 0xbf, 0x67, 0xc3, 0xd7, 0x63, 0x70, 0xde, 0xef, 0xd9, 0x5a, 0xfc, 0x38, 0x46, 0xa5, - 0xdf, 0xb3, 0xc9, 0xc5, 0xfe, 0x04, 0x1d, 0x35, 0x23, 0x64, 0x86, 0xdd, 0xc0, 0xc9, 0xbb, 0xdc, - 0x66, 0x4f, 0x24, 0xcc, 0x43, 0x8d, 0x3a, 0x95, 0x0f, 0x8d, 0x86, 0xd2, 0x27, 0x13, 0xe6, 0x72, - 0x63, 0x49, 0x95, 0x34, 0x23, 0x65, 0x4f, 0x45, 0x65, 0x99, 0xb8, 0xdd, 0xd3, 0x88, 0x17, 0x93, - 0x29, 0xab, 0x67, 0x12, 0xe6, 0x97, 0x8c, 0xa5, 0x92, 0xd6, 0x94, 0x70, 0xcf, 0x26, 0xcc, 0x65, - 0xc6, 0xe2, 0xb8, 0x50, 0xd9, 0x3d, 0x17, 0x11, 0x55, 0x05, 0x7b, 0x3e, 0x61, 0xd6, 0x19, 0x66, - 0x54, 0xa4, 0x6c, 0x0e, 0x24, 0xcc, 0xc3, 0x8c, 0xa4, 0x1e, 0xba, 0x29, 0xd1, 0x5e, 0x90, 0x54, - 0xaa, 0xc4, 0xca, 0xf6, 0xc5, 0x98, 0xb0, 0x2a, 0xe2, 0x4b, 0x92, 0x4c, 0x4c, 0xa8, 0xec, 0xfe, - 0x96, 0x30, 0x1b, 0x8d, 0x15, 0x5a, 0xd4, 0xe3, 0xf9, 0xb9, 0x8a, 0x5d, 0x68, 0xff, 0x72, 0xc2, - 0x6c, 0x30, 0x0e, 0x9d, 0x5e, 0x49, 0xf9, 0x79, 0x65, 0x1a, 0x95, 0x2a, 0x16, 0xaf, 0x42, 0x25, - 0x5a, 0x2a, 0x53, 0x02, 0xbd, 0x96, 0x30, 0x57, 0x1a, 0xcb, 0xa7, 0x53, 0x51, 0x61, 0x5e, 0x47, - 0x8a, 0xa2, 0x0a, 0xb1, 0xde, 0xbc, 0x31, 0xc5, 0xbe, 0x8a, 0xc3, 0x9b, 0xa8, 0xb2, 0x8e, 0x51, - 0xcc, 0x8d, 0xdf, 0x32, 0xaa, 0xc8, 0x8e, 0xd1, 0x60, 0x98, 0x5a, 0xbf, 0xd3, 0x2d, 0xd4, 0xe7, - 0xef, 0x19, 0x5e, 0xc3, 0x46, 0xc3, 0x79, 0xf5, 0x07, 0x86, 0x4d, 0x95, 0x3b, 0xb4, 0xe4, 0x66, - 0xbd, 0x2e, 0x9e, 0x63, 0xd7, 0xc7, 0x21, 0x72, 0x72, 0x43, 0x08, 0x75, 0xf1, 0x9c, 0x84, 0x6e, - 0x8c, 0x43, 0x64, 0x78, 0x13, 0xc3, 0x4b, 0x10, 0x77, 0xe4, 0x62, 0x7d, 0x33, 0xa3, 0x79, 0xd5, - 0x53, 0xf0, 0x3c, 0x3f, 0xf4, 0x7d, 0x4b, 0x15, 0x46, 0x9e, 0x6e, 0xad, 0x60, 0xa1, 0xf7, 0xdb, - 0xaa, 0x30, 0xb2, 0xbd, 0x9d, 0xd1, 0x2a, 0x01, 0x0c, 0xfe, 0xef, 0x60, 0xf2, 0xf5, 0xac, 0xec, - 0xca, 0xb9, 0xb7, 0x0f, 0xe1, 0xd1, 0x26, 0x17, 0xf7, 0x54, 0x9a, 0x64, 0x7d, 0x2f, 0x33, 0x97, - 0x1a, 0x07, 0xa3, 0x79, 0x94, 0x23, 0xc6, 0x7b, 0x7c, 0x2b, 0x27, 0xd7, 0x1a, 0x46, 0xd3, 0x3a, - 0x86, 0x93, 0xf5, 0xfd, 0x53, 0x61, 0xf2, 0xf2, 0x67, 0x64, 0xb3, 0xcf, 0xcb, 0x1f, 0xde, 0xe1, - 0xe7, 0xd9, 0x43, 0x08, 0xd1, 0xe7, 0xe5, 0x5b, 0x3b, 0xfc, 0x7c, 0xc0, 0x1e, 0x66, 0x78, 0xaf, - 0xf3, 0xf2, 0xad, 0xec, 0x11, 0x46, 0x4b, 0x3c, 0xe9, 0xad, 0x61, 0x8f, 0x32, 0xf5, 0xda, 0x68, - 0xb3, 0xc7, 0x18, 0x55, 0x2c, 0x3d, 0x92, 0xd3, 0x0c, 0xe7, 0x36, 0x5e, 0xf8, 0x7a, 0xb9, 0xcb, - 0x1e, 0x67, 0xf4, 0x26, 0x38, 0xe8, 0x6d, 0x61, 0xfb, 0xa1, 0xdf, 0xe9, 0xb9, 0x9b, 0xd9, 0x13, - 0x70, 0xd3, 0x39, 0xd4, 0x79, 0x44, 0x2b, 0x7b, 0x12, 0x30, 0x0d, 0x3c, 0x7b, 0x4a, 0x3e, 0x1e, - 0xed, 0x0b, 0xf6, 0x34, 0x1e, 0x3b, 0x72, 0x5e, 0xc0, 0x9e, 0x91, 0x8f, 0x81, 0xe3, 0xb2, 0x67, - 0x41, 0xac, 0x43, 0x58, 0x2e, 0x78, 0x3e, 0x87, 0x4c, 0x51, 0x53, 0x12, 0x7d, 0x1e, 0xb1, 0x3a, - 0xbd, 0x80, 0x1d, 0x50, 0x4f, 0x82, 0xbd, 0x80, 0x9e, 0x75, 0xf1, 0xbc, 0xcf, 0x79, 0xc0, 0x5e, - 0x04, 0xde, 0x3d, 0x51, 0x62, 0x2f, 0x31, 0x73, 0xae, 0x31, 0x73, 0x30, 0xcd, 0xfe, 0x06, 0x85, - 0x21, 0xcb, 0x76, 0x2c, 0x37, 0x60, 0x2f, 0x43, 0x21, 0xe3, 0xb8, 0xec, 0x15, 0x3c, 0x65, 0x2d, - 0x97, 0xbd, 0xca, 0x68, 0xad, 0xcd, 0xfa, 0x65, 0x37, 0x67, 0x09, 0xac, 0x99, 0xaf, 0xa1, 0x48, - 0x34, 0x82, 0x7c, 0xbf, 0x4e, 0xaf, 0x58, 0x8b, 0x34, 0xa4, 0xcb, 0xf0, 0x8d, 0x98, 0xe2, 0xb0, - 0xe3, 0x0a, 0xf6, 0x26, 0x4a, 0xb5, 0xcf, 0xcb, 0x3b, 0x39, 0xab, 0xd0, 0xe1, 0xda, 0xec, 0xb2, - 0x24, 0x4e, 0x0c, 0x12, 0x58, 0xef, 0xb3, 0xcb, 0x93, 0x11, 0x85, 0xef, 0x79, 0x3e, 0xbb, 0x22, - 0x49, 0xf1, 0x87, 0x5d, 0xcb, 0x9f, 0x1c, 0xf0, 0x70, 0x32, 0xd9, 0x9e, 0xa4, 0x60, 0x1a, 0xd1, - 0xc1, 0x76, 0x24, 0x29, 0x98, 0x46, 0xc1, 0x6a, 0x67, 0x0c, 0xfa, 0x6e, 0x66, 0xfd, 0x00, 0xdb, - 0x95, 0xa4, 0x12, 0x04, 0x14, 0x6e, 0x3b, 0xbb, 0x93, 0xb4, 0xfb, 0x55, 0x30, 0xd8, 0xee, 0x49, - 0x52, 0x65, 0x55, 0x40, 0x1d, 0xe6, 0x4a, 0x38, 0x50, 0xad, 0x74, 0x80, 0x3b, 0xa7, 0xab, 0xe0, - 0x40, 0x6f, 0x9c, 0x0a, 0xbc, 0x1a, 0x1d, 0x21, 0x5f, 0x0a, 0xb8, 0x06, 0x6c, 0xe4, 0x16, 0xac, - 0xa0, 0x6b, 0xa1, 0x43, 0x5b, 0xb0, 0x02, 0xae, 0x43, 0x36, 0xd2, 0xae, 0x50, 0xed, 0x9f, 0x40, - 0x81, 0x76, 0x5f, 0x05, 0xfc, 0x14, 0x0a, 0xf2, 0x3a, 0x26, 0xe3, 0xe4, 0xd9, 0xcf, 0x92, 0x54, - 0x13, 0xb8, 0x8d, 0xa1, 0xe6, 0xcf, 0xb5, 0xf8, 0x7b, 0x1e, 0xda, 0xbf, 0xd0, 0xed, 0x01, 0x9e, - 0xa7, 0xf6, 0x2f, 0x2b, 0xfe, 0xb3, 0x7e, 0x99, 0xb3, 0x5f, 0x45, 0x48, 0x02, 0xf8, 0x75, 0xbc, - 0x7b, 0xc0, 0x7e, 0x03, 0x25, 0x18, 0xf5, 0x58, 0x85, 0x80, 0xb3, 0xdf, 0x62, 0x48, 0xa4, 0x95, - 0x44, 0x7e, 0x27, 0x33, 0xa0, 0xcd, 0x24, 0xf8, 0x7b, 0x39, 0xb4, 0x7c, 0x4c, 0x64, 0xc6, 0x9d, - 0x31, 0xc1, 0xae, 0x97, 0xc1, 0x9c, 0xfc, 0xb8, 0x02, 0x6e, 0x40, 0x8e, 0x43, 0x36, 0x34, 0x7b, - 0xd0, 0xc9, 0x3f, 0x25, 0x69, 0xd3, 0xa9, 0xb0, 0x0a, 0x05, 0x77, 0x27, 0x69, 0x5b, 0x8c, 0xb1, - 0x0b, 0x65, 0x7b, 0x61, 0x54, 0x61, 0x19, 0x0a, 0xf6, 0x25, 0x69, 0xbf, 0x8c, 0xb0, 0x0d, 0x25, - 0xf7, 0x24, 0x69, 0x1f, 0x8a, 0xb3, 0x0e, 0x85, 0xf7, 0xea, 0xcc, 0xca, 0x1b, 0xb5, 0x3f, 0xa0, - 0x87, 0xbd, 0x5c, 0x0c, 0x5a, 0xbe, 0x55, 0x54, 0x07, 0xa9, 0x1b, 0x93, 0x38, 0x63, 0x72, 0x31, - 0x62, 0xf9, 0xec, 0x26, 0x34, 0x86, 0xbc, 0x2d, 0x94, 0xe8, 0x9b, 0xd1, 0xc8, 0x48, 0xc9, 0x2d, - 0x48, 0x2a, 0x6e, 0x78, 0xc2, 0x3a, 0xba, 0x15, 0xfe, 0x14, 0xa6, 0x8f, 0x5c, 0xb7, 0x25, 0xc3, - 0x2b, 0x3e, 0x54, 0xe6, 0xed, 0xc8, 0x98, 0x6c, 0xa3, 0x7c, 0xef, 0x88, 0x00, 0x28, 0xd3, 0x3b, - 0x51, 0x54, 0x12, 0x50, 0xa4, 0xee, 0x8a, 0xe8, 0xe0, 0x74, 0xf7, 0xc7, 0x24, 0xad, 0x37, 0x69, - 0x97, 0x3c, 0xee, 0x58, 0x49, 0xbc, 0xd2, 0xae, 0x9c, 0x1f, 0x2b, 0x65, 0x35, 0x68, 0x4e, 0xf2, - 0xbe, 0x2b, 0xed, 0x2a, 0x47, 0xbb, 0x95, 0x2e, 0x9c, 0xec, 0x59, 0x29, 0x8b, 0x20, 0xe4, 0x7a, - 0xa5, 0x92, 0xe2, 0x68, 0x78, 0x95, 0xf4, 0x34, 0x46, 0x99, 0xa3, 0x30, 0x27, 0xd5, 0x43, 0x1b, - 0x6d, 0x84, 0x3a, 0xb9, 0x9e, 0x52, 0x20, 0x01, 0x1d, 0xee, 0x14, 0xbc, 0x51, 0x48, 0x4c, 0x85, - 0x3c, 0x35, 0x62, 0x87, 0xb0, 0xa7, 0xe1, 0xe5, 0x45, 0xd9, 0xe9, 0xd0, 0xa7, 0xd7, 0xa3, 0x43, - 0x63, 0x14, 0xe9, 0x8c, 0x7a, 0xd0, 0x18, 0x43, 0x94, 0x33, 0xeb, 0x25, 0x0d, 0x1d, 0xe1, 0x2c, - 0xbc, 0xd2, 0xa4, 0xc7, 0x94, 0xf7, 0xb3, 0x95, 0x2e, 0x3c, 0x9f, 0xa3, 0x42, 0x85, 0x5e, 0xcf, - 0x8d, 0xc4, 0x46, 0xa7, 0xce, 0x53, 0xea, 0xf2, 0x78, 0x8f, 0x77, 0x9d, 0x4e, 0x2b, 0xe0, 0x47, - 0x8d, 0x73, 0xa4, 0xf2, 0x2d, 0xf9, 0xe6, 0xaa, 0x10, 0xc4, 0x7f, 0x5b, 0xbe, 0x21, 0x2b, 0x48, - 0xb3, 0xf8, 0xa7, 0x7c, 0x43, 0x56, 0xa8, 0xe2, 0xf2, 0x4e, 0xcc, 0x1a, 0x8c, 0xde, 0x95, 0x6f, - 0xc8, 0xda, 0x5a, 0xf3, 0x7a, 0x2f, 0xa6, 0x09, 0x32, 0xef, 0x83, 0x6a, 0x07, 0xaa, 0xc9, 0x9f, - 0x2c, 0x09, 0x76, 0x41, 0xa3, 0x02, 0xba, 0x5d, 0x09, 0x6c, 0x6d, 0xc4, 0xae, 0xed, 0x15, 0xf1, - 0x0d, 0x85, 0x5d, 0xd8, 0x88, 0x1b, 0xdf, 0xae, 0xaf, 0xb3, 0x6d, 0x10, 0x0c, 0x5a, 0x41, 0xb0, - 0xc5, 0xf3, 0x6d, 0x76, 0x51, 0x23, 0xa6, 0xb2, 0xe5, 0xda, 0x5e, 0x51, 0x5e, 0x7c, 0x5f, 0xdc, - 0x88, 0x6d, 0x68, 0x5d, 0xc7, 0xe1, 0xec, 0x12, 0xfd, 0xd8, 0xca, 0x2e, 0x45, 0x80, 0x61, 0x37, - 0xa7, 0x3d, 0x5e, 0xd6, 0x48, 0xd3, 0xad, 0x02, 0x70, 0xbb, 0x8f, 0xbb, 0x79, 0x31, 0xce, 0x2e, - 0x6f, 0x24, 0xba, 0x15, 0x6e, 0xe9, 0x11, 0x76, 0x85, 0x86, 0x14, 0xbb, 0xf4, 0x08, 0xdb, 0xde, - 0x88, 0x57, 0x27, 0x37, 0xe7, 0xd9, 0x9c, 0xed, 0x40, 0xa3, 0x8b, 0xa3, 0xb1, 0x13, 0x54, 0x33, - 0xfd, 0x47, 0xb0, 0x5d, 0xa0, 0xda, 0x65, 0x09, 0x6b, 0xd4, 0x0a, 0x38, 0xbb, 0xa6, 0x11, 0x27, - 0x05, 0x9c, 0x0c, 0xbc, 0x2d, 0x01, 0xbb, 0x16, 0xd4, 0x3b, 0xcb, 0xbe, 0xcf, 0x5d, 0x31, 0x1c, - 0x70, 0x9f, 0x5d, 0x07, 0xbe, 0x78, 0xfc, 0x49, 0xa3, 0xbc, 0x56, 0x70, 0x5d, 0x8e, 0x0f, 0x1b, - 0xe9, 0x2e, 0xf6, 0x53, 0x40, 0x7d, 0x78, 0xbd, 0x0d, 0xb8, 0x2f, 0xd2, 0x5d, 0xec, 0x67, 0xe8, - 0x44, 0x14, 0xa2, 0xe9, 0x9f, 0xee, 0x62, 0x3f, 0x6f, 0xc4, 0x15, 0xb4, 0xfc, 0x50, 0xc7, 0x7e, - 0x81, 0x48, 0xf2, 0x42, 0x5e, 0x22, 0xbf, 0x6c, 0x94, 0xc7, 0x90, 0x2d, 0x72, 0x71, 0xf8, 0x55, - 0x23, 0x15, 0x64, 0xa6, 0xc0, 0x79, 0x89, 0xdd, 0xdd, 0x28, 0xcf, 0x0b, 0xb9, 0x4d, 0x6c, 0xaf, - 0x4c, 0x2e, 0x2f, 0x70, 0x2b, 0xe0, 0x40, 0xf6, 0x35, 0x52, 0x81, 0xe8, 0x4b, 0x3f, 0x77, 0x52, - 0xde, 0xfa, 0xde, 0xd3, 0x48, 0x03, 0x1f, 0xde, 0x12, 0x69, 0xf8, 0xde, 0x46, 0xf5, 0xf2, 0x1c, - 0x22, 0xf7, 0xa1, 0x0b, 0xb4, 0x12, 0x84, 0xd0, 0xfd, 0x80, 0x70, 0xd9, 0xa9, 0xa1, 0x3f, 0x37, - 0x52, 0xbd, 0xa9, 0x6b, 0x3b, 0x0d, 0xfe, 0x05, 0x7a, 0xb8, 0x35, 0xd3, 0xd0, 0x03, 0x8d, 0x72, - 0xba, 0x73, 0xd1, 0x21, 0x3c, 0x97, 0x3d, 0x18, 0x36, 0x07, 0x84, 0x67, 0xb1, 0xbf, 0x36, 0xca, - 0xc5, 0x81, 0x8b, 0x36, 0x88, 0x1f, 0xaa, 0xb4, 0x21, 0x7f, 0x18, 0x83, 0x96, 0x0e, 0xd2, 0x83, - 0x9b, 0x8f, 0x64, 0x8f, 0xc0, 0xbb, 0x6c, 0x50, 0xd1, 0x59, 0x82, 0x3d, 0x1a, 0x81, 0xfa, 0xad, - 0x52, 0x89, 0xdb, 0xec, 0xb1, 0x8a, 0x49, 0x1b, 0x7b, 0x5c, 0x0e, 0xd6, 0x70, 0xba, 0x8b, 0xed, - 0x47, 0x71, 0x8d, 0x38, 0x82, 0x07, 0xc1, 0x3a, 0x2b, 0x18, 0x67, 0x4f, 0x28, 0x45, 0x48, 0x9f, - 0x44, 0x60, 0xca, 0x7e, 0x66, 0xdc, 0xf2, 0x6d, 0xf6, 0x54, 0x63, 0xf8, 0x9d, 0xc2, 0x71, 0xb1, - 0xab, 0x3d, 0x2d, 0x99, 0x17, 0x9c, 0x4d, 0x9c, 0x9a, 0x8f, 0x34, 0xe0, 0x38, 0xa7, 0x5a, 0x8f, - 0x36, 0xe0, 0x40, 0xc9, 0xf3, 0x7c, 0xa2, 0x44, 0xed, 0xc7, 0x1a, 0x68, 0x25, 0x92, 0xed, 0xe1, - 0x6c, 0xcf, 0x37, 0x08, 0x7b, 0x3c, 0x82, 0x69, 0xbb, 0xfd, 0x0d, 0x38, 0x5a, 0x86, 0x98, 0xd6, - 0x7d, 0xa2, 0x81, 0xb2, 0x2b, 0x71, 0x2c, 0x95, 0x04, 0x3e, 0xd9, 0x20, 0x77, 0xac, 0x10, 0xd4, - 0xda, 0x4f, 0x35, 0xe0, 0xc4, 0x09, 0xc1, 0x10, 0x2f, 0x15, 0xac, 0x1c, 0x9c, 0x3f, 0xdd, 0x80, - 0x23, 0x63, 0x14, 0xd6, 0x16, 0xcf, 0x34, 0x50, 0x89, 0x28, 0xbe, 0xe5, 0xd1, 0x40, 0x06, 0x78, - 0xb6, 0x41, 0x6e, 0x62, 0x15, 0x54, 0xeb, 0x3f, 0x07, 0x3e, 0xb4, 0x2c, 0x74, 0x4f, 0x08, 0xdf, - 0xca, 0xd1, 0x5b, 0x04, 0x3b, 0xad, 0x49, 0x83, 0xc3, 0xee, 0xd1, 0x65, 0x4f, 0x20, 0xe8, 0xe9, - 0x4d, 0x94, 0x38, 0x02, 0xb3, 0x93, 0x25, 0x20, 0x67, 0x34, 0xe9, 0xe3, 0x45, 0x86, 0xc3, 0xee, - 0xcc, 0x26, 0xfd, 0x29, 0x45, 0x4e, 0x08, 0xc2, 0xce, 0x0a, 0x7d, 0x45, 0x3a, 0x70, 0x76, 0xa8, - 0x38, 0xc4, 0x8b, 0xde, 0x66, 0x60, 0xe7, 0x34, 0xe9, 0x4f, 0x33, 0xfd, 0xdc, 0xcf, 0x03, 0x3a, - 0xb7, 0x29, 0xfe, 0x69, 0x86, 0xb0, 0xf3, 0x9a, 0x62, 0x5f, 0x70, 0x08, 0x3a, 0xbf, 0x89, 0xb2, - 0x44, 0xd0, 0x88, 0x55, 0x70, 0x6c, 0x10, 0x72, 0xf2, 0xec, 0x47, 0x4d, 0x94, 0x0a, 0x6a, 0x75, - 0x7a, 0xae, 0xb0, 0x1c, 0x37, 0x20, 0xf4, 0xc7, 0x4d, 0x94, 0xeb, 0xca, 0x17, 0xa0, 0x52, 0x89, - 0xcb, 0xb3, 0xd0, 0x05, 0x71, 0x41, 0xa5, 0x07, 0x5b, 0x9b, 0x68, 0x28, 0x43, 0x62, 0x83, 0x96, - 0xc8, 0x8d, 0x13, 0x7e, 0x61, 0x13, 0x8d, 0x42, 0x05, 0xf7, 0x79, 0xc0, 0x7d, 0xd9, 0x97, 0x6d, - 0x4d, 0x94, 0xef, 0x68, 0xe8, 0x41, 0x4b, 0xc0, 0xe8, 0xa2, 0xb0, 0x4b, 0x83, 0x3e, 0x17, 0x02, - 0xfc, 0x2f, 0x0e, 0xbb, 0xb4, 0x41, 0x27, 0xfb, 0x92, 0x50, 0x2d, 0xc3, 0x2d, 0x5f, 0xc6, 0xbb, - 0x34, 0x24, 0x98, 0x11, 0x9e, 0x6f, 0x51, 0x8a, 0x8e, 0x81, 0xf2, 0x65, 0xa1, 0x7d, 0x17, 0x2f, - 0xc9, 0x30, 0x97, 0x87, 0x83, 0xf5, 0x5f, 0x7c, 0x12, 0xfd, 0xbe, 0x22, 0xf4, 0x28, 0x57, 0x5a, - 0xc2, 0xb6, 0x87, 0x89, 0x23, 0x2d, 0xbc, 0x07, 0x10, 0xbc, 0x23, 0x0c, 0x84, 0x7c, 0xca, 0xa5, - 0x80, 0x04, 0x3b, 0xe3, 0x82, 0xf5, 0x62, 0x9c, 0xfb, 0xb0, 0xd8, 0x55, 0x4d, 0xad, 0xc7, 0xe7, - 0xa0, 0xb6, 0x3b, 0x1c, 0x83, 0x7e, 0x5e, 0x1c, 0xe5, 0xfe, 0xfa, 0x31, 0x42, 0xf7, 0x80, 0xf0, - 0x08, 0xcf, 0x75, 0x04, 0x59, 0x3e, 0x81, 0x24, 0xbf, 0x8f, 0x32, 0x19, 0xe1, 0xb9, 0x1e, 0xdf, - 0x2b, 0x6a, 0xf0, 0x03, 0x14, 0xd8, 0x08, 0xcf, 0x75, 0x39, 0x45, 0xc4, 0xf9, 0x10, 0x84, 0x47, - 0x78, 0xae, 0xef, 0x70, 0xfd, 0x0b, 0x15, 0x82, 0x3f, 0x0a, 0xe1, 0xd6, 0x28, 0xfc, 0x71, 0x13, - 0xbd, 0x22, 0x8f, 0xf0, 0xdc, 0x00, 0xcf, 0x5b, 0xc2, 0xd9, 0xcc, 0xd3, 0xae, 0xcb, 0xfd, 0x41, - 0xdf, 0xb3, 0xcb, 0xb2, 0x96, 0x3e, 0xc1, 0x08, 0x8e, 0xf0, 0x5c, 0xa7, 0x17, 0x38, 0x2e, 0x8f, - 0xda, 0x7e, 0xaa, 0x29, 0xf6, 0xb5, 0x0e, 0x78, 0x7e, 0x91, 0xa0, 0xcf, 0x9a, 0xcc, 0x15, 0xc6, - 0xb2, 0xe8, 0x37, 0x8d, 0xf8, 0x07, 0xd6, 0x9b, 0x9a, 0xe9, 0x3c, 0x48, 0xf2, 0x18, 0x2e, 0xaf, - 0xe8, 0x6f, 0x6e, 0x36, 0x0f, 0x35, 0xea, 0xa6, 0x11, 0x62, 0xe7, 0xbf, 0xa5, 0x59, 0xbb, 0xae, - 0x92, 0xaa, 0xed, 0xfe, 0xd6, 0x66, 0xea, 0xc9, 0x34, 0x72, 0x7d, 0x48, 0xb8, 0xed, 0x8b, 0xdc, - 0xe3, 0x68, 0x70, 0x7b, 0xb3, 0x59, 0x6f, 0x7c, 0x69, 0x3a, 0x73, 0x7d, 0x4a, 0xb8, 0xe3, 0x8b, - 0xec, 0x71, 0x60, 0xb8, 0xb3, 0xd9, 0xfc, 0x7f, 0x46, 0xfd, 0x34, 0xd2, 0x78, 0x02, 0xee, 0x6a, - 0xa6, 0x89, 0x32, 0x58, 0x28, 0x57, 0xe1, 0x17, 0x34, 0xe3, 0x16, 0x88, 0xde, 0x83, 0xe2, 0x82, - 0xad, 0xcd, 0x74, 0x20, 0xd7, 0x77, 0x5f, 0x71, 0xd9, 0x85, 0x90, 0xc5, 0xe3, 0xe9, 0xad, 0x67, - 0x1b, 0x64, 0xfa, 0xd6, 0x3f, 0x6e, 0x77, 0x51, 0x33, 0x55, 0x5c, 0x5f, 0x36, 0x8e, 0x5e, 0x2c, - 0xd1, 0xee, 0x38, 0x7a, 0x09, 0xd0, 0xde, 0x2a, 0xdd, 0x4b, 0xe1, 0x5d, 0x5f, 0x6e, 0xc7, 0x65, - 0x97, 0xa1, 0x2b, 0xb8, 0xa1, 0x8e, 0x0b, 0x2e, 0x97, 0xae, 0xaa, 0x02, 0x5c, 0x01, 0xb4, 0x7b, - 0x43, 0x1c, 0xdd, 0x0e, 0x74, 0xa0, 0x4a, 0x77, 0x47, 0x33, 0xad, 0x19, 0xf2, 0xc2, 0x34, 0x2e, - 0xd9, 0x09, 0x49, 0x0c, 0x53, 0xef, 0x73, 0xbb, 0xa6, 0x93, 0xe0, 0xad, 0x6b, 0x77, 0xb3, 0x2a, - 0xed, 0xa8, 0x44, 0xbe, 0x58, 0xed, 0x41, 0x35, 0x4c, 0x63, 0x14, 0xbe, 0xbc, 0x5c, 0xd9, 0x6c, - 0x36, 0x18, 0x87, 0x4e, 0x67, 0x1c, 0xaa, 0x5c, 0x85, 0xc8, 0xf2, 0xb8, 0x1b, 0x67, 0x7b, 0x35, - 0x7a, 0x97, 0x1e, 0x8b, 0xa3, 0xd7, 0xc8, 0x21, 0x53, 0xc7, 0xd0, 0xb8, 0xec, 0xda, 0x66, 0x9a, - 0x6b, 0xfa, 0xa7, 0x50, 0x47, 0xd1, 0xc1, 0xf2, 0x41, 0xe4, 0x79, 0xea, 0xaf, 0xa3, 0xd8, 0x5f, - 0x9b, 0x69, 0x9d, 0xd0, 0x82, 0x41, 0x9f, 0x8f, 0x39, 0x13, 0xec, 0xa1, 0x18, 0x28, 0xb7, 0x39, - 0xf6, 0x70, 0x33, 0xde, 0x45, 0x2d, 0xc1, 0x7b, 0x3c, 0xbf, 0x68, 0x61, 0xc2, 0xbf, 0xdd, 0x42, - 0xcb, 0x22, 0x61, 0x7d, 0x8e, 0xe0, 0x3e, 0x9d, 0xae, 0x5b, 0xd4, 0x29, 0x91, 0x77, 0x39, 0x63, - 0x63, 0xec, 0x9d, 0x16, 0x7d, 0xdd, 0x4d, 0x13, 0x07, 0xd0, 0xbb, 0x2d, 0x44, 0x85, 0x9a, 0x72, - 0x32, 0x86, 0x82, 0xf7, 0x5a, 0xf0, 0xfe, 0xa7, 0xa6, 0x50, 0x95, 0xf0, 0xfd, 0x16, 0xf3, 0x30, - 0x23, 0xa9, 0x85, 0xfa, 0x6f, 0x28, 0xfe, 0x00, 0x4e, 0x2b, 0x36, 0xa1, 0xe0, 0x43, 0x38, 0x95, - 0x82, 0x29, 0x56, 0x1f, 0xb5, 0xd0, 0xa0, 0xaa, 0xf5, 0x38, 0x1e, 0xef, 0xe3, 0x16, 0x5a, 0x02, - 0xb5, 0xab, 0x10, 0xfe, 0xa4, 0x85, 0x8e, 0x49, 0xd4, 0x3d, 0xf6, 0x29, 0x1e, 0xd7, 0x79, 0x65, - 0x9f, 0x7d, 0xd6, 0x82, 0x0b, 0x68, 0xc7, 0x2d, 0x0b, 0xce, 0x3e, 0x6f, 0x91, 0xef, 0x9a, 0x39, - 0xcf, 0xb5, 0xd9, 0xbf, 0x90, 0xa0, 0x7e, 0x27, 0xe7, 0x7b, 0x0a, 0x39, 0x36, 0x45, 0x87, 0xd3, - 0x7e, 0xcf, 0x15, 0xe3, 0xec, 0xb8, 0x14, 0xee, 0xe4, 0xe9, 0x79, 0xc0, 0x2a, 0x72, 0x76, 0x7c, - 0x0a, 0x77, 0xfc, 0xde, 0x16, 0x2a, 0x8b, 0x0e, 0x3f, 0xcf, 0x4e, 0x48, 0xe1, 0x0b, 0x82, 0x04, - 0xbc, 0xb2, 0x20, 0xec, 0xc4, 0x14, 0x2e, 0x91, 0xac, 0x49, 0x98, 0x9c, 0x04, 0x93, 0x2e, 0x6b, - 0x72, 0xfd, 0x98, 0xf4, 0x79, 0x32, 0x7c, 0x02, 0x38, 0x8a, 0xf3, 0x4d, 0xec, 0x94, 0x4a, 0xfb, - 0xbf, 0xb9, 0xe5, 0xb3, 0x53, 0x53, 0x34, 0x22, 0x24, 0x22, 0x9f, 0xfd, 0x74, 0xc6, 0x3f, 0x2d, - 0x45, 0x15, 0xa6, 0x21, 0xaf, 0x2c, 0x80, 0x9e, 0x8e, 0x38, 0x84, 0x76, 0x59, 0x93, 0xec, 0x0c, - 0xc4, 0xa1, 0x96, 0xf2, 0x73, 0x66, 0x8a, 0xba, 0x8f, 0xc7, 0xb3, 0x52, 0x94, 0x2b, 0x7a, 0x8c, - 0xb9, 0x3d, 0x3b, 0x45, 0x25, 0x1d, 0x85, 0xb5, 0xeb, 0x73, 0xc0, 0xa9, 0x97, 0x0b, 0x59, 0x49, - 0xec, 0xdc, 0x14, 0x8e, 0xc8, 0x93, 0x01, 0x25, 0x16, 0x57, 0x81, 0x41, 0x89, 0x9d, 0x97, 0xa2, - 0xd5, 0x2f, 0x02, 0x7a, 0x65, 0x41, 0xf8, 0xf9, 0xa9, 0xc8, 0x8b, 0x06, 0x46, 0xe2, 0x47, 0xe0, - 0xaf, 0x10, 0x1a, 0xaa, 0x35, 0x94, 0xa7, 0x1f, 0x57, 0xa3, 0xb8, 0xa6, 0xbb, 0x00, 0xb4, 0xb1, - 0x8a, 0x6f, 0x4d, 0xc9, 0xf7, 0x88, 0x62, 0x58, 0xbc, 0x17, 0xa2, 0xcb, 0xc3, 0xd9, 0x4e, 0xb8, - 0xdd, 0x06, 0xfe, 0xc3, 0xd9, 0x4e, 0x52, 0x09, 0x84, 0x55, 0x2c, 0xe9, 0x61, 0xb9, 0x28, 0x45, - 0x45, 0x55, 0x2d, 0x51, 0xe3, 0x73, 0x31, 0x84, 0x1d, 0xb6, 0x4d, 0x4e, 0x04, 0x4e, 0xf8, 0x76, - 0xe5, 0x03, 0x52, 0x8a, 0x2a, 0x2e, 0x2e, 0x54, 0x7b, 0xd2, 0xa5, 0x08, 0xd7, 0x61, 0xdb, 0x28, - 0x36, 0x4b, 0xa0, 0xe8, 0xb0, 0x36, 0x5c, 0xa6, 0x8d, 0xf4, 0x4b, 0x44, 0xc5, 0xdf, 0xe5, 0x29, - 0xaa, 0xfb, 0xa8, 0x48, 0x79, 0xbb, 0x02, 0xd9, 0x53, 0xde, 0x24, 0x06, 0x5f, 0xdb, 0x43, 0x76, - 0xe1, 0xfb, 0x4d, 0xc5, 0xdb, 0x8e, 0x90, 0x5d, 0x45, 0xa8, 0xfc, 0xed, 0x8c, 0xb1, 0x53, 0x62, - 0xb9, 0x66, 0x6a, 0x0a, 0xc4, 0x39, 0xea, 0x6d, 0x37, 0xca, 0xa2, 0x22, 0x50, 0x9e, 0xf6, 0x80, - 0x41, 0xa6, 0x3c, 0x3a, 0x5d, 0x7e, 0xae, 0x04, 0x83, 0xb8, 0x50, 0xd9, 0x5d, 0x05, 0x06, 0x99, - 0xf2, 0xe8, 0x94, 0xfc, 0x5c, 0xad, 0x8d, 0xa6, 0xe6, 0xe7, 0x1a, 0x90, 0x8b, 0x8a, 0x94, 0xb7, - 0x6b, 0x65, 0x75, 0x49, 0x6f, 0x91, 0xfc, 0x5c, 0x17, 0xb2, 0x9b, 0x26, 0x3f, 0x3f, 0x09, 0xd9, - 0x4d, 0xc9, 0xcf, 0x4f, 0x63, 0xec, 0xa2, 0xf9, 0xf9, 0x99, 0xa6, 0x50, 0x9d, 0x9f, 0x9f, 0x23, - 0x3f, 0x15, 0x81, 0xf2, 0xf4, 0x0b, 0x04, 0x19, 0x76, 0x9d, 0x89, 0xb0, 0xba, 0x54, 0x11, 0xb3, - 0x5f, 0xc2, 0x22, 0x26, 0xa2, 0xb3, 0xd0, 0xaf, 0xa6, 0xc2, 0x5d, 0x3c, 0xc7, 0x7e, 0x9d, 0x92, - 0xbf, 0x48, 0x73, 0x37, 0x73, 0x5f, 0x64, 0x8f, 0x61, 0xbf, 0x49, 0xe1, 0xf3, 0x9e, 0xb5, 0x09, - 0xd9, 0x63, 0xbf, 0x0d, 0x9b, 0x98, 0x0d, 0xbf, 0x83, 0xf6, 0x20, 0xf7, 0x1d, 0xcf, 0xee, 0xb0, - 0x6d, 0xf6, 0x7b, 0x4c, 0x78, 0xd9, 0xc6, 0xd2, 0xf7, 0x07, 0x4c, 0x8e, 0x0d, 0x65, 0xcb, 0x17, - 0xdc, 0x67, 0xd7, 0x43, 0x3d, 0xc3, 0x73, 0x59, 0x0f, 0xe6, 0x37, 0xa4, 0xe4, 0x6b, 0x61, 0x91, - 0x67, 0x69, 0xa5, 0x63, 0x37, 0xa6, 0xf4, 0x0b, 0x2e, 0xf8, 0x90, 0xc7, 0x9b, 0x52, 0xb4, 0x30, - 0x66, 0xbd, 0x2e, 0x6b, 0x32, 0x60, 0x37, 0x4b, 0x7d, 0xb5, 0x2a, 0x06, 0xec, 0x16, 0x2c, 0x01, - 0x6a, 0x4a, 0xe9, 0x79, 0x76, 0x2b, 0x06, 0x29, 0x02, 0xaa, 0x29, 0x76, 0x1b, 0x96, 0xc5, 0xd0, - 0x39, 0x26, 0xf6, 0xed, 0x70, 0x10, 0x62, 0xf2, 0x12, 0xfe, 0x8e, 0x94, 0x5e, 0xc5, 0x01, 0xea, - 0x79, 0x7e, 0x27, 0xba, 0xd2, 0x67, 0x05, 0x82, 0x96, 0xb6, 0xbb, 0xe0, 0x2d, 0x23, 0x7c, 0xa2, - 0x26, 0x64, 0x72, 0xfe, 0x28, 0xcb, 0x23, 0x8a, 0x51, 0x35, 0xb2, 0x3f, 0x55, 0xe1, 0x7a, 0x2c, - 0xef, 0x46, 0x20, 0x3a, 0x6b, 0xeb, 0x61, 0x00, 0xa9, 0xbd, 0x53, 0x60, 0xe2, 0xc5, 0xf6, 0x61, - 0x69, 0x52, 0x2f, 0x88, 0xa1, 0xef, 0x7b, 0x62, 0xa8, 0xf6, 0x7c, 0xaf, 0x9e, 0x78, 0xa4, 0x17, - 0xdd, 0xaa, 0xd8, 0x7d, 0xd1, 0xf9, 0xa5, 0x2e, 0xb2, 0x5d, 0xc1, 0xee, 0x8f, 0x2e, 0x31, 0x6a, - 0xe3, 0x53, 0xa7, 0xda, 0x3f, 0x47, 0x2d, 0xd2, 0xae, 0xfe, 0x99, 0xc0, 0x5f, 0x90, 0x80, 0x0a, - 0x4c, 0x5e, 0x1e, 0x48, 0xd1, 0xf9, 0x42, 0x61, 0x9a, 0xa2, 0xd2, 0x7f, 0x30, 0x3a, 0xe3, 0xb5, - 0x0c, 0x9f, 0x7d, 0xf5, 0x24, 0x98, 0xc2, 0xf5, 0xa1, 0x68, 0xad, 0x57, 0xb8, 0x3e, 0x1c, 0x9d, - 0xee, 0x71, 0xae, 0x8f, 0x44, 0x2d, 0x2a, 0x5c, 0x1f, 0x95, 0x83, 0x15, 0xc2, 0xe4, 0xe5, 0x31, - 0x70, 0x55, 0x58, 0x15, 0xd7, 0xc7, 0xa3, 0xb3, 0x2f, 0xca, 0x75, 0x3f, 0xca, 0x9f, 0x86, 0x06, - 0xf5, 0xf8, 0x44, 0x4a, 0xdf, 0xfd, 0xab, 0x3d, 0xe9, 0xc9, 0x78, 0x8d, 0x61, 0x0a, 0x3c, 0xa5, - 0x17, 0x8d, 0x0a, 0x5d, 0xbc, 0x6e, 0x3c, 0x2d, 0xf7, 0xaf, 0x90, 0x14, 0xc0, 0x67, 0xa2, 0xca, - 0x69, 0x37, 0xfc, 0x32, 0xf2, 0x6c, 0x34, 0x49, 0x9a, 0x11, 0x2c, 0x9e, 0x8b, 0xae, 0x8c, 0x5a, - 0xa2, 0xcd, 0x9e, 0x8f, 0x75, 0x32, 0x76, 0x48, 0x62, 0x07, 0x62, 0x9d, 0xd4, 0x1f, 0x3e, 0x5c, - 0xc1, 0x5e, 0x88, 0xc5, 0x52, 0x02, 0xc4, 0x7a, 0x31, 0x16, 0x4b, 0x1f, 0xab, 0x54, 0xac, 0x97, - 0xf4, 0xe6, 0x51, 0xd5, 0xcf, 0xbf, 0xa1, 0x9f, 0x95, 0x42, 0x01, 0xf8, 0x72, 0x54, 0x39, 0xd2, - 0xcf, 0x57, 0xa2, 0x85, 0x1b, 0xeb, 0xe7, 0xab, 0xd1, 0x1d, 0xb2, 0xba, 0x9f, 0xaf, 0xc5, 0x0a, - 0x2f, 0xde, 0xcf, 0xd7, 0x63, 0x85, 0x17, 0xe9, 0xe7, 0x1b, 0xb1, 0x58, 0xd1, 0x7e, 0xbe, 0x19, - 0x8b, 0x55, 0xd5, 0xcf, 0xbf, 0xa7, 0xe8, 0x35, 0xb1, 0x6a, 0x1e, 0x52, 0x49, 0xa8, 0x78, 0xff, - 0x88, 0x76, 0x8d, 0xdc, 0x29, 0xfc, 0xad, 0x68, 0x1e, 0xf0, 0x29, 0xc3, 0x15, 0xec, 0x6d, 0x4c, - 0xdf, 0x08, 0x88, 0xf8, 0xff, 0x8c, 0x52, 0x26, 0x44, 0xc7, 0x7e, 0x27, 0x3a, 0x4d, 0x15, 0xa8, - 0xdc, 0xbf, 0x1b, 0x0d, 0xab, 0xbf, 0x87, 0xb8, 0x82, 0xbd, 0x17, 0xeb, 0xbe, 0xc4, 0x11, 0xe4, - 0xfd, 0x58, 0xce, 0xa4, 0x40, 0xc7, 0xf9, 0x20, 0x5a, 0x86, 0x91, 0x3e, 0x7c, 0x18, 0xad, 0x59, - 0xdd, 0x87, 0x8f, 0xd0, 0x87, 0x08, 0x08, 0xf7, 0x1f, 0x47, 0xcb, 0x2b, 0xda, 0x87, 0x4f, 0xa2, - 0xd3, 0x37, 0xde, 0x87, 0x4f, 0xa3, 0x61, 0x23, 0x7d, 0xf8, 0x2c, 0x56, 0xaa, 0x91, 0x3e, 0x7c, - 0x1e, 0xab, 0xef, 0x78, 0x1f, 0xfe, 0x95, 0x32, 0x57, 0x19, 0x87, 0x4d, 0x5b, 0x13, 0xe1, 0xea, - 0x79, 0xec, 0x1a, 0x7a, 0xa5, 0x9f, 0x5a, 0x1b, 0xa1, 0xc2, 0x71, 0x6b, 0xe8, 0x35, 0x6d, 0x9a, - 0x1a, 0x09, 0x35, 0x8e, 0x5f, 0x63, 0x36, 0x1a, 0x2b, 0xa6, 0xaf, 0x95, 0x50, 0xe9, 0x84, 0x35, - 0xc4, 0x65, 0xda, 0x79, 0x18, 0xea, 0x9c, 0x08, 0x2e, 0x53, 0xe7, 0x63, 0xa8, 0x70, 0x12, 0xb8, - 0x4c, 0x33, 0x2f, 0x43, 0x8d, 0x93, 0xc1, 0x65, 0xfa, 0xf9, 0x19, 0x2a, 0x9d, 0xb2, 0x46, 0x7d, - 0x4f, 0x54, 0x97, 0xfd, 0xfb, 0xdb, 0xcc, 0x1a, 0x63, 0xd6, 0x5a, 0xc7, 0x65, 0x4f, 0xb4, 0xd1, - 0x5b, 0x46, 0x47, 0xa6, 0x33, 0x9d, 0x66, 0x4f, 0xb6, 0xe1, 0x5b, 0xf7, 0xb8, 0xe5, 0xb3, 0xa7, - 0xda, 0xf0, 0xed, 0x63, 0xdc, 0xf2, 0xa5, 0xc5, 0x70, 0xb6, 0xe7, 0x1b, 0xec, 0xe9, 0x36, 0xda, - 0x97, 0xd5, 0x8f, 0xcc, 0x9f, 0x69, 0x93, 0x5f, 0x2a, 0xa8, 0x71, 0x54, 0x86, 0x3d, 0xdb, 0x46, - 0x3b, 0xa5, 0x3a, 0x43, 0xb0, 0xe7, 0xe0, 0xbf, 0xbb, 0x20, 0xd8, 0xf3, 0x6d, 0xb4, 0x3a, 0x76, - 0x4f, 0x94, 0x3c, 0x5f, 0x64, 0xb8, 0x38, 0x82, 0x76, 0xb5, 0x03, 0x71, 0xec, 0x48, 0xc2, 0x5e, - 0x88, 0x63, 0x5f, 0x27, 0xec, 0x45, 0x84, 0xc0, 0xff, 0x62, 0x50, 0x45, 0xbc, 0xd4, 0x86, 0x0f, - 0x09, 0xd4, 0x94, 0x8b, 0x4c, 0x1b, 0x1d, 0xcb, 0xd1, 0x56, 0xb5, 0xf4, 0xb2, 0xd2, 0x70, 0xed, - 0xb4, 0x9b, 0xe1, 0x82, 0xbd, 0x02, 0xc2, 0x6a, 0x9d, 0x7e, 0xb5, 0x0d, 0x5b, 0x2c, 0x1a, 0x74, - 0x44, 0xe8, 0xf3, 0x72, 0x56, 0x81, 0xb3, 0xd7, 0xda, 0xf0, 0x53, 0x6f, 0xdf, 0x2b, 0xae, 0xb5, - 0x02, 0xde, 0x76, 0x24, 0x7b, 0x1d, 0x4e, 0xd6, 0xf1, 0x89, 0xb4, 0x8b, 0x33, 0xc4, 0x1b, 0xba, - 0x9d, 0x11, 0x3e, 0xb5, 0xdf, 0x6c, 0x93, 0x5f, 0xd4, 0x02, 0xee, 0x0b, 0xa4, 0xe5, 0xef, 0x6d, - 0xf2, 0x8b, 0x1a, 0x01, 0xec, 0x1f, 0x6d, 0xf2, 0xba, 0x5d, 0xdd, 0xf4, 0xb2, 0xb7, 0xda, 0xe4, - 0x47, 0xbc, 0x40, 0xf8, 0xec, 0x6d, 0x3c, 0xf7, 0x65, 0x7d, 0xa7, 0xc8, 0xfe, 0xd9, 0x26, 0x7f, - 0xb5, 0x37, 0x26, 0x7d, 0xbc, 0xd3, 0x26, 0x7f, 0x85, 0x3e, 0x26, 0xd8, 0xbb, 0x70, 0xa7, 0x06, - 0xea, 0xbd, 0x36, 0x5c, 0x9f, 0x78, 0x39, 0x4b, 0xe0, 0x44, 0x10, 0x40, 0xfb, 0xfd, 0x08, 0x7a, - 0x44, 0x88, 0x7e, 0x80, 0x7c, 0x44, 0x74, 0xd9, 0x87, 0x11, 0x04, 0x7a, 0xec, 0x23, 0x49, 0xc1, - 0xdb, 0xc2, 0x7d, 0xf6, 0xb1, 0xa4, 0x50, 0xb2, 0x6c, 0x98, 0x7f, 0x22, 0x29, 0x94, 0x2c, 0x9b, - 0x7d, 0x8a, 0xc1, 0xa4, 0x13, 0x1f, 0x65, 0xf1, 0x33, 0x10, 0x5a, 0x9f, 0xc3, 0x16, 0xfa, 0x39, - 0xfa, 0xb7, 0x3e, 0x17, 0xfe, 0x72, 0x10, 0x23, 0xbd, 0xde, 0xb7, 0xd9, 0xb1, 0xed, 0xe4, 0x1a, - 0x17, 0xa9, 0xec, 0x38, 0x3c, 0x0f, 0xa1, 0xa7, 0xc7, 0xb7, 0xe3, 0xfb, 0x2a, 0x2f, 0x71, 0x4b, - 0xb0, 0x13, 0xda, 0xf1, 0xbb, 0x05, 0x79, 0x21, 0xcd, 0x4e, 0x6c, 0x97, 0x1f, 0x5a, 0x36, 0x73, - 0x3f, 0xc0, 0x45, 0x3a, 0x3b, 0x49, 0xc9, 0x81, 0xb0, 0x93, 0xdb, 0xf1, 0x0d, 0xc0, 0xc9, 0x8f, - 0xcb, 0x2c, 0x9d, 0x22, 0xdd, 0x52, 0x9b, 0x9d, 0xda, 0x8e, 0x4f, 0x39, 0x9a, 0xfd, 0x69, 0xed, - 0xf8, 0x5d, 0x07, 0xb1, 0x3f, 0x1d, 0x5a, 0x99, 0x12, 0x45, 0x38, 0xa3, 0x5d, 0xfe, 0x3b, 0x83, - 0x9f, 0x2b, 0x96, 0xd8, 0x99, 0xed, 0x6a, 0x49, 0x09, 0xc0, 0xbd, 0x92, 0xcf, 0xb3, 0xe2, 0x82, - 0x4a, 0x4a, 0xcf, 0x6e, 0x57, 0x6b, 0x5f, 0xc4, 0x82, 0x9d, 0x13, 0x07, 0x65, 0x62, 0xcf, 0x8d, - 0x83, 0x69, 0xd7, 0xe6, 0x13, 0xec, 0x3c, 0x70, 0xcc, 0x7a, 0xaa, 0xb2, 0xce, 0x97, 0x4d, 0xdf, - 0x29, 0xe2, 0xcc, 0xf7, 0x23, 0xf4, 0x8e, 0x9a, 0xd2, 0xef, 0x8f, 0xc3, 0xb6, 0x74, 0x79, 0x01, - 0xfa, 0x31, 0xec, 0xae, 0xe3, 0x13, 0x6c, 0x2b, 0x64, 0xc3, 0xa5, 0x12, 0x97, 0x65, 0x75, 0xa1, - 0x94, 0x51, 0x9b, 0x6d, 0x6b, 0xa7, 0x82, 0xac, 0xcc, 0x55, 0x76, 0x51, 0xbb, 0xfc, 0x6d, 0xc6, - 0x16, 0xa5, 0x7c, 0x71, 0x3b, 0x55, 0x7e, 0xf8, 0xfb, 0xd2, 0xf0, 0x15, 0xb3, 0xdd, 0x3c, 0xd4, - 0xa8, 0xd3, 0x70, 0x67, 0xb1, 0x14, 0xfb, 0x85, 0xf9, 0xa5, 0xed, 0x34, 0x21, 0xe5, 0xef, 0x46, - 0xb5, 0xc5, 0x65, 0xed, 0xb4, 0x8c, 0x03, 0xab, 0x56, 0xbf, 0x5c, 0x77, 0xd5, 0x71, 0x2d, 0x7f, - 0x92, 0x5d, 0xd1, 0x1e, 0xce, 0x2a, 0x09, 0x6c, 0xff, 0xa2, 0x60, 0x38, 0x45, 0xef, 0x98, 0xd6, - 0x31, 0x44, 0x3b, 0xdb, 0xa3, 0xbf, 0x78, 0x05, 0xb4, 0xab, 0x3d, 0xfc, 0xb5, 0x2a, 0xda, 0xbb, - 0xdb, 0x57, 0xff, 0x30, 0xfa, 0xcf, 0x92, 0xf8, 0x8f, 0x39, 0x73, 0xb9, 0xb1, 0xb4, 0x0a, 0x4a, - 0xbb, 0x9b, 0xad, 0x82, 0x63, 0xb3, 0x19, 0xe6, 0x32, 0x63, 0x49, 0x95, 0x2c, 0x33, 0xee, 0x95, - 0x0b, 0x36, 0x4b, 0x98, 0x75, 0xc6, 0x21, 0x55, 0xa2, 0xfe, 0x72, 0x20, 0xd8, 0xcc, 0x69, 0xfc, - 0x91, 0x60, 0xc0, 0x13, 0x6c, 0xd6, 0xea, 0xd3, 0x13, 0xb8, 0x33, 0xab, 0xfa, 0xdf, 0xbb, 0xb8, - 0x89, 0x46, 0x07, 0x3c, 0x97, 0xb3, 0x19, 0xe6, 0x97, 0x8c, 0xba, 0x69, 0xfe, 0x5b, 0xcf, 0xf3, - 0x02, 0xc1, 0x12, 0xe6, 0x61, 0xc6, 0xb2, 0xa9, 0xc2, 0x2e, 0x2e, 0xc5, 0x33, 0xcd, 0x43, 0x8d, - 0xe4, 0x34, 0x7e, 0x79, 0x9e, 0x92, 0x31, 0x6b, 0xf5, 0x0f, 0xa2, 0x5c, 0xf4, 0x3f, 0xaa, 0xc6, - 0xbb, 0x4c, 0x68, 0x25, 0x1b, 0x4b, 0xab, 0x0d, 0x70, 0x13, 0x98, 0x30, 0x93, 0xc6, 0xe2, 0x38, - 0x3e, 0x88, 0x7f, 0x51, 0x65, 0x33, 0xa7, 0x91, 0xc8, 0xfb, 0xc0, 0x59, 0xab, 0xb9, 0xb1, 0xa8, - 0xea, 0xff, 0xd2, 0xf0, 0x5f, 0x2e, 0x5e, 0xb1, 0x54, 0xe0, 0x82, 0xe3, 0x52, 0x67, 0x86, 0xb9, - 0x10, 0x8b, 0xb4, 0x55, 0x40, 0x33, 0x41, 0x0a, 0x83, 0x96, 0x2f, 0x1c, 0xab, 0x70, 0x38, 0x90, - 0x99, 0x11, 0xa4, 0x15, 0xc8, 0x2c, 0x32, 0xe9, 0xe2, 0x76, 0xb9, 0x84, 0xe6, 0xec, 0xb5, 0x5f, - 0xd9, 0x7b, 0x60, 0x45, 0xe2, 0x81, 0x03, 0x2b, 0x12, 0xcf, 0x1d, 0x58, 0x91, 0xd8, 0xf6, 0xc2, - 0x8a, 0x19, 0xc6, 0x92, 0x9c, 0x57, 0x6c, 0x29, 0x39, 0x6e, 0x3e, 0x67, 0x95, 0x5a, 0x84, 0x63, - 0x8f, 0xe2, 0xbf, 0xcf, 0x06, 0x13, 0xff, 0x17, 0x00, 0x00, 0xff, 0xff, 0x4c, 0xaf, 0x6c, 0xd5, - 0x10, 0x3d, 0x00, 0x00, + 0x14, 0x0c, 0xed, 0x17, 0x75, 0x75, 0xdd, 0xac, 0xa1, 0xc5, 0x41, 0x79, 0xb4, 0x92, 0xd1, 0xb5, + 0x07, 0x18, 0x73, 0xa9, 0x18, 0x57, 0xbf, 0x35, 0xdb, 0x98, 0x4b, 0xb0, 0xf9, 0xe5, 0x70, 0x3d, + 0xa9, 0x6d, 0xad, 0x95, 0x4e, 0x08, 0x8f, 0xcc, 0x24, 0x5a, 0x5f, 0x98, 0x31, 0x67, 0xc2, 0x2a, + 0xa0, 0x67, 0x8b, 0x86, 0xe8, 0xd1, 0xfc, 0xff, 0x46, 0x4d, 0x6e, 0xdc, 0x29, 0xd8, 0x3e, 0xd6, + 0x16, 0xaa, 0x7d, 0xa3, 0x62, 0x3d, 0x14, 0xca, 0xcc, 0xaf, 0x1a, 0x73, 0x02, 0x27, 0x0f, 0x96, + 0xb5, 0xad, 0x07, 0x49, 0x95, 0x4c, 0xce, 0x2a, 0x58, 0x7e, 0x4f, 0xd9, 0xcd, 0x65, 0x9c, 0xbc, + 0x8a, 0x42, 0x5a, 0x66, 0x8b, 0x61, 0x8c, 0xd1, 0x4a, 0x27, 0x27, 0xfa, 0x3c, 0xf4, 0x6c, 0x89, + 0xea, 0x99, 0x5e, 0x01, 0x87, 0x16, 0x8c, 0x85, 0x8b, 0x61, 0xbd, 0xb1, 0xc8, 0x2f, 0xb9, 0x1b, + 0x2d, 0x3f, 0x1f, 0x6c, 0xa4, 0x45, 0x8e, 0x2a, 0x6d, 0xf1, 0x90, 0xe1, 0x97, 0xdc, 0x0e, 0x3f, + 0x1f, 0xf4, 0x71, 0xd7, 0x6c, 0x32, 0x16, 0x8d, 0x5b, 0x01, 0xe6, 0xb7, 0xe3, 0xe6, 0x44, 0x72, + 0x7e, 0xa4, 0x16, 0x17, 0x8e, 0x5b, 0x41, 0x97, 0x12, 0x98, 0x4d, 0x46, 0x8d, 0xe7, 0xdb, 0xdc, + 0xdf, 0x38, 0x4a, 0x8b, 0x12, 0xf5, 0x67, 0x91, 0x0c, 0xbc, 0x76, 0x2a, 0x2d, 0x78, 0x71, 0x68, + 0x3e, 0xa4, 0x6b, 0xa7, 0xcc, 0x76, 0x63, 0xa1, 0x95, 0xcf, 0x13, 0xf9, 0x7e, 0xcf, 0xe6, 0xc9, + 0x05, 0xd1, 0x12, 0xe9, 0x90, 0x02, 0x41, 0xb5, 0x4b, 0x13, 0x3f, 0xaa, 0xb9, 0xfa, 0xab, 0xc6, + 0xfc, 0xa1, 0x92, 0x8b, 0xa4, 0xd7, 0x1b, 0xf3, 0x68, 0x04, 0xf5, 0xaa, 0x11, 0xcd, 0x9c, 0x14, + 0xac, 0x2e, 0x18, 0x07, 0xc8, 0xc0, 0xe6, 0x4a, 0x63, 0x2e, 0x41, 0x18, 0xa2, 0xb8, 0x2a, 0x70, + 0x5a, 0xde, 0x6c, 0x1e, 0xe4, 0x30, 0x36, 0xba, 0x67, 0x40, 0xcc, 0x66, 0xa3, 0x86, 0xb2, 0x03, + 0x6b, 0x59, 0x5b, 0x8b, 0xa5, 0xb5, 0xa2, 0x31, 0x34, 0xdf, 0x97, 0x0f, 0x6b, 0x5e, 0x9c, 0x67, + 0xd4, 0xe8, 0x51, 0x37, 0x6b, 0x8c, 0xb9, 0x03, 0xe5, 0x42, 0x81, 0xcd, 0x32, 0x17, 0x18, 0xf3, + 0xd2, 0xae, 0x68, 0x3b, 0x92, 0x25, 0x4c, 0xc3, 0x38, 0x60, 0xd8, 0xc1, 0xf3, 0x6c, 0x73, 0xa1, + 0x31, 0xbf, 0xa7, 0xe0, 0x59, 0xe2, 0x88, 0x56, 0x36, 0x27, 0x6c, 0xb4, 0x1d, 0xc9, 0xe6, 0x92, + 0x56, 0x46, 0xf8, 0x8e, 0x9b, 0x67, 0xf3, 0xc8, 0x78, 0xed, 0x94, 0xe0, 0x01, 0x3b, 0xc0, 0x5c, + 0x64, 0xd4, 0xf4, 0x4f, 0x05, 0x47, 0x17, 0xd6, 0x3a, 0x82, 0x71, 0x93, 0x19, 0x8b, 0xd0, 0xea, + 0x92, 0xfb, 0x0c, 0x1b, 0x33, 0x0f, 0x34, 0x16, 0x4b, 0xa4, 0xec, 0x5b, 0x94, 0x3b, 0x96, 0x37, + 0x17, 0x1b, 0x0b, 0x00, 0x75, 0xbb, 0xe5, 0x22, 0x1b, 0x0f, 0x3d, 0xac, 0xe3, 0x93, 0xcc, 0x09, + 0x5b, 0x19, 0x2e, 0xd8, 0xf7, 0x43, 0xd5, 0xac, 0x53, 0xe4, 0x6c, 0x53, 0xd8, 0xfc, 0x6e, 0xe0, + 0xb9, 0xac, 0x60, 0x2e, 0x33, 0x0e, 0xcc, 0x3a, 0x5d, 0x6b, 0x47, 0x78, 0x4e, 0x78, 0xbe, 0xa6, + 0x3d, 0x65, 0xd6, 0x1a, 0x0b, 0x46, 0xac, 0x42, 0x99, 0xf7, 0x39, 0x81, 0x60, 0x17, 0x26, 0xa8, + 0xdd, 0xe9, 0x15, 0xca, 0x45, 0x77, 0x88, 0x8f, 0xb1, 0xbd, 0xd4, 0xdf, 0x79, 0x9d, 0x5e, 0xd9, + 0x15, 0xec, 0xfa, 0x3a, 0xb3, 0xc6, 0x98, 0x93, 0x29, 0x17, 0xd9, 0x0d, 0x78, 0xea, 0x98, 0xc8, + 0xb3, 0x1b, 0xf1, 0xd4, 0xef, 0xb8, 0xec, 0x26, 0xf9, 0x64, 0x4d, 0xb2, 0x9b, 0xeb, 0xc8, 0xa6, + 0xc7, 0xf1, 0x03, 0xc1, 0x6e, 0xa9, 0x33, 0x99, 0xb1, 0xb0, 0xd7, 0xf7, 0xca, 0xa5, 0x4e, 0xcf, + 0xcd, 0x59, 0x82, 0xdd, 0x5a, 0x67, 0x2e, 0x31, 0x8c, 0x8e, 0x7c, 0x7e, 0xe3, 0x5a, 0x47, 0x74, + 0xb8, 0x36, 0xbb, 0xad, 0x8e, 0x42, 0x2a, 0x60, 0xbd, 0xcf, 0x6e, 0x8f, 0x2a, 0x7c, 0xcf, 0xf3, + 0xd9, 0x1d, 0x32, 0xae, 0xb0, 0xd9, 0x9d, 0x75, 0xe6, 0x42, 0xca, 0xab, 0x6d, 0xf3, 0x09, 0x76, + 0x17, 0xec, 0x64, 0x63, 0xd0, 0x2b, 0xb1, 0x3f, 0xc2, 0x4e, 0xb6, 0x33, 0x56, 0xb1, 0xc4, 0xfe, + 0x04, 0xed, 0x11, 0xcb, 0x27, 0xe9, 0xdd, 0x75, 0xe6, 0x22, 0x63, 0xfe, 0x88, 0xe5, 0x43, 0xb4, + 0xa7, 0xce, 0x5c, 0x6c, 0xd4, 0x8c, 0x58, 0xbe, 0x43, 0xdb, 0x19, 0xdb, 0x5b, 0x67, 0x1e, 0x68, + 0x2c, 0xa2, 0x34, 0x75, 0xd0, 0xbe, 0xdb, 0x91, 0xcf, 0xb3, 0x7b, 0xea, 0x4c, 0xd3, 0x58, 0x4c, + 0xd0, 0xfa, 0xd1, 0xef, 0xf3, 0x9c, 0x20, 0xec, 0xde, 0x3a, 0x33, 0x69, 0x1c, 0xd4, 0x51, 0x2a, + 0xf9, 0xde, 0x24, 0x52, 0xa2, 0xa7, 0x0c, 0xbb, 0x0f, 0x5c, 0x86, 0xbc, 0xcd, 0x03, 0xe5, 0xe2, + 0x28, 0xf7, 0xd9, 0xf6, 0x55, 0xe6, 0x02, 0x63, 0xee, 0x90, 0xe5, 0x6e, 0x62, 0x3b, 0x56, 0x91, + 0xa8, 0x8b, 0xbb, 0x01, 0x47, 0x7b, 0xe7, 0x2a, 0x0a, 0xdd, 0x59, 0x2e, 0x62, 0x37, 0x65, 0xbb, + 0x56, 0x51, 0x82, 0x06, 0xb9, 0x9f, 0xe3, 0xae, 0x80, 0xc2, 0xee, 0x55, 0x94, 0xbe, 0x01, 0xe1, + 0x14, 0x38, 0xbb, 0x12, 0x7e, 0xfa, 0xb8, 0x65, 0xb3, 0xab, 0x56, 0x51, 0x16, 0xfa, 0xac, 0x3c, + 0xbb, 0x7a, 0x15, 0x75, 0x14, 0xf9, 0xc5, 0xc0, 0xb1, 0x6b, 0x10, 0xa2, 0xcf, 0xd2, 0xed, 0x6b, + 0x11, 0x62, 0x40, 0x8c, 0xcb, 0xe6, 0x75, 0xd0, 0xaf, 0xac, 0x34, 0xec, 0xdc, 0x81, 0x35, 0xa7, + 0xe7, 0x8c, 0xc5, 0xb1, 0xb5, 0xc7, 0x5c, 0x62, 0x2c, 0x1c, 0x76, 0x83, 0x12, 0xcf, 0xd1, 0x4a, + 0x6c, 0xb3, 0x59, 0x54, 0x9c, 0x9d, 0x56, 0x20, 0xd2, 0xae, 0xe8, 0x08, 0xd2, 0xae, 0x60, 0x09, + 0x2a, 0xce, 0x10, 0x19, 0xe2, 0x56, 0x81, 0xcd, 0x36, 0x0f, 0x32, 0x96, 0x84, 0x90, 0xaa, 0xf7, + 0x39, 0xe6, 0x52, 0x83, 0x85, 0xa0, 0x2e, 0xed, 0xb9, 0x31, 0x6b, 0x14, 0xe8, 0x3c, 0xaa, 0xc8, + 0x8a, 0xa2, 0xae, 0xf8, 0x03, 0x62, 0x9a, 0xa8, 0xdd, 0xf9, 0x1a, 0xa2, 0xa8, 0x92, 0x8d, 0x61, + 0x9a, 0x46, 0x6d, 0x05, 0x02, 0x9d, 0x85, 0x3a, 0xb2, 0xc4, 0x14, 0x9f, 0x45, 0x3a, 0x8c, 0x44, + 0x35, 0xa1, 0xc5, 0x71, 0x07, 0x60, 0x54, 0x6b, 0x2e, 0x37, 0xcc, 0x88, 0xaa, 0xa6, 0xb4, 0x24, + 0xae, 0x0b, 0x4e, 0x4c, 0x07, 0x53, 0x0e, 0x25, 0xad, 0xa5, 0x3a, 0x58, 0x88, 0x82, 0xd9, 0x32, + 0xb3, 0xce, 0x38, 0x28, 0x06, 0x2b, 0x72, 0xcb, 0xcd, 0xa4, 0xb1, 0x34, 0x26, 0xd0, 0xfc, 0xea, + 0xa6, 0x79, 0x02, 0xc5, 0xa4, 0x79, 0xb0, 0xb1, 0x2c, 0x6e, 0xa0, 0x59, 0x1e, 0x3c, 0xcd, 0x02, + 0x44, 0x57, 0xe8, 0x41, 0x92, 0x21, 0x25, 0xcf, 0x95, 0x9a, 0xbd, 0x06, 0x41, 0x73, 0x95, 0xee, + 0xbf, 0x46, 0x15, 0xcb, 0x7a, 0x4d, 0x5f, 0xe3, 0x9a, 0x64, 0x43, 0xb5, 0x1b, 0x70, 0x5c, 0xad, + 0x3b, 0x15, 0xaa, 0x6b, 0x8a, 0x8d, 0xd5, 0xfa, 0x60, 0xf8, 0x65, 0x3d, 0xbc, 0x64, 0x2d, 0xf9, + 0x35, 0xeb, 0x8c, 0x4b, 0x08, 0xec, 0xbe, 0xa2, 0x8d, 0x25, 0xa6, 0xb8, 0xad, 0xd1, 0xbd, 0x96, + 0xa8, 0x66, 0xf6, 0xd5, 0xb8, 0x03, 0xf0, 0xfa, 0x37, 0xdd, 0x3d, 0xa5, 0xaa, 0x59, 0x7d, 0x2d, + 0xae, 0x0b, 0x4e, 0x2d, 0x61, 0x32, 0x95, 0x96, 0xe4, 0xd5, 0xaa, 0x5d, 0x54, 0x60, 0x70, 0x3b, + 0x22, 0x1c, 0xc7, 0x10, 0x57, 0xfc, 0x8e, 0x0c, 0x07, 0x2c, 0x94, 0x68, 0x8e, 0x5f, 0x9f, 0xee, + 0x0c, 0x3c, 0xdb, 0xcc, 0x15, 0xc6, 0xf2, 0x2a, 0x13, 0xcd, 0xb5, 0x7d, 0xba, 0x0d, 0xf8, 0x7e, + 0x43, 0xe7, 0x10, 0xab, 0x18, 0xb8, 0x7e, 0x4b, 0x77, 0x4b, 0x42, 0xe0, 0xf9, 0x1f, 0x3a, 0x87, + 0x12, 0x53, 0x1c, 0xbf, 0xad, 0x3b, 0x2b, 0x51, 0xcd, 0xef, 0x3b, 0x71, 0x07, 0xe0, 0xf6, 0x9f, + 0x3a, 0xbe, 0x52, 0xd5, 0xbc, 0x3a, 0xe2, 0xba, 0xe0, 0xb4, 0x96, 0x96, 0xb6, 0x4e, 0xcf, 0x2a, + 0xf0, 0x20, 0xc7, 0x89, 0xd1, 0xab, 0xf5, 0xb4, 0xce, 0x6a, 0x04, 0x84, 0x5e, 0xab, 0x37, 0x97, + 0x1a, 0x4b, 0x34, 0xa4, 0x23, 0xbf, 0x5e, 0x6f, 0x1e, 0x64, 0xd4, 0x6a, 0x54, 0xb1, 0x7c, 0x23, + 0x66, 0x0d, 0x36, 0x6f, 0xd6, 0x9b, 0xcb, 0x0c, 0x16, 0x5a, 0x6b, 0x32, 0x7f, 0x8f, 0x69, 0x82, + 0xcb, 0x3f, 0xea, 0x69, 0x1b, 0xee, 0xcb, 0x12, 0x0d, 0x9b, 0x76, 0xe7, 0xbe, 0x2c, 0xe2, 0x73, + 0xda, 0x25, 0xfb, 0xb2, 0x95, 0x1d, 0x78, 0x91, 0x51, 0xd3, 0x97, 0x55, 0x11, 0xf3, 0x52, 0x11, + 0xa1, 0xc6, 0xcd, 0x5a, 0xc3, 0xe8, 0xcb, 0x86, 0x31, 0x1c, 0x29, 0x83, 0xf3, 0xef, 0xc3, 0x77, + 0x37, 0xf9, 0x76, 0x01, 0x77, 0xc3, 0xb7, 0x07, 0xdf, 0xdd, 0xda, 0x77, 0x09, 0xbe, 0xbb, 0x95, + 0xef, 0xa3, 0xa5, 0x22, 0x7c, 0xfb, 0xf0, 0xdd, 0x1d, 0xfa, 0x0e, 0xa4, 0x0c, 0xbe, 0x05, 0xf9, + 0xee, 0x05, 0xef, 0x49, 0x82, 0x7b, 0x25, 0xef, 0x29, 0xf2, 0xdd, 0x1b, 0xf2, 0x3e, 0x86, 0x7c, + 0xf7, 0x6a, 0xde, 0x3f, 0x90, 0x8a, 0xf0, 0xfd, 0x3f, 0xe4, 0xbb, 0xb7, 0xc2, 0xfb, 0x87, 0x52, + 0x06, 0xdf, 0xff, 0x2b, 0x37, 0x67, 0x6e, 0x09, 0x8e, 0xe5, 0x96, 0x7d, 0x80, 0xc4, 0x69, 0x04, + 0x81, 0x3e, 0xc4, 0x00, 0x69, 0x48, 0xc7, 0xfb, 0x08, 0x03, 0xa4, 0x51, 0x15, 0xf6, 0xe3, 0x98, + 0x35, 0xa2, 0x7f, 0x52, 0x4f, 0x5b, 0x51, 0x1f, 0x97, 0xcb, 0x39, 0xfb, 0xb4, 0x1e, 0x3b, 0x15, + 0x57, 0x4b, 0x29, 0xfb, 0x0c, 0x16, 0x68, 0x6b, 0xcf, 0x9f, 0xd7, 0x13, 0x29, 0x40, 0xca, 0xed, + 0xbf, 0x2a, 0x46, 0xf0, 0x79, 0x6c, 0x03, 0x69, 0xa4, 0x5d, 0xc1, 0xfd, 0x09, 0xab, 0x40, 0x6e, + 0x8f, 0x6b, 0x20, 0x37, 0x1a, 0x81, 0xe7, 0xe3, 0x1b, 0x68, 0x17, 0xed, 0xc5, 0x98, 0x1c, 0x9f, + 0xa0, 0x83, 0x40, 0xaf, 0x1c, 0x94, 0x13, 0x70, 0xc2, 0xe9, 0x0d, 0x47, 0xe5, 0xc4, 0x04, 0x31, + 0xec, 0xd5, 0xc3, 0x72, 0x92, 0xd2, 0x45, 0xa4, 0x93, 0x13, 0xb4, 0x73, 0xf6, 0x56, 0x06, 0xe6, + 0x14, 0x25, 0x45, 0xf6, 0x4e, 0xc5, 0xd9, 0xa8, 0x7b, 0x03, 0x85, 0x38, 0x13, 0x82, 0xee, 0x0d, + 0x08, 0x71, 0x16, 0x42, 0x74, 0x6f, 0xd0, 0x21, 0xce, 0x46, 0x88, 0xee, 0x0d, 0x2a, 0xc4, 0x39, + 0x4a, 0x17, 0x21, 0xce, 0x45, 0x88, 0xee, 0x0d, 0x61, 0x88, 0xf3, 0x94, 0x14, 0x21, 0xce, 0x47, + 0x88, 0x01, 0xf4, 0x62, 0x0b, 0x04, 0x03, 0xb2, 0x17, 0xf2, 0x9c, 0x36, 0x10, 0xf6, 0x62, 0x2b, + 0x42, 0x0c, 0xe8, 0x5e, 0x5c, 0xa4, 0x74, 0x11, 0xe2, 0x62, 0x84, 0x18, 0xa8, 0xf4, 0xe2, 0x12, + 0x25, 0x45, 0x88, 0x4b, 0xa5, 0xa7, 0x72, 0xa1, 0x20, 0x7b, 0xb2, 0x4d, 0x6a, 0xa3, 0x8d, 0x50, + 0xdb, 0x13, 0x74, 0x12, 0x92, 0x80, 0x0e, 0xb7, 0x83, 0x0e, 0x03, 0x8b, 0x24, 0xa6, 0x42, 0xee, + 0x8c, 0xd8, 0x21, 0xec, 0xae, 0x04, 0x95, 0x88, 0xb2, 0xd3, 0xa1, 0x77, 0x47, 0xb4, 0x10, 0xfe, + 0x4a, 0x10, 0x1f, 0x2c, 0x94, 0xe5, 0xfa, 0xb4, 0x27, 0x81, 0xe3, 0x50, 0xa1, 0x1c, 0x2e, 0x42, + 0x7b, 0x13, 0x74, 0x70, 0x23, 0x84, 0xd8, 0xdd, 0x0b, 0xb6, 0xfd, 0x8e, 0xab, 0xf4, 0xef, 0x03, + 0x11, 0xb4, 0xb5, 0xc1, 0xfd, 0xf0, 0x08, 0x88, 0x2c, 0xfe, 0x22, 0x35, 0xca, 0x05, 0xe1, 0x94, + 0x0a, 0x53, 0x30, 0x7a, 0x20, 0x41, 0x25, 0xad, 0x21, 0x6d, 0xf7, 0x20, 0x42, 0x6b, 0x94, 0x4c, + 0xff, 0x0a, 0xb2, 0x5d, 0xce, 0x84, 0x63, 0xcb, 0xc5, 0xea, 0x21, 0xa4, 0x42, 0x02, 0xda, 0xec, + 0xe1, 0x84, 0xaa, 0x3d, 0x09, 0x93, 0xdd, 0x23, 0x09, 0x5a, 0x95, 0x42, 0x48, 0x6b, 0x3e, 0x8a, + 0x9e, 0xf4, 0x7b, 0x36, 0x7c, 0x3d, 0x06, 0xe7, 0xfd, 0x9e, 0xad, 0xc5, 0x8f, 0x63, 0x54, 0xfa, + 0x3d, 0x9b, 0x5c, 0xec, 0x4b, 0xd0, 0x51, 0x33, 0x42, 0x66, 0xd8, 0x0d, 0x9c, 0xbc, 0xcb, 0x6d, + 0xf6, 0x44, 0xc2, 0x3c, 0xc4, 0xa8, 0x53, 0xf9, 0xd0, 0x68, 0x28, 0x7d, 0x32, 0x61, 0xae, 0x30, + 0x96, 0x55, 0x49, 0x33, 0x52, 0xf6, 0x54, 0x54, 0x96, 0x89, 0xdb, 0x3d, 0x8d, 0x78, 0x31, 0x99, + 0xb2, 0x7a, 0x26, 0x61, 0x7e, 0xc9, 0x58, 0x2e, 0x69, 0x4d, 0x0b, 0xf7, 0x6c, 0xc2, 0x3c, 0xd8, + 0x58, 0x1a, 0x17, 0x2a, 0xbb, 0xe7, 0x22, 0xa2, 0xaa, 0x60, 0xcf, 0x27, 0xcc, 0x3a, 0xc3, 0x8c, + 0x8a, 0x94, 0xcd, 0xfe, 0x84, 0x79, 0xa8, 0x91, 0xd4, 0x43, 0x37, 0x2d, 0xda, 0x0b, 0x92, 0x4a, + 0x95, 0x58, 0xd9, 0xbe, 0x18, 0x13, 0x56, 0x45, 0x7c, 0x49, 0x92, 0x89, 0x09, 0x95, 0xdd, 0xdf, + 0x12, 0x66, 0xa3, 0xb1, 0x52, 0x8b, 0x7a, 0x3c, 0x3f, 0x57, 0xb1, 0x0b, 0xed, 0x5f, 0x4e, 0x98, + 0x0d, 0xc6, 0x21, 0x33, 0x2b, 0x29, 0x3f, 0xaf, 0xcc, 0xa0, 0x52, 0xc5, 0xe2, 0x55, 0xa8, 0x44, + 0x4b, 0x65, 0x5a, 0xa0, 0xd7, 0x12, 0xe6, 0x2a, 0x63, 0xc5, 0x4c, 0x2a, 0x2a, 0xcc, 0xeb, 0x48, + 0x51, 0x54, 0x21, 0xd6, 0x9b, 0x37, 0xa6, 0xd9, 0x57, 0x71, 0x78, 0x13, 0x55, 0xd6, 0x31, 0x8a, + 0xb9, 0xf1, 0x5b, 0x46, 0x15, 0xd9, 0x31, 0x1a, 0x0c, 0x53, 0xeb, 0x77, 0xba, 0x85, 0xfa, 0xfc, + 0x3d, 0xc3, 0x6b, 0xd8, 0x68, 0x38, 0xaf, 0xfe, 0xc0, 0xb0, 0xa9, 0x72, 0x87, 0x96, 0xdc, 0xac, + 0xd7, 0xc5, 0x73, 0xec, 0xfa, 0x38, 0x44, 0x4e, 0x6e, 0x08, 0xa1, 0x2e, 0x9e, 0x93, 0xd0, 0x8d, + 0x71, 0x88, 0x0c, 0x6f, 0x62, 0x78, 0x09, 0xe2, 0x8e, 0x5c, 0xac, 0x6f, 0x66, 0x34, 0xaf, 0x7a, + 0x0a, 0x9e, 0xe7, 0x87, 0xbe, 0x6f, 0xa9, 0xc2, 0xc8, 0xd3, 0xad, 0x15, 0x2c, 0xf4, 0x7e, 0x5b, + 0x15, 0x46, 0xb6, 0xb7, 0x33, 0x5a, 0x25, 0x80, 0xc1, 0xff, 0x1d, 0x4c, 0xbe, 0x9e, 0x95, 0x5d, + 0x39, 0xf7, 0xf6, 0x22, 0x3c, 0xda, 0xe4, 0xe2, 0x9e, 0x4a, 0x93, 0xac, 0xef, 0x65, 0xe6, 0x72, + 0xe3, 0x40, 0x34, 0x8f, 0x72, 0xc4, 0x78, 0x8f, 0x6f, 0xe5, 0xe4, 0x5a, 0xc3, 0x68, 0x5a, 0xc7, + 0x70, 0xb2, 0xbe, 0x7f, 0x3a, 0x4c, 0x5e, 0xfe, 0x8c, 0x6c, 0xf6, 0x79, 0xf9, 0xc3, 0x3b, 0xfc, + 0x3c, 0x7b, 0x08, 0x21, 0xfa, 0xbc, 0x7c, 0x6b, 0x87, 0x9f, 0x0f, 0xd8, 0xc3, 0x0c, 0xef, 0x75, + 0x5e, 0xbe, 0x95, 0x3d, 0xc2, 0x68, 0x89, 0x27, 0xbd, 0xc3, 0xd8, 0xa3, 0x4c, 0xbd, 0x36, 0xda, + 0xec, 0x31, 0x46, 0x15, 0x4b, 0x8f, 0xe4, 0x34, 0xc3, 0xb9, 0x8d, 0x17, 0xbe, 0x5e, 0xee, 0xb2, + 0xc7, 0x19, 0xbd, 0x09, 0x0e, 0x7a, 0x9b, 0xd9, 0x3e, 0xe8, 0x77, 0x7a, 0xee, 0x04, 0x7b, 0x02, + 0x6e, 0x3a, 0x87, 0x3a, 0x8f, 0x68, 0x65, 0x4f, 0x02, 0xa6, 0x81, 0x67, 0x4f, 0xc9, 0xc7, 0xa3, + 0x7d, 0xc1, 0x9e, 0xc6, 0x63, 0x47, 0xce, 0x0b, 0xd8, 0x33, 0xf2, 0x31, 0x70, 0x5c, 0xf6, 0x2c, + 0x88, 0x75, 0x08, 0xcb, 0x05, 0xcf, 0xe7, 0x90, 0x29, 0x6a, 0x4a, 0xa2, 0xcf, 0x23, 0x56, 0xa7, + 0x17, 0xb0, 0xfd, 0xea, 0x49, 0xb0, 0x17, 0xd0, 0xb3, 0x2e, 0x9e, 0xf7, 0x39, 0x0f, 0xd8, 0x8b, + 0xc0, 0xbb, 0x27, 0x4b, 0xec, 0x25, 0x66, 0xce, 0x37, 0x66, 0x0f, 0xa6, 0xd9, 0xdf, 0xa0, 0x30, + 0x64, 0xd9, 0x8e, 0xe5, 0x06, 0xec, 0x65, 0x28, 0x64, 0x1c, 0x97, 0xbd, 0x82, 0xa7, 0xac, 0xe5, + 0xb2, 0x57, 0x19, 0xad, 0xb5, 0x59, 0xbf, 0xec, 0xe6, 0x2c, 0x81, 0x35, 0xf3, 0x35, 0x14, 0x89, + 0x46, 0x90, 0xef, 0xd7, 0xe9, 0x15, 0x6b, 0x89, 0x86, 0x74, 0x19, 0xbe, 0x11, 0x53, 0x1c, 0x76, + 0x5c, 0xc1, 0xde, 0x44, 0xa9, 0xf6, 0x79, 0x79, 0x27, 0x67, 0x15, 0x3a, 0x5c, 0x9b, 0x5d, 0x96, + 0xc4, 0x89, 0x41, 0x02, 0xeb, 0x7d, 0x76, 0x79, 0x32, 0xa2, 0xf0, 0x3d, 0xcf, 0x67, 0x57, 0x24, + 0x29, 0xfe, 0xb0, 0x6b, 0xf9, 0x53, 0x03, 0x1e, 0x4e, 0x26, 0xdb, 0x92, 0x14, 0x4c, 0x23, 0x3a, + 0xd8, 0xf6, 0x24, 0x05, 0xd3, 0x28, 0x58, 0xed, 0x88, 0x41, 0xdf, 0xcd, 0xac, 0x1f, 0x60, 0x3b, + 0x93, 0x54, 0x82, 0x80, 0xc2, 0x6d, 0x67, 0x57, 0x92, 0x76, 0xbf, 0x0a, 0x06, 0xdb, 0xdd, 0x49, + 0xaa, 0xac, 0x0a, 0xa8, 0xc3, 0x5c, 0x09, 0x07, 0xaa, 0x95, 0x0e, 0x70, 0xe7, 0x74, 0x15, 0x1c, + 0xe8, 0x8d, 0x53, 0x81, 0x57, 0xa3, 0x23, 0xe4, 0x4b, 0x01, 0xd7, 0x80, 0x8d, 0xdc, 0x82, 0x15, + 0x74, 0x2d, 0x74, 0x68, 0x0b, 0x56, 0xc0, 0x75, 0xc8, 0x46, 0xda, 0x15, 0xaa, 0xfd, 0x13, 0x28, + 0xd0, 0xee, 0xab, 0x80, 0x9f, 0x42, 0x41, 0x5e, 0xc7, 0x64, 0x9c, 0x3c, 0xfb, 0x59, 0x92, 0x6a, + 0x02, 0xb7, 0x31, 0xd4, 0xfc, 0xb9, 0x16, 0x7f, 0xcf, 0x43, 0xfb, 0x17, 0xba, 0x3d, 0xc0, 0xf3, + 0xd4, 0xfe, 0x65, 0xc5, 0x7f, 0xd6, 0x2f, 0x73, 0xf6, 0xab, 0x08, 0x49, 0x00, 0xbf, 0x8e, 0x77, + 0x0f, 0xd8, 0x6f, 0xa0, 0x04, 0xa3, 0x1e, 0xab, 0x10, 0x70, 0xf6, 0x5b, 0x0c, 0x89, 0xb4, 0x92, + 0xc8, 0xef, 0x64, 0x06, 0xb4, 0x99, 0x04, 0x7f, 0x2f, 0x87, 0x96, 0x8f, 0x89, 0xcc, 0xb8, 0x33, + 0x26, 0xd8, 0xf5, 0x32, 0x98, 0x93, 0x1f, 0x57, 0xc0, 0x0d, 0xc8, 0x71, 0xc8, 0x86, 0x66, 0x0f, + 0x3a, 0xf9, 0xa7, 0x24, 0x6d, 0x3a, 0x15, 0x56, 0xa1, 0xe0, 0xee, 0x24, 0x6d, 0x8b, 0x31, 0x76, + 0xa1, 0x6c, 0x0f, 0x8c, 0x2a, 0x2c, 0x43, 0xc1, 0xde, 0x24, 0xed, 0x97, 0x11, 0xb6, 0xa1, 0xe4, + 0x9e, 0x24, 0xed, 0x43, 0x71, 0xd6, 0xa1, 0xf0, 0x5e, 0x9d, 0x59, 0x79, 0xa3, 0xf6, 0x07, 0xf4, + 0xb0, 0x97, 0x8b, 0x41, 0xcb, 0xb7, 0x8a, 0xea, 0x20, 0x75, 0x63, 0x12, 0x67, 0x4c, 0x2e, 0x46, + 0x2c, 0x9f, 0xdd, 0x84, 0xc6, 0x90, 0xb7, 0x99, 0x12, 0x7d, 0x33, 0x1a, 0x19, 0x29, 0xb9, 0x05, + 0x49, 0xc5, 0x0d, 0x4f, 0x58, 0x47, 0xb7, 0xc2, 0x9f, 0xc2, 0xf4, 0x91, 0xeb, 0xb6, 0x64, 0x78, + 0xc5, 0x87, 0xca, 0xbc, 0x1d, 0x19, 0x93, 0x6d, 0x94, 0xef, 0x1d, 0x11, 0x00, 0x65, 0x7a, 0x27, + 0x8a, 0x4a, 0x02, 0x8a, 0xd4, 0x5d, 0x11, 0x1d, 0x9c, 0xee, 0xfe, 0x98, 0xa4, 0xf5, 0x26, 0xed, + 0x92, 0xc7, 0xed, 0xab, 0x88, 0x57, 0xda, 0x95, 0xf3, 0x63, 0x95, 0xac, 0x06, 0xcd, 0x49, 0xde, + 0x77, 0xa5, 0x5d, 0xe5, 0x68, 0x97, 0xd2, 0x85, 0x93, 0xdd, 0xab, 0x64, 0x11, 0x84, 0x5c, 0xaf, + 0x54, 0x52, 0x1c, 0x0d, 0xaf, 0x92, 0x9e, 0xc6, 0x28, 0x73, 0x14, 0xe6, 0xa4, 0x7a, 0x68, 0xa3, + 0x8d, 0x50, 0x27, 0xd7, 0x53, 0x0a, 0x24, 0xa0, 0xc3, 0x9d, 0x82, 0x37, 0x0a, 0x89, 0xa9, 0x90, + 0xa7, 0x46, 0xec, 0x10, 0xf6, 0x34, 0xbc, 0xbc, 0x28, 0x3b, 0x1d, 0xfa, 0xf4, 0x7a, 0x74, 0x68, + 0x8c, 0x22, 0x9d, 0x51, 0x0f, 0x1a, 0x63, 0x88, 0x72, 0x66, 0xbd, 0xa4, 0xa1, 0x23, 0x9c, 0x85, + 0x57, 0x9a, 0xf4, 0x98, 0xf2, 0x7e, 0xb6, 0xd2, 0x85, 0xe7, 0x73, 0x54, 0xa8, 0xd0, 0xeb, 0xb9, + 0x91, 0xd8, 0xe8, 0xd4, 0x79, 0x4a, 0x5d, 0x1e, 0xef, 0xf1, 0xae, 0xd3, 0x69, 0x05, 0xfc, 0xa8, + 0x71, 0x8e, 0x54, 0xbe, 0x25, 0xdf, 0x5c, 0x15, 0x82, 0xf8, 0x6f, 0xcb, 0x37, 0x64, 0x05, 0x69, + 0x16, 0xff, 0x94, 0x6f, 0xc8, 0x0a, 0x55, 0x5c, 0xde, 0x89, 0x59, 0x83, 0xd1, 0xbb, 0xf2, 0x0d, + 0x59, 0x5b, 0x6b, 0x5e, 0xef, 0xc5, 0x34, 0x41, 0xe6, 0x7d, 0x50, 0xed, 0x40, 0x35, 0xf9, 0x53, + 0x25, 0xc1, 0x2e, 0x68, 0x54, 0x40, 0xb7, 0x2b, 0x81, 0x2d, 0x8d, 0xd8, 0xb5, 0xbd, 0x22, 0xbe, + 0xa1, 0xb0, 0x0b, 0x1b, 0x71, 0xe3, 0xdb, 0xf5, 0x75, 0xb6, 0x15, 0x82, 0x41, 0x2b, 0x08, 0x36, + 0x7b, 0xbe, 0xcd, 0x2e, 0x6a, 0xc4, 0x54, 0xb6, 0x5c, 0xdb, 0x2b, 0xca, 0x8b, 0xef, 0x8b, 0x1b, + 0xb1, 0x0d, 0xad, 0xeb, 0x38, 0x9c, 0x5d, 0xa2, 0x1f, 0x5b, 0xd9, 0xa5, 0x08, 0x30, 0xec, 0xe6, + 0xb4, 0xc7, 0xcb, 0x1a, 0x69, 0xba, 0x55, 0x00, 0x6e, 0xf7, 0x71, 0x37, 0x2f, 0xc6, 0xd9, 0xe5, + 0x8d, 0x44, 0xb7, 0xc2, 0x2d, 0x3d, 0xc2, 0xae, 0xd0, 0x90, 0x62, 0x97, 0x1e, 0x61, 0xdb, 0x1a, + 0xf1, 0xea, 0xe4, 0xe6, 0x3c, 0x9b, 0xb3, 0xed, 0x68, 0x74, 0x71, 0x34, 0x76, 0x80, 0x6a, 0xa6, + 0xff, 0x08, 0xb6, 0x13, 0x54, 0xbb, 0x2c, 0x61, 0x8d, 0x5a, 0x01, 0x67, 0xd7, 0x34, 0xe2, 0xa4, + 0x80, 0x93, 0x81, 0xb7, 0x39, 0x60, 0xd7, 0x82, 0x7a, 0x67, 0xd9, 0xf7, 0xb9, 0x2b, 0x86, 0x03, + 0xee, 0xb3, 0xeb, 0xc0, 0x17, 0x8f, 0x3f, 0x69, 0x94, 0xd7, 0x0a, 0xae, 0xcb, 0xf1, 0x61, 0x23, + 0xdd, 0xc5, 0x7e, 0x0a, 0xa8, 0x0f, 0xaf, 0xb7, 0x01, 0xf7, 0x45, 0xba, 0x8b, 0xfd, 0x0c, 0x9d, + 0x88, 0x42, 0x34, 0xfd, 0xd3, 0x5d, 0xec, 0xe7, 0x8d, 0xb8, 0x82, 0x96, 0x1f, 0xea, 0xd8, 0x2f, + 0x10, 0x49, 0x5e, 0xc8, 0x4b, 0xe4, 0x97, 0x8d, 0xf2, 0x18, 0xb2, 0x59, 0x2e, 0x0e, 0xbf, 0x6a, + 0xa4, 0x82, 0xcc, 0x14, 0x38, 0x2f, 0xb1, 0xbb, 0x1b, 0xe5, 0x79, 0x21, 0xb7, 0x89, 0xed, 0x91, + 0xc9, 0xe5, 0x05, 0x6e, 0x05, 0x1c, 0xc8, 0xde, 0x46, 0x2a, 0x10, 0x7d, 0xe9, 0xe7, 0x4e, 0xc9, + 0x5b, 0xdf, 0x7b, 0x1a, 0x69, 0xe0, 0xc3, 0x5b, 0x22, 0x0d, 0xdf, 0xdb, 0xa8, 0x5e, 0x9e, 0x43, + 0xe4, 0x3e, 0x74, 0x81, 0x56, 0x82, 0x10, 0xba, 0x1f, 0x10, 0x2e, 0x3b, 0x35, 0xf4, 0xe7, 0x46, + 0xaa, 0x37, 0x75, 0x6d, 0xa7, 0xc1, 0xbf, 0x40, 0x0f, 0xb7, 0x66, 0x1a, 0x7a, 0xa0, 0x51, 0x4e, + 0x77, 0x2e, 0x3a, 0x84, 0xe7, 0xb2, 0x07, 0xc3, 0xe6, 0x80, 0xf0, 0x2c, 0xf6, 0xd7, 0x46, 0xb9, + 0x38, 0x70, 0xd1, 0x06, 0xf1, 0x43, 0x95, 0x36, 0xe4, 0x0f, 0x63, 0xd0, 0xd2, 0x41, 0x7a, 0x70, + 0xe2, 0x48, 0xf6, 0x08, 0xbc, 0xcb, 0x06, 0x15, 0x9d, 0x25, 0xd8, 0xa3, 0x11, 0xa8, 0xdf, 0x2a, + 0x95, 0xb8, 0xcd, 0x1e, 0xab, 0x98, 0xb4, 0xb1, 0xc7, 0xe5, 0x60, 0x0d, 0xa7, 0xbb, 0xd8, 0x3e, + 0x14, 0xd7, 0x88, 0x23, 0x78, 0x10, 0xac, 0xb3, 0x82, 0x71, 0xf6, 0x84, 0x52, 0x84, 0xf4, 0x49, + 0x04, 0xa6, 0xec, 0x67, 0xc6, 0x2d, 0xdf, 0x66, 0x4f, 0x35, 0x86, 0xdf, 0x29, 0x1c, 0x17, 0xbb, + 0xda, 0xd3, 0x92, 0x79, 0xc1, 0xd9, 0xc4, 0xa9, 0xf9, 0x48, 0x03, 0x8e, 0x73, 0xaa, 0xf5, 0x68, + 0x03, 0x0e, 0x94, 0x3c, 0xcf, 0x27, 0x4b, 0xd4, 0x7e, 0xac, 0x81, 0x56, 0x22, 0xd9, 0x1e, 0xce, + 0xf6, 0x7c, 0x83, 0xb0, 0xc7, 0x23, 0x98, 0xb6, 0xdb, 0xd7, 0x80, 0xa3, 0x65, 0x88, 0x69, 0xdd, + 0x27, 0x1a, 0x28, 0xbb, 0x12, 0xc7, 0x52, 0x49, 0xe0, 0x93, 0x0d, 0x72, 0xc7, 0x0a, 0x41, 0xad, + 0xfd, 0x54, 0x03, 0x4e, 0x9c, 0x10, 0x0c, 0xf1, 0x52, 0xc1, 0xca, 0xc1, 0xf9, 0xd3, 0x0d, 0x38, + 0x32, 0x46, 0x61, 0x6d, 0xf1, 0x4c, 0x03, 0x95, 0x88, 0xe2, 0x5b, 0x1e, 0x0d, 0x64, 0x80, 0x67, + 0x1b, 0xe4, 0x26, 0x56, 0x41, 0xb5, 0xfe, 0x73, 0xe0, 0x43, 0xcb, 0x42, 0xf7, 0xa4, 0xf0, 0xad, + 0x1c, 0xbd, 0x45, 0xb0, 0xd3, 0x9a, 0x34, 0x38, 0xec, 0x1e, 0x5d, 0xf6, 0x04, 0x82, 0x9e, 0xde, + 0x44, 0x89, 0x23, 0x30, 0x3b, 0x55, 0x02, 0x72, 0x46, 0x93, 0x3e, 0x5e, 0x64, 0x38, 0xec, 0xce, + 0x6c, 0xd2, 0x9f, 0x52, 0xe4, 0x84, 0x20, 0xec, 0xac, 0xd0, 0x57, 0xa4, 0x03, 0x67, 0x87, 0x8a, + 0x43, 0xbc, 0xe8, 0x4d, 0x00, 0x3b, 0xa7, 0x49, 0x7f, 0x9a, 0xe9, 0xe7, 0x7e, 0x1e, 0xd0, 0xb9, + 0x4d, 0xf1, 0x4f, 0x33, 0x84, 0x9d, 0xd7, 0x14, 0xfb, 0x82, 0x43, 0xd0, 0xf9, 0x4d, 0x94, 0x25, + 0x82, 0x46, 0xac, 0x82, 0x63, 0x83, 0x90, 0x93, 0x67, 0x3f, 0x6a, 0xa2, 0x54, 0x50, 0xab, 0xd3, + 0x73, 0x85, 0xe5, 0xb8, 0x01, 0xa1, 0x3f, 0x6e, 0xa2, 0x5c, 0x57, 0xbe, 0x00, 0x95, 0x4a, 0x5c, + 0x9e, 0x85, 0x2e, 0x88, 0x0b, 0x2a, 0x3d, 0xd8, 0xd2, 0x44, 0x43, 0x19, 0x12, 0x1b, 0xb4, 0x44, + 0x6e, 0x9c, 0xf0, 0x0b, 0x9b, 0x68, 0x14, 0x2a, 0xb8, 0xcf, 0x03, 0xee, 0xcb, 0xbe, 0x6c, 0x6d, + 0xa2, 0x7c, 0x47, 0x43, 0x0f, 0x5a, 0x02, 0x46, 0x17, 0x85, 0x5d, 0x1a, 0xf4, 0xb9, 0x10, 0xe0, + 0x7f, 0x71, 0xd8, 0xa5, 0x0d, 0x3a, 0xd9, 0x97, 0x84, 0x6a, 0x19, 0x6e, 0xf9, 0x32, 0xde, 0xa5, + 0x21, 0xc1, 0x8c, 0xf0, 0x7c, 0x8b, 0x52, 0x74, 0x0c, 0x94, 0x2f, 0x0b, 0xed, 0xbb, 0x78, 0x49, + 0x86, 0xb9, 0x3c, 0x1c, 0xac, 0xff, 0xe2, 0x53, 0xe8, 0xf7, 0x15, 0xa1, 0x47, 0xb9, 0xd2, 0x12, + 0xb6, 0x2d, 0x4c, 0x1c, 0x69, 0xe1, 0x3d, 0x80, 0xe0, 0xed, 0x61, 0x20, 0xe4, 0x53, 0x2e, 0x05, + 0x24, 0xd8, 0x11, 0x17, 0xac, 0x17, 0xe3, 0xdc, 0x87, 0xc5, 0xce, 0x6a, 0x6a, 0x3d, 0x3e, 0x07, + 0xb5, 0x5d, 0xe1, 0x18, 0xf4, 0xf3, 0xe2, 0x28, 0xf7, 0xd7, 0x8f, 0x11, 0xba, 0x1b, 0x84, 0x47, + 0x78, 0xae, 0x23, 0xc8, 0xf2, 0x49, 0x24, 0xf9, 0x7d, 0x94, 0xc9, 0x08, 0xcf, 0xf5, 0xf8, 0x5e, + 0x51, 0x83, 0x1f, 0xa0, 0xc0, 0x46, 0x78, 0xae, 0xcb, 0x29, 0x22, 0xce, 0x87, 0x20, 0x3c, 0xc2, + 0x73, 0x7d, 0x87, 0xeb, 0x5f, 0xa8, 0x10, 0xfc, 0x51, 0x08, 0xb7, 0x46, 0xe1, 0x8f, 0x9b, 0xe8, + 0x15, 0x79, 0x84, 0xe7, 0x06, 0x78, 0xde, 0x12, 0xce, 0x04, 0x4f, 0xbb, 0x2e, 0xf7, 0x07, 0x7d, + 0xcf, 0x2e, 0xcb, 0x5a, 0xfa, 0x04, 0x23, 0x38, 0xc2, 0x73, 0x9d, 0x5e, 0xe0, 0xb8, 0x3c, 0x6a, + 0xfb, 0xa9, 0xa6, 0xd8, 0xd7, 0x3a, 0xe0, 0xf9, 0x45, 0x82, 0x3e, 0x6b, 0x32, 0x57, 0x1a, 0x07, + 0x47, 0xbf, 0x69, 0xc4, 0x3f, 0xb0, 0xde, 0xd4, 0x4c, 0xe7, 0x41, 0x92, 0xc7, 0x70, 0x79, 0x45, + 0x7f, 0x73, 0xb3, 0x79, 0x88, 0x51, 0x37, 0x83, 0x10, 0x3b, 0xff, 0x2d, 0xcd, 0xda, 0x75, 0x95, + 0x54, 0x6d, 0xf7, 0xb7, 0x36, 0x53, 0x4f, 0x66, 0x90, 0xeb, 0x43, 0xc2, 0x6d, 0x5f, 0xe4, 0x1e, + 0x47, 0x83, 0xdb, 0x9b, 0xcd, 0x7a, 0xe3, 0x4b, 0x33, 0x99, 0xeb, 0x53, 0xc2, 0x1d, 0x5f, 0x64, + 0x8f, 0x03, 0xc3, 0x9d, 0xcd, 0xe6, 0xff, 0x33, 0xea, 0x67, 0x90, 0xc6, 0x13, 0x70, 0x57, 0x33, + 0x4d, 0x94, 0xc1, 0x42, 0xb9, 0x0a, 0xbf, 0xa0, 0x19, 0xb7, 0x40, 0xf4, 0x1e, 0x14, 0x17, 0x6c, + 0x69, 0xa6, 0x03, 0xb9, 0xbe, 0xfb, 0x8a, 0xcb, 0x2e, 0x84, 0x2c, 0x1e, 0x4f, 0x6f, 0x3d, 0x5b, + 0x21, 0xd3, 0xb7, 0xfe, 0x71, 0xbb, 0x8b, 0x9a, 0xa9, 0xe2, 0xfa, 0xb2, 0x71, 0xf4, 0x62, 0x89, + 0x76, 0xc7, 0xd1, 0x4b, 0x80, 0xf6, 0x56, 0xe9, 0x5e, 0x0a, 0xef, 0xfa, 0x72, 0x3b, 0x2e, 0xbb, + 0x0c, 0x5d, 0xc1, 0x0d, 0x75, 0x5c, 0x70, 0xb9, 0x74, 0x55, 0x15, 0xe0, 0x0a, 0xa0, 0xdd, 0x1b, + 0xe2, 0xe8, 0x36, 0xa0, 0x03, 0x55, 0xba, 0xdb, 0x9b, 0x69, 0xcd, 0x90, 0x17, 0xa6, 0x71, 0xc9, + 0x0e, 0x48, 0x62, 0x98, 0x7a, 0x9f, 0xdb, 0x39, 0x93, 0x04, 0x6f, 0x5d, 0xbb, 0x9a, 0x55, 0x69, + 0x47, 0x25, 0xf2, 0xc5, 0x6a, 0x37, 0xaa, 0x61, 0x06, 0xa3, 0xf0, 0xe5, 0xe5, 0xca, 0x66, 0xb3, + 0xc1, 0x38, 0x64, 0x26, 0xe3, 0x50, 0xe5, 0x2a, 0x44, 0x96, 0xc7, 0xdd, 0x38, 0xdb, 0xab, 0xd1, + 0xbb, 0xf4, 0x58, 0x1c, 0xbd, 0x46, 0x0e, 0x99, 0x3a, 0x86, 0xc6, 0x65, 0xd7, 0x36, 0xd3, 0x5c, + 0xd3, 0x3f, 0x85, 0x3a, 0x8a, 0x0e, 0x96, 0x0f, 0x22, 0xcf, 0xd3, 0x7f, 0x1d, 0xc5, 0xfe, 0x8a, + 0x99, 0xa2, 0x05, 0xea, 0x77, 0x3f, 0x11, 0xf9, 0xa3, 0xcd, 0xb4, 0x8e, 0x68, 0xf9, 0xa0, 0xcf, + 0xc7, 0x9c, 0x49, 0xf6, 0x50, 0x0c, 0x94, 0xdb, 0x20, 0x7b, 0xb8, 0x19, 0xef, 0xaa, 0x96, 0xe0, + 0x3d, 0x9e, 0x5f, 0xb4, 0xb0, 0x20, 0xbc, 0xdd, 0x42, 0xcb, 0x26, 0x61, 0x7d, 0x8e, 0xe0, 0x3e, + 0x9d, 0xbe, 0x5b, 0xd4, 0x29, 0x92, 0x77, 0x39, 0x63, 0x63, 0xec, 0x9d, 0x16, 0x7d, 0x1d, 0x4e, + 0x13, 0x0b, 0xd0, 0xbb, 0x2d, 0x44, 0x95, 0x9a, 0x72, 0xb2, 0x86, 0x82, 0xf7, 0x5a, 0xf0, 0x7e, + 0xa8, 0xa6, 0x58, 0x95, 0xf0, 0xfd, 0x16, 0xf3, 0x50, 0x23, 0xa9, 0x85, 0xfa, 0x6f, 0x28, 0xfe, + 0x00, 0x4e, 0x2b, 0x36, 0xa1, 0xe0, 0x43, 0x38, 0x95, 0x82, 0x69, 0x56, 0x1f, 0xb5, 0xd0, 0xa0, + 0xab, 0xf5, 0x3a, 0x1e, 0xef, 0xe3, 0x16, 0x5a, 0x22, 0xb5, 0xab, 0x10, 0xfe, 0xa4, 0x85, 0x8e, + 0x51, 0xd4, 0x3d, 0xf6, 0x29, 0x1e, 0xd7, 0x79, 0x65, 0x9f, 0x7d, 0xd6, 0x82, 0x0b, 0x6a, 0xc7, + 0x2d, 0x0b, 0xce, 0x3e, 0x6f, 0x91, 0xef, 0xa2, 0x39, 0xcf, 0xb5, 0xd9, 0xbf, 0x90, 0xa0, 0x7e, + 0x27, 0xe7, 0x7b, 0x0a, 0x39, 0x36, 0x45, 0x87, 0xd7, 0x7e, 0xcf, 0x15, 0xe3, 0xec, 0xb8, 0x14, + 0xee, 0xec, 0xe9, 0x79, 0xc0, 0x2a, 0x72, 0x76, 0x7c, 0x0a, 0xdf, 0x00, 0xbc, 0xcd, 0x54, 0x36, + 0x1d, 0x7e, 0x9e, 0x9d, 0x90, 0xc2, 0x17, 0x06, 0x09, 0x78, 0x65, 0x41, 0xd8, 0x89, 0x29, 0x5c, + 0x32, 0x59, 0x53, 0x30, 0x39, 0x09, 0x26, 0x5d, 0xd6, 0xd4, 0xfa, 0x31, 0xe9, 0xf3, 0x64, 0xf8, + 0x04, 0x70, 0x14, 0xe7, 0x9b, 0xd8, 0x29, 0x95, 0xf6, 0x7f, 0x73, 0xcb, 0x67, 0xa7, 0xa6, 0x68, + 0x44, 0x48, 0x44, 0x3e, 0xfb, 0xe9, 0x1d, 0xe0, 0xb4, 0x14, 0x55, 0xa0, 0x86, 0xbc, 0xb2, 0x00, + 0x7a, 0x3a, 0xe2, 0x10, 0xda, 0x65, 0x4d, 0xb1, 0x33, 0x10, 0x87, 0x5a, 0xca, 0xcf, 0x99, 0x29, + 0xea, 0x3e, 0x1e, 0xcf, 0x4a, 0x51, 0xae, 0xe8, 0x31, 0xe6, 0xf6, 0xec, 0x14, 0x95, 0x7c, 0x14, + 0xd6, 0xae, 0xcf, 0x01, 0xa7, 0x5e, 0x2e, 0x64, 0x25, 0xb1, 0x73, 0x53, 0x38, 0x42, 0x4f, 0x05, + 0x94, 0x58, 0x5c, 0x15, 0x06, 0x25, 0x76, 0x5e, 0x8a, 0x56, 0xc7, 0x08, 0xe8, 0x95, 0x05, 0xe1, + 0xe7, 0xa7, 0x22, 0x2f, 0x22, 0x18, 0x89, 0x1f, 0x81, 0xbf, 0x42, 0x68, 0xa8, 0x0e, 0xa3, 0x3c, + 0xfd, 0xb8, 0x1a, 0xc5, 0x35, 0xde, 0x05, 0xa0, 0x8d, 0x55, 0x7e, 0x4b, 0x4a, 0xbe, 0x67, 0x14, + 0xc3, 0xe2, 0xbd, 0x10, 0x5d, 0x1e, 0xce, 0x76, 0xc2, 0xed, 0x56, 0xf0, 0x1f, 0xce, 0x76, 0x92, + 0x4a, 0x20, 0xac, 0x62, 0x49, 0x0f, 0xcb, 0x45, 0x29, 0x2a, 0xaa, 0x6a, 0x89, 0x1a, 0x9f, 0x8b, + 0x21, 0xec, 0xb0, 0x6d, 0x72, 0x22, 0xf0, 0x06, 0x60, 0x57, 0x3e, 0x30, 0xa5, 0xa8, 0xe2, 0xe2, + 0x42, 0xb5, 0x67, 0x5d, 0x8a, 0x70, 0x1d, 0xb6, 0x8d, 0x62, 0xb3, 0x04, 0x8a, 0x0e, 0x6b, 0xc7, + 0x65, 0xda, 0x48, 0xbf, 0x64, 0x54, 0xfc, 0x5d, 0x9e, 0xa2, 0xba, 0x8f, 0x8a, 0x94, 0xb7, 0x2b, + 0x90, 0x3d, 0xe5, 0x4d, 0x62, 0xf0, 0xb5, 0x2d, 0x64, 0x17, 0xbe, 0xff, 0x54, 0xbc, 0x6d, 0x0f, + 0xd9, 0x55, 0x84, 0xca, 0xdf, 0x8e, 0x18, 0x3b, 0x25, 0x96, 0x6b, 0xaa, 0xa6, 0x40, 0x9c, 0xa3, + 0xde, 0x76, 0xa1, 0x2c, 0x2a, 0x02, 0xe5, 0x69, 0x37, 0x18, 0x64, 0xca, 0xa3, 0x33, 0xe5, 0xe7, + 0x4a, 0x30, 0x88, 0x0b, 0x95, 0xdd, 0x55, 0x60, 0x90, 0x29, 0x8f, 0x4e, 0xcb, 0xcf, 0xd5, 0xda, + 0x68, 0x7a, 0x7e, 0xae, 0x01, 0xb9, 0xa8, 0x48, 0x79, 0xbb, 0x56, 0x56, 0x97, 0xf4, 0x16, 0xc9, + 0xcf, 0x75, 0x21, 0xbb, 0x19, 0xf2, 0xf3, 0x93, 0x90, 0xdd, 0xb4, 0xfc, 0xfc, 0x34, 0xc6, 0x2e, + 0x9a, 0x9f, 0x9f, 0x69, 0x0a, 0xd5, 0xf9, 0xf9, 0x39, 0xf2, 0x53, 0x11, 0x28, 0x4f, 0xbf, 0x40, + 0x90, 0x61, 0xd7, 0x99, 0x0c, 0xab, 0x4b, 0x15, 0x31, 0xfb, 0x25, 0x2c, 0x62, 0x22, 0x3a, 0x2b, + 0xfd, 0x6a, 0x3a, 0xdc, 0xc5, 0x73, 0xec, 0xd7, 0x29, 0xf9, 0x8b, 0x35, 0x77, 0x82, 0xfb, 0x22, + 0x7b, 0x0c, 0xfb, 0x4d, 0x0a, 0x9f, 0xff, 0xac, 0x4d, 0xc8, 0x1e, 0xfb, 0x6d, 0xd8, 0xc4, 0x6c, + 0xf8, 0x1d, 0xb4, 0x07, 0xb9, 0xef, 0x78, 0x76, 0x87, 0x6d, 0xb3, 0xdf, 0x63, 0xc2, 0xcb, 0x36, + 0x96, 0xbe, 0x3f, 0x60, 0x72, 0x6c, 0x28, 0x5b, 0xbe, 0xe0, 0x3e, 0xbb, 0x1e, 0xea, 0x19, 0x9e, + 0xcb, 0x7a, 0x30, 0xbf, 0x21, 0x25, 0x5f, 0x1b, 0x8b, 0x3c, 0x4b, 0x2b, 0x1d, 0xbb, 0x31, 0xa5, + 0x5f, 0x80, 0xc1, 0x87, 0x3c, 0xde, 0x94, 0xa2, 0x85, 0x31, 0xeb, 0x75, 0x59, 0x53, 0x01, 0xbb, + 0x59, 0xea, 0xab, 0x55, 0x31, 0x60, 0xb7, 0x60, 0x09, 0x50, 0x53, 0x4a, 0xcf, 0xb3, 0x5b, 0x31, + 0x48, 0x11, 0x50, 0x4d, 0xb1, 0xdb, 0xb0, 0x2c, 0x86, 0xce, 0x31, 0xb1, 0x6f, 0x87, 0x83, 0x10, + 0x93, 0x97, 0xf4, 0x77, 0xa4, 0xf4, 0x2a, 0x0e, 0x50, 0xcf, 0xf3, 0x3b, 0xd1, 0x95, 0x3e, 0x2b, + 0x10, 0xb4, 0xb4, 0xdd, 0x05, 0x6f, 0x19, 0xe1, 0x13, 0x35, 0x21, 0x93, 0xf3, 0x47, 0x59, 0x1e, + 0x51, 0x8c, 0xaa, 0x91, 0xfd, 0xa9, 0x0a, 0xd7, 0x63, 0x79, 0x37, 0x02, 0xd1, 0x59, 0x5c, 0x0f, + 0x03, 0x48, 0xed, 0x99, 0x06, 0x13, 0x2f, 0xb6, 0x17, 0x4b, 0x93, 0x7a, 0x81, 0x0c, 0x7d, 0xdf, + 0x13, 0x43, 0xb5, 0xe7, 0x7b, 0xf5, 0xc4, 0x23, 0xbd, 0xe8, 0x56, 0xc5, 0xee, 0x8b, 0xce, 0x2f, + 0x75, 0xd1, 0xed, 0x0a, 0x76, 0x7f, 0x74, 0x89, 0x51, 0x1b, 0x9f, 0x3a, 0xf5, 0xfe, 0x39, 0x6a, + 0x91, 0x76, 0xf5, 0xcf, 0x08, 0xfe, 0x82, 0x04, 0x54, 0x60, 0xf2, 0xf2, 0x40, 0x8a, 0xce, 0x1f, + 0x0a, 0xd3, 0x14, 0x95, 0xfe, 0x83, 0xd1, 0x19, 0xaf, 0x65, 0xf8, 0x2c, 0xac, 0x27, 0xc1, 0x34, + 0xae, 0x0f, 0x45, 0x6b, 0xbd, 0xc2, 0xf5, 0xe1, 0xe8, 0x74, 0x8f, 0x73, 0x7d, 0x24, 0x6a, 0x51, + 0xe1, 0xfa, 0xa8, 0x1c, 0xac, 0x10, 0x26, 0x2f, 0x8f, 0x81, 0xab, 0xc2, 0xaa, 0xb8, 0x3e, 0x1e, + 0x9d, 0x7d, 0x51, 0xae, 0xfb, 0x50, 0xfe, 0x34, 0x34, 0xa8, 0xc7, 0x27, 0x52, 0xfa, 0xdb, 0x80, + 0xda, 0x93, 0x9e, 0x8c, 0xd7, 0x18, 0xa6, 0xc0, 0x53, 0x7a, 0xd1, 0xa8, 0xd0, 0xc5, 0xeb, 0xc8, + 0xd3, 0x72, 0xff, 0x0a, 0x49, 0x01, 0x7c, 0x26, 0xaa, 0x9c, 0x76, 0xc3, 0x2f, 0x27, 0xcf, 0x46, + 0x93, 0xa4, 0x19, 0xc1, 0xe2, 0xb9, 0xe8, 0xca, 0xa8, 0x25, 0xda, 0xec, 0xf9, 0x58, 0x27, 0x63, + 0x87, 0x24, 0xb6, 0x3f, 0xd6, 0x49, 0xfd, 0x61, 0xc4, 0x15, 0xec, 0x85, 0x58, 0x2c, 0x25, 0x40, + 0xac, 0x17, 0x63, 0xb1, 0xf4, 0xb1, 0x4a, 0xc5, 0x7a, 0x49, 0x6f, 0x1e, 0x55, 0xfd, 0xfc, 0x1b, + 0xfa, 0x59, 0x29, 0x14, 0x80, 0x2f, 0x47, 0x95, 0x23, 0xfd, 0x7c, 0x25, 0x5a, 0xb8, 0xb1, 0x7e, + 0xbe, 0x1a, 0xdd, 0x21, 0xab, 0xfb, 0xf9, 0x5a, 0xac, 0xf0, 0xe2, 0xfd, 0x7c, 0x3d, 0x56, 0x78, + 0x91, 0x7e, 0xbe, 0x11, 0x8b, 0x15, 0xed, 0xe7, 0x9b, 0xb1, 0x58, 0x55, 0xfd, 0xfc, 0x7b, 0x8a, + 0x0e, 0xc7, 0x55, 0xf3, 0x90, 0x4a, 0x42, 0xc5, 0xfb, 0x47, 0xb4, 0x6b, 0xe4, 0x4e, 0xe1, 0x6f, + 0x45, 0xf3, 0x80, 0x4f, 0x1d, 0xae, 0x60, 0x6f, 0x63, 0xfa, 0x46, 0x40, 0xc4, 0xff, 0x67, 0x94, + 0x32, 0x21, 0x3a, 0xf6, 0x3b, 0xd1, 0x69, 0xaa, 0x40, 0xe5, 0xfe, 0xdd, 0x68, 0x58, 0xfd, 0xbd, + 0xc4, 0x15, 0xec, 0xbd, 0x58, 0xf7, 0x25, 0x8e, 0x20, 0xef, 0xc7, 0x72, 0x26, 0x05, 0x3a, 0xce, + 0x07, 0xd1, 0x32, 0x8c, 0xf4, 0xe1, 0xc3, 0x68, 0xcd, 0xea, 0x3e, 0x7c, 0x84, 0x3e, 0x44, 0x40, + 0xb8, 0xff, 0x38, 0x5a, 0x5e, 0xd1, 0x3e, 0x7c, 0x12, 0x9d, 0xbe, 0xf1, 0x3e, 0x7c, 0x1a, 0x0d, + 0x1b, 0xe9, 0xc3, 0x67, 0xb1, 0x52, 0x8d, 0xf4, 0xe1, 0xf3, 0x58, 0x7d, 0xc7, 0xfb, 0xf0, 0xaf, + 0x94, 0xb9, 0xda, 0x38, 0x74, 0xc6, 0x9a, 0x08, 0x57, 0xcf, 0x63, 0x0f, 0xa3, 0x57, 0xfe, 0xe9, + 0xb5, 0x11, 0x2a, 0x1c, 0x77, 0x18, 0xbd, 0xc6, 0xcd, 0x50, 0x23, 0xa1, 0xc6, 0xf1, 0x87, 0x99, + 0x8d, 0xc6, 0xca, 0x99, 0x6b, 0x25, 0x54, 0x3a, 0xe1, 0x30, 0xe2, 0x32, 0xe3, 0x3c, 0x0c, 0x75, + 0x4e, 0x04, 0x97, 0xe9, 0xf3, 0x31, 0x54, 0x38, 0x09, 0x5c, 0x66, 0x98, 0x97, 0xa1, 0xc6, 0xc9, + 0xe0, 0x32, 0xf3, 0xfc, 0x0c, 0x95, 0x4e, 0x39, 0x4c, 0x7d, 0x6f, 0x54, 0x1f, 0x03, 0xf6, 0xb5, + 0x99, 0x35, 0xc6, 0x9c, 0xb5, 0x8e, 0xcb, 0x9e, 0x68, 0xa3, 0xb7, 0x8c, 0x8e, 0x4c, 0x67, 0x3a, + 0xcd, 0x9e, 0x6c, 0xc3, 0xb7, 0xf0, 0x71, 0xcb, 0x67, 0x4f, 0xb5, 0xe1, 0xdb, 0xc8, 0xb8, 0xe5, + 0x4b, 0x8b, 0xe1, 0x6c, 0xcf, 0x37, 0xd8, 0xd3, 0x6d, 0xb4, 0x2f, 0xab, 0x1f, 0xa1, 0x3f, 0xd3, + 0x26, 0xbf, 0x64, 0x50, 0xe3, 0xa8, 0x0c, 0x7b, 0xb6, 0x8d, 0x76, 0x4a, 0x75, 0x86, 0x60, 0xcf, + 0xc1, 0x7f, 0x77, 0x41, 0xb0, 0xe7, 0xdb, 0x68, 0x75, 0xec, 0x9e, 0x2c, 0x79, 0xbe, 0xc8, 0x70, + 0x71, 0x04, 0xed, 0x6a, 0xfb, 0xe3, 0xd8, 0x91, 0x84, 0xbd, 0x10, 0xc7, 0xbe, 0x4e, 0xd8, 0x8b, + 0x08, 0x81, 0xff, 0xd5, 0xa0, 0x8a, 0x78, 0xa9, 0x0d, 0x1f, 0x1a, 0xa8, 0x29, 0x17, 0x99, 0x36, + 0x3a, 0x96, 0xa3, 0xad, 0x6a, 0xe9, 0x65, 0xa5, 0xe1, 0xda, 0x69, 0x37, 0xc3, 0x05, 0x7b, 0x05, + 0x84, 0xd5, 0x3a, 0xfd, 0x6a, 0x1b, 0xb6, 0x58, 0x34, 0xe8, 0x88, 0xd0, 0xe7, 0xe5, 0xac, 0x02, + 0x67, 0xaf, 0xb5, 0xe1, 0xa7, 0xe0, 0xbe, 0x57, 0x5c, 0x6b, 0x05, 0xbc, 0xed, 0x48, 0xf6, 0x3a, + 0x9c, 0xac, 0xe3, 0x93, 0x69, 0x17, 0x67, 0x88, 0x37, 0x74, 0x3b, 0x23, 0x7c, 0x6a, 0xbf, 0xd9, + 0x26, 0xbf, 0xb8, 0x05, 0xdc, 0x17, 0x48, 0xcb, 0xdf, 0xdb, 0xe4, 0x17, 0x37, 0x02, 0xd8, 0x3f, + 0xda, 0xe4, 0x75, 0xbc, 0xba, 0x09, 0x66, 0x6f, 0xb5, 0xc9, 0x8f, 0x7c, 0x81, 0xf0, 0xd9, 0xdb, + 0x78, 0xee, 0xcb, 0xfa, 0x4e, 0x91, 0xfd, 0xb3, 0x4d, 0xfe, 0xaa, 0x6f, 0x4c, 0xfa, 0x78, 0xa7, + 0x4d, 0xfe, 0x4a, 0x7d, 0x4c, 0xb0, 0x77, 0xe1, 0x4e, 0x0d, 0xd4, 0x7b, 0x6d, 0xb8, 0x5e, 0xf1, + 0x72, 0x96, 0xc0, 0x89, 0x20, 0x80, 0xf6, 0xfb, 0x11, 0xf4, 0x88, 0x10, 0xfd, 0x00, 0xf9, 0x88, + 0xe8, 0xb2, 0x0f, 0x23, 0x08, 0xf4, 0xd8, 0x47, 0x92, 0x82, 0xb7, 0x99, 0xfb, 0xec, 0x63, 0x49, + 0xa1, 0x64, 0xd9, 0x30, 0xff, 0x44, 0x52, 0x28, 0x59, 0x36, 0xfb, 0x14, 0x83, 0x49, 0x27, 0x3e, + 0xca, 0xe2, 0x67, 0x20, 0xb4, 0x3e, 0x87, 0x2d, 0xf4, 0x73, 0xf4, 0x6f, 0x7d, 0x2e, 0xfc, 0x65, + 0x21, 0x46, 0x7a, 0xbd, 0x6f, 0xb3, 0x63, 0xdb, 0xc9, 0x35, 0x2e, 0x5a, 0xd9, 0x71, 0x78, 0x1e, + 0x42, 0x4f, 0x8f, 0x6f, 0xc7, 0xf7, 0x57, 0x5e, 0xe2, 0x96, 0x60, 0x27, 0xb4, 0xe3, 0x77, 0x0d, + 0xf2, 0xc2, 0x9a, 0x9d, 0xd8, 0x2e, 0x3f, 0xc4, 0x4c, 0x70, 0x3f, 0xc0, 0x45, 0x3b, 0x3b, 0x49, + 0xc9, 0x81, 0xb0, 0x93, 0xdb, 0xf1, 0x8d, 0xc0, 0xc9, 0x8f, 0xcb, 0x2c, 0x9d, 0x22, 0xdd, 0x52, + 0x9b, 0x9d, 0xda, 0x8e, 0x4f, 0x3d, 0x9a, 0xfd, 0x69, 0xed, 0xf8, 0xdd, 0x07, 0xb1, 0x3f, 0x1d, + 0x5a, 0x99, 0x12, 0x45, 0x38, 0xa3, 0x5d, 0xfe, 0xbb, 0x83, 0x9f, 0x2b, 0x96, 0xd8, 0x99, 0xed, + 0x6a, 0x49, 0x09, 0xc0, 0xbd, 0x92, 0xcf, 0xb3, 0xe2, 0x82, 0x4a, 0x4a, 0xcf, 0x6e, 0x57, 0x6b, + 0x5f, 0xc4, 0x82, 0x9d, 0x13, 0x07, 0x65, 0x62, 0xcf, 0x8d, 0x83, 0x69, 0xd7, 0xe6, 0x93, 0xec, + 0x3c, 0x70, 0xcc, 0x7a, 0xaa, 0xb2, 0xce, 0x97, 0x4d, 0xdf, 0x29, 0xe2, 0xcc, 0xf7, 0x23, 0xf4, + 0x8e, 0x9a, 0xd2, 0xef, 0x8f, 0xc3, 0xb6, 0x74, 0x79, 0x01, 0xfa, 0x31, 0xec, 0xae, 0xe3, 0x93, + 0x6c, 0x0b, 0x64, 0xc3, 0xa5, 0x12, 0x97, 0x65, 0x75, 0xa1, 0x94, 0x51, 0x9b, 0x6d, 0x6d, 0xa7, + 0x82, 0xac, 0xcc, 0x55, 0x76, 0x51, 0xbb, 0xfc, 0xed, 0xc6, 0x66, 0xa5, 0x7c, 0x71, 0x3b, 0x55, + 0x7e, 0xf8, 0xfb, 0xd3, 0xf0, 0x15, 0xb3, 0xdd, 0x3c, 0xc4, 0xa8, 0xd3, 0x70, 0x67, 0xb1, 0x14, + 0xfb, 0x05, 0xfa, 0xa5, 0xed, 0x34, 0x21, 0xe5, 0xef, 0x4a, 0xb5, 0xc5, 0x65, 0xed, 0xb4, 0x8c, + 0x03, 0xab, 0x56, 0xbf, 0x5c, 0x77, 0xd5, 0x71, 0x2d, 0x7f, 0x8a, 0x5d, 0xd1, 0x1e, 0xce, 0x2a, + 0x09, 0x6c, 0xfb, 0xa2, 0x60, 0x38, 0x45, 0x6f, 0x9f, 0xd1, 0x31, 0x44, 0x3b, 0xda, 0xa3, 0xbf, + 0x88, 0x05, 0xb4, 0xb3, 0x3d, 0xfc, 0x35, 0x2b, 0xda, 0xbb, 0xda, 0xd7, 0xfc, 0x30, 0xfa, 0xcf, + 0x94, 0xf8, 0x8f, 0x3a, 0x73, 0x85, 0xb1, 0xbc, 0x0a, 0x4a, 0xbb, 0x13, 0x56, 0xc1, 0xb1, 0xd9, + 0x2c, 0xf3, 0x60, 0x63, 0x59, 0x95, 0x2c, 0x33, 0xee, 0x95, 0x0b, 0x36, 0x4b, 0x98, 0x75, 0xc6, + 0x41, 0x55, 0xa2, 0xfe, 0x72, 0x20, 0xd8, 0xec, 0x19, 0xfc, 0x91, 0x60, 0xc0, 0x13, 0x6c, 0xce, + 0x9a, 0xd3, 0x13, 0xb8, 0x53, 0xab, 0xfa, 0xdf, 0xbc, 0xb8, 0x89, 0x46, 0x07, 0x3c, 0x97, 0xb3, + 0x59, 0xe6, 0x97, 0x8c, 0xba, 0x19, 0xfe, 0x9b, 0xcf, 0xf3, 0x02, 0xc1, 0x12, 0xe6, 0xa1, 0xb8, + 0x89, 0xab, 0x12, 0x76, 0x71, 0x29, 0x9e, 0x6d, 0x1e, 0x62, 0x24, 0x67, 0xf0, 0xcb, 0xf3, 0x94, + 0x8c, 0x39, 0x6b, 0x7e, 0x10, 0xe5, 0xa2, 0xff, 0x91, 0x35, 0xde, 0x65, 0x42, 0x2b, 0xd9, 0x58, + 0x5e, 0x6d, 0x80, 0x9b, 0xc2, 0x84, 0x99, 0x34, 0x96, 0xc6, 0xf1, 0x41, 0xfc, 0x0b, 0x2b, 0x9b, + 0x3d, 0x83, 0x44, 0xde, 0x07, 0xce, 0x59, 0xc3, 0x8d, 0x25, 0x55, 0xff, 0xb7, 0x86, 0xff, 0x82, + 0xf1, 0x8a, 0xa5, 0x02, 0x17, 0x1c, 0x97, 0x3a, 0xb3, 0xcc, 0xc5, 0x58, 0xa4, 0xad, 0x02, 0x9a, + 0x09, 0x52, 0x18, 0xb4, 0x7c, 0xe1, 0x58, 0x85, 0xc3, 0x81, 0xcc, 0x8e, 0x20, 0xad, 0x40, 0xe6, + 0x90, 0x49, 0x17, 0xb7, 0xcb, 0x25, 0x34, 0xe7, 0xae, 0xfd, 0xca, 0x9e, 0xfd, 0x2b, 0x13, 0x0f, + 0xec, 0x5f, 0x99, 0x78, 0x6e, 0xff, 0xca, 0xc4, 0xd6, 0x17, 0x56, 0xce, 0x32, 0x96, 0xe5, 0xbc, + 0x62, 0x4b, 0xc9, 0x71, 0xf3, 0x39, 0xab, 0xd4, 0x22, 0x1c, 0x7b, 0x14, 0xff, 0x9d, 0x36, 0x98, + 0xf8, 0xbf, 0x00, 0x00, 0x00, 0xff, 0xff, 0x91, 0xf3, 0x78, 0x4e, 0x30, 0x3d, 0x00, 0x00, } diff --git a/proto/executor.proto b/proto/executor.proto index 9176e718..61ae665f 100644 --- a/proto/executor.proto +++ b/proto/executor.proto @@ -161,6 +161,9 @@ enum FTSQueryType { FTSQueryTypeWithScore = 2; } +// FTSQueryInfo describes a scan-level request to use a TiFlash full-text +// columnar index. It is separate from the FTSMatchBooleanExpression scalar +// function, which evaluates each row and does not consult an index. message FTSQueryInfo { optional FTSQueryType query_type = 1 [(gogoproto.nullable) = false]; optional int64 index_id = 2 [(gogoproto.nullable) = false]; diff --git a/proto/expression.proto b/proto/expression.proto index 94368981..aeca3ce3 100644 --- a/proto/expression.proto +++ b/proto/expression.proto @@ -538,6 +538,7 @@ enum ScalarFuncSig { /*fts*/ FTSMatchWord = 5201; FTSMatchExpression = 5202; + FTSMatchBooleanExpression = 5206; FTSMatchPrefix = 5203; FTSMatchRegexp = 5204; @@ -819,7 +820,7 @@ message FTSBooleanQuery { } // Versioned Boolean MATCH metadata stored in Expr.val when Expr.sig is -// FTSMatchExpression. Expr.val is already the generic scalar-function +// FTSMatchBooleanExpression. Expr.val is already the generic scalar-function // metadata slot, so this avoids adding an FTS-specific field to Expr while // keeping the SQL arguments in Expr.children unchanged. message FTSMatchExpressionMetadata { From e2791d0a2b58299ee333e63709eefa1700f166d2 Mon Sep 17 00:00:00 2001 From: Zhigao TONG Date: Thu, 8 Oct 2026 14:47:15 +0800 Subject: [PATCH 08/12] fts: remove obsolete scan-level protocol --- go-tipb/analyze.pb.go | 4 +- go-tipb/executor.pb.go | 1726 +++++++++----------------------------- go-tipb/expression.pb.go | 1170 ++++++++++---------------- proto/executor.proto | 35 - proto/expression.proto | 30 +- 5 files changed, 823 insertions(+), 2142 deletions(-) diff --git a/go-tipb/analyze.pb.go b/go-tipb/analyze.pb.go index 7ea0357b..d70792a9 100644 --- a/go-tipb/analyze.pb.go +++ b/go-tipb/analyze.pb.go @@ -45,8 +45,6 @@ It has these top-level messages: EncodedBytesSlice ExchangeReceiver ANNQueryInfo - FTSQueryInfo - ColumnarIndexInfo TableScan PartitionTableScan Join @@ -84,7 +82,7 @@ It has these top-level messages: FieldType FTSBooleanTerm FTSBooleanQuery - FTSMatchExpressionMetadata + FTSMatchBooleanMetadata FTSBooleanNode Expr RpnExpr diff --git a/go-tipb/executor.pb.go b/go-tipb/executor.pb.go index b0f448bd..28fcc23a 100644 --- a/go-tipb/executor.pb.go +++ b/go-tipb/executor.pb.go @@ -333,77 +333,6 @@ func (x *ANNQueryType) UnmarshalJSON(data []byte) error { } func (ANNQueryType) EnumDescriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{6} } -type FTSQueryType int32 - -const ( - FTSQueryType_FTSQueryTypeInvalid FTSQueryType = 0 - FTSQueryType_FTSQueryTypeNoScore FTSQueryType = 1 - FTSQueryType_FTSQueryTypeWithScore FTSQueryType = 2 -) - -var FTSQueryType_name = map[int32]string{ - 0: "FTSQueryTypeInvalid", - 1: "FTSQueryTypeNoScore", - 2: "FTSQueryTypeWithScore", -} -var FTSQueryType_value = map[string]int32{ - "FTSQueryTypeInvalid": 0, - "FTSQueryTypeNoScore": 1, - "FTSQueryTypeWithScore": 2, -} - -func (x FTSQueryType) Enum() *FTSQueryType { - p := new(FTSQueryType) - *p = x - return p -} -func (x FTSQueryType) String() string { - return proto.EnumName(FTSQueryType_name, int32(x)) -} -func (x *FTSQueryType) UnmarshalJSON(data []byte) error { - value, err := proto.UnmarshalJSONEnum(FTSQueryType_value, data, "FTSQueryType") - if err != nil { - return err - } - *x = FTSQueryType(value) - return nil -} -func (FTSQueryType) EnumDescriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{7} } - -type ColumnarIndexType int32 - -const ( - ColumnarIndexType_TypeInvalid ColumnarIndexType = 0 - ColumnarIndexType_TypeFulltext ColumnarIndexType = 3 -) - -var ColumnarIndexType_name = map[int32]string{ - 0: "TypeInvalid", - 3: "TypeFulltext", -} -var ColumnarIndexType_value = map[string]int32{ - "TypeInvalid": 0, - "TypeFulltext": 3, -} - -func (x ColumnarIndexType) Enum() *ColumnarIndexType { - p := new(ColumnarIndexType) - *p = x - return p -} -func (x ColumnarIndexType) String() string { - return proto.EnumName(ColumnarIndexType_name, int32(x)) -} -func (x *ColumnarIndexType) UnmarshalJSON(data []byte) error { - value, err := proto.UnmarshalJSONEnum(ColumnarIndexType_value, data, "ColumnarIndexType") - if err != nil { - return err - } - *x = ColumnarIndexType(value) - return nil -} -func (ColumnarIndexType) EnumDescriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{8} } - type JoinType int32 const ( @@ -451,7 +380,7 @@ func (x *JoinType) UnmarshalJSON(data []byte) error { *x = JoinType(value) return nil } -func (JoinType) EnumDescriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{9} } +func (JoinType) EnumDescriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{7} } type JoinExecType int32 @@ -482,7 +411,7 @@ func (x *JoinExecType) UnmarshalJSON(data []byte) error { *x = JoinExecType(value) return nil } -func (JoinExecType) EnumDescriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{10} } +func (JoinExecType) EnumDescriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{8} } type RuntimeFilterType int32 @@ -519,7 +448,7 @@ func (x *RuntimeFilterType) UnmarshalJSON(data []byte) error { *x = RuntimeFilterType(value) return nil } -func (RuntimeFilterType) EnumDescriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{11} } +func (RuntimeFilterType) EnumDescriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{9} } type RuntimeFilterMode int32 @@ -553,7 +482,7 @@ func (x *RuntimeFilterMode) UnmarshalJSON(data []byte) error { *x = RuntimeFilterMode(value) return nil } -func (RuntimeFilterMode) EnumDescriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{12} } +func (RuntimeFilterMode) EnumDescriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{10} } type TiFlashPreAggMode int32 @@ -590,7 +519,7 @@ func (x *TiFlashPreAggMode) UnmarshalJSON(data []byte) error { *x = TiFlashPreAggMode(value) return nil } -func (TiFlashPreAggMode) EnumDescriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{13} } +func (TiFlashPreAggMode) EnumDescriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{11} } type WindowBoundType int32 @@ -627,7 +556,7 @@ func (x *WindowBoundType) UnmarshalJSON(data []byte) error { *x = WindowBoundType(value) return nil } -func (WindowBoundType) EnumDescriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{14} } +func (WindowBoundType) EnumDescriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{12} } // Used for range frame's comparison when finding frame's boundary type RangeCmpDataType int32 @@ -671,7 +600,7 @@ func (x *RangeCmpDataType) UnmarshalJSON(data []byte) error { *x = RangeCmpDataType(value) return nil } -func (RangeCmpDataType) EnumDescriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{15} } +func (RangeCmpDataType) EnumDescriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{13} } type WindowFrameType int32 @@ -708,7 +637,7 @@ func (x *WindowFrameType) UnmarshalJSON(data []byte) error { *x = WindowFrameType(value) return nil } -func (WindowFrameType) EnumDescriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{16} } +func (WindowFrameType) EnumDescriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{14} } // It represents a Executor. type Executor struct { @@ -1163,213 +1092,27 @@ func (m *ANNQueryInfo) GetHnswEfSearch() uint32 { return 0 } -// FTSQueryInfo describes a scan-level request to use a TiFlash full-text -// columnar index. It is separate from the FTSMatchBooleanExpression scalar -// function, which evaluates each row and does not consult an index. -type FTSQueryInfo struct { - QueryType FTSQueryType `protobuf:"varint,1,opt,name=query_type,json=queryType,enum=tipb.FTSQueryType" json:"query_type"` - IndexId int64 `protobuf:"varint,2,opt,name=index_id,json=indexId" json:"index_id"` - Columns []*ColumnInfo `protobuf:"bytes,3,rep,name=columns" json:"columns,omitempty"` - ColumnNames []string `protobuf:"bytes,4,rep,name=column_names,json=columnNames" json:"column_names,omitempty"` - QueryText string `protobuf:"bytes,5,opt,name=query_text,json=queryText" json:"query_text"` - QueryTokenizer string `protobuf:"bytes,6,opt,name=query_tokenizer,json=queryTokenizer" json:"query_tokenizer"` - TopK *uint32 `protobuf:"varint,10,opt,name=top_k,json=topK" json:"top_k,omitempty"` - QueryFunc ScalarFuncSig `protobuf:"varint,20,opt,name=query_func,json=queryFunc,enum=tipb.ScalarFuncSig" json:"query_func"` - BooleanQuery *FTSBooleanQuery `protobuf:"bytes,22,opt,name=boolean_query,json=booleanQuery" json:"boolean_query,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *FTSQueryInfo) Reset() { *m = FTSQueryInfo{} } -func (m *FTSQueryInfo) String() string { return proto.CompactTextString(m) } -func (*FTSQueryInfo) ProtoMessage() {} -func (*FTSQueryInfo) Descriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{6} } - -func (m *FTSQueryInfo) GetQueryType() FTSQueryType { - if m != nil { - return m.QueryType - } - return FTSQueryType_FTSQueryTypeInvalid -} - -func (m *FTSQueryInfo) GetIndexId() int64 { - if m != nil { - return m.IndexId - } - return 0 -} - -func (m *FTSQueryInfo) GetColumns() []*ColumnInfo { - if m != nil { - return m.Columns - } - return nil -} - -func (m *FTSQueryInfo) GetColumnNames() []string { - if m != nil { - return m.ColumnNames - } - return nil -} - -func (m *FTSQueryInfo) GetQueryText() string { - if m != nil { - return m.QueryText - } - return "" -} - -func (m *FTSQueryInfo) GetQueryTokenizer() string { - if m != nil { - return m.QueryTokenizer - } - return "" -} - -func (m *FTSQueryInfo) GetTopK() uint32 { - if m != nil && m.TopK != nil { - return *m.TopK - } - return 0 -} - -func (m *FTSQueryInfo) GetQueryFunc() ScalarFuncSig { - if m != nil { - return m.QueryFunc - } - return ScalarFuncSig_Unspecified -} - -func (m *FTSQueryInfo) GetBooleanQuery() *FTSBooleanQuery { - if m != nil { - return m.BooleanQuery - } - return nil -} - -type ColumnarIndexInfo struct { - IndexType ColumnarIndexType `protobuf:"varint,1,opt,name=index_type,json=indexType,enum=tipb.ColumnarIndexType" json:"index_type"` - // Types that are valid to be assigned to Index: - // *ColumnarIndexInfo_FtsQueryInfo - Index isColumnarIndexInfo_Index `protobuf_oneof:"index"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *ColumnarIndexInfo) Reset() { *m = ColumnarIndexInfo{} } -func (m *ColumnarIndexInfo) String() string { return proto.CompactTextString(m) } -func (*ColumnarIndexInfo) ProtoMessage() {} -func (*ColumnarIndexInfo) Descriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{7} } - -type isColumnarIndexInfo_Index interface { - isColumnarIndexInfo_Index() - MarshalTo([]byte) (int, error) - Size() int -} - -type ColumnarIndexInfo_FtsQueryInfo struct { - FtsQueryInfo *FTSQueryInfo `protobuf:"bytes,4,opt,name=fts_query_info,json=ftsQueryInfo,oneof"` -} - -func (*ColumnarIndexInfo_FtsQueryInfo) isColumnarIndexInfo_Index() {} - -func (m *ColumnarIndexInfo) GetIndex() isColumnarIndexInfo_Index { - if m != nil { - return m.Index - } - return nil -} - -func (m *ColumnarIndexInfo) GetIndexType() ColumnarIndexType { - if m != nil { - return m.IndexType - } - return ColumnarIndexType_TypeInvalid -} - -func (m *ColumnarIndexInfo) GetFtsQueryInfo() *FTSQueryInfo { - if x, ok := m.GetIndex().(*ColumnarIndexInfo_FtsQueryInfo); ok { - return x.FtsQueryInfo - } - return nil -} - -// XXX_OneofFuncs is for the internal use of the proto package. -func (*ColumnarIndexInfo) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { - return _ColumnarIndexInfo_OneofMarshaler, _ColumnarIndexInfo_OneofUnmarshaler, _ColumnarIndexInfo_OneofSizer, []interface{}{ - (*ColumnarIndexInfo_FtsQueryInfo)(nil), - } -} - -func _ColumnarIndexInfo_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { - m := msg.(*ColumnarIndexInfo) - // index - switch x := m.Index.(type) { - case *ColumnarIndexInfo_FtsQueryInfo: - _ = b.EncodeVarint(4<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.FtsQueryInfo); err != nil { - return err - } - case nil: - default: - return fmt.Errorf("ColumnarIndexInfo.Index has unexpected type %T", x) - } - return nil -} - -func _ColumnarIndexInfo_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { - m := msg.(*ColumnarIndexInfo) - switch tag { - case 4: // index.fts_query_info - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(FTSQueryInfo) - err := b.DecodeMessage(msg) - m.Index = &ColumnarIndexInfo_FtsQueryInfo{msg} - return true, err - default: - return false, nil - } -} - -func _ColumnarIndexInfo_OneofSizer(msg proto.Message) (n int) { - m := msg.(*ColumnarIndexInfo) - // index - switch x := m.Index.(type) { - case *ColumnarIndexInfo_FtsQueryInfo: - s := proto.Size(x.FtsQueryInfo) - n += proto.SizeVarint(4<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case nil: - default: - panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) - } - return n -} - type TableScan struct { - TableId int64 `protobuf:"varint,1,opt,name=table_id,json=tableId" json:"table_id"` - Columns []*ColumnInfo `protobuf:"bytes,2,rep,name=columns" json:"columns,omitempty"` - Desc bool `protobuf:"varint,3,opt,name=desc" json:"desc"` - PrimaryColumnIds []int64 `protobuf:"varint,4,rep,name=primary_column_ids,json=primaryColumnIds" json:"primary_column_ids,omitempty"` - NextReadEngine EngineType `protobuf:"varint,5,opt,name=next_read_engine,json=nextReadEngine,enum=tipb.EngineType" json:"next_read_engine"` - Ranges []KeyRange `protobuf:"bytes,6,rep,name=ranges" json:"ranges"` - PrimaryPrefixColumnIds []int64 `protobuf:"varint,7,rep,name=primary_prefix_column_ids,json=primaryPrefixColumnIds" json:"primary_prefix_column_ids,omitempty"` - KeepOrder *bool `protobuf:"varint,8,opt,name=keep_order,json=keepOrder" json:"keep_order,omitempty"` - IsFastScan *bool `protobuf:"varint,9,opt,name=is_fast_scan,json=isFastScan" json:"is_fast_scan,omitempty"` - PushedDownFilterConditions []*Expr `protobuf:"bytes,10,rep,name=pushed_down_filter_conditions,json=pushedDownFilterConditions" json:"pushed_down_filter_conditions,omitempty"` - AnnQuery *ANNQueryInfo `protobuf:"bytes,13,opt,name=ann_query,json=annQuery" json:"ann_query,omitempty"` - RuntimeFilterList []*RuntimeFilter `protobuf:"bytes,11,rep,name=runtime_filter_list,json=runtimeFilterList" json:"runtime_filter_list,omitempty"` - MaxWaitTimeMs int32 `protobuf:"varint,12,opt,name=max_wait_time_ms,json=maxWaitTimeMs" json:"max_wait_time_ms"` - UsedColumnarIndexes []*ColumnarIndexInfo `protobuf:"bytes,14,rep,name=used_columnar_indexes,json=usedColumnarIndexes" json:"used_columnar_indexes,omitempty"` - XXX_unrecognized []byte `json:"-"` + TableId int64 `protobuf:"varint,1,opt,name=table_id,json=tableId" json:"table_id"` + Columns []*ColumnInfo `protobuf:"bytes,2,rep,name=columns" json:"columns,omitempty"` + Desc bool `protobuf:"varint,3,opt,name=desc" json:"desc"` + PrimaryColumnIds []int64 `protobuf:"varint,4,rep,name=primary_column_ids,json=primaryColumnIds" json:"primary_column_ids,omitempty"` + NextReadEngine EngineType `protobuf:"varint,5,opt,name=next_read_engine,json=nextReadEngine,enum=tipb.EngineType" json:"next_read_engine"` + Ranges []KeyRange `protobuf:"bytes,6,rep,name=ranges" json:"ranges"` + PrimaryPrefixColumnIds []int64 `protobuf:"varint,7,rep,name=primary_prefix_column_ids,json=primaryPrefixColumnIds" json:"primary_prefix_column_ids,omitempty"` + KeepOrder *bool `protobuf:"varint,8,opt,name=keep_order,json=keepOrder" json:"keep_order,omitempty"` + IsFastScan *bool `protobuf:"varint,9,opt,name=is_fast_scan,json=isFastScan" json:"is_fast_scan,omitempty"` + PushedDownFilterConditions []*Expr `protobuf:"bytes,10,rep,name=pushed_down_filter_conditions,json=pushedDownFilterConditions" json:"pushed_down_filter_conditions,omitempty"` + AnnQuery *ANNQueryInfo `protobuf:"bytes,13,opt,name=ann_query,json=annQuery" json:"ann_query,omitempty"` + RuntimeFilterList []*RuntimeFilter `protobuf:"bytes,11,rep,name=runtime_filter_list,json=runtimeFilterList" json:"runtime_filter_list,omitempty"` + MaxWaitTimeMs int32 `protobuf:"varint,12,opt,name=max_wait_time_ms,json=maxWaitTimeMs" json:"max_wait_time_ms"` + XXX_unrecognized []byte `json:"-"` } func (m *TableScan) Reset() { *m = TableScan{} } func (m *TableScan) String() string { return proto.CompactTextString(m) } func (*TableScan) ProtoMessage() {} -func (*TableScan) Descriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{8} } +func (*TableScan) Descriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{6} } func (m *TableScan) GetTableId() int64 { if m != nil { @@ -1462,33 +1205,25 @@ func (m *TableScan) GetMaxWaitTimeMs() int32 { return 0 } -func (m *TableScan) GetUsedColumnarIndexes() []*ColumnarIndexInfo { - if m != nil { - return m.UsedColumnarIndexes - } - return nil -} - type PartitionTableScan struct { - TableId int64 `protobuf:"varint,1,opt,name=table_id,json=tableId" json:"table_id"` - Columns []*ColumnInfo `protobuf:"bytes,2,rep,name=columns" json:"columns,omitempty"` - Desc bool `protobuf:"varint,3,opt,name=desc" json:"desc"` - PrimaryColumnIds []int64 `protobuf:"varint,4,rep,name=primary_column_ids,json=primaryColumnIds" json:"primary_column_ids,omitempty"` - PrimaryPrefixColumnIds []int64 `protobuf:"varint,5,rep,name=primary_prefix_column_ids,json=primaryPrefixColumnIds" json:"primary_prefix_column_ids,omitempty"` - PartitionIds []int64 `protobuf:"varint,6,rep,name=partition_ids,json=partitionIds" json:"partition_ids,omitempty"` - IsFastScan *bool `protobuf:"varint,7,opt,name=is_fast_scan,json=isFastScan" json:"is_fast_scan,omitempty"` - PushedDownFilterConditions []*Expr `protobuf:"bytes,8,rep,name=pushed_down_filter_conditions,json=pushedDownFilterConditions" json:"pushed_down_filter_conditions,omitempty"` - AnnQuery *ANNQueryInfo `protobuf:"bytes,11,opt,name=ann_query,json=annQuery" json:"ann_query,omitempty"` - RuntimeFilterList []*RuntimeFilter `protobuf:"bytes,9,rep,name=runtime_filter_list,json=runtimeFilterList" json:"runtime_filter_list,omitempty"` - MaxWaitTimeMs int32 `protobuf:"varint,10,opt,name=max_wait_time_ms,json=maxWaitTimeMs" json:"max_wait_time_ms"` - UsedColumnarIndexes []*ColumnarIndexInfo `protobuf:"bytes,12,rep,name=used_columnar_indexes,json=usedColumnarIndexes" json:"used_columnar_indexes,omitempty"` - XXX_unrecognized []byte `json:"-"` + TableId int64 `protobuf:"varint,1,opt,name=table_id,json=tableId" json:"table_id"` + Columns []*ColumnInfo `protobuf:"bytes,2,rep,name=columns" json:"columns,omitempty"` + Desc bool `protobuf:"varint,3,opt,name=desc" json:"desc"` + PrimaryColumnIds []int64 `protobuf:"varint,4,rep,name=primary_column_ids,json=primaryColumnIds" json:"primary_column_ids,omitempty"` + PrimaryPrefixColumnIds []int64 `protobuf:"varint,5,rep,name=primary_prefix_column_ids,json=primaryPrefixColumnIds" json:"primary_prefix_column_ids,omitempty"` + PartitionIds []int64 `protobuf:"varint,6,rep,name=partition_ids,json=partitionIds" json:"partition_ids,omitempty"` + IsFastScan *bool `protobuf:"varint,7,opt,name=is_fast_scan,json=isFastScan" json:"is_fast_scan,omitempty"` + PushedDownFilterConditions []*Expr `protobuf:"bytes,8,rep,name=pushed_down_filter_conditions,json=pushedDownFilterConditions" json:"pushed_down_filter_conditions,omitempty"` + AnnQuery *ANNQueryInfo `protobuf:"bytes,11,opt,name=ann_query,json=annQuery" json:"ann_query,omitempty"` + RuntimeFilterList []*RuntimeFilter `protobuf:"bytes,9,rep,name=runtime_filter_list,json=runtimeFilterList" json:"runtime_filter_list,omitempty"` + MaxWaitTimeMs int32 `protobuf:"varint,10,opt,name=max_wait_time_ms,json=maxWaitTimeMs" json:"max_wait_time_ms"` + XXX_unrecognized []byte `json:"-"` } func (m *PartitionTableScan) Reset() { *m = PartitionTableScan{} } func (m *PartitionTableScan) String() string { return proto.CompactTextString(m) } func (*PartitionTableScan) ProtoMessage() {} -func (*PartitionTableScan) Descriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{9} } +func (*PartitionTableScan) Descriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{7} } func (m *PartitionTableScan) GetTableId() int64 { if m != nil { @@ -1567,13 +1302,6 @@ func (m *PartitionTableScan) GetMaxWaitTimeMs() int32 { return 0 } -func (m *PartitionTableScan) GetUsedColumnarIndexes() []*ColumnarIndexInfo { - if m != nil { - return m.UsedColumnarIndexes - } - return nil -} - type Join struct { JoinType JoinType `protobuf:"varint,1,opt,name=join_type,json=joinType,enum=tipb.JoinType" json:"join_type"` JoinExecType JoinExecType `protobuf:"varint,2,opt,name=join_exec_type,json=joinExecType,enum=tipb.JoinExecType" json:"join_exec_type"` @@ -1596,7 +1324,7 @@ type Join struct { func (m *Join) Reset() { *m = Join{} } func (m *Join) String() string { return proto.CompactTextString(m) } func (*Join) ProtoMessage() {} -func (*Join) Descriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{10} } +func (*Join) Descriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{8} } func (m *Join) GetJoinType() JoinType { if m != nil { @@ -1710,7 +1438,7 @@ type RuntimeFilter struct { func (m *RuntimeFilter) Reset() { *m = RuntimeFilter{} } func (m *RuntimeFilter) String() string { return proto.CompactTextString(m) } func (*RuntimeFilter) ProtoMessage() {} -func (*RuntimeFilter) Descriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{11} } +func (*RuntimeFilter) Descriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{9} } func (m *RuntimeFilter) GetId() int32 { if m != nil { @@ -1774,7 +1502,7 @@ type IndexScan struct { func (m *IndexScan) Reset() { *m = IndexScan{} } func (m *IndexScan) String() string { return proto.CompactTextString(m) } func (*IndexScan) ProtoMessage() {} -func (*IndexScan) Descriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{12} } +func (*IndexScan) Descriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{10} } func (m *IndexScan) GetTableId() int64 { if m != nil { @@ -1829,7 +1557,7 @@ type Selection struct { func (m *Selection) Reset() { *m = Selection{} } func (m *Selection) String() string { return proto.CompactTextString(m) } func (*Selection) ProtoMessage() {} -func (*Selection) Descriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{13} } +func (*Selection) Descriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{11} } func (m *Selection) GetConditions() []*Expr { if m != nil { @@ -1863,7 +1591,7 @@ type Projection struct { func (m *Projection) Reset() { *m = Projection{} } func (m *Projection) String() string { return proto.CompactTextString(m) } func (*Projection) ProtoMessage() {} -func (*Projection) Descriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{14} } +func (*Projection) Descriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{12} } func (m *Projection) GetExprs() []*Expr { if m != nil { @@ -1903,7 +1631,7 @@ type Aggregation struct { func (m *Aggregation) Reset() { *m = Aggregation{} } func (m *Aggregation) String() string { return proto.CompactTextString(m) } func (*Aggregation) ProtoMessage() {} -func (*Aggregation) Descriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{15} } +func (*Aggregation) Descriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{13} } func (m *Aggregation) GetGroupBy() []*Expr { if m != nil { @@ -1968,7 +1696,7 @@ type TopN struct { func (m *TopN) Reset() { *m = TopN{} } func (m *TopN) String() string { return proto.CompactTextString(m) } func (*TopN) ProtoMessage() {} -func (*TopN) Descriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{16} } +func (*TopN) Descriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{14} } func (m *TopN) GetOrderBy() []*ByItem { if m != nil { @@ -2012,7 +1740,7 @@ type Limit struct { func (m *Limit) Reset() { *m = Limit{} } func (m *Limit) String() string { return proto.CompactTextString(m) } func (*Limit) ProtoMessage() {} -func (*Limit) Descriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{17} } +func (*Limit) Descriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{15} } func (m *Limit) GetLimit() uint64 { if m != nil { @@ -2055,7 +1783,7 @@ type Kill struct { func (m *Kill) Reset() { *m = Kill{} } func (m *Kill) String() string { return proto.CompactTextString(m) } func (*Kill) ProtoMessage() {} -func (*Kill) Descriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{18} } +func (*Kill) Descriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{16} } func (m *Kill) GetConnID() uint64 { if m != nil { @@ -2079,7 +1807,7 @@ type ExplainForConnection struct { func (m *ExplainForConnection) Reset() { *m = ExplainForConnection{} } func (m *ExplainForConnection) String() string { return proto.CompactTextString(m) } func (*ExplainForConnection) ProtoMessage() {} -func (*ExplainForConnection) Descriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{19} } +func (*ExplainForConnection) Descriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{17} } func (m *ExplainForConnection) GetConnectionId() uint64 { if m != nil { @@ -2114,7 +1842,7 @@ func (m *ExecutorExecutionSummary) Reset() { *m = ExecutorExecutionSumma func (m *ExecutorExecutionSummary) String() string { return proto.CompactTextString(m) } func (*ExecutorExecutionSummary) ProtoMessage() {} func (*ExecutorExecutionSummary) Descriptor() ([]byte, []int) { - return fileDescriptorExecutor, []int{20} + return fileDescriptorExecutor, []int{18} } type isExecutorExecutionSummary_DetailInfo interface { @@ -2256,7 +1984,7 @@ type TiFlashExecutionInfo struct { func (m *TiFlashExecutionInfo) Reset() { *m = TiFlashExecutionInfo{} } func (m *TiFlashExecutionInfo) String() string { return proto.CompactTextString(m) } func (*TiFlashExecutionInfo) ProtoMessage() {} -func (*TiFlashExecutionInfo) Descriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{21} } +func (*TiFlashExecutionInfo) Descriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{19} } func (m *TiFlashExecutionInfo) GetExecutionSummaries() []*ExecutorExecutionSummary { if m != nil { @@ -2275,7 +2003,7 @@ func (m *TiFlashRegionNumOfInstance) Reset() { *m = TiFlashRegionNumOfIn func (m *TiFlashRegionNumOfInstance) String() string { return proto.CompactTextString(m) } func (*TiFlashRegionNumOfInstance) ProtoMessage() {} func (*TiFlashRegionNumOfInstance) Descriptor() ([]byte, []int) { - return fileDescriptorExecutor, []int{22} + return fileDescriptorExecutor, []int{20} } func (m *TiFlashRegionNumOfInstance) GetInstanceId() string { @@ -2342,7 +2070,7 @@ type TiFlashScanContext struct { func (m *TiFlashScanContext) Reset() { *m = TiFlashScanContext{} } func (m *TiFlashScanContext) String() string { return proto.CompactTextString(m) } func (*TiFlashScanContext) ProtoMessage() {} -func (*TiFlashScanContext) Descriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{23} } +func (*TiFlashScanContext) Descriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{21} } func (m *TiFlashScanContext) GetDmfileScannedPacks() uint64 { if m != nil && m.DmfileScannedPacks != nil { @@ -2655,7 +2383,7 @@ type TiFlashWaitSummary struct { func (m *TiFlashWaitSummary) Reset() { *m = TiFlashWaitSummary{} } func (m *TiFlashWaitSummary) String() string { return proto.CompactTextString(m) } func (*TiFlashWaitSummary) ProtoMessage() {} -func (*TiFlashWaitSummary) Descriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{24} } +func (*TiFlashWaitSummary) Descriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{22} } func (m *TiFlashWaitSummary) GetMinTSOWaitNs() uint64 { if m != nil && m.MinTSOWaitNs != nil { @@ -2688,7 +2416,7 @@ type Sort struct { func (m *Sort) Reset() { *m = Sort{} } func (m *Sort) String() string { return proto.CompactTextString(m) } func (*Sort) ProtoMessage() {} -func (*Sort) Descriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{25} } +func (*Sort) Descriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{23} } func (m *Sort) GetByItems() []*ByItem { if m != nil { @@ -2724,7 +2452,7 @@ type WindowFrameBound struct { func (m *WindowFrameBound) Reset() { *m = WindowFrameBound{} } func (m *WindowFrameBound) String() string { return proto.CompactTextString(m) } func (*WindowFrameBound) ProtoMessage() {} -func (*WindowFrameBound) Descriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{26} } +func (*WindowFrameBound) Descriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{24} } func (m *WindowFrameBound) GetType() WindowBoundType { if m != nil { @@ -2778,7 +2506,7 @@ type WindowFrame struct { func (m *WindowFrame) Reset() { *m = WindowFrame{} } func (m *WindowFrame) String() string { return proto.CompactTextString(m) } func (*WindowFrame) ProtoMessage() {} -func (*WindowFrame) Descriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{27} } +func (*WindowFrame) Descriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{25} } func (m *WindowFrame) GetType() WindowFrameType { if m != nil { @@ -2813,7 +2541,7 @@ type Window struct { func (m *Window) Reset() { *m = Window{} } func (m *Window) String() string { return proto.CompactTextString(m) } func (*Window) ProtoMessage() {} -func (*Window) Descriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{28} } +func (*Window) Descriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{26} } func (m *Window) GetFuncDesc() []*Expr { if m != nil { @@ -2858,7 +2586,7 @@ type GroupingExpr struct { func (m *GroupingExpr) Reset() { *m = GroupingExpr{} } func (m *GroupingExpr) String() string { return proto.CompactTextString(m) } func (*GroupingExpr) ProtoMessage() {} -func (*GroupingExpr) Descriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{29} } +func (*GroupingExpr) Descriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{27} } func (m *GroupingExpr) GetGroupingExpr() []*Expr { if m != nil { @@ -2875,7 +2603,7 @@ type GroupingSet struct { func (m *GroupingSet) Reset() { *m = GroupingSet{} } func (m *GroupingSet) String() string { return proto.CompactTextString(m) } func (*GroupingSet) ProtoMessage() {} -func (*GroupingSet) Descriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{30} } +func (*GroupingSet) Descriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{28} } func (m *GroupingSet) GetGroupingExprs() []*GroupingExpr { if m != nil { @@ -2895,7 +2623,7 @@ type Expand struct { func (m *Expand) Reset() { *m = Expand{} } func (m *Expand) String() string { return proto.CompactTextString(m) } func (*Expand) ProtoMessage() {} -func (*Expand) Descriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{31} } +func (*Expand) Descriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{29} } func (m *Expand) GetGroupingSets() []*GroupingSet { if m != nil { @@ -2926,7 +2654,7 @@ type ExprSlice struct { func (m *ExprSlice) Reset() { *m = ExprSlice{} } func (m *ExprSlice) String() string { return proto.CompactTextString(m) } func (*ExprSlice) ProtoMessage() {} -func (*ExprSlice) Descriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{32} } +func (*ExprSlice) Descriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{30} } func (m *ExprSlice) GetExprs() []*Expr { if m != nil { @@ -2945,7 +2673,7 @@ type Expand2 struct { func (m *Expand2) Reset() { *m = Expand2{} } func (m *Expand2) String() string { return proto.CompactTextString(m) } func (*Expand2) ProtoMessage() {} -func (*Expand2) Descriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{33} } +func (*Expand2) Descriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{31} } func (m *Expand2) GetProjExprs() []*ExprSlice { if m != nil { @@ -2976,7 +2704,7 @@ type BroadcastQuery struct { func (m *BroadcastQuery) Reset() { *m = BroadcastQuery{} } func (m *BroadcastQuery) String() string { return proto.CompactTextString(m) } func (*BroadcastQuery) ProtoMessage() {} -func (*BroadcastQuery) Descriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{34} } +func (*BroadcastQuery) Descriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{32} } func (m *BroadcastQuery) GetQuery() string { if m != nil && m.Query != nil { @@ -2992,8 +2720,6 @@ func init() { proto.RegisterType((*EncodedBytesSlice)(nil), "tipb.EncodedBytesSlice") proto.RegisterType((*ExchangeReceiver)(nil), "tipb.ExchangeReceiver") proto.RegisterType((*ANNQueryInfo)(nil), "tipb.ANNQueryInfo") - proto.RegisterType((*FTSQueryInfo)(nil), "tipb.FTSQueryInfo") - proto.RegisterType((*ColumnarIndexInfo)(nil), "tipb.ColumnarIndexInfo") proto.RegisterType((*TableScan)(nil), "tipb.TableScan") proto.RegisterType((*PartitionTableScan)(nil), "tipb.PartitionTableScan") proto.RegisterType((*Join)(nil), "tipb.Join") @@ -3028,8 +2754,6 @@ func init() { proto.RegisterEnum("tipb.VectorIndexKind", VectorIndexKind_name, VectorIndexKind_value) proto.RegisterEnum("tipb.VectorDistanceMetric", VectorDistanceMetric_name, VectorDistanceMetric_value) proto.RegisterEnum("tipb.ANNQueryType", ANNQueryType_name, ANNQueryType_value) - proto.RegisterEnum("tipb.FTSQueryType", FTSQueryType_name, FTSQueryType_value) - proto.RegisterEnum("tipb.ColumnarIndexType", ColumnarIndexType_name, ColumnarIndexType_value) proto.RegisterEnum("tipb.JoinType", JoinType_name, JoinType_value) proto.RegisterEnum("tipb.JoinExecType", JoinExecType_name, JoinExecType_value) proto.RegisterEnum("tipb.RuntimeFilterType", RuntimeFilterType_name, RuntimeFilterType_value) @@ -3569,135 +3293,6 @@ func (m *ANNQueryInfo) MarshalTo(dAtA []byte) (int, error) { return i, nil } -func (m *FTSQueryInfo) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalTo(dAtA) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *FTSQueryInfo) MarshalTo(dAtA []byte) (int, error) { - var i int - _ = i - var l int - _ = l - dAtA[i] = 0x8 - i++ - i = encodeVarintExecutor(dAtA, i, uint64(m.QueryType)) - dAtA[i] = 0x10 - i++ - i = encodeVarintExecutor(dAtA, i, uint64(m.IndexId)) - if len(m.Columns) > 0 { - for _, msg := range m.Columns { - dAtA[i] = 0x1a - i++ - i = encodeVarintExecutor(dAtA, i, uint64(msg.Size())) - n, err := msg.MarshalTo(dAtA[i:]) - if err != nil { - return 0, err - } - i += n - } - } - if len(m.ColumnNames) > 0 { - for _, s := range m.ColumnNames { - dAtA[i] = 0x22 - i++ - l = len(s) - for l >= 1<<7 { - dAtA[i] = uint8(uint64(l)&0x7f | 0x80) - l >>= 7 - i++ - } - dAtA[i] = uint8(l) - i++ - i += copy(dAtA[i:], s) - } - } - dAtA[i] = 0x2a - i++ - i = encodeVarintExecutor(dAtA, i, uint64(len(m.QueryText))) - i += copy(dAtA[i:], m.QueryText) - dAtA[i] = 0x32 - i++ - i = encodeVarintExecutor(dAtA, i, uint64(len(m.QueryTokenizer))) - i += copy(dAtA[i:], m.QueryTokenizer) - if m.TopK != nil { - dAtA[i] = 0x50 - i++ - i = encodeVarintExecutor(dAtA, i, uint64(*m.TopK)) - } - dAtA[i] = 0xa0 - i++ - dAtA[i] = 0x1 - i++ - i = encodeVarintExecutor(dAtA, i, uint64(m.QueryFunc)) - if m.BooleanQuery != nil { - dAtA[i] = 0xb2 - i++ - dAtA[i] = 0x1 - i++ - i = encodeVarintExecutor(dAtA, i, uint64(m.BooleanQuery.Size())) - n21, err := m.BooleanQuery.MarshalTo(dAtA[i:]) - if err != nil { - return 0, err - } - i += n21 - } - if m.XXX_unrecognized != nil { - i += copy(dAtA[i:], m.XXX_unrecognized) - } - return i, nil -} - -func (m *ColumnarIndexInfo) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalTo(dAtA) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *ColumnarIndexInfo) MarshalTo(dAtA []byte) (int, error) { - var i int - _ = i - var l int - _ = l - dAtA[i] = 0x8 - i++ - i = encodeVarintExecutor(dAtA, i, uint64(m.IndexType)) - if m.Index != nil { - nn22, err := m.Index.MarshalTo(dAtA[i:]) - if err != nil { - return 0, err - } - i += nn22 - } - if m.XXX_unrecognized != nil { - i += copy(dAtA[i:], m.XXX_unrecognized) - } - return i, nil -} - -func (m *ColumnarIndexInfo_FtsQueryInfo) MarshalTo(dAtA []byte) (int, error) { - i := 0 - if m.FtsQueryInfo != nil { - dAtA[i] = 0x22 - i++ - i = encodeVarintExecutor(dAtA, i, uint64(m.FtsQueryInfo.Size())) - n23, err := m.FtsQueryInfo.MarshalTo(dAtA[i:]) - if err != nil { - return 0, err - } - i += n23 - } - return i, nil -} func (m *TableScan) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) @@ -3816,23 +3411,11 @@ func (m *TableScan) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x6a i++ i = encodeVarintExecutor(dAtA, i, uint64(m.AnnQuery.Size())) - n24, err := m.AnnQuery.MarshalTo(dAtA[i:]) + n21, err := m.AnnQuery.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n24 - } - if len(m.UsedColumnarIndexes) > 0 { - for _, msg := range m.UsedColumnarIndexes { - dAtA[i] = 0x72 - i++ - i = encodeVarintExecutor(dAtA, i, uint64(msg.Size())) - n, err := msg.MarshalTo(dAtA[i:]) - if err != nil { - return 0, err - } - i += n - } + i += n21 } if m.XXX_unrecognized != nil { i += copy(dAtA[i:], m.XXX_unrecognized) @@ -3940,23 +3523,11 @@ func (m *PartitionTableScan) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x5a i++ i = encodeVarintExecutor(dAtA, i, uint64(m.AnnQuery.Size())) - n25, err := m.AnnQuery.MarshalTo(dAtA[i:]) + n22, err := m.AnnQuery.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n25 - } - if len(m.UsedColumnarIndexes) > 0 { - for _, msg := range m.UsedColumnarIndexes { - dAtA[i] = 0x62 - i++ - i = encodeVarintExecutor(dAtA, i, uint64(msg.Size())) - n, err := msg.MarshalTo(dAtA[i:]) - if err != nil { - return 0, err - } - i += n - } + i += n22 } if m.XXX_unrecognized != nil { i += copy(dAtA[i:], m.XXX_unrecognized) @@ -4293,11 +3864,11 @@ func (m *Selection) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x1a i++ i = encodeVarintExecutor(dAtA, i, uint64(m.Child.Size())) - n26, err := m.Child.MarshalTo(dAtA[i:]) + n23, err := m.Child.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n26 + i += n23 } if m.XXX_unrecognized != nil { i += copy(dAtA[i:], m.XXX_unrecognized) @@ -4348,11 +3919,11 @@ func (m *Projection) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x1a i++ i = encodeVarintExecutor(dAtA, i, uint64(m.Child.Size())) - n27, err := m.Child.MarshalTo(dAtA[i:]) + n24, err := m.Child.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n27 + i += n24 } if m.XXX_unrecognized != nil { i += copy(dAtA[i:], m.XXX_unrecognized) @@ -4435,11 +4006,11 @@ func (m *Aggregation) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x32 i++ i = encodeVarintExecutor(dAtA, i, uint64(m.Child.Size())) - n28, err := m.Child.MarshalTo(dAtA[i:]) + n25, err := m.Child.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n28 + i += n25 } if m.PreAggMode != nil { dAtA[i] = 0x38 @@ -4486,11 +4057,11 @@ func (m *TopN) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x1a i++ i = encodeVarintExecutor(dAtA, i, uint64(m.Child.Size())) - n29, err := m.Child.MarshalTo(dAtA[i:]) + n26, err := m.Child.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n29 + i += n26 } if len(m.PartitionBy) > 0 { for _, msg := range m.PartitionBy { @@ -4532,11 +4103,11 @@ func (m *Limit) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x12 i++ i = encodeVarintExecutor(dAtA, i, uint64(m.Child.Size())) - n30, err := m.Child.MarshalTo(dAtA[i:]) + n27, err := m.Child.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n30 + i += n27 } if len(m.PartitionBy) > 0 { for _, msg := range m.PartitionBy { @@ -4666,11 +4237,11 @@ func (m *ExecutorExecutionSummary) MarshalTo(dAtA []byte) (int, error) { i = encodeVarintExecutor(dAtA, i, uint64(*m.Concurrency)) } if m.DetailInfo != nil { - nn31, err := m.DetailInfo.MarshalTo(dAtA[i:]) + nn28, err := m.DetailInfo.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += nn31 + i += nn28 } if m.RuConsumption != nil { dAtA[i] = 0x3a @@ -4682,11 +4253,11 @@ func (m *ExecutorExecutionSummary) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x42 i++ i = encodeVarintExecutor(dAtA, i, uint64(m.TiflashWaitSummary.Size())) - n32, err := m.TiflashWaitSummary.MarshalTo(dAtA[i:]) + n29, err := m.TiflashWaitSummary.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n32 + i += n29 } if m.XXX_unrecognized != nil { i += copy(dAtA[i:], m.XXX_unrecognized) @@ -4700,11 +4271,11 @@ func (m *ExecutorExecutionSummary_TiflashScanContext) MarshalTo(dAtA []byte) (in dAtA[i] = 0x32 i++ i = encodeVarintExecutor(dAtA, i, uint64(m.TiflashScanContext.Size())) - n33, err := m.TiflashScanContext.MarshalTo(dAtA[i:]) + n30, err := m.TiflashScanContext.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n33 + i += n30 } return i, nil } @@ -5149,11 +4720,11 @@ func (m *Sort) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x1a i++ i = encodeVarintExecutor(dAtA, i, uint64(m.Child.Size())) - n34, err := m.Child.MarshalTo(dAtA[i:]) + n31, err := m.Child.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n34 + i += n31 } if m.XXX_unrecognized != nil { i += copy(dAtA[i:], m.XXX_unrecognized) @@ -5208,11 +4779,11 @@ func (m *WindowFrameBound) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x2a i++ i = encodeVarintExecutor(dAtA, i, uint64(m.FrameRange.Size())) - n35, err := m.FrameRange.MarshalTo(dAtA[i:]) + n32, err := m.FrameRange.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n35 + i += n32 } if m.CmpDataType != nil { dAtA[i] = 0x30 @@ -5247,21 +4818,21 @@ func (m *WindowFrame) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x12 i++ i = encodeVarintExecutor(dAtA, i, uint64(m.Start.Size())) - n36, err := m.Start.MarshalTo(dAtA[i:]) + n33, err := m.Start.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n36 + i += n33 } if m.End != nil { dAtA[i] = 0x1a i++ i = encodeVarintExecutor(dAtA, i, uint64(m.End.Size())) - n37, err := m.End.MarshalTo(dAtA[i:]) + n34, err := m.End.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n37 + i += n34 } if m.XXX_unrecognized != nil { i += copy(dAtA[i:], m.XXX_unrecognized) @@ -5324,21 +4895,21 @@ func (m *Window) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x22 i++ i = encodeVarintExecutor(dAtA, i, uint64(m.Frame.Size())) - n38, err := m.Frame.MarshalTo(dAtA[i:]) + n35, err := m.Frame.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n38 + i += n35 } if m.Child != nil { dAtA[i] = 0x2a i++ i = encodeVarintExecutor(dAtA, i, uint64(m.Child.Size())) - n39, err := m.Child.MarshalTo(dAtA[i:]) + n36, err := m.Child.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n39 + i += n36 } if m.XXX_unrecognized != nil { i += copy(dAtA[i:], m.XXX_unrecognized) @@ -5443,11 +5014,11 @@ func (m *Expand) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x12 i++ i = encodeVarintExecutor(dAtA, i, uint64(m.Child.Size())) - n40, err := m.Child.MarshalTo(dAtA[i:]) + n37, err := m.Child.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n40 + i += n37 } if m.Version != nil { dAtA[i] = 0x18 @@ -5539,11 +5110,11 @@ func (m *Expand2) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x1a i++ i = encodeVarintExecutor(dAtA, i, uint64(m.Child.Size())) - n41, err := m.Child.MarshalTo(dAtA[i:]) + n38, err := m.Child.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n41 + i += n38 } if m.XXX_unrecognized != nil { i += copy(dAtA[i:], m.XXX_unrecognized) @@ -5817,63 +5388,6 @@ func (m *ANNQueryInfo) Size() (n int) { return n } -func (m *FTSQueryInfo) Size() (n int) { - var l int - _ = l - n += 1 + sovExecutor(uint64(m.QueryType)) - n += 1 + sovExecutor(uint64(m.IndexId)) - if len(m.Columns) > 0 { - for _, e := range m.Columns { - l = e.Size() - n += 1 + l + sovExecutor(uint64(l)) - } - } - if len(m.ColumnNames) > 0 { - for _, s := range m.ColumnNames { - l = len(s) - n += 1 + l + sovExecutor(uint64(l)) - } - } - l = len(m.QueryText) - n += 1 + l + sovExecutor(uint64(l)) - l = len(m.QueryTokenizer) - n += 1 + l + sovExecutor(uint64(l)) - if m.TopK != nil { - n += 1 + sovExecutor(uint64(*m.TopK)) - } - n += 2 + sovExecutor(uint64(m.QueryFunc)) - if m.BooleanQuery != nil { - l = m.BooleanQuery.Size() - n += 2 + l + sovExecutor(uint64(l)) - } - if m.XXX_unrecognized != nil { - n += len(m.XXX_unrecognized) - } - return n -} - -func (m *ColumnarIndexInfo) Size() (n int) { - var l int - _ = l - n += 1 + sovExecutor(uint64(m.IndexType)) - if m.Index != nil { - n += m.Index.Size() - } - if m.XXX_unrecognized != nil { - n += len(m.XXX_unrecognized) - } - return n -} - -func (m *ColumnarIndexInfo_FtsQueryInfo) Size() (n int) { - var l int - _ = l - if m.FtsQueryInfo != nil { - l = m.FtsQueryInfo.Size() - n += 1 + l + sovExecutor(uint64(l)) - } - return n -} func (m *TableScan) Size() (n int) { var l int _ = l @@ -5925,12 +5439,6 @@ func (m *TableScan) Size() (n int) { l = m.AnnQuery.Size() n += 1 + l + sovExecutor(uint64(l)) } - if len(m.UsedColumnarIndexes) > 0 { - for _, e := range m.UsedColumnarIndexes { - l = e.Size() - n += 1 + l + sovExecutor(uint64(l)) - } - } if m.XXX_unrecognized != nil { n += len(m.XXX_unrecognized) } @@ -5983,12 +5491,6 @@ func (m *PartitionTableScan) Size() (n int) { l = m.AnnQuery.Size() n += 1 + l + sovExecutor(uint64(l)) } - if len(m.UsedColumnarIndexes) > 0 { - for _, e := range m.UsedColumnarIndexes { - l = e.Size() - n += 1 + l + sovExecutor(uint64(l)) - } - } if m.XXX_unrecognized != nil { n += len(m.XXX_unrecognized) } @@ -8444,387 +7946,6 @@ func (m *ANNQueryInfo) Unmarshal(dAtA []byte) error { } return nil } -func (m *FTSQueryInfo) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowExecutor - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= (uint64(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: FTSQueryInfo: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: FTSQueryInfo: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field QueryType", wireType) - } - m.QueryType = 0 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowExecutor - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - m.QueryType |= (FTSQueryType(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - case 2: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field IndexId", wireType) - } - m.IndexId = 0 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowExecutor - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - m.IndexId |= (int64(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - case 3: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Columns", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowExecutor - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= (int(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthExecutor - } - postIndex := iNdEx + msglen - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Columns = append(m.Columns, &ColumnInfo{}) - if err := m.Columns[len(m.Columns)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - case 4: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field ColumnNames", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowExecutor - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= (uint64(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthExecutor - } - postIndex := iNdEx + intStringLen - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.ColumnNames = append(m.ColumnNames, string(dAtA[iNdEx:postIndex])) - iNdEx = postIndex - case 5: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field QueryText", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowExecutor - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= (uint64(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthExecutor - } - postIndex := iNdEx + intStringLen - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.QueryText = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 6: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field QueryTokenizer", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowExecutor - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= (uint64(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthExecutor - } - postIndex := iNdEx + intStringLen - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.QueryTokenizer = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 10: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field TopK", wireType) - } - var v uint32 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowExecutor - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - v |= (uint32(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - m.TopK = &v - case 20: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field QueryFunc", wireType) - } - m.QueryFunc = 0 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowExecutor - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - m.QueryFunc |= (ScalarFuncSig(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - case 22: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field BooleanQuery", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowExecutor - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= (int(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthExecutor - } - postIndex := iNdEx + msglen - if postIndex > l { - return io.ErrUnexpectedEOF - } - if m.BooleanQuery == nil { - m.BooleanQuery = &FTSBooleanQuery{} - } - if err := m.BooleanQuery.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipExecutor(dAtA[iNdEx:]) - if err != nil { - return err - } - if skippy < 0 { - return ErrInvalidLengthExecutor - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *ColumnarIndexInfo) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowExecutor - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= (uint64(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: ColumnarIndexInfo: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: ColumnarIndexInfo: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field IndexType", wireType) - } - m.IndexType = 0 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowExecutor - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - m.IndexType |= (ColumnarIndexType(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - case 4: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field FtsQueryInfo", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowExecutor - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= (int(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthExecutor - } - postIndex := iNdEx + msglen - if postIndex > l { - return io.ErrUnexpectedEOF - } - v := &FTSQueryInfo{} - if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - m.Index = &ColumnarIndexInfo_FtsQueryInfo{v} - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipExecutor(dAtA[iNdEx:]) - if err != nil { - return err - } - if skippy < 0 { - return ErrInvalidLengthExecutor - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} func (m *TableScan) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 @@ -9254,37 +8375,6 @@ func (m *TableScan) Unmarshal(dAtA []byte) error { return err } iNdEx = postIndex - case 14: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field UsedColumnarIndexes", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowExecutor - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= (int(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthExecutor - } - postIndex := iNdEx + msglen - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.UsedColumnarIndexes = append(m.UsedColumnarIndexes, &ColumnarIndexInfo{}) - if err := m.UsedColumnarIndexes[len(m.UsedColumnarIndexes)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipExecutor(dAtA[iNdEx:]) @@ -9727,37 +8817,6 @@ func (m *PartitionTableScan) Unmarshal(dAtA []byte) error { return err } iNdEx = postIndex - case 12: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field UsedColumnarIndexes", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowExecutor - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= (int(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthExecutor - } - postIndex := iNdEx + msglen - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.UsedColumnarIndexes = append(m.UsedColumnarIndexes, &ColumnarIndexInfo{}) - if err := m.UsedColumnarIndexes[len(m.UsedColumnarIndexes)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipExecutor(dAtA[iNdEx:]) @@ -14563,308 +13622,291 @@ var ( func init() { proto.RegisterFile("executor.proto", fileDescriptorExecutor) } var fileDescriptorExecutor = []byte{ - // 4836 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x5a, 0x4b, 0x73, 0x1b, 0x49, - 0x72, 0x26, 0x40, 0x90, 0x04, 0x12, 0x0f, 0x36, 0x8b, 0x0f, 0x41, 0xd4, 0x48, 0xa2, 0x30, 0x9a, - 0x19, 0x2e, 0x3c, 0xa3, 0xd1, 0x50, 0xda, 0x79, 0xed, 0x63, 0x86, 0xcf, 0x11, 0x24, 0x12, 0xe4, - 0x36, 0xb8, 0x9a, 0x8d, 0xb0, 0x23, 0x3a, 0x9a, 0xdd, 0x05, 0xb0, 0xc4, 0x7e, 0xa9, 0x1f, 0x12, - 0x38, 0xa7, 0x3d, 0xfb, 0xe4, 0xf0, 0x86, 0x27, 0x7c, 0xf6, 0xc9, 0x0e, 0x3b, 0x7c, 0xf0, 0x1f, - 0xb0, 0x8f, 0x7b, 0x71, 0x84, 0xaf, 0xde, 0x83, 0xc3, 0x31, 0x3e, 0x39, 0xc2, 0xbf, 0xc0, 0x27, - 0x47, 0x65, 0x55, 0x35, 0x0a, 0x04, 0xa4, 0xd1, 0x78, 0xf7, 0xb0, 0x27, 0xa0, 0x33, 0xbf, 0xcc, - 0x7a, 0x65, 0x66, 0x65, 0x65, 0x15, 0x34, 0xe8, 0x90, 0x3a, 0x59, 0x1a, 0xc6, 0xf7, 0xa2, 0x38, - 0x4c, 0x43, 0x52, 0x4a, 0x59, 0x74, 0xb6, 0x6e, 0xd0, 0x61, 0x14, 0xd3, 0x24, 0x61, 0x61, 0x20, - 0xe8, 0xeb, 0xb5, 0xc4, 0x39, 0xa7, 0xbe, 0x2d, 0xbf, 0x56, 0x06, 0xe1, 0x20, 0xc4, 0xbf, 0x1f, - 0xf2, 0x7f, 0x82, 0xda, 0xfa, 0xbb, 0x0a, 0x94, 0xf7, 0xa5, 0x3a, 0x72, 0x17, 0x8a, 0x69, 0xd4, - 0x2c, 0x6c, 0x14, 0x36, 0x1b, 0x5b, 0x8d, 0x7b, 0x5c, 0xeb, 0x3d, 0xce, 0x3b, 0xbd, 0x8c, 0xe8, - 0x4e, 0xe9, 0xb7, 0xff, 0x71, 0x7b, 0xc6, 0x2c, 0xa6, 0x11, 0x69, 0x43, 0x39, 0x3d, 0xf3, 0xac, - 0xc4, 0xb1, 0x83, 0x66, 0x71, 0xa3, 0xb0, 0x59, 0xdd, 0x5a, 0x14, 0xd8, 0x53, 0xfb, 0xcc, 0xa3, - 0x3d, 0xc7, 0x0e, 0xcc, 0x85, 0xf4, 0xcc, 0xe3, 0x7f, 0x38, 0x96, 0xb9, 0x43, 0x81, 0x9d, 0xd5, - 0xb1, 0x9d, 0xc0, 0xa5, 0x43, 0x81, 0x65, 0x2e, 0xfe, 0x21, 0x1f, 0x40, 0x25, 0xa1, 0x1e, 0x75, - 0x52, 0x16, 0x06, 0xcd, 0x92, 0x0e, 0xee, 0x29, 0xb2, 0x39, 0x42, 0x90, 0x07, 0x50, 0xb5, 0x07, - 0x83, 0x98, 0x0e, 0x6c, 0x14, 0x98, 0x43, 0x81, 0x25, 0x21, 0xb0, 0x3d, 0x62, 0x98, 0x3a, 0x8a, - 0xdc, 0x82, 0x52, 0x1a, 0x46, 0xdd, 0xe6, 0x3c, 0xa2, 0x41, 0xf6, 0x3b, 0x8c, 0xba, 0x26, 0xd2, - 0xc9, 0x1d, 0x98, 0xf3, 0x98, 0xcf, 0xd2, 0xe6, 0x02, 0x02, 0xaa, 0x02, 0x70, 0xc8, 0x49, 0xa6, - 0xe0, 0x90, 0x5d, 0x58, 0xa2, 0x43, 0xe7, 0xdc, 0x0e, 0x06, 0xd4, 0x8a, 0xa9, 0x43, 0xd9, 0x0b, - 0x1a, 0x37, 0xcb, 0x08, 0x5f, 0x53, 0x73, 0x26, 0xd8, 0xa6, 0xe4, 0x9a, 0x06, 0xbd, 0x42, 0xe1, - 0xfd, 0x78, 0x16, 0xb2, 0xa0, 0x59, 0xd1, 0xfb, 0xf1, 0x38, 0x64, 0x81, 0x89, 0x74, 0x72, 0x1b, - 0xaa, 0x6a, 0x91, 0x2d, 0xe6, 0x36, 0x61, 0xa3, 0xb0, 0x59, 0x31, 0x41, 0x91, 0x3a, 0x2e, 0x57, - 0x70, 0xc1, 0x3c, 0xaf, 0x59, 0xd5, 0x15, 0x3c, 0x61, 0x9e, 0x67, 0x22, 0x9d, 0xfc, 0x0c, 0x16, - 0xf3, 0x5e, 0x26, 0x34, 0x70, 0x69, 0xdc, 0xac, 0x21, 0x74, 0x65, 0xbc, 0x8f, 0x3d, 0xe4, 0x99, - 0x0d, 0x3a, 0xf6, 0x4d, 0xee, 0x03, 0x9c, 0xc4, 0xe1, 0x33, 0xb9, 0x18, 0x75, 0x94, 0x34, 0x84, - 0xe4, 0x88, 0x6e, 0x6a, 0x18, 0xf2, 0x18, 0x56, 0x22, 0x3b, 0x4e, 0x19, 0xff, 0xb0, 0x52, 0x6e, - 0x09, 0x62, 0xd5, 0x1b, 0x28, 0xdb, 0x94, 0xb2, 0x0a, 0x31, 0x32, 0x15, 0x12, 0x4d, 0xd0, 0xf8, - 0xe0, 0x92, 0x30, 0x4e, 0x9b, 0x8b, 0xfa, 0xe0, 0x7a, 0x61, 0x9c, 0x9a, 0x48, 0x27, 0x77, 0x61, - 0xfe, 0x25, 0x0b, 0xdc, 0xf0, 0x65, 0xd3, 0x40, 0x44, 0x4d, 0x20, 0xbe, 0x46, 0x9a, 0x29, 0x79, - 0xa4, 0x0b, 0x77, 0xfa, 0x2c, 0xa0, 0xd6, 0x20, 0xb6, 0x59, 0x40, 0x5d, 0x2b, 0x39, 0xcf, 0xfa, - 0x7d, 0xde, 0xad, 0x34, 0xa6, 0xb6, 0x6f, 0x39, 0x61, 0x16, 0xa4, 0xcd, 0xa5, 0x8d, 0xc2, 0x66, - 0x49, 0x1a, 0xf7, 0x4d, 0x0e, 0xff, 0x4a, 0xa0, 0x7b, 0x02, 0xdc, 0x43, 0xec, 0x2e, 0x87, 0x92, - 0xc7, 0x70, 0x7b, 0xaa, 0xbe, 0x33, 0x3b, 0x75, 0xce, 0xad, 0x84, 0x7d, 0x43, 0x9b, 0x44, 0xd3, - 0x76, 0x63, 0x52, 0xdb, 0x0e, 0x47, 0xf6, 0xd8, 0x37, 0x94, 0x8f, 0x80, 0x0e, 0x23, 0x3b, 0x70, - 0x9b, 0xcb, 0xfa, 0x08, 0xf6, 0x91, 0x66, 0x4a, 0x1e, 0x79, 0x0f, 0x16, 0xc4, 0xbf, 0xad, 0xe6, - 0x0a, 0xc2, 0xea, 0x3a, 0x6c, 0xcb, 0x54, 0x5c, 0xbe, 0xda, 0x67, 0x71, 0x68, 0xbb, 0x8e, 0x9d, - 0xa4, 0xd6, 0xf3, 0x8c, 0xc6, 0x97, 0xcd, 0x55, 0x7d, 0xb5, 0x77, 0x14, 0xf3, 0x17, 0x9c, 0x67, - 0x36, 0xce, 0xc6, 0xbe, 0xc9, 0x43, 0xa8, 0x31, 0xee, 0x8f, 0x96, 0x17, 0x86, 0x17, 0x59, 0xd4, - 0x6c, 0xea, 0xbe, 0x84, 0x9e, 0x7a, 0x18, 0x86, 0x17, 0xbf, 0x8c, 0xcc, 0x2a, 0x53, 0x1f, 0x59, - 0x44, 0x6e, 0x02, 0x44, 0x76, 0x4c, 0x83, 0xd4, 0x62, 0xee, 0xb0, 0x79, 0x7d, 0xa3, 0xb0, 0x59, - 0x37, 0x2b, 0x82, 0xd2, 0x71, 0x87, 0xe4, 0x04, 0xd6, 0xe8, 0x30, 0xf2, 0x6c, 0x16, 0x58, 0xfd, - 0x30, 0xb6, 0x9c, 0x30, 0x08, 0xa4, 0x39, 0xad, 0xa3, 0xfa, 0xf5, 0x7c, 0x2c, 0x1c, 0x73, 0x10, - 0xc6, 0xbb, 0x39, 0xc2, 0x5c, 0xa1, 0x53, 0xa8, 0xad, 0x7f, 0x98, 0x85, 0xc6, 0xb8, 0xdd, 0x92, - 0x4d, 0x2d, 0x62, 0x91, 0x71, 0xcb, 0x9e, 0x88, 0x5a, 0x4b, 0x34, 0x70, 0x42, 0x97, 0xba, 0x56, - 0x6a, 0x27, 0x17, 0x96, 0x4f, 0x53, 0xbb, 0x59, 0xdc, 0x98, 0xdd, 0xac, 0x99, 0x8b, 0x92, 0x71, - 0x6a, 0x27, 0x17, 0x47, 0x34, 0xb5, 0xc9, 0x47, 0xd0, 0x18, 0xd9, 0xf2, 0x05, 0xbd, 0x4c, 0x9a, - 0xb3, 0x1b, 0xb3, 0x23, 0x4b, 0xdc, 0x1f, 0x46, 0xb1, 0x59, 0xcf, 0x11, 0x4f, 0xe8, 0x65, 0x42, - 0xee, 0xc2, 0x9c, 0x73, 0xce, 0x3c, 0x57, 0x06, 0x2e, 0x2d, 0x7a, 0x72, 0x87, 0x35, 0x05, 0x93, - 0xbc, 0x03, 0x73, 0xe9, 0x65, 0x44, 0x93, 0xe6, 0x1c, 0xea, 0x93, 0xe1, 0xed, 0x80, 0x51, 0xcf, - 0xe5, 0xdd, 0x35, 0x05, 0x97, 0x7c, 0x02, 0x8b, 0xb6, 0xe7, 0x59, 0x7d, 0x4e, 0xb7, 0x84, 0xc0, - 0xfc, 0x74, 0x81, 0xba, 0xed, 0x79, 0xf9, 0x57, 0x42, 0x7e, 0x06, 0x55, 0x27, 0xf4, 0xd5, 0x36, - 0x80, 0x41, 0xac, 0xb1, 0xb5, 0x2a, 0x84, 0x76, 0x47, 0x8c, 0xa3, 0xd0, 0x55, 0x53, 0xa3, 0xe3, - 0xc9, 0x21, 0xac, 0x65, 0x91, 0x72, 0x8f, 0x94, 0x6a, 0x13, 0x55, 0xc6, 0xe6, 0xaf, 0xc9, 0x51, - 0x89, 0xe9, 0xda, 0xb9, 0x4c, 0x69, 0xd2, 0xf3, 0x98, 0x43, 0xcd, 0x65, 0x25, 0xb6, 0x9b, 0x52, - 0x35, 0x8b, 0xad, 0x3f, 0x2f, 0x40, 0x55, 0x33, 0x1e, 0x72, 0x1f, 0x56, 0x84, 0x95, 0x9d, 0xdb, - 0x81, 0xeb, 0x51, 0x2b, 0xec, 0xf7, 0x13, 0x9a, 0x26, 0xcd, 0xc2, 0xc6, 0xec, 0x66, 0xdd, 0x24, - 0xc8, 0x7b, 0x84, 0xac, 0x63, 0xc1, 0xe1, 0x16, 0x76, 0x41, 0x69, 0x64, 0x85, 0x31, 0x8f, 0x5f, - 0x7c, 0xaf, 0x29, 0x9b, 0x15, 0x4e, 0x39, 0xe6, 0x04, 0xbe, 0xb9, 0xe0, 0xb4, 0xc6, 0x34, 0x90, - 0x0b, 0x74, 0x75, 0xda, 0x73, 0x7e, 0xeb, 0x53, 0x58, 0x9a, 0xe8, 0x36, 0x79, 0x1b, 0xea, 0xba, - 0x4d, 0x88, 0xae, 0xd4, 0xcc, 0x9a, 0x66, 0x0f, 0x49, 0xeb, 0x77, 0x05, 0x30, 0xae, 0x46, 0xf4, - 0xe9, 0xd6, 0x54, 0x98, 0x6e, 0x4d, 0xf7, 0xa1, 0xaa, 0xaf, 0x64, 0x71, 0xfa, 0x4a, 0x42, 0x7f, - 0xb4, 0x8c, 0x2d, 0xb4, 0xea, 0xd9, 0x57, 0x59, 0x35, 0xda, 0xf3, 0x1e, 0xdc, 0x0e, 0x63, 0x36, - 0x60, 0x81, 0xed, 0xe1, 0x5a, 0x45, 0xb1, 0x1b, 0x3a, 0x19, 0x8d, 0xb5, 0xfe, 0x94, 0xb0, 0x3f, - 0x37, 0x14, 0x6c, 0x37, 0xa5, 0x27, 0x12, 0x94, 0xaf, 0xd1, 0x6f, 0x66, 0xa1, 0xb6, 0xdd, 0xed, - 0x62, 0x18, 0xe8, 0x04, 0xfd, 0x90, 0x7c, 0x02, 0x80, 0xf1, 0x03, 0x3b, 0x3b, 0xee, 0x58, 0x0a, - 0xa7, 0x39, 0x56, 0xe5, 0xb9, 0x22, 0x90, 0x0e, 0x2c, 0xba, 0x2c, 0x49, 0xed, 0xc0, 0xa1, 0xbc, - 0xf5, 0x98, 0x39, 0xb8, 0x60, 0x0d, 0xe5, 0xe7, 0x4f, 0xa9, 0x93, 0x86, 0xf1, 0x9e, 0x84, 0x1c, - 0x21, 0x42, 0x6a, 0x69, 0xb8, 0x63, 0x54, 0x72, 0x1d, 0xe6, 0xd2, 0x30, 0xb2, 0x2e, 0x70, 0x06, - 0xea, 0x12, 0xc4, 0xf7, 0xe7, 0x27, 0xe4, 0x1d, 0x6e, 0xe0, 0x5e, 0xe6, 0x07, 0x56, 0x60, 0xfb, - 0x14, 0x9d, 0xad, 0x22, 0x01, 0x20, 0x18, 0x5d, 0xdb, 0xa7, 0xe4, 0x0e, 0x54, 0x24, 0x8c, 0xb9, - 0x98, 0x19, 0xcc, 0x4a, 0x50, 0x59, 0x90, 0x71, 0x03, 0xad, 0xc6, 0xb4, 0x6f, 0xbd, 0xa0, 0x8e, - 0xd5, 0x7f, 0xb0, 0x85, 0x09, 0x41, 0xcd, 0xac, 0xc4, 0xb4, 0xff, 0x94, 0x3a, 0x07, 0x0f, 0xb6, - 0xc8, 0x6d, 0x28, 0x0b, 0x6b, 0x65, 0x2e, 0xee, 0xee, 0x4a, 0xc3, 0x02, 0x52, 0x3b, 0x3c, 0x38, - 0xd7, 0x7c, 0x7b, 0x68, 0xa9, 0xbe, 0xe3, 0x1e, 0x5d, 0x50, 0x5e, 0xe5, 0xdb, 0x43, 0x35, 0x54, - 0xd2, 0x86, 0xc6, 0x79, 0x90, 0xbc, 0xb4, 0x68, 0xdf, 0x4a, 0xa8, 0x1d, 0x3b, 0xe7, 0x18, 0xcc, - 0xd5, 0xb8, 0x6a, 0x9c, 0xb7, 0xdf, 0xef, 0x21, 0xe7, 0x71, 0xa9, 0xbc, 0x60, 0x94, 0x5b, 0xdf, - 0xce, 0x42, 0xed, 0xe0, 0xb4, 0xf7, 0x46, 0xab, 0xa2, 0x70, 0xd3, 0x57, 0x45, 0x1f, 0x45, 0x71, - 0xda, 0x28, 0xda, 0xb0, 0x20, 0xa6, 0x44, 0xc5, 0x38, 0x43, 0x45, 0x0b, 0x9c, 0xa7, 0xa0, 0x1f, - 0x9a, 0x0a, 0x40, 0xee, 0x40, 0x4d, 0x9b, 0xfc, 0x04, 0xed, 0xab, 0x62, 0x56, 0x47, 0xf3, 0x9e, - 0x90, 0xb7, 0xf3, 0x8e, 0xd2, 0x61, 0x8a, 0x33, 0x5f, 0x19, 0xef, 0x14, 0x1d, 0xa6, 0xe4, 0x03, - 0x58, 0x94, 0xa0, 0xf0, 0x82, 0x06, 0xec, 0x1b, 0x1a, 0xe3, 0xf4, 0x2b, 0x64, 0x43, 0x20, 0x15, - 0x8f, 0x2c, 0x2b, 0x73, 0x00, 0xdc, 0x62, 0x84, 0x21, 0x7c, 0xaa, 0x1a, 0xea, 0x67, 0x81, 0x83, - 0x13, 0xda, 0xd8, 0x5a, 0x96, 0x89, 0x82, 0x63, 0x7b, 0x76, 0x7c, 0x90, 0x05, 0x4e, 0x8f, 0x0d, - 0xc6, 0x5a, 0xe7, 0x34, 0xf2, 0x39, 0xd4, 0xcf, 0xc2, 0xd0, 0xa3, 0x76, 0x20, 0x77, 0xca, 0x35, - 0x8c, 0xd8, 0xab, 0xf9, 0x74, 0xee, 0x08, 0xae, 0xd8, 0x2a, 0x6b, 0x67, 0xda, 0x57, 0xeb, 0xdb, - 0x02, 0x2c, 0x89, 0x99, 0xb1, 0x63, 0x0c, 0x6d, 0xb8, 0x3a, 0x3f, 0x05, 0x10, 0x93, 0xac, 0xad, - 0xce, 0x35, 0x7d, 0x1a, 0x25, 0x58, 0x5f, 0x22, 0xa6, 0x08, 0xe4, 0x73, 0x68, 0xf4, 0xd3, 0x44, - 0xf4, 0xc5, 0x62, 0x41, 0x3f, 0x94, 0x5b, 0xc8, 0x95, 0xf5, 0xe5, 0x2d, 0x3d, 0x9a, 0x31, 0x6b, - 0xfd, 0x34, 0xc9, 0xbf, 0x77, 0x16, 0x60, 0x0e, 0x15, 0xb5, 0xfe, 0x75, 0x0e, 0x2a, 0xa3, 0xfc, - 0xe9, 0x36, 0x94, 0x45, 0x06, 0xc6, 0x5c, 0xec, 0x4e, 0xbe, 0xea, 0x48, 0x1d, 0x5f, 0xf5, 0xe2, - 0xf7, 0xad, 0x7a, 0x13, 0x4a, 0x2e, 0x4d, 0x1c, 0x74, 0xc6, 0xb2, 0x72, 0x46, 0x4e, 0x21, 0xef, - 0x03, 0x89, 0x62, 0xe6, 0xdb, 0xf1, 0xa5, 0x95, 0x7b, 0x9b, 0xb0, 0x8a, 0x59, 0xd3, 0x90, 0x1c, - 0xa9, 0xd1, 0x4d, 0xc8, 0x97, 0x60, 0x04, 0x74, 0x98, 0x5a, 0x31, 0xb5, 0x5d, 0x8b, 0x06, 0x03, - 0x16, 0x50, 0x34, 0x90, 0x86, 0x6a, 0x7c, 0x1f, 0x69, 0xda, 0x24, 0x35, 0x38, 0xde, 0xa4, 0xb6, - 0x2b, 0x38, 0xe4, 0x7d, 0x98, 0x8f, 0x79, 0x0c, 0x54, 0xbb, 0xa1, 0x8c, 0xf6, 0x4f, 0xe8, 0xa5, - 0xc9, 0xc9, 0x52, 0x4a, 0x62, 0xc8, 0x67, 0x70, 0x5d, 0xf5, 0x2e, 0x8a, 0x69, 0x9f, 0x0d, 0xf5, - 0x4e, 0x2e, 0x60, 0x27, 0xd7, 0x24, 0xe0, 0x04, 0xf9, 0xa3, 0xae, 0x8e, 0xef, 0x3b, 0xe5, 0xab, - 0xfb, 0xce, 0x06, 0xd4, 0x58, 0x62, 0xf5, 0x79, 0xae, 0x85, 0x29, 0x6e, 0x05, 0x01, 0xc0, 0x92, - 0x03, 0x3b, 0x49, 0x71, 0x01, 0x8e, 0xe0, 0x66, 0x94, 0x25, 0xe7, 0xd4, 0xb5, 0xdc, 0xf0, 0x65, - 0x60, 0xf5, 0x99, 0x97, 0x52, 0x4c, 0x81, 0x5c, 0xcc, 0x18, 0x92, 0x26, 0x4c, 0xe4, 0x13, 0xeb, - 0x42, 0x60, 0x2f, 0x7c, 0x19, 0x1c, 0x20, 0x7c, 0x37, 0x47, 0x93, 0x5d, 0x58, 0x8e, 0xb3, 0x20, - 0x65, 0x3e, 0x55, 0xaa, 0x3c, 0x96, 0xa4, 0xcd, 0x2a, 0x2a, 0x91, 0x56, 0x6f, 0x0a, 0x80, 0x90, - 0x35, 0x97, 0x62, 0xfd, 0xf3, 0x90, 0x25, 0xdc, 0xeb, 0x0c, 0x1e, 0xaf, 0x5e, 0xda, 0x2c, 0xb5, - 0x50, 0x95, 0x9f, 0xe0, 0x91, 0x60, 0x4e, 0xce, 0x5b, 0xdd, 0xb7, 0x87, 0x5f, 0xdb, 0x2c, 0x3d, - 0x65, 0x3e, 0x3d, 0x4a, 0xc8, 0x87, 0x50, 0xb1, 0x03, 0xe5, 0x22, 0x75, 0xdd, 0x22, 0xf5, 0xfd, - 0xc2, 0x2c, 0xdb, 0x81, 0xf0, 0x0d, 0xf2, 0x04, 0x56, 0xb3, 0x84, 0xba, 0x72, 0x96, 0xed, 0xd8, - 0x42, 0xcb, 0xa4, 0x49, 0xb3, 0xa1, 0xe7, 0x0e, 0x13, 0xde, 0x63, 0x2e, 0x73, 0xa9, 0x31, 0x32, - 0x4d, 0x5a, 0xff, 0x53, 0x02, 0x32, 0x79, 0x58, 0xf8, 0xe3, 0x34, 0xec, 0xd7, 0x1a, 0xda, 0xdc, - 0x6b, 0x0d, 0xed, 0x6d, 0x18, 0xa5, 0x91, 0x08, 0x9f, 0x47, 0x78, 0x2d, 0x27, 0x72, 0xd0, 0x55, - 0x73, 0x5b, 0xf8, 0xe1, 0xe6, 0x56, 0xfe, 0x43, 0x98, 0x5b, 0xe5, 0xf7, 0x36, 0x37, 0x78, 0x43, - 0x73, 0xab, 0xfe, 0x3e, 0xe6, 0x56, 0xfb, 0x7f, 0x98, 0xdb, 0xff, 0xce, 0x41, 0x89, 0x9f, 0xbe, - 0xc9, 0x47, 0x50, 0xe1, 0xe7, 0x6f, 0x3d, 0x92, 0x37, 0x46, 0x87, 0x73, 0x2d, 0x36, 0x95, 0x9f, - 0xc9, 0x6f, 0xf2, 0x73, 0x68, 0xa0, 0x08, 0x3f, 0x9c, 0x0b, 0xb9, 0xa2, 0xbe, 0x3f, 0x73, 0xb9, - 0x2b, 0x45, 0x94, 0xda, 0x33, 0x8d, 0xf6, 0x43, 0xb2, 0x58, 0x9e, 0xd7, 0xb0, 0x20, 0xa0, 0x31, - 0x9e, 0xb8, 0x4a, 0x7a, 0x5e, 0x83, 0x64, 0x7e, 0xec, 0xba, 0x0f, 0x0d, 0x8f, 0xf6, 0x53, 0x0b, - 0xfb, 0x84, 0x67, 0x97, 0xb9, 0x89, 0xc5, 0xaf, 0x71, 0x04, 0xef, 0x18, 0x1e, 0x5d, 0xb6, 0x60, - 0x31, 0x66, 0x83, 0x73, 0x5d, 0x64, 0x7e, 0xf2, 0xb8, 0x83, 0x90, 0x5c, 0xe6, 0x3e, 0x54, 0xa3, - 0x38, 0x3c, 0xa3, 0x32, 0xa7, 0x5d, 0x78, 0x45, 0x4e, 0x8b, 0x18, 0x91, 0xd3, 0xde, 0x87, 0xea, - 0x59, 0xc6, 0xf2, 0x2c, 0xb8, 0xfc, 0x0a, 0x09, 0xc4, 0x08, 0x89, 0x07, 0xb0, 0x88, 0x23, 0xd1, - 0xec, 0xb8, 0x32, 0xd1, 0x2f, 0x1c, 0xac, 0x66, 0xbb, 0x3f, 0x06, 0x43, 0x0c, 0xe6, 0xb5, 0xc1, - 0x56, 0x0c, 0x78, 0x5c, 0x2c, 0x4c, 0xcf, 0xc7, 0x9d, 0xa6, 0x3a, 0x29, 0x86, 0x18, 0x4d, 0xec, - 0x11, 0xdc, 0x10, 0x62, 0xf4, 0xb9, 0x26, 0x69, 0xf5, 0xe3, 0xd0, 0xb7, 0x58, 0x20, 0x4d, 0x51, - 0xd7, 0x70, 0x0d, 0xe1, 0xfb, 0xcf, 0x47, 0x3a, 0x0e, 0xe2, 0xd0, 0xef, 0x04, 0xe4, 0x21, 0x5c, - 0x63, 0x89, 0x15, 0x64, 0x9e, 0x67, 0xd9, 0x2f, 0xed, 0x98, 0x5a, 0x09, 0xf5, 0x19, 0xae, 0x08, - 0x06, 0xdf, 0xb2, 0xb9, 0xcc, 0x92, 0x6e, 0xe6, 0x79, 0xdb, 0x9c, 0xd9, 0xa3, 0x3e, 0x43, 0x73, - 0x7d, 0x85, 0xa7, 0x36, 0x7e, 0x88, 0xa7, 0xb6, 0xfe, 0xbb, 0x08, 0xf5, 0x31, 0x10, 0x59, 0x81, - 0xa2, 0x0c, 0xb0, 0xca, 0x5b, 0x8b, 0xcc, 0x25, 0x0f, 0xc1, 0x48, 0xc2, 0x2c, 0x76, 0xa8, 0x45, - 0x87, 0x91, 0x6c, 0xa9, 0x38, 0xb9, 0x20, 0x02, 0xc3, 0xff, 0x63, 0x1c, 0x78, 0x08, 0x46, 0x6a, - 0xc7, 0x03, 0x9a, 0x6a, 0x52, 0x93, 0xa7, 0xe9, 0x86, 0xc0, 0xe4, 0x52, 0x5b, 0x40, 0xf2, 0xb6, - 0x46, 0x65, 0x30, 0x3d, 0xdd, 0x37, 0x54, 0x3b, 0x79, 0x49, 0x6c, 0x0b, 0x48, 0xde, 0xd2, 0x48, - 0x46, 0xcf, 0x41, 0x0d, 0xd5, 0x4a, 0x2e, 0xf3, 0x31, 0x2c, 0xc4, 0x7d, 0xe1, 0xb5, 0xf3, 0x7a, - 0xde, 0x36, 0x36, 0x1f, 0x9a, 0xeb, 0xce, 0xc7, 0x7d, 0x74, 0x5a, 0x21, 0xe7, 0x87, 0x2e, 0x95, - 0x87, 0xec, 0x69, 0x72, 0xda, 0x31, 0x7b, 0x3e, 0xee, 0xf3, 0xaf, 0xd6, 0xbf, 0x17, 0xa0, 0x92, - 0x97, 0x3e, 0xbf, 0x7f, 0x3b, 0xfb, 0x83, 0xa6, 0xef, 0x6a, 0xbf, 0x2b, 0x4d, 0xec, 0x77, 0x6b, - 0x30, 0x9f, 0x05, 0xec, 0x79, 0x26, 0x12, 0xb2, 0xb2, 0x29, 0xbf, 0x5e, 0xb1, 0x0f, 0xce, 0x4f, - 0xdf, 0x07, 0x5b, 0xbf, 0x29, 0x40, 0x25, 0xaf, 0xd4, 0x92, 0x36, 0x80, 0xe6, 0x4b, 0x85, 0x89, - 0x15, 0xd7, 0xb8, 0xe4, 0x21, 0x34, 0xe2, 0x28, 0xd0, 0x7d, 0x4f, 0xd8, 0x95, 0x2c, 0x77, 0x99, - 0x51, 0x20, 0x63, 0x50, 0x14, 0x68, 0xce, 0x97, 0x97, 0x5c, 0x66, 0x5f, 0x53, 0x72, 0x69, 0xfd, - 0xba, 0xa0, 0x97, 0x32, 0xc9, 0x06, 0xcc, 0x71, 0x3b, 0x9c, 0xd6, 0x23, 0xc1, 0x20, 0x6d, 0xa8, - 0xf0, 0xce, 0x08, 0xd4, 0xd4, 0x7e, 0x94, 0x63, 0xf1, 0xe7, 0x4d, 0xbb, 0xf0, 0x2f, 0x45, 0xa8, - 0x6a, 0x15, 0x69, 0xf2, 0x0e, 0x94, 0x07, 0x71, 0x98, 0x45, 0xd6, 0xd9, 0xe5, 0x94, 0x6e, 0x2c, - 0x20, 0x6f, 0xe7, 0x92, 0xc3, 0xec, 0xc1, 0x40, 0x1c, 0x70, 0x26, 0xfd, 0x6c, 0xc1, 0x1e, 0x0c, - 0xf0, 0x3c, 0xb3, 0x01, 0x65, 0x51, 0x7b, 0xa1, 0xee, 0x58, 0x2a, 0x93, 0x53, 0xc9, 0x87, 0x50, - 0xe3, 0x23, 0xca, 0xdb, 0x2c, 0x4d, 0x1b, 0x14, 0xc4, 0x51, 0xf0, 0x95, 0x6c, 0x59, 0x0a, 0xe4, - 0xad, 0xcf, 0xbd, 0x4a, 0x60, 0x5b, 0xf6, 0x21, 0x9f, 0x87, 0xf9, 0xd7, 0x55, 0xbf, 0x3e, 0x83, - 0x5a, 0x14, 0x53, 0x54, 0x3b, 0xe9, 0x39, 0xa7, 0xec, 0xc0, 0xb3, 0x93, 0xf3, 0x93, 0x98, 0x6e, - 0x0f, 0x06, 0xdc, 0x57, 0xf8, 0xee, 0xa1, 0xfe, 0xb7, 0xfe, 0xa6, 0x00, 0xa5, 0xd3, 0x30, 0xea, - 0x92, 0xf7, 0xa0, 0x8c, 0x59, 0xf9, 0x68, 0xee, 0x64, 0xe9, 0x74, 0xe7, 0xb2, 0x93, 0x52, 0xdf, - 0x5c, 0x40, 0xee, 0xce, 0x25, 0x59, 0x57, 0x95, 0xfc, 0xa2, 0x56, 0x93, 0x95, 0x25, 0xfc, 0x37, - 0x5a, 0x36, 0x3e, 0x0b, 0xa3, 0xe4, 0x2c, 0x9f, 0xb6, 0xf1, 0xe6, 0xaa, 0x39, 0x62, 0xe7, 0xb2, - 0xf5, 0x4f, 0x05, 0x98, 0xc3, 0xab, 0x82, 0x51, 0xe3, 0x85, 0xd7, 0x34, 0x5e, 0xfc, 0x21, 0x8d, - 0xcf, 0x7e, 0x4f, 0xe3, 0xe4, 0x63, 0x58, 0x4a, 0xe3, 0x2c, 0x70, 0xec, 0x94, 0xf2, 0x3d, 0x1c, - 0xed, 0x57, 0x76, 0x79, 0x6c, 0x0b, 0x53, 0xa0, 0x27, 0xf4, 0x92, 0x13, 0x5a, 0x5f, 0x42, 0xe9, - 0x09, 0xf3, 0x3c, 0xf2, 0x16, 0xcc, 0x3b, 0x61, 0x10, 0x74, 0xf6, 0xc6, 0xfa, 0x2c, 0x69, 0x7c, - 0x40, 0x22, 0x35, 0x2b, 0x6a, 0x16, 0x26, 0x48, 0xad, 0x6d, 0x58, 0x99, 0x56, 0xc4, 0x25, 0x3f, - 0x82, 0xfa, 0xa8, 0xe8, 0xab, 0x42, 0x9c, 0x52, 0x5c, 0x1b, 0xb1, 0x3a, 0x6e, 0xeb, 0xef, 0x67, - 0xa1, 0xa9, 0x66, 0x40, 0xfc, 0xb2, 0x30, 0xe8, 0x65, 0x3e, 0x0f, 0x30, 0xa4, 0x0d, 0x4b, 0xb8, - 0xc3, 0x45, 0x71, 0xe8, 0xd0, 0x84, 0xe7, 0x7c, 0x18, 0x50, 0x0a, 0x9b, 0x25, 0x73, 0x91, 0x33, - 0x4e, 0x14, 0xbd, 0xcb, 0x9d, 0x77, 0x29, 0xc8, 0x7c, 0x0e, 0x75, 0x33, 0x87, 0xba, 0x56, 0x1c, - 0xbe, 0x4c, 0x84, 0x05, 0x98, 0x8b, 0x41, 0xe6, 0x9f, 0x48, 0xba, 0x19, 0xbe, 0x4c, 0xc8, 0x3b, - 0xd0, 0xe0, 0x58, 0x96, 0xd2, 0xd8, 0x16, 0x51, 0x67, 0x16, 0x81, 0xf5, 0x20, 0xf3, 0x3b, 0x39, - 0xf1, 0xea, 0x55, 0x4c, 0x69, 0xe2, 0x2a, 0x66, 0x03, 0xaa, 0x4e, 0x18, 0x38, 0x59, 0x1c, 0xd3, - 0xc0, 0xb9, 0xc4, 0x10, 0x5a, 0x32, 0x75, 0x12, 0x39, 0x84, 0x95, 0x94, 0xf5, 0xb9, 0x79, 0x63, - 0x06, 0xcf, 0x03, 0x1d, 0xd6, 0x47, 0xe6, 0xf5, 0xbb, 0x11, 0xe9, 0x00, 0x7c, 0x63, 0xd8, 0x15, - 0xfc, 0x47, 0x33, 0x26, 0x91, 0x72, 0x1a, 0x95, 0xf7, 0x3b, 0xce, 0xb8, 0x8e, 0x24, 0xf3, 0xa3, - 0x54, 0xd5, 0x79, 0x6b, 0x66, 0x3d, 0xce, 0x76, 0x47, 0x44, 0xf2, 0x78, 0xd4, 0x28, 0x26, 0xe1, - 0x89, 0x98, 0x4e, 0x79, 0x55, 0x35, 0xde, 0x28, 0x4f, 0xc4, 0xe5, 0x74, 0xe7, 0x4d, 0x6a, 0xb4, - 0x9d, 0x1a, 0xc0, 0x1e, 0x4d, 0x6d, 0xe6, 0xf1, 0x1d, 0xa5, 0x35, 0x80, 0x15, 0x29, 0x97, 0xaf, - 0x15, 0xd6, 0x41, 0x8e, 0x61, 0x99, 0x2a, 0x82, 0x6c, 0x8e, 0x51, 0x15, 0x69, 0x6f, 0x8d, 0xdb, - 0xf9, 0xd5, 0x55, 0x36, 0x09, 0x1d, 0xa7, 0x30, 0x9a, 0xb4, 0xfe, 0x0c, 0xd6, 0x65, 0x43, 0x26, - 0x1d, 0xb0, 0x30, 0xe8, 0x66, 0xfe, 0x71, 0xbf, 0x13, 0xc8, 0xba, 0xda, 0x6d, 0xa8, 0x32, 0xf9, - 0x5f, 0x59, 0x57, 0xc5, 0x04, 0x45, 0xea, 0xb8, 0xfc, 0x18, 0x1f, 0xa3, 0x9c, 0x15, 0x64, 0xbe, - 0xb4, 0x82, 0x4a, 0xac, 0x34, 0xb5, 0xfe, 0x99, 0x00, 0x99, 0x9c, 0x74, 0xf2, 0x10, 0x56, 0x5c, - 0xbf, 0xcf, 0xe4, 0xfd, 0x55, 0x40, 0x5d, 0x2b, 0xb2, 0x9d, 0x0b, 0x69, 0x71, 0x3b, 0xc5, 0x66, - 0xc1, 0x24, 0x82, 0xdf, 0x13, 0xec, 0x13, 0xce, 0xd5, 0xa5, 0x2e, 0x58, 0x14, 0xe5, 0x52, 0xc5, - 0x09, 0x29, 0xc1, 0x16, 0x52, 0x9f, 0x40, 0x53, 0x4a, 0xb9, 0x76, 0x6a, 0xe7, 0x0d, 0xa2, 0xd5, - 0x0a, 0x63, 0x5c, 0x15, 0xfc, 0x3d, 0x3b, 0xb5, 0x65, 0x7b, 0x68, 0xbb, 0x57, 0x05, 0x65, 0x9b, - 0x28, 0x58, 0x9a, 0x10, 0x14, 0x5c, 0x14, 0xfc, 0x14, 0xae, 0xa5, 0x61, 0x6a, 0x7b, 0x96, 0x14, - 0x8f, 0x13, 0xcb, 0x0b, 0x6d, 0x97, 0x9f, 0xce, 0xe6, 0xf2, 0xae, 0x2e, 0x23, 0x64, 0x0f, 0x11, - 0x66, 0x72, 0x18, 0xda, 0x2e, 0x9e, 0xd0, 0x56, 0xc6, 0x25, 0xa9, 0x10, 0x9b, 0xc7, 0xe6, 0x96, - 0x74, 0x11, 0x8a, 0x02, 0x3f, 0x56, 0x4d, 0x89, 0xbc, 0x3f, 0x09, 0xec, 0x28, 0x39, 0x0f, 0x53, - 0x2e, 0xb3, 0x80, 0x32, 0x42, 0xdf, 0x0e, 0xe7, 0xf6, 0x24, 0xf3, 0x08, 0xcf, 0xc4, 0x5e, 0xe8, - 0xd8, 0x9e, 0x25, 0x56, 0x2a, 0x41, 0x83, 0x2d, 0x99, 0x35, 0x24, 0x0a, 0x3b, 0x40, 0xdf, 0x8d, - 0xa9, 0x1f, 0xa6, 0x34, 0x47, 0x55, 0x84, 0xef, 0x0a, 0xaa, 0x82, 0xbd, 0x0b, 0x8b, 0x59, 0x42, - 0x63, 0xd1, 0xd7, 0xb3, 0xcb, 0x94, 0x8a, 0x33, 0x68, 0xc9, 0xac, 0x73, 0x32, 0xef, 0x27, 0xde, - 0x06, 0x90, 0x8f, 0x60, 0x55, 0x74, 0xd5, 0xa3, 0x76, 0x1c, 0x28, 0x01, 0x3f, 0xc1, 0x93, 0x68, - 0xc9, 0x24, 0xc8, 0x3c, 0x14, 0x3c, 0x39, 0xba, 0x9f, 0xc2, 0x0d, 0x97, 0x25, 0x7c, 0x2f, 0x43, - 0xac, 0x63, 0x3b, 0xe7, 0xd4, 0x3a, 0x67, 0xa9, 0x6c, 0xa6, 0x86, 0x82, 0xd7, 0x04, 0x84, 0x8b, - 0xec, 0x72, 0xc0, 0x23, 0x96, 0x8a, 0x06, 0x7f, 0x0e, 0x6f, 0x4d, 0x4a, 0xfb, 0x2c, 0x49, 0xa4, - 0x78, 0x1d, 0xc5, 0x9b, 0x57, 0xc4, 0x8f, 0x58, 0x92, 0x08, 0xf9, 0x8f, 0xa1, 0x79, 0x75, 0x19, - 0x9d, 0x73, 0xea, 0x5c, 0xf0, 0x3e, 0x37, 0xb4, 0xc9, 0x55, 0x6b, 0xb8, 0xcb, 0x99, 0x47, 0x09, - 0xcf, 0xe8, 0x92, 0xd4, 0x56, 0xab, 0xa7, 0xe6, 0x6e, 0x11, 0x25, 0x0c, 0xe4, 0xf0, 0xc6, 0xd4, - 0xf4, 0xad, 0x43, 0x39, 0xa1, 0x03, 0x9f, 0x06, 0x69, 0x82, 0x37, 0xad, 0x25, 0x33, 0xff, 0x16, - 0xce, 0x65, 0xab, 0x8b, 0x93, 0x25, 0xe5, 0x5c, 0xb6, 0xb8, 0x35, 0xe1, 0x6c, 0x97, 0x7a, 0xa9, - 0x2d, 0x4c, 0x92, 0x08, 0x36, 0x52, 0xd0, 0x0c, 0x6f, 0x43, 0x55, 0xb0, 0xc5, 0x70, 0x97, 0x91, - 0x2f, 0x24, 0xc4, 0x00, 0xdf, 0x85, 0x45, 0xff, 0x85, 0xe3, 0x58, 0x2c, 0x88, 0xb2, 0x54, 0x28, - 0x59, 0x11, 0x2b, 0xc7, 0xc9, 0x1d, 0x4e, 0x45, 0x45, 0x9b, 0x60, 0x68, 0x38, 0xa1, 0x6d, 0x15, - 0x81, 0x8d, 0x1c, 0x28, 0x34, 0x2a, 0x64, 0x98, 0xa5, 0xb9, 0xca, 0xb5, 0x11, 0xf2, 0x18, 0xc9, - 0xa8, 0x73, 0x03, 0x6a, 0x9e, 0x8f, 0x3e, 0x25, 0x50, 0xd7, 0x44, 0xef, 0x3c, 0x9f, 0x3b, 0x12, - 0x22, 0x7e, 0x02, 0xeb, 0xba, 0x69, 0x63, 0xe3, 0xf2, 0xde, 0xcc, 0x4f, 0xf0, 0xfa, 0xb4, 0x64, - 0x5e, 0x1b, 0x59, 0x77, 0x67, 0xc4, 0x3f, 0xd2, 0x8c, 0x4d, 0x08, 0x9f, 0xb1, 0xd4, 0xb7, 0x23, - 0x2e, 0x77, 0x5d, 0x33, 0x36, 0x94, 0xdb, 0x41, 0xd6, 0x51, 0x42, 0x3e, 0x80, 0x65, 0x9f, 0x05, - 0x96, 0xf0, 0x8b, 0x51, 0x43, 0xeb, 0x62, 0xdd, 0x7c, 0x16, 0x1c, 0x72, 0x4e, 0x4f, 0xb5, 0xc0, - 0xe1, 0xf6, 0x70, 0x02, 0x7e, 0x43, 0xc2, 0xed, 0xe1, 0x38, 0xfc, 0x43, 0x58, 0xe1, 0xda, 0xa5, - 0x43, 0x8d, 0xf0, 0x6f, 0x09, 0xcf, 0xf6, 0x59, 0x60, 0x22, 0x6b, 0x4c, 0xc0, 0x1e, 0x4e, 0x0a, - 0xdc, 0x94, 0x02, 0xf6, 0xf0, 0x8a, 0xc0, 0x09, 0x2c, 0x4b, 0x5b, 0xb3, 0xc2, 0xbe, 0xa5, 0x42, - 0x74, 0xf3, 0x16, 0xee, 0x0c, 0x1b, 0x63, 0x5b, 0xd1, 0x94, 0x48, 0x6f, 0x2e, 0x49, 0x61, 0x2d, - 0xf8, 0x8f, 0x02, 0x20, 0x2e, 0xea, 0x58, 0xe4, 0xbc, 0xad, 0x07, 0xc0, 0xa3, 0x17, 0x8e, 0x33, - 0x3d, 0x72, 0x0a, 0x41, 0x3d, 0x72, 0x6e, 0x4c, 0x08, 0x6a, 0x91, 0xf3, 0x4b, 0xb8, 0x29, 0x05, - 0x3d, 0x5f, 0x9d, 0xb6, 0xc7, 0x9a, 0xbd, 0x83, 0xd2, 0xd7, 0x05, 0xe8, 0xd0, 0x17, 0x67, 0x40, - 0xbd, 0xe9, 0xa9, 0x1a, 0xf4, 0xf6, 0x5b, 0x53, 0x35, 0x68, 0x7d, 0xf8, 0x02, 0x6e, 0x0a, 0xd3, - 0x79, 0x81, 0xb7, 0x69, 0x16, 0x73, 0x87, 0x22, 0x7c, 0x63, 0xc5, 0x21, 0x79, 0xd0, 0x74, 0x45, - 0xdc, 0x40, 0x90, 0xb8, 0x71, 0xeb, 0xb8, 0x43, 0x1e, 0xc0, 0x0f, 0xe2, 0xd0, 0xef, 0x3d, 0x20, - 0xbb, 0x70, 0xfb, 0x35, 0x0a, 0x5c, 0x96, 0x5c, 0x34, 0x29, 0xaa, 0x58, 0x9f, 0xae, 0x62, 0x8f, - 0x25, 0x17, 0x64, 0x1f, 0x36, 0x5e, 0xa3, 0x04, 0x63, 0x59, 0xb3, 0x8f, 0x5a, 0x6e, 0x4c, 0xd7, - 0x82, 0xc1, 0xec, 0xd5, 0x83, 0x51, 0xe5, 0xc2, 0xc1, 0xab, 0x06, 0x23, 0x6b, 0x86, 0xd3, 0x06, - 0x23, 0x6e, 0xd8, 0x72, 0x15, 0xe7, 0xd3, 0x06, 0x23, 0xee, 0xda, 0xa4, 0x92, 0x63, 0x78, 0xe7, - 0x55, 0x4a, 0x5e, 0xb0, 0x84, 0xa5, 0x3c, 0xdd, 0x0c, 0x5d, 0x9a, 0x34, 0x19, 0xaa, 0xda, 0x98, - 0xa6, 0xea, 0xa9, 0x00, 0x76, 0x39, 0x8e, 0xf4, 0xe0, 0xbd, 0x57, 0x29, 0x74, 0x59, 0xe2, 0xd8, - 0xb1, 0x9b, 0xab, 0x7c, 0x86, 0x2a, 0x5b, 0xd3, 0x54, 0xee, 0x29, 0xa8, 0x50, 0x7a, 0x00, 0x77, - 0x26, 0x94, 0x62, 0xf8, 0x7d, 0x41, 0x9d, 0x7c, 0xb0, 0x17, 0xd3, 0xe6, 0x9c, 0xc7, 0xf3, 0xa7, - 0xd4, 0x91, 0xa3, 0x3d, 0x84, 0xbb, 0xd3, 0xf5, 0x60, 0x5d, 0x2a, 0xc9, 0x55, 0x79, 0xa8, 0xea, - 0xd6, 0xa4, 0xaa, 0x63, 0xc4, 0x09, 0x6d, 0xad, 0xbf, 0x2d, 0xe4, 0x19, 0x94, 0x96, 0x2d, 0x92, - 0xbb, 0xd0, 0xf0, 0x59, 0x70, 0xda, 0x3b, 0x16, 0x89, 0x67, 0x9e, 0xad, 0xd7, 0x04, 0x95, 0x43, - 0xbb, 0x09, 0x79, 0x00, 0x6b, 0x11, 0x8b, 0xa8, 0xc7, 0x02, 0x6a, 0x3d, 0xcf, 0x68, 0x46, 0x73, - 0xb4, 0xc8, 0xd4, 0x96, 0x15, 0xf7, 0x17, 0x9c, 0x29, 0x85, 0x3e, 0x81, 0x66, 0x2e, 0x74, 0x16, - 0x53, 0xfb, 0x82, 0xc6, 0xb9, 0x98, 0x4c, 0x98, 0x14, 0x7f, 0x47, 0xb0, 0x85, 0x60, 0xeb, 0x1b, - 0x28, 0xf5, 0xc2, 0x38, 0x25, 0xef, 0xc2, 0xc2, 0x19, 0x9e, 0x9e, 0x92, 0xe9, 0xc7, 0x47, 0xc9, - 0x24, 0x77, 0xa1, 0xce, 0x12, 0xbc, 0x81, 0xb0, 0x3d, 0x2e, 0x28, 0x5f, 0x1f, 0x8c, 0x13, 0xdf, - 0xf0, 0xfc, 0xff, 0x97, 0x45, 0x30, 0xc4, 0xdb, 0xa4, 0x83, 0xd8, 0xf6, 0xe9, 0x4e, 0x98, 0x05, - 0xfc, 0x80, 0x57, 0xd2, 0x8a, 0xcc, 0xab, 0xfa, 0x0b, 0x26, 0x04, 0x68, 0x45, 0x27, 0x04, 0x92, - 0x16, 0x54, 0xb2, 0xe0, 0x8c, 0xb3, 0xa8, 0x3b, 0x76, 0x0c, 0x1b, 0x91, 0xc9, 0x1a, 0xcc, 0x8b, - 0x57, 0x15, 0x72, 0x32, 0xe4, 0x17, 0xd9, 0x84, 0x8a, 0x63, 0x7b, 0x0e, 0x3f, 0xab, 0x27, 0x53, - 0x0e, 0x85, 0x23, 0x26, 0xf9, 0x13, 0xa8, 0xf6, 0x79, 0x27, 0x2d, 0xbc, 0x45, 0x93, 0xaf, 0xea, - 0xc6, 0xea, 0x36, 0xc8, 0xc6, 0x0b, 0x37, 0xf2, 0x39, 0xd4, 0x1d, 0x3f, 0x12, 0x29, 0xa8, 0x56, - 0x43, 0x93, 0xcf, 0xe0, 0x10, 0xb3, 0xeb, 0x47, 0x3c, 0x05, 0xc5, 0xe2, 0x6e, 0xd5, 0x19, 0x7d, - 0xb4, 0xbe, 0x2d, 0x40, 0x55, 0x9b, 0x94, 0xd7, 0xcd, 0x07, 0x02, 0x26, 0xe6, 0xe3, 0x7d, 0x98, - 0x4b, 0x52, 0x5b, 0xae, 0x4c, 0xfe, 0xf6, 0xee, 0xea, 0x3c, 0x9b, 0x02, 0x44, 0x36, 0x61, 0x96, - 0x06, 0x6a, 0x9d, 0x5e, 0x85, 0xe5, 0x90, 0xd6, 0xef, 0x0a, 0x30, 0x2f, 0x38, 0xe4, 0x3d, 0xa8, - 0xf4, 0xb3, 0xc0, 0xb1, 0xb0, 0x6c, 0x36, 0x59, 0xa9, 0x29, 0x73, 0xe6, 0x1e, 0x4d, 0x9c, 0x89, - 0xd3, 0x7a, 0xf1, 0xfb, 0x4e, 0xeb, 0x7a, 0x19, 0x63, 0xf6, 0x75, 0x65, 0x8c, 0xf7, 0x60, 0x0e, - 0x27, 0x5c, 0x5e, 0x0a, 0x2f, 0x4d, 0xf4, 0xdc, 0x14, 0xfc, 0x91, 0x29, 0xce, 0xbd, 0xce, 0x14, - 0xbf, 0x80, 0x1a, 0x16, 0x79, 0x58, 0x30, 0xe0, 0x43, 0x20, 0x1f, 0x42, 0x7d, 0x20, 0xbf, 0x45, - 0xc5, 0x60, 0x72, 0x94, 0xb5, 0x81, 0x26, 0xd0, 0x7a, 0x04, 0x55, 0xa5, 0xa0, 0x47, 0x53, 0xf2, - 0x19, 0x34, 0xc6, 0xe4, 0x95, 0x57, 0xc9, 0xcb, 0x0f, 0xbd, 0x2d, 0xb3, 0xae, 0x2b, 0x4a, 0x5a, - 0xbf, 0x2e, 0xc0, 0xbc, 0x78, 0xc8, 0x46, 0x3e, 0xd6, 0x7a, 0x91, 0x3f, 0x09, 0xca, 0x07, 0xab, - 0xb5, 0x37, 0xea, 0x4c, 0x8f, 0xa6, 0xc9, 0x1b, 0x96, 0x52, 0x9a, 0xb0, 0xf0, 0x82, 0xc6, 0xf8, - 0x20, 0x4a, 0x78, 0x85, 0xfa, 0x6c, 0x7d, 0x00, 0x15, 0xde, 0x17, 0xf1, 0x18, 0xe8, 0x7b, 0x2b, - 0x83, 0xad, 0xbf, 0x2a, 0xc0, 0x82, 0x7c, 0x7a, 0x47, 0xee, 0x01, 0x44, 0x71, 0xf8, 0x6c, 0x6c, - 0xd0, 0x8b, 0x23, 0x11, 0xf1, 0x2c, 0xaa, 0xc2, 0x21, 0xa2, 0x52, 0xf8, 0x10, 0xd6, 0x06, 0x34, - 0xa0, 0xb1, 0xcd, 0x37, 0x14, 0x99, 0x82, 0x8a, 0x57, 0x14, 0x45, 0x7c, 0x45, 0xb1, 0x92, 0x73, - 0x45, 0x22, 0x2a, 0x9e, 0x53, 0xbc, 0x59, 0x7c, 0x79, 0x17, 0x1a, 0xe3, 0x0f, 0xfc, 0xc8, 0x8a, - 0x2a, 0xd7, 0x88, 0x43, 0xb1, 0xf8, 0x68, 0xff, 0xc5, 0xac, 0x78, 0xeb, 0x8b, 0x15, 0xec, 0x25, - 0xa8, 0xf3, 0xdf, 0xfc, 0x6e, 0xd5, 0x98, 0x51, 0xa4, 0xbc, 0x3e, 0x6d, 0x14, 0x14, 0x29, 0x2f, - 0xeb, 0x1a, 0x45, 0xb2, 0x0c, 0x8b, 0x9c, 0xa4, 0x15, 0x34, 0x8d, 0x59, 0x52, 0x83, 0x32, 0x6a, - 0x0b, 0xa3, 0xae, 0x51, 0x22, 0x75, 0xa8, 0xf0, 0x2f, 0xac, 0x85, 0x19, 0x73, 0xb9, 0x12, 0xcc, - 0x06, 0xb7, 0x07, 0x03, 0x63, 0x5e, 0xe1, 0x1f, 0x87, 0x2c, 0x30, 0x16, 0xd4, 0xd7, 0x13, 0xe6, - 0x79, 0x46, 0x99, 0xac, 0x01, 0xe1, 0x5f, 0xe3, 0x2f, 0xfd, 0x8c, 0x0a, 0x69, 0xc2, 0x8a, 0x4e, - 0x57, 0x6f, 0xb1, 0x0c, 0x20, 0x04, 0x1a, 0x9c, 0x33, 0x2a, 0xf3, 0x1a, 0x55, 0xb2, 0x0e, 0x6b, - 0x48, 0x9b, 0xb8, 0x44, 0x36, 0x6a, 0xaa, 0x3d, 0x1e, 0xc2, 0x8d, 0x3a, 0x69, 0x00, 0xf0, 0x2f, - 0xe1, 0x53, 0x46, 0x43, 0x7d, 0x8b, 0x95, 0x36, 0x16, 0xc9, 0x22, 0x54, 0x47, 0xdf, 0x5b, 0x86, - 0xa1, 0x3a, 0x38, 0x3e, 0xe7, 0xc6, 0x92, 0x9a, 0x19, 0xed, 0xcd, 0x9b, 0xb1, 0x42, 0xde, 0x82, - 0xa6, 0x94, 0x9e, 0xa8, 0x90, 0x19, 0xab, 0xed, 0x4f, 0xa1, 0xa6, 0xbf, 0xec, 0xe2, 0x6d, 0x9d, - 0xd8, 0x49, 0x72, 0x7a, 0x1e, 0x87, 0xd9, 0xe0, 0xdc, 0x98, 0xe1, 0x53, 0x99, 0xb7, 0x63, 0x14, - 0x48, 0x19, 0x4a, 0x8f, 0xec, 0xe4, 0xdc, 0x28, 0xb6, 0x7f, 0x02, 0x8b, 0x57, 0x5e, 0xf4, 0x71, - 0x66, 0xf7, 0xb8, 0xbb, 0x6f, 0xcc, 0xf0, 0x7f, 0x07, 0xdb, 0xbd, 0x53, 0xa3, 0x40, 0x56, 0xc0, - 0x78, 0xd4, 0xf9, 0xea, 0x91, 0xb5, 0x7b, 0x7c, 0x74, 0x62, 0xee, 0xf7, 0x7a, 0x9d, 0xe3, 0xae, - 0x51, 0x6c, 0xdf, 0x03, 0x18, 0xbd, 0xb6, 0x20, 0x15, 0x98, 0xc3, 0x03, 0x81, 0x10, 0x3c, 0x65, - 0x4f, 0x9e, 0x1a, 0x05, 0x52, 0x85, 0x05, 0xb9, 0xb5, 0x1b, 0xc5, 0xf6, 0x03, 0x58, 0x94, 0x59, - 0x00, 0x1f, 0xdb, 0x13, 0x16, 0xf0, 0xad, 0x86, 0x74, 0xba, 0x4f, 0xb7, 0x0f, 0x3b, 0x7b, 0x56, - 0xa7, 0xbb, 0xb7, 0xff, 0x2b, 0xeb, 0x49, 0xa7, 0xbb, 0x27, 0x34, 0x3c, 0xea, 0xf6, 0xbe, 0x36, - 0x0a, 0xed, 0x33, 0x58, 0x99, 0xf6, 0xe8, 0x8b, 0xdc, 0x80, 0x6b, 0x4a, 0x72, 0xaf, 0xd3, 0x3b, - 0xdd, 0xee, 0xee, 0xee, 0x5b, 0x47, 0xfb, 0xa7, 0x66, 0x67, 0xd7, 0x98, 0x21, 0xf3, 0x50, 0x3c, - 0xfc, 0xc8, 0x28, 0xe0, 0xef, 0x96, 0x51, 0x24, 0x00, 0xf3, 0xbb, 0xc7, 0xbd, 0x4e, 0x77, 0xdf, - 0x98, 0xe5, 0x76, 0xd4, 0xe9, 0x76, 0xf7, 0x4d, 0xeb, 0xc4, 0x3c, 0xde, 0xfb, 0xe5, 0xee, 0xa9, - 0x51, 0x6a, 0x7f, 0x34, 0x7a, 0xbe, 0x86, 0x43, 0x59, 0x01, 0xa3, 0x13, 0xbc, 0xb0, 0x3d, 0xe6, - 0xe6, 0x34, 0x63, 0x86, 0x8f, 0xe5, 0x58, 0xc4, 0x53, 0xa3, 0xd0, 0xfe, 0xd3, 0xd1, 0xdb, 0x2a, - 0x14, 0xb9, 0x06, 0xcb, 0xfa, 0xb7, 0x14, 0x37, 0x66, 0xae, 0x32, 0xba, 0x61, 0xcf, 0x09, 0x63, - 0x6a, 0x14, 0xc8, 0x75, 0x58, 0xd5, 0x19, 0x5f, 0xb3, 0xf4, 0x5c, 0xb0, 0x8a, 0xed, 0x8f, 0xaf, - 0xbc, 0x0f, 0x52, 0x8b, 0x3a, 0xae, 0xd9, 0x80, 0x1a, 0x27, 0x1c, 0x64, 0x9e, 0x97, 0xd2, 0x61, - 0x6a, 0xcc, 0xb6, 0xff, 0xb1, 0x00, 0x65, 0x75, 0xc3, 0x3c, 0xf2, 0xc3, 0x80, 0xc6, 0xe8, 0x21, - 0x33, 0x64, 0x15, 0x96, 0xd0, 0xa3, 0x68, 0x3f, 0x3d, 0xce, 0x52, 0x49, 0x2e, 0x28, 0x4b, 0x34, - 0xd9, 0xe0, 0x5c, 0xa3, 0x17, 0x55, 0x03, 0xea, 0x9e, 0xd0, 0x98, 0xe5, 0x13, 0x83, 0x5e, 0x1b, - 0xa4, 0x2c, 0xa7, 0x96, 0xf8, 0x48, 0xc6, 0xd4, 0xe6, 0xac, 0x39, 0x72, 0x13, 0xae, 0x2b, 0x81, - 0x49, 0xf6, 0x7c, 0x7b, 0x03, 0x6a, 0xfa, 0xcd, 0xb6, 0x6a, 0x91, 0x1b, 0xa7, 0xe8, 0x72, 0xfb, - 0x73, 0x58, 0x9a, 0xb8, 0x45, 0xe3, 0xcb, 0xda, 0xe9, 0x8a, 0x15, 0x39, 0xea, 0x74, 0xad, 0xa3, - 0xed, 0x5f, 0x19, 0x05, 0x2e, 0xbb, 0x73, 0x78, 0x7c, 0x7c, 0x64, 0x1d, 0x74, 0x0e, 0x4f, 0xf7, - 0x4d, 0xa3, 0xd8, 0x6e, 0x5f, 0x91, 0x45, 0xf3, 0xe6, 0x66, 0x7a, 0xbc, 0xbb, 0x7d, 0x68, 0xcc, - 0x70, 0xab, 0xf8, 0xea, 0xf0, 0x78, 0x67, 0xfb, 0xd0, 0x28, 0xb4, 0x77, 0x60, 0x69, 0xe2, 0xee, - 0x80, 0x4f, 0xf9, 0x41, 0x18, 0x3b, 0x54, 0x90, 0x84, 0x59, 0x6e, 0x67, 0x69, 0x68, 0x14, 0x78, - 0xb0, 0x40, 0x96, 0x08, 0x47, 0x2c, 0x18, 0x18, 0xc5, 0xf6, 0x17, 0xb0, 0x78, 0x25, 0xf5, 0xe2, - 0x8e, 0x77, 0x10, 0x7a, 0x5e, 0xf8, 0x92, 0x23, 0xd0, 0x0f, 0x4f, 0x62, 0xea, 0x50, 0x97, 0x7f, - 0x16, 0x78, 0x8c, 0xd8, 0xc5, 0xea, 0x6e, 0x6a, 0x86, 0x2f, 0x8d, 0x62, 0xfb, 0x18, 0x8c, 0xab, - 0xe9, 0x0e, 0x59, 0x80, 0xd9, 0x4e, 0x90, 0x1a, 0x33, 0xbc, 0xe3, 0x07, 0x5e, 0x68, 0xa7, 0xc2, - 0xab, 0xf6, 0xa8, 0xc3, 0x7c, 0xdb, 0x33, 0x8a, 0x3c, 0x0c, 0xed, 0xd9, 0x29, 0xe5, 0xc9, 0xb4, - 0x08, 0xa1, 0x7b, 0x99, 0x28, 0x3a, 0x1b, 0x25, 0xee, 0x71, 0x57, 0x92, 0x1f, 0x3e, 0x04, 0x7e, - 0x08, 0x14, 0xc3, 0xc7, 0xd6, 0x12, 0xa3, 0x80, 0x53, 0xc1, 0xf7, 0xc4, 0xc4, 0x28, 0xee, 0xfc, - 0xe8, 0xb7, 0xdf, 0xdd, 0x2a, 0xfc, 0xdb, 0x77, 0xb7, 0x0a, 0xff, 0xf9, 0xdd, 0xad, 0xc2, 0x5f, - 0xff, 0xd7, 0xad, 0x19, 0x58, 0x75, 0x42, 0xff, 0x1e, 0xdf, 0x2f, 0x1d, 0x3b, 0xba, 0x97, 0x32, - 0xf7, 0x0c, 0x77, 0x90, 0x93, 0xc2, 0xff, 0x05, 0x00, 0x00, 0xff, 0xff, 0xbd, 0xe0, 0x68, 0x8e, - 0x44, 0x32, 0x00, 0x00, + // 4569 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x5a, 0x4b, 0x73, 0x1c, 0x47, + 0x72, 0x66, 0xcf, 0x03, 0x98, 0xc9, 0x79, 0xa0, 0x51, 0x00, 0xc1, 0x26, 0x28, 0x92, 0xd0, 0x2c, + 0x25, 0x61, 0x61, 0x89, 0xa2, 0x40, 0xae, 0x1e, 0xbb, 0xde, 0x95, 0xf0, 0x14, 0x87, 0x04, 0x06, + 0xd8, 0x1e, 0x2c, 0xb5, 0x07, 0x47, 0x74, 0x34, 0xba, 0x6b, 0x06, 0x45, 0x74, 0x57, 0x37, 0xfb, + 0x41, 0x0e, 0x74, 0xd2, 0xd9, 0x27, 0x87, 0x37, 0xec, 0xf0, 0xcd, 0x11, 0x3e, 0xd9, 0x61, 0x87, + 0x0f, 0xfe, 0x03, 0xf6, 0x71, 0x8f, 0xbe, 0x7a, 0x0f, 0x0e, 0x87, 0x7c, 0xf2, 0x5f, 0xf0, 0xc9, + 0x51, 0x59, 0xd5, 0x3d, 0x3d, 0x98, 0x01, 0x44, 0x85, 0x7d, 0xf0, 0x69, 0xa6, 0x32, 0xbf, 0xcc, + 0x7a, 0x65, 0x66, 0x65, 0x65, 0x17, 0xb4, 0xe9, 0x88, 0x3a, 0x69, 0x12, 0x44, 0x0f, 0xc3, 0x28, + 0x48, 0x02, 0x52, 0x49, 0x58, 0x78, 0xba, 0xaa, 0xd3, 0x51, 0x18, 0xd1, 0x38, 0x66, 0x01, 0x97, + 0xf4, 0xd5, 0x66, 0xec, 0x9c, 0x51, 0xdf, 0x56, 0xad, 0xe5, 0x61, 0x30, 0x0c, 0xf0, 0xef, 0xc7, + 0xe2, 0x9f, 0xa4, 0x76, 0xfe, 0xae, 0x0e, 0xb5, 0x3d, 0xa5, 0x8e, 0x3c, 0x80, 0x52, 0x12, 0x1a, + 0xda, 0x9a, 0xb6, 0xde, 0xde, 0x6c, 0x3f, 0x14, 0x5a, 0x1f, 0x0a, 0xde, 0xc9, 0x45, 0x48, 0xb7, + 0x2b, 0xbf, 0xff, 0xf7, 0xfb, 0x37, 0xcc, 0x52, 0x12, 0x92, 0x0d, 0xa8, 0x25, 0xa7, 0x9e, 0x15, + 0x3b, 0x36, 0x37, 0x4a, 0x6b, 0xda, 0x7a, 0x63, 0x73, 0x41, 0x62, 0x4f, 0xec, 0x53, 0x8f, 0xf6, + 0x1d, 0x9b, 0x9b, 0xf3, 0xc9, 0xa9, 0x27, 0xfe, 0x08, 0x2c, 0x73, 0x47, 0x12, 0x5b, 0x2e, 0x62, + 0xbb, 0xdc, 0xa5, 0x23, 0x89, 0x65, 0x2e, 0xfe, 0x21, 0x1f, 0x41, 0x3d, 0xa6, 0x1e, 0x75, 0x12, + 0x16, 0x70, 0xa3, 0x52, 0x04, 0xf7, 0x33, 0xb2, 0x39, 0x46, 0x90, 0xc7, 0xd0, 0xb0, 0x87, 0xc3, + 0x88, 0x0e, 0x6d, 0x14, 0xa8, 0xa2, 0xc0, 0xa2, 0x14, 0xd8, 0x1a, 0x33, 0xcc, 0x22, 0x8a, 0xdc, + 0x83, 0x4a, 0x12, 0x84, 0x3d, 0x63, 0x0e, 0xd1, 0xa0, 0xc6, 0x1d, 0x84, 0x3d, 0x13, 0xe9, 0xe4, + 0x5d, 0xa8, 0x7a, 0xcc, 0x67, 0x89, 0x31, 0x8f, 0x80, 0x86, 0x04, 0x1c, 0x08, 0x92, 0x29, 0x39, + 0x64, 0x07, 0x16, 0xe9, 0xc8, 0x39, 0xb3, 0xf9, 0x90, 0x5a, 0x11, 0x75, 0x28, 0x7b, 0x4d, 0x23, + 0xa3, 0x86, 0xf0, 0x95, 0x6c, 0xcd, 0x24, 0xdb, 0x54, 0x5c, 0x53, 0xa7, 0x97, 0x28, 0x62, 0x1c, + 0x2f, 0x03, 0xc6, 0x8d, 0x7a, 0x71, 0x1c, 0xcf, 0x02, 0xc6, 0x4d, 0xa4, 0x93, 0xfb, 0xd0, 0xc8, + 0x36, 0xd9, 0x62, 0xae, 0x01, 0x6b, 0xda, 0x7a, 0xdd, 0x84, 0x8c, 0xd4, 0x75, 0x85, 0x82, 0x73, + 0xe6, 0x79, 0x46, 0xa3, 0xa8, 0xe0, 0x39, 0xf3, 0x3c, 0x13, 0xe9, 0xe4, 0x97, 0xb0, 0x90, 0x8f, + 0x32, 0xa6, 0xdc, 0xa5, 0x91, 0xd1, 0x44, 0xe8, 0xf2, 0xe4, 0x18, 0xfb, 0xc8, 0x33, 0xdb, 0x74, + 0xa2, 0x4d, 0x1e, 0x01, 0x1c, 0x47, 0xc1, 0x4b, 0xb5, 0x19, 0x2d, 0x94, 0xd4, 0xa5, 0xe4, 0x98, + 0x6e, 0x16, 0x30, 0xe4, 0x19, 0x2c, 0x87, 0x76, 0x94, 0x30, 0xd1, 0xb0, 0x12, 0x61, 0x09, 0x72, + 0xd7, 0xdb, 0x28, 0x6b, 0x28, 0xd9, 0x0c, 0x31, 0x36, 0x15, 0x12, 0x4e, 0xd1, 0xc4, 0xe4, 0xe2, + 0x20, 0x4a, 0x8c, 0x85, 0xe2, 0xe4, 0xfa, 0x41, 0x94, 0x98, 0x48, 0x27, 0x0f, 0x60, 0xee, 0x0d, + 0xe3, 0x6e, 0xf0, 0xc6, 0xd0, 0x11, 0xd1, 0x94, 0x88, 0x6f, 0x90, 0x66, 0x2a, 0x1e, 0xe9, 0xc1, + 0xbb, 0x03, 0xc6, 0xa9, 0x35, 0x8c, 0x6c, 0xc6, 0xa9, 0x6b, 0xc5, 0x67, 0xe9, 0x60, 0x20, 0x86, + 0x95, 0x44, 0xd4, 0xf6, 0x2d, 0x27, 0x48, 0x79, 0x62, 0x2c, 0xae, 0x69, 0xeb, 0x15, 0x65, 0xdc, + 0x77, 0x05, 0xfc, 0x6b, 0x89, 0xee, 0x4b, 0x70, 0x1f, 0xb1, 0x3b, 0x02, 0x4a, 0x9e, 0xc1, 0xfd, + 0x99, 0xfa, 0x4e, 0xed, 0xc4, 0x39, 0xb3, 0x62, 0xf6, 0x2d, 0x35, 0x48, 0x41, 0xdb, 0x9d, 0x69, + 0x6d, 0xdb, 0x02, 0xd9, 0x67, 0xdf, 0x52, 0x31, 0x03, 0x3a, 0x0a, 0x6d, 0xee, 0x1a, 0x4b, 0xc5, + 0x19, 0xec, 0x21, 0xcd, 0x54, 0x3c, 0xf2, 0x01, 0xcc, 0xcb, 0x7f, 0x9b, 0xc6, 0x32, 0xc2, 0x5a, + 0x45, 0xd8, 0xa6, 0x99, 0x71, 0xc5, 0x6e, 0x9f, 0x46, 0x81, 0xed, 0x3a, 0x76, 0x9c, 0x58, 0xaf, + 0x52, 0x1a, 0x5d, 0x18, 0x37, 0x8b, 0xbb, 0xbd, 0x9d, 0x31, 0x7f, 0x2d, 0x78, 0x66, 0xfb, 0x74, + 0xa2, 0x4d, 0x9e, 0x40, 0x93, 0x09, 0x7f, 0xb4, 0xbc, 0x20, 0x38, 0x4f, 0x43, 0xc3, 0x28, 0xfa, + 0x12, 0x7a, 0xea, 0x41, 0x10, 0x9c, 0xff, 0x26, 0x34, 0x1b, 0x2c, 0x6b, 0xa4, 0x21, 0xb9, 0x0b, + 0x10, 0xda, 0x11, 0xe5, 0x89, 0xc5, 0xdc, 0x91, 0x71, 0x7b, 0x4d, 0x5b, 0x6f, 0x99, 0x75, 0x49, + 0xe9, 0xba, 0x23, 0x72, 0x0c, 0x2b, 0x74, 0x14, 0x7a, 0x36, 0xe3, 0xd6, 0x20, 0x88, 0x2c, 0x27, + 0xe0, 0x5c, 0x99, 0xd3, 0x2a, 0xaa, 0x5f, 0xcd, 0xe7, 0x22, 0x30, 0xfb, 0x41, 0xb4, 0x93, 0x23, + 0xcc, 0x65, 0x3a, 0x83, 0xda, 0xf9, 0x87, 0x32, 0xb4, 0x27, 0xed, 0x96, 0xac, 0x17, 0x22, 0x16, + 0x99, 0xb4, 0xec, 0xa9, 0xa8, 0xb5, 0x48, 0xb9, 0x13, 0xb8, 0xd4, 0xb5, 0x12, 0x3b, 0x3e, 0xb7, + 0x7c, 0x9a, 0xd8, 0x46, 0x69, 0xad, 0xbc, 0xde, 0x34, 0x17, 0x14, 0xe3, 0xc4, 0x8e, 0xcf, 0x0f, + 0x69, 0x62, 0x93, 0x4f, 0xa0, 0x3d, 0xb6, 0xe5, 0x73, 0x7a, 0x11, 0x1b, 0xe5, 0xb5, 0xf2, 0xd8, + 0x12, 0xf7, 0x46, 0x61, 0x64, 0xb6, 0x72, 0xc4, 0x73, 0x7a, 0x11, 0x93, 0x07, 0x50, 0x75, 0xce, + 0x98, 0xe7, 0xaa, 0xc0, 0x55, 0x88, 0x9e, 0xc2, 0x61, 0x4d, 0xc9, 0x24, 0xef, 0x41, 0x35, 0xb9, + 0x08, 0x69, 0x6c, 0x54, 0x51, 0x9f, 0x0a, 0x6f, 0xfb, 0x8c, 0x7a, 0xae, 0x18, 0xae, 0x29, 0xb9, + 0xe4, 0x33, 0x58, 0xb0, 0x3d, 0xcf, 0x1a, 0x08, 0xba, 0x25, 0x05, 0xe6, 0x66, 0x0b, 0xb4, 0x6c, + 0xcf, 0xcb, 0x5b, 0x31, 0xf9, 0x25, 0x34, 0x9c, 0xc0, 0xcf, 0x8e, 0x01, 0x0c, 0x62, 0xed, 0xcd, + 0x9b, 0x52, 0x68, 0x67, 0xcc, 0x38, 0x0c, 0xdc, 0x6c, 0x69, 0x8a, 0x78, 0x72, 0x00, 0x2b, 0x69, + 0x98, 0xb9, 0x47, 0x42, 0x0b, 0x0b, 0x55, 0xc3, 0xee, 0x6f, 0xa9, 0x59, 0xc9, 0xe5, 0xda, 0xbe, + 0x48, 0x68, 0xdc, 0xf7, 0x98, 0x43, 0xcd, 0xa5, 0x4c, 0x6c, 0x27, 0xa1, 0xd9, 0x2a, 0x76, 0xfe, + 0x54, 0x83, 0x46, 0xc1, 0x78, 0xc8, 0x23, 0x58, 0x96, 0x56, 0x76, 0x66, 0x73, 0xd7, 0xa3, 0x56, + 0x30, 0x18, 0xc4, 0x34, 0x89, 0x0d, 0x6d, 0xad, 0xbc, 0xde, 0x32, 0x09, 0xf2, 0x9e, 0x22, 0xeb, + 0x48, 0x72, 0x84, 0x85, 0x9d, 0x53, 0x1a, 0x5a, 0x41, 0x24, 0xe2, 0x97, 0x38, 0x6b, 0x6a, 0x66, + 0x5d, 0x50, 0x8e, 0x04, 0x41, 0x1c, 0x2e, 0xb8, 0xac, 0x11, 0xe5, 0x6a, 0x83, 0x2e, 0x2f, 0x7b, + 0xce, 0xef, 0x7c, 0x0e, 0x8b, 0x53, 0xc3, 0x26, 0x3f, 0x81, 0x56, 0xd1, 0x26, 0xe4, 0x50, 0x9a, + 0x66, 0xb3, 0x60, 0x0f, 0x71, 0xe7, 0x0f, 0x1a, 0xe8, 0x97, 0x23, 0xfa, 0x6c, 0x6b, 0xd2, 0x66, + 0x5b, 0xd3, 0x23, 0x68, 0x14, 0x77, 0xb2, 0x34, 0x7b, 0x27, 0x61, 0x30, 0xde, 0xc6, 0x0e, 0x5a, + 0x75, 0xf9, 0x2a, 0xab, 0x46, 0x7b, 0xde, 0x85, 0xfb, 0x41, 0xc4, 0x86, 0x8c, 0xdb, 0x1e, 0xee, + 0x55, 0x18, 0xb9, 0x81, 0x93, 0xd2, 0xa8, 0x30, 0x9e, 0x0a, 0x8e, 0xe7, 0x4e, 0x06, 0xdb, 0x49, + 0xe8, 0xb1, 0x02, 0xe5, 0x7b, 0xf4, 0xbb, 0x32, 0x34, 0xb7, 0x7a, 0x3d, 0x0c, 0x03, 0x5d, 0x3e, + 0x08, 0xc8, 0x67, 0x00, 0x18, 0x3f, 0x70, 0xb0, 0x93, 0x8e, 0x95, 0xe1, 0x0a, 0x8e, 0x55, 0x7f, + 0x95, 0x11, 0x48, 0x17, 0x16, 0x5c, 0x16, 0x27, 0x36, 0x77, 0xa8, 0xe8, 0x3d, 0x62, 0x0e, 0x6e, + 0x58, 0x3b, 0xf3, 0xf3, 0x17, 0xd4, 0x49, 0x82, 0x68, 0x57, 0x41, 0x0e, 0x11, 0xa1, 0xb4, 0xb4, + 0xdd, 0x09, 0x2a, 0xb9, 0x0d, 0xd5, 0x24, 0x08, 0xad, 0x73, 0x5c, 0x81, 0x96, 0x02, 0x89, 0xf3, + 0xf9, 0x39, 0x79, 0x4f, 0x18, 0xb8, 0x97, 0xfa, 0xdc, 0xe2, 0xb6, 0x4f, 0xd1, 0xd9, 0xea, 0x0a, + 0x00, 0x92, 0xd1, 0xb3, 0x7d, 0x4a, 0xde, 0x85, 0xba, 0x82, 0x31, 0x17, 0x33, 0x83, 0xb2, 0x02, + 0xd5, 0x24, 0x19, 0x0f, 0xd0, 0x46, 0x44, 0x07, 0xd6, 0x6b, 0xea, 0x58, 0x83, 0xc7, 0x9b, 0x98, + 0x10, 0x34, 0xcd, 0x7a, 0x44, 0x07, 0x2f, 0xa8, 0xb3, 0xff, 0x78, 0x93, 0xdc, 0x87, 0x9a, 0xb4, + 0x56, 0xe6, 0xe2, 0xe9, 0x9e, 0x69, 0x98, 0x47, 0x6a, 0x57, 0x04, 0xe7, 0xa6, 0x6f, 0x8f, 0xac, + 0x6c, 0xec, 0x78, 0x46, 0x6b, 0x99, 0x57, 0xf9, 0xf6, 0x28, 0x9b, 0x2a, 0xd9, 0x80, 0xf6, 0x19, + 0x8f, 0xdf, 0x58, 0x74, 0x60, 0xc5, 0xd4, 0x8e, 0x9c, 0x33, 0x0c, 0xe6, 0xd9, 0xbc, 0x9a, 0x82, + 0xb7, 0x37, 0xe8, 0x23, 0xe7, 0x59, 0xa5, 0x36, 0xaf, 0xd7, 0x3a, 0xdf, 0x55, 0xa1, 0x3e, 0x3e, + 0x0d, 0xef, 0x43, 0x4d, 0x9e, 0xa7, 0xcc, 0xc5, 0x0d, 0xc9, 0x47, 0x82, 0xd4, 0xae, 0x4b, 0x36, + 0x60, 0x5e, 0x4e, 0x2b, 0x33, 0x2e, 0x3d, 0xf3, 0x78, 0x9c, 0x2b, 0x1f, 0x04, 0x66, 0x06, 0x20, + 0x06, 0x54, 0x5c, 0x1a, 0x3b, 0xb8, 0xb4, 0xb5, 0x6c, 0x69, 0x05, 0x85, 0x7c, 0x08, 0x24, 0x8c, + 0x98, 0x6f, 0x47, 0x17, 0x56, 0xbe, 0x76, 0x31, 0xda, 0x50, 0xd9, 0xd4, 0x15, 0x47, 0x69, 0x74, + 0x63, 0xf2, 0x15, 0xe8, 0x9c, 0x8e, 0x12, 0x2b, 0xa2, 0xb6, 0x6b, 0x51, 0x3e, 0x64, 0x9c, 0xe2, + 0x42, 0xb7, 0xb3, 0xce, 0xf7, 0x90, 0x56, 0xb0, 0x95, 0xb6, 0xc0, 0x9b, 0xd4, 0x76, 0x25, 0x87, + 0x7c, 0x08, 0x73, 0x91, 0xb0, 0xe8, 0x2c, 0xb6, 0x29, 0xdf, 0x7d, 0x4e, 0x2f, 0x4c, 0x41, 0x56, + 0x52, 0x0a, 0x43, 0xbe, 0x80, 0xdb, 0xd9, 0xe8, 0xc2, 0x88, 0x0e, 0xd8, 0xa8, 0x38, 0xc8, 0x79, + 0x1c, 0xe4, 0x8a, 0x02, 0x1c, 0x23, 0x7f, 0x3c, 0xd4, 0xc9, 0x28, 0x52, 0xbb, 0x1c, 0x45, 0xd6, + 0xa0, 0xc9, 0x62, 0x6b, 0x20, 0x4e, 0x4e, 0x4c, 0x58, 0xea, 0x08, 0x00, 0x16, 0xef, 0xdb, 0x71, + 0x82, 0x1b, 0x70, 0x08, 0x77, 0xc3, 0x34, 0x3e, 0xa3, 0xae, 0xe5, 0x06, 0x6f, 0xb8, 0x35, 0x60, + 0x5e, 0x42, 0xf1, 0x40, 0x73, 0x31, 0xfe, 0xc7, 0x06, 0x4c, 0x9d, 0x0e, 0xab, 0x52, 0x60, 0x37, + 0x78, 0xc3, 0xf7, 0x11, 0xbe, 0x93, 0xa3, 0xc9, 0x0e, 0x2c, 0x45, 0x29, 0x4f, 0x98, 0x4f, 0x33, + 0x55, 0x1e, 0x8b, 0x13, 0xa3, 0x81, 0x4a, 0x96, 0xa4, 0x12, 0x53, 0x02, 0xa4, 0xac, 0xb9, 0x18, + 0x15, 0x9b, 0x07, 0x2c, 0x4e, 0xc8, 0x47, 0xa0, 0x0b, 0xeb, 0x7b, 0x63, 0xb3, 0xc4, 0x42, 0x55, + 0x7e, 0x8c, 0x09, 0x5e, 0x55, 0xad, 0x5b, 0xcb, 0xb7, 0x47, 0xdf, 0xd8, 0x2c, 0x39, 0x61, 0x3e, + 0x3d, 0x8c, 0xc9, 0xc7, 0x50, 0xb7, 0x39, 0x57, 0xa9, 0x81, 0x4c, 0xe7, 0x2e, 0x79, 0x35, 0x9a, + 0x49, 0xcd, 0xe6, 0x1c, 0x5b, 0x9d, 0xbf, 0xae, 0x00, 0x99, 0xce, 0xd6, 0xfe, 0x7f, 0xda, 0xe2, + 0xb5, 0xb6, 0x51, 0xbd, 0xd6, 0x36, 0x7e, 0x02, 0xe3, 0x73, 0x1c, 0xe1, 0x73, 0x08, 0x6f, 0xe6, + 0x44, 0x01, 0xba, 0x6c, 0x21, 0xf3, 0x3f, 0xde, 0x42, 0x6a, 0xff, 0x17, 0x16, 0x52, 0xff, 0x5f, + 0x5b, 0x08, 0xbc, 0xa5, 0x85, 0x34, 0xde, 0xc2, 0x42, 0xfe, 0xbb, 0x0a, 0x15, 0x71, 0x63, 0x21, + 0x9f, 0x40, 0x5d, 0xdc, 0x59, 0x8a, 0x27, 0x46, 0x7b, 0x7c, 0xa1, 0x29, 0x44, 0x80, 0xda, 0x4b, + 0xd5, 0x26, 0xbf, 0x82, 0x36, 0x8a, 0x88, 0x0b, 0x8d, 0x94, 0x2b, 0x15, 0x4f, 0x1a, 0x21, 0x77, + 0xe9, 0xe2, 0xd9, 0x7c, 0x59, 0xa0, 0xfd, 0x98, 0x93, 0x5f, 0x9c, 0x05, 0x8c, 0x73, 0x1a, 0x61, + 0x96, 0x5a, 0x29, 0x9e, 0x05, 0x48, 0x16, 0xa9, 0xea, 0x23, 0x68, 0x7b, 0x74, 0x90, 0x58, 0x38, + 0x26, 0xcc, 0xf7, 0xaa, 0x53, 0xfb, 0xd5, 0x14, 0x08, 0x31, 0x30, 0x4c, 0xf7, 0x36, 0x61, 0x21, + 0x62, 0xc3, 0xb3, 0xa2, 0xc8, 0xdc, 0x74, 0x8a, 0x88, 0x90, 0x5c, 0xe6, 0x11, 0x34, 0xc2, 0x28, + 0x38, 0xa5, 0x2a, 0x0f, 0x98, 0xbf, 0x22, 0x0f, 0x40, 0x8c, 0xcc, 0x03, 0x1e, 0x41, 0xe3, 0x34, + 0x65, 0x79, 0xe6, 0x50, 0xbb, 0x42, 0x02, 0x31, 0x52, 0xe2, 0x31, 0x2c, 0xe0, 0x4c, 0x0a, 0xa6, + 0x57, 0x9f, 0x1a, 0x17, 0x4e, 0xb6, 0x60, 0x6e, 0x3f, 0x03, 0x5d, 0x4e, 0xe6, 0xda, 0x90, 0x26, + 0x27, 0x3c, 0x29, 0x16, 0x24, 0x67, 0x93, 0x76, 0xde, 0x98, 0x16, 0x43, 0x4c, 0x41, 0xec, 0x29, + 0xdc, 0x91, 0x62, 0xf4, 0x55, 0x41, 0xd2, 0x1a, 0x44, 0x81, 0x6f, 0x31, 0x6e, 0x34, 0xa7, 0x34, + 0xdc, 0x42, 0xf8, 0xde, 0xab, 0xb1, 0x8e, 0xfd, 0x28, 0xf0, 0xbb, 0x9c, 0x3c, 0x81, 0x5b, 0x2c, + 0xb6, 0x78, 0xea, 0x79, 0x96, 0xfd, 0xc6, 0x8e, 0xc4, 0x45, 0xd7, 0x67, 0xb8, 0x23, 0x18, 0xe2, + 0x6a, 0xe6, 0x12, 0x8b, 0x7b, 0xa9, 0xe7, 0x6d, 0x09, 0x66, 0x9f, 0xfa, 0x0c, 0xcd, 0xf5, 0x0a, + 0xe7, 0x6a, 0xff, 0x18, 0xe7, 0xea, 0xfc, 0x57, 0x09, 0x5a, 0x13, 0x20, 0xb2, 0x0c, 0x25, 0x15, + 0x13, 0x33, 0x07, 0x2b, 0x31, 0x97, 0x3c, 0x01, 0x3d, 0x0e, 0xd2, 0xc8, 0xa1, 0x16, 0x1d, 0x85, + 0xaa, 0xa7, 0xd2, 0xf4, 0x86, 0x48, 0x8c, 0xf8, 0x8f, 0xae, 0xfb, 0x04, 0xf4, 0xc4, 0x8e, 0x86, + 0x34, 0x29, 0x48, 0x4d, 0xdf, 0x40, 0xda, 0x12, 0x93, 0x4b, 0x6d, 0x02, 0xc9, 0xfb, 0x1a, 0x97, + 0x0e, 0x8a, 0x29, 0x92, 0x9e, 0xf5, 0x93, 0x97, 0x11, 0x36, 0x81, 0xe4, 0x3d, 0x8d, 0x65, 0xaa, + 0x45, 0x99, 0xac, 0x97, 0x5c, 0xe6, 0x53, 0x98, 0x8f, 0x06, 0xd2, 0x6b, 0xe7, 0xd0, 0x6b, 0x6f, + 0xcd, 0x58, 0xb4, 0x82, 0xeb, 0xce, 0x45, 0x03, 0x74, 0x5a, 0x29, 0xe7, 0x07, 0x2e, 0x55, 0x17, + 0x93, 0x59, 0x72, 0x85, 0xab, 0xc9, 0x5c, 0x34, 0x10, 0xad, 0xce, 0xbf, 0x69, 0x50, 0xcf, 0xcb, + 0x45, 0x3f, 0x7c, 0x02, 0x15, 0x13, 0xb7, 0xd2, 0xac, 0xc4, 0xad, 0x70, 0x44, 0x95, 0xdf, 0xf6, + 0x88, 0xaa, 0x4c, 0x1d, 0x51, 0x2b, 0x30, 0x97, 0x72, 0xf6, 0x2a, 0x95, 0x69, 0x4f, 0xcd, 0x54, + 0xad, 0x2b, 0x8e, 0xae, 0xb9, 0xd9, 0x47, 0x57, 0xe7, 0x77, 0x1a, 0xd4, 0xf3, 0xea, 0x16, 0xd9, + 0x00, 0x28, 0xf8, 0x92, 0x36, 0xb5, 0xe3, 0x05, 0x2e, 0x79, 0x02, 0xed, 0x28, 0xe4, 0x45, 0xdf, + 0x93, 0x76, 0xa5, 0x4a, 0x04, 0x66, 0xc8, 0x55, 0x0c, 0x0a, 0x79, 0xc1, 0xf9, 0xf2, 0x6b, 0x6a, + 0xf9, 0x9a, 0x6b, 0x6a, 0xe7, 0x3b, 0xad, 0x58, 0xfe, 0x21, 0x6b, 0x50, 0x15, 0x76, 0x38, 0x6b, + 0x44, 0x92, 0x41, 0x36, 0xa0, 0x2e, 0x06, 0x23, 0x51, 0x33, 0xc7, 0x51, 0x8b, 0xe4, 0x9f, 0xb7, + 0x1d, 0xc2, 0xbf, 0x94, 0xa0, 0x51, 0xa8, 0xe2, 0x91, 0xf7, 0xa0, 0x36, 0x8c, 0x82, 0x34, 0xb4, + 0x4e, 0x2f, 0x66, 0x0c, 0x63, 0x1e, 0x79, 0xdb, 0x17, 0x02, 0x66, 0x0f, 0x87, 0xd6, 0x20, 0xe5, + 0xce, 0x0c, 0x3f, 0x9b, 0xb7, 0x87, 0xc3, 0xfd, 0x94, 0x3b, 0x64, 0x0d, 0x6a, 0xf2, 0xbe, 0x4a, + 0xdd, 0x89, 0xec, 0x23, 0xa7, 0x92, 0x8f, 0xa1, 0x29, 0x66, 0x94, 0xf7, 0x59, 0x99, 0x35, 0x29, + 0x88, 0x42, 0xfe, 0xb5, 0xea, 0x59, 0x09, 0xe4, 0xbd, 0x57, 0xaf, 0x12, 0xd8, 0x52, 0x63, 0xc8, + 0xd7, 0x61, 0xee, 0xba, 0x8a, 0xc1, 0x17, 0xd0, 0x0c, 0x23, 0x8a, 0x6a, 0xa7, 0x3d, 0xe7, 0x84, + 0xed, 0x7b, 0x76, 0x7c, 0x76, 0x1c, 0xd1, 0xad, 0xe1, 0x50, 0xf8, 0x8a, 0x38, 0x3d, 0xb2, 0xff, + 0x9d, 0xbf, 0xd1, 0xa0, 0x72, 0x12, 0x84, 0x3d, 0xf2, 0x01, 0xd4, 0x30, 0xf7, 0x1d, 0xaf, 0x9d, + 0x2a, 0x37, 0x6d, 0x5f, 0x74, 0x13, 0xea, 0x9b, 0xf3, 0xc8, 0xdd, 0xbe, 0x20, 0xab, 0x59, 0xf5, + 0xb3, 0x54, 0xa8, 0x63, 0xa9, 0xb2, 0xe7, 0x5b, 0x6d, 0x9b, 0x58, 0x85, 0x71, 0x3e, 0x95, 0x2f, + 0xdb, 0x64, 0x77, 0x8d, 0x1c, 0xb1, 0x7d, 0xd1, 0xf9, 0x27, 0x0d, 0xaa, 0x58, 0x5e, 0x1d, 0x77, + 0xae, 0x5d, 0xd3, 0x79, 0xe9, 0xc7, 0x74, 0x5e, 0xfe, 0x81, 0xce, 0xc9, 0xa7, 0xb0, 0x98, 0x44, + 0x29, 0x77, 0xec, 0x84, 0x8a, 0x33, 0x1c, 0xed, 0x57, 0x0d, 0x79, 0xe2, 0x08, 0xcb, 0x40, 0xcf, + 0xe9, 0x85, 0x20, 0x74, 0xbe, 0x82, 0xca, 0x73, 0xe6, 0x79, 0xe4, 0x1d, 0x98, 0x73, 0x02, 0xce, + 0xbb, 0xbb, 0x13, 0x63, 0x56, 0x34, 0x31, 0x21, 0x99, 0x4d, 0x95, 0x0a, 0x16, 0x26, 0x49, 0x9d, + 0x2d, 0x58, 0x9e, 0x55, 0xf8, 0x22, 0x3f, 0x85, 0xd6, 0xb8, 0x50, 0x96, 0x85, 0xb8, 0x4c, 0x71, + 0x73, 0xcc, 0xea, 0xba, 0x9d, 0xbf, 0x2f, 0x83, 0x91, 0xad, 0x80, 0xfc, 0x65, 0x01, 0xef, 0xa7, + 0xbe, 0x08, 0x30, 0x64, 0x03, 0x16, 0xf1, 0x84, 0x0b, 0xa3, 0xc0, 0xa1, 0x71, 0x4c, 0x5d, 0x0b, + 0x03, 0x8a, 0xb6, 0x5e, 0x31, 0x17, 0x04, 0xe3, 0x38, 0xa3, 0xf7, 0x84, 0xf3, 0x2e, 0xf2, 0xd4, + 0x17, 0x50, 0x37, 0x75, 0xa8, 0x6b, 0x45, 0xc1, 0x9b, 0x58, 0x5a, 0x80, 0xb9, 0xc0, 0x53, 0xff, + 0x58, 0xd1, 0xcd, 0xe0, 0x4d, 0x4c, 0xde, 0x83, 0xb6, 0xc0, 0xb2, 0x84, 0x46, 0xb6, 0x8c, 0x3a, + 0x65, 0x04, 0xb6, 0x78, 0xea, 0x77, 0x73, 0xe2, 0xe5, 0xf2, 0x75, 0x65, 0xaa, 0x7c, 0xbd, 0x26, + 0xee, 0xf1, 0xdc, 0x49, 0xa3, 0x88, 0x72, 0xe7, 0x02, 0x43, 0x68, 0xc5, 0x2c, 0x92, 0xc8, 0x01, + 0x2c, 0x27, 0x6c, 0x20, 0xcc, 0x1b, 0x93, 0x6e, 0x11, 0xe8, 0x12, 0x3a, 0x4a, 0x94, 0xb7, 0x18, + 0x13, 0x0e, 0x20, 0x0e, 0x86, 0x1d, 0xc9, 0x7f, 0x7a, 0xc3, 0x24, 0x4a, 0xae, 0x40, 0x15, 0xe3, + 0x8e, 0x52, 0xa1, 0x23, 0x4e, 0xfd, 0x30, 0xc9, 0x6a, 0x63, 0x4d, 0xb3, 0x15, 0xa5, 0x3b, 0x63, + 0x22, 0x79, 0x36, 0xee, 0x14, 0xf3, 0xe6, 0x58, 0x2e, 0xa7, 0x2a, 0xef, 0x4f, 0x76, 0x2a, 0x72, + 0x67, 0xb5, 0xdc, 0x79, 0x97, 0x05, 0xda, 0x76, 0x13, 0x60, 0x97, 0x26, 0x36, 0xf3, 0xc4, 0x89, + 0xd2, 0x19, 0xc2, 0xb2, 0x92, 0xcb, 0xf7, 0x0a, 0xeb, 0x2d, 0x47, 0xb0, 0x44, 0x33, 0x82, 0xea, + 0x8e, 0xd1, 0x2c, 0xd2, 0xde, 0x9b, 0xb4, 0xf3, 0xcb, 0xbb, 0x6c, 0x12, 0x3a, 0x49, 0x61, 0x34, + 0xee, 0xfc, 0x09, 0xac, 0xaa, 0x8e, 0x4c, 0x3a, 0x64, 0x01, 0xef, 0xa5, 0xfe, 0xd1, 0xa0, 0xcb, + 0x55, 0x2d, 0xe2, 0x3e, 0x34, 0x98, 0xfa, 0x9f, 0x59, 0x57, 0xdd, 0x84, 0x8c, 0xd4, 0x75, 0xc5, + 0x65, 0x39, 0x42, 0x39, 0x8b, 0xa7, 0xbe, 0xb2, 0x82, 0x7a, 0x94, 0x69, 0xea, 0xfc, 0x33, 0x01, + 0x32, 0xbd, 0xe8, 0xe4, 0x09, 0x2c, 0xbb, 0xfe, 0x80, 0xa9, 0x9a, 0x3f, 0xa7, 0xae, 0x15, 0xda, + 0xce, 0xb9, 0xb2, 0xb8, 0xed, 0x92, 0xa1, 0x99, 0x44, 0xf2, 0xfb, 0x92, 0x7d, 0x2c, 0xb8, 0x45, + 0xa9, 0x73, 0x16, 0x86, 0xb9, 0x54, 0x69, 0x4a, 0x4a, 0xb2, 0xa5, 0xd4, 0x67, 0x60, 0x28, 0x29, + 0xd7, 0x4e, 0xec, 0xbc, 0x43, 0xb4, 0x5a, 0x69, 0x8c, 0x37, 0x25, 0x7f, 0xd7, 0x4e, 0x6c, 0xd5, + 0x1f, 0xda, 0xee, 0x65, 0x41, 0xd5, 0x27, 0x0a, 0x56, 0xa6, 0x04, 0x25, 0x17, 0x05, 0x3f, 0x87, + 0x5b, 0x49, 0x90, 0xd8, 0x9e, 0xa5, 0xc4, 0xa3, 0xd8, 0xf2, 0x02, 0xdb, 0x15, 0x17, 0xaa, 0x6a, + 0x3e, 0xd4, 0x25, 0x84, 0xec, 0x22, 0xc2, 0x8c, 0x0f, 0x02, 0xdb, 0xc5, 0x4b, 0xd5, 0xf2, 0xa4, + 0x24, 0x95, 0x62, 0x73, 0xd8, 0xdd, 0x62, 0x51, 0x84, 0xa2, 0xc0, 0xcf, 0xb2, 0xae, 0x64, 0xde, + 0x1f, 0x73, 0x3b, 0x8c, 0xcf, 0x82, 0x44, 0xc8, 0xcc, 0xa3, 0x8c, 0xd4, 0xb7, 0x2d, 0xb8, 0x7d, + 0xc5, 0x3c, 0xc4, 0x6b, 0xac, 0x17, 0x38, 0xb6, 0x67, 0xc9, 0x9d, 0x8a, 0xd1, 0x60, 0x2b, 0x66, + 0x13, 0x89, 0xd2, 0x0e, 0xd0, 0x77, 0x23, 0xea, 0x07, 0x09, 0xcd, 0x51, 0x75, 0xe9, 0xbb, 0x92, + 0x9a, 0xc1, 0xde, 0x87, 0x85, 0x34, 0xa6, 0x91, 0x1c, 0xeb, 0xe9, 0x45, 0x42, 0xe5, 0xb5, 0xb1, + 0x62, 0xb6, 0x04, 0x59, 0x8c, 0x13, 0x2b, 0xa8, 0xe4, 0x13, 0xb8, 0x29, 0x87, 0xea, 0x51, 0x3b, + 0xe2, 0x99, 0x80, 0x1f, 0xe3, 0xe5, 0xb1, 0x62, 0x12, 0x64, 0x1e, 0x48, 0x9e, 0x9a, 0xdd, 0x1f, + 0xc3, 0x1d, 0x97, 0xc5, 0xe2, 0x2c, 0x43, 0xac, 0x63, 0x3b, 0x67, 0xd4, 0x3a, 0x63, 0x89, 0xea, + 0xa6, 0x89, 0x82, 0xb7, 0x24, 0x44, 0x88, 0xec, 0x08, 0xc0, 0x53, 0x96, 0xc8, 0x0e, 0x7f, 0x05, + 0xef, 0x4c, 0x4b, 0xfb, 0x2c, 0x8e, 0x95, 0x78, 0x0b, 0xc5, 0x8d, 0x4b, 0xe2, 0x87, 0x2c, 0x8e, + 0xa5, 0xfc, 0xa7, 0x60, 0x5c, 0xde, 0x46, 0xe7, 0x8c, 0x3a, 0xe7, 0x62, 0xcc, 0xed, 0xc2, 0xe2, + 0x66, 0x7b, 0xb8, 0x23, 0x98, 0x87, 0xb1, 0xc8, 0xe8, 0xe2, 0xc4, 0xce, 0x76, 0x2f, 0x5b, 0xbb, + 0x05, 0x94, 0xd0, 0x91, 0x23, 0x3a, 0xcb, 0x96, 0x6f, 0x15, 0x6a, 0x31, 0x1d, 0xfa, 0x94, 0x27, + 0x31, 0x7e, 0x9d, 0xaa, 0x98, 0x79, 0x5b, 0x3a, 0x97, 0x9d, 0x15, 0x9b, 0x17, 0x33, 0xe7, 0xb2, + 0x65, 0xa5, 0x59, 0xb0, 0x5d, 0xea, 0x25, 0xb6, 0x34, 0x49, 0x22, 0xd9, 0x48, 0x41, 0x33, 0xbc, + 0x0f, 0x0d, 0xc9, 0x96, 0xd3, 0x5d, 0x42, 0xbe, 0x94, 0x90, 0x13, 0x7c, 0x1f, 0x16, 0xfc, 0xd7, + 0x8e, 0x63, 0x31, 0x1e, 0xa6, 0x89, 0x54, 0xb2, 0x2c, 0x77, 0x4e, 0x90, 0xbb, 0x82, 0x8a, 0x8a, + 0xd6, 0x41, 0x2f, 0xe0, 0xa4, 0xb6, 0x9b, 0x08, 0x6c, 0xe7, 0x40, 0xa9, 0x31, 0x43, 0x06, 0x69, + 0x92, 0xab, 0x5c, 0x19, 0x23, 0x8f, 0x90, 0x8c, 0x3a, 0xd7, 0xa0, 0xe9, 0xf9, 0xe8, 0x53, 0x12, + 0x75, 0x4b, 0x8e, 0xce, 0xf3, 0x85, 0x23, 0x21, 0xe2, 0x17, 0xb0, 0x5a, 0x34, 0x6d, 0xec, 0x5c, + 0x7d, 0x6b, 0xf0, 0x63, 0xfc, 0xe4, 0x54, 0x31, 0x6f, 0x8d, 0xad, 0xbb, 0x3b, 0xe6, 0x1f, 0x16, + 0x8c, 0x4d, 0x0a, 0x9f, 0xb2, 0xc4, 0xb7, 0x43, 0x21, 0x77, 0xbb, 0x60, 0x6c, 0x28, 0xb7, 0x8d, + 0xac, 0xc3, 0x98, 0x7c, 0x04, 0x4b, 0x3e, 0xe3, 0x96, 0xf4, 0x8b, 0x71, 0x47, 0xab, 0x72, 0xdf, + 0x7c, 0xc6, 0x0f, 0x04, 0xa7, 0x9f, 0xf5, 0x20, 0xe0, 0xf6, 0x68, 0x0a, 0x7e, 0x47, 0xc1, 0xed, + 0xd1, 0x24, 0xfc, 0x63, 0x58, 0x16, 0xda, 0x95, 0x43, 0x8d, 0xf1, 0xef, 0x48, 0xcf, 0xf6, 0x19, + 0x37, 0x91, 0x35, 0x21, 0x60, 0x8f, 0xa6, 0x05, 0xee, 0x2a, 0x01, 0x7b, 0x74, 0x49, 0xe0, 0x18, + 0x96, 0x94, 0xad, 0x59, 0xc1, 0xc0, 0xca, 0x42, 0xb4, 0x71, 0x0f, 0x4f, 0x86, 0xb5, 0x89, 0xa3, + 0x68, 0x46, 0xa4, 0x37, 0x17, 0x95, 0x70, 0x21, 0xf8, 0x8f, 0x03, 0x20, 0x6e, 0xea, 0x44, 0xe4, + 0xbc, 0x5f, 0x0c, 0x80, 0x87, 0xaf, 0x1d, 0x67, 0x76, 0xe4, 0x94, 0x82, 0xc5, 0xc8, 0xb9, 0x36, + 0x25, 0x58, 0x88, 0x9c, 0x5f, 0xc1, 0x5d, 0x25, 0xe8, 0xf9, 0xd9, 0x6d, 0x7b, 0xa2, 0xdb, 0x77, + 0x51, 0xfa, 0xb6, 0x04, 0x1d, 0xf8, 0xf2, 0x0e, 0x58, 0xec, 0x7a, 0xa6, 0x86, 0x62, 0xff, 0x9d, + 0x99, 0x1a, 0x0a, 0x63, 0xf8, 0x12, 0xee, 0x4a, 0xd3, 0x79, 0x8d, 0x5f, 0x20, 0x2c, 0xe6, 0x8e, + 0x64, 0xf8, 0xc6, 0x8a, 0x43, 0xfc, 0xd8, 0x70, 0x65, 0xdc, 0x40, 0x90, 0xfc, 0x4a, 0xd1, 0x75, + 0x47, 0x22, 0x80, 0xef, 0x47, 0x81, 0xdf, 0x7f, 0x4c, 0x76, 0xe0, 0xfe, 0x35, 0x0a, 0x5c, 0x16, + 0x9f, 0x1b, 0x14, 0x55, 0xac, 0xce, 0x56, 0xb1, 0xcb, 0xe2, 0x73, 0xb2, 0x07, 0x6b, 0xd7, 0x28, + 0xc1, 0x58, 0x66, 0x0c, 0x50, 0xcb, 0x9d, 0xd9, 0x5a, 0x30, 0x98, 0x5d, 0x3d, 0x99, 0xac, 0xc2, + 0x37, 0xbc, 0x6a, 0x32, 0xaa, 0xcc, 0x37, 0x6b, 0x32, 0xf2, 0xab, 0x44, 0xae, 0xe2, 0x6c, 0xd6, + 0x64, 0xe4, 0xf7, 0x09, 0xa5, 0xe4, 0x08, 0xde, 0xbb, 0x4a, 0xc9, 0x6b, 0x16, 0xb3, 0x44, 0xa4, + 0x9b, 0x81, 0x4b, 0x63, 0x83, 0xa1, 0xaa, 0xb5, 0x59, 0xaa, 0x5e, 0x48, 0x60, 0x4f, 0xe0, 0x48, + 0x1f, 0x3e, 0xb8, 0x4a, 0xa1, 0xcb, 0x62, 0xc7, 0x8e, 0xdc, 0x5c, 0xe5, 0x4b, 0x54, 0xd9, 0x99, + 0xa5, 0x72, 0x37, 0x83, 0x4a, 0xa5, 0xfb, 0xf0, 0xee, 0x94, 0x52, 0x0c, 0xbf, 0xaf, 0xa9, 0x93, + 0x4f, 0xf6, 0x7c, 0xd6, 0x9a, 0x8b, 0x78, 0xfe, 0x82, 0x3a, 0x6a, 0xb6, 0x07, 0xf0, 0x60, 0xb6, + 0x1e, 0xac, 0x4b, 0xc5, 0xb9, 0x2a, 0x0f, 0x55, 0xdd, 0x9b, 0x56, 0x75, 0x84, 0x38, 0xa9, 0xad, + 0xf3, 0xb7, 0x5a, 0x9e, 0x41, 0x15, 0xb2, 0x45, 0xf2, 0x00, 0xda, 0x3e, 0xe3, 0x27, 0xfd, 0x23, + 0x99, 0x78, 0xe6, 0xd9, 0x7a, 0x53, 0x52, 0x05, 0xb4, 0x17, 0x93, 0xc7, 0xb0, 0x12, 0xb2, 0x90, + 0x7a, 0x8c, 0x53, 0xeb, 0x55, 0x4a, 0x53, 0x9a, 0xa3, 0x65, 0xa6, 0xb6, 0x94, 0x71, 0x7f, 0x2d, + 0x98, 0x4a, 0xe8, 0x33, 0x30, 0x72, 0xa1, 0xd3, 0x88, 0xda, 0xe7, 0x34, 0xca, 0xc5, 0x54, 0xc2, + 0x94, 0xf1, 0xb7, 0x25, 0x5b, 0x0a, 0x76, 0xbe, 0x85, 0x4a, 0x3f, 0x88, 0x12, 0xf2, 0x3e, 0xcc, + 0x9f, 0xe2, 0xed, 0x29, 0x9e, 0x7d, 0x7d, 0x54, 0x4c, 0xf2, 0x00, 0x5a, 0x2c, 0xc6, 0x8f, 0x06, + 0xb6, 0x27, 0x04, 0xd5, 0x17, 0xdb, 0x49, 0xe2, 0x5b, 0xde, 0xff, 0xff, 0xbc, 0x04, 0xba, 0x7c, + 0xcf, 0xb1, 0x1f, 0xd9, 0x3e, 0xdd, 0x0e, 0x52, 0x2e, 0x2e, 0x78, 0x95, 0x42, 0x91, 0xf9, 0x66, + 0xf1, 0xd5, 0x07, 0x02, 0x0a, 0x45, 0x27, 0x04, 0x92, 0x0e, 0xd4, 0x53, 0x7e, 0x2a, 0x58, 0xd4, + 0x9d, 0xb8, 0x86, 0x8d, 0xc9, 0x64, 0x05, 0xe6, 0xe4, 0x97, 0x68, 0xb5, 0x18, 0xaa, 0x45, 0xd6, + 0xa1, 0xee, 0xd8, 0x9e, 0x23, 0xee, 0xea, 0xf1, 0x8c, 0x4b, 0xe1, 0x98, 0x49, 0xfe, 0x08, 0x1a, + 0x03, 0x31, 0x48, 0x0b, 0xbf, 0x55, 0xa9, 0x97, 0x48, 0x13, 0x75, 0x1b, 0x64, 0xe3, 0x67, 0x2d, + 0xf2, 0x73, 0x68, 0x39, 0x7e, 0x28, 0x53, 0xd0, 0x42, 0x0d, 0x4d, 0x3d, 0x1d, 0x42, 0xcc, 0x8e, + 0x1f, 0x8a, 0x14, 0x14, 0x8b, 0xbb, 0x0d, 0x67, 0xdc, 0xe8, 0xfc, 0xa5, 0x06, 0x8d, 0xc2, 0xa2, + 0x5c, 0xb7, 0x1e, 0x08, 0x98, 0x5a, 0x8f, 0x0f, 0xa1, 0x1a, 0x27, 0xb6, 0xda, 0x99, 0xfc, 0xbd, + 0xd2, 0xe5, 0x75, 0x36, 0x25, 0x88, 0xac, 0x43, 0x99, 0xf2, 0x6c, 0x9f, 0xae, 0xc2, 0x0a, 0x48, + 0xe7, 0x0f, 0x1a, 0xcc, 0x49, 0x0e, 0xf9, 0x00, 0xea, 0x83, 0x94, 0x3b, 0x16, 0x96, 0xcd, 0xa6, + 0x2b, 0x35, 0x35, 0xc1, 0xdc, 0xa5, 0xb1, 0x33, 0x75, 0x5b, 0x2f, 0xfd, 0xd0, 0x6d, 0xbd, 0x58, + 0xc6, 0x28, 0x5f, 0x57, 0xc6, 0xf8, 0x00, 0xaa, 0xb8, 0xe0, 0xea, 0x2d, 0xc6, 0xe2, 0xd4, 0xc8, + 0x4d, 0xc9, 0x1f, 0x9b, 0x62, 0xf5, 0x3a, 0x53, 0xfc, 0x12, 0x9a, 0x58, 0xe4, 0x61, 0x7c, 0x28, + 0xa6, 0x40, 0x3e, 0x86, 0xd6, 0x50, 0xb5, 0x65, 0xc5, 0x60, 0x7a, 0x96, 0xcd, 0x61, 0x41, 0xa0, + 0xf3, 0x14, 0x1a, 0x99, 0x82, 0x3e, 0x4d, 0xc8, 0x17, 0xd0, 0x9e, 0x90, 0xcf, 0xbc, 0x4a, 0x7d, + 0xfc, 0x28, 0xf6, 0x65, 0xb6, 0x8a, 0x8a, 0xe2, 0xce, 0x77, 0x1a, 0xcc, 0xc9, 0xc7, 0x3f, 0xe4, + 0xd3, 0xc2, 0x28, 0xf2, 0x67, 0x14, 0xf9, 0x64, 0x0b, 0xfd, 0x8d, 0x07, 0xd3, 0xa7, 0x49, 0xfc, + 0x96, 0xa5, 0x14, 0x03, 0xe6, 0x5f, 0xd3, 0x08, 0x1f, 0x91, 0x48, 0xaf, 0xc8, 0x9a, 0x9d, 0x8f, + 0xa0, 0x2e, 0xc6, 0x22, 0x1f, 0x50, 0xfc, 0x60, 0x65, 0xb0, 0xf3, 0x17, 0x1a, 0xcc, 0xab, 0xe7, + 0x4a, 0xe4, 0x21, 0x40, 0x18, 0x05, 0x2f, 0x27, 0x26, 0xbd, 0x30, 0x16, 0x91, 0x4f, 0x49, 0xea, + 0x02, 0x22, 0x2b, 0x85, 0x4f, 0x60, 0x65, 0x48, 0x39, 0x8d, 0x6c, 0x71, 0xa0, 0xa8, 0x14, 0x94, + 0xdb, 0xbe, 0x7a, 0x43, 0x51, 0x37, 0x97, 0x73, 0xae, 0x4c, 0x44, 0x7b, 0x82, 0xf7, 0x96, 0xf1, + 0xe5, 0x7d, 0x68, 0x4f, 0x3e, 0x8a, 0x22, 0xcb, 0x59, 0xb9, 0x46, 0x5e, 0x8a, 0x65, 0x63, 0xe3, + 0xcf, 0xca, 0xf2, 0x7d, 0x24, 0x56, 0xb0, 0x17, 0xa1, 0x25, 0x7e, 0xf3, 0xcf, 0xa1, 0xfa, 0x8d, + 0x8c, 0x94, 0xd7, 0xa7, 0x75, 0x2d, 0x23, 0xe5, 0x65, 0x5d, 0xbd, 0x44, 0x96, 0x60, 0x41, 0x90, + 0x0a, 0x05, 0x4d, 0xbd, 0x4c, 0x9a, 0x50, 0x43, 0x6d, 0x41, 0xd8, 0xd3, 0x2b, 0xa4, 0x05, 0x75, + 0xd1, 0xc2, 0x5a, 0x98, 0x5e, 0xcd, 0x95, 0x60, 0x36, 0xb8, 0x35, 0x1c, 0xea, 0x73, 0x19, 0xfe, + 0x59, 0xc0, 0xb8, 0x3e, 0x9f, 0xb5, 0x9e, 0x33, 0xcf, 0xd3, 0x6b, 0x64, 0x05, 0x88, 0x68, 0x4d, + 0xbe, 0x8e, 0xd2, 0xeb, 0xc4, 0x80, 0xe5, 0x22, 0x3d, 0x7b, 0xbf, 0xa2, 0x03, 0x21, 0xd0, 0x16, + 0x9c, 0x71, 0x99, 0x57, 0x6f, 0x90, 0x55, 0x58, 0x41, 0xda, 0xd4, 0x77, 0x5f, 0xbd, 0x99, 0xf5, + 0x27, 0x42, 0xb8, 0xde, 0x22, 0x6d, 0x00, 0xd1, 0x92, 0x3e, 0xa5, 0xb7, 0xb3, 0xb6, 0xdc, 0x69, + 0x7d, 0x81, 0x2c, 0x40, 0x63, 0xdc, 0xde, 0xd4, 0xf5, 0x6c, 0x80, 0x93, 0x6b, 0xae, 0x2f, 0x66, + 0x2b, 0x53, 0x78, 0x27, 0xa4, 0x2f, 0x93, 0x77, 0xc0, 0x50, 0xd2, 0x53, 0x15, 0x32, 0xfd, 0xe6, + 0xc6, 0xe7, 0xd0, 0x2c, 0xbe, 0x86, 0x11, 0x7d, 0x1d, 0xdb, 0x71, 0x7c, 0x72, 0x16, 0x05, 0xe9, + 0xf0, 0x4c, 0xbf, 0x21, 0x96, 0x32, 0xef, 0x47, 0xd7, 0x48, 0x0d, 0x2a, 0x4f, 0xed, 0xf8, 0x4c, + 0x2f, 0x6d, 0xfc, 0x02, 0x16, 0x2e, 0xbd, 0x82, 0x12, 0xcc, 0xde, 0x51, 0x6f, 0x4f, 0xbf, 0x21, + 0xfe, 0xed, 0x6f, 0xf5, 0x4f, 0x74, 0x8d, 0x2c, 0x83, 0xfe, 0xb4, 0xfb, 0xf5, 0x53, 0x6b, 0xe7, + 0xe8, 0xf0, 0xd8, 0xdc, 0xeb, 0xf7, 0xbb, 0x47, 0x3d, 0xbd, 0xb4, 0xf1, 0x10, 0x60, 0xfc, 0xa6, + 0x81, 0xd4, 0xa1, 0x8a, 0x17, 0x02, 0x29, 0x78, 0xc2, 0x9e, 0xbf, 0xd0, 0x35, 0xd2, 0x80, 0x79, + 0x75, 0xb4, 0xeb, 0xa5, 0x8d, 0xc7, 0xb0, 0xa0, 0xb2, 0x00, 0x31, 0xb7, 0xe7, 0x8c, 0x8b, 0xa3, + 0x86, 0x74, 0x7b, 0x2f, 0xb6, 0x0e, 0xba, 0xbb, 0x56, 0xb7, 0xb7, 0xbb, 0xf7, 0x5b, 0xeb, 0x79, + 0xb7, 0xb7, 0x2b, 0x35, 0x3c, 0xed, 0xf5, 0xbf, 0xd1, 0xb5, 0x8d, 0x53, 0x58, 0x9e, 0xf5, 0x50, + 0x86, 0xdc, 0x81, 0x5b, 0x99, 0xe4, 0x6e, 0xb7, 0x7f, 0xb2, 0xd5, 0xdb, 0xd9, 0xb3, 0x0e, 0xf7, + 0x4e, 0xcc, 0xee, 0x8e, 0x7e, 0x83, 0xcc, 0x41, 0xe9, 0xe0, 0x13, 0x5d, 0xc3, 0xdf, 0x4d, 0xbd, + 0x44, 0x00, 0xe6, 0x76, 0x8e, 0xfa, 0xdd, 0xde, 0x9e, 0x5e, 0x16, 0x76, 0xd4, 0xed, 0xf5, 0xf6, + 0x4c, 0xeb, 0xd8, 0x3c, 0xda, 0xfd, 0xcd, 0xce, 0x89, 0x5e, 0xd9, 0xf8, 0x64, 0xfc, 0xe4, 0x07, + 0xa7, 0xb2, 0x0c, 0x7a, 0x97, 0xbf, 0xb6, 0x3d, 0xe6, 0xe6, 0x34, 0xfd, 0x86, 0x98, 0xcb, 0x91, + 0x8c, 0xa7, 0xba, 0xb6, 0xf1, 0x8f, 0x1a, 0xd4, 0xb2, 0x8f, 0xb9, 0x63, 0x93, 0xe7, 0x34, 0x42, + 0x63, 0xbc, 0x41, 0x6e, 0xc2, 0x22, 0x1a, 0x2f, 0x1d, 0x24, 0x47, 0x69, 0xa2, 0xc8, 0x5a, 0xb6, + 0xe9, 0x26, 0x1b, 0x9e, 0x15, 0xe8, 0x25, 0xa2, 0x43, 0x53, 0x7a, 0x88, 0xfc, 0x24, 0xa7, 0x97, + 0xc5, 0x18, 0xd0, 0x41, 0x78, 0xc2, 0x72, 0x6a, 0x85, 0xdc, 0x86, 0x9b, 0x13, 0x6a, 0x73, 0x56, + 0x95, 0xdc, 0x85, 0xdb, 0x99, 0xc0, 0x34, 0x7b, 0x6e, 0x63, 0x0d, 0x9a, 0xc5, 0x8f, 0xc8, 0x59, + 0x8f, 0xc2, 0x0e, 0xe4, 0x90, 0x37, 0x7e, 0x0e, 0x8b, 0x53, 0x1f, 0xac, 0xc4, 0x0a, 0x76, 0x7b, + 0x72, 0xf2, 0x87, 0xdd, 0x9e, 0x75, 0xb8, 0xf5, 0x5b, 0x5d, 0x13, 0xb2, 0xdb, 0x07, 0x47, 0x47, + 0x87, 0xd6, 0x7e, 0xf7, 0xe0, 0x64, 0xcf, 0xd4, 0x4b, 0x1b, 0x1b, 0x97, 0x64, 0xd1, 0x92, 0x84, + 0x45, 0x1c, 0xed, 0x6c, 0x1d, 0xe8, 0x37, 0xc4, 0x06, 0x7c, 0x7d, 0x70, 0xb4, 0xbd, 0x75, 0xa0, + 0x6b, 0x1b, 0xdb, 0xb0, 0x38, 0x55, 0xa6, 0x17, 0x26, 0xbb, 0x1f, 0x44, 0x0e, 0x95, 0x24, 0x69, + 0x01, 0x5b, 0x69, 0x12, 0xe8, 0x9a, 0xf0, 0x4b, 0x64, 0x49, 0xcf, 0x67, 0x7c, 0xa8, 0x97, 0x36, + 0xbe, 0x84, 0x85, 0x4b, 0x59, 0x8e, 0xb0, 0xf1, 0xfd, 0xc0, 0xf3, 0x82, 0x37, 0x02, 0x81, 0x26, + 0x7f, 0x1c, 0x51, 0x87, 0xba, 0xa2, 0xa9, 0x09, 0x77, 0xdc, 0xc1, 0x42, 0xaa, 0xb8, 0x9c, 0xeb, + 0xa5, 0x8d, 0x23, 0xd0, 0x2f, 0x67, 0x16, 0x64, 0x1e, 0xca, 0x5d, 0x9e, 0xe8, 0x37, 0xc4, 0xc0, + 0xf7, 0xbd, 0xc0, 0x4e, 0xa4, 0x01, 0xef, 0x52, 0x87, 0xf9, 0xb6, 0xa7, 0x97, 0x84, 0xc7, 0xef, + 0xda, 0x09, 0x15, 0x79, 0xab, 0x8c, 0x56, 0xbb, 0xa9, 0xac, 0xef, 0xea, 0x15, 0x61, 0xdc, 0x97, + 0xf2, 0x0c, 0x31, 0x05, 0x71, 0xdf, 0x92, 0xd3, 0xc7, 0xde, 0x62, 0x5d, 0xc3, 0xa5, 0x10, 0xc7, + 0x4f, 0xac, 0x97, 0xb6, 0x7f, 0xfa, 0xfb, 0xef, 0xef, 0x69, 0xff, 0xfa, 0xfd, 0x3d, 0xed, 0x3f, + 0xbe, 0xbf, 0xa7, 0xfd, 0xd5, 0x7f, 0xde, 0xbb, 0x01, 0x37, 0x9d, 0xc0, 0x7f, 0x28, 0x8e, 0x26, + 0xc7, 0x0e, 0x1f, 0x26, 0xcc, 0x3d, 0xc5, 0x60, 0x7d, 0xac, 0xfd, 0x4f, 0x00, 0x00, 0x00, 0xff, + 0xff, 0x54, 0xc0, 0x25, 0x07, 0xe3, 0x2e, 0x00, 0x00, } diff --git a/go-tipb/expression.pb.go b/go-tipb/expression.pb.go index a4e2fb06..f7a7b536 100644 --- a/go-tipb/expression.pb.go +++ b/go-tipb/expression.pb.go @@ -627,11 +627,7 @@ const ( ScalarFuncSig_IfVectorFloat32 ScalarFuncSig = 5161 ScalarFuncSig_CaseWhenVectorFloat32 ScalarFuncSig = 5162 // fts - ScalarFuncSig_FTSMatchWord ScalarFuncSig = 5201 - ScalarFuncSig_FTSMatchExpression ScalarFuncSig = 5202 ScalarFuncSig_FTSMatchBooleanExpression ScalarFuncSig = 5206 - ScalarFuncSig_FTSMatchPrefix ScalarFuncSig = 5203 - ScalarFuncSig_FTSMatchRegexp ScalarFuncSig = 5204 // time ScalarFuncSig_DateFormatSig ScalarFuncSig = 6001 ScalarFuncSig_DateLiteral ScalarFuncSig = 6002 @@ -1268,11 +1264,7 @@ var ScalarFuncSig_name = map[int32]string{ 5160: "IfNullVectorFloat32", 5161: "IfVectorFloat32", 5162: "CaseWhenVectorFloat32", - 5201: "FTSMatchWord", - 5202: "FTSMatchExpression", 5206: "FTSMatchBooleanExpression", - 5203: "FTSMatchPrefix", - 5204: "FTSMatchRegexp", 6001: "DateFormatSig", 6002: "DateLiteral", 6003: "DateDiff", @@ -1906,11 +1898,7 @@ var ScalarFuncSig_value = map[string]int32{ "IfNullVectorFloat32": 5160, "IfVectorFloat32": 5161, "CaseWhenVectorFloat32": 5162, - "FTSMatchWord": 5201, - "FTSMatchExpression": 5202, "FTSMatchBooleanExpression": 5206, - "FTSMatchPrefix": 5203, - "FTSMatchRegexp": 5204, "DateFormatSig": 6001, "DateLiteral": 6002, "DateDiff": 6003, @@ -2159,10 +2147,8 @@ func (x *ScalarFuncSig) UnmarshalJSON(data []byte) error { func (ScalarFuncSig) EnumDescriptor() ([]byte, []int) { return fileDescriptorExpression, []int{1} } // Evaluators should implement evaluation functions for every expression type. -// Boolean full-text query representation shared by scan-level FTS metadata and -// scalar expressions. These types live in expression.proto so Expr can carry -// the query as a typed field without introducing an import cycle with -// executor.proto. +// Boolean full-text query representation carried as metadata by the +// FTSMatchBooleanExpression scalar function. type FTSBooleanOccur int32 const ( @@ -2203,46 +2189,6 @@ func (x *FTSBooleanOccur) UnmarshalJSON(data []byte) error { } func (FTSBooleanOccur) EnumDescriptor() ([]byte, []int) { return fileDescriptorExpression, []int{2} } -type FTSBooleanModifier int32 - -const ( - FTSBooleanModifier_FTSBooleanModifierNone FTSBooleanModifier = 0 - FTSBooleanModifier_FTSBooleanModifierBoost FTSBooleanModifier = 1 - FTSBooleanModifier_FTSBooleanModifierDeBoost FTSBooleanModifier = 2 - FTSBooleanModifier_FTSBooleanModifierNegate FTSBooleanModifier = 3 -) - -var FTSBooleanModifier_name = map[int32]string{ - 0: "FTSBooleanModifierNone", - 1: "FTSBooleanModifierBoost", - 2: "FTSBooleanModifierDeBoost", - 3: "FTSBooleanModifierNegate", -} -var FTSBooleanModifier_value = map[string]int32{ - "FTSBooleanModifierNone": 0, - "FTSBooleanModifierBoost": 1, - "FTSBooleanModifierDeBoost": 2, - "FTSBooleanModifierNegate": 3, -} - -func (x FTSBooleanModifier) Enum() *FTSBooleanModifier { - p := new(FTSBooleanModifier) - *p = x - return p -} -func (x FTSBooleanModifier) String() string { - return proto.EnumName(FTSBooleanModifier_name, int32(x)) -} -func (x *FTSBooleanModifier) UnmarshalJSON(data []byte) error { - value, err := proto.UnmarshalJSONEnum(FTSBooleanModifier_value, data, "FTSBooleanModifier") - if err != nil { - return err - } - *x = FTSBooleanModifier(value) - return nil -} -func (FTSBooleanModifier) EnumDescriptor() ([]byte, []int) { return fileDescriptorExpression, []int{3} } - type FTSBooleanTermType int32 const ( @@ -2281,7 +2227,7 @@ func (x *FTSBooleanTermType) UnmarshalJSON(data []byte) error { *x = FTSBooleanTermType(value) return nil } -func (FTSBooleanTermType) EnumDescriptor() ([]byte, []int) { return fileDescriptorExpression, []int{4} } +func (FTSBooleanTermType) EnumDescriptor() ([]byte, []int) { return fileDescriptorExpression, []int{3} } type AggFunctionMode int32 @@ -2324,7 +2270,7 @@ func (x *AggFunctionMode) UnmarshalJSON(data []byte) error { *x = AggFunctionMode(value) return nil } -func (AggFunctionMode) EnumDescriptor() ([]byte, []int) { return fileDescriptorExpression, []int{5} } +func (AggFunctionMode) EnumDescriptor() ([]byte, []int) { return fileDescriptorExpression, []int{4} } type FieldType struct { Tp int32 `protobuf:"varint,1,opt,name=tp" json:"tp"` @@ -2402,7 +2348,6 @@ func (m *FieldType) GetArray() bool { type FTSBooleanTerm struct { TermType FTSBooleanTermType `protobuf:"varint,1,opt,name=term_type,json=termType,enum=tipb.FTSBooleanTermType" json:"term_type"` Text string `protobuf:"bytes,2,opt,name=text" json:"text"` - PhraseDistance uint32 `protobuf:"varint,3,opt,name=phrase_distance,json=phraseDistance" json:"phrase_distance"` XXX_unrecognized []byte `json:"-"` } @@ -2425,17 +2370,10 @@ func (m *FTSBooleanTerm) GetText() string { return "" } -func (m *FTSBooleanTerm) GetPhraseDistance() uint32 { - if m != nil { - return m.PhraseDistance - } - return 0 -} - type FTSBooleanQuery struct { Nodes []*FTSBooleanNode `protobuf:"bytes,1,rep,name=nodes" json:"nodes,omitempty"` - // The Boolean query carries the analyzer selected by the FULLTEXT index so - // TiFlash does not have to infer NGRAM semantics from the raw query text. + // The query carries the analyzer selected by TiDB so TiFlash does not have to + // infer NGRAM semantics from the raw query text. QueryTokenizer string `protobuf:"bytes,2,opt,name=query_tokenizer,json=queryTokenizer" json:"query_tokenizer"` NgramTokenSize uint32 `protobuf:"varint,3,opt,name=ngram_token_size,json=ngramTokenSize" json:"ngram_token_size"` // STANDARD_V1 analyzer settings. If both token-size fields are zero, TiFlash @@ -2497,27 +2435,27 @@ func (m *FTSBooleanQuery) GetInnodbFtEnableStopword() bool { // FTSMatchBooleanExpression. Expr.val is already the generic scalar-function // metadata slot, so this avoids adding an FTS-specific field to Expr while // keeping the SQL arguments in Expr.children unchanged. -type FTSMatchExpressionMetadata struct { +type FTSMatchBooleanMetadata struct { Version uint32 `protobuf:"varint,1,opt,name=version" json:"version"` BooleanQuery *FTSBooleanQuery `protobuf:"bytes,2,opt,name=boolean_query,json=booleanQuery" json:"boolean_query,omitempty"` XXX_unrecognized []byte `json:"-"` } -func (m *FTSMatchExpressionMetadata) Reset() { *m = FTSMatchExpressionMetadata{} } -func (m *FTSMatchExpressionMetadata) String() string { return proto.CompactTextString(m) } -func (*FTSMatchExpressionMetadata) ProtoMessage() {} -func (*FTSMatchExpressionMetadata) Descriptor() ([]byte, []int) { +func (m *FTSMatchBooleanMetadata) Reset() { *m = FTSMatchBooleanMetadata{} } +func (m *FTSMatchBooleanMetadata) String() string { return proto.CompactTextString(m) } +func (*FTSMatchBooleanMetadata) ProtoMessage() {} +func (*FTSMatchBooleanMetadata) Descriptor() ([]byte, []int) { return fileDescriptorExpression, []int{3} } -func (m *FTSMatchExpressionMetadata) GetVersion() uint32 { +func (m *FTSMatchBooleanMetadata) GetVersion() uint32 { if m != nil { return m.Version } return 0 } -func (m *FTSMatchExpressionMetadata) GetBooleanQuery() *FTSBooleanQuery { +func (m *FTSMatchBooleanMetadata) GetBooleanQuery() *FTSBooleanQuery { if m != nil { return m.BooleanQuery } @@ -2525,13 +2463,9 @@ func (m *FTSMatchExpressionMetadata) GetBooleanQuery() *FTSBooleanQuery { } type FTSBooleanNode struct { - Occur FTSBooleanOccur `protobuf:"varint,1,opt,name=occur,enum=tipb.FTSBooleanOccur" json:"occur"` - Modifier FTSBooleanModifier `protobuf:"varint,2,opt,name=modifier,enum=tipb.FTSBooleanModifier" json:"modifier"` - // Types that are valid to be assigned to Node: - // *FTSBooleanNode_Term - // *FTSBooleanNode_SubExpression - Node isFTSBooleanNode_Node `protobuf_oneof:"node"` - XXX_unrecognized []byte `json:"-"` + Occur FTSBooleanOccur `protobuf:"varint,1,opt,name=occur,enum=tipb.FTSBooleanOccur" json:"occur"` + Term *FTSBooleanTerm `protobuf:"bytes,3,opt,name=term" json:"term,omitempty"` + XXX_unrecognized []byte `json:"-"` } func (m *FTSBooleanNode) Reset() { *m = FTSBooleanNode{} } @@ -2539,29 +2473,6 @@ func (m *FTSBooleanNode) String() string { return proto.CompactTextSt func (*FTSBooleanNode) ProtoMessage() {} func (*FTSBooleanNode) Descriptor() ([]byte, []int) { return fileDescriptorExpression, []int{4} } -type isFTSBooleanNode_Node interface { - isFTSBooleanNode_Node() - MarshalTo([]byte) (int, error) - Size() int -} - -type FTSBooleanNode_Term struct { - Term *FTSBooleanTerm `protobuf:"bytes,3,opt,name=term,oneof"` -} -type FTSBooleanNode_SubExpression struct { - SubExpression *FTSBooleanQuery `protobuf:"bytes,4,opt,name=sub_expression,json=subExpression,oneof"` -} - -func (*FTSBooleanNode_Term) isFTSBooleanNode_Node() {} -func (*FTSBooleanNode_SubExpression) isFTSBooleanNode_Node() {} - -func (m *FTSBooleanNode) GetNode() isFTSBooleanNode_Node { - if m != nil { - return m.Node - } - return nil -} - func (m *FTSBooleanNode) GetOccur() FTSBooleanOccur { if m != nil { return m.Occur @@ -2569,101 +2480,13 @@ func (m *FTSBooleanNode) GetOccur() FTSBooleanOccur { return FTSBooleanOccur_FTSBooleanOccurInvalid } -func (m *FTSBooleanNode) GetModifier() FTSBooleanModifier { - if m != nil { - return m.Modifier - } - return FTSBooleanModifier_FTSBooleanModifierNone -} - func (m *FTSBooleanNode) GetTerm() *FTSBooleanTerm { - if x, ok := m.GetNode().(*FTSBooleanNode_Term); ok { - return x.Term - } - return nil -} - -func (m *FTSBooleanNode) GetSubExpression() *FTSBooleanQuery { - if x, ok := m.GetNode().(*FTSBooleanNode_SubExpression); ok { - return x.SubExpression - } - return nil -} - -// XXX_OneofFuncs is for the internal use of the proto package. -func (*FTSBooleanNode) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { - return _FTSBooleanNode_OneofMarshaler, _FTSBooleanNode_OneofUnmarshaler, _FTSBooleanNode_OneofSizer, []interface{}{ - (*FTSBooleanNode_Term)(nil), - (*FTSBooleanNode_SubExpression)(nil), - } -} - -func _FTSBooleanNode_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { - m := msg.(*FTSBooleanNode) - // node - switch x := m.Node.(type) { - case *FTSBooleanNode_Term: - _ = b.EncodeVarint(3<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.Term); err != nil { - return err - } - case *FTSBooleanNode_SubExpression: - _ = b.EncodeVarint(4<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.SubExpression); err != nil { - return err - } - case nil: - default: - return fmt.Errorf("FTSBooleanNode.Node has unexpected type %T", x) + if m != nil { + return m.Term } return nil } -func _FTSBooleanNode_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { - m := msg.(*FTSBooleanNode) - switch tag { - case 3: // node.term - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(FTSBooleanTerm) - err := b.DecodeMessage(msg) - m.Node = &FTSBooleanNode_Term{msg} - return true, err - case 4: // node.sub_expression - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(FTSBooleanQuery) - err := b.DecodeMessage(msg) - m.Node = &FTSBooleanNode_SubExpression{msg} - return true, err - default: - return false, nil - } -} - -func _FTSBooleanNode_OneofSizer(msg proto.Message) (n int) { - m := msg.(*FTSBooleanNode) - // node - switch x := m.Node.(type) { - case *FTSBooleanNode_Term: - s := proto.Size(x.Term) - n += proto.SizeVarint(3<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case *FTSBooleanNode_SubExpression: - s := proto.Size(x.SubExpression) - n += proto.SizeVarint(4<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case nil: - default: - panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) - } - return n -} - type Expr struct { Tp ExprType `protobuf:"varint,1,opt,name=tp,enum=tipb.ExprType" json:"tp"` Val []byte `protobuf:"bytes,2,opt,name=val" json:"val,omitempty"` @@ -2803,7 +2626,7 @@ func init() { proto.RegisterType((*FieldType)(nil), "tipb.FieldType") proto.RegisterType((*FTSBooleanTerm)(nil), "tipb.FTSBooleanTerm") proto.RegisterType((*FTSBooleanQuery)(nil), "tipb.FTSBooleanQuery") - proto.RegisterType((*FTSMatchExpressionMetadata)(nil), "tipb.FTSMatchExpressionMetadata") + proto.RegisterType((*FTSMatchBooleanMetadata)(nil), "tipb.FTSMatchBooleanMetadata") proto.RegisterType((*FTSBooleanNode)(nil), "tipb.FTSBooleanNode") proto.RegisterType((*Expr)(nil), "tipb.Expr") proto.RegisterType((*RpnExpr)(nil), "tipb.RpnExpr") @@ -2811,7 +2634,6 @@ func init() { proto.RegisterEnum("tipb.ExprType", ExprType_name, ExprType_value) proto.RegisterEnum("tipb.ScalarFuncSig", ScalarFuncSig_name, ScalarFuncSig_value) proto.RegisterEnum("tipb.FTSBooleanOccur", FTSBooleanOccur_name, FTSBooleanOccur_value) - proto.RegisterEnum("tipb.FTSBooleanModifier", FTSBooleanModifier_name, FTSBooleanModifier_value) proto.RegisterEnum("tipb.FTSBooleanTermType", FTSBooleanTermType_name, FTSBooleanTermType_value) proto.RegisterEnum("tipb.AggFunctionMode", AggFunctionMode_name, AggFunctionMode_value) } @@ -2900,9 +2722,6 @@ func (m *FTSBooleanTerm) MarshalTo(dAtA []byte) (int, error) { i++ i = encodeVarintExpression(dAtA, i, uint64(len(m.Text))) i += copy(dAtA[i:], m.Text) - dAtA[i] = 0x18 - i++ - i = encodeVarintExpression(dAtA, i, uint64(m.PhraseDistance)) if m.XXX_unrecognized != nil { i += copy(dAtA[i:], m.XXX_unrecognized) } @@ -2963,7 +2782,7 @@ func (m *FTSBooleanQuery) MarshalTo(dAtA []byte) (int, error) { return i, nil } -func (m *FTSMatchExpressionMetadata) Marshal() (dAtA []byte, err error) { +func (m *FTSMatchBooleanMetadata) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) n, err := m.MarshalTo(dAtA) @@ -2973,7 +2792,7 @@ func (m *FTSMatchExpressionMetadata) Marshal() (dAtA []byte, err error) { return dAtA[:n], nil } -func (m *FTSMatchExpressionMetadata) MarshalTo(dAtA []byte) (int, error) { +func (m *FTSMatchBooleanMetadata) MarshalTo(dAtA []byte) (int, error) { var i int _ = i var l int @@ -3015,50 +2834,22 @@ func (m *FTSBooleanNode) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x8 i++ i = encodeVarintExpression(dAtA, i, uint64(m.Occur)) - dAtA[i] = 0x10 - i++ - i = encodeVarintExpression(dAtA, i, uint64(m.Modifier)) - if m.Node != nil { - nn2, err := m.Node.MarshalTo(dAtA[i:]) - if err != nil { - return 0, err - } - i += nn2 - } - if m.XXX_unrecognized != nil { - i += copy(dAtA[i:], m.XXX_unrecognized) - } - return i, nil -} - -func (m *FTSBooleanNode_Term) MarshalTo(dAtA []byte) (int, error) { - i := 0 if m.Term != nil { dAtA[i] = 0x1a i++ i = encodeVarintExpression(dAtA, i, uint64(m.Term.Size())) - n3, err := m.Term.MarshalTo(dAtA[i:]) + n2, err := m.Term.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n3 + i += n2 } - return i, nil -} -func (m *FTSBooleanNode_SubExpression) MarshalTo(dAtA []byte) (int, error) { - i := 0 - if m.SubExpression != nil { - dAtA[i] = 0x22 - i++ - i = encodeVarintExpression(dAtA, i, uint64(m.SubExpression.Size())) - n4, err := m.SubExpression.MarshalTo(dAtA[i:]) - if err != nil { - return 0, err - } - i += n4 + if m.XXX_unrecognized != nil { + i += copy(dAtA[i:], m.XXX_unrecognized) } return i, nil } + func (m *Expr) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) @@ -3102,11 +2893,11 @@ func (m *Expr) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x2a i++ i = encodeVarintExpression(dAtA, i, uint64(m.FieldType.Size())) - n5, err := m.FieldType.MarshalTo(dAtA[i:]) + n3, err := m.FieldType.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n5 + i += n3 } if m.RpnArgsLen != nil { dAtA[i] = 0x30 @@ -3196,11 +2987,11 @@ func (m *ByItem) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0xa i++ i = encodeVarintExpression(dAtA, i, uint64(m.Expr.Size())) - n6, err := m.Expr.MarshalTo(dAtA[i:]) + n4, err := m.Expr.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n6 + i += n4 } dAtA[i] = 0x10 i++ @@ -3214,11 +3005,11 @@ func (m *ByItem) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x1a i++ i = encodeVarintExpression(dAtA, i, uint64(m.RpnExpr.Size())) - n7, err := m.RpnExpr.MarshalTo(dAtA[i:]) + n5, err := m.RpnExpr.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n7 + i += n5 } if m.XXX_unrecognized != nil { i += copy(dAtA[i:], m.XXX_unrecognized) @@ -3264,7 +3055,6 @@ func (m *FTSBooleanTerm) Size() (n int) { n += 1 + sovExpression(uint64(m.TermType)) l = len(m.Text) n += 1 + l + sovExpression(uint64(l)) - n += 1 + sovExpression(uint64(m.PhraseDistance)) if m.XXX_unrecognized != nil { n += len(m.XXX_unrecognized) } @@ -3292,7 +3082,7 @@ func (m *FTSBooleanQuery) Size() (n int) { return n } -func (m *FTSMatchExpressionMetadata) Size() (n int) { +func (m *FTSMatchBooleanMetadata) Size() (n int) { var l int _ = l n += 1 + sovExpression(uint64(m.Version)) @@ -3310,34 +3100,16 @@ func (m *FTSBooleanNode) Size() (n int) { var l int _ = l n += 1 + sovExpression(uint64(m.Occur)) - n += 1 + sovExpression(uint64(m.Modifier)) - if m.Node != nil { - n += m.Node.Size() - } - if m.XXX_unrecognized != nil { - n += len(m.XXX_unrecognized) - } - return n -} - -func (m *FTSBooleanNode_Term) Size() (n int) { - var l int - _ = l if m.Term != nil { l = m.Term.Size() n += 1 + l + sovExpression(uint64(l)) } - return n -} -func (m *FTSBooleanNode_SubExpression) Size() (n int) { - var l int - _ = l - if m.SubExpression != nil { - l = m.SubExpression.Size() - n += 1 + l + sovExpression(uint64(l)) + if m.XXX_unrecognized != nil { + n += len(m.XXX_unrecognized) } return n } + func (m *Expr) Size() (n int) { var l int _ = l @@ -3723,25 +3495,6 @@ func (m *FTSBooleanTerm) Unmarshal(dAtA []byte) error { } m.Text = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex - case 3: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field PhraseDistance", wireType) - } - m.PhraseDistance = 0 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowExpression - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - m.PhraseDistance |= (uint32(b) & 0x7F) << shift - if b < 0x80 { - break - } - } default: iNdEx = preIndex skippy, err := skipExpression(dAtA[iNdEx:]) @@ -3952,7 +3705,7 @@ func (m *FTSBooleanQuery) Unmarshal(dAtA []byte) error { } return nil } -func (m *FTSMatchExpressionMetadata) Unmarshal(dAtA []byte) error { +func (m *FTSMatchBooleanMetadata) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -3975,10 +3728,10 @@ func (m *FTSMatchExpressionMetadata) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: FTSMatchExpressionMetadata: wiretype end group for non-group") + return fmt.Errorf("proto: FTSMatchBooleanMetadata: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: FTSMatchExpressionMetadata: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: FTSMatchBooleanMetadata: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: @@ -4103,25 +3856,6 @@ func (m *FTSBooleanNode) Unmarshal(dAtA []byte) error { break } } - case 2: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field Modifier", wireType) - } - m.Modifier = 0 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowExpression - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - m.Modifier |= (FTSBooleanModifier(b) & 0x7F) << shift - if b < 0x80 { - break - } - } case 3: if wireType != 2 { return fmt.Errorf("proto: wrong wireType = %d for field Term", wireType) @@ -4148,43 +3882,12 @@ func (m *FTSBooleanNode) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - v := &FTSBooleanTerm{} - if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - m.Node = &FTSBooleanNode_Term{v} - iNdEx = postIndex - case 4: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field SubExpression", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowExpression - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= (int(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthExpression - } - postIndex := iNdEx + msglen - if postIndex > l { - return io.ErrUnexpectedEOF + if m.Term == nil { + m.Term = &FTSBooleanTerm{} } - v := &FTSBooleanQuery{} - if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if err := m.Term.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } - m.Node = &FTSBooleanNode_SubExpression{v} iNdEx = postIndex default: iNdEx = preIndex @@ -4810,404 +4513,395 @@ var ( func init() { proto.RegisterFile("expression.proto", fileDescriptorExpression) } var fileDescriptorExpression = []byte{ - // 6383 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x74, 0x7b, 0x77, 0x78, 0x1b, 0xc7, - 0x99, 0xbe, 0xa0, 0x62, 0x51, 0x2b, 0x89, 0x1a, 0xaf, 0x25, 0x11, 0x56, 0x6c, 0x89, 0x14, 0xf3, - 0xfb, 0x91, 0x51, 0x2e, 0x84, 0x4d, 0x3b, 0x64, 0x9e, 0x5c, 0x2e, 0x39, 0x8a, 0x4d, 0xc8, 0x91, - 0x14, 0x45, 0x80, 0x74, 0xee, 0x2f, 0x3d, 0x4b, 0xec, 0x10, 0xdc, 0x08, 0xd8, 0x85, 0x77, 0x07, - 0x14, 0xe9, 0x5c, 0xee, 0x71, 0xef, 0x3d, 0xb1, 0x2c, 0x77, 0x55, 0xd7, 0xf4, 0xee, 0x5e, 0x13, - 0x4b, 0x2e, 0x89, 0x1d, 0x57, 0xb9, 0x5b, 0xb6, 0xe3, 0x9e, 0xd8, 0x71, 0xaf, 0xb9, 0xe7, 0x7b, - 0x67, 0x66, 0xb1, 0x0b, 0xd2, 0x7f, 0x71, 0xe7, 0xfd, 0xda, 0x3b, 0xdf, 0x7c, 0x53, 0x76, 0x16, - 0x34, 0x18, 0x9f, 0x2c, 0xf9, 0x3c, 0x08, 0x1c, 0xcf, 0x6d, 0x29, 0xf9, 0x9e, 0xf0, 0xcc, 0xb9, - 0xc2, 0x29, 0x8d, 0xae, 0xa8, 0x2d, 0x72, 0x61, 0xd9, 0x96, 0xb0, 0x24, 0xba, 0x62, 0x69, 0xde, - 0xcb, 0x7b, 0x78, 0x4c, 0xd1, 0x93, 0x44, 0x57, 0xbf, 0x99, 0x30, 0x16, 0xf4, 0x38, 0xbc, 0x60, - 0x67, 0xa7, 0x4a, 0xdc, 0x5c, 0x6a, 0xcc, 0x16, 0xa5, 0x64, 0xa2, 0x3e, 0xd1, 0x3c, 0x6f, 0xed, - 0xdc, 0x3d, 0xcf, 0xac, 0x9a, 0x35, 0x34, 0x5b, 0x94, 0xcc, 0xa4, 0x31, 0x77, 0xac, 0x60, 0xe5, - 0x93, 0xb3, 0xeb, 0x13, 0xcd, 0x8b, 0x15, 0x0e, 0x44, 0x4a, 0xb8, 0x9b, 0x9c, 0x13, 0xb1, 0x00, - 0x62, 0xae, 0x34, 0xe6, 0xdb, 0x3c, 0xe7, 0x14, 0xad, 0x42, 0x72, 0x6e, 0x44, 0xa8, 0x41, 0x92, - 0xe7, 0xbc, 0x42, 0xc1, 0x12, 0x3c, 0x39, 0x2f, 0x2a, 0x57, 0x20, 0xe4, 0xe3, 0x96, 0x1f, 0x70, - 0x91, 0x3c, 0xa0, 0x3e, 0xd1, 0xbc, 0x20, 0x94, 0x4b, 0xd0, 0x5c, 0x61, 0xcc, 0xe3, 0x05, 0x5e, - 0x0c, 0x92, 0xf3, 0xeb, 0xe7, 0x84, 0x52, 0x09, 0x91, 0xcc, 0xf2, 0x7d, 0x6b, 0x2a, 0x59, 0x53, - 0x9f, 0x68, 0xae, 0xd1, 0x32, 0x40, 0xab, 0xb7, 0x24, 0x8c, 0xda, 0x9e, 0x6c, 0x66, 0xad, 0xe7, - 0x15, 0xb8, 0xe5, 0x66, 0xb9, 0x5f, 0x34, 0xff, 0xdd, 0x58, 0x20, 0xb8, 0x5f, 0xdc, 0x28, 0xa6, - 0x4a, 0x1c, 0x7d, 0xaf, 0x6d, 0x4d, 0xb6, 0x50, 0x0a, 0x5b, 0xe2, 0x8a, 0x94, 0x21, 0xe5, 0xac, - 0x46, 0xa8, 0x36, 0x65, 0x40, 0xf0, 0x49, 0x81, 0xdc, 0x68, 0x1a, 0x40, 0xcc, 0xaf, 0x19, 0x4b, - 0x4a, 0xe3, 0xbe, 0x15, 0xf0, 0x8d, 0xb6, 0x13, 0x08, 0xcb, 0xcd, 0x71, 0xa4, 0x49, 0x27, 0xb0, - 0x56, 0x0a, 0xbb, 0x94, 0x6c, 0xf5, 0xbe, 0xd9, 0xc6, 0x92, 0x4a, 0xbc, 0x0d, 0x65, 0xee, 0x4f, - 0x99, 0x6b, 0x8c, 0x79, 0xae, 0x67, 0xf3, 0x20, 0x99, 0xa8, 0x9f, 0xd3, 0xbc, 0xb0, 0x75, 0x69, - 0x35, 0xab, 0x01, 0xcf, 0xe6, 0x43, 0x52, 0x85, 0xc2, 0x1d, 0x4d, 0x46, 0x1b, 0x85, 0xb7, 0x89, - 0xbb, 0xce, 0x31, 0xdc, 0x8f, 0x71, 0xaa, 0x85, 0x30, 0xab, 0x65, 0x66, 0x8b, 0xc1, 0xdc, 0xbc, - 0x6f, 0x15, 0xa5, 0xfa, 0xc6, 0xc0, 0x39, 0xa6, 0x8a, 0x1e, 0xa4, 0xd0, 0xcf, 0x38, 0xc7, 0x70, - 0xf3, 0x5b, 0x46, 0xd2, 0x71, 0x5d, 0xcf, 0x1e, 0xdd, 0x38, 0x26, 0x36, 0x16, 0x1d, 0x37, 0x6a, - 0x37, 0x37, 0x62, 0xb7, 0x54, 0x6a, 0xf5, 0x88, 0x7e, 0xc7, 0xfd, 0x22, 0x6b, 0x6b, 0x32, 0x6a, - 0x3d, 0x6f, 0x46, 0x6b, 0x6b, 0xb2, 0x62, 0xfd, 0x1d, 0xe3, 0xe0, 0x8a, 0x35, 0x77, 0xad, 0xd1, - 0x02, 0xdf, 0x18, 0x08, 0xaf, 0xb4, 0xd9, 0xf3, 0x6d, 0x54, 0x87, 0x1e, 0xe3, 0xe5, 0xda, 0xbc, - 0x1b, 0x4a, 0x19, 0xa5, 0xb3, 0x7a, 0xd2, 0x58, 0xd1, 0x93, 0xcd, 0xf4, 0x5b, 0x22, 0x37, 0xde, - 0x1d, 0x4e, 0x96, 0x7e, 0x35, 0x3d, 0xa8, 0xd4, 0x26, 0xb8, 0x4f, 0x10, 0x46, 0x5f, 0x73, 0xd1, - 0xa0, 0xf9, 0x4d, 0x63, 0xf1, 0xa8, 0xcc, 0xf7, 0x46, 0x24, 0x11, 0x79, 0x5d, 0xd8, 0xba, 0xac, - 0x7a, 0x34, 0x30, 0x66, 0x43, 0x8b, 0x46, 0x23, 0xad, 0xd5, 0xef, 0xc4, 0xca, 0x8d, 0xc6, 0xcb, - 0x3c, 0xdc, 0x98, 0xe7, 0xe5, 0x72, 0x65, 0x5f, 0x95, 0xda, 0x34, 0x37, 0xeb, 0x49, 0xa8, 0x8b, - 0x16, 0x9a, 0xe6, 0x37, 0x8d, 0x9a, 0xa2, 0x67, 0x3b, 0x63, 0x8e, 0x1a, 0xd4, 0x19, 0x0a, 0xb4, - 0x5f, 0xc9, 0x75, 0x81, 0x6a, 0x7d, 0x73, 0x0d, 0x15, 0xa8, 0x5f, 0xc4, 0xe0, 0xce, 0x50, 0x42, - 0x54, 0xd8, 0xeb, 0x50, 0xb2, 0x7e, 0xd1, 0xfc, 0xb6, 0x51, 0x1b, 0x94, 0x47, 0x37, 0x56, 0x16, - 0x14, 0x0c, 0xed, 0x17, 0x75, 0x75, 0xdd, 0xac, 0xa1, 0xc5, 0x41, 0x79, 0xb4, 0x92, 0xd1, 0xb5, - 0x07, 0x18, 0x73, 0xa9, 0x18, 0x57, 0xbf, 0x35, 0xdb, 0x98, 0x4b, 0xb0, 0xf9, 0xe5, 0x70, 0x3d, - 0xa9, 0x6d, 0xad, 0x95, 0x4e, 0x08, 0x8f, 0xcc, 0x24, 0x5a, 0x5f, 0x98, 0x31, 0x67, 0xc2, 0x2a, - 0xa0, 0x67, 0x8b, 0x86, 0xe8, 0xd1, 0xfc, 0xff, 0x46, 0x4d, 0x6e, 0xdc, 0x29, 0xd8, 0x3e, 0xd6, - 0x16, 0xaa, 0x7d, 0xa3, 0x62, 0x3d, 0x14, 0xca, 0xcc, 0xaf, 0x1a, 0x73, 0x02, 0x27, 0x0f, 0x96, - 0xb5, 0xad, 0x07, 0x49, 0x95, 0x4c, 0xce, 0x2a, 0x58, 0x7e, 0x4f, 0xd9, 0xcd, 0x65, 0x9c, 0xbc, - 0x8a, 0x42, 0x5a, 0x66, 0x8b, 0x61, 0x8c, 0xd1, 0x4a, 0x27, 0x27, 0xfa, 0x3c, 0xf4, 0x6c, 0x89, - 0xea, 0x99, 0x5e, 0x01, 0x87, 0x16, 0x8c, 0x85, 0x8b, 0x61, 0xbd, 0xb1, 0xc8, 0x2f, 0xb9, 0x1b, - 0x2d, 0x3f, 0x1f, 0x6c, 0xa4, 0x45, 0x8e, 0x2a, 0x6d, 0xf1, 0x90, 0xe1, 0x97, 0xdc, 0x0e, 0x3f, - 0x1f, 0xf4, 0x71, 0xd7, 0x6c, 0x32, 0x16, 0x8d, 0x5b, 0x01, 0xe6, 0xb7, 0xe3, 0xe6, 0x44, 0x72, - 0x7e, 0xa4, 0x16, 0x17, 0x8e, 0x5b, 0x41, 0x97, 0x12, 0x98, 0x4d, 0x46, 0x8d, 0xe7, 0xdb, 0xdc, - 0xdf, 0x38, 0x4a, 0x8b, 0x12, 0xf5, 0x67, 0x91, 0x0c, 0xbc, 0x76, 0x2a, 0x2d, 0x78, 0x71, 0x68, - 0x3e, 0xa4, 0x6b, 0xa7, 0xcc, 0x76, 0x63, 0xa1, 0x95, 0xcf, 0x13, 0xf9, 0x7e, 0xcf, 0xe6, 0xc9, - 0x05, 0xd1, 0x12, 0xe9, 0x90, 0x02, 0x41, 0xb5, 0x4b, 0x13, 0x3f, 0xaa, 0xb9, 0xfa, 0xab, 0xc6, - 0xfc, 0xa1, 0x92, 0x8b, 0xa4, 0xd7, 0x1b, 0xf3, 0x68, 0x04, 0xf5, 0xaa, 0x11, 0xcd, 0x9c, 0x14, - 0xac, 0x2e, 0x18, 0x07, 0xc8, 0xc0, 0xe6, 0x4a, 0x63, 0x2e, 0x41, 0x18, 0xa2, 0xb8, 0x2a, 0x70, - 0x5a, 0xde, 0x6c, 0x1e, 0xe4, 0x30, 0x36, 0xba, 0x67, 0x40, 0xcc, 0x66, 0xa3, 0x86, 0xb2, 0x03, - 0x6b, 0x59, 0x5b, 0x8b, 0xa5, 0xb5, 0xa2, 0x31, 0x34, 0xdf, 0x97, 0x0f, 0x6b, 0x5e, 0x9c, 0x67, - 0xd4, 0xe8, 0x51, 0x37, 0x6b, 0x8c, 0xb9, 0x03, 0xe5, 0x42, 0x81, 0xcd, 0x32, 0x17, 0x18, 0xf3, - 0xd2, 0xae, 0x68, 0x3b, 0x92, 0x25, 0x4c, 0xc3, 0x38, 0x60, 0xd8, 0xc1, 0xf3, 0x6c, 0x73, 0xa1, - 0x31, 0xbf, 0xa7, 0xe0, 0x59, 0xe2, 0x88, 0x56, 0x36, 0x27, 0x6c, 0xb4, 0x1d, 0xc9, 0xe6, 0x92, - 0x56, 0x46, 0xf8, 0x8e, 0x9b, 0x67, 0xf3, 0xc8, 0x78, 0xed, 0x94, 0xe0, 0x01, 0x3b, 0xc0, 0x5c, - 0x64, 0xd4, 0xf4, 0x4f, 0x05, 0x47, 0x17, 0xd6, 0x3a, 0x82, 0x71, 0x93, 0x19, 0x8b, 0xd0, 0xea, - 0x92, 0xfb, 0x0c, 0x1b, 0x33, 0x0f, 0x34, 0x16, 0x4b, 0xa4, 0xec, 0x5b, 0x94, 0x3b, 0x96, 0x37, - 0x17, 0x1b, 0x0b, 0x00, 0x75, 0xbb, 0xe5, 0x22, 0x1b, 0x0f, 0x3d, 0xac, 0xe3, 0x93, 0xcc, 0x09, - 0x5b, 0x19, 0x2e, 0xd8, 0xf7, 0x43, 0xd5, 0xac, 0x53, 0xe4, 0x6c, 0x53, 0xd8, 0xfc, 0x6e, 0xe0, - 0xb9, 0xac, 0x60, 0x2e, 0x33, 0x0e, 0xcc, 0x3a, 0x5d, 0x6b, 0x47, 0x78, 0x4e, 0x78, 0xbe, 0xa6, - 0x3d, 0x65, 0xd6, 0x1a, 0x0b, 0x46, 0xac, 0x42, 0x99, 0xf7, 0x39, 0x81, 0x60, 0x17, 0x26, 0xa8, - 0xdd, 0xe9, 0x15, 0xca, 0x45, 0x77, 0x88, 0x8f, 0xb1, 0xbd, 0xd4, 0xdf, 0x79, 0x9d, 0x5e, 0xd9, - 0x15, 0xec, 0xfa, 0x3a, 0xb3, 0xc6, 0x98, 0x93, 0x29, 0x17, 0xd9, 0x0d, 0x78, 0xea, 0x98, 0xc8, - 0xb3, 0x1b, 0xf1, 0xd4, 0xef, 0xb8, 0xec, 0x26, 0xf9, 0x64, 0x4d, 0xb2, 0x9b, 0xeb, 0xc8, 0xa6, - 0xc7, 0xf1, 0x03, 0xc1, 0x6e, 0xa9, 0x33, 0x99, 0xb1, 0xb0, 0xd7, 0xf7, 0xca, 0xa5, 0x4e, 0xcf, - 0xcd, 0x59, 0x82, 0xdd, 0x5a, 0x67, 0x2e, 0x31, 0x8c, 0x8e, 0x7c, 0x7e, 0xe3, 0x5a, 0x47, 0x74, - 0xb8, 0x36, 0xbb, 0xad, 0x8e, 0x42, 0x2a, 0x60, 0xbd, 0xcf, 0x6e, 0x8f, 0x2a, 0x7c, 0xcf, 0xf3, - 0xd9, 0x1d, 0x32, 0xae, 0xb0, 0xd9, 0x9d, 0x75, 0xe6, 0x42, 0xca, 0xab, 0x6d, 0xf3, 0x09, 0x76, - 0x17, 0xec, 0x64, 0x63, 0xd0, 0x2b, 0xb1, 0x3f, 0xc2, 0x4e, 0xb6, 0x33, 0x56, 0xb1, 0xc4, 0xfe, - 0x04, 0xed, 0x11, 0xcb, 0x27, 0xe9, 0xdd, 0x75, 0xe6, 0x22, 0x63, 0xfe, 0x88, 0xe5, 0x43, 0xb4, - 0xa7, 0xce, 0x5c, 0x6c, 0xd4, 0x8c, 0x58, 0xbe, 0x43, 0xdb, 0x19, 0xdb, 0x5b, 0x67, 0x1e, 0x68, - 0x2c, 0xa2, 0x34, 0x75, 0xd0, 0xbe, 0xdb, 0x91, 0xcf, 0xb3, 0x7b, 0xea, 0x4c, 0xd3, 0x58, 0x4c, - 0xd0, 0xfa, 0xd1, 0xef, 0xf3, 0x9c, 0x20, 0xec, 0xde, 0x3a, 0x33, 0x69, 0x1c, 0xd4, 0x51, 0x2a, - 0xf9, 0xde, 0x24, 0x52, 0xa2, 0xa7, 0x0c, 0xbb, 0x0f, 0x5c, 0x86, 0xbc, 0xcd, 0x03, 0xe5, 0xe2, - 0x28, 0xf7, 0xd9, 0xf6, 0x55, 0xe6, 0x02, 0x63, 0xee, 0x90, 0xe5, 0x6e, 0x62, 0x3b, 0x56, 0x91, - 0xa8, 0x8b, 0xbb, 0x01, 0x47, 0x7b, 0xe7, 0x2a, 0x0a, 0xdd, 0x59, 0x2e, 0x62, 0x37, 0x65, 0xbb, - 0x56, 0x51, 0x82, 0x06, 0xb9, 0x9f, 0xe3, 0xae, 0x80, 0xc2, 0xee, 0x55, 0x94, 0xbe, 0x01, 0xe1, - 0x14, 0x38, 0xbb, 0x12, 0x7e, 0xfa, 0xb8, 0x65, 0xb3, 0xab, 0x56, 0x51, 0x16, 0xfa, 0xac, 0x3c, - 0xbb, 0x7a, 0x15, 0x75, 0x14, 0xf9, 0xc5, 0xc0, 0xb1, 0x6b, 0x10, 0xa2, 0xcf, 0xd2, 0xed, 0x6b, - 0x11, 0x62, 0x40, 0x8c, 0xcb, 0xe6, 0x75, 0xd0, 0xaf, 0xac, 0x34, 0xec, 0xdc, 0x81, 0x35, 0xa7, - 0xe7, 0x8c, 0xc5, 0xb1, 0xb5, 0xc7, 0x5c, 0x62, 0x2c, 0x1c, 0x76, 0x83, 0x12, 0xcf, 0xd1, 0x4a, - 0x6c, 0xb3, 0x59, 0x54, 0x9c, 0x9d, 0x56, 0x20, 0xd2, 0xae, 0xe8, 0x08, 0xd2, 0xae, 0x60, 0x09, - 0x2a, 0xce, 0x10, 0x19, 0xe2, 0x56, 0x81, 0xcd, 0x36, 0x0f, 0x32, 0x96, 0x84, 0x90, 0xaa, 0xf7, - 0x39, 0xe6, 0x52, 0x83, 0x85, 0xa0, 0x2e, 0xed, 0xb9, 0x31, 0x6b, 0x14, 0xe8, 0x3c, 0xaa, 0xc8, - 0x8a, 0xa2, 0xae, 0xf8, 0x03, 0x62, 0x9a, 0xa8, 0xdd, 0xf9, 0x1a, 0xa2, 0xa8, 0x92, 0x8d, 0x61, - 0x9a, 0x46, 0x6d, 0x05, 0x02, 0x9d, 0x85, 0x3a, 0xb2, 0xc4, 0x14, 0x9f, 0x45, 0x3a, 0x8c, 0x44, - 0x35, 0xa1, 0xc5, 0x71, 0x07, 0x60, 0x54, 0x6b, 0x2e, 0x37, 0xcc, 0x88, 0xaa, 0xa6, 0xb4, 0x24, - 0xae, 0x0b, 0x4e, 0x4c, 0x07, 0x53, 0x0e, 0x25, 0xad, 0xa5, 0x3a, 0x58, 0x88, 0x82, 0xd9, 0x32, - 0xb3, 0xce, 0x38, 0x28, 0x06, 0x2b, 0x72, 0xcb, 0xcd, 0xa4, 0xb1, 0x34, 0x26, 0xd0, 0xfc, 0xea, - 0xa6, 0x79, 0x02, 0xc5, 0xa4, 0x79, 0xb0, 0xb1, 0x2c, 0x6e, 0xa0, 0x59, 0x1e, 0x3c, 0xcd, 0x02, - 0x44, 0x57, 0xe8, 0x41, 0x92, 0x21, 0x25, 0xcf, 0x95, 0x9a, 0xbd, 0x06, 0x41, 0x73, 0x95, 0xee, - 0xbf, 0x46, 0x15, 0xcb, 0x7a, 0x4d, 0x5f, 0xe3, 0x9a, 0x64, 0x43, 0xb5, 0x1b, 0x70, 0x5c, 0xad, - 0x3b, 0x15, 0xaa, 0x6b, 0x8a, 0x8d, 0xd5, 0xfa, 0x60, 0xf8, 0x65, 0x3d, 0xbc, 0x64, 0x2d, 0xf9, - 0x35, 0xeb, 0x8c, 0x4b, 0x08, 0xec, 0xbe, 0xa2, 0x8d, 0x25, 0xa6, 0xb8, 0xad, 0xd1, 0xbd, 0x96, - 0xa8, 0x66, 0xf6, 0xd5, 0xb8, 0x03, 0xf0, 0xfa, 0x37, 0xdd, 0x3d, 0xa5, 0xaa, 0x59, 0x7d, 0x2d, - 0xae, 0x0b, 0x4e, 0x2d, 0x61, 0x32, 0x95, 0x96, 0xe4, 0xd5, 0xaa, 0x5d, 0x54, 0x60, 0x70, 0x3b, - 0x22, 0x1c, 0xc7, 0x10, 0x57, 0xfc, 0x8e, 0x0c, 0x07, 0x2c, 0x94, 0x68, 0x8e, 0x5f, 0x9f, 0xee, - 0x0c, 0x3c, 0xdb, 0xcc, 0x15, 0xc6, 0xf2, 0x2a, 0x13, 0xcd, 0xb5, 0x7d, 0xba, 0x0d, 0xf8, 0x7e, - 0x43, 0xe7, 0x10, 0xab, 0x18, 0xb8, 0x7e, 0x4b, 0x77, 0x4b, 0x42, 0xe0, 0xf9, 0x1f, 0x3a, 0x87, - 0x12, 0x53, 0x1c, 0xbf, 0xad, 0x3b, 0x2b, 0x51, 0xcd, 0xef, 0x3b, 0x71, 0x07, 0xe0, 0xf6, 0x9f, - 0x3a, 0xbe, 0x52, 0xd5, 0xbc, 0x3a, 0xe2, 0xba, 0xe0, 0xb4, 0x96, 0x96, 0xb6, 0x4e, 0xcf, 0x2a, - 0xf0, 0x20, 0xc7, 0x89, 0xd1, 0xab, 0xf5, 0xb4, 0xce, 0x6a, 0x04, 0x84, 0x5e, 0xab, 0x37, 0x97, - 0x1a, 0x4b, 0x34, 0xa4, 0x23, 0xbf, 0x5e, 0x6f, 0x1e, 0x64, 0xd4, 0x6a, 0x54, 0xb1, 0x7c, 0x23, - 0x66, 0x0d, 0x36, 0x6f, 0xd6, 0x9b, 0xcb, 0x0c, 0x16, 0x5a, 0x6b, 0x32, 0x7f, 0x8f, 0x69, 0x82, - 0xcb, 0x3f, 0xea, 0x69, 0x1b, 0xee, 0xcb, 0x12, 0x0d, 0x9b, 0x76, 0xe7, 0xbe, 0x2c, 0xe2, 0x73, - 0xda, 0x25, 0xfb, 0xb2, 0x95, 0x1d, 0x78, 0x91, 0x51, 0xd3, 0x97, 0x55, 0x11, 0xf3, 0x52, 0x11, - 0xa1, 0xc6, 0xcd, 0x5a, 0xc3, 0xe8, 0xcb, 0x86, 0x31, 0x1c, 0x29, 0x83, 0xf3, 0xef, 0xc3, 0x77, - 0x37, 0xf9, 0x76, 0x01, 0x77, 0xc3, 0xb7, 0x07, 0xdf, 0xdd, 0xda, 0x77, 0x09, 0xbe, 0xbb, 0x95, - 0xef, 0xa3, 0xa5, 0x22, 0x7c, 0xfb, 0xf0, 0xdd, 0x1d, 0xfa, 0x0e, 0xa4, 0x0c, 0xbe, 0x05, 0xf9, - 0xee, 0x05, 0xef, 0x49, 0x82, 0x7b, 0x25, 0xef, 0x29, 0xf2, 0xdd, 0x1b, 0xf2, 0x3e, 0x86, 0x7c, - 0xf7, 0x6a, 0xde, 0x3f, 0x90, 0x8a, 0xf0, 0xfd, 0x3f, 0xe4, 0xbb, 0xb7, 0xc2, 0xfb, 0x87, 0x52, - 0x06, 0xdf, 0xff, 0x2b, 0x37, 0x67, 0x6e, 0x09, 0x8e, 0xe5, 0x96, 0x7d, 0x80, 0xc4, 0x69, 0x04, - 0x81, 0x3e, 0xc4, 0x00, 0x69, 0x48, 0xc7, 0xfb, 0x08, 0x03, 0xa4, 0x51, 0x15, 0xf6, 0xe3, 0x98, - 0x35, 0xa2, 0x7f, 0x52, 0x4f, 0x5b, 0x51, 0x1f, 0x97, 0xcb, 0x39, 0xfb, 0xb4, 0x1e, 0x3b, 0x15, - 0x57, 0x4b, 0x29, 0xfb, 0x0c, 0x16, 0x68, 0x6b, 0xcf, 0x9f, 0xd7, 0x13, 0x29, 0x40, 0xca, 0xed, - 0xbf, 0x2a, 0x46, 0xf0, 0x79, 0x6c, 0x03, 0x69, 0xa4, 0x5d, 0xc1, 0xfd, 0x09, 0xab, 0x40, 0x6e, - 0x8f, 0x6b, 0x20, 0x37, 0x1a, 0x81, 0xe7, 0xe3, 0x1b, 0x68, 0x17, 0xed, 0xc5, 0x98, 0x1c, 0x9f, - 0xa0, 0x83, 0x40, 0xaf, 0x1c, 0x94, 0x13, 0x70, 0xc2, 0xe9, 0x0d, 0x47, 0xe5, 0xc4, 0x04, 0x31, - 0xec, 0xd5, 0xc3, 0x72, 0x92, 0xd2, 0x45, 0xa4, 0x93, 0x13, 0xb4, 0x73, 0xf6, 0x56, 0x06, 0xe6, - 0x14, 0x25, 0x45, 0xf6, 0x4e, 0xc5, 0xd9, 0xa8, 0x7b, 0x03, 0x85, 0x38, 0x13, 0x82, 0xee, 0x0d, - 0x08, 0x71, 0x16, 0x42, 0x74, 0x6f, 0xd0, 0x21, 0xce, 0x46, 0x88, 0xee, 0x0d, 0x2a, 0xc4, 0x39, - 0x4a, 0x17, 0x21, 0xce, 0x45, 0x88, 0xee, 0x0d, 0x61, 0x88, 0xf3, 0x94, 0x14, 0x21, 0xce, 0x47, - 0x88, 0x01, 0xf4, 0x62, 0x0b, 0x04, 0x03, 0xb2, 0x17, 0xf2, 0x9c, 0x36, 0x10, 0xf6, 0x62, 0x2b, - 0x42, 0x0c, 0xe8, 0x5e, 0x5c, 0xa4, 0x74, 0x11, 0xe2, 0x62, 0x84, 0x18, 0xa8, 0xf4, 0xe2, 0x12, - 0x25, 0x45, 0x88, 0x4b, 0xa5, 0xa7, 0x72, 0xa1, 0x20, 0x7b, 0xb2, 0x4d, 0x6a, 0xa3, 0x8d, 0x50, - 0xdb, 0x13, 0x74, 0x12, 0x92, 0x80, 0x0e, 0xb7, 0x83, 0x0e, 0x03, 0x8b, 0x24, 0xa6, 0x42, 0xee, - 0x8c, 0xd8, 0x21, 0xec, 0xae, 0x04, 0x95, 0x88, 0xb2, 0xd3, 0xa1, 0x77, 0x47, 0xb4, 0x10, 0xfe, - 0x4a, 0x10, 0x1f, 0x2c, 0x94, 0xe5, 0xfa, 0xb4, 0x27, 0x81, 0xe3, 0x50, 0xa1, 0x1c, 0x2e, 0x42, - 0x7b, 0x13, 0x74, 0x70, 0x23, 0x84, 0xd8, 0xdd, 0x0b, 0xb6, 0xfd, 0x8e, 0xab, 0xf4, 0xef, 0x03, - 0x11, 0xb4, 0xb5, 0xc1, 0xfd, 0xf0, 0x08, 0x88, 0x2c, 0xfe, 0x22, 0x35, 0xca, 0x05, 0xe1, 0x94, - 0x0a, 0x53, 0x30, 0x7a, 0x20, 0x41, 0x25, 0xad, 0x21, 0x6d, 0xf7, 0x20, 0x42, 0x6b, 0x94, 0x4c, - 0xff, 0x0a, 0xb2, 0x5d, 0xce, 0x84, 0x63, 0xcb, 0xc5, 0xea, 0x21, 0xa4, 0x42, 0x02, 0xda, 0xec, + // 6237 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x74, 0x7b, 0x67, 0x78, 0x1b, 0xc7, + 0xb9, 0xae, 0xa1, 0x62, 0x49, 0x2b, 0x89, 0x1a, 0xaf, 0x25, 0x11, 0x56, 0x1c, 0x91, 0x14, 0x73, + 0x2f, 0x19, 0xe5, 0x86, 0x90, 0x69, 0x87, 0xcc, 0x73, 0x6f, 0xee, 0xc9, 0x81, 0xd8, 0x8c, 0x1c, + 0x92, 0xa2, 0x08, 0x90, 0xce, 0xf9, 0xa5, 0x67, 0x89, 0x1d, 0x82, 0x1b, 0x01, 0xbb, 0xf0, 0xee, + 0x80, 0x22, 0x9d, 0x93, 0xf3, 0xb8, 0xf7, 0x9e, 0xd8, 0x96, 0xbb, 0xaa, 0x6b, 0x7a, 0x77, 0xaf, + 0x89, 0x25, 0x97, 0xc4, 0x89, 0xab, 0xdc, 0x2d, 0xdb, 0x71, 0x4f, 0xec, 0xb8, 0xd7, 0x9c, 0xe7, + 0x7b, 0x67, 0x66, 0xb1, 0x0b, 0xd2, 0xbf, 0xb8, 0xf3, 0x7e, 0xed, 0x9d, 0x6f, 0xbe, 0x99, 0x9d, + 0x99, 0x05, 0x0d, 0xc6, 0xa7, 0xca, 0x3e, 0x0f, 0x02, 0xc7, 0x73, 0xdb, 0xca, 0xbe, 0x27, 0x3c, + 0x73, 0x9e, 0x70, 0xca, 0x63, 0xab, 0xea, 0x4a, 0x5c, 0x58, 0xb6, 0x25, 0x2c, 0x89, 0xae, 0x5a, + 0x5e, 0xf0, 0x0a, 0x1e, 0x1e, 0x53, 0xf4, 0x24, 0xd1, 0x35, 0x6f, 0x26, 0x8c, 0x45, 0xbd, 0x0e, + 0x2f, 0xda, 0xb9, 0xe9, 0x32, 0x37, 0x97, 0x1b, 0x73, 0x44, 0x39, 0x99, 0x68, 0x4c, 0xb4, 0xce, + 0x5f, 0x3f, 0x6f, 0xcf, 0x33, 0x0d, 0x07, 0x0c, 0xcf, 0x11, 0x65, 0x33, 0x69, 0xcc, 0x1b, 0x2f, + 0x5a, 0x85, 0xe4, 0x9c, 0xc6, 0x44, 0xeb, 0x52, 0x85, 0x03, 0x91, 0x12, 0xee, 0x26, 0xe7, 0x46, + 0x2c, 0x80, 0x98, 0xab, 0x8d, 0x05, 0x36, 0xcf, 0x3b, 0x25, 0xab, 0x98, 0x9c, 0x17, 0x11, 0x6a, + 0x90, 0xe4, 0x79, 0xaf, 0x58, 0xb4, 0x04, 0x4f, 0xce, 0x8f, 0xca, 0x15, 0x08, 0xf9, 0x84, 0xe5, + 0x07, 0x5c, 0x24, 0x0f, 0x6c, 0x4c, 0xb4, 0x2e, 0x0a, 0xe5, 0x12, 0x34, 0x57, 0x19, 0xf3, 0x79, + 0x91, 0x97, 0x82, 0xe4, 0x82, 0xc6, 0xb9, 0xa1, 0x54, 0x42, 0x24, 0xb3, 0x7c, 0xdf, 0x9a, 0x4e, + 0x2e, 0x6c, 0x4c, 0xb4, 0x2e, 0xd4, 0x32, 0x40, 0x6b, 0x0a, 0x46, 0x5d, 0x6f, 0x2e, 0xbb, 0xde, + 0xf3, 0x8a, 0xdc, 0x72, 0x73, 0xdc, 0x2f, 0x99, 0xff, 0xcf, 0x58, 0x24, 0xb8, 0x5f, 0xda, 0x24, + 0xa6, 0xcb, 0x1c, 0x5d, 0xaf, 0x6b, 0x4f, 0xb6, 0x51, 0x06, 0xdb, 0xe2, 0x8a, 0x94, 0x20, 0xe5, + 0x6b, 0xa1, 0x50, 0x6d, 0x4a, 0x80, 0xe0, 0x53, 0x02, 0xa9, 0xd1, 0x2c, 0x80, 0xac, 0xd9, 0x37, + 0xc7, 0x58, 0x56, 0x75, 0xb0, 0xb1, 0xc2, 0xfd, 0x69, 0x73, 0xad, 0x31, 0xdf, 0xf5, 0x6c, 0x1e, + 0x24, 0x13, 0x8d, 0x73, 0x5b, 0x17, 0xb7, 0x2f, 0xaf, 0x0d, 0x33, 0xe8, 0xd9, 0x7c, 0x58, 0xaa, + 0x98, 0x5f, 0x37, 0x96, 0x1d, 0x4d, 0x46, 0x9b, 0x84, 0xb7, 0x99, 0xbb, 0xce, 0x31, 0xdc, 0x8f, + 0x05, 0xa9, 0x83, 0x30, 0xa7, 0x65, 0x66, 0x9b, 0xc1, 0xdc, 0x82, 0x6f, 0x95, 0xa4, 0xfa, 0xa6, + 0xc0, 0x39, 0x86, 0x63, 0x54, 0xf4, 0x78, 0xd5, 0x41, 0x0a, 0xfd, 0xac, 0x73, 0x0c, 0x37, 0xbf, + 0x65, 0x24, 0x1d, 0xd7, 0xf5, 0xec, 0xb1, 0x4d, 0xe3, 0x62, 0x53, 0xc9, 0x71, 0xa3, 0x76, 0xf3, + 0x22, 0x76, 0xcb, 0xa5, 0x56, 0xaf, 0x18, 0x70, 0xdc, 0x2f, 0xb2, 0xb6, 0xa6, 0xa2, 0xd6, 0xf3, + 0x67, 0xb5, 0xb6, 0xa6, 0xaa, 0xd6, 0xdf, 0x36, 0x0e, 0xa9, 0x5a, 0x73, 0xd7, 0x1a, 0x2b, 0xf2, + 0x4d, 0x81, 0xf0, 0xca, 0x5b, 0x3c, 0xdf, 0xc6, 0x68, 0xeb, 0x31, 0x5b, 0xa9, 0xcd, 0x7b, 0xa0, + 0x94, 0x55, 0x3a, 0x6b, 0x2a, 0x46, 0x7d, 0x6f, 0x2e, 0x3b, 0x60, 0x89, 0xfc, 0x84, 0xca, 0xdc, + 0x80, 0xaa, 0x75, 0xaa, 0x9b, 0x49, 0xee, 0xd3, 0x64, 0xc0, 0x58, 0x6a, 0x22, 0x1a, 0x34, 0xff, + 0xaf, 0xb1, 0x74, 0x4c, 0x9a, 0x6c, 0x42, 0x06, 0x91, 0xd4, 0xc5, 0xed, 0x2b, 0x6a, 0x87, 0x02, + 0x03, 0x36, 0xbc, 0x64, 0x2c, 0xd2, 0x5a, 0x53, 0x8a, 0xd6, 0x0e, 0x8d, 0x95, 0x79, 0x98, 0x31, + 0xdf, 0xcb, 0xe7, 0x2b, 0xbe, 0xaa, 0x9b, 0x19, 0x5e, 0x36, 0x90, 0x50, 0x17, 0x20, 0x34, 0xcd, + 0x56, 0xaa, 0x18, 0xbf, 0x84, 0xc1, 0x99, 0xa5, 0x04, 0xa8, 0xd2, 0x86, 0xa1, 0xb1, 0xe6, 0xad, + 0x39, 0xc6, 0xbc, 0x9e, 0xa9, 0xb2, 0x6f, 0x7e, 0x25, 0x9c, 0x95, 0x75, 0xed, 0x75, 0xd2, 0x80, + 0xf0, 0x48, 0x41, 0xd2, 0x2c, 0x65, 0xc6, 0xdc, 0x49, 0xab, 0x88, 0xfe, 0x2c, 0x19, 0xa6, 0x47, + 0xf3, 0x7f, 0x1b, 0x0b, 0xf3, 0x13, 0x4e, 0xd1, 0xf6, 0x31, 0x43, 0xa9, 0xe2, 0x8c, 0xaa, 0xf5, + 0x70, 0x28, 0x33, 0xbf, 0x66, 0xcc, 0x0d, 0x9c, 0x02, 0x86, 0xbd, 0xae, 0xfd, 0x60, 0xa9, 0x92, + 0xcd, 0x5b, 0x45, 0xcb, 0xef, 0xad, 0xb8, 0xf9, 0xac, 0x53, 0x50, 0x51, 0x48, 0xcb, 0x6c, 0x33, + 0x8c, 0x71, 0x5a, 0x2f, 0xe4, 0x7c, 0x99, 0x8f, 0x5e, 0x2c, 0x53, 0xbd, 0xd0, 0xeb, 0xc8, 0xf0, + 0xa2, 0xf1, 0x70, 0x49, 0x69, 0x34, 0x96, 0xf8, 0x65, 0x77, 0x93, 0xe5, 0x17, 0x82, 0x4d, 0xb4, + 0x54, 0xd0, 0xf8, 0x2e, 0x1d, 0x36, 0xfc, 0xb2, 0x9b, 0xf6, 0x0b, 0x41, 0x3f, 0x77, 0xcd, 0x16, + 0x63, 0xc9, 0x84, 0x15, 0x6c, 0xb2, 0x9d, 0x40, 0x38, 0x6e, 0x5e, 0x24, 0x17, 0x44, 0x2a, 0x60, + 0xf1, 0x84, 0x15, 0x74, 0x2b, 0x81, 0xd9, 0x62, 0x2c, 0xf4, 0x7c, 0x9b, 0xfb, 0x9b, 0xc6, 0x68, + 0x6a, 0x53, 0x7f, 0x96, 0xc8, 0xc0, 0xeb, 0xa7, 0x33, 0x82, 0x97, 0x86, 0x17, 0x40, 0xba, 0x7e, + 0xda, 0xec, 0x34, 0x16, 0x5b, 0x85, 0x02, 0x91, 0x1f, 0xf0, 0x6c, 0x9e, 0x5c, 0x14, 0x1d, 0x9c, + 0xb4, 0x14, 0x08, 0xc7, 0x73, 0x49, 0x38, 0x1c, 0xd5, 0x5c, 0xf3, 0x35, 0x63, 0xc1, 0x70, 0xd9, + 0x45, 0xd2, 0x1b, 0x8d, 0xf9, 0xb4, 0xb0, 0xea, 0xb9, 0x1a, 0xcd, 0x9c, 0x14, 0xac, 0x29, 0x1a, + 0x07, 0xca, 0xc0, 0xe6, 0x6a, 0x63, 0x1e, 0x41, 0x18, 0xa2, 0xb8, 0x2a, 0x70, 0x5a, 0x25, 0x6c, + 0x1e, 0xe4, 0x31, 0x36, 0xba, 0x67, 0x40, 0xcc, 0x56, 0x63, 0x21, 0x65, 0x07, 0xd6, 0xb2, 0x22, + 0x96, 0x4a, 0x6b, 0x45, 0x63, 0x78, 0x81, 0x2f, 0x1f, 0xd6, 0xbe, 0x38, 0xdf, 0x58, 0xa8, 0x47, + 0xdd, 0x5c, 0x68, 0xcc, 0x1b, 0xac, 0x14, 0x8b, 0xec, 0x00, 0x73, 0x91, 0x31, 0x3f, 0xe3, 0x8a, + 0x8e, 0x23, 0x58, 0xc2, 0x34, 0x8c, 0x03, 0x47, 0x1c, 0x3c, 0xcf, 0x31, 0x17, 0x1b, 0x0b, 0x7a, + 0x8b, 0x9e, 0x25, 0x0e, 0x6f, 0x67, 0x73, 0xc3, 0x46, 0xc7, 0x11, 0x6c, 0x1e, 0x69, 0x65, 0x85, + 0xef, 0xb8, 0x05, 0x36, 0x9f, 0x8c, 0xd7, 0x4f, 0x0b, 0x1e, 0xb0, 0x03, 0xcd, 0x25, 0xc6, 0xc2, + 0x81, 0xe9, 0xe0, 0xe8, 0xe2, 0x7a, 0x47, 0x30, 0x6e, 0x32, 0x63, 0x09, 0x5a, 0xdd, 0x72, 0xb5, + 0x66, 0xe3, 0xe6, 0x41, 0xc6, 0x52, 0x89, 0x54, 0x7c, 0x8b, 0x72, 0xc7, 0x0a, 0xe6, 0x52, 0x63, + 0x11, 0xa0, 0x1e, 0xb7, 0x52, 0x62, 0x13, 0xa1, 0x87, 0x23, 0xf9, 0x14, 0x73, 0xc2, 0x56, 0x96, + 0x0b, 0xf6, 0xbd, 0x50, 0x35, 0xe7, 0x94, 0x38, 0xdb, 0x1c, 0x36, 0xbf, 0x13, 0x78, 0x2e, 0x2b, + 0x9a, 0x2b, 0x8c, 0x83, 0x72, 0x4e, 0xf7, 0xfa, 0x51, 0x9e, 0x17, 0x9e, 0xaf, 0x69, 0x4f, 0x9b, + 0x75, 0xc6, 0xa2, 0x51, 0xab, 0x58, 0xe1, 0xfd, 0x4e, 0x20, 0xd8, 0x45, 0x09, 0x6a, 0x77, 0x79, + 0xc5, 0x4a, 0xc9, 0x1d, 0xe6, 0xe3, 0x6c, 0x2f, 0xf5, 0x77, 0x7e, 0x97, 0x57, 0x71, 0x05, 0xbb, + 0xa1, 0xde, 0x5c, 0x68, 0xcc, 0xcd, 0x56, 0x4a, 0xec, 0x46, 0x3c, 0xa5, 0x27, 0x0b, 0xec, 0x26, + 0x3c, 0x0d, 0x38, 0x2e, 0xbb, 0x59, 0x3e, 0x59, 0x53, 0xec, 0x96, 0x7a, 0xb2, 0xe9, 0x75, 0xfc, + 0x40, 0xb0, 0x5b, 0xeb, 0x4d, 0x66, 0x2c, 0xee, 0xf3, 0xbd, 0x4a, 0xb9, 0xcb, 0x73, 0xf3, 0x96, + 0x60, 0xb7, 0xd5, 0x9b, 0xcb, 0x0c, 0x23, 0x5d, 0x28, 0x6c, 0x5a, 0xef, 0x88, 0xb4, 0x6b, 0xb3, + 0xdb, 0xeb, 0x29, 0xa4, 0x02, 0x36, 0xf8, 0xec, 0x8e, 0xa8, 0xc2, 0x77, 0x3d, 0x9f, 0xdd, 0x29, + 0xe3, 0x0a, 0x9b, 0xdd, 0x55, 0x6f, 0x2e, 0xa6, 0xbc, 0xda, 0x36, 0x9f, 0x64, 0x77, 0xc3, 0x4e, + 0x36, 0x86, 0xbc, 0x32, 0xfb, 0x03, 0xec, 0x64, 0x3b, 0x6b, 0x95, 0xca, 0xec, 0x8f, 0xd0, 0x1e, + 0xb5, 0x7c, 0x92, 0xde, 0x53, 0x6f, 0x2e, 0x31, 0x16, 0x8c, 0x5a, 0x3e, 0x44, 0x7b, 0xea, 0xcd, + 0xa5, 0xc6, 0xc2, 0x51, 0xcb, 0x77, 0x2c, 0x37, 0xcf, 0xd9, 0xde, 0x7a, 0xf3, 0x20, 0x63, 0x09, + 0xa5, 0x29, 0x4d, 0x6f, 0xaf, 0x74, 0xa1, 0xc0, 0xee, 0xad, 0x37, 0x4d, 0x63, 0x29, 0x41, 0x1b, + 0xc6, 0xbe, 0xc7, 0xf3, 0x82, 0xb0, 0xfb, 0xea, 0xcd, 0xa4, 0x71, 0x70, 0xba, 0x5c, 0xf6, 0xbd, + 0x29, 0xa4, 0x44, 0x4f, 0x19, 0x76, 0x3f, 0xb8, 0x0c, 0x7b, 0x5b, 0x06, 0x2b, 0xa5, 0x31, 0xee, + 0xb3, 0xed, 0x0d, 0xe6, 0x22, 0x63, 0xde, 0xb0, 0xe5, 0x6e, 0x66, 0x3b, 0x1a, 0x48, 0xd4, 0xcd, + 0xdd, 0x80, 0xa3, 0xbd, 0xb3, 0x81, 0x42, 0x77, 0x55, 0x4a, 0x9c, 0xac, 0xd9, 0xae, 0x06, 0x4a, + 0xd0, 0x10, 0xf7, 0xf3, 0xdc, 0x15, 0x50, 0xd8, 0xdd, 0x40, 0xe9, 0x1b, 0x14, 0x4e, 0x91, 0xb3, + 0xab, 0xe0, 0xa7, 0x9f, 0x5b, 0x36, 0xbb, 0xba, 0x81, 0xb2, 0xd0, 0x6f, 0x15, 0xd8, 0x35, 0x0d, + 0xd4, 0x51, 0xe4, 0x17, 0x03, 0xc7, 0xae, 0x45, 0x88, 0x7e, 0x4b, 0xb7, 0xaf, 0x43, 0x88, 0x41, + 0x31, 0x21, 0x9b, 0xd7, 0x43, 0xbf, 0xba, 0xd2, 0xb0, 0x73, 0x07, 0xd7, 0xfe, 0x7a, 0xcc, 0x58, + 0x1a, 0x5b, 0x7b, 0xcc, 0x65, 0xc6, 0xe2, 0x11, 0x37, 0x28, 0xf3, 0xbc, 0x33, 0xee, 0x70, 0x9b, + 0x1d, 0x40, 0xc5, 0xd9, 0x65, 0x05, 0x22, 0xe3, 0x8a, 0x74, 0x90, 0x71, 0x05, 0x4b, 0x50, 0x71, + 0x86, 0xc8, 0x30, 0xb7, 0x8a, 0x6c, 0x8e, 0x79, 0xb0, 0xb1, 0x2c, 0x84, 0x54, 0xbd, 0xcf, 0x35, + 0x97, 0x1b, 0x2c, 0x04, 0x75, 0x69, 0xcf, 0x8b, 0x59, 0xa3, 0x40, 0xe7, 0x53, 0x45, 0x56, 0x15, + 0x75, 0xc5, 0x1f, 0x18, 0xd3, 0x44, 0xed, 0x2e, 0xd0, 0x10, 0x45, 0x95, 0x6c, 0x0c, 0xd3, 0x34, + 0xea, 0xaa, 0x10, 0xe8, 0x2c, 0xd6, 0x91, 0x25, 0xa6, 0xf8, 0x2c, 0xd1, 0x61, 0x24, 0xaa, 0x09, + 0x2d, 0x8d, 0x3b, 0x00, 0xa3, 0x3a, 0x73, 0xa5, 0x61, 0x46, 0x54, 0x35, 0xa5, 0x65, 0x71, 0x5d, + 0x70, 0x62, 0x3a, 0x98, 0x72, 0x28, 0x69, 0x2d, 0xd7, 0xc1, 0x42, 0x14, 0xcc, 0x56, 0x98, 0xf5, + 0xc6, 0xc1, 0x31, 0x58, 0x91, 0x5b, 0x69, 0x26, 0x8d, 0xe5, 0x31, 0x81, 0xe6, 0x57, 0x3f, 0xc3, + 0x13, 0x28, 0x26, 0xcd, 0x43, 0x8c, 0x15, 0x71, 0x03, 0xcd, 0xf2, 0x90, 0x19, 0x16, 0x20, 0xba, + 0x4a, 0x0f, 0x92, 0x0c, 0x29, 0x79, 0xae, 0xd6, 0xec, 0x35, 0x08, 0x9a, 0x0d, 0xba, 0xff, 0x1a, + 0x55, 0x2c, 0x1b, 0x35, 0x7d, 0x8d, 0x6b, 0x92, 0x4d, 0xb5, 0x6e, 0xc0, 0x71, 0x8d, 0xee, 0x54, + 0xa8, 0xae, 0x29, 0x36, 0xd7, 0xea, 0x83, 0xe1, 0x57, 0xf4, 0xf0, 0x92, 0xb5, 0xe4, 0xd7, 0xaa, + 0x33, 0x2e, 0x21, 0xb0, 0xfb, 0xaa, 0x36, 0x96, 0x98, 0xe2, 0xb6, 0x56, 0xf7, 0x5a, 0xa2, 0x9a, + 0xd9, 0xd7, 0xe2, 0x0e, 0xc0, 0xeb, 0xff, 0xe8, 0xee, 0x29, 0x55, 0xcd, 0xea, 0xeb, 0x71, 0x5d, + 0x70, 0x6a, 0x0b, 0x93, 0xa9, 0xb4, 0x24, 0xaf, 0x76, 0xed, 0xa2, 0x0a, 0x83, 0xdb, 0xe1, 0xe1, + 0x38, 0x86, 0xb8, 0xe2, 0x77, 0x44, 0x38, 0x60, 0xa1, 0x44, 0x73, 0xfc, 0xc6, 0x4c, 0x67, 0xe0, + 0xd9, 0x61, 0xae, 0x32, 0x56, 0xd6, 0x98, 0x68, 0xae, 0x9d, 0x33, 0x6d, 0xc0, 0xf7, 0x9b, 0x3a, + 0x87, 0x58, 0xc5, 0xc0, 0xf5, 0x5b, 0xba, 0x5b, 0x12, 0x02, 0xcf, 0xff, 0xaf, 0x73, 0x28, 0x31, + 0xc5, 0xf1, 0xdf, 0x74, 0x67, 0x25, 0xaa, 0xf9, 0x7d, 0x3b, 0xee, 0x00, 0xdc, 0xfe, 0x5d, 0xc7, + 0x57, 0xaa, 0x9a, 0x57, 0x3a, 0xae, 0x0b, 0x4e, 0xeb, 0x69, 0x69, 0xeb, 0xf2, 0xac, 0x22, 0x0f, + 0xf2, 0x9c, 0x18, 0xbd, 0xda, 0x48, 0xeb, 0xac, 0x46, 0x40, 0xe8, 0xb5, 0x46, 0x73, 0xb9, 0xb1, + 0x4c, 0x43, 0x3a, 0xf2, 0xeb, 0x8d, 0xe6, 0xc1, 0x46, 0x9d, 0x46, 0x15, 0xcb, 0x37, 0x62, 0xd6, + 0x60, 0xf3, 0x66, 0xa3, 0xb9, 0xc2, 0x60, 0xa1, 0xb5, 0x26, 0xf3, 0xf7, 0x98, 0x26, 0xb8, 0xfc, + 0xa3, 0x91, 0x5e, 0xc3, 0xfd, 0x39, 0xa2, 0x61, 0xd3, 0xdb, 0xb9, 0x3f, 0x87, 0xf8, 0x9c, 0xde, + 0x92, 0xfd, 0xb9, 0xea, 0x1b, 0x78, 0x89, 0xb1, 0xb0, 0x3f, 0xa7, 0x22, 0x16, 0xa4, 0x22, 0x42, + 0x4d, 0x98, 0x75, 0x86, 0xd1, 0x9f, 0x0b, 0x63, 0x38, 0x52, 0x06, 0xe7, 0xdf, 0x83, 0xef, 0x1e, + 0xf2, 0xed, 0x02, 0xee, 0x81, 0x6f, 0x0f, 0xbe, 0x7b, 0xb4, 0xef, 0x32, 0x7c, 0xf7, 0x28, 0xdf, + 0x47, 0x4b, 0x45, 0xf8, 0xf6, 0xe1, 0xbb, 0x27, 0xf4, 0x1d, 0x48, 0x19, 0x7c, 0x0b, 0xf2, 0xdd, + 0x07, 0xde, 0x53, 0x04, 0xf7, 0x49, 0xde, 0xd3, 0xe4, 0xbb, 0x2f, 0xe4, 0x7d, 0x0c, 0xf9, 0xee, + 0xd3, 0xbc, 0xbf, 0x2f, 0x15, 0xe1, 0xfb, 0xbf, 0xc8, 0x77, 0x5f, 0x95, 0xf7, 0x0f, 0xa4, 0x0c, + 0xbe, 0xff, 0x5b, 0xbe, 0x9c, 0xb9, 0x25, 0x38, 0x96, 0x5b, 0xf6, 0x01, 0x12, 0xa7, 0x11, 0x04, + 0xfa, 0x10, 0x03, 0xa4, 0x21, 0x1d, 0xef, 0x23, 0x0c, 0x90, 0x46, 0x55, 0xd8, 0x8f, 0x63, 0xd6, + 0x88, 0xfe, 0x49, 0x23, 0xbd, 0x8a, 0xfa, 0xb9, 0x5c, 0xce, 0xd9, 0xa7, 0x8d, 0x78, 0x53, 0x71, + 0xb5, 0x94, 0xb2, 0xcf, 0x60, 0x81, 0xb6, 0xf6, 0xfc, 0x79, 0x23, 0x91, 0x02, 0xa4, 0xdc, 0xfe, + 0xab, 0x6a, 0x04, 0x9f, 0xc7, 0x36, 0x91, 0x46, 0xc6, 0x15, 0xdc, 0x9f, 0xb4, 0x8a, 0xe4, 0xf6, + 0xb8, 0x26, 0x72, 0xa3, 0x11, 0x78, 0x3e, 0xbe, 0x89, 0xde, 0xa2, 0x7d, 0x18, 0x93, 0xe3, 0x13, + 0xb4, 0x11, 0xe8, 0x93, 0x83, 0x72, 0x02, 0x76, 0x38, 0x7d, 0xe1, 0xa8, 0x9c, 0x98, 0x20, 0x86, + 0x7d, 0x7a, 0x58, 0x4e, 0x52, 0xba, 0x88, 0x74, 0x72, 0x82, 0xde, 0x9c, 0x7d, 0xd5, 0x81, 0x39, + 0x45, 0x49, 0x91, 0xbd, 0x53, 0xb1, 0x37, 0xea, 0xd9, 0x48, 0x21, 0xce, 0x84, 0xa0, 0x67, 0x23, + 0x42, 0x9c, 0x85, 0x10, 0x3d, 0x1b, 0x75, 0x88, 0xb3, 0x11, 0xa2, 0x67, 0xa3, 0x0a, 0x71, 0x8e, + 0xd2, 0x45, 0x88, 0x73, 0x11, 0xa2, 0x67, 0x63, 0x18, 0xe2, 0x3c, 0x25, 0x45, 0x88, 0xf3, 0x11, + 0x62, 0x10, 0xbd, 0xb8, 0x10, 0x82, 0x41, 0xd9, 0x0b, 0xb9, 0x4f, 0x1b, 0x0c, 0x7b, 0xb1, 0x15, + 0x21, 0x06, 0x75, 0x2f, 0x2e, 0x56, 0xba, 0x08, 0x71, 0x09, 0x42, 0x0c, 0x56, 0x7b, 0x71, 0xa9, + 0x92, 0x22, 0xc4, 0x65, 0xd2, 0x53, 0xa5, 0x58, 0x94, 0x3d, 0xd9, 0x26, 0xb5, 0xd1, 0x46, 0xa8, + 0xed, 0x09, 0xda, 0x09, 0x49, 0x40, 0x87, 0xdb, 0x41, 0x9b, 0x81, 0x25, 0x12, 0x53, 0x21, 0x77, + 0x46, 0xec, 0x10, 0x76, 0x57, 0x82, 0x4a, 0x44, 0xd9, 0xe9, 0xd0, 0xbb, 0x23, 0x5a, 0x08, 0x7f, + 0x15, 0x88, 0x0f, 0x15, 0x2b, 0x72, 0x7d, 0xda, 0x93, 0xc0, 0x76, 0xa8, 0x58, 0x09, 0x17, 0xa1, + 0xbd, 0x09, 0xda, 0xb8, 0x11, 0x42, 0xec, 0xee, 0x03, 0xdb, 0x01, 0xc7, 0x55, 0xfa, 0xf7, 0x83, + 0x08, 0xda, 0xda, 0xe0, 0x01, 0x78, 0x04, 0x44, 0x16, 0x7f, 0x96, 0x1a, 0x95, 0xa2, 0x70, 0xca, + 0xc5, 0x69, 0x18, 0x3d, 0x98, 0xa0, 0x92, 0xd6, 0x90, 0xb6, 0xfb, 0x0b, 0x42, 0x6b, 0x94, 0x4c, + 0xff, 0x0a, 0xb2, 0xdd, 0xce, 0xa4, 0x63, 0xcb, 0xc5, 0xea, 0x21, 0xa4, 0x42, 0x02, 0xda, 0xec, 0xe1, 0x84, 0xaa, 0x3d, 0x09, 0x93, 0xdd, 0x23, 0x09, 0x5a, 0x95, 0x42, 0x48, 0x6b, 0x3e, 0x8a, - 0x9e, 0xf4, 0x7b, 0x36, 0x7c, 0x3d, 0x06, 0xe7, 0xfd, 0x9e, 0xad, 0xc5, 0x8f, 0x63, 0x54, 0xfa, - 0x3d, 0x9b, 0x5c, 0xec, 0x4b, 0xd0, 0x51, 0x33, 0x42, 0x66, 0xd8, 0x0d, 0x9c, 0xbc, 0xcb, 0x6d, - 0xf6, 0x44, 0xc2, 0x3c, 0xc4, 0xa8, 0x53, 0xf9, 0xd0, 0x68, 0x28, 0x7d, 0x32, 0x61, 0xae, 0x30, - 0x96, 0x55, 0x49, 0x33, 0x52, 0xf6, 0x54, 0x54, 0x96, 0x89, 0xdb, 0x3d, 0x8d, 0x78, 0x31, 0x99, - 0xb2, 0x7a, 0x26, 0x61, 0x7e, 0xc9, 0x58, 0x2e, 0x69, 0x4d, 0x0b, 0xf7, 0x6c, 0xc2, 0x3c, 0xd8, - 0x58, 0x1a, 0x17, 0x2a, 0xbb, 0xe7, 0x22, 0xa2, 0xaa, 0x60, 0xcf, 0x27, 0xcc, 0x3a, 0xc3, 0x8c, - 0x8a, 0x94, 0xcd, 0xfe, 0x84, 0x79, 0xa8, 0x91, 0xd4, 0x43, 0x37, 0x2d, 0xda, 0x0b, 0x92, 0x4a, - 0x95, 0x58, 0xd9, 0xbe, 0x18, 0x13, 0x56, 0x45, 0x7c, 0x49, 0x92, 0x89, 0x09, 0x95, 0xdd, 0xdf, - 0x12, 0x66, 0xa3, 0xb1, 0x52, 0x8b, 0x7a, 0x3c, 0x3f, 0x57, 0xb1, 0x0b, 0xed, 0x5f, 0x4e, 0x98, - 0x0d, 0xc6, 0x21, 0x33, 0x2b, 0x29, 0x3f, 0xaf, 0xcc, 0xa0, 0x52, 0xc5, 0xe2, 0x55, 0xa8, 0x44, - 0x4b, 0x65, 0x5a, 0xa0, 0xd7, 0x12, 0xe6, 0x2a, 0x63, 0xc5, 0x4c, 0x2a, 0x2a, 0xcc, 0xeb, 0x48, - 0x51, 0x54, 0x21, 0xd6, 0x9b, 0x37, 0xa6, 0xd9, 0x57, 0x71, 0x78, 0x13, 0x55, 0xd6, 0x31, 0x8a, - 0xb9, 0xf1, 0x5b, 0x46, 0x15, 0xd9, 0x31, 0x1a, 0x0c, 0x53, 0xeb, 0x77, 0xba, 0x85, 0xfa, 0xfc, - 0x3d, 0xc3, 0x6b, 0xd8, 0x68, 0x38, 0xaf, 0xfe, 0xc0, 0xb0, 0xa9, 0x72, 0x87, 0x96, 0xdc, 0xac, - 0xd7, 0xc5, 0x73, 0xec, 0xfa, 0x38, 0x44, 0x4e, 0x6e, 0x08, 0xa1, 0x2e, 0x9e, 0x93, 0xd0, 0x8d, - 0x71, 0x88, 0x0c, 0x6f, 0x62, 0x78, 0x09, 0xe2, 0x8e, 0x5c, 0xac, 0x6f, 0x66, 0x34, 0xaf, 0x7a, - 0x0a, 0x9e, 0xe7, 0x87, 0xbe, 0x6f, 0xa9, 0xc2, 0xc8, 0xd3, 0xad, 0x15, 0x2c, 0xf4, 0x7e, 0x5b, - 0x15, 0x46, 0xb6, 0xb7, 0x33, 0x5a, 0x25, 0x80, 0xc1, 0xff, 0x1d, 0x4c, 0xbe, 0x9e, 0x95, 0x5d, - 0x39, 0xf7, 0xf6, 0x22, 0x3c, 0xda, 0xe4, 0xe2, 0x9e, 0x4a, 0x93, 0xac, 0xef, 0x65, 0xe6, 0x72, - 0xe3, 0x40, 0x34, 0x8f, 0x72, 0xc4, 0x78, 0x8f, 0x6f, 0xe5, 0xe4, 0x5a, 0xc3, 0x68, 0x5a, 0xc7, - 0x70, 0xb2, 0xbe, 0x7f, 0x3a, 0x4c, 0x5e, 0xfe, 0x8c, 0x6c, 0xf6, 0x79, 0xf9, 0xc3, 0x3b, 0xfc, - 0x3c, 0x7b, 0x08, 0x21, 0xfa, 0xbc, 0x7c, 0x6b, 0x87, 0x9f, 0x0f, 0xd8, 0xc3, 0x0c, 0xef, 0x75, - 0x5e, 0xbe, 0x95, 0x3d, 0xc2, 0x68, 0x89, 0x27, 0xbd, 0xc3, 0xd8, 0xa3, 0x4c, 0xbd, 0x36, 0xda, - 0xec, 0x31, 0x46, 0x15, 0x4b, 0x8f, 0xe4, 0x34, 0xc3, 0xb9, 0x8d, 0x17, 0xbe, 0x5e, 0xee, 0xb2, - 0xc7, 0x19, 0xbd, 0x09, 0x0e, 0x7a, 0x9b, 0xd9, 0x3e, 0xe8, 0x77, 0x7a, 0xee, 0x04, 0x7b, 0x02, - 0x6e, 0x3a, 0x87, 0x3a, 0x8f, 0x68, 0x65, 0x4f, 0x02, 0xa6, 0x81, 0x67, 0x4f, 0xc9, 0xc7, 0xa3, - 0x7d, 0xc1, 0x9e, 0xc6, 0x63, 0x47, 0xce, 0x0b, 0xd8, 0x33, 0xf2, 0x31, 0x70, 0x5c, 0xf6, 0x2c, - 0x88, 0x75, 0x08, 0xcb, 0x05, 0xcf, 0xe7, 0x90, 0x29, 0x6a, 0x4a, 0xa2, 0xcf, 0x23, 0x56, 0xa7, - 0x17, 0xb0, 0xfd, 0xea, 0x49, 0xb0, 0x17, 0xd0, 0xb3, 0x2e, 0x9e, 0xf7, 0x39, 0x0f, 0xd8, 0x8b, - 0xc0, 0xbb, 0x27, 0x4b, 0xec, 0x25, 0x66, 0xce, 0x37, 0x66, 0x0f, 0xa6, 0xd9, 0xdf, 0xa0, 0x30, - 0x64, 0xd9, 0x8e, 0xe5, 0x06, 0xec, 0x65, 0x28, 0x64, 0x1c, 0x97, 0xbd, 0x82, 0xa7, 0xac, 0xe5, - 0xb2, 0x57, 0x19, 0xad, 0xb5, 0x59, 0xbf, 0xec, 0xe6, 0x2c, 0x81, 0x35, 0xf3, 0x35, 0x14, 0x89, - 0x46, 0x90, 0xef, 0xd7, 0xe9, 0x15, 0x6b, 0x89, 0x86, 0x74, 0x19, 0xbe, 0x11, 0x53, 0x1c, 0x76, - 0x5c, 0xc1, 0xde, 0x44, 0xa9, 0xf6, 0x79, 0x79, 0x27, 0x67, 0x15, 0x3a, 0x5c, 0x9b, 0x5d, 0x96, - 0xc4, 0x89, 0x41, 0x02, 0xeb, 0x7d, 0x76, 0x79, 0x32, 0xa2, 0xf0, 0x3d, 0xcf, 0x67, 0x57, 0x24, - 0x29, 0xfe, 0xb0, 0x6b, 0xf9, 0x53, 0x03, 0x1e, 0x4e, 0x26, 0xdb, 0x92, 0x14, 0x4c, 0x23, 0x3a, - 0xd8, 0xf6, 0x24, 0x05, 0xd3, 0x28, 0x58, 0xed, 0x88, 0x41, 0xdf, 0xcd, 0xac, 0x1f, 0x60, 0x3b, - 0x93, 0x54, 0x82, 0x80, 0xc2, 0x6d, 0x67, 0x57, 0x92, 0x76, 0xbf, 0x0a, 0x06, 0xdb, 0xdd, 0x49, - 0xaa, 0xac, 0x0a, 0xa8, 0xc3, 0x5c, 0x09, 0x07, 0xaa, 0x95, 0x0e, 0x70, 0xe7, 0x74, 0x15, 0x1c, - 0xe8, 0x8d, 0x53, 0x81, 0x57, 0xa3, 0x23, 0xe4, 0x4b, 0x01, 0xd7, 0x80, 0x8d, 0xdc, 0x82, 0x15, - 0x74, 0x2d, 0x74, 0x68, 0x0b, 0x56, 0xc0, 0x75, 0xc8, 0x46, 0xda, 0x15, 0xaa, 0xfd, 0x13, 0x28, - 0xd0, 0xee, 0xab, 0x80, 0x9f, 0x42, 0x41, 0x5e, 0xc7, 0x64, 0x9c, 0x3c, 0xfb, 0x59, 0x92, 0x6a, - 0x02, 0xb7, 0x31, 0xd4, 0xfc, 0xb9, 0x16, 0x7f, 0xcf, 0x43, 0xfb, 0x17, 0xba, 0x3d, 0xc0, 0xf3, - 0xd4, 0xfe, 0x65, 0xc5, 0x7f, 0xd6, 0x2f, 0x73, 0xf6, 0xab, 0x08, 0x49, 0x00, 0xbf, 0x8e, 0x77, - 0x0f, 0xd8, 0x6f, 0xa0, 0x04, 0xa3, 0x1e, 0xab, 0x10, 0x70, 0xf6, 0x5b, 0x0c, 0x89, 0xb4, 0x92, - 0xc8, 0xef, 0x64, 0x06, 0xb4, 0x99, 0x04, 0x7f, 0x2f, 0x87, 0x96, 0x8f, 0x89, 0xcc, 0xb8, 0x33, - 0x26, 0xd8, 0xf5, 0x32, 0x98, 0x93, 0x1f, 0x57, 0xc0, 0x0d, 0xc8, 0x71, 0xc8, 0x86, 0x66, 0x0f, - 0x3a, 0xf9, 0xa7, 0x24, 0x6d, 0x3a, 0x15, 0x56, 0xa1, 0xe0, 0xee, 0x24, 0x6d, 0x8b, 0x31, 0x76, - 0xa1, 0x6c, 0x0f, 0x8c, 0x2a, 0x2c, 0x43, 0xc1, 0xde, 0x24, 0xed, 0x97, 0x11, 0xb6, 0xa1, 0xe4, - 0x9e, 0x24, 0xed, 0x43, 0x71, 0xd6, 0xa1, 0xf0, 0x5e, 0x9d, 0x59, 0x79, 0xa3, 0xf6, 0x07, 0xf4, - 0xb0, 0x97, 0x8b, 0x41, 0xcb, 0xb7, 0x8a, 0xea, 0x20, 0x75, 0x63, 0x12, 0x67, 0x4c, 0x2e, 0x46, - 0x2c, 0x9f, 0xdd, 0x84, 0xc6, 0x90, 0xb7, 0x99, 0x12, 0x7d, 0x33, 0x1a, 0x19, 0x29, 0xb9, 0x05, - 0x49, 0xc5, 0x0d, 0x4f, 0x58, 0x47, 0xb7, 0xc2, 0x9f, 0xc2, 0xf4, 0x91, 0xeb, 0xb6, 0x64, 0x78, - 0xc5, 0x87, 0xca, 0xbc, 0x1d, 0x19, 0x93, 0x6d, 0x94, 0xef, 0x1d, 0x11, 0x00, 0x65, 0x7a, 0x27, - 0x8a, 0x4a, 0x02, 0x8a, 0xd4, 0x5d, 0x11, 0x1d, 0x9c, 0xee, 0xfe, 0x98, 0xa4, 0xf5, 0x26, 0xed, - 0x92, 0xc7, 0xed, 0xab, 0x88, 0x57, 0xda, 0x95, 0xf3, 0x63, 0x95, 0xac, 0x06, 0xcd, 0x49, 0xde, - 0x77, 0xa5, 0x5d, 0xe5, 0x68, 0x97, 0xd2, 0x85, 0x93, 0xdd, 0xab, 0x64, 0x11, 0x84, 0x5c, 0xaf, - 0x54, 0x52, 0x1c, 0x0d, 0xaf, 0x92, 0x9e, 0xc6, 0x28, 0x73, 0x14, 0xe6, 0xa4, 0x7a, 0x68, 0xa3, - 0x8d, 0x50, 0x27, 0xd7, 0x53, 0x0a, 0x24, 0xa0, 0xc3, 0x9d, 0x82, 0x37, 0x0a, 0x89, 0xa9, 0x90, - 0xa7, 0x46, 0xec, 0x10, 0xf6, 0x34, 0xbc, 0xbc, 0x28, 0x3b, 0x1d, 0xfa, 0xf4, 0x7a, 0x74, 0x68, - 0x8c, 0x22, 0x9d, 0x51, 0x0f, 0x1a, 0x63, 0x88, 0x72, 0x66, 0xbd, 0xa4, 0xa1, 0x23, 0x9c, 0x85, - 0x57, 0x9a, 0xf4, 0x98, 0xf2, 0x7e, 0xb6, 0xd2, 0x85, 0xe7, 0x73, 0x54, 0xa8, 0xd0, 0xeb, 0xb9, - 0x91, 0xd8, 0xe8, 0xd4, 0x79, 0x4a, 0x5d, 0x1e, 0xef, 0xf1, 0xae, 0xd3, 0x69, 0x05, 0xfc, 0xa8, - 0x71, 0x8e, 0x54, 0xbe, 0x25, 0xdf, 0x5c, 0x15, 0x82, 0xf8, 0x6f, 0xcb, 0x37, 0x64, 0x05, 0x69, - 0x16, 0xff, 0x94, 0x6f, 0xc8, 0x0a, 0x55, 0x5c, 0xde, 0x89, 0x59, 0x83, 0xd1, 0xbb, 0xf2, 0x0d, - 0x59, 0x5b, 0x6b, 0x5e, 0xef, 0xc5, 0x34, 0x41, 0xe6, 0x7d, 0x50, 0xed, 0x40, 0x35, 0xf9, 0x53, - 0x25, 0xc1, 0x2e, 0x68, 0x54, 0x40, 0xb7, 0x2b, 0x81, 0x2d, 0x8d, 0xd8, 0xb5, 0xbd, 0x22, 0xbe, - 0xa1, 0xb0, 0x0b, 0x1b, 0x71, 0xe3, 0xdb, 0xf5, 0x75, 0xb6, 0x15, 0x82, 0x41, 0x2b, 0x08, 0x36, - 0x7b, 0xbe, 0xcd, 0x2e, 0x6a, 0xc4, 0x54, 0xb6, 0x5c, 0xdb, 0x2b, 0xca, 0x8b, 0xef, 0x8b, 0x1b, - 0xb1, 0x0d, 0xad, 0xeb, 0x38, 0x9c, 0x5d, 0xa2, 0x1f, 0x5b, 0xd9, 0xa5, 0x08, 0x30, 0xec, 0xe6, - 0xb4, 0xc7, 0xcb, 0x1a, 0x69, 0xba, 0x55, 0x00, 0x6e, 0xf7, 0x71, 0x37, 0x2f, 0xc6, 0xd9, 0xe5, - 0x8d, 0x44, 0xb7, 0xc2, 0x2d, 0x3d, 0xc2, 0xae, 0xd0, 0x90, 0x62, 0x97, 0x1e, 0x61, 0xdb, 0x1a, - 0xf1, 0xea, 0xe4, 0xe6, 0x3c, 0x9b, 0xb3, 0xed, 0x68, 0x74, 0x71, 0x34, 0x76, 0x80, 0x6a, 0xa6, - 0xff, 0x08, 0xb6, 0x13, 0x54, 0xbb, 0x2c, 0x61, 0x8d, 0x5a, 0x01, 0x67, 0xd7, 0x34, 0xe2, 0xa4, - 0x80, 0x93, 0x81, 0xb7, 0x39, 0x60, 0xd7, 0x82, 0x7a, 0x67, 0xd9, 0xf7, 0xb9, 0x2b, 0x86, 0x03, - 0xee, 0xb3, 0xeb, 0xc0, 0x17, 0x8f, 0x3f, 0x69, 0x94, 0xd7, 0x0a, 0xae, 0xcb, 0xf1, 0x61, 0x23, - 0xdd, 0xc5, 0x7e, 0x0a, 0xa8, 0x0f, 0xaf, 0xb7, 0x01, 0xf7, 0x45, 0xba, 0x8b, 0xfd, 0x0c, 0x9d, - 0x88, 0x42, 0x34, 0xfd, 0xd3, 0x5d, 0xec, 0xe7, 0x8d, 0xb8, 0x82, 0x96, 0x1f, 0xea, 0xd8, 0x2f, - 0x10, 0x49, 0x5e, 0xc8, 0x4b, 0xe4, 0x97, 0x8d, 0xf2, 0x18, 0xb2, 0x59, 0x2e, 0x0e, 0xbf, 0x6a, - 0xa4, 0x82, 0xcc, 0x14, 0x38, 0x2f, 0xb1, 0xbb, 0x1b, 0xe5, 0x79, 0x21, 0xb7, 0x89, 0xed, 0x91, - 0xc9, 0xe5, 0x05, 0x6e, 0x05, 0x1c, 0xc8, 0xde, 0x46, 0x2a, 0x10, 0x7d, 0xe9, 0xe7, 0x4e, 0xc9, - 0x5b, 0xdf, 0x7b, 0x1a, 0x69, 0xe0, 0xc3, 0x5b, 0x22, 0x0d, 0xdf, 0xdb, 0xa8, 0x5e, 0x9e, 0x43, - 0xe4, 0x3e, 0x74, 0x81, 0x56, 0x82, 0x10, 0xba, 0x1f, 0x10, 0x2e, 0x3b, 0x35, 0xf4, 0xe7, 0x46, - 0xaa, 0x37, 0x75, 0x6d, 0xa7, 0xc1, 0xbf, 0x40, 0x0f, 0xb7, 0x66, 0x1a, 0x7a, 0xa0, 0x51, 0x4e, - 0x77, 0x2e, 0x3a, 0x84, 0xe7, 0xb2, 0x07, 0xc3, 0xe6, 0x80, 0xf0, 0x2c, 0xf6, 0xd7, 0x46, 0xb9, - 0x38, 0x70, 0xd1, 0x06, 0xf1, 0x43, 0x95, 0x36, 0xe4, 0x0f, 0x63, 0xd0, 0xd2, 0x41, 0x7a, 0x70, - 0xe2, 0x48, 0xf6, 0x08, 0xbc, 0xcb, 0x06, 0x15, 0x9d, 0x25, 0xd8, 0xa3, 0x11, 0xa8, 0xdf, 0x2a, - 0x95, 0xb8, 0xcd, 0x1e, 0xab, 0x98, 0xb4, 0xb1, 0xc7, 0xe5, 0x60, 0x0d, 0xa7, 0xbb, 0xd8, 0x3e, - 0x14, 0xd7, 0x88, 0x23, 0x78, 0x10, 0xac, 0xb3, 0x82, 0x71, 0xf6, 0x84, 0x52, 0x84, 0xf4, 0x49, - 0x04, 0xa6, 0xec, 0x67, 0xc6, 0x2d, 0xdf, 0x66, 0x4f, 0x35, 0x86, 0xdf, 0x29, 0x1c, 0x17, 0xbb, - 0xda, 0xd3, 0x92, 0x79, 0xc1, 0xd9, 0xc4, 0xa9, 0xf9, 0x48, 0x03, 0x8e, 0x73, 0xaa, 0xf5, 0x68, - 0x03, 0x0e, 0x94, 0x3c, 0xcf, 0x27, 0x4b, 0xd4, 0x7e, 0xac, 0x81, 0x56, 0x22, 0xd9, 0x1e, 0xce, - 0xf6, 0x7c, 0x83, 0xb0, 0xc7, 0x23, 0x98, 0xb6, 0xdb, 0xd7, 0x80, 0xa3, 0x65, 0x88, 0x69, 0xdd, - 0x27, 0x1a, 0x28, 0xbb, 0x12, 0xc7, 0x52, 0x49, 0xe0, 0x93, 0x0d, 0x72, 0xc7, 0x0a, 0x41, 0xad, - 0xfd, 0x54, 0x03, 0x4e, 0x9c, 0x10, 0x0c, 0xf1, 0x52, 0xc1, 0xca, 0xc1, 0xf9, 0xd3, 0x0d, 0x38, - 0x32, 0x46, 0x61, 0x6d, 0xf1, 0x4c, 0x03, 0x95, 0x88, 0xe2, 0x5b, 0x1e, 0x0d, 0x64, 0x80, 0x67, - 0x1b, 0xe4, 0x26, 0x56, 0x41, 0xb5, 0xfe, 0x73, 0xe0, 0x43, 0xcb, 0x42, 0xf7, 0xa4, 0xf0, 0xad, - 0x1c, 0xbd, 0x45, 0xb0, 0xd3, 0x9a, 0x34, 0x38, 0xec, 0x1e, 0x5d, 0xf6, 0x04, 0x82, 0x9e, 0xde, - 0x44, 0x89, 0x23, 0x30, 0x3b, 0x55, 0x02, 0x72, 0x46, 0x93, 0x3e, 0x5e, 0x64, 0x38, 0xec, 0xce, - 0x6c, 0xd2, 0x9f, 0x52, 0xe4, 0x84, 0x20, 0xec, 0xac, 0xd0, 0x57, 0xa4, 0x03, 0x67, 0x87, 0x8a, - 0x43, 0xbc, 0xe8, 0x4d, 0x00, 0x3b, 0xa7, 0x49, 0x7f, 0x9a, 0xe9, 0xe7, 0x7e, 0x1e, 0xd0, 0xb9, - 0x4d, 0xf1, 0x4f, 0x33, 0x84, 0x9d, 0xd7, 0x14, 0xfb, 0x82, 0x43, 0xd0, 0xf9, 0x4d, 0x94, 0x25, - 0x82, 0x46, 0xac, 0x82, 0x63, 0x83, 0x90, 0x93, 0x67, 0x3f, 0x6a, 0xa2, 0x54, 0x50, 0xab, 0xd3, - 0x73, 0x85, 0xe5, 0xb8, 0x01, 0xa1, 0x3f, 0x6e, 0xa2, 0x5c, 0x57, 0xbe, 0x00, 0x95, 0x4a, 0x5c, - 0x9e, 0x85, 0x2e, 0x88, 0x0b, 0x2a, 0x3d, 0xd8, 0xd2, 0x44, 0x43, 0x19, 0x12, 0x1b, 0xb4, 0x44, - 0x6e, 0x9c, 0xf0, 0x0b, 0x9b, 0x68, 0x14, 0x2a, 0xb8, 0xcf, 0x03, 0xee, 0xcb, 0xbe, 0x6c, 0x6d, - 0xa2, 0x7c, 0x47, 0x43, 0x0f, 0x5a, 0x02, 0x46, 0x17, 0x85, 0x5d, 0x1a, 0xf4, 0xb9, 0x10, 0xe0, - 0x7f, 0x71, 0xd8, 0xa5, 0x0d, 0x3a, 0xd9, 0x97, 0x84, 0x6a, 0x19, 0x6e, 0xf9, 0x32, 0xde, 0xa5, - 0x21, 0xc1, 0x8c, 0xf0, 0x7c, 0x8b, 0x52, 0x74, 0x0c, 0x94, 0x2f, 0x0b, 0xed, 0xbb, 0x78, 0x49, - 0x86, 0xb9, 0x3c, 0x1c, 0xac, 0xff, 0xe2, 0x53, 0xe8, 0xf7, 0x15, 0xa1, 0x47, 0xb9, 0xd2, 0x12, - 0xb6, 0x2d, 0x4c, 0x1c, 0x69, 0xe1, 0x3d, 0x80, 0xe0, 0xed, 0x61, 0x20, 0xe4, 0x53, 0x2e, 0x05, - 0x24, 0xd8, 0x11, 0x17, 0xac, 0x17, 0xe3, 0xdc, 0x87, 0xc5, 0xce, 0x6a, 0x6a, 0x3d, 0x3e, 0x07, - 0xb5, 0x5d, 0xe1, 0x18, 0xf4, 0xf3, 0xe2, 0x28, 0xf7, 0xd7, 0x8f, 0x11, 0xba, 0x1b, 0x84, 0x47, - 0x78, 0xae, 0x23, 0xc8, 0xf2, 0x49, 0x24, 0xf9, 0x7d, 0x94, 0xc9, 0x08, 0xcf, 0xf5, 0xf8, 0x5e, - 0x51, 0x83, 0x1f, 0xa0, 0xc0, 0x46, 0x78, 0xae, 0xcb, 0x29, 0x22, 0xce, 0x87, 0x20, 0x3c, 0xc2, - 0x73, 0x7d, 0x87, 0xeb, 0x5f, 0xa8, 0x10, 0xfc, 0x51, 0x08, 0xb7, 0x46, 0xe1, 0x8f, 0x9b, 0xe8, - 0x15, 0x79, 0x84, 0xe7, 0x06, 0x78, 0xde, 0x12, 0xce, 0x04, 0x4f, 0xbb, 0x2e, 0xf7, 0x07, 0x7d, - 0xcf, 0x2e, 0xcb, 0x5a, 0xfa, 0x04, 0x23, 0x38, 0xc2, 0x73, 0x9d, 0x5e, 0xe0, 0xb8, 0x3c, 0x6a, - 0xfb, 0xa9, 0xa6, 0xd8, 0xd7, 0x3a, 0xe0, 0xf9, 0x45, 0x82, 0x3e, 0x6b, 0x32, 0x57, 0x1a, 0x07, - 0x47, 0xbf, 0x69, 0xc4, 0x3f, 0xb0, 0xde, 0xd4, 0x4c, 0xe7, 0x41, 0x92, 0xc7, 0x70, 0x79, 0x45, - 0x7f, 0x73, 0xb3, 0x79, 0x88, 0x51, 0x37, 0x83, 0x10, 0x3b, 0xff, 0x2d, 0xcd, 0xda, 0x75, 0x95, - 0x54, 0x6d, 0xf7, 0xb7, 0x36, 0x53, 0x4f, 0x66, 0x90, 0xeb, 0x43, 0xc2, 0x6d, 0x5f, 0xe4, 0x1e, - 0x47, 0x83, 0xdb, 0x9b, 0xcd, 0x7a, 0xe3, 0x4b, 0x33, 0x99, 0xeb, 0x53, 0xc2, 0x1d, 0x5f, 0x64, - 0x8f, 0x03, 0xc3, 0x9d, 0xcd, 0xe6, 0xff, 0x33, 0xea, 0x67, 0x90, 0xc6, 0x13, 0x70, 0x57, 0x33, - 0x4d, 0x94, 0xc1, 0x42, 0xb9, 0x0a, 0xbf, 0xa0, 0x19, 0xb7, 0x40, 0xf4, 0x1e, 0x14, 0x17, 0x6c, - 0x69, 0xa6, 0x03, 0xb9, 0xbe, 0xfb, 0x8a, 0xcb, 0x2e, 0x84, 0x2c, 0x1e, 0x4f, 0x6f, 0x3d, 0x5b, - 0x21, 0xd3, 0xb7, 0xfe, 0x71, 0xbb, 0x8b, 0x9a, 0xa9, 0xe2, 0xfa, 0xb2, 0x71, 0xf4, 0x62, 0x89, - 0x76, 0xc7, 0xd1, 0x4b, 0x80, 0xf6, 0x56, 0xe9, 0x5e, 0x0a, 0xef, 0xfa, 0x72, 0x3b, 0x2e, 0xbb, - 0x0c, 0x5d, 0xc1, 0x0d, 0x75, 0x5c, 0x70, 0xb9, 0x74, 0x55, 0x15, 0xe0, 0x0a, 0xa0, 0xdd, 0x1b, - 0xe2, 0xe8, 0x36, 0xa0, 0x03, 0x55, 0xba, 0xdb, 0x9b, 0x69, 0xcd, 0x90, 0x17, 0xa6, 0x71, 0xc9, - 0x0e, 0x48, 0x62, 0x98, 0x7a, 0x9f, 0xdb, 0x39, 0x93, 0x04, 0x6f, 0x5d, 0xbb, 0x9a, 0x55, 0x69, - 0x47, 0x25, 0xf2, 0xc5, 0x6a, 0x37, 0xaa, 0x61, 0x06, 0xa3, 0xf0, 0xe5, 0xe5, 0xca, 0x66, 0xb3, - 0xc1, 0x38, 0x64, 0x26, 0xe3, 0x50, 0xe5, 0x2a, 0x44, 0x96, 0xc7, 0xdd, 0x38, 0xdb, 0xab, 0xd1, - 0xbb, 0xf4, 0x58, 0x1c, 0xbd, 0x46, 0x0e, 0x99, 0x3a, 0x86, 0xc6, 0x65, 0xd7, 0x36, 0xd3, 0x5c, - 0xd3, 0x3f, 0x85, 0x3a, 0x8a, 0x0e, 0x96, 0x0f, 0x22, 0xcf, 0xd3, 0x7f, 0x1d, 0xc5, 0xfe, 0x8a, - 0x99, 0xa2, 0x05, 0xea, 0x77, 0x3f, 0x11, 0xf9, 0xa3, 0xcd, 0xb4, 0x8e, 0x68, 0xf9, 0xa0, 0xcf, - 0xc7, 0x9c, 0x49, 0xf6, 0x50, 0x0c, 0x94, 0xdb, 0x20, 0x7b, 0xb8, 0x19, 0xef, 0xaa, 0x96, 0xe0, - 0x3d, 0x9e, 0x5f, 0xb4, 0xb0, 0x20, 0xbc, 0xdd, 0x42, 0xcb, 0x26, 0x61, 0x7d, 0x8e, 0xe0, 0x3e, - 0x9d, 0xbe, 0x5b, 0xd4, 0x29, 0x92, 0x77, 0x39, 0x63, 0x63, 0xec, 0x9d, 0x16, 0x7d, 0x1d, 0x4e, - 0x13, 0x0b, 0xd0, 0xbb, 0x2d, 0x44, 0x95, 0x9a, 0x72, 0xb2, 0x86, 0x82, 0xf7, 0x5a, 0xf0, 0x7e, - 0xa8, 0xa6, 0x58, 0x95, 0xf0, 0xfd, 0x16, 0xf3, 0x50, 0x23, 0xa9, 0x85, 0xfa, 0x6f, 0x28, 0xfe, - 0x00, 0x4e, 0x2b, 0x36, 0xa1, 0xe0, 0x43, 0x38, 0x95, 0x82, 0x69, 0x56, 0x1f, 0xb5, 0xd0, 0xa0, - 0xab, 0xf5, 0x3a, 0x1e, 0xef, 0xe3, 0x16, 0x5a, 0x22, 0xb5, 0xab, 0x10, 0xfe, 0xa4, 0x85, 0x8e, - 0x51, 0xd4, 0x3d, 0xf6, 0x29, 0x1e, 0xd7, 0x79, 0x65, 0x9f, 0x7d, 0xd6, 0x82, 0x0b, 0x6a, 0xc7, - 0x2d, 0x0b, 0xce, 0x3e, 0x6f, 0x91, 0xef, 0xa2, 0x39, 0xcf, 0xb5, 0xd9, 0xbf, 0x90, 0xa0, 0x7e, - 0x27, 0xe7, 0x7b, 0x0a, 0x39, 0x36, 0x45, 0x87, 0xd7, 0x7e, 0xcf, 0x15, 0xe3, 0xec, 0xb8, 0x14, - 0xee, 0xec, 0xe9, 0x79, 0xc0, 0x2a, 0x72, 0x76, 0x7c, 0x0a, 0xdf, 0x00, 0xbc, 0xcd, 0x54, 0x36, - 0x1d, 0x7e, 0x9e, 0x9d, 0x90, 0xc2, 0x17, 0x06, 0x09, 0x78, 0x65, 0x41, 0xd8, 0x89, 0x29, 0x5c, - 0x32, 0x59, 0x53, 0x30, 0x39, 0x09, 0x26, 0x5d, 0xd6, 0xd4, 0xfa, 0x31, 0xe9, 0xf3, 0x64, 0xf8, - 0x04, 0x70, 0x14, 0xe7, 0x9b, 0xd8, 0x29, 0x95, 0xf6, 0x7f, 0x73, 0xcb, 0x67, 0xa7, 0xa6, 0x68, - 0x44, 0x48, 0x44, 0x3e, 0xfb, 0xe9, 0x1d, 0xe0, 0xb4, 0x14, 0x55, 0xa0, 0x86, 0xbc, 0xb2, 0x00, - 0x7a, 0x3a, 0xe2, 0x10, 0xda, 0x65, 0x4d, 0xb1, 0x33, 0x10, 0x87, 0x5a, 0xca, 0xcf, 0x99, 0x29, - 0xea, 0x3e, 0x1e, 0xcf, 0x4a, 0x51, 0xae, 0xe8, 0x31, 0xe6, 0xf6, 0xec, 0x14, 0x95, 0x7c, 0x14, - 0xd6, 0xae, 0xcf, 0x01, 0xa7, 0x5e, 0x2e, 0x64, 0x25, 0xb1, 0x73, 0x53, 0x38, 0x42, 0x4f, 0x05, - 0x94, 0x58, 0x5c, 0x15, 0x06, 0x25, 0x76, 0x5e, 0x8a, 0x56, 0xc7, 0x08, 0xe8, 0x95, 0x05, 0xe1, - 0xe7, 0xa7, 0x22, 0x2f, 0x22, 0x18, 0x89, 0x1f, 0x81, 0xbf, 0x42, 0x68, 0xa8, 0x0e, 0xa3, 0x3c, - 0xfd, 0xb8, 0x1a, 0xc5, 0x35, 0xde, 0x05, 0xa0, 0x8d, 0x55, 0x7e, 0x4b, 0x4a, 0xbe, 0x67, 0x14, - 0xc3, 0xe2, 0xbd, 0x10, 0x5d, 0x1e, 0xce, 0x76, 0xc2, 0xed, 0x56, 0xf0, 0x1f, 0xce, 0x76, 0x92, - 0x4a, 0x20, 0xac, 0x62, 0x49, 0x0f, 0xcb, 0x45, 0x29, 0x2a, 0xaa, 0x6a, 0x89, 0x1a, 0x9f, 0x8b, - 0x21, 0xec, 0xb0, 0x6d, 0x72, 0x22, 0xf0, 0x06, 0x60, 0x57, 0x3e, 0x30, 0xa5, 0xa8, 0xe2, 0xe2, - 0x42, 0xb5, 0x67, 0x5d, 0x8a, 0x70, 0x1d, 0xb6, 0x8d, 0x62, 0xb3, 0x04, 0x8a, 0x0e, 0x6b, 0xc7, - 0x65, 0xda, 0x48, 0xbf, 0x64, 0x54, 0xfc, 0x5d, 0x9e, 0xa2, 0xba, 0x8f, 0x8a, 0x94, 0xb7, 0x2b, - 0x90, 0x3d, 0xe5, 0x4d, 0x62, 0xf0, 0xb5, 0x2d, 0x64, 0x17, 0xbe, 0xff, 0x54, 0xbc, 0x6d, 0x0f, - 0xd9, 0x55, 0x84, 0xca, 0xdf, 0x8e, 0x18, 0x3b, 0x25, 0x96, 0x6b, 0xaa, 0xa6, 0x40, 0x9c, 0xa3, - 0xde, 0x76, 0xa1, 0x2c, 0x2a, 0x02, 0xe5, 0x69, 0x37, 0x18, 0x64, 0xca, 0xa3, 0x33, 0xe5, 0xe7, - 0x4a, 0x30, 0x88, 0x0b, 0x95, 0xdd, 0x55, 0x60, 0x90, 0x29, 0x8f, 0x4e, 0xcb, 0xcf, 0xd5, 0xda, - 0x68, 0x7a, 0x7e, 0xae, 0x01, 0xb9, 0xa8, 0x48, 0x79, 0xbb, 0x56, 0x56, 0x97, 0xf4, 0x16, 0xc9, - 0xcf, 0x75, 0x21, 0xbb, 0x19, 0xf2, 0xf3, 0x93, 0x90, 0xdd, 0xb4, 0xfc, 0xfc, 0x34, 0xc6, 0x2e, - 0x9a, 0x9f, 0x9f, 0x69, 0x0a, 0xd5, 0xf9, 0xf9, 0x39, 0xf2, 0x53, 0x11, 0x28, 0x4f, 0xbf, 0x40, - 0x90, 0x61, 0xd7, 0x99, 0x0c, 0xab, 0x4b, 0x15, 0x31, 0xfb, 0x25, 0x2c, 0x62, 0x22, 0x3a, 0x2b, - 0xfd, 0x6a, 0x3a, 0xdc, 0xc5, 0x73, 0xec, 0xd7, 0x29, 0xf9, 0x8b, 0x35, 0x77, 0x82, 0xfb, 0x22, - 0x7b, 0x0c, 0xfb, 0x4d, 0x0a, 0x9f, 0xff, 0xac, 0x4d, 0xc8, 0x1e, 0xfb, 0x6d, 0xd8, 0xc4, 0x6c, - 0xf8, 0x1d, 0xb4, 0x07, 0xb9, 0xef, 0x78, 0x76, 0x87, 0x6d, 0xb3, 0xdf, 0x63, 0xc2, 0xcb, 0x36, - 0x96, 0xbe, 0x3f, 0x60, 0x72, 0x6c, 0x28, 0x5b, 0xbe, 0xe0, 0x3e, 0xbb, 0x1e, 0xea, 0x19, 0x9e, - 0xcb, 0x7a, 0x30, 0xbf, 0x21, 0x25, 0x5f, 0x1b, 0x8b, 0x3c, 0x4b, 0x2b, 0x1d, 0xbb, 0x31, 0xa5, - 0x5f, 0x80, 0xc1, 0x87, 0x3c, 0xde, 0x94, 0xa2, 0x85, 0x31, 0xeb, 0x75, 0x59, 0x53, 0x01, 0xbb, - 0x59, 0xea, 0xab, 0x55, 0x31, 0x60, 0xb7, 0x60, 0x09, 0x50, 0x53, 0x4a, 0xcf, 0xb3, 0x5b, 0x31, - 0x48, 0x11, 0x50, 0x4d, 0xb1, 0xdb, 0xb0, 0x2c, 0x86, 0xce, 0x31, 0xb1, 0x6f, 0x87, 0x83, 0x10, - 0x93, 0x97, 0xf4, 0x77, 0xa4, 0xf4, 0x2a, 0x0e, 0x50, 0xcf, 0xf3, 0x3b, 0xd1, 0x95, 0x3e, 0x2b, - 0x10, 0xb4, 0xb4, 0xdd, 0x05, 0x6f, 0x19, 0xe1, 0x13, 0x35, 0x21, 0x93, 0xf3, 0x47, 0x59, 0x1e, - 0x51, 0x8c, 0xaa, 0x91, 0xfd, 0xa9, 0x0a, 0xd7, 0x63, 0x79, 0x37, 0x02, 0xd1, 0x59, 0x5c, 0x0f, - 0x03, 0x48, 0xed, 0x99, 0x06, 0x13, 0x2f, 0xb6, 0x17, 0x4b, 0x93, 0x7a, 0x81, 0x0c, 0x7d, 0xdf, - 0x13, 0x43, 0xb5, 0xe7, 0x7b, 0xf5, 0xc4, 0x23, 0xbd, 0xe8, 0x56, 0xc5, 0xee, 0x8b, 0xce, 0x2f, - 0x75, 0xd1, 0xed, 0x0a, 0x76, 0x7f, 0x74, 0x89, 0x51, 0x1b, 0x9f, 0x3a, 0xf5, 0xfe, 0x39, 0x6a, - 0x91, 0x76, 0xf5, 0xcf, 0x08, 0xfe, 0x82, 0x04, 0x54, 0x60, 0xf2, 0xf2, 0x40, 0x8a, 0xce, 0x1f, - 0x0a, 0xd3, 0x14, 0x95, 0xfe, 0x83, 0xd1, 0x19, 0xaf, 0x65, 0xf8, 0x2c, 0xac, 0x27, 0xc1, 0x34, - 0xae, 0x0f, 0x45, 0x6b, 0xbd, 0xc2, 0xf5, 0xe1, 0xe8, 0x74, 0x8f, 0x73, 0x7d, 0x24, 0x6a, 0x51, - 0xe1, 0xfa, 0xa8, 0x1c, 0xac, 0x10, 0x26, 0x2f, 0x8f, 0x81, 0xab, 0xc2, 0xaa, 0xb8, 0x3e, 0x1e, - 0x9d, 0x7d, 0x51, 0xae, 0xfb, 0x50, 0xfe, 0x34, 0x34, 0xa8, 0xc7, 0x27, 0x52, 0xfa, 0xdb, 0x80, - 0xda, 0x93, 0x9e, 0x8c, 0xd7, 0x18, 0xa6, 0xc0, 0x53, 0x7a, 0xd1, 0xa8, 0xd0, 0xc5, 0xeb, 0xc8, - 0xd3, 0x72, 0xff, 0x0a, 0x49, 0x01, 0x7c, 0x26, 0xaa, 0x9c, 0x76, 0xc3, 0x2f, 0x27, 0xcf, 0x46, - 0x93, 0xa4, 0x19, 0xc1, 0xe2, 0xb9, 0xe8, 0xca, 0xa8, 0x25, 0xda, 0xec, 0xf9, 0x58, 0x27, 0x63, - 0x87, 0x24, 0xb6, 0x3f, 0xd6, 0x49, 0xfd, 0x61, 0xc4, 0x15, 0xec, 0x85, 0x58, 0x2c, 0x25, 0x40, - 0xac, 0x17, 0x63, 0xb1, 0xf4, 0xb1, 0x4a, 0xc5, 0x7a, 0x49, 0x6f, 0x1e, 0x55, 0xfd, 0xfc, 0x1b, - 0xfa, 0x59, 0x29, 0x14, 0x80, 0x2f, 0x47, 0x95, 0x23, 0xfd, 0x7c, 0x25, 0x5a, 0xb8, 0xb1, 0x7e, - 0xbe, 0x1a, 0xdd, 0x21, 0xab, 0xfb, 0xf9, 0x5a, 0xac, 0xf0, 0xe2, 0xfd, 0x7c, 0x3d, 0x56, 0x78, - 0x91, 0x7e, 0xbe, 0x11, 0x8b, 0x15, 0xed, 0xe7, 0x9b, 0xb1, 0x58, 0x55, 0xfd, 0xfc, 0x7b, 0x8a, - 0x0e, 0xc7, 0x55, 0xf3, 0x90, 0x4a, 0x42, 0xc5, 0xfb, 0x47, 0xb4, 0x6b, 0xe4, 0x4e, 0xe1, 0x6f, - 0x45, 0xf3, 0x80, 0x4f, 0x1d, 0xae, 0x60, 0x6f, 0x63, 0xfa, 0x46, 0x40, 0xc4, 0xff, 0x67, 0x94, - 0x32, 0x21, 0x3a, 0xf6, 0x3b, 0xd1, 0x69, 0xaa, 0x40, 0xe5, 0xfe, 0xdd, 0x68, 0x58, 0xfd, 0xbd, - 0xc4, 0x15, 0xec, 0xbd, 0x58, 0xf7, 0x25, 0x8e, 0x20, 0xef, 0xc7, 0x72, 0x26, 0x05, 0x3a, 0xce, - 0x07, 0xd1, 0x32, 0x8c, 0xf4, 0xe1, 0xc3, 0x68, 0xcd, 0xea, 0x3e, 0x7c, 0x84, 0x3e, 0x44, 0x40, - 0xb8, 0xff, 0x38, 0x5a, 0x5e, 0xd1, 0x3e, 0x7c, 0x12, 0x9d, 0xbe, 0xf1, 0x3e, 0x7c, 0x1a, 0x0d, - 0x1b, 0xe9, 0xc3, 0x67, 0xb1, 0x52, 0x8d, 0xf4, 0xe1, 0xf3, 0x58, 0x7d, 0xc7, 0xfb, 0xf0, 0xaf, - 0x94, 0xb9, 0xda, 0x38, 0x74, 0xc6, 0x9a, 0x08, 0x57, 0xcf, 0x63, 0x0f, 0xa3, 0x57, 0xfe, 0xe9, - 0xb5, 0x11, 0x2a, 0x1c, 0x77, 0x18, 0xbd, 0xc6, 0xcd, 0x50, 0x23, 0xa1, 0xc6, 0xf1, 0x87, 0x99, - 0x8d, 0xc6, 0xca, 0x99, 0x6b, 0x25, 0x54, 0x3a, 0xe1, 0x30, 0xe2, 0x32, 0xe3, 0x3c, 0x0c, 0x75, - 0x4e, 0x04, 0x97, 0xe9, 0xf3, 0x31, 0x54, 0x38, 0x09, 0x5c, 0x66, 0x98, 0x97, 0xa1, 0xc6, 0xc9, - 0xe0, 0x32, 0xf3, 0xfc, 0x0c, 0x95, 0x4e, 0x39, 0x4c, 0x7d, 0x6f, 0x54, 0x1f, 0x03, 0xf6, 0xb5, - 0x99, 0x35, 0xc6, 0x9c, 0xb5, 0x8e, 0xcb, 0x9e, 0x68, 0xa3, 0xb7, 0x8c, 0x8e, 0x4c, 0x67, 0x3a, - 0xcd, 0x9e, 0x6c, 0xc3, 0xb7, 0xf0, 0x71, 0xcb, 0x67, 0x4f, 0xb5, 0xe1, 0xdb, 0xc8, 0xb8, 0xe5, - 0x4b, 0x8b, 0xe1, 0x6c, 0xcf, 0x37, 0xd8, 0xd3, 0x6d, 0xb4, 0x2f, 0xab, 0x1f, 0xa1, 0x3f, 0xd3, - 0x26, 0xbf, 0x64, 0x50, 0xe3, 0xa8, 0x0c, 0x7b, 0xb6, 0x8d, 0x76, 0x4a, 0x75, 0x86, 0x60, 0xcf, - 0xc1, 0x7f, 0x77, 0x41, 0xb0, 0xe7, 0xdb, 0x68, 0x75, 0xec, 0x9e, 0x2c, 0x79, 0xbe, 0xc8, 0x70, - 0x71, 0x04, 0xed, 0x6a, 0xfb, 0xe3, 0xd8, 0x91, 0x84, 0xbd, 0x10, 0xc7, 0xbe, 0x4e, 0xd8, 0x8b, - 0x08, 0x81, 0xff, 0xd5, 0xa0, 0x8a, 0x78, 0xa9, 0x0d, 0x1f, 0x1a, 0xa8, 0x29, 0x17, 0x99, 0x36, - 0x3a, 0x96, 0xa3, 0xad, 0x6a, 0xe9, 0x65, 0xa5, 0xe1, 0xda, 0x69, 0x37, 0xc3, 0x05, 0x7b, 0x05, - 0x84, 0xd5, 0x3a, 0xfd, 0x6a, 0x1b, 0xb6, 0x58, 0x34, 0xe8, 0x88, 0xd0, 0xe7, 0xe5, 0xac, 0x02, - 0x67, 0xaf, 0xb5, 0xe1, 0xa7, 0xe0, 0xbe, 0x57, 0x5c, 0x6b, 0x05, 0xbc, 0xed, 0x48, 0xf6, 0x3a, - 0x9c, 0xac, 0xe3, 0x93, 0x69, 0x17, 0x67, 0x88, 0x37, 0x74, 0x3b, 0x23, 0x7c, 0x6a, 0xbf, 0xd9, - 0x26, 0xbf, 0xb8, 0x05, 0xdc, 0x17, 0x48, 0xcb, 0xdf, 0xdb, 0xe4, 0x17, 0x37, 0x02, 0xd8, 0x3f, - 0xda, 0xe4, 0x75, 0xbc, 0xba, 0x09, 0x66, 0x6f, 0xb5, 0xc9, 0x8f, 0x7c, 0x81, 0xf0, 0xd9, 0xdb, - 0x78, 0xee, 0xcb, 0xfa, 0x4e, 0x91, 0xfd, 0xb3, 0x4d, 0xfe, 0xaa, 0x6f, 0x4c, 0xfa, 0x78, 0xa7, - 0x4d, 0xfe, 0x4a, 0x7d, 0x4c, 0xb0, 0x77, 0xe1, 0x4e, 0x0d, 0xd4, 0x7b, 0x6d, 0xb8, 0x5e, 0xf1, - 0x72, 0x96, 0xc0, 0x89, 0x20, 0x80, 0xf6, 0xfb, 0x11, 0xf4, 0x88, 0x10, 0xfd, 0x00, 0xf9, 0x88, - 0xe8, 0xb2, 0x0f, 0x23, 0x08, 0xf4, 0xd8, 0x47, 0x92, 0x82, 0xb7, 0x99, 0xfb, 0xec, 0x63, 0x49, - 0xa1, 0x64, 0xd9, 0x30, 0xff, 0x44, 0x52, 0x28, 0x59, 0x36, 0xfb, 0x14, 0x83, 0x49, 0x27, 0x3e, - 0xca, 0xe2, 0x67, 0x20, 0xb4, 0x3e, 0x87, 0x2d, 0xf4, 0x73, 0xf4, 0x6f, 0x7d, 0x2e, 0xfc, 0x65, - 0x21, 0x46, 0x7a, 0xbd, 0x6f, 0xb3, 0x63, 0xdb, 0xc9, 0x35, 0x2e, 0x5a, 0xd9, 0x71, 0x78, 0x1e, - 0x42, 0x4f, 0x8f, 0x6f, 0xc7, 0xf7, 0x57, 0x5e, 0xe2, 0x96, 0x60, 0x27, 0xb4, 0xe3, 0x77, 0x0d, - 0xf2, 0xc2, 0x9a, 0x9d, 0xd8, 0x2e, 0x3f, 0xc4, 0x4c, 0x70, 0x3f, 0xc0, 0x45, 0x3b, 0x3b, 0x49, - 0xc9, 0x81, 0xb0, 0x93, 0xdb, 0xf1, 0x8d, 0xc0, 0xc9, 0x8f, 0xcb, 0x2c, 0x9d, 0x22, 0xdd, 0x52, - 0x9b, 0x9d, 0xda, 0x8e, 0x4f, 0x3d, 0x9a, 0xfd, 0x69, 0xed, 0xf8, 0xdd, 0x07, 0xb1, 0x3f, 0x1d, - 0x5a, 0x99, 0x12, 0x45, 0x38, 0xa3, 0x5d, 0xfe, 0xbb, 0x83, 0x9f, 0x2b, 0x96, 0xd8, 0x99, 0xed, - 0x6a, 0x49, 0x09, 0xc0, 0xbd, 0x92, 0xcf, 0xb3, 0xe2, 0x82, 0x4a, 0x4a, 0xcf, 0x6e, 0x57, 0x6b, - 0x5f, 0xc4, 0x82, 0x9d, 0x13, 0x07, 0x65, 0x62, 0xcf, 0x8d, 0x83, 0x69, 0xd7, 0xe6, 0x93, 0xec, - 0x3c, 0x70, 0xcc, 0x7a, 0xaa, 0xb2, 0xce, 0x97, 0x4d, 0xdf, 0x29, 0xe2, 0xcc, 0xf7, 0x23, 0xf4, - 0x8e, 0x9a, 0xd2, 0xef, 0x8f, 0xc3, 0xb6, 0x74, 0x79, 0x01, 0xfa, 0x31, 0xec, 0xae, 0xe3, 0x93, - 0x6c, 0x0b, 0x64, 0xc3, 0xa5, 0x12, 0x97, 0x65, 0x75, 0xa1, 0x94, 0x51, 0x9b, 0x6d, 0x6d, 0xa7, - 0x82, 0xac, 0xcc, 0x55, 0x76, 0x51, 0xbb, 0xfc, 0xed, 0xc6, 0x66, 0xa5, 0x7c, 0x71, 0x3b, 0x55, - 0x7e, 0xf8, 0xfb, 0xd3, 0xf0, 0x15, 0xb3, 0xdd, 0x3c, 0xc4, 0xa8, 0xd3, 0x70, 0x67, 0xb1, 0x14, - 0xfb, 0x05, 0xfa, 0xa5, 0xed, 0x34, 0x21, 0xe5, 0xef, 0x4a, 0xb5, 0xc5, 0x65, 0xed, 0xb4, 0x8c, - 0x03, 0xab, 0x56, 0xbf, 0x5c, 0x77, 0xd5, 0x71, 0x2d, 0x7f, 0x8a, 0x5d, 0xd1, 0x1e, 0xce, 0x2a, - 0x09, 0x6c, 0xfb, 0xa2, 0x60, 0x38, 0x45, 0x6f, 0x9f, 0xd1, 0x31, 0x44, 0x3b, 0xda, 0xa3, 0xbf, - 0x88, 0x05, 0xb4, 0xb3, 0x3d, 0xfc, 0x35, 0x2b, 0xda, 0xbb, 0xda, 0xd7, 0xfc, 0x30, 0xfa, 0xcf, - 0x94, 0xf8, 0x8f, 0x3a, 0x73, 0x85, 0xb1, 0xbc, 0x0a, 0x4a, 0xbb, 0x13, 0x56, 0xc1, 0xb1, 0xd9, - 0x2c, 0xf3, 0x60, 0x63, 0x59, 0x95, 0x2c, 0x33, 0xee, 0x95, 0x0b, 0x36, 0x4b, 0x98, 0x75, 0xc6, - 0x41, 0x55, 0xa2, 0xfe, 0x72, 0x20, 0xd8, 0xec, 0x19, 0xfc, 0x91, 0x60, 0xc0, 0x13, 0x6c, 0xce, - 0x9a, 0xd3, 0x13, 0xb8, 0x53, 0xab, 0xfa, 0xdf, 0xbc, 0xb8, 0x89, 0x46, 0x07, 0x3c, 0x97, 0xb3, - 0x59, 0xe6, 0x97, 0x8c, 0xba, 0x19, 0xfe, 0x9b, 0xcf, 0xf3, 0x02, 0xc1, 0x12, 0xe6, 0xa1, 0xb8, - 0x89, 0xab, 0x12, 0x76, 0x71, 0x29, 0x9e, 0x6d, 0x1e, 0x62, 0x24, 0x67, 0xf0, 0xcb, 0xf3, 0x94, - 0x8c, 0x39, 0x6b, 0x7e, 0x10, 0xe5, 0xa2, 0xff, 0x91, 0x35, 0xde, 0x65, 0x42, 0x2b, 0xd9, 0x58, - 0x5e, 0x6d, 0x80, 0x9b, 0xc2, 0x84, 0x99, 0x34, 0x96, 0xc6, 0xf1, 0x41, 0xfc, 0x0b, 0x2b, 0x9b, - 0x3d, 0x83, 0x44, 0xde, 0x07, 0xce, 0x59, 0xc3, 0x8d, 0x25, 0x55, 0xff, 0xb7, 0x86, 0xff, 0x82, - 0xf1, 0x8a, 0xa5, 0x02, 0x17, 0x1c, 0x97, 0x3a, 0xb3, 0xcc, 0xc5, 0x58, 0xa4, 0xad, 0x02, 0x9a, - 0x09, 0x52, 0x18, 0xb4, 0x7c, 0xe1, 0x58, 0x85, 0xc3, 0x81, 0xcc, 0x8e, 0x20, 0xad, 0x40, 0xe6, - 0x90, 0x49, 0x17, 0xb7, 0xcb, 0x25, 0x34, 0xe7, 0xae, 0xfd, 0xca, 0x9e, 0xfd, 0x2b, 0x13, 0x0f, - 0xec, 0x5f, 0x99, 0x78, 0x6e, 0xff, 0xca, 0xc4, 0xd6, 0x17, 0x56, 0xce, 0x32, 0x96, 0xe5, 0xbc, - 0x62, 0x4b, 0xc9, 0x71, 0xf3, 0x39, 0xab, 0xd4, 0x22, 0x1c, 0x7b, 0x14, 0xff, 0x9d, 0x36, 0x98, - 0xf8, 0xbf, 0x00, 0x00, 0x00, 0xff, 0xff, 0x91, 0xf3, 0x78, 0x4e, 0x30, 0x3d, 0x00, 0x00, + 0x9e, 0x0c, 0x78, 0x36, 0x7c, 0x3d, 0x06, 0xe7, 0x03, 0x9e, 0xad, 0xc5, 0x8f, 0x63, 0x54, 0x06, + 0x3c, 0x9b, 0x5c, 0xec, 0x4b, 0xd0, 0x56, 0x33, 0x42, 0x66, 0xc4, 0x0d, 0x9c, 0x82, 0xcb, 0x6d, + 0xf6, 0x44, 0xc2, 0x3c, 0xd4, 0xa8, 0x57, 0xf9, 0xd0, 0x68, 0x28, 0x7d, 0x32, 0x61, 0xae, 0x32, + 0x56, 0xd4, 0x48, 0xb3, 0x52, 0xf6, 0x54, 0x54, 0x96, 0x8d, 0xdb, 0x3d, 0x8d, 0x78, 0x31, 0x99, + 0xb2, 0x7a, 0x26, 0x61, 0x7e, 0xc9, 0x58, 0x29, 0x69, 0xcd, 0x08, 0xf7, 0x6c, 0xc2, 0x3c, 0xc4, + 0x58, 0x1e, 0x17, 0x2a, 0xbb, 0xe7, 0x22, 0xa2, 0x9a, 0x60, 0xcf, 0x27, 0xcc, 0x7a, 0xc3, 0x8c, + 0x8a, 0x94, 0xcd, 0xfe, 0x84, 0xf9, 0x65, 0x23, 0xa9, 0x87, 0x6e, 0x46, 0xb4, 0x17, 0x24, 0x95, + 0x1a, 0xb1, 0xb2, 0x7d, 0x31, 0x26, 0xac, 0x89, 0xf8, 0x92, 0x24, 0x13, 0x13, 0x2a, 0xbb, 0xbf, + 0x25, 0xcc, 0x66, 0x63, 0xb5, 0x16, 0xf5, 0x7a, 0x7e, 0xbe, 0x6a, 0x17, 0xda, 0xbf, 0x9c, 0x30, + 0x9b, 0x8c, 0x43, 0x67, 0x57, 0x52, 0x7e, 0x5e, 0x99, 0x45, 0xa5, 0x86, 0xc5, 0xab, 0x50, 0x89, + 0x96, 0xca, 0x8c, 0x40, 0xaf, 0x25, 0xcc, 0x06, 0x63, 0xd5, 0x6c, 0x2a, 0x2a, 0xcc, 0xeb, 0x48, + 0x51, 0x54, 0x21, 0xd6, 0x9b, 0x37, 0x66, 0xd8, 0xd7, 0x70, 0x78, 0x13, 0x55, 0x96, 0x1e, 0xc3, + 0xdc, 0xf8, 0x0d, 0xa3, 0x8a, 0x4c, 0x8f, 0x05, 0x23, 0xd4, 0xfa, 0xad, 0x6e, 0xa1, 0x3e, 0x7f, + 0xc7, 0x70, 0x0c, 0x1b, 0x0b, 0xe7, 0xd5, 0xef, 0x19, 0x5e, 0xaa, 0xdc, 0xa1, 0x25, 0x37, 0xe7, + 0x75, 0xf3, 0x3c, 0xbb, 0x21, 0x0e, 0x91, 0x93, 0x1b, 0x43, 0xa8, 0x9b, 0xe7, 0x25, 0x74, 0x53, + 0x1c, 0x22, 0xc3, 0x9b, 0x19, 0x0e, 0x41, 0xdc, 0x91, 0x8b, 0xf5, 0x2d, 0x8c, 0xe6, 0x55, 0x6f, + 0xd1, 0xf3, 0xfc, 0xd0, 0xf7, 0xad, 0x35, 0x18, 0x79, 0xba, 0xad, 0x8a, 0x85, 0xde, 0x6f, 0xaf, + 0xc1, 0xc8, 0xf6, 0x0e, 0x46, 0xab, 0x04, 0x30, 0xf8, 0xbf, 0x93, 0xc9, 0xe3, 0x59, 0xc5, 0x95, + 0x73, 0x6f, 0x2f, 0xc2, 0xa3, 0x4d, 0x2e, 0xee, 0xad, 0x36, 0xc9, 0xfa, 0x3e, 0x66, 0xae, 0x34, + 0x0e, 0x42, 0xf3, 0x28, 0x47, 0x4c, 0xf4, 0xfa, 0x56, 0x5e, 0xae, 0x35, 0x8c, 0xa6, 0x75, 0x0c, + 0x27, 0xeb, 0x07, 0x66, 0xc2, 0xe4, 0xe5, 0x4f, 0xc8, 0x66, 0xbf, 0x57, 0x38, 0x2c, 0xed, 0x17, + 0xd8, 0x43, 0x08, 0xd1, 0xef, 0x15, 0xda, 0xd3, 0x7e, 0x21, 0x60, 0x0f, 0x33, 0x9c, 0xeb, 0xbc, + 0x42, 0x3b, 0x7b, 0x84, 0xd1, 0x12, 0x4f, 0x7a, 0xeb, 0xd8, 0xa3, 0x4c, 0x1d, 0x1b, 0x6d, 0xf6, + 0x18, 0xa3, 0x8a, 0xa5, 0x47, 0x72, 0x9a, 0xe5, 0xdc, 0xc6, 0x81, 0xaf, 0x8f, 0xbb, 0xec, 0x71, + 0x46, 0x27, 0xc1, 0x21, 0x6f, 0x0b, 0xdb, 0x07, 0xfd, 0x2e, 0xcf, 0x9d, 0x64, 0x4f, 0xc0, 0x4d, + 0xd7, 0x70, 0xd7, 0xe1, 0xed, 0xec, 0x49, 0xc0, 0x34, 0xf0, 0xec, 0x29, 0xf9, 0x78, 0xb4, 0x2f, + 0xd8, 0xd3, 0x78, 0x4c, 0xe7, 0xbd, 0x80, 0x3d, 0x23, 0x1f, 0x03, 0xc7, 0x65, 0xcf, 0x82, 0x58, + 0x5a, 0x58, 0x2e, 0x78, 0x3e, 0x87, 0x4c, 0x51, 0x53, 0x12, 0x7d, 0x1e, 0xb1, 0xba, 0xbc, 0x80, + 0xed, 0x57, 0x4f, 0x82, 0xbd, 0x80, 0x9e, 0x75, 0xf3, 0x82, 0xcf, 0x79, 0xc0, 0x5e, 0x04, 0xde, + 0x33, 0x55, 0x66, 0x2f, 0x31, 0x73, 0x81, 0x31, 0x67, 0x28, 0xc3, 0xfe, 0x06, 0x85, 0x61, 0xcb, + 0x76, 0x2c, 0x37, 0x60, 0x2f, 0x43, 0x21, 0xeb, 0xb8, 0xec, 0x15, 0x3c, 0xe5, 0x2c, 0x97, 0xbd, + 0xca, 0x68, 0xad, 0xcd, 0xf9, 0x15, 0x37, 0x6f, 0x09, 0xac, 0x99, 0xaf, 0xa1, 0x48, 0x34, 0x82, + 0x7c, 0xbf, 0x4e, 0x47, 0xac, 0x65, 0x1a, 0xd2, 0x65, 0xf8, 0x46, 0x4c, 0x71, 0xc4, 0x71, 0x05, + 0x7b, 0x13, 0xa5, 0xda, 0xef, 0x15, 0x9c, 0xbc, 0x55, 0x4c, 0xbb, 0x36, 0xbb, 0x3c, 0x89, 0x1d, + 0x83, 0x04, 0x36, 0xf8, 0xec, 0x8a, 0x64, 0x44, 0xe1, 0xbb, 0x9e, 0xcf, 0xae, 0x4c, 0x52, 0xfc, + 0x11, 0xd7, 0xf2, 0xa7, 0x07, 0x3d, 0xec, 0x4c, 0xb6, 0x25, 0x29, 0x98, 0x46, 0x74, 0xb0, 0xed, + 0x49, 0x0a, 0xa6, 0x51, 0xb0, 0xda, 0x11, 0x83, 0xbe, 0x93, 0xdd, 0x30, 0xc8, 0x76, 0x26, 0xa9, + 0x04, 0x01, 0x85, 0xaf, 0x9d, 0x5d, 0x49, 0x7a, 0xfb, 0x55, 0x31, 0xd8, 0xee, 0x4e, 0x52, 0x65, + 0x55, 0x41, 0x1d, 0xe6, 0x2a, 0x38, 0x50, 0xad, 0x4c, 0x80, 0x3b, 0xa7, 0xab, 0xe1, 0x40, 0xbf, + 0x38, 0x15, 0x78, 0x0d, 0x3a, 0x42, 0xbe, 0x14, 0x70, 0x2d, 0xd8, 0xc8, 0x57, 0xb0, 0x82, 0xae, + 0x83, 0x0e, 0xbd, 0x82, 0x15, 0x70, 0x3d, 0xb2, 0x91, 0x71, 0x85, 0x6a, 0xff, 0x18, 0x0a, 0xf4, + 0xf6, 0x55, 0xc0, 0x4f, 0xa0, 0x20, 0xaf, 0x63, 0xb2, 0x4e, 0x81, 0xfd, 0x34, 0x49, 0x35, 0x81, + 0xdb, 0x18, 0x6a, 0xfe, 0x4c, 0x8b, 0xbf, 0xeb, 0xa1, 0xfd, 0x73, 0xdd, 0x1e, 0xe4, 0x05, 0x6a, + 0xff, 0xa2, 0xea, 0x3f, 0xe7, 0x57, 0x38, 0xfb, 0x65, 0x84, 0x24, 0x80, 0x5f, 0xc5, 0xbb, 0x07, + 0xec, 0xd7, 0x50, 0x82, 0x51, 0xaf, 0x55, 0x0c, 0x38, 0xfb, 0x0d, 0x86, 0x44, 0x5a, 0x49, 0xe4, + 0xb7, 0x32, 0x03, 0xda, 0x4c, 0x82, 0xbf, 0x93, 0x43, 0xcb, 0xc7, 0x45, 0x76, 0xc2, 0x19, 0x17, + 0xec, 0x06, 0x19, 0xcc, 0x29, 0x4c, 0x28, 0xe0, 0x46, 0xe4, 0x38, 0x64, 0x43, 0xb3, 0x07, 0x9d, + 0xfc, 0x63, 0x92, 0x5e, 0x3a, 0x55, 0x56, 0xa1, 0xe0, 0x9e, 0x24, 0xbd, 0x16, 0x63, 0xec, 0x42, + 0xd9, 0x1e, 0x18, 0x55, 0x59, 0x86, 0x82, 0xbd, 0x49, 0x7a, 0x5f, 0x46, 0xd8, 0x86, 0x92, 0x7b, + 0x93, 0xf4, 0x1e, 0x8a, 0xb3, 0x0e, 0x85, 0xf7, 0xe9, 0xcc, 0xca, 0x1b, 0xb5, 0xdf, 0xa3, 0x87, + 0x7d, 0x5c, 0x0c, 0x59, 0xbe, 0x55, 0x52, 0x1b, 0xa9, 0x9b, 0x92, 0xd8, 0x63, 0x72, 0x31, 0x6a, + 0xf9, 0xec, 0x66, 0x34, 0x86, 0xbd, 0x2d, 0x94, 0xe8, 0x5b, 0xd0, 0xc8, 0x4a, 0xc9, 0xad, 0x48, + 0x2a, 0x6e, 0x78, 0xc2, 0x3a, 0xba, 0x0d, 0xfe, 0x14, 0xa6, 0xb7, 0x5c, 0xb7, 0x27, 0xc3, 0x2b, + 0x3e, 0x54, 0xe6, 0x1d, 0xc8, 0x98, 0x6c, 0xa3, 0x7c, 0xef, 0x8c, 0x00, 0x28, 0xd3, 0xbb, 0x50, + 0x54, 0x12, 0x50, 0xa4, 0xee, 0x8e, 0xe8, 0x60, 0x77, 0xf7, 0x87, 0x24, 0xad, 0x37, 0x19, 0x97, + 0x3c, 0x6e, 0x6f, 0x20, 0x5e, 0x19, 0x57, 0xce, 0x8f, 0x06, 0x59, 0x0d, 0x9a, 0x93, 0xbc, 0xef, + 0xca, 0xb8, 0xca, 0xd1, 0x2e, 0xa5, 0x0b, 0x27, 0xbb, 0x1b, 0x64, 0x11, 0x84, 0x5c, 0xaf, 0x52, + 0x52, 0x6c, 0x0d, 0xaf, 0x96, 0x9e, 0xc6, 0x29, 0x73, 0x14, 0xe6, 0xa4, 0x46, 0x68, 0xa3, 0x8d, + 0x50, 0x27, 0x37, 0x52, 0x0a, 0x24, 0xa0, 0xc3, 0x9d, 0x82, 0x13, 0x85, 0xc4, 0x54, 0xc8, 0x53, + 0x23, 0x76, 0x08, 0x7b, 0x1a, 0x0e, 0x2f, 0xca, 0x4e, 0x87, 0x3e, 0xbd, 0x11, 0x1d, 0x1a, 0xa7, + 0x48, 0x67, 0x34, 0x82, 0xc6, 0x38, 0xa2, 0x9c, 0xd9, 0x28, 0x69, 0xe8, 0x08, 0x67, 0xe1, 0x48, + 0x93, 0x19, 0x57, 0xde, 0xcf, 0x56, 0xba, 0xf0, 0x7c, 0x8e, 0x0a, 0x15, 0x7a, 0x3d, 0x37, 0x12, + 0x1b, 0x9d, 0x3a, 0x4f, 0xa9, 0xcb, 0xed, 0x3d, 0xce, 0x3a, 0x5d, 0x56, 0xc0, 0x8f, 0x9a, 0xe0, + 0x48, 0xe5, 0x5b, 0xf2, 0xe4, 0xaa, 0x10, 0xc4, 0x7f, 0x5b, 0x9e, 0x90, 0x15, 0xa4, 0x59, 0xfc, + 0x53, 0x9e, 0x90, 0x15, 0xaa, 0xb8, 0xbc, 0x13, 0xb3, 0x06, 0xa3, 0x77, 0xe5, 0x09, 0x59, 0x5b, + 0x6b, 0x5e, 0xef, 0xc5, 0x34, 0x41, 0xe6, 0x7d, 0x50, 0x4d, 0xa3, 0x9a, 0xfc, 0xe9, 0xb2, 0x60, + 0x17, 0x34, 0x2b, 0xa0, 0xc7, 0x95, 0xc0, 0x85, 0xcd, 0x78, 0x6b, 0x7b, 0x25, 0x7c, 0x08, 0x65, + 0x17, 0x35, 0xe3, 0xc6, 0xb7, 0xfb, 0x1b, 0x6c, 0x2b, 0x04, 0x43, 0x56, 0x10, 0x6c, 0xf1, 0x7c, + 0x9b, 0x5d, 0xdc, 0x8c, 0xa9, 0x6c, 0xb9, 0xb6, 0x57, 0x92, 0x17, 0xdf, 0x97, 0x34, 0xe3, 0x35, + 0x74, 0x64, 0xfa, 0x30, 0x76, 0xa9, 0x7e, 0x6c, 0x67, 0x97, 0x21, 0xc0, 0x88, 0x9b, 0xd7, 0x1e, + 0x2f, 0x6f, 0xa6, 0xe9, 0x56, 0x05, 0xb8, 0xdd, 0xcf, 0xdd, 0x82, 0x98, 0x60, 0x57, 0x34, 0x13, + 0xdd, 0x2a, 0xb7, 0xcc, 0x28, 0xbb, 0x52, 0x43, 0x8a, 0x5d, 0x66, 0x94, 0x6d, 0x6b, 0xc6, 0xd1, + 0xc9, 0xcd, 0x7b, 0x36, 0x67, 0xdb, 0xd1, 0xe8, 0xe6, 0x68, 0xec, 0x00, 0xd5, 0xec, 0xc0, 0xe1, + 0x6c, 0x27, 0xa8, 0x76, 0x5b, 0xc2, 0x1a, 0xb3, 0x02, 0xce, 0xae, 0x6d, 0xc6, 0x4e, 0x01, 0x3b, + 0x03, 0x6f, 0x4b, 0xc0, 0xae, 0x03, 0xf5, 0xae, 0x8a, 0xef, 0x73, 0x57, 0x8c, 0x04, 0xdc, 0x67, + 0xd7, 0x83, 0x2f, 0x1e, 0x7f, 0xdc, 0x2c, 0xaf, 0x15, 0x5c, 0x97, 0xe3, 0xc3, 0x46, 0xa6, 0x9b, + 0xfd, 0x04, 0x50, 0x3f, 0x8e, 0xb7, 0x01, 0xf7, 0x45, 0xa6, 0x9b, 0xfd, 0x14, 0x9d, 0x88, 0x42, + 0x34, 0xfd, 0x33, 0xdd, 0xec, 0x67, 0xcd, 0xb8, 0x82, 0x96, 0x5f, 0xc8, 0xd8, 0xcf, 0x11, 0x49, + 0x5e, 0xc8, 0x4b, 0xe4, 0x17, 0xcd, 0x72, 0x1b, 0xb2, 0x45, 0x2e, 0x0e, 0xbf, 0x6c, 0xa6, 0x82, + 0xcc, 0x16, 0x39, 0x2f, 0xb3, 0x7b, 0x9a, 0xe5, 0x7e, 0x21, 0xbf, 0x99, 0xed, 0x91, 0xc9, 0xe5, + 0x45, 0x6e, 0x05, 0x1c, 0xc8, 0xde, 0x66, 0x2a, 0x10, 0x7d, 0xe9, 0xe7, 0x4e, 0xcb, 0x5b, 0xdf, + 0x7b, 0x9b, 0x69, 0xe0, 0xc3, 0x5b, 0x22, 0x0d, 0xdf, 0xd7, 0xac, 0x0e, 0xcf, 0x21, 0x72, 0x3f, + 0xba, 0x40, 0x2b, 0x41, 0x08, 0x3d, 0x00, 0x08, 0x97, 0x9d, 0x1a, 0xfa, 0x53, 0x33, 0xd5, 0x9b, + 0xba, 0xb6, 0xd3, 0xe0, 0x9f, 0xa1, 0x87, 0x5b, 0x33, 0x0d, 0x3d, 0xd8, 0x2c, 0xa7, 0x3b, 0x17, + 0x69, 0xe1, 0xb9, 0xec, 0x2f, 0x61, 0x73, 0x50, 0x78, 0x16, 0xfb, 0x6b, 0xb3, 0x5c, 0x1c, 0xb8, + 0xe8, 0x80, 0xf8, 0xa1, 0x6a, 0x1b, 0xf2, 0x87, 0x31, 0x68, 0x99, 0x20, 0x33, 0x34, 0x79, 0x04, + 0x7b, 0x04, 0xde, 0x65, 0x83, 0x8a, 0xce, 0x12, 0xec, 0xd1, 0x08, 0x34, 0x60, 0x95, 0xcb, 0xdc, + 0x66, 0x8f, 0x55, 0x4d, 0x3a, 0xd8, 0xe3, 0x72, 0xb0, 0x46, 0x32, 0xdd, 0x6c, 0x1f, 0x8a, 0x6b, + 0xd4, 0x11, 0x3c, 0x08, 0x8e, 0xb4, 0x82, 0x09, 0xf6, 0x84, 0x52, 0x84, 0xf4, 0x49, 0x04, 0xa6, + 0xec, 0x67, 0x27, 0x2c, 0xdf, 0x66, 0x4f, 0x35, 0x87, 0xdf, 0x29, 0x1c, 0x17, 0x6f, 0xb5, 0xa7, + 0x25, 0xf3, 0xa2, 0xb3, 0x99, 0x53, 0xf3, 0x91, 0x26, 0x6c, 0xe7, 0x54, 0xeb, 0xd1, 0x26, 0x6c, + 0x28, 0x79, 0x81, 0x4f, 0x95, 0xa9, 0xfd, 0x58, 0x13, 0xad, 0x44, 0xb2, 0x3d, 0x92, 0xeb, 0xfd, + 0x26, 0x61, 0x8f, 0x47, 0x30, 0x6d, 0xb7, 0xaf, 0x09, 0x5b, 0xcb, 0x10, 0xd3, 0xba, 0x4f, 0x34, + 0x51, 0x76, 0x25, 0x8e, 0xa5, 0x92, 0xc0, 0x27, 0x9b, 0xe4, 0x1b, 0x2b, 0x04, 0xb5, 0xf6, 0x53, + 0x4d, 0xd8, 0x71, 0x42, 0x30, 0xcc, 0xcb, 0x45, 0x2b, 0x0f, 0xe7, 0x4f, 0x37, 0x61, 0xcb, 0x18, + 0x85, 0xb5, 0xc5, 0x33, 0x4d, 0x54, 0x22, 0x8a, 0x6f, 0x65, 0x2c, 0x90, 0x01, 0x9e, 0x6d, 0x92, + 0x2f, 0xb1, 0x2a, 0xaa, 0xf5, 0x9f, 0x03, 0x1f, 0x5a, 0x16, 0x7a, 0xa6, 0x84, 0x6f, 0xe5, 0xe9, + 0x14, 0xc1, 0x4e, 0x6b, 0xd1, 0xe0, 0x88, 0x7b, 0x74, 0xc5, 0x13, 0x08, 0x7a, 0x7a, 0x0b, 0x25, + 0x8e, 0xc0, 0xdc, 0x74, 0x19, 0xc8, 0x19, 0x2d, 0x7a, 0x7b, 0x91, 0xe5, 0xb0, 0x3b, 0xb3, 0x45, + 0x7f, 0x4a, 0x91, 0x13, 0x82, 0xb0, 0xb3, 0x42, 0x5f, 0x91, 0x0e, 0x9c, 0x1d, 0x2a, 0x0e, 0xf3, + 0x92, 0x37, 0x09, 0xec, 0x9c, 0x16, 0xfd, 0x69, 0x66, 0x80, 0xfb, 0x05, 0x40, 0xe7, 0xb6, 0xc4, + 0x3f, 0xcd, 0x10, 0x76, 0x5e, 0x4b, 0xec, 0x0b, 0x0e, 0x41, 0xe7, 0xb7, 0x50, 0x96, 0x08, 0x1a, + 0xb5, 0x8a, 0x8e, 0x0d, 0x42, 0x4e, 0x81, 0xfd, 0xb0, 0x85, 0x52, 0x41, 0xad, 0x2e, 0xcf, 0x15, + 0x96, 0xe3, 0x06, 0x84, 0xfe, 0xa8, 0x85, 0x72, 0x5d, 0xfd, 0x02, 0x54, 0x2e, 0x73, 0xb9, 0x17, + 0xba, 0x20, 0x2e, 0xa8, 0xf6, 0xe0, 0xc2, 0x16, 0x1a, 0xca, 0x90, 0xd8, 0x90, 0x25, 0xf2, 0x13, + 0x84, 0x5f, 0xd4, 0x42, 0xa3, 0x50, 0xc5, 0x7d, 0x1e, 0x70, 0x5f, 0xf6, 0x65, 0x6b, 0x0b, 0xe5, + 0x3b, 0x1a, 0x7a, 0xc8, 0x12, 0x30, 0xba, 0x38, 0xec, 0xd2, 0x90, 0xcf, 0x85, 0x00, 0xff, 0x4b, + 0xc2, 0x2e, 0x6d, 0xd4, 0xc9, 0xbe, 0x34, 0x54, 0xcb, 0x72, 0xcb, 0x97, 0xf1, 0x2e, 0x0b, 0x09, + 0x66, 0x85, 0xe7, 0x5b, 0x94, 0xa2, 0x63, 0xa0, 0x7c, 0x79, 0x68, 0xdf, 0xcd, 0xcb, 0x32, 0xcc, + 0x15, 0xe1, 0x60, 0xfd, 0x07, 0x9f, 0x46, 0xbf, 0xaf, 0x0c, 0x3d, 0xca, 0x95, 0x96, 0xb0, 0x6d, + 0x61, 0xe2, 0x48, 0x0b, 0xe7, 0x00, 0x82, 0xb7, 0x87, 0x81, 0x90, 0x4f, 0xb9, 0x14, 0x90, 0x60, + 0x47, 0x5c, 0xb0, 0x41, 0x4c, 0x70, 0x1f, 0x16, 0x3b, 0x6b, 0xa9, 0xf5, 0xfa, 0x1c, 0xd4, 0x76, + 0x85, 0x63, 0x30, 0xc0, 0x4b, 0x63, 0xdc, 0xdf, 0x30, 0x4e, 0xe8, 0x6e, 0x10, 0x1e, 0xe5, 0xf9, + 0x74, 0x90, 0xe3, 0x53, 0x48, 0xf2, 0xfb, 0x28, 0x93, 0x51, 0x9e, 0xef, 0xf5, 0xbd, 0x92, 0x06, + 0x3f, 0x40, 0x81, 0x8d, 0xf2, 0x7c, 0xb7, 0x53, 0x42, 0x9c, 0x0f, 0x41, 0x78, 0x94, 0xe7, 0xfb, + 0x0f, 0xeb, 0x76, 0x02, 0x61, 0xb9, 0xb2, 0x9c, 0x3e, 0x0a, 0xe1, 0xf6, 0x28, 0xfc, 0x71, 0x0b, + 0x1d, 0x91, 0x47, 0x79, 0x7e, 0x90, 0x17, 0x2c, 0xe1, 0x4c, 0xf2, 0x8c, 0xeb, 0x72, 0x7f, 0xc8, + 0xf7, 0xec, 0x8a, 0xac, 0xa5, 0x4f, 0x30, 0x82, 0xa3, 0x3c, 0xdf, 0xe5, 0x05, 0x8e, 0xcb, 0xa3, + 0xb6, 0x9f, 0x6a, 0x8a, 0xfd, 0xed, 0x83, 0x9e, 0x5f, 0x22, 0xe8, 0xb3, 0x16, 0x73, 0xb5, 0x71, + 0x48, 0xf4, 0x9b, 0x46, 0xfc, 0x03, 0xeb, 0xcd, 0xad, 0xb4, 0x1f, 0x24, 0x79, 0x0c, 0x97, 0x57, + 0xf4, 0xb7, 0xb4, 0x9a, 0x87, 0x1a, 0xf5, 0xb3, 0x08, 0xf1, 0xe6, 0xbf, 0xb5, 0x55, 0xbb, 0xae, + 0x91, 0xaa, 0xd7, 0xfd, 0x6d, 0xad, 0xd4, 0x93, 0x59, 0xe4, 0x7a, 0x93, 0x70, 0xfb, 0x17, 0xb9, + 0xc7, 0xd6, 0xe0, 0x8e, 0x56, 0xb3, 0xd1, 0xf8, 0xd2, 0x6c, 0xe6, 0x7a, 0x97, 0x70, 0xe7, 0x17, + 0xd9, 0x63, 0xc3, 0x70, 0x57, 0xab, 0xf9, 0xbf, 0x8c, 0xc6, 0x59, 0xa4, 0xf1, 0x04, 0xdc, 0xdd, + 0x4a, 0x13, 0x65, 0xa8, 0x58, 0xa9, 0xc1, 0x2f, 0x68, 0xc5, 0x2d, 0x10, 0x9d, 0x83, 0xe2, 0x82, + 0x0b, 0x5b, 0x69, 0x43, 0xae, 0xef, 0xbe, 0xe2, 0xb2, 0x8b, 0x20, 0x8b, 0xc7, 0xd3, 0xaf, 0x9e, + 0xad, 0x90, 0xe9, 0x5b, 0xff, 0xb8, 0xdd, 0xc5, 0xad, 0x54, 0x71, 0xfd, 0xb9, 0x38, 0x7a, 0x89, + 0x44, 0x7b, 0xe2, 0xe8, 0xa5, 0x40, 0xfb, 0x6a, 0x74, 0x2f, 0x83, 0x77, 0x7d, 0xb9, 0x1d, 0x97, + 0x5d, 0x8e, 0xae, 0xe0, 0x86, 0x3a, 0x2e, 0xb8, 0x42, 0xba, 0xaa, 0x09, 0x70, 0x25, 0xd0, 0x9e, + 0x8d, 0x71, 0x74, 0x1b, 0xd0, 0xc1, 0x1a, 0xdd, 0xed, 0xad, 0xb4, 0x66, 0xc8, 0x0b, 0xd3, 0xb8, + 0x64, 0x07, 0x24, 0x31, 0x4c, 0x9d, 0xe7, 0x76, 0xce, 0x26, 0xc1, 0xa9, 0x6b, 0x57, 0xab, 0x2a, + 0xed, 0xa8, 0x44, 0x1e, 0xac, 0x76, 0xa3, 0x1a, 0x66, 0x31, 0x0a, 0x0f, 0x2f, 0x57, 0xb5, 0x9a, + 0x4d, 0xc6, 0xa1, 0xb3, 0x19, 0x87, 0x2a, 0x57, 0x23, 0xb2, 0xdc, 0xee, 0xc6, 0xd9, 0x5e, 0x83, + 0xde, 0x65, 0xc6, 0xe3, 0xe8, 0xb5, 0x72, 0xc8, 0xd4, 0x36, 0x34, 0x2e, 0xbb, 0x0e, 0xd5, 0x5f, + 0xf3, 0x03, 0xa4, 0x9e, 0xf0, 0x47, 0x78, 0xec, 0xd1, 0x56, 0x9c, 0x2a, 0x2d, 0xc1, 0x7b, 0x3d, + 0xbf, 0x64, 0x61, 0xea, 0xbe, 0xdd, 0x46, 0x0b, 0x1c, 0x61, 0xfd, 0x8e, 0xe0, 0x3e, 0xed, 0x93, + 0xdb, 0xd4, 0x7e, 0x8f, 0x77, 0x3b, 0xe3, 0xe3, 0xec, 0x9d, 0x36, 0x7d, 0x71, 0x4d, 0x53, 0x00, + 0xd0, 0xbb, 0x6d, 0x34, 0x78, 0xd4, 0x94, 0xd3, 0x2a, 0x14, 0xbc, 0xd7, 0x86, 0x93, 0x9c, 0x9a, + 0x0c, 0x35, 0xc2, 0xf7, 0xdb, 0xcc, 0x2f, 0x1b, 0x49, 0x2d, 0xd4, 0x7f, 0x43, 0xf1, 0x07, 0x70, + 0x5a, 0xb5, 0x09, 0x05, 0x1f, 0xc2, 0xa9, 0x14, 0xcc, 0xb0, 0xfa, 0xa8, 0x8d, 0x86, 0x47, 0xad, + 0xac, 0xf1, 0x78, 0x1f, 0xb7, 0xd1, 0x62, 0xa6, 0x5d, 0x85, 0xf0, 0x27, 0x6d, 0xb4, 0xe1, 0xa1, + 0xee, 0xb1, 0x4f, 0xf1, 0x78, 0xa4, 0x57, 0xf1, 0xd9, 0x67, 0x6d, 0xb8, 0x4a, 0x76, 0xdc, 0x8a, + 0xe0, 0xec, 0xf3, 0x36, 0x79, 0x6a, 0xcc, 0x7b, 0xae, 0xcd, 0xfe, 0x85, 0x04, 0x0d, 0x38, 0x79, + 0xdf, 0x53, 0xc8, 0xb1, 0x29, 0xda, 0x66, 0x0e, 0x78, 0xae, 0x98, 0x60, 0xc7, 0xa5, 0x70, 0xbb, + 0x4e, 0xcf, 0x83, 0x56, 0x89, 0xb3, 0xe3, 0x53, 0xb8, 0xad, 0xf7, 0xb6, 0xd0, 0x00, 0xa7, 0xfd, + 0x02, 0x3b, 0x21, 0x85, 0x6f, 0x01, 0x12, 0xf0, 0x2a, 0x82, 0xb0, 0x13, 0x53, 0xb8, 0x0e, 0xb2, + 0xa6, 0x61, 0x72, 0x12, 0x4c, 0xba, 0xad, 0xe9, 0x0d, 0xe3, 0xd2, 0xe7, 0xc9, 0xf0, 0x09, 0xe0, + 0x28, 0xce, 0x37, 0xb3, 0x53, 0xaa, 0xed, 0xff, 0xe4, 0x96, 0xcf, 0x4e, 0x4d, 0xd1, 0x88, 0x90, + 0x88, 0x7c, 0x0e, 0xd0, 0x6e, 0xfd, 0xb4, 0x14, 0xd5, 0x8a, 0x86, 0xbc, 0x8a, 0x00, 0x7a, 0x3a, + 0xe2, 0x10, 0xda, 0x6d, 0x4d, 0xb3, 0x33, 0x10, 0x87, 0x5a, 0xca, 0xcf, 0x99, 0x29, 0xea, 0x3e, + 0x1e, 0xcf, 0x4a, 0x51, 0xae, 0xe8, 0x31, 0xe6, 0xf6, 0xec, 0x14, 0x15, 0x67, 0x14, 0xd6, 0xae, + 0xcf, 0x01, 0xa7, 0x3e, 0x2e, 0x64, 0x25, 0xb1, 0x73, 0x53, 0xd8, 0xec, 0x4e, 0x07, 0x94, 0x58, + 0x5c, 0xea, 0x05, 0x65, 0x76, 0x5e, 0x8a, 0xd6, 0xb1, 0x08, 0xe8, 0x55, 0x04, 0xe1, 0xe7, 0xa7, + 0x22, 0x47, 0x06, 0x8c, 0xc4, 0x0f, 0xc1, 0x5f, 0x21, 0x34, 0x54, 0xeb, 0x28, 0x4f, 0x3f, 0xaa, + 0x45, 0x71, 0xe1, 0x76, 0x01, 0x68, 0x63, 0x3d, 0xbe, 0x30, 0x25, 0x4f, 0x04, 0xa5, 0xb0, 0x78, + 0x2f, 0x42, 0x97, 0x47, 0x72, 0x5d, 0x70, 0xbb, 0x15, 0xfc, 0x47, 0x72, 0x5d, 0xa4, 0x12, 0x08, + 0xab, 0x54, 0xd6, 0xc3, 0x72, 0x71, 0x8a, 0x8a, 0xaa, 0x56, 0xa2, 0xc6, 0xe7, 0x12, 0x08, 0xd3, + 0xb6, 0x4d, 0x4e, 0x04, 0xf6, 0xea, 0x76, 0xf5, 0x53, 0x50, 0x8a, 0x2a, 0x2e, 0x2e, 0x54, 0x6f, + 0x97, 0xcb, 0x10, 0x2e, 0x6d, 0xdb, 0x28, 0x36, 0x4b, 0xa0, 0xe8, 0x30, 0xcb, 0x2f, 0xd7, 0x46, + 0xfa, 0x38, 0x50, 0xf5, 0x77, 0x45, 0x8a, 0xea, 0x3e, 0x2a, 0x52, 0xde, 0xae, 0x44, 0xf6, 0x94, + 0x37, 0x89, 0xc1, 0xd7, 0xb6, 0x90, 0x5d, 0x78, 0x52, 0xa9, 0x7a, 0xdb, 0x1e, 0xb2, 0xab, 0x0a, + 0x95, 0xbf, 0x1d, 0x31, 0x76, 0x4a, 0x2c, 0x57, 0x3f, 0x4d, 0x81, 0x38, 0x47, 0xbd, 0xed, 0x42, + 0x59, 0x54, 0x05, 0xca, 0xd3, 0x6e, 0x30, 0xc8, 0x56, 0xc6, 0x66, 0xcb, 0xcf, 0x55, 0x60, 0x10, + 0x17, 0x2a, 0xbb, 0xab, 0xc1, 0x20, 0x5b, 0x19, 0x9b, 0x91, 0x9f, 0x6b, 0xb4, 0xd1, 0xcc, 0xfc, + 0x5c, 0x0b, 0x72, 0x51, 0x91, 0xf2, 0x76, 0x9d, 0xac, 0x2e, 0xe9, 0x2d, 0x92, 0x9f, 0xeb, 0x43, + 0x76, 0xb3, 0xe4, 0xe7, 0xc7, 0x21, 0xbb, 0x19, 0xf9, 0xf9, 0x49, 0x8c, 0x5d, 0x34, 0x3f, 0x3f, + 0xd5, 0x14, 0x6a, 0xf3, 0xf3, 0x33, 0xe4, 0xa7, 0x2a, 0x50, 0x9e, 0x7e, 0x8e, 0x20, 0x23, 0xae, + 0x33, 0x15, 0x56, 0x97, 0x2a, 0x62, 0xf6, 0x0b, 0x58, 0xc4, 0x44, 0xb4, 0xab, 0xf9, 0xe5, 0x4c, + 0xb8, 0x9b, 0xe7, 0xd9, 0xaf, 0x52, 0xf2, 0xb7, 0x65, 0xee, 0x24, 0xf7, 0x45, 0xee, 0x18, 0xf6, + 0xeb, 0x14, 0x3e, 0xd4, 0x59, 0x9b, 0x91, 0x3d, 0xf6, 0x9b, 0xb0, 0x89, 0xd9, 0xf0, 0x5b, 0x68, + 0x0f, 0x71, 0xdf, 0xf1, 0xec, 0xb4, 0x6d, 0xb3, 0xdf, 0x61, 0xc2, 0xcb, 0x36, 0x96, 0xbe, 0xdf, + 0x63, 0x72, 0x6c, 0xac, 0x58, 0xbe, 0xe0, 0x3e, 0xbb, 0x01, 0xea, 0x59, 0x9e, 0xcf, 0x79, 0x30, + 0xbf, 0x31, 0x25, 0x0f, 0x78, 0x25, 0x9e, 0xa3, 0x95, 0x8e, 0xdd, 0x94, 0xd2, 0x47, 0x55, 0xf0, + 0x21, 0x8f, 0x37, 0xa7, 0x68, 0x61, 0xcc, 0x79, 0xdd, 0xd6, 0x74, 0xc0, 0x6e, 0x91, 0xfa, 0x6a, + 0x55, 0x0c, 0xd8, 0xad, 0x58, 0x02, 0xd4, 0x94, 0xd2, 0xf3, 0xec, 0x36, 0x0c, 0x52, 0x04, 0x54, + 0x53, 0xec, 0x76, 0x2c, 0x8b, 0xa1, 0x73, 0x4c, 0xec, 0x3b, 0xe0, 0x20, 0xc4, 0xe4, 0x75, 0xfa, + 0x9d, 0x29, 0xbd, 0x8a, 0x03, 0xd4, 0xf3, 0xfc, 0x2e, 0x74, 0xa5, 0xdf, 0x0a, 0x04, 0x2d, 0x6d, + 0x77, 0xc3, 0x5b, 0x56, 0xf8, 0x44, 0x4d, 0xc8, 0xe4, 0xfc, 0x41, 0x96, 0x47, 0x14, 0xa3, 0x6a, + 0x64, 0x7f, 0xac, 0xc1, 0xf5, 0x58, 0xde, 0x83, 0x40, 0xb4, 0x6b, 0xd6, 0xc3, 0x00, 0x52, 0x7b, + 0x66, 0xc0, 0xc4, 0x8b, 0xed, 0xc5, 0xd2, 0xa4, 0x8e, 0x7a, 0xa1, 0xef, 0x7b, 0x63, 0xa8, 0xf6, + 0x7c, 0x9f, 0x9e, 0x78, 0xa4, 0x17, 0x7d, 0x55, 0xb1, 0xfb, 0xa3, 0xf3, 0x4b, 0x5d, 0x49, 0xbb, + 0x82, 0x3d, 0x10, 0x5d, 0x62, 0xd4, 0x8b, 0x4f, 0xed, 0x4f, 0xff, 0x14, 0xb5, 0xc8, 0xb8, 0xfa, + 0x83, 0xff, 0x9f, 0x91, 0x80, 0x2a, 0x4c, 0x5e, 0x1e, 0x4c, 0xd1, 0x4e, 0x41, 0x61, 0x9a, 0xa2, + 0xd2, 0xff, 0x4b, 0x74, 0xc6, 0x6b, 0x19, 0x3e, 0xe0, 0xea, 0x49, 0x30, 0x83, 0xeb, 0x43, 0xd1, + 0x5a, 0xaf, 0x72, 0x7d, 0x38, 0x3a, 0xdd, 0xe3, 0x5c, 0x1f, 0x89, 0x5a, 0x54, 0xb9, 0x3e, 0x2a, + 0x07, 0x2b, 0x84, 0xc9, 0xcb, 0x63, 0xe0, 0xaa, 0xb0, 0x1a, 0xae, 0x8f, 0x47, 0x67, 0x5f, 0x94, + 0xeb, 0x3e, 0x94, 0x3f, 0x0d, 0x0d, 0xea, 0xf1, 0x89, 0x94, 0xbe, 0xc5, 0x57, 0xef, 0xa4, 0x27, + 0xe3, 0x35, 0x86, 0x29, 0xf0, 0x94, 0x5e, 0x34, 0xaa, 0x74, 0x71, 0x70, 0x78, 0x5a, 0xbe, 0xbf, + 0x42, 0x52, 0x00, 0x9f, 0x89, 0x2a, 0x67, 0xdc, 0xf0, 0x1b, 0xc7, 0xb3, 0xd1, 0x24, 0x69, 0x46, + 0xb0, 0x78, 0x2e, 0xba, 0x32, 0x6a, 0x89, 0x36, 0x7b, 0x3e, 0xd6, 0xc9, 0xd8, 0x26, 0x89, 0xed, + 0x8f, 0x75, 0x52, 0x7f, 0xc2, 0x70, 0x05, 0x7b, 0x21, 0x16, 0x4b, 0x09, 0x10, 0xeb, 0xc5, 0x58, + 0x2c, 0xbd, 0xad, 0x52, 0xb1, 0x5e, 0xd2, 0x2f, 0x8f, 0x9a, 0x7e, 0xfe, 0x0d, 0xfd, 0xac, 0x16, + 0x0a, 0xc0, 0x97, 0xa3, 0xca, 0x91, 0x7e, 0xbe, 0x12, 0x2d, 0xdc, 0x58, 0x3f, 0x5f, 0x8d, 0xbe, + 0x21, 0x6b, 0xfb, 0xf9, 0x5a, 0xac, 0xf0, 0xe2, 0xfd, 0x7c, 0x3d, 0x56, 0x78, 0x91, 0x7e, 0xbe, + 0x11, 0x8b, 0x15, 0xed, 0xe7, 0x9b, 0xb1, 0x58, 0x35, 0xfd, 0xfc, 0x7b, 0x8a, 0xb6, 0xbc, 0x35, + 0xf3, 0x90, 0x4a, 0x42, 0xc5, 0xfb, 0x47, 0xb4, 0x6b, 0xe4, 0x4e, 0xe1, 0x6f, 0x45, 0xf3, 0x80, + 0x8f, 0x12, 0xae, 0x60, 0x6f, 0x63, 0xfa, 0x46, 0x40, 0xc4, 0xff, 0x67, 0x94, 0x32, 0x21, 0x3a, + 0xf6, 0x3b, 0xd1, 0x69, 0xaa, 0x40, 0xe5, 0xfe, 0xdd, 0x68, 0x58, 0xfd, 0x65, 0xc3, 0x15, 0xec, + 0xbd, 0x58, 0xf7, 0x25, 0x8e, 0x20, 0xef, 0xc7, 0x72, 0x26, 0x05, 0x3a, 0xce, 0x07, 0xd1, 0x32, + 0x8c, 0xf4, 0xe1, 0xc3, 0x68, 0xcd, 0xea, 0x3e, 0x7c, 0x84, 0x3e, 0x44, 0x40, 0xb8, 0xff, 0x38, + 0x5a, 0x5e, 0xd1, 0x3e, 0x7c, 0x12, 0x9d, 0xbe, 0xf1, 0x3e, 0x7c, 0x1a, 0x0d, 0x1b, 0xe9, 0xc3, + 0x67, 0xb1, 0x52, 0x8d, 0xf4, 0xe1, 0xf3, 0x58, 0x7d, 0xc7, 0xfb, 0xf0, 0xaf, 0x94, 0xb9, 0xc6, + 0xf8, 0xf2, 0xac, 0x35, 0x11, 0xae, 0x9e, 0xc7, 0xae, 0xa3, 0xc3, 0xf9, 0xcc, 0xda, 0x08, 0x15, + 0x8e, 0x5b, 0x47, 0x07, 0xae, 0x59, 0x6a, 0x24, 0xd4, 0x38, 0x7e, 0x9d, 0xd9, 0x6c, 0xac, 0x9e, + 0xbd, 0x56, 0x42, 0xa5, 0x13, 0xd6, 0x11, 0x97, 0x59, 0xe7, 0x61, 0xa8, 0x73, 0x22, 0xb8, 0xcc, + 0x9c, 0x8f, 0xa1, 0xc2, 0x49, 0xe0, 0x32, 0xcb, 0xbc, 0x0c, 0x35, 0x4e, 0x06, 0x97, 0xd9, 0xe7, + 0x67, 0xa8, 0x74, 0xca, 0x3a, 0xf5, 0x65, 0x50, 0x5d, 0xdb, 0xef, 0xeb, 0x30, 0x17, 0x1a, 0x73, + 0xd7, 0x3b, 0x2e, 0x7b, 0xa2, 0x83, 0x4e, 0x19, 0xe9, 0x6c, 0x57, 0x26, 0xc3, 0x9e, 0xec, 0xc0, + 0x57, 0xeb, 0x09, 0xcb, 0x67, 0x4f, 0x75, 0xe0, 0x2b, 0xc6, 0x84, 0xe5, 0x4b, 0x8b, 0x91, 0x5c, + 0xef, 0x37, 0xd9, 0xd3, 0x1d, 0xf4, 0x5e, 0x56, 0x3f, 0x17, 0x7f, 0xa6, 0x43, 0x7e, 0x73, 0xa0, + 0xc6, 0x51, 0x59, 0xf6, 0x6c, 0x07, 0xbd, 0x29, 0xd5, 0x1e, 0x82, 0x3d, 0x07, 0xff, 0x3d, 0x45, + 0xc1, 0x9e, 0xef, 0xa0, 0xd5, 0xb1, 0x67, 0xaa, 0xec, 0xf9, 0x22, 0xcb, 0xc5, 0xe1, 0xf4, 0x56, + 0xdb, 0x1f, 0xc7, 0x8e, 0x20, 0xec, 0x85, 0x38, 0xf6, 0x0d, 0xc2, 0x5e, 0x44, 0x08, 0xfc, 0x57, + 0x05, 0x55, 0xc4, 0x4b, 0x1d, 0xf8, 0x24, 0x40, 0x4d, 0xb9, 0xc8, 0x74, 0xd0, 0xb6, 0x1c, 0x6d, + 0x55, 0x4b, 0x2f, 0x2b, 0x0d, 0xd7, 0xce, 0xb8, 0x59, 0x2e, 0xd8, 0x2b, 0x20, 0xac, 0xd6, 0xe9, + 0x57, 0x3b, 0xf0, 0x8a, 0x45, 0x83, 0xb6, 0x08, 0xfd, 0x5e, 0xde, 0x2a, 0x72, 0xf6, 0x5a, 0x07, + 0x7e, 0xb4, 0xed, 0x7b, 0xa5, 0xf5, 0x56, 0xc0, 0x3b, 0x8e, 0x60, 0xaf, 0xc3, 0xc9, 0x91, 0x7c, + 0x2a, 0xe3, 0x62, 0x0f, 0xf1, 0x86, 0x6e, 0x67, 0x85, 0x4f, 0xed, 0x37, 0x3b, 0xe4, 0xb7, 0xb1, + 0x80, 0xfb, 0x02, 0x69, 0xf9, 0x7b, 0x87, 0xfc, 0x36, 0x46, 0x00, 0xfb, 0x47, 0x87, 0xbc, 0x38, + 0x57, 0x77, 0xb6, 0xec, 0xad, 0x0e, 0xf9, 0x39, 0x2e, 0x10, 0x3e, 0x7b, 0x1b, 0xcf, 0xfd, 0x39, + 0xdf, 0x29, 0xb1, 0x7f, 0x76, 0xc8, 0xdf, 0xdf, 0x8d, 0x4b, 0x1f, 0xef, 0x74, 0xc8, 0xdf, 0x93, + 0x8f, 0x0b, 0xf6, 0x2e, 0xdc, 0xa9, 0x81, 0x7a, 0xaf, 0x03, 0x17, 0x21, 0x5e, 0xde, 0x12, 0xd8, + 0x11, 0x04, 0xd0, 0x7e, 0x3f, 0x82, 0x1e, 0x1e, 0xa2, 0x1f, 0x20, 0x1f, 0x11, 0x5d, 0xf6, 0x61, + 0x04, 0x81, 0x1e, 0xfb, 0x48, 0x52, 0xf0, 0xb6, 0x70, 0x9f, 0x7d, 0x2c, 0x29, 0x94, 0x2d, 0x1b, + 0xe6, 0x9f, 0x48, 0x0a, 0x65, 0xcb, 0x66, 0x9f, 0x62, 0x30, 0x69, 0xc7, 0x47, 0x59, 0xfc, 0x0c, + 0x84, 0x36, 0xe4, 0xf1, 0x0a, 0xfd, 0x1c, 0xfd, 0xdb, 0x90, 0x0f, 0x7f, 0x03, 0x88, 0x91, 0xde, + 0xe0, 0xdb, 0xec, 0xd8, 0x4e, 0x72, 0x8d, 0x2b, 0x51, 0x76, 0x1c, 0x9e, 0x87, 0xd1, 0xd3, 0xe3, + 0x3b, 0xf1, 0xa5, 0x94, 0x97, 0xb9, 0x25, 0xd8, 0x09, 0x9d, 0xf8, 0x05, 0x82, 0xbc, 0x5a, 0x66, + 0x27, 0x76, 0xca, 0x4f, 0x26, 0x93, 0xdc, 0x0f, 0x70, 0x25, 0xce, 0x4e, 0x52, 0x72, 0x20, 0xec, + 0xe4, 0x4e, 0xdc, 0xe6, 0x3b, 0x85, 0x09, 0x99, 0xa5, 0x53, 0xa4, 0x5b, 0x6a, 0xb3, 0x53, 0x3b, + 0xf1, 0x51, 0x46, 0xb3, 0x3f, 0xad, 0x13, 0xbf, 0xd0, 0x20, 0xf6, 0xa7, 0x43, 0x2b, 0x5b, 0xa6, + 0x08, 0x67, 0x74, 0xca, 0x7f, 0x4c, 0xf0, 0xf3, 0xa5, 0x32, 0x3b, 0xb3, 0x53, 0x2d, 0x29, 0x01, + 0xb8, 0x57, 0xf3, 0x79, 0x56, 0x5c, 0x50, 0x4d, 0xe9, 0xd9, 0x9d, 0x6a, 0xed, 0x8b, 0x58, 0xb0, + 0x73, 0xe2, 0xa0, 0x4c, 0xec, 0xb9, 0x71, 0x30, 0xe3, 0xda, 0x7c, 0x8a, 0x9d, 0x07, 0x8e, 0x39, + 0x4f, 0x55, 0xd6, 0xf9, 0xb2, 0xe9, 0x3b, 0x25, 0xec, 0xf9, 0x7e, 0x88, 0xde, 0x51, 0x53, 0xfa, + 0xfd, 0x51, 0xd8, 0x96, 0x2e, 0x2f, 0x40, 0x3f, 0x46, 0xdc, 0x23, 0xf9, 0x14, 0xbb, 0x10, 0xb2, + 0x91, 0x72, 0x99, 0xcb, 0xb2, 0xba, 0x48, 0xca, 0xa8, 0xcd, 0xb6, 0x76, 0x52, 0x41, 0x56, 0xe7, + 0x2a, 0xbb, 0xb8, 0x53, 0xfe, 0xca, 0x62, 0x8b, 0x52, 0xbe, 0xa4, 0x93, 0x2a, 0x3f, 0xfc, 0xa5, + 0x68, 0x78, 0xc4, 0xec, 0x34, 0x0f, 0x35, 0xea, 0x35, 0xdc, 0x55, 0x2a, 0xc7, 0x7e, 0x2b, 0x7e, + 0x59, 0x27, 0x4d, 0x48, 0xf9, 0x0b, 0x50, 0x6d, 0x71, 0x79, 0x27, 0x2d, 0xe3, 0xc0, 0x6a, 0xd5, + 0xaf, 0xd0, 0x5d, 0x75, 0x5c, 0xcb, 0x9f, 0x66, 0x57, 0x76, 0x86, 0xb3, 0x4a, 0x02, 0xdb, 0xbe, + 0x28, 0x18, 0x76, 0xd1, 0xdb, 0x67, 0x75, 0x0c, 0xd1, 0x8e, 0xce, 0xe8, 0x6f, 0x57, 0x01, 0xed, + 0xec, 0x0c, 0x7f, 0x77, 0x8a, 0xf6, 0xae, 0xce, 0xb5, 0x3f, 0x88, 0xfe, 0xb3, 0x21, 0xfe, 0xeb, + 0xcc, 0x5c, 0x65, 0xac, 0xac, 0x81, 0x32, 0xee, 0xa4, 0x55, 0x74, 0x6c, 0x76, 0x80, 0x79, 0x88, + 0xb1, 0xa2, 0x46, 0x96, 0x9d, 0xf0, 0x2a, 0x45, 0x9b, 0x25, 0xcc, 0x7a, 0xe3, 0xe0, 0x1a, 0xd1, + 0x40, 0x25, 0x10, 0x6c, 0xce, 0x2c, 0xfe, 0x48, 0x30, 0xe8, 0x09, 0x36, 0x77, 0xed, 0xf7, 0x0d, + 0x73, 0xe6, 0x3f, 0x4b, 0xc6, 0xa3, 0x10, 0x5a, 0x25, 0xb0, 0xb2, 0xd6, 0xe0, 0x28, 0xcf, 0xa7, + 0xe8, 0x49, 0x63, 0x79, 0x1c, 0x1f, 0x9a, 0xf0, 0xad, 0x80, 0xb3, 0x39, 0xb3, 0x48, 0x7c, 0x3e, + 0xee, 0x4c, 0xb1, 0xb9, 0x6b, 0xb9, 0xb1, 0xac, 0xe6, 0x9f, 0xba, 0xf0, 0x2f, 0x22, 0x5e, 0xa9, + 0x5c, 0xe4, 0x82, 0xe3, 0x1e, 0xe5, 0x00, 0x73, 0x29, 0xd6, 0x45, 0xab, 0x88, 0x66, 0x82, 0x14, + 0x86, 0x2c, 0x5f, 0x38, 0x56, 0xf1, 0x30, 0x20, 0x73, 0x22, 0x48, 0x3b, 0x90, 0xb9, 0x64, 0xd2, + 0xcd, 0xed, 0x4a, 0x19, 0xcd, 0x79, 0xeb, 0xbf, 0xba, 0x67, 0xff, 0xea, 0xc4, 0x83, 0xfb, 0x57, + 0x27, 0x9e, 0xdb, 0xbf, 0x3a, 0xb1, 0xf5, 0x85, 0xd5, 0x07, 0x18, 0x2b, 0xf2, 0x5e, 0xa9, 0xad, + 0xec, 0xb8, 0x85, 0xbc, 0x55, 0x6e, 0x13, 0x8e, 0x3d, 0x86, 0x7f, 0xdd, 0x1a, 0x4a, 0xfc, 0x4f, + 0x00, 0x00, 0x00, 0xff, 0xff, 0x42, 0x84, 0xe3, 0x9a, 0x93, 0x3b, 0x00, 0x00, } diff --git a/proto/executor.proto b/proto/executor.proto index 61ae665f..dc4d366c 100644 --- a/proto/executor.proto +++ b/proto/executor.proto @@ -155,39 +155,6 @@ message ANNQueryInfo { optional uint32 hnsw_ef_search = 20 [(gogoproto.nullable) = false]; // Only for HNSW indexes } -enum FTSQueryType { - FTSQueryTypeInvalid = 0; - FTSQueryTypeNoScore = 1; - FTSQueryTypeWithScore = 2; -} - -// FTSQueryInfo describes a scan-level request to use a TiFlash full-text -// columnar index. It is separate from the FTSMatchBooleanExpression scalar -// function, which evaluates each row and does not consult an index. -message FTSQueryInfo { - optional FTSQueryType query_type = 1 [(gogoproto.nullable) = false]; - optional int64 index_id = 2 [(gogoproto.nullable) = false]; - repeated ColumnInfo columns = 3; - repeated string column_names = 4; - optional string query_text = 5 [(gogoproto.nullable) = false]; - optional string query_tokenizer = 6 [(gogoproto.nullable) = false]; - optional uint32 top_k = 10; - optional ScalarFuncSig query_func = 20 [(gogoproto.nullable) = false]; - optional FTSBooleanQuery boolean_query = 22; -} - -enum ColumnarIndexType { - TypeInvalid = 0; - TypeFulltext = 3; -} - -message ColumnarIndexInfo { - optional ColumnarIndexType index_type = 1 [(gogoproto.nullable) = false]; - oneof index { - FTSQueryInfo fts_query_info = 4; - } -} - message TableScan { optional int64 table_id = 1 [(gogoproto.nullable) = false]; repeated ColumnInfo columns = 2; @@ -202,7 +169,6 @@ message TableScan { optional ANNQueryInfo ann_query = 13; // only used by TiFlash repeated RuntimeFilter runtime_filter_list = 11; // only used by TiFlash optional int32 max_wait_time_ms = 12 [(gogoproto.nullable) = false]; - repeated ColumnarIndexInfo used_columnar_indexes = 14; // only used by TiFlash } message PartitionTableScan { @@ -217,7 +183,6 @@ message PartitionTableScan { optional ANNQueryInfo ann_query = 11; // only used by TiFlash repeated RuntimeFilter runtime_filter_list = 9; // only used by TiFlash optional int32 max_wait_time_ms = 10 [(gogoproto.nullable) = false]; - repeated ColumnarIndexInfo used_columnar_indexes = 12; // only used by TiFlash } enum JoinType { diff --git a/proto/expression.proto b/proto/expression.proto index aeca3ce3..d7725fd9 100644 --- a/proto/expression.proto +++ b/proto/expression.proto @@ -536,11 +536,7 @@ enum ScalarFuncSig { CaseWhenVectorFloat32 = 5162; /*fts*/ - FTSMatchWord = 5201; - FTSMatchExpression = 5202; FTSMatchBooleanExpression = 5206; - FTSMatchPrefix = 5203; - FTSMatchRegexp = 5204; /*time*/ DateFormatSig = 6001; @@ -775,10 +771,8 @@ enum ScalarFuncSig { } // Evaluators should implement evaluation functions for every expression type. -// Boolean full-text query representation shared by scan-level FTS metadata and -// scalar expressions. These types live in expression.proto so Expr can carry -// the query as a typed field without introducing an import cycle with -// executor.proto. +// Boolean full-text query representation carried as metadata by the +// FTSMatchBooleanExpression scalar function. enum FTSBooleanOccur { FTSBooleanOccurInvalid = 0; FTSBooleanOccurShould = 1; @@ -786,13 +780,6 @@ enum FTSBooleanOccur { FTSBooleanOccurMustNot = 3; } -enum FTSBooleanModifier { - FTSBooleanModifierNone = 0; - FTSBooleanModifierBoost = 1; - FTSBooleanModifierDeBoost = 2; - FTSBooleanModifierNegate = 3; -} - enum FTSBooleanTermType { FTSBooleanTermInvalid = 0; FTSBooleanTermWord = 1; @@ -803,13 +790,12 @@ enum FTSBooleanTermType { message FTSBooleanTerm { optional FTSBooleanTermType term_type = 1 [(gogoproto.nullable) = false]; optional string text = 2 [(gogoproto.nullable) = false]; - optional uint32 phrase_distance = 3 [(gogoproto.nullable) = false]; } message FTSBooleanQuery { repeated FTSBooleanNode nodes = 1; - // The Boolean query carries the analyzer selected by the FULLTEXT index so - // TiFlash does not have to infer NGRAM semantics from the raw query text. +// The query carries the analyzer selected by TiDB so TiFlash does not have to +// infer NGRAM semantics from the raw query text. optional string query_tokenizer = 2 [(gogoproto.nullable) = false]; optional uint32 ngram_token_size = 3 [(gogoproto.nullable) = false]; // STANDARD_V1 analyzer settings. If both token-size fields are zero, TiFlash @@ -823,18 +809,14 @@ message FTSBooleanQuery { // FTSMatchBooleanExpression. Expr.val is already the generic scalar-function // metadata slot, so this avoids adding an FTS-specific field to Expr while // keeping the SQL arguments in Expr.children unchanged. -message FTSMatchExpressionMetadata { +message FTSMatchBooleanMetadata { optional uint32 version = 1 [(gogoproto.nullable) = false]; optional FTSBooleanQuery boolean_query = 2; } message FTSBooleanNode { optional FTSBooleanOccur occur = 1 [(gogoproto.nullable) = false]; - optional FTSBooleanModifier modifier = 2 [(gogoproto.nullable) = false]; - oneof node { - FTSBooleanTerm term = 3; - FTSBooleanQuery sub_expression = 4; - } + optional FTSBooleanTerm term = 3; } message Expr { From f7dbf3d45cd28bd47b41d9b80033f127a3a98de9 Mon Sep 17 00:00:00 2001 From: Zhigao TONG Date: Thu, 8 Oct 2026 22:31:39 +0800 Subject: [PATCH 09/12] tipb: define versioned Local MATCH scalar protocol --- go-tipb/analyze.pb.go | 6 +- go-tipb/expression.pb.go | 1560 +++++++++++++++++--------------------- proto/expression.proto | 74 +- 3 files changed, 730 insertions(+), 910 deletions(-) diff --git a/go-tipb/analyze.pb.go b/go-tipb/analyze.pb.go index d70792a9..69eba673 100644 --- a/go-tipb/analyze.pb.go +++ b/go-tipb/analyze.pb.go @@ -80,10 +80,8 @@ It has these top-level messages: ScanAccessObject IndexAccess FieldType - FTSBooleanTerm - FTSBooleanQuery - FTSMatchBooleanMetadata - FTSBooleanNode + LocalMatchAgainstBooleanQuery + LocalMatchAgainstBooleanNode Expr RpnExpr ByItem diff --git a/go-tipb/expression.pb.go b/go-tipb/expression.pb.go index f7a7b536..beedfe96 100644 --- a/go-tipb/expression.pb.go +++ b/go-tipb/expression.pb.go @@ -626,8 +626,8 @@ const ( ScalarFuncSig_IfNullVectorFloat32 ScalarFuncSig = 5160 ScalarFuncSig_IfVectorFloat32 ScalarFuncSig = 5161 ScalarFuncSig_CaseWhenVectorFloat32 ScalarFuncSig = 5162 - // fts - ScalarFuncSig_FTSMatchBooleanExpression ScalarFuncSig = 5206 + // Local MATCH + ScalarFuncSig_LocalMatchAgainstBoolean ScalarFuncSig = 5206 // time ScalarFuncSig_DateFormatSig ScalarFuncSig = 6001 ScalarFuncSig_DateLiteral ScalarFuncSig = 6002 @@ -1264,7 +1264,7 @@ var ScalarFuncSig_name = map[int32]string{ 5160: "IfNullVectorFloat32", 5161: "IfVectorFloat32", 5162: "CaseWhenVectorFloat32", - 5206: "FTSMatchBooleanExpression", + 5206: "LocalMatchAgainstBoolean", 6001: "DateFormatSig", 6002: "DateLiteral", 6003: "DateDiff", @@ -1898,7 +1898,7 @@ var ScalarFuncSig_value = map[string]int32{ "IfNullVectorFloat32": 5160, "IfVectorFloat32": 5161, "CaseWhenVectorFloat32": 5162, - "FTSMatchBooleanExpression": 5206, + "LocalMatchAgainstBoolean": 5206, "DateFormatSig": 6001, "DateLiteral": 6002, "DateDiff": 6003, @@ -2148,86 +2148,168 @@ func (ScalarFuncSig) EnumDescriptor() ([]byte, []int) { return fileDescriptorExp // Evaluators should implement evaluation functions for every expression type. // Boolean full-text query representation carried as metadata by the -// FTSMatchBooleanExpression scalar function. -type FTSBooleanOccur int32 +// LocalMatchAgainstBoolean scalar function. +type LocalMatchAgainstBooleanOccur int32 const ( - FTSBooleanOccur_FTSBooleanOccurInvalid FTSBooleanOccur = 0 - FTSBooleanOccur_FTSBooleanOccurShould FTSBooleanOccur = 1 - FTSBooleanOccur_FTSBooleanOccurMust FTSBooleanOccur = 2 - FTSBooleanOccur_FTSBooleanOccurMustNot FTSBooleanOccur = 3 + LocalMatchAgainstBooleanOccur_LocalMatchAgainstBooleanOccurInvalid LocalMatchAgainstBooleanOccur = 0 + LocalMatchAgainstBooleanOccur_LocalMatchAgainstBooleanOccurShould LocalMatchAgainstBooleanOccur = 1 + LocalMatchAgainstBooleanOccur_LocalMatchAgainstBooleanOccurMust LocalMatchAgainstBooleanOccur = 2 + LocalMatchAgainstBooleanOccur_LocalMatchAgainstBooleanOccurMustNot LocalMatchAgainstBooleanOccur = 3 ) -var FTSBooleanOccur_name = map[int32]string{ - 0: "FTSBooleanOccurInvalid", - 1: "FTSBooleanOccurShould", - 2: "FTSBooleanOccurMust", - 3: "FTSBooleanOccurMustNot", +var LocalMatchAgainstBooleanOccur_name = map[int32]string{ + 0: "LocalMatchAgainstBooleanOccurInvalid", + 1: "LocalMatchAgainstBooleanOccurShould", + 2: "LocalMatchAgainstBooleanOccurMust", + 3: "LocalMatchAgainstBooleanOccurMustNot", } -var FTSBooleanOccur_value = map[string]int32{ - "FTSBooleanOccurInvalid": 0, - "FTSBooleanOccurShould": 1, - "FTSBooleanOccurMust": 2, - "FTSBooleanOccurMustNot": 3, +var LocalMatchAgainstBooleanOccur_value = map[string]int32{ + "LocalMatchAgainstBooleanOccurInvalid": 0, + "LocalMatchAgainstBooleanOccurShould": 1, + "LocalMatchAgainstBooleanOccurMust": 2, + "LocalMatchAgainstBooleanOccurMustNot": 3, } -func (x FTSBooleanOccur) Enum() *FTSBooleanOccur { - p := new(FTSBooleanOccur) +func (x LocalMatchAgainstBooleanOccur) Enum() *LocalMatchAgainstBooleanOccur { + p := new(LocalMatchAgainstBooleanOccur) *p = x return p } -func (x FTSBooleanOccur) String() string { - return proto.EnumName(FTSBooleanOccur_name, int32(x)) +func (x LocalMatchAgainstBooleanOccur) String() string { + return proto.EnumName(LocalMatchAgainstBooleanOccur_name, int32(x)) } -func (x *FTSBooleanOccur) UnmarshalJSON(data []byte) error { - value, err := proto.UnmarshalJSONEnum(FTSBooleanOccur_value, data, "FTSBooleanOccur") +func (x *LocalMatchAgainstBooleanOccur) UnmarshalJSON(data []byte) error { + value, err := proto.UnmarshalJSONEnum(LocalMatchAgainstBooleanOccur_value, data, "LocalMatchAgainstBooleanOccur") if err != nil { return err } - *x = FTSBooleanOccur(value) + *x = LocalMatchAgainstBooleanOccur(value) return nil } -func (FTSBooleanOccur) EnumDescriptor() ([]byte, []int) { return fileDescriptorExpression, []int{2} } +func (LocalMatchAgainstBooleanOccur) EnumDescriptor() ([]byte, []int) { + return fileDescriptorExpression, []int{2} +} + +type LocalMatchAgainstBooleanTermType int32 + +const ( + LocalMatchAgainstBooleanTermType_LocalMatchAgainstBooleanTermInvalid LocalMatchAgainstBooleanTermType = 0 + LocalMatchAgainstBooleanTermType_LocalMatchAgainstBooleanTermWord LocalMatchAgainstBooleanTermType = 1 + LocalMatchAgainstBooleanTermType_LocalMatchAgainstBooleanTermPhrase LocalMatchAgainstBooleanTermType = 2 + LocalMatchAgainstBooleanTermType_LocalMatchAgainstBooleanTermPrefix LocalMatchAgainstBooleanTermType = 3 +) + +var LocalMatchAgainstBooleanTermType_name = map[int32]string{ + 0: "LocalMatchAgainstBooleanTermInvalid", + 1: "LocalMatchAgainstBooleanTermWord", + 2: "LocalMatchAgainstBooleanTermPhrase", + 3: "LocalMatchAgainstBooleanTermPrefix", +} +var LocalMatchAgainstBooleanTermType_value = map[string]int32{ + "LocalMatchAgainstBooleanTermInvalid": 0, + "LocalMatchAgainstBooleanTermWord": 1, + "LocalMatchAgainstBooleanTermPhrase": 2, + "LocalMatchAgainstBooleanTermPrefix": 3, +} + +func (x LocalMatchAgainstBooleanTermType) Enum() *LocalMatchAgainstBooleanTermType { + p := new(LocalMatchAgainstBooleanTermType) + *p = x + return p +} +func (x LocalMatchAgainstBooleanTermType) String() string { + return proto.EnumName(LocalMatchAgainstBooleanTermType_name, int32(x)) +} +func (x *LocalMatchAgainstBooleanTermType) UnmarshalJSON(data []byte) error { + value, err := proto.UnmarshalJSONEnum(LocalMatchAgainstBooleanTermType_value, data, "LocalMatchAgainstBooleanTermType") + if err != nil { + return err + } + *x = LocalMatchAgainstBooleanTermType(value) + return nil +} +func (LocalMatchAgainstBooleanTermType) EnumDescriptor() ([]byte, []int) { + return fileDescriptorExpression, []int{3} +} -type FTSBooleanTermType int32 +type LocalMatchAgainstParser int32 const ( - FTSBooleanTermType_FTSBooleanTermInvalid FTSBooleanTermType = 0 - FTSBooleanTermType_FTSBooleanTermWord FTSBooleanTermType = 1 - FTSBooleanTermType_FTSBooleanTermPhrase FTSBooleanTermType = 2 - FTSBooleanTermType_FTSBooleanTermPrefix FTSBooleanTermType = 3 + LocalMatchAgainstParser_LocalMatchAgainstParserInvalid LocalMatchAgainstParser = 0 + LocalMatchAgainstParser_LocalMatchAgainstParserStandard LocalMatchAgainstParser = 1 + LocalMatchAgainstParser_LocalMatchAgainstParserNgram LocalMatchAgainstParser = 2 ) -var FTSBooleanTermType_name = map[int32]string{ - 0: "FTSBooleanTermInvalid", - 1: "FTSBooleanTermWord", - 2: "FTSBooleanTermPhrase", - 3: "FTSBooleanTermPrefix", +var LocalMatchAgainstParser_name = map[int32]string{ + 0: "LocalMatchAgainstParserInvalid", + 1: "LocalMatchAgainstParserStandard", + 2: "LocalMatchAgainstParserNgram", } -var FTSBooleanTermType_value = map[string]int32{ - "FTSBooleanTermInvalid": 0, - "FTSBooleanTermWord": 1, - "FTSBooleanTermPhrase": 2, - "FTSBooleanTermPrefix": 3, +var LocalMatchAgainstParser_value = map[string]int32{ + "LocalMatchAgainstParserInvalid": 0, + "LocalMatchAgainstParserStandard": 1, + "LocalMatchAgainstParserNgram": 2, } -func (x FTSBooleanTermType) Enum() *FTSBooleanTermType { - p := new(FTSBooleanTermType) +func (x LocalMatchAgainstParser) Enum() *LocalMatchAgainstParser { + p := new(LocalMatchAgainstParser) *p = x return p } -func (x FTSBooleanTermType) String() string { - return proto.EnumName(FTSBooleanTermType_name, int32(x)) +func (x LocalMatchAgainstParser) String() string { + return proto.EnumName(LocalMatchAgainstParser_name, int32(x)) } -func (x *FTSBooleanTermType) UnmarshalJSON(data []byte) error { - value, err := proto.UnmarshalJSONEnum(FTSBooleanTermType_value, data, "FTSBooleanTermType") +func (x *LocalMatchAgainstParser) UnmarshalJSON(data []byte) error { + value, err := proto.UnmarshalJSONEnum(LocalMatchAgainstParser_value, data, "LocalMatchAgainstParser") if err != nil { return err } - *x = FTSBooleanTermType(value) + *x = LocalMatchAgainstParser(value) return nil } -func (FTSBooleanTermType) EnumDescriptor() ([]byte, []int) { return fileDescriptorExpression, []int{3} } +func (LocalMatchAgainstParser) EnumDescriptor() ([]byte, []int) { + return fileDescriptorExpression, []int{4} +} + +type LocalMatchAgainstStopwordMode int32 + +const ( + LocalMatchAgainstStopwordMode_LocalMatchAgainstStopwordModeInvalid LocalMatchAgainstStopwordMode = 0 + LocalMatchAgainstStopwordMode_LocalMatchAgainstStopwordModeDisabled LocalMatchAgainstStopwordMode = 1 + LocalMatchAgainstStopwordMode_LocalMatchAgainstStopwordModeBuiltin LocalMatchAgainstStopwordMode = 2 +) + +var LocalMatchAgainstStopwordMode_name = map[int32]string{ + 0: "LocalMatchAgainstStopwordModeInvalid", + 1: "LocalMatchAgainstStopwordModeDisabled", + 2: "LocalMatchAgainstStopwordModeBuiltin", +} +var LocalMatchAgainstStopwordMode_value = map[string]int32{ + "LocalMatchAgainstStopwordModeInvalid": 0, + "LocalMatchAgainstStopwordModeDisabled": 1, + "LocalMatchAgainstStopwordModeBuiltin": 2, +} + +func (x LocalMatchAgainstStopwordMode) Enum() *LocalMatchAgainstStopwordMode { + p := new(LocalMatchAgainstStopwordMode) + *p = x + return p +} +func (x LocalMatchAgainstStopwordMode) String() string { + return proto.EnumName(LocalMatchAgainstStopwordMode_name, int32(x)) +} +func (x *LocalMatchAgainstStopwordMode) UnmarshalJSON(data []byte) error { + value, err := proto.UnmarshalJSONEnum(LocalMatchAgainstStopwordMode_value, data, "LocalMatchAgainstStopwordMode") + if err != nil { + return err + } + *x = LocalMatchAgainstStopwordMode(value) + return nil +} +func (LocalMatchAgainstStopwordMode) EnumDescriptor() ([]byte, []int) { + return fileDescriptorExpression, []int{5} +} type AggFunctionMode int32 @@ -2270,7 +2352,7 @@ func (x *AggFunctionMode) UnmarshalJSON(data []byte) error { *x = AggFunctionMode(value) return nil } -func (AggFunctionMode) EnumDescriptor() ([]byte, []int) { return fileDescriptorExpression, []int{4} } +func (AggFunctionMode) EnumDescriptor() ([]byte, []int) { return fileDescriptorExpression, []int{6} } type FieldType struct { Tp int32 `protobuf:"varint,1,opt,name=tp" json:"tp"` @@ -2345,146 +2427,119 @@ func (m *FieldType) GetArray() bool { return false } -type FTSBooleanTerm struct { - TermType FTSBooleanTermType `protobuf:"varint,1,opt,name=term_type,json=termType,enum=tipb.FTSBooleanTermType" json:"term_type"` - Text string `protobuf:"bytes,2,opt,name=text" json:"text"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *FTSBooleanTerm) Reset() { *m = FTSBooleanTerm{} } -func (m *FTSBooleanTerm) String() string { return proto.CompactTextString(m) } -func (*FTSBooleanTerm) ProtoMessage() {} -func (*FTSBooleanTerm) Descriptor() ([]byte, []int) { return fileDescriptorExpression, []int{1} } - -func (m *FTSBooleanTerm) GetTermType() FTSBooleanTermType { - if m != nil { - return m.TermType - } - return FTSBooleanTermType_FTSBooleanTermInvalid -} - -func (m *FTSBooleanTerm) GetText() string { - if m != nil { - return m.Text - } - return "" +type LocalMatchAgainstBooleanQuery struct { + Nodes []*LocalMatchAgainstBooleanNode `protobuf:"bytes,1,rep,name=nodes" json:"nodes,omitempty"` + Parser LocalMatchAgainstParser `protobuf:"varint,2,opt,name=parser,enum=tipb.LocalMatchAgainstParser" json:"parser"` + NgramTokenSize uint32 `protobuf:"varint,3,opt,name=ngram_token_size,json=ngramTokenSize" json:"ngram_token_size"` + // STANDARD_V1 analyzer settings. + InnodbFtMinTokenSize uint32 `protobuf:"varint,4,opt,name=innodb_ft_min_token_size,json=innodbFtMinTokenSize" json:"innodb_ft_min_token_size"` + InnodbFtMaxTokenSize uint32 `protobuf:"varint,5,opt,name=innodb_ft_max_token_size,json=innodbFtMaxTokenSize" json:"innodb_ft_max_token_size"` + StopwordMode LocalMatchAgainstStopwordMode `protobuf:"varint,6,opt,name=stopword_mode,json=stopwordMode,enum=tipb.LocalMatchAgainstStopwordMode" json:"stopword_mode"` + // Stopword lookup uses collation_server, independently of MATCH-column collation. + StopwordCollation string `protobuf:"bytes,7,opt,name=stopword_collation,json=stopwordCollation" json:"stopword_collation"` + // This versions Local MATCH wire semantics, including the built-in stopword + // set selected by Builtin. TiFlash must support a version before TiDB emits it; + // unknown versions must be rejected, never interpreted using another version. + Version uint32 `protobuf:"varint,8,opt,name=version" json:"version"` + XXX_unrecognized []byte `json:"-"` } -type FTSBooleanQuery struct { - Nodes []*FTSBooleanNode `protobuf:"bytes,1,rep,name=nodes" json:"nodes,omitempty"` - // The query carries the analyzer selected by TiDB so TiFlash does not have to - // infer NGRAM semantics from the raw query text. - QueryTokenizer string `protobuf:"bytes,2,opt,name=query_tokenizer,json=queryTokenizer" json:"query_tokenizer"` - NgramTokenSize uint32 `protobuf:"varint,3,opt,name=ngram_token_size,json=ngramTokenSize" json:"ngram_token_size"` - // STANDARD_V1 analyzer settings. If both token-size fields are zero, TiFlash - // uses the default STANDARD_V1 analyzer settings. - InnodbFtMinTokenSize uint32 `protobuf:"varint,4,opt,name=innodb_ft_min_token_size,json=innodbFtMinTokenSize" json:"innodb_ft_min_token_size"` - InnodbFtMaxTokenSize uint32 `protobuf:"varint,5,opt,name=innodb_ft_max_token_size,json=innodbFtMaxTokenSize" json:"innodb_ft_max_token_size"` - InnodbFtEnableStopword bool `protobuf:"varint,6,opt,name=innodb_ft_enable_stopword,json=innodbFtEnableStopword" json:"innodb_ft_enable_stopword"` - XXX_unrecognized []byte `json:"-"` +func (m *LocalMatchAgainstBooleanQuery) Reset() { *m = LocalMatchAgainstBooleanQuery{} } +func (m *LocalMatchAgainstBooleanQuery) String() string { return proto.CompactTextString(m) } +func (*LocalMatchAgainstBooleanQuery) ProtoMessage() {} +func (*LocalMatchAgainstBooleanQuery) Descriptor() ([]byte, []int) { + return fileDescriptorExpression, []int{1} } -func (m *FTSBooleanQuery) Reset() { *m = FTSBooleanQuery{} } -func (m *FTSBooleanQuery) String() string { return proto.CompactTextString(m) } -func (*FTSBooleanQuery) ProtoMessage() {} -func (*FTSBooleanQuery) Descriptor() ([]byte, []int) { return fileDescriptorExpression, []int{2} } - -func (m *FTSBooleanQuery) GetNodes() []*FTSBooleanNode { +func (m *LocalMatchAgainstBooleanQuery) GetNodes() []*LocalMatchAgainstBooleanNode { if m != nil { return m.Nodes } return nil } -func (m *FTSBooleanQuery) GetQueryTokenizer() string { +func (m *LocalMatchAgainstBooleanQuery) GetParser() LocalMatchAgainstParser { if m != nil { - return m.QueryTokenizer + return m.Parser } - return "" + return LocalMatchAgainstParser_LocalMatchAgainstParserInvalid } -func (m *FTSBooleanQuery) GetNgramTokenSize() uint32 { +func (m *LocalMatchAgainstBooleanQuery) GetNgramTokenSize() uint32 { if m != nil { return m.NgramTokenSize } return 0 } -func (m *FTSBooleanQuery) GetInnodbFtMinTokenSize() uint32 { +func (m *LocalMatchAgainstBooleanQuery) GetInnodbFtMinTokenSize() uint32 { if m != nil { return m.InnodbFtMinTokenSize } return 0 } -func (m *FTSBooleanQuery) GetInnodbFtMaxTokenSize() uint32 { +func (m *LocalMatchAgainstBooleanQuery) GetInnodbFtMaxTokenSize() uint32 { if m != nil { return m.InnodbFtMaxTokenSize } return 0 } -func (m *FTSBooleanQuery) GetInnodbFtEnableStopword() bool { +func (m *LocalMatchAgainstBooleanQuery) GetStopwordMode() LocalMatchAgainstStopwordMode { if m != nil { - return m.InnodbFtEnableStopword + return m.StopwordMode } - return false + return LocalMatchAgainstStopwordMode_LocalMatchAgainstStopwordModeInvalid } -// Versioned Boolean MATCH metadata stored in Expr.val when Expr.sig is -// FTSMatchBooleanExpression. Expr.val is already the generic scalar-function -// metadata slot, so this avoids adding an FTS-specific field to Expr while -// keeping the SQL arguments in Expr.children unchanged. -type FTSMatchBooleanMetadata struct { - Version uint32 `protobuf:"varint,1,opt,name=version" json:"version"` - BooleanQuery *FTSBooleanQuery `protobuf:"bytes,2,opt,name=boolean_query,json=booleanQuery" json:"boolean_query,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *FTSMatchBooleanMetadata) Reset() { *m = FTSMatchBooleanMetadata{} } -func (m *FTSMatchBooleanMetadata) String() string { return proto.CompactTextString(m) } -func (*FTSMatchBooleanMetadata) ProtoMessage() {} -func (*FTSMatchBooleanMetadata) Descriptor() ([]byte, []int) { - return fileDescriptorExpression, []int{3} +func (m *LocalMatchAgainstBooleanQuery) GetStopwordCollation() string { + if m != nil { + return m.StopwordCollation + } + return "" } -func (m *FTSMatchBooleanMetadata) GetVersion() uint32 { +func (m *LocalMatchAgainstBooleanQuery) GetVersion() uint32 { if m != nil { return m.Version } return 0 } -func (m *FTSMatchBooleanMetadata) GetBooleanQuery() *FTSBooleanQuery { - if m != nil { - return m.BooleanQuery - } - return nil +type LocalMatchAgainstBooleanNode struct { + Occur LocalMatchAgainstBooleanOccur `protobuf:"varint,1,opt,name=occur,enum=tipb.LocalMatchAgainstBooleanOccur" json:"occur"` + TermType LocalMatchAgainstBooleanTermType `protobuf:"varint,2,opt,name=term_type,json=termType,enum=tipb.LocalMatchAgainstBooleanTermType" json:"term_type"` + Text string `protobuf:"bytes,3,opt,name=text" json:"text"` + XXX_unrecognized []byte `json:"-"` } -type FTSBooleanNode struct { - Occur FTSBooleanOccur `protobuf:"varint,1,opt,name=occur,enum=tipb.FTSBooleanOccur" json:"occur"` - Term *FTSBooleanTerm `protobuf:"bytes,3,opt,name=term" json:"term,omitempty"` - XXX_unrecognized []byte `json:"-"` +func (m *LocalMatchAgainstBooleanNode) Reset() { *m = LocalMatchAgainstBooleanNode{} } +func (m *LocalMatchAgainstBooleanNode) String() string { return proto.CompactTextString(m) } +func (*LocalMatchAgainstBooleanNode) ProtoMessage() {} +func (*LocalMatchAgainstBooleanNode) Descriptor() ([]byte, []int) { + return fileDescriptorExpression, []int{2} } -func (m *FTSBooleanNode) Reset() { *m = FTSBooleanNode{} } -func (m *FTSBooleanNode) String() string { return proto.CompactTextString(m) } -func (*FTSBooleanNode) ProtoMessage() {} -func (*FTSBooleanNode) Descriptor() ([]byte, []int) { return fileDescriptorExpression, []int{4} } - -func (m *FTSBooleanNode) GetOccur() FTSBooleanOccur { +func (m *LocalMatchAgainstBooleanNode) GetOccur() LocalMatchAgainstBooleanOccur { if m != nil { return m.Occur } - return FTSBooleanOccur_FTSBooleanOccurInvalid + return LocalMatchAgainstBooleanOccur_LocalMatchAgainstBooleanOccurInvalid } -func (m *FTSBooleanNode) GetTerm() *FTSBooleanTerm { +func (m *LocalMatchAgainstBooleanNode) GetTermType() LocalMatchAgainstBooleanTermType { if m != nil { - return m.Term + return m.TermType } - return nil + return LocalMatchAgainstBooleanTermType_LocalMatchAgainstBooleanTermInvalid +} + +func (m *LocalMatchAgainstBooleanNode) GetText() string { + if m != nil { + return m.Text + } + return "" } type Expr struct { @@ -2503,7 +2558,7 @@ type Expr struct { func (m *Expr) Reset() { *m = Expr{} } func (m *Expr) String() string { return proto.CompactTextString(m) } func (*Expr) ProtoMessage() {} -func (*Expr) Descriptor() ([]byte, []int) { return fileDescriptorExpression, []int{5} } +func (*Expr) Descriptor() ([]byte, []int) { return fileDescriptorExpression, []int{3} } func (m *Expr) GetTp() ExprType { if m != nil { @@ -2579,7 +2634,7 @@ type RpnExpr struct { func (m *RpnExpr) Reset() { *m = RpnExpr{} } func (m *RpnExpr) String() string { return proto.CompactTextString(m) } func (*RpnExpr) ProtoMessage() {} -func (*RpnExpr) Descriptor() ([]byte, []int) { return fileDescriptorExpression, []int{6} } +func (*RpnExpr) Descriptor() ([]byte, []int) { return fileDescriptorExpression, []int{4} } func (m *RpnExpr) GetExprs() []*Expr { if m != nil { @@ -2599,7 +2654,7 @@ type ByItem struct { func (m *ByItem) Reset() { *m = ByItem{} } func (m *ByItem) String() string { return proto.CompactTextString(m) } func (*ByItem) ProtoMessage() {} -func (*ByItem) Descriptor() ([]byte, []int) { return fileDescriptorExpression, []int{7} } +func (*ByItem) Descriptor() ([]byte, []int) { return fileDescriptorExpression, []int{5} } func (m *ByItem) GetExpr() *Expr { if m != nil { @@ -2624,17 +2679,17 @@ func (m *ByItem) GetDesc() bool { func init() { proto.RegisterType((*FieldType)(nil), "tipb.FieldType") - proto.RegisterType((*FTSBooleanTerm)(nil), "tipb.FTSBooleanTerm") - proto.RegisterType((*FTSBooleanQuery)(nil), "tipb.FTSBooleanQuery") - proto.RegisterType((*FTSMatchBooleanMetadata)(nil), "tipb.FTSMatchBooleanMetadata") - proto.RegisterType((*FTSBooleanNode)(nil), "tipb.FTSBooleanNode") + proto.RegisterType((*LocalMatchAgainstBooleanQuery)(nil), "tipb.LocalMatchAgainstBooleanQuery") + proto.RegisterType((*LocalMatchAgainstBooleanNode)(nil), "tipb.LocalMatchAgainstBooleanNode") proto.RegisterType((*Expr)(nil), "tipb.Expr") proto.RegisterType((*RpnExpr)(nil), "tipb.RpnExpr") proto.RegisterType((*ByItem)(nil), "tipb.ByItem") proto.RegisterEnum("tipb.ExprType", ExprType_name, ExprType_value) proto.RegisterEnum("tipb.ScalarFuncSig", ScalarFuncSig_name, ScalarFuncSig_value) - proto.RegisterEnum("tipb.FTSBooleanOccur", FTSBooleanOccur_name, FTSBooleanOccur_value) - proto.RegisterEnum("tipb.FTSBooleanTermType", FTSBooleanTermType_name, FTSBooleanTermType_value) + proto.RegisterEnum("tipb.LocalMatchAgainstBooleanOccur", LocalMatchAgainstBooleanOccur_name, LocalMatchAgainstBooleanOccur_value) + proto.RegisterEnum("tipb.LocalMatchAgainstBooleanTermType", LocalMatchAgainstBooleanTermType_name, LocalMatchAgainstBooleanTermType_value) + proto.RegisterEnum("tipb.LocalMatchAgainstParser", LocalMatchAgainstParser_name, LocalMatchAgainstParser_value) + proto.RegisterEnum("tipb.LocalMatchAgainstStopwordMode", LocalMatchAgainstStopwordMode_name, LocalMatchAgainstStopwordMode_value) proto.RegisterEnum("tipb.AggFunctionMode", AggFunctionMode_name, AggFunctionMode_value) } func (m *FieldType) Marshal() (dAtA []byte, err error) { @@ -2700,7 +2755,7 @@ func (m *FieldType) MarshalTo(dAtA []byte) (int, error) { return i, nil } -func (m *FTSBooleanTerm) Marshal() (dAtA []byte, err error) { +func (m *LocalMatchAgainstBooleanQuery) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) n, err := m.MarshalTo(dAtA) @@ -2710,35 +2765,7 @@ func (m *FTSBooleanTerm) Marshal() (dAtA []byte, err error) { return dAtA[:n], nil } -func (m *FTSBooleanTerm) MarshalTo(dAtA []byte) (int, error) { - var i int - _ = i - var l int - _ = l - dAtA[i] = 0x8 - i++ - i = encodeVarintExpression(dAtA, i, uint64(m.TermType)) - dAtA[i] = 0x12 - i++ - i = encodeVarintExpression(dAtA, i, uint64(len(m.Text))) - i += copy(dAtA[i:], m.Text) - if m.XXX_unrecognized != nil { - i += copy(dAtA[i:], m.XXX_unrecognized) - } - return i, nil -} - -func (m *FTSBooleanQuery) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalTo(dAtA) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *FTSBooleanQuery) MarshalTo(dAtA []byte) (int, error) { +func (m *LocalMatchAgainstBooleanQuery) MarshalTo(dAtA []byte) (int, error) { var i int _ = i var l int @@ -2755,10 +2782,9 @@ func (m *FTSBooleanQuery) MarshalTo(dAtA []byte) (int, error) { i += n } } - dAtA[i] = 0x12 + dAtA[i] = 0x10 i++ - i = encodeVarintExpression(dAtA, i, uint64(len(m.QueryTokenizer))) - i += copy(dAtA[i:], m.QueryTokenizer) + i = encodeVarintExpression(dAtA, i, uint64(m.Parser)) dAtA[i] = 0x18 i++ i = encodeVarintExpression(dAtA, i, uint64(m.NgramTokenSize)) @@ -2770,53 +2796,21 @@ func (m *FTSBooleanQuery) MarshalTo(dAtA []byte) (int, error) { i = encodeVarintExpression(dAtA, i, uint64(m.InnodbFtMaxTokenSize)) dAtA[i] = 0x30 i++ - if m.InnodbFtEnableStopword { - dAtA[i] = 1 - } else { - dAtA[i] = 0 - } + i = encodeVarintExpression(dAtA, i, uint64(m.StopwordMode)) + dAtA[i] = 0x3a i++ - if m.XXX_unrecognized != nil { - i += copy(dAtA[i:], m.XXX_unrecognized) - } - return i, nil -} - -func (m *FTSMatchBooleanMetadata) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalTo(dAtA) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *FTSMatchBooleanMetadata) MarshalTo(dAtA []byte) (int, error) { - var i int - _ = i - var l int - _ = l - dAtA[i] = 0x8 + i = encodeVarintExpression(dAtA, i, uint64(len(m.StopwordCollation))) + i += copy(dAtA[i:], m.StopwordCollation) + dAtA[i] = 0x40 i++ i = encodeVarintExpression(dAtA, i, uint64(m.Version)) - if m.BooleanQuery != nil { - dAtA[i] = 0x12 - i++ - i = encodeVarintExpression(dAtA, i, uint64(m.BooleanQuery.Size())) - n1, err := m.BooleanQuery.MarshalTo(dAtA[i:]) - if err != nil { - return 0, err - } - i += n1 - } if m.XXX_unrecognized != nil { i += copy(dAtA[i:], m.XXX_unrecognized) } return i, nil } -func (m *FTSBooleanNode) Marshal() (dAtA []byte, err error) { +func (m *LocalMatchAgainstBooleanNode) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) n, err := m.MarshalTo(dAtA) @@ -2826,7 +2820,7 @@ func (m *FTSBooleanNode) Marshal() (dAtA []byte, err error) { return dAtA[:n], nil } -func (m *FTSBooleanNode) MarshalTo(dAtA []byte) (int, error) { +func (m *LocalMatchAgainstBooleanNode) MarshalTo(dAtA []byte) (int, error) { var i int _ = i var l int @@ -2834,16 +2828,13 @@ func (m *FTSBooleanNode) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x8 i++ i = encodeVarintExpression(dAtA, i, uint64(m.Occur)) - if m.Term != nil { - dAtA[i] = 0x1a - i++ - i = encodeVarintExpression(dAtA, i, uint64(m.Term.Size())) - n2, err := m.Term.MarshalTo(dAtA[i:]) - if err != nil { - return 0, err - } - i += n2 - } + dAtA[i] = 0x10 + i++ + i = encodeVarintExpression(dAtA, i, uint64(m.TermType)) + dAtA[i] = 0x1a + i++ + i = encodeVarintExpression(dAtA, i, uint64(len(m.Text))) + i += copy(dAtA[i:], m.Text) if m.XXX_unrecognized != nil { i += copy(dAtA[i:], m.XXX_unrecognized) } @@ -2893,11 +2884,11 @@ func (m *Expr) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x2a i++ i = encodeVarintExpression(dAtA, i, uint64(m.FieldType.Size())) - n3, err := m.FieldType.MarshalTo(dAtA[i:]) + n1, err := m.FieldType.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n3 + i += n1 } if m.RpnArgsLen != nil { dAtA[i] = 0x30 @@ -2987,11 +2978,11 @@ func (m *ByItem) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0xa i++ i = encodeVarintExpression(dAtA, i, uint64(m.Expr.Size())) - n4, err := m.Expr.MarshalTo(dAtA[i:]) + n2, err := m.Expr.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n4 + i += n2 } dAtA[i] = 0x10 i++ @@ -3005,11 +2996,11 @@ func (m *ByItem) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x1a i++ i = encodeVarintExpression(dAtA, i, uint64(m.RpnExpr.Size())) - n5, err := m.RpnExpr.MarshalTo(dAtA[i:]) + n3, err := m.RpnExpr.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n5 + i += n3 } if m.XXX_unrecognized != nil { i += copy(dAtA[i:], m.XXX_unrecognized) @@ -3049,19 +3040,7 @@ func (m *FieldType) Size() (n int) { return n } -func (m *FTSBooleanTerm) Size() (n int) { - var l int - _ = l - n += 1 + sovExpression(uint64(m.TermType)) - l = len(m.Text) - n += 1 + l + sovExpression(uint64(l)) - if m.XXX_unrecognized != nil { - n += len(m.XXX_unrecognized) - } - return n -} - -func (m *FTSBooleanQuery) Size() (n int) { +func (m *LocalMatchAgainstBooleanQuery) Size() (n int) { var l int _ = l if len(m.Nodes) > 0 { @@ -3070,40 +3049,27 @@ func (m *FTSBooleanQuery) Size() (n int) { n += 1 + l + sovExpression(uint64(l)) } } - l = len(m.QueryTokenizer) - n += 1 + l + sovExpression(uint64(l)) + n += 1 + sovExpression(uint64(m.Parser)) n += 1 + sovExpression(uint64(m.NgramTokenSize)) n += 1 + sovExpression(uint64(m.InnodbFtMinTokenSize)) n += 1 + sovExpression(uint64(m.InnodbFtMaxTokenSize)) - n += 2 - if m.XXX_unrecognized != nil { - n += len(m.XXX_unrecognized) - } - return n -} - -func (m *FTSMatchBooleanMetadata) Size() (n int) { - var l int - _ = l + n += 1 + sovExpression(uint64(m.StopwordMode)) + l = len(m.StopwordCollation) + n += 1 + l + sovExpression(uint64(l)) n += 1 + sovExpression(uint64(m.Version)) - if m.BooleanQuery != nil { - l = m.BooleanQuery.Size() - n += 1 + l + sovExpression(uint64(l)) - } if m.XXX_unrecognized != nil { n += len(m.XXX_unrecognized) } return n } -func (m *FTSBooleanNode) Size() (n int) { +func (m *LocalMatchAgainstBooleanNode) Size() (n int) { var l int _ = l n += 1 + sovExpression(uint64(m.Occur)) - if m.Term != nil { - l = m.Term.Size() - n += 1 + l + sovExpression(uint64(l)) - } + n += 1 + sovExpression(uint64(m.TermType)) + l = len(m.Text) + n += 1 + l + sovExpression(uint64(l)) if m.XXX_unrecognized != nil { n += len(m.XXX_unrecognized) } @@ -3418,7 +3384,7 @@ func (m *FieldType) Unmarshal(dAtA []byte) error { } return nil } -func (m *FTSBooleanTerm) Unmarshal(dAtA []byte) error { +func (m *LocalMatchAgainstBooleanQuery) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -3441,109 +3407,10 @@ func (m *FTSBooleanTerm) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: FTSBooleanTerm: wiretype end group for non-group") + return fmt.Errorf("proto: LocalMatchAgainstBooleanQuery: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: FTSBooleanTerm: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field TermType", wireType) - } - m.TermType = 0 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowExpression - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - m.TermType |= (FTSBooleanTermType(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - case 2: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Text", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowExpression - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= (uint64(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthExpression - } - postIndex := iNdEx + intStringLen - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Text = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipExpression(dAtA[iNdEx:]) - if err != nil { - return err - } - if skippy < 0 { - return ErrInvalidLengthExpression - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *FTSBooleanQuery) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowExpression - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= (uint64(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: FTSBooleanQuery: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: FTSBooleanQuery: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: LocalMatchAgainstBooleanQuery: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: @@ -3572,16 +3439,16 @@ func (m *FTSBooleanQuery) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.Nodes = append(m.Nodes, &FTSBooleanNode{}) + m.Nodes = append(m.Nodes, &LocalMatchAgainstBooleanNode{}) if err := m.Nodes[len(m.Nodes)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex case 2: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field QueryTokenizer", wireType) + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Parser", wireType) } - var stringLen uint64 + m.Parser = 0 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowExpression @@ -3591,21 +3458,11 @@ func (m *FTSBooleanQuery) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= (uint64(b) & 0x7F) << shift + m.Parser |= (LocalMatchAgainstParser(b) & 0x7F) << shift if b < 0x80 { break } } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthExpression - } - postIndex := iNdEx + intStringLen - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.QueryTokenizer = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex case 3: if wireType != 0 { return fmt.Errorf("proto: wrong wireType = %d for field NgramTokenSize", wireType) @@ -3665,9 +3522,9 @@ func (m *FTSBooleanQuery) Unmarshal(dAtA []byte) error { } case 6: if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field InnodbFtEnableStopword", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field StopwordMode", wireType) } - var v int + m.StopwordMode = 0 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowExpression @@ -3677,68 +3534,16 @@ func (m *FTSBooleanQuery) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - v |= (int(b) & 0x7F) << shift + m.StopwordMode |= (LocalMatchAgainstStopwordMode(b) & 0x7F) << shift if b < 0x80 { break } } - m.InnodbFtEnableStopword = bool(v != 0) - default: - iNdEx = preIndex - skippy, err := skipExpression(dAtA[iNdEx:]) - if err != nil { - return err - } - if skippy < 0 { - return ErrInvalidLengthExpression - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *FTSMatchBooleanMetadata) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowExpression - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= (uint64(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: FTSMatchBooleanMetadata: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: FTSMatchBooleanMetadata: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field Version", wireType) + case 7: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field StopwordCollation", wireType) } - m.Version = 0 + var stringLen uint64 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowExpression @@ -3748,16 +3553,26 @@ func (m *FTSMatchBooleanMetadata) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.Version |= (uint32(b) & 0x7F) << shift + stringLen |= (uint64(b) & 0x7F) << shift if b < 0x80 { break } } - case 2: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field BooleanQuery", wireType) + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthExpression } - var msglen int + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.StopwordCollation = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 8: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Version", wireType) + } + m.Version = 0 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowExpression @@ -3767,25 +3582,11 @@ func (m *FTSMatchBooleanMetadata) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= (int(b) & 0x7F) << shift + m.Version |= (uint32(b) & 0x7F) << shift if b < 0x80 { break } } - if msglen < 0 { - return ErrInvalidLengthExpression - } - postIndex := iNdEx + msglen - if postIndex > l { - return io.ErrUnexpectedEOF - } - if m.BooleanQuery == nil { - m.BooleanQuery = &FTSBooleanQuery{} - } - if err := m.BooleanQuery.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipExpression(dAtA[iNdEx:]) @@ -3808,7 +3609,7 @@ func (m *FTSMatchBooleanMetadata) Unmarshal(dAtA []byte) error { } return nil } -func (m *FTSBooleanNode) Unmarshal(dAtA []byte) error { +func (m *LocalMatchAgainstBooleanNode) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -3831,10 +3632,10 @@ func (m *FTSBooleanNode) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: FTSBooleanNode: wiretype end group for non-group") + return fmt.Errorf("proto: LocalMatchAgainstBooleanNode: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: FTSBooleanNode: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: LocalMatchAgainstBooleanNode: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: @@ -3851,16 +3652,35 @@ func (m *FTSBooleanNode) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.Occur |= (FTSBooleanOccur(b) & 0x7F) << shift + m.Occur |= (LocalMatchAgainstBooleanOccur(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + case 2: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field TermType", wireType) + } + m.TermType = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowExpression + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.TermType |= (LocalMatchAgainstBooleanTermType(b) & 0x7F) << shift if b < 0x80 { break } } case 3: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Term", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Text", wireType) } - var msglen int + var stringLen uint64 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowExpression @@ -3870,24 +3690,20 @@ func (m *FTSBooleanNode) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= (int(b) & 0x7F) << shift + stringLen |= (uint64(b) & 0x7F) << shift if b < 0x80 { break } } - if msglen < 0 { + intStringLen := int(stringLen) + if intStringLen < 0 { return ErrInvalidLengthExpression } - postIndex := iNdEx + msglen + postIndex := iNdEx + intStringLen if postIndex > l { return io.ErrUnexpectedEOF } - if m.Term == nil { - m.Term = &FTSBooleanTerm{} - } - if err := m.Term.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } + m.Text = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex default: iNdEx = preIndex @@ -4513,395 +4329,399 @@ var ( func init() { proto.RegisterFile("expression.proto", fileDescriptorExpression) } var fileDescriptorExpression = []byte{ - // 6237 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x74, 0x7b, 0x67, 0x78, 0x1b, 0xc7, - 0xb9, 0xae, 0xa1, 0x62, 0x49, 0x2b, 0x89, 0x1a, 0xaf, 0x25, 0x11, 0x56, 0x1c, 0x91, 0x14, 0x73, - 0x2f, 0x19, 0xe5, 0x86, 0x90, 0x69, 0x87, 0xcc, 0x73, 0x6f, 0xee, 0xc9, 0x81, 0xd8, 0x8c, 0x1c, - 0x92, 0xa2, 0x08, 0x90, 0xce, 0xf9, 0xa5, 0x67, 0x89, 0x1d, 0x82, 0x1b, 0x01, 0xbb, 0xf0, 0xee, - 0x80, 0x22, 0x9d, 0x93, 0xf3, 0xb8, 0xf7, 0x9e, 0xd8, 0x96, 0xbb, 0xaa, 0x6b, 0x7a, 0x77, 0xaf, - 0x89, 0x25, 0x97, 0xc4, 0x89, 0xab, 0xdc, 0x2d, 0xdb, 0x71, 0x4f, 0xec, 0xb8, 0xd7, 0x9c, 0xe7, - 0x7b, 0x67, 0x66, 0xb1, 0x0b, 0xd2, 0xbf, 0xb8, 0xf3, 0x7e, 0xed, 0x9d, 0x6f, 0xbe, 0x99, 0x9d, - 0x99, 0x05, 0x0d, 0xc6, 0xa7, 0xca, 0x3e, 0x0f, 0x02, 0xc7, 0x73, 0xdb, 0xca, 0xbe, 0x27, 0x3c, - 0x73, 0x9e, 0x70, 0xca, 0x63, 0xab, 0xea, 0x4a, 0x5c, 0x58, 0xb6, 0x25, 0x2c, 0x89, 0xae, 0x5a, - 0x5e, 0xf0, 0x0a, 0x1e, 0x1e, 0x53, 0xf4, 0x24, 0xd1, 0x35, 0x6f, 0x26, 0x8c, 0x45, 0xbd, 0x0e, - 0x2f, 0xda, 0xb9, 0xe9, 0x32, 0x37, 0x97, 0x1b, 0x73, 0x44, 0x39, 0x99, 0x68, 0x4c, 0xb4, 0xce, - 0x5f, 0x3f, 0x6f, 0xcf, 0x33, 0x0d, 0x07, 0x0c, 0xcf, 0x11, 0x65, 0x33, 0x69, 0xcc, 0x1b, 0x2f, - 0x5a, 0x85, 0xe4, 0x9c, 0xc6, 0x44, 0xeb, 0x52, 0x85, 0x03, 0x91, 0x12, 0xee, 0x26, 0xe7, 0x46, - 0x2c, 0x80, 0x98, 0xab, 0x8d, 0x05, 0x36, 0xcf, 0x3b, 0x25, 0xab, 0x98, 0x9c, 0x17, 0x11, 0x6a, - 0x90, 0xe4, 0x79, 0xaf, 0x58, 0xb4, 0x04, 0x4f, 0xce, 0x8f, 0xca, 0x15, 0x08, 0xf9, 0x84, 0xe5, - 0x07, 0x5c, 0x24, 0x0f, 0x6c, 0x4c, 0xb4, 0x2e, 0x0a, 0xe5, 0x12, 0x34, 0x57, 0x19, 0xf3, 0x79, - 0x91, 0x97, 0x82, 0xe4, 0x82, 0xc6, 0xb9, 0xa1, 0x54, 0x42, 0x24, 0xb3, 0x7c, 0xdf, 0x9a, 0x4e, - 0x2e, 0x6c, 0x4c, 0xb4, 0x2e, 0xd4, 0x32, 0x40, 0x6b, 0x0a, 0x46, 0x5d, 0x6f, 0x2e, 0xbb, 0xde, - 0xf3, 0x8a, 0xdc, 0x72, 0x73, 0xdc, 0x2f, 0x99, 0xff, 0xcf, 0x58, 0x24, 0xb8, 0x5f, 0xda, 0x24, - 0xa6, 0xcb, 0x1c, 0x5d, 0xaf, 0x6b, 0x4f, 0xb6, 0x51, 0x06, 0xdb, 0xe2, 0x8a, 0x94, 0x20, 0xe5, - 0x6b, 0xa1, 0x50, 0x6d, 0x4a, 0x80, 0xe0, 0x53, 0x02, 0xa9, 0xd1, 0x2c, 0x80, 0xac, 0xd9, 0x37, - 0xc7, 0x58, 0x56, 0x75, 0xb0, 0xb1, 0xc2, 0xfd, 0x69, 0x73, 0xad, 0x31, 0xdf, 0xf5, 0x6c, 0x1e, - 0x24, 0x13, 0x8d, 0x73, 0x5b, 0x17, 0xb7, 0x2f, 0xaf, 0x0d, 0x33, 0xe8, 0xd9, 0x7c, 0x58, 0xaa, - 0x98, 0x5f, 0x37, 0x96, 0x1d, 0x4d, 0x46, 0x9b, 0x84, 0xb7, 0x99, 0xbb, 0xce, 0x31, 0xdc, 0x8f, - 0x05, 0xa9, 0x83, 0x30, 0xa7, 0x65, 0x66, 0x9b, 0xc1, 0xdc, 0x82, 0x6f, 0x95, 0xa4, 0xfa, 0xa6, - 0xc0, 0x39, 0x86, 0x63, 0x54, 0xf4, 0x78, 0xd5, 0x41, 0x0a, 0xfd, 0xac, 0x73, 0x0c, 0x37, 0xbf, - 0x65, 0x24, 0x1d, 0xd7, 0xf5, 0xec, 0xb1, 0x4d, 0xe3, 0x62, 0x53, 0xc9, 0x71, 0xa3, 0x76, 0xf3, - 0x22, 0x76, 0xcb, 0xa5, 0x56, 0xaf, 0x18, 0x70, 0xdc, 0x2f, 0xb2, 0xb6, 0xa6, 0xa2, 0xd6, 0xf3, - 0x67, 0xb5, 0xb6, 0xa6, 0xaa, 0xd6, 0xdf, 0x36, 0x0e, 0xa9, 0x5a, 0x73, 0xd7, 0x1a, 0x2b, 0xf2, - 0x4d, 0x81, 0xf0, 0xca, 0x5b, 0x3c, 0xdf, 0xc6, 0x68, 0xeb, 0x31, 0x5b, 0xa9, 0xcd, 0x7b, 0xa0, - 0x94, 0x55, 0x3a, 0x6b, 0x2a, 0x46, 0x7d, 0x6f, 0x2e, 0x3b, 0x60, 0x89, 0xfc, 0x84, 0xca, 0xdc, - 0x80, 0xaa, 0x75, 0xaa, 0x9b, 0x49, 0xee, 0xd3, 0x64, 0xc0, 0x58, 0x6a, 0x22, 0x1a, 0x34, 0xff, - 0xaf, 0xb1, 0x74, 0x4c, 0x9a, 0x6c, 0x42, 0x06, 0x91, 0xd4, 0xc5, 0xed, 0x2b, 0x6a, 0x87, 0x02, - 0x03, 0x36, 0xbc, 0x64, 0x2c, 0xd2, 0x5a, 0x53, 0x8a, 0xd6, 0x0e, 0x8d, 0x95, 0x79, 0x98, 0x31, - 0xdf, 0xcb, 0xe7, 0x2b, 0xbe, 0xaa, 0x9b, 0x19, 0x5e, 0x36, 0x90, 0x50, 0x17, 0x20, 0x34, 0xcd, - 0x56, 0xaa, 0x18, 0xbf, 0x84, 0xc1, 0x99, 0xa5, 0x04, 0xa8, 0xd2, 0x86, 0xa1, 0xb1, 0xe6, 0xad, - 0x39, 0xc6, 0xbc, 0x9e, 0xa9, 0xb2, 0x6f, 0x7e, 0x25, 0x9c, 0x95, 0x75, 0xed, 0x75, 0xd2, 0x80, - 0xf0, 0x48, 0x41, 0xd2, 0x2c, 0x65, 0xc6, 0xdc, 0x49, 0xab, 0x88, 0xfe, 0x2c, 0x19, 0xa6, 0x47, - 0xf3, 0x7f, 0x1b, 0x0b, 0xf3, 0x13, 0x4e, 0xd1, 0xf6, 0x31, 0x43, 0xa9, 0xe2, 0x8c, 0xaa, 0xf5, - 0x70, 0x28, 0x33, 0xbf, 0x66, 0xcc, 0x0d, 0x9c, 0x02, 0x86, 0xbd, 0xae, 0xfd, 0x60, 0xa9, 0x92, - 0xcd, 0x5b, 0x45, 0xcb, 0xef, 0xad, 0xb8, 0xf9, 0xac, 0x53, 0x50, 0x51, 0x48, 0xcb, 0x6c, 0x33, - 0x8c, 0x71, 0x5a, 0x2f, 0xe4, 0x7c, 0x99, 0x8f, 0x5e, 0x2c, 0x53, 0xbd, 0xd0, 0xeb, 0xc8, 0xf0, - 0xa2, 0xf1, 0x70, 0x49, 0x69, 0x34, 0x96, 0xf8, 0x65, 0x77, 0x93, 0xe5, 0x17, 0x82, 0x4d, 0xb4, - 0x54, 0xd0, 0xf8, 0x2e, 0x1d, 0x36, 0xfc, 0xb2, 0x9b, 0xf6, 0x0b, 0x41, 0x3f, 0x77, 0xcd, 0x16, - 0x63, 0xc9, 0x84, 0x15, 0x6c, 0xb2, 0x9d, 0x40, 0x38, 0x6e, 0x5e, 0x24, 0x17, 0x44, 0x2a, 0x60, - 0xf1, 0x84, 0x15, 0x74, 0x2b, 0x81, 0xd9, 0x62, 0x2c, 0xf4, 0x7c, 0x9b, 0xfb, 0x9b, 0xc6, 0x68, - 0x6a, 0x53, 0x7f, 0x96, 0xc8, 0xc0, 0xeb, 0xa7, 0x33, 0x82, 0x97, 0x86, 0x17, 0x40, 0xba, 0x7e, - 0xda, 0xec, 0x34, 0x16, 0x5b, 0x85, 0x02, 0x91, 0x1f, 0xf0, 0x6c, 0x9e, 0x5c, 0x14, 0x1d, 0x9c, - 0xb4, 0x14, 0x08, 0xc7, 0x73, 0x49, 0x38, 0x1c, 0xd5, 0x5c, 0xf3, 0x35, 0x63, 0xc1, 0x70, 0xd9, - 0x45, 0xd2, 0x1b, 0x8d, 0xf9, 0xb4, 0xb0, 0xea, 0xb9, 0x1a, 0xcd, 0x9c, 0x14, 0xac, 0x29, 0x1a, - 0x07, 0xca, 0xc0, 0xe6, 0x6a, 0x63, 0x1e, 0x41, 0x18, 0xa2, 0xb8, 0x2a, 0x70, 0x5a, 0x25, 0x6c, - 0x1e, 0xe4, 0x31, 0x36, 0xba, 0x67, 0x40, 0xcc, 0x56, 0x63, 0x21, 0x65, 0x07, 0xd6, 0xb2, 0x22, - 0x96, 0x4a, 0x6b, 0x45, 0x63, 0x78, 0x81, 0x2f, 0x1f, 0xd6, 0xbe, 0x38, 0xdf, 0x58, 0xa8, 0x47, - 0xdd, 0x5c, 0x68, 0xcc, 0x1b, 0xac, 0x14, 0x8b, 0xec, 0x00, 0x73, 0x91, 0x31, 0x3f, 0xe3, 0x8a, - 0x8e, 0x23, 0x58, 0xc2, 0x34, 0x8c, 0x03, 0x47, 0x1c, 0x3c, 0xcf, 0x31, 0x17, 0x1b, 0x0b, 0x7a, - 0x8b, 0x9e, 0x25, 0x0e, 0x6f, 0x67, 0x73, 0xc3, 0x46, 0xc7, 0x11, 0x6c, 0x1e, 0x69, 0x65, 0x85, - 0xef, 0xb8, 0x05, 0x36, 0x9f, 0x8c, 0xd7, 0x4f, 0x0b, 0x1e, 0xb0, 0x03, 0xcd, 0x25, 0xc6, 0xc2, - 0x81, 0xe9, 0xe0, 0xe8, 0xe2, 0x7a, 0x47, 0x30, 0x6e, 0x32, 0x63, 0x09, 0x5a, 0xdd, 0x72, 0xb5, - 0x66, 0xe3, 0xe6, 0x41, 0xc6, 0x52, 0x89, 0x54, 0x7c, 0x8b, 0x72, 0xc7, 0x0a, 0xe6, 0x52, 0x63, - 0x11, 0xa0, 0x1e, 0xb7, 0x52, 0x62, 0x13, 0xa1, 0x87, 0x23, 0xf9, 0x14, 0x73, 0xc2, 0x56, 0x96, - 0x0b, 0xf6, 0xbd, 0x50, 0x35, 0xe7, 0x94, 0x38, 0xdb, 0x1c, 0x36, 0xbf, 0x13, 0x78, 0x2e, 0x2b, - 0x9a, 0x2b, 0x8c, 0x83, 0x72, 0x4e, 0xf7, 0xfa, 0x51, 0x9e, 0x17, 0x9e, 0xaf, 0x69, 0x4f, 0x9b, - 0x75, 0xc6, 0xa2, 0x51, 0xab, 0x58, 0xe1, 0xfd, 0x4e, 0x20, 0xd8, 0x45, 0x09, 0x6a, 0x77, 0x79, - 0xc5, 0x4a, 0xc9, 0x1d, 0xe6, 0xe3, 0x6c, 0x2f, 0xf5, 0x77, 0x7e, 0x97, 0x57, 0x71, 0x05, 0xbb, - 0xa1, 0xde, 0x5c, 0x68, 0xcc, 0xcd, 0x56, 0x4a, 0xec, 0x46, 0x3c, 0xa5, 0x27, 0x0b, 0xec, 0x26, - 0x3c, 0x0d, 0x38, 0x2e, 0xbb, 0x59, 0x3e, 0x59, 0x53, 0xec, 0x96, 0x7a, 0xb2, 0xe9, 0x75, 0xfc, - 0x40, 0xb0, 0x5b, 0xeb, 0x4d, 0x66, 0x2c, 0xee, 0xf3, 0xbd, 0x4a, 0xb9, 0xcb, 0x73, 0xf3, 0x96, - 0x60, 0xb7, 0xd5, 0x9b, 0xcb, 0x0c, 0x23, 0x5d, 0x28, 0x6c, 0x5a, 0xef, 0x88, 0xb4, 0x6b, 0xb3, - 0xdb, 0xeb, 0x29, 0xa4, 0x02, 0x36, 0xf8, 0xec, 0x8e, 0xa8, 0xc2, 0x77, 0x3d, 0x9f, 0xdd, 0x29, - 0xe3, 0x0a, 0x9b, 0xdd, 0x55, 0x6f, 0x2e, 0xa6, 0xbc, 0xda, 0x36, 0x9f, 0x64, 0x77, 0xc3, 0x4e, - 0x36, 0x86, 0xbc, 0x32, 0xfb, 0x03, 0xec, 0x64, 0x3b, 0x6b, 0x95, 0xca, 0xec, 0x8f, 0xd0, 0x1e, - 0xb5, 0x7c, 0x92, 0xde, 0x53, 0x6f, 0x2e, 0x31, 0x16, 0x8c, 0x5a, 0x3e, 0x44, 0x7b, 0xea, 0xcd, - 0xa5, 0xc6, 0xc2, 0x51, 0xcb, 0x77, 0x2c, 0x37, 0xcf, 0xd9, 0xde, 0x7a, 0xf3, 0x20, 0x63, 0x09, - 0xa5, 0x29, 0x4d, 0x6f, 0xaf, 0x74, 0xa1, 0xc0, 0xee, 0xad, 0x37, 0x4d, 0x63, 0x29, 0x41, 0x1b, - 0xc6, 0xbe, 0xc7, 0xf3, 0x82, 0xb0, 0xfb, 0xea, 0xcd, 0xa4, 0x71, 0x70, 0xba, 0x5c, 0xf6, 0xbd, - 0x29, 0xa4, 0x44, 0x4f, 0x19, 0x76, 0x3f, 0xb8, 0x0c, 0x7b, 0x5b, 0x06, 0x2b, 0xa5, 0x31, 0xee, - 0xb3, 0xed, 0x0d, 0xe6, 0x22, 0x63, 0xde, 0xb0, 0xe5, 0x6e, 0x66, 0x3b, 0x1a, 0x48, 0xd4, 0xcd, - 0xdd, 0x80, 0xa3, 0xbd, 0xb3, 0x81, 0x42, 0x77, 0x55, 0x4a, 0x9c, 0xac, 0xd9, 0xae, 0x06, 0x4a, - 0xd0, 0x10, 0xf7, 0xf3, 0xdc, 0x15, 0x50, 0xd8, 0xdd, 0x40, 0xe9, 0x1b, 0x14, 0x4e, 0x91, 0xb3, - 0xab, 0xe0, 0xa7, 0x9f, 0x5b, 0x36, 0xbb, 0xba, 0x81, 0xb2, 0xd0, 0x6f, 0x15, 0xd8, 0x35, 0x0d, - 0xd4, 0x51, 0xe4, 0x17, 0x03, 0xc7, 0xae, 0x45, 0x88, 0x7e, 0x4b, 0xb7, 0xaf, 0x43, 0x88, 0x41, - 0x31, 0x21, 0x9b, 0xd7, 0x43, 0xbf, 0xba, 0xd2, 0xb0, 0x73, 0x07, 0xd7, 0xfe, 0x7a, 0xcc, 0x58, - 0x1a, 0x5b, 0x7b, 0xcc, 0x65, 0xc6, 0xe2, 0x11, 0x37, 0x28, 0xf3, 0xbc, 0x33, 0xee, 0x70, 0x9b, - 0x1d, 0x40, 0xc5, 0xd9, 0x65, 0x05, 0x22, 0xe3, 0x8a, 0x74, 0x90, 0x71, 0x05, 0x4b, 0x50, 0x71, - 0x86, 0xc8, 0x30, 0xb7, 0x8a, 0x6c, 0x8e, 0x79, 0xb0, 0xb1, 0x2c, 0x84, 0x54, 0xbd, 0xcf, 0x35, - 0x97, 0x1b, 0x2c, 0x04, 0x75, 0x69, 0xcf, 0x8b, 0x59, 0xa3, 0x40, 0xe7, 0x53, 0x45, 0x56, 0x15, - 0x75, 0xc5, 0x1f, 0x18, 0xd3, 0x44, 0xed, 0x2e, 0xd0, 0x10, 0x45, 0x95, 0x6c, 0x0c, 0xd3, 0x34, - 0xea, 0xaa, 0x10, 0xe8, 0x2c, 0xd6, 0x91, 0x25, 0xa6, 0xf8, 0x2c, 0xd1, 0x61, 0x24, 0xaa, 0x09, - 0x2d, 0x8d, 0x3b, 0x00, 0xa3, 0x3a, 0x73, 0xa5, 0x61, 0x46, 0x54, 0x35, 0xa5, 0x65, 0x71, 0x5d, - 0x70, 0x62, 0x3a, 0x98, 0x72, 0x28, 0x69, 0x2d, 0xd7, 0xc1, 0x42, 0x14, 0xcc, 0x56, 0x98, 0xf5, - 0xc6, 0xc1, 0x31, 0x58, 0x91, 0x5b, 0x69, 0x26, 0x8d, 0xe5, 0x31, 0x81, 0xe6, 0x57, 0x3f, 0xc3, - 0x13, 0x28, 0x26, 0xcd, 0x43, 0x8c, 0x15, 0x71, 0x03, 0xcd, 0xf2, 0x90, 0x19, 0x16, 0x20, 0xba, - 0x4a, 0x0f, 0x92, 0x0c, 0x29, 0x79, 0xae, 0xd6, 0xec, 0x35, 0x08, 0x9a, 0x0d, 0xba, 0xff, 0x1a, - 0x55, 0x2c, 0x1b, 0x35, 0x7d, 0x8d, 0x6b, 0x92, 0x4d, 0xb5, 0x6e, 0xc0, 0x71, 0x8d, 0xee, 0x54, - 0xa8, 0xae, 0x29, 0x36, 0xd7, 0xea, 0x83, 0xe1, 0x57, 0xf4, 0xf0, 0x92, 0xb5, 0xe4, 0xd7, 0xaa, - 0x33, 0x2e, 0x21, 0xb0, 0xfb, 0xaa, 0x36, 0x96, 0x98, 0xe2, 0xb6, 0x56, 0xf7, 0x5a, 0xa2, 0x9a, - 0xd9, 0xd7, 0xe2, 0x0e, 0xc0, 0xeb, 0xff, 0xe8, 0xee, 0x29, 0x55, 0xcd, 0xea, 0xeb, 0x71, 0x5d, - 0x70, 0x6a, 0x0b, 0x93, 0xa9, 0xb4, 0x24, 0xaf, 0x76, 0xed, 0xa2, 0x0a, 0x83, 0xdb, 0xe1, 0xe1, - 0x38, 0x86, 0xb8, 0xe2, 0x77, 0x44, 0x38, 0x60, 0xa1, 0x44, 0x73, 0xfc, 0xc6, 0x4c, 0x67, 0xe0, - 0xd9, 0x61, 0xae, 0x32, 0x56, 0xd6, 0x98, 0x68, 0xae, 0x9d, 0x33, 0x6d, 0xc0, 0xf7, 0x9b, 0x3a, - 0x87, 0x58, 0xc5, 0xc0, 0xf5, 0x5b, 0xba, 0x5b, 0x12, 0x02, 0xcf, 0xff, 0xaf, 0x73, 0x28, 0x31, - 0xc5, 0xf1, 0xdf, 0x74, 0x67, 0x25, 0xaa, 0xf9, 0x7d, 0x3b, 0xee, 0x00, 0xdc, 0xfe, 0x5d, 0xc7, - 0x57, 0xaa, 0x9a, 0x57, 0x3a, 0xae, 0x0b, 0x4e, 0xeb, 0x69, 0x69, 0xeb, 0xf2, 0xac, 0x22, 0x0f, - 0xf2, 0x9c, 0x18, 0xbd, 0xda, 0x48, 0xeb, 0xac, 0x46, 0x40, 0xe8, 0xb5, 0x46, 0x73, 0xb9, 0xb1, - 0x4c, 0x43, 0x3a, 0xf2, 0xeb, 0x8d, 0xe6, 0xc1, 0x46, 0x9d, 0x46, 0x15, 0xcb, 0x37, 0x62, 0xd6, - 0x60, 0xf3, 0x66, 0xa3, 0xb9, 0xc2, 0x60, 0xa1, 0xb5, 0x26, 0xf3, 0xf7, 0x98, 0x26, 0xb8, 0xfc, - 0xa3, 0x91, 0x5e, 0xc3, 0xfd, 0x39, 0xa2, 0x61, 0xd3, 0xdb, 0xb9, 0x3f, 0x87, 0xf8, 0x9c, 0xde, - 0x92, 0xfd, 0xb9, 0xea, 0x1b, 0x78, 0x89, 0xb1, 0xb0, 0x3f, 0xa7, 0x22, 0x16, 0xa4, 0x22, 0x42, - 0x4d, 0x98, 0x75, 0x86, 0xd1, 0x9f, 0x0b, 0x63, 0x38, 0x52, 0x06, 0xe7, 0xdf, 0x83, 0xef, 0x1e, - 0xf2, 0xed, 0x02, 0xee, 0x81, 0x6f, 0x0f, 0xbe, 0x7b, 0xb4, 0xef, 0x32, 0x7c, 0xf7, 0x28, 0xdf, - 0x47, 0x4b, 0x45, 0xf8, 0xf6, 0xe1, 0xbb, 0x27, 0xf4, 0x1d, 0x48, 0x19, 0x7c, 0x0b, 0xf2, 0xdd, - 0x07, 0xde, 0x53, 0x04, 0xf7, 0x49, 0xde, 0xd3, 0xe4, 0xbb, 0x2f, 0xe4, 0x7d, 0x0c, 0xf9, 0xee, - 0xd3, 0xbc, 0xbf, 0x2f, 0x15, 0xe1, 0xfb, 0xbf, 0xc8, 0x77, 0x5f, 0x95, 0xf7, 0x0f, 0xa4, 0x0c, - 0xbe, 0xff, 0x5b, 0xbe, 0x9c, 0xb9, 0x25, 0x38, 0x96, 0x5b, 0xf6, 0x01, 0x12, 0xa7, 0x11, 0x04, - 0xfa, 0x10, 0x03, 0xa4, 0x21, 0x1d, 0xef, 0x23, 0x0c, 0x90, 0x46, 0x55, 0xd8, 0x8f, 0x63, 0xd6, - 0x88, 0xfe, 0x49, 0x23, 0xbd, 0x8a, 0xfa, 0xb9, 0x5c, 0xce, 0xd9, 0xa7, 0x8d, 0x78, 0x53, 0x71, - 0xb5, 0x94, 0xb2, 0xcf, 0x60, 0x81, 0xb6, 0xf6, 0xfc, 0x79, 0x23, 0x91, 0x02, 0xa4, 0xdc, 0xfe, - 0xab, 0x6a, 0x04, 0x9f, 0xc7, 0x36, 0x91, 0x46, 0xc6, 0x15, 0xdc, 0x9f, 0xb4, 0x8a, 0xe4, 0xf6, - 0xb8, 0x26, 0x72, 0xa3, 0x11, 0x78, 0x3e, 0xbe, 0x89, 0xde, 0xa2, 0x7d, 0x18, 0x93, 0xe3, 0x13, - 0xb4, 0x11, 0xe8, 0x93, 0x83, 0x72, 0x02, 0x76, 0x38, 0x7d, 0xe1, 0xa8, 0x9c, 0x98, 0x20, 0x86, - 0x7d, 0x7a, 0x58, 0x4e, 0x52, 0xba, 0x88, 0x74, 0x72, 0x82, 0xde, 0x9c, 0x7d, 0xd5, 0x81, 0x39, - 0x45, 0x49, 0x91, 0xbd, 0x53, 0xb1, 0x37, 0xea, 0xd9, 0x48, 0x21, 0xce, 0x84, 0xa0, 0x67, 0x23, - 0x42, 0x9c, 0x85, 0x10, 0x3d, 0x1b, 0x75, 0x88, 0xb3, 0x11, 0xa2, 0x67, 0xa3, 0x0a, 0x71, 0x8e, - 0xd2, 0x45, 0x88, 0x73, 0x11, 0xa2, 0x67, 0x63, 0x18, 0xe2, 0x3c, 0x25, 0x45, 0x88, 0xf3, 0x11, - 0x62, 0x10, 0xbd, 0xb8, 0x10, 0x82, 0x41, 0xd9, 0x0b, 0xb9, 0x4f, 0x1b, 0x0c, 0x7b, 0xb1, 0x15, - 0x21, 0x06, 0x75, 0x2f, 0x2e, 0x56, 0xba, 0x08, 0x71, 0x09, 0x42, 0x0c, 0x56, 0x7b, 0x71, 0xa9, - 0x92, 0x22, 0xc4, 0x65, 0xd2, 0x53, 0xa5, 0x58, 0x94, 0x3d, 0xd9, 0x26, 0xb5, 0xd1, 0x46, 0xa8, - 0xed, 0x09, 0xda, 0x09, 0x49, 0x40, 0x87, 0xdb, 0x41, 0x9b, 0x81, 0x25, 0x12, 0x53, 0x21, 0x77, - 0x46, 0xec, 0x10, 0x76, 0x57, 0x82, 0x4a, 0x44, 0xd9, 0xe9, 0xd0, 0xbb, 0x23, 0x5a, 0x08, 0x7f, - 0x15, 0x88, 0x0f, 0x15, 0x2b, 0x72, 0x7d, 0xda, 0x93, 0xc0, 0x76, 0xa8, 0x58, 0x09, 0x17, 0xa1, - 0xbd, 0x09, 0xda, 0xb8, 0x11, 0x42, 0xec, 0xee, 0x03, 0xdb, 0x01, 0xc7, 0x55, 0xfa, 0xf7, 0x83, - 0x08, 0xda, 0xda, 0xe0, 0x01, 0x78, 0x04, 0x44, 0x16, 0x7f, 0x96, 0x1a, 0x95, 0xa2, 0x70, 0xca, - 0xc5, 0x69, 0x18, 0x3d, 0x98, 0xa0, 0x92, 0xd6, 0x90, 0xb6, 0xfb, 0x0b, 0x42, 0x6b, 0x94, 0x4c, - 0xff, 0x0a, 0xb2, 0xdd, 0xce, 0xa4, 0x63, 0xcb, 0xc5, 0xea, 0x21, 0xa4, 0x42, 0x02, 0xda, 0xec, - 0xe1, 0x84, 0xaa, 0x3d, 0x09, 0x93, 0xdd, 0x23, 0x09, 0x5a, 0x95, 0x42, 0x48, 0x6b, 0x3e, 0x8a, - 0x9e, 0x0c, 0x78, 0x36, 0x7c, 0x3d, 0x06, 0xe7, 0x03, 0x9e, 0xad, 0xc5, 0x8f, 0x63, 0x54, 0x06, - 0x3c, 0x9b, 0x5c, 0xec, 0x4b, 0xd0, 0x56, 0x33, 0x42, 0x66, 0xc4, 0x0d, 0x9c, 0x82, 0xcb, 0x6d, - 0xf6, 0x44, 0xc2, 0x3c, 0xd4, 0xa8, 0x57, 0xf9, 0xd0, 0x68, 0x28, 0x7d, 0x32, 0x61, 0xae, 0x32, - 0x56, 0xd4, 0x48, 0xb3, 0x52, 0xf6, 0x54, 0x54, 0x96, 0x8d, 0xdb, 0x3d, 0x8d, 0x78, 0x31, 0x99, - 0xb2, 0x7a, 0x26, 0x61, 0x7e, 0xc9, 0x58, 0x29, 0x69, 0xcd, 0x08, 0xf7, 0x6c, 0xc2, 0x3c, 0xc4, - 0x58, 0x1e, 0x17, 0x2a, 0xbb, 0xe7, 0x22, 0xa2, 0x9a, 0x60, 0xcf, 0x27, 0xcc, 0x7a, 0xc3, 0x8c, - 0x8a, 0x94, 0xcd, 0xfe, 0x84, 0xf9, 0x65, 0x23, 0xa9, 0x87, 0x6e, 0x46, 0xb4, 0x17, 0x24, 0x95, - 0x1a, 0xb1, 0xb2, 0x7d, 0x31, 0x26, 0xac, 0x89, 0xf8, 0x92, 0x24, 0x13, 0x13, 0x2a, 0xbb, 0xbf, - 0x25, 0xcc, 0x66, 0x63, 0xb5, 0x16, 0xf5, 0x7a, 0x7e, 0xbe, 0x6a, 0x17, 0xda, 0xbf, 0x9c, 0x30, - 0x9b, 0x8c, 0x43, 0x67, 0x57, 0x52, 0x7e, 0x5e, 0x99, 0x45, 0xa5, 0x86, 0xc5, 0xab, 0x50, 0x89, - 0x96, 0xca, 0x8c, 0x40, 0xaf, 0x25, 0xcc, 0x06, 0x63, 0xd5, 0x6c, 0x2a, 0x2a, 0xcc, 0xeb, 0x48, - 0x51, 0x54, 0x21, 0xd6, 0x9b, 0x37, 0x66, 0xd8, 0xd7, 0x70, 0x78, 0x13, 0x55, 0x96, 0x1e, 0xc3, - 0xdc, 0xf8, 0x0d, 0xa3, 0x8a, 0x4c, 0x8f, 0x05, 0x23, 0xd4, 0xfa, 0xad, 0x6e, 0xa1, 0x3e, 0x7f, - 0xc7, 0x70, 0x0c, 0x1b, 0x0b, 0xe7, 0xd5, 0xef, 0x19, 0x5e, 0xaa, 0xdc, 0xa1, 0x25, 0x37, 0xe7, - 0x75, 0xf3, 0x3c, 0xbb, 0x21, 0x0e, 0x91, 0x93, 0x1b, 0x43, 0xa8, 0x9b, 0xe7, 0x25, 0x74, 0x53, - 0x1c, 0x22, 0xc3, 0x9b, 0x19, 0x0e, 0x41, 0xdc, 0x91, 0x8b, 0xf5, 0x2d, 0x8c, 0xe6, 0x55, 0x6f, - 0xd1, 0xf3, 0xfc, 0xd0, 0xf7, 0xad, 0x35, 0x18, 0x79, 0xba, 0xad, 0x8a, 0x85, 0xde, 0x6f, 0xaf, - 0xc1, 0xc8, 0xf6, 0x0e, 0x46, 0xab, 0x04, 0x30, 0xf8, 0xbf, 0x93, 0xc9, 0xe3, 0x59, 0xc5, 0x95, - 0x73, 0x6f, 0x2f, 0xc2, 0xa3, 0x4d, 0x2e, 0xee, 0xad, 0x36, 0xc9, 0xfa, 0x3e, 0x66, 0xae, 0x34, - 0x0e, 0x42, 0xf3, 0x28, 0x47, 0x4c, 0xf4, 0xfa, 0x56, 0x5e, 0xae, 0x35, 0x8c, 0xa6, 0x75, 0x0c, - 0x27, 0xeb, 0x07, 0x66, 0xc2, 0xe4, 0xe5, 0x4f, 0xc8, 0x66, 0xbf, 0x57, 0x38, 0x2c, 0xed, 0x17, - 0xd8, 0x43, 0x08, 0xd1, 0xef, 0x15, 0xda, 0xd3, 0x7e, 0x21, 0x60, 0x0f, 0x33, 0x9c, 0xeb, 0xbc, - 0x42, 0x3b, 0x7b, 0x84, 0xd1, 0x12, 0x4f, 0x7a, 0xeb, 0xd8, 0xa3, 0x4c, 0x1d, 0x1b, 0x6d, 0xf6, - 0x18, 0xa3, 0x8a, 0xa5, 0x47, 0x72, 0x9a, 0xe5, 0xdc, 0xc6, 0x81, 0xaf, 0x8f, 0xbb, 0xec, 0x71, - 0x46, 0x27, 0xc1, 0x21, 0x6f, 0x0b, 0xdb, 0x07, 0xfd, 0x2e, 0xcf, 0x9d, 0x64, 0x4f, 0xc0, 0x4d, - 0xd7, 0x70, 0xd7, 0xe1, 0xed, 0xec, 0x49, 0xc0, 0x34, 0xf0, 0xec, 0x29, 0xf9, 0x78, 0xb4, 0x2f, - 0xd8, 0xd3, 0x78, 0x4c, 0xe7, 0xbd, 0x80, 0x3d, 0x23, 0x1f, 0x03, 0xc7, 0x65, 0xcf, 0x82, 0x58, - 0x5a, 0x58, 0x2e, 0x78, 0x3e, 0x87, 0x4c, 0x51, 0x53, 0x12, 0x7d, 0x1e, 0xb1, 0xba, 0xbc, 0x80, - 0xed, 0x57, 0x4f, 0x82, 0xbd, 0x80, 0x9e, 0x75, 0xf3, 0x82, 0xcf, 0x79, 0xc0, 0x5e, 0x04, 0xde, - 0x33, 0x55, 0x66, 0x2f, 0x31, 0x73, 0x81, 0x31, 0x67, 0x28, 0xc3, 0xfe, 0x06, 0x85, 0x61, 0xcb, - 0x76, 0x2c, 0x37, 0x60, 0x2f, 0x43, 0x21, 0xeb, 0xb8, 0xec, 0x15, 0x3c, 0xe5, 0x2c, 0x97, 0xbd, - 0xca, 0x68, 0xad, 0xcd, 0xf9, 0x15, 0x37, 0x6f, 0x09, 0xac, 0x99, 0xaf, 0xa1, 0x48, 0x34, 0x82, - 0x7c, 0xbf, 0x4e, 0x47, 0xac, 0x65, 0x1a, 0xd2, 0x65, 0xf8, 0x46, 0x4c, 0x71, 0xc4, 0x71, 0x05, - 0x7b, 0x13, 0xa5, 0xda, 0xef, 0x15, 0x9c, 0xbc, 0x55, 0x4c, 0xbb, 0x36, 0xbb, 0x3c, 0x89, 0x1d, - 0x83, 0x04, 0x36, 0xf8, 0xec, 0x8a, 0x64, 0x44, 0xe1, 0xbb, 0x9e, 0xcf, 0xae, 0x4c, 0x52, 0xfc, - 0x11, 0xd7, 0xf2, 0xa7, 0x07, 0x3d, 0xec, 0x4c, 0xb6, 0x25, 0x29, 0x98, 0x46, 0x74, 0xb0, 0xed, - 0x49, 0x0a, 0xa6, 0x51, 0xb0, 0xda, 0x11, 0x83, 0xbe, 0x93, 0xdd, 0x30, 0xc8, 0x76, 0x26, 0xa9, - 0x04, 0x01, 0x85, 0xaf, 0x9d, 0x5d, 0x49, 0x7a, 0xfb, 0x55, 0x31, 0xd8, 0xee, 0x4e, 0x52, 0x65, - 0x55, 0x41, 0x1d, 0xe6, 0x2a, 0x38, 0x50, 0xad, 0x4c, 0x80, 0x3b, 0xa7, 0xab, 0xe1, 0x40, 0xbf, - 0x38, 0x15, 0x78, 0x0d, 0x3a, 0x42, 0xbe, 0x14, 0x70, 0x2d, 0xd8, 0xc8, 0x57, 0xb0, 0x82, 0xae, - 0x83, 0x0e, 0xbd, 0x82, 0x15, 0x70, 0x3d, 0xb2, 0x91, 0x71, 0x85, 0x6a, 0xff, 0x18, 0x0a, 0xf4, - 0xf6, 0x55, 0xc0, 0x4f, 0xa0, 0x20, 0xaf, 0x63, 0xb2, 0x4e, 0x81, 0xfd, 0x34, 0x49, 0x35, 0x81, - 0xdb, 0x18, 0x6a, 0xfe, 0x4c, 0x8b, 0xbf, 0xeb, 0xa1, 0xfd, 0x73, 0xdd, 0x1e, 0xe4, 0x05, 0x6a, - 0xff, 0xa2, 0xea, 0x3f, 0xe7, 0x57, 0x38, 0xfb, 0x65, 0x84, 0x24, 0x80, 0x5f, 0xc5, 0xbb, 0x07, - 0xec, 0xd7, 0x50, 0x82, 0x51, 0xaf, 0x55, 0x0c, 0x38, 0xfb, 0x0d, 0x86, 0x44, 0x5a, 0x49, 0xe4, - 0xb7, 0x32, 0x03, 0xda, 0x4c, 0x82, 0xbf, 0x93, 0x43, 0xcb, 0xc7, 0x45, 0x76, 0xc2, 0x19, 0x17, - 0xec, 0x06, 0x19, 0xcc, 0x29, 0x4c, 0x28, 0xe0, 0x46, 0xe4, 0x38, 0x64, 0x43, 0xb3, 0x07, 0x9d, - 0xfc, 0x63, 0x92, 0x5e, 0x3a, 0x55, 0x56, 0xa1, 0xe0, 0x9e, 0x24, 0xbd, 0x16, 0x63, 0xec, 0x42, - 0xd9, 0x1e, 0x18, 0x55, 0x59, 0x86, 0x82, 0xbd, 0x49, 0x7a, 0x5f, 0x46, 0xd8, 0x86, 0x92, 0x7b, - 0x93, 0xf4, 0x1e, 0x8a, 0xb3, 0x0e, 0x85, 0xf7, 0xe9, 0xcc, 0xca, 0x1b, 0xb5, 0xdf, 0xa3, 0x87, - 0x7d, 0x5c, 0x0c, 0x59, 0xbe, 0x55, 0x52, 0x1b, 0xa9, 0x9b, 0x92, 0xd8, 0x63, 0x72, 0x31, 0x6a, - 0xf9, 0xec, 0x66, 0x34, 0x86, 0xbd, 0x2d, 0x94, 0xe8, 0x5b, 0xd0, 0xc8, 0x4a, 0xc9, 0xad, 0x48, - 0x2a, 0x6e, 0x78, 0xc2, 0x3a, 0xba, 0x0d, 0xfe, 0x14, 0xa6, 0xb7, 0x5c, 0xb7, 0x27, 0xc3, 0x2b, - 0x3e, 0x54, 0xe6, 0x1d, 0xc8, 0x98, 0x6c, 0xa3, 0x7c, 0xef, 0x8c, 0x00, 0x28, 0xd3, 0xbb, 0x50, - 0x54, 0x12, 0x50, 0xa4, 0xee, 0x8e, 0xe8, 0x60, 0x77, 0xf7, 0x87, 0x24, 0xad, 0x37, 0x19, 0x97, - 0x3c, 0x6e, 0x6f, 0x20, 0x5e, 0x19, 0x57, 0xce, 0x8f, 0x06, 0x59, 0x0d, 0x9a, 0x93, 0xbc, 0xef, - 0xca, 0xb8, 0xca, 0xd1, 0x2e, 0xa5, 0x0b, 0x27, 0xbb, 0x1b, 0x64, 0x11, 0x84, 0x5c, 0xaf, 0x52, - 0x52, 0x6c, 0x0d, 0xaf, 0x96, 0x9e, 0xc6, 0x29, 0x73, 0x14, 0xe6, 0xa4, 0x46, 0x68, 0xa3, 0x8d, - 0x50, 0x27, 0x37, 0x52, 0x0a, 0x24, 0xa0, 0xc3, 0x9d, 0x82, 0x13, 0x85, 0xc4, 0x54, 0xc8, 0x53, - 0x23, 0x76, 0x08, 0x7b, 0x1a, 0x0e, 0x2f, 0xca, 0x4e, 0x87, 0x3e, 0xbd, 0x11, 0x1d, 0x1a, 0xa7, - 0x48, 0x67, 0x34, 0x82, 0xc6, 0x38, 0xa2, 0x9c, 0xd9, 0x28, 0x69, 0xe8, 0x08, 0x67, 0xe1, 0x48, - 0x93, 0x19, 0x57, 0xde, 0xcf, 0x56, 0xba, 0xf0, 0x7c, 0x8e, 0x0a, 0x15, 0x7a, 0x3d, 0x37, 0x12, - 0x1b, 0x9d, 0x3a, 0x4f, 0xa9, 0xcb, 0xed, 0x3d, 0xce, 0x3a, 0x5d, 0x56, 0xc0, 0x8f, 0x9a, 0xe0, - 0x48, 0xe5, 0x5b, 0xf2, 0xe4, 0xaa, 0x10, 0xc4, 0x7f, 0x5b, 0x9e, 0x90, 0x15, 0xa4, 0x59, 0xfc, - 0x53, 0x9e, 0x90, 0x15, 0xaa, 0xb8, 0xbc, 0x13, 0xb3, 0x06, 0xa3, 0x77, 0xe5, 0x09, 0x59, 0x5b, - 0x6b, 0x5e, 0xef, 0xc5, 0x34, 0x41, 0xe6, 0x7d, 0x50, 0x4d, 0xa3, 0x9a, 0xfc, 0xe9, 0xb2, 0x60, - 0x17, 0x34, 0x2b, 0xa0, 0xc7, 0x95, 0xc0, 0x85, 0xcd, 0x78, 0x6b, 0x7b, 0x25, 0x7c, 0x08, 0x65, - 0x17, 0x35, 0xe3, 0xc6, 0xb7, 0xfb, 0x1b, 0x6c, 0x2b, 0x04, 0x43, 0x56, 0x10, 0x6c, 0xf1, 0x7c, - 0x9b, 0x5d, 0xdc, 0x8c, 0xa9, 0x6c, 0xb9, 0xb6, 0x57, 0x92, 0x17, 0xdf, 0x97, 0x34, 0xe3, 0x35, - 0x74, 0x64, 0xfa, 0x30, 0x76, 0xa9, 0x7e, 0x6c, 0x67, 0x97, 0x21, 0xc0, 0x88, 0x9b, 0xd7, 0x1e, - 0x2f, 0x6f, 0xa6, 0xe9, 0x56, 0x05, 0xb8, 0xdd, 0xcf, 0xdd, 0x82, 0x98, 0x60, 0x57, 0x34, 0x13, - 0xdd, 0x2a, 0xb7, 0xcc, 0x28, 0xbb, 0x52, 0x43, 0x8a, 0x5d, 0x66, 0x94, 0x6d, 0x6b, 0xc6, 0xd1, - 0xc9, 0xcd, 0x7b, 0x36, 0x67, 0xdb, 0xd1, 0xe8, 0xe6, 0x68, 0xec, 0x00, 0xd5, 0xec, 0xc0, 0xe1, - 0x6c, 0x27, 0xa8, 0x76, 0x5b, 0xc2, 0x1a, 0xb3, 0x02, 0xce, 0xae, 0x6d, 0xc6, 0x4e, 0x01, 0x3b, - 0x03, 0x6f, 0x4b, 0xc0, 0xae, 0x03, 0xf5, 0xae, 0x8a, 0xef, 0x73, 0x57, 0x8c, 0x04, 0xdc, 0x67, - 0xd7, 0x83, 0x2f, 0x1e, 0x7f, 0xdc, 0x2c, 0xaf, 0x15, 0x5c, 0x97, 0xe3, 0xc3, 0x46, 0xa6, 0x9b, - 0xfd, 0x04, 0x50, 0x3f, 0x8e, 0xb7, 0x01, 0xf7, 0x45, 0xa6, 0x9b, 0xfd, 0x14, 0x9d, 0x88, 0x42, - 0x34, 0xfd, 0x33, 0xdd, 0xec, 0x67, 0xcd, 0xb8, 0x82, 0x96, 0x5f, 0xc8, 0xd8, 0xcf, 0x11, 0x49, - 0x5e, 0xc8, 0x4b, 0xe4, 0x17, 0xcd, 0x72, 0x1b, 0xb2, 0x45, 0x2e, 0x0e, 0xbf, 0x6c, 0xa6, 0x82, - 0xcc, 0x16, 0x39, 0x2f, 0xb3, 0x7b, 0x9a, 0xe5, 0x7e, 0x21, 0xbf, 0x99, 0xed, 0x91, 0xc9, 0xe5, - 0x45, 0x6e, 0x05, 0x1c, 0xc8, 0xde, 0x66, 0x2a, 0x10, 0x7d, 0xe9, 0xe7, 0x4e, 0xcb, 0x5b, 0xdf, - 0x7b, 0x9b, 0x69, 0xe0, 0xc3, 0x5b, 0x22, 0x0d, 0xdf, 0xd7, 0xac, 0x0e, 0xcf, 0x21, 0x72, 0x3f, - 0xba, 0x40, 0x2b, 0x41, 0x08, 0x3d, 0x00, 0x08, 0x97, 0x9d, 0x1a, 0xfa, 0x53, 0x33, 0xd5, 0x9b, - 0xba, 0xb6, 0xd3, 0xe0, 0x9f, 0xa1, 0x87, 0x5b, 0x33, 0x0d, 0x3d, 0xd8, 0x2c, 0xa7, 0x3b, 0x17, - 0x69, 0xe1, 0xb9, 0xec, 0x2f, 0x61, 0x73, 0x50, 0x78, 0x16, 0xfb, 0x6b, 0xb3, 0x5c, 0x1c, 0xb8, - 0xe8, 0x80, 0xf8, 0xa1, 0x6a, 0x1b, 0xf2, 0x87, 0x31, 0x68, 0x99, 0x20, 0x33, 0x34, 0x79, 0x04, - 0x7b, 0x04, 0xde, 0x65, 0x83, 0x8a, 0xce, 0x12, 0xec, 0xd1, 0x08, 0x34, 0x60, 0x95, 0xcb, 0xdc, - 0x66, 0x8f, 0x55, 0x4d, 0x3a, 0xd8, 0xe3, 0x72, 0xb0, 0x46, 0x32, 0xdd, 0x6c, 0x1f, 0x8a, 0x6b, - 0xd4, 0x11, 0x3c, 0x08, 0x8e, 0xb4, 0x82, 0x09, 0xf6, 0x84, 0x52, 0x84, 0xf4, 0x49, 0x04, 0xa6, - 0xec, 0x67, 0x27, 0x2c, 0xdf, 0x66, 0x4f, 0x35, 0x87, 0xdf, 0x29, 0x1c, 0x17, 0x6f, 0xb5, 0xa7, - 0x25, 0xf3, 0xa2, 0xb3, 0x99, 0x53, 0xf3, 0x91, 0x26, 0x6c, 0xe7, 0x54, 0xeb, 0xd1, 0x26, 0x6c, - 0x28, 0x79, 0x81, 0x4f, 0x95, 0xa9, 0xfd, 0x58, 0x13, 0xad, 0x44, 0xb2, 0x3d, 0x92, 0xeb, 0xfd, - 0x26, 0x61, 0x8f, 0x47, 0x30, 0x6d, 0xb7, 0xaf, 0x09, 0x5b, 0xcb, 0x10, 0xd3, 0xba, 0x4f, 0x34, - 0x51, 0x76, 0x25, 0x8e, 0xa5, 0x92, 0xc0, 0x27, 0x9b, 0xe4, 0x1b, 0x2b, 0x04, 0xb5, 0xf6, 0x53, - 0x4d, 0xd8, 0x71, 0x42, 0x30, 0xcc, 0xcb, 0x45, 0x2b, 0x0f, 0xe7, 0x4f, 0x37, 0x61, 0xcb, 0x18, - 0x85, 0xb5, 0xc5, 0x33, 0x4d, 0x54, 0x22, 0x8a, 0x6f, 0x65, 0x2c, 0x90, 0x01, 0x9e, 0x6d, 0x92, - 0x2f, 0xb1, 0x2a, 0xaa, 0xf5, 0x9f, 0x03, 0x1f, 0x5a, 0x16, 0x7a, 0xa6, 0x84, 0x6f, 0xe5, 0xe9, - 0x14, 0xc1, 0x4e, 0x6b, 0xd1, 0xe0, 0x88, 0x7b, 0x74, 0xc5, 0x13, 0x08, 0x7a, 0x7a, 0x0b, 0x25, - 0x8e, 0xc0, 0xdc, 0x74, 0x19, 0xc8, 0x19, 0x2d, 0x7a, 0x7b, 0x91, 0xe5, 0xb0, 0x3b, 0xb3, 0x45, - 0x7f, 0x4a, 0x91, 0x13, 0x82, 0xb0, 0xb3, 0x42, 0x5f, 0x91, 0x0e, 0x9c, 0x1d, 0x2a, 0x0e, 0xf3, - 0x92, 0x37, 0x09, 0xec, 0x9c, 0x16, 0xfd, 0x69, 0x66, 0x80, 0xfb, 0x05, 0x40, 0xe7, 0xb6, 0xc4, - 0x3f, 0xcd, 0x10, 0x76, 0x5e, 0x4b, 0xec, 0x0b, 0x0e, 0x41, 0xe7, 0xb7, 0x50, 0x96, 0x08, 0x1a, - 0xb5, 0x8a, 0x8e, 0x0d, 0x42, 0x4e, 0x81, 0xfd, 0xb0, 0x85, 0x52, 0x41, 0xad, 0x2e, 0xcf, 0x15, - 0x96, 0xe3, 0x06, 0x84, 0xfe, 0xa8, 0x85, 0x72, 0x5d, 0xfd, 0x02, 0x54, 0x2e, 0x73, 0xb9, 0x17, - 0xba, 0x20, 0x2e, 0xa8, 0xf6, 0xe0, 0xc2, 0x16, 0x1a, 0xca, 0x90, 0xd8, 0x90, 0x25, 0xf2, 0x13, - 0x84, 0x5f, 0xd4, 0x42, 0xa3, 0x50, 0xc5, 0x7d, 0x1e, 0x70, 0x5f, 0xf6, 0x65, 0x6b, 0x0b, 0xe5, - 0x3b, 0x1a, 0x7a, 0xc8, 0x12, 0x30, 0xba, 0x38, 0xec, 0xd2, 0x90, 0xcf, 0x85, 0x00, 0xff, 0x4b, - 0xc2, 0x2e, 0x6d, 0xd4, 0xc9, 0xbe, 0x34, 0x54, 0xcb, 0x72, 0xcb, 0x97, 0xf1, 0x2e, 0x0b, 0x09, - 0x66, 0x85, 0xe7, 0x5b, 0x94, 0xa2, 0x63, 0xa0, 0x7c, 0x79, 0x68, 0xdf, 0xcd, 0xcb, 0x32, 0xcc, - 0x15, 0xe1, 0x60, 0xfd, 0x07, 0x9f, 0x46, 0xbf, 0xaf, 0x0c, 0x3d, 0xca, 0x95, 0x96, 0xb0, 0x6d, - 0x61, 0xe2, 0x48, 0x0b, 0xe7, 0x00, 0x82, 0xb7, 0x87, 0x81, 0x90, 0x4f, 0xb9, 0x14, 0x90, 0x60, - 0x47, 0x5c, 0xb0, 0x41, 0x4c, 0x70, 0x1f, 0x16, 0x3b, 0x6b, 0xa9, 0xf5, 0xfa, 0x1c, 0xd4, 0x76, - 0x85, 0x63, 0x30, 0xc0, 0x4b, 0x63, 0xdc, 0xdf, 0x30, 0x4e, 0xe8, 0x6e, 0x10, 0x1e, 0xe5, 0xf9, - 0x74, 0x90, 0xe3, 0x53, 0x48, 0xf2, 0xfb, 0x28, 0x93, 0x51, 0x9e, 0xef, 0xf5, 0xbd, 0x92, 0x06, - 0x3f, 0x40, 0x81, 0x8d, 0xf2, 0x7c, 0xb7, 0x53, 0x42, 0x9c, 0x0f, 0x41, 0x78, 0x94, 0xe7, 0xfb, - 0x0f, 0xeb, 0x76, 0x02, 0x61, 0xb9, 0xb2, 0x9c, 0x3e, 0x0a, 0xe1, 0xf6, 0x28, 0xfc, 0x71, 0x0b, - 0x1d, 0x91, 0x47, 0x79, 0x7e, 0x90, 0x17, 0x2c, 0xe1, 0x4c, 0xf2, 0x8c, 0xeb, 0x72, 0x7f, 0xc8, - 0xf7, 0xec, 0x8a, 0xac, 0xa5, 0x4f, 0x30, 0x82, 0xa3, 0x3c, 0xdf, 0xe5, 0x05, 0x8e, 0xcb, 0xa3, - 0xb6, 0x9f, 0x6a, 0x8a, 0xfd, 0xed, 0x83, 0x9e, 0x5f, 0x22, 0xe8, 0xb3, 0x16, 0x73, 0xb5, 0x71, - 0x48, 0xf4, 0x9b, 0x46, 0xfc, 0x03, 0xeb, 0xcd, 0xad, 0xb4, 0x1f, 0x24, 0x79, 0x0c, 0x97, 0x57, - 0xf4, 0xb7, 0xb4, 0x9a, 0x87, 0x1a, 0xf5, 0xb3, 0x08, 0xf1, 0xe6, 0xbf, 0xb5, 0x55, 0xbb, 0xae, - 0x91, 0xaa, 0xd7, 0xfd, 0x6d, 0xad, 0xd4, 0x93, 0x59, 0xe4, 0x7a, 0x93, 0x70, 0xfb, 0x17, 0xb9, - 0xc7, 0xd6, 0xe0, 0x8e, 0x56, 0xb3, 0xd1, 0xf8, 0xd2, 0x6c, 0xe6, 0x7a, 0x97, 0x70, 0xe7, 0x17, - 0xd9, 0x63, 0xc3, 0x70, 0x57, 0xab, 0xf9, 0xbf, 0x8c, 0xc6, 0x59, 0xa4, 0xf1, 0x04, 0xdc, 0xdd, - 0x4a, 0x13, 0x65, 0xa8, 0x58, 0xa9, 0xc1, 0x2f, 0x68, 0xc5, 0x2d, 0x10, 0x9d, 0x83, 0xe2, 0x82, - 0x0b, 0x5b, 0x69, 0x43, 0xae, 0xef, 0xbe, 0xe2, 0xb2, 0x8b, 0x20, 0x8b, 0xc7, 0xd3, 0xaf, 0x9e, - 0xad, 0x90, 0xe9, 0x5b, 0xff, 0xb8, 0xdd, 0xc5, 0xad, 0x54, 0x71, 0xfd, 0xb9, 0x38, 0x7a, 0x89, - 0x44, 0x7b, 0xe2, 0xe8, 0xa5, 0x40, 0xfb, 0x6a, 0x74, 0x2f, 0x83, 0x77, 0x7d, 0xb9, 0x1d, 0x97, - 0x5d, 0x8e, 0xae, 0xe0, 0x86, 0x3a, 0x2e, 0xb8, 0x42, 0xba, 0xaa, 0x09, 0x70, 0x25, 0xd0, 0x9e, - 0x8d, 0x71, 0x74, 0x1b, 0xd0, 0xc1, 0x1a, 0xdd, 0xed, 0xad, 0xb4, 0x66, 0xc8, 0x0b, 0xd3, 0xb8, - 0x64, 0x07, 0x24, 0x31, 0x4c, 0x9d, 0xe7, 0x76, 0xce, 0x26, 0xc1, 0xa9, 0x6b, 0x57, 0xab, 0x2a, - 0xed, 0xa8, 0x44, 0x1e, 0xac, 0x76, 0xa3, 0x1a, 0x66, 0x31, 0x0a, 0x0f, 0x2f, 0x57, 0xb5, 0x9a, - 0x4d, 0xc6, 0xa1, 0xb3, 0x19, 0x87, 0x2a, 0x57, 0x23, 0xb2, 0xdc, 0xee, 0xc6, 0xd9, 0x5e, 0x83, - 0xde, 0x65, 0xc6, 0xe3, 0xe8, 0xb5, 0x72, 0xc8, 0xd4, 0x36, 0x34, 0x2e, 0xbb, 0x0e, 0xd5, 0x5f, - 0xf3, 0x03, 0xa4, 0x9e, 0xf0, 0x47, 0x78, 0xec, 0xd1, 0x56, 0x9c, 0x2a, 0x2d, 0xc1, 0x7b, 0x3d, - 0xbf, 0x64, 0x61, 0xea, 0xbe, 0xdd, 0x46, 0x0b, 0x1c, 0x61, 0xfd, 0x8e, 0xe0, 0x3e, 0xed, 0x93, - 0xdb, 0xd4, 0x7e, 0x8f, 0x77, 0x3b, 0xe3, 0xe3, 0xec, 0x9d, 0x36, 0x7d, 0x71, 0x4d, 0x53, 0x00, - 0xd0, 0xbb, 0x6d, 0x34, 0x78, 0xd4, 0x94, 0xd3, 0x2a, 0x14, 0xbc, 0xd7, 0x86, 0x93, 0x9c, 0x9a, - 0x0c, 0x35, 0xc2, 0xf7, 0xdb, 0xcc, 0x2f, 0x1b, 0x49, 0x2d, 0xd4, 0x7f, 0x43, 0xf1, 0x07, 0x70, - 0x5a, 0xb5, 0x09, 0x05, 0x1f, 0xc2, 0xa9, 0x14, 0xcc, 0xb0, 0xfa, 0xa8, 0x8d, 0x86, 0x47, 0xad, - 0xac, 0xf1, 0x78, 0x1f, 0xb7, 0xd1, 0x62, 0xa6, 0x5d, 0x85, 0xf0, 0x27, 0x6d, 0xb4, 0xe1, 0xa1, - 0xee, 0xb1, 0x4f, 0xf1, 0x78, 0xa4, 0x57, 0xf1, 0xd9, 0x67, 0x6d, 0xb8, 0x4a, 0x76, 0xdc, 0x8a, - 0xe0, 0xec, 0xf3, 0x36, 0x79, 0x6a, 0xcc, 0x7b, 0xae, 0xcd, 0xfe, 0x85, 0x04, 0x0d, 0x38, 0x79, - 0xdf, 0x53, 0xc8, 0xb1, 0x29, 0xda, 0x66, 0x0e, 0x78, 0xae, 0x98, 0x60, 0xc7, 0xa5, 0x70, 0xbb, - 0x4e, 0xcf, 0x83, 0x56, 0x89, 0xb3, 0xe3, 0x53, 0xb8, 0xad, 0xf7, 0xb6, 0xd0, 0x00, 0xa7, 0xfd, - 0x02, 0x3b, 0x21, 0x85, 0x6f, 0x01, 0x12, 0xf0, 0x2a, 0x82, 0xb0, 0x13, 0x53, 0xb8, 0x0e, 0xb2, - 0xa6, 0x61, 0x72, 0x12, 0x4c, 0xba, 0xad, 0xe9, 0x0d, 0xe3, 0xd2, 0xe7, 0xc9, 0xf0, 0x09, 0xe0, - 0x28, 0xce, 0x37, 0xb3, 0x53, 0xaa, 0xed, 0xff, 0xe4, 0x96, 0xcf, 0x4e, 0x4d, 0xd1, 0x88, 0x90, - 0x88, 0x7c, 0x0e, 0xd0, 0x6e, 0xfd, 0xb4, 0x14, 0xd5, 0x8a, 0x86, 0xbc, 0x8a, 0x00, 0x7a, 0x3a, - 0xe2, 0x10, 0xda, 0x6d, 0x4d, 0xb3, 0x33, 0x10, 0x87, 0x5a, 0xca, 0xcf, 0x99, 0x29, 0xea, 0x3e, - 0x1e, 0xcf, 0x4a, 0x51, 0xae, 0xe8, 0x31, 0xe6, 0xf6, 0xec, 0x14, 0x15, 0x67, 0x14, 0xd6, 0xae, - 0xcf, 0x01, 0xa7, 0x3e, 0x2e, 0x64, 0x25, 0xb1, 0x73, 0x53, 0xd8, 0xec, 0x4e, 0x07, 0x94, 0x58, - 0x5c, 0xea, 0x05, 0x65, 0x76, 0x5e, 0x8a, 0xd6, 0xb1, 0x08, 0xe8, 0x55, 0x04, 0xe1, 0xe7, 0xa7, - 0x22, 0x47, 0x06, 0x8c, 0xc4, 0x0f, 0xc1, 0x5f, 0x21, 0x34, 0x54, 0xeb, 0x28, 0x4f, 0x3f, 0xaa, - 0x45, 0x71, 0xe1, 0x76, 0x01, 0x68, 0x63, 0x3d, 0xbe, 0x30, 0x25, 0x4f, 0x04, 0xa5, 0xb0, 0x78, - 0x2f, 0x42, 0x97, 0x47, 0x72, 0x5d, 0x70, 0xbb, 0x15, 0xfc, 0x47, 0x72, 0x5d, 0xa4, 0x12, 0x08, - 0xab, 0x54, 0xd6, 0xc3, 0x72, 0x71, 0x8a, 0x8a, 0xaa, 0x56, 0xa2, 0xc6, 0xe7, 0x12, 0x08, 0xd3, - 0xb6, 0x4d, 0x4e, 0x04, 0xf6, 0xea, 0x76, 0xf5, 0x53, 0x50, 0x8a, 0x2a, 0x2e, 0x2e, 0x54, 0x6f, - 0x97, 0xcb, 0x10, 0x2e, 0x6d, 0xdb, 0x28, 0x36, 0x4b, 0xa0, 0xe8, 0x30, 0xcb, 0x2f, 0xd7, 0x46, - 0xfa, 0x38, 0x50, 0xf5, 0x77, 0x45, 0x8a, 0xea, 0x3e, 0x2a, 0x52, 0xde, 0xae, 0x44, 0xf6, 0x94, - 0x37, 0x89, 0xc1, 0xd7, 0xb6, 0x90, 0x5d, 0x78, 0x52, 0xa9, 0x7a, 0xdb, 0x1e, 0xb2, 0xab, 0x0a, - 0x95, 0xbf, 0x1d, 0x31, 0x76, 0x4a, 0x2c, 0x57, 0x3f, 0x4d, 0x81, 0x38, 0x47, 0xbd, 0xed, 0x42, - 0x59, 0x54, 0x05, 0xca, 0xd3, 0x6e, 0x30, 0xc8, 0x56, 0xc6, 0x66, 0xcb, 0xcf, 0x55, 0x60, 0x10, - 0x17, 0x2a, 0xbb, 0xab, 0xc1, 0x20, 0x5b, 0x19, 0x9b, 0x91, 0x9f, 0x6b, 0xb4, 0xd1, 0xcc, 0xfc, - 0x5c, 0x0b, 0x72, 0x51, 0x91, 0xf2, 0x76, 0x9d, 0xac, 0x2e, 0xe9, 0x2d, 0x92, 0x9f, 0xeb, 0x43, - 0x76, 0xb3, 0xe4, 0xe7, 0xc7, 0x21, 0xbb, 0x19, 0xf9, 0xf9, 0x49, 0x8c, 0x5d, 0x34, 0x3f, 0x3f, - 0xd5, 0x14, 0x6a, 0xf3, 0xf3, 0x33, 0xe4, 0xa7, 0x2a, 0x50, 0x9e, 0x7e, 0x8e, 0x20, 0x23, 0xae, - 0x33, 0x15, 0x56, 0x97, 0x2a, 0x62, 0xf6, 0x0b, 0x58, 0xc4, 0x44, 0xb4, 0xab, 0xf9, 0xe5, 0x4c, - 0xb8, 0x9b, 0xe7, 0xd9, 0xaf, 0x52, 0xf2, 0xb7, 0x65, 0xee, 0x24, 0xf7, 0x45, 0xee, 0x18, 0xf6, - 0xeb, 0x14, 0x3e, 0xd4, 0x59, 0x9b, 0x91, 0x3d, 0xf6, 0x9b, 0xb0, 0x89, 0xd9, 0xf0, 0x5b, 0x68, - 0x0f, 0x71, 0xdf, 0xf1, 0xec, 0xb4, 0x6d, 0xb3, 0xdf, 0x61, 0xc2, 0xcb, 0x36, 0x96, 0xbe, 0xdf, - 0x63, 0x72, 0x6c, 0xac, 0x58, 0xbe, 0xe0, 0x3e, 0xbb, 0x01, 0xea, 0x59, 0x9e, 0xcf, 0x79, 0x30, - 0xbf, 0x31, 0x25, 0x0f, 0x78, 0x25, 0x9e, 0xa3, 0x95, 0x8e, 0xdd, 0x94, 0xd2, 0x47, 0x55, 0xf0, - 0x21, 0x8f, 0x37, 0xa7, 0x68, 0x61, 0xcc, 0x79, 0xdd, 0xd6, 0x74, 0xc0, 0x6e, 0x91, 0xfa, 0x6a, - 0x55, 0x0c, 0xd8, 0xad, 0x58, 0x02, 0xd4, 0x94, 0xd2, 0xf3, 0xec, 0x36, 0x0c, 0x52, 0x04, 0x54, - 0x53, 0xec, 0x76, 0x2c, 0x8b, 0xa1, 0x73, 0x4c, 0xec, 0x3b, 0xe0, 0x20, 0xc4, 0xe4, 0x75, 0xfa, - 0x9d, 0x29, 0xbd, 0x8a, 0x03, 0xd4, 0xf3, 0xfc, 0x2e, 0x74, 0xa5, 0xdf, 0x0a, 0x04, 0x2d, 0x6d, - 0x77, 0xc3, 0x5b, 0x56, 0xf8, 0x44, 0x4d, 0xc8, 0xe4, 0xfc, 0x41, 0x96, 0x47, 0x14, 0xa3, 0x6a, - 0x64, 0x7f, 0xac, 0xc1, 0xf5, 0x58, 0xde, 0x83, 0x40, 0xb4, 0x6b, 0xd6, 0xc3, 0x00, 0x52, 0x7b, - 0x66, 0xc0, 0xc4, 0x8b, 0xed, 0xc5, 0xd2, 0xa4, 0x8e, 0x7a, 0xa1, 0xef, 0x7b, 0x63, 0xa8, 0xf6, - 0x7c, 0x9f, 0x9e, 0x78, 0xa4, 0x17, 0x7d, 0x55, 0xb1, 0xfb, 0xa3, 0xf3, 0x4b, 0x5d, 0x49, 0xbb, - 0x82, 0x3d, 0x10, 0x5d, 0x62, 0xd4, 0x8b, 0x4f, 0xed, 0x4f, 0xff, 0x14, 0xb5, 0xc8, 0xb8, 0xfa, - 0x83, 0xff, 0x9f, 0x91, 0x80, 0x2a, 0x4c, 0x5e, 0x1e, 0x4c, 0xd1, 0x4e, 0x41, 0x61, 0x9a, 0xa2, - 0xd2, 0xff, 0x4b, 0x74, 0xc6, 0x6b, 0x19, 0x3e, 0xe0, 0xea, 0x49, 0x30, 0x83, 0xeb, 0x43, 0xd1, - 0x5a, 0xaf, 0x72, 0x7d, 0x38, 0x3a, 0xdd, 0xe3, 0x5c, 0x1f, 0x89, 0x5a, 0x54, 0xb9, 0x3e, 0x2a, - 0x07, 0x2b, 0x84, 0xc9, 0xcb, 0x63, 0xe0, 0xaa, 0xb0, 0x1a, 0xae, 0x8f, 0x47, 0x67, 0x5f, 0x94, - 0xeb, 0x3e, 0x94, 0x3f, 0x0d, 0x0d, 0xea, 0xf1, 0x89, 0x94, 0xbe, 0xc5, 0x57, 0xef, 0xa4, 0x27, - 0xe3, 0x35, 0x86, 0x29, 0xf0, 0x94, 0x5e, 0x34, 0xaa, 0x74, 0x71, 0x70, 0x78, 0x5a, 0xbe, 0xbf, - 0x42, 0x52, 0x00, 0x9f, 0x89, 0x2a, 0x67, 0xdc, 0xf0, 0x1b, 0xc7, 0xb3, 0xd1, 0x24, 0x69, 0x46, - 0xb0, 0x78, 0x2e, 0xba, 0x32, 0x6a, 0x89, 0x36, 0x7b, 0x3e, 0xd6, 0xc9, 0xd8, 0x26, 0x89, 0xed, - 0x8f, 0x75, 0x52, 0x7f, 0xc2, 0x70, 0x05, 0x7b, 0x21, 0x16, 0x4b, 0x09, 0x10, 0xeb, 0xc5, 0x58, - 0x2c, 0xbd, 0xad, 0x52, 0xb1, 0x5e, 0xd2, 0x2f, 0x8f, 0x9a, 0x7e, 0xfe, 0x0d, 0xfd, 0xac, 0x16, - 0x0a, 0xc0, 0x97, 0xa3, 0xca, 0x91, 0x7e, 0xbe, 0x12, 0x2d, 0xdc, 0x58, 0x3f, 0x5f, 0x8d, 0xbe, - 0x21, 0x6b, 0xfb, 0xf9, 0x5a, 0xac, 0xf0, 0xe2, 0xfd, 0x7c, 0x3d, 0x56, 0x78, 0x91, 0x7e, 0xbe, - 0x11, 0x8b, 0x15, 0xed, 0xe7, 0x9b, 0xb1, 0x58, 0x35, 0xfd, 0xfc, 0x7b, 0x8a, 0xb6, 0xbc, 0x35, - 0xf3, 0x90, 0x4a, 0x42, 0xc5, 0xfb, 0x47, 0xb4, 0x6b, 0xe4, 0x4e, 0xe1, 0x6f, 0x45, 0xf3, 0x80, - 0x8f, 0x12, 0xae, 0x60, 0x6f, 0x63, 0xfa, 0x46, 0x40, 0xc4, 0xff, 0x67, 0x94, 0x32, 0x21, 0x3a, - 0xf6, 0x3b, 0xd1, 0x69, 0xaa, 0x40, 0xe5, 0xfe, 0xdd, 0x68, 0x58, 0xfd, 0x65, 0xc3, 0x15, 0xec, - 0xbd, 0x58, 0xf7, 0x25, 0x8e, 0x20, 0xef, 0xc7, 0x72, 0x26, 0x05, 0x3a, 0xce, 0x07, 0xd1, 0x32, - 0x8c, 0xf4, 0xe1, 0xc3, 0x68, 0xcd, 0xea, 0x3e, 0x7c, 0x84, 0x3e, 0x44, 0x40, 0xb8, 0xff, 0x38, - 0x5a, 0x5e, 0xd1, 0x3e, 0x7c, 0x12, 0x9d, 0xbe, 0xf1, 0x3e, 0x7c, 0x1a, 0x0d, 0x1b, 0xe9, 0xc3, - 0x67, 0xb1, 0x52, 0x8d, 0xf4, 0xe1, 0xf3, 0x58, 0x7d, 0xc7, 0xfb, 0xf0, 0xaf, 0x94, 0xb9, 0xc6, - 0xf8, 0xf2, 0xac, 0x35, 0x11, 0xae, 0x9e, 0xc7, 0xae, 0xa3, 0xc3, 0xf9, 0xcc, 0xda, 0x08, 0x15, - 0x8e, 0x5b, 0x47, 0x07, 0xae, 0x59, 0x6a, 0x24, 0xd4, 0x38, 0x7e, 0x9d, 0xd9, 0x6c, 0xac, 0x9e, - 0xbd, 0x56, 0x42, 0xa5, 0x13, 0xd6, 0x11, 0x97, 0x59, 0xe7, 0x61, 0xa8, 0x73, 0x22, 0xb8, 0xcc, - 0x9c, 0x8f, 0xa1, 0xc2, 0x49, 0xe0, 0x32, 0xcb, 0xbc, 0x0c, 0x35, 0x4e, 0x06, 0x97, 0xd9, 0xe7, - 0x67, 0xa8, 0x74, 0xca, 0x3a, 0xf5, 0x65, 0x50, 0x5d, 0xdb, 0xef, 0xeb, 0x30, 0x17, 0x1a, 0x73, - 0xd7, 0x3b, 0x2e, 0x7b, 0xa2, 0x83, 0x4e, 0x19, 0xe9, 0x6c, 0x57, 0x26, 0xc3, 0x9e, 0xec, 0xc0, - 0x57, 0xeb, 0x09, 0xcb, 0x67, 0x4f, 0x75, 0xe0, 0x2b, 0xc6, 0x84, 0xe5, 0x4b, 0x8b, 0x91, 0x5c, - 0xef, 0x37, 0xd9, 0xd3, 0x1d, 0xf4, 0x5e, 0x56, 0x3f, 0x17, 0x7f, 0xa6, 0x43, 0x7e, 0x73, 0xa0, - 0xc6, 0x51, 0x59, 0xf6, 0x6c, 0x07, 0xbd, 0x29, 0xd5, 0x1e, 0x82, 0x3d, 0x07, 0xff, 0x3d, 0x45, - 0xc1, 0x9e, 0xef, 0xa0, 0xd5, 0xb1, 0x67, 0xaa, 0xec, 0xf9, 0x22, 0xcb, 0xc5, 0xe1, 0xf4, 0x56, - 0xdb, 0x1f, 0xc7, 0x8e, 0x20, 0xec, 0x85, 0x38, 0xf6, 0x0d, 0xc2, 0x5e, 0x44, 0x08, 0xfc, 0x57, - 0x05, 0x55, 0xc4, 0x4b, 0x1d, 0xf8, 0x24, 0x40, 0x4d, 0xb9, 0xc8, 0x74, 0xd0, 0xb6, 0x1c, 0x6d, - 0x55, 0x4b, 0x2f, 0x2b, 0x0d, 0xd7, 0xce, 0xb8, 0x59, 0x2e, 0xd8, 0x2b, 0x20, 0xac, 0xd6, 0xe9, - 0x57, 0x3b, 0xf0, 0x8a, 0x45, 0x83, 0xb6, 0x08, 0xfd, 0x5e, 0xde, 0x2a, 0x72, 0xf6, 0x5a, 0x07, - 0x7e, 0xb4, 0xed, 0x7b, 0xa5, 0xf5, 0x56, 0xc0, 0x3b, 0x8e, 0x60, 0xaf, 0xc3, 0xc9, 0x91, 0x7c, - 0x2a, 0xe3, 0x62, 0x0f, 0xf1, 0x86, 0x6e, 0x67, 0x85, 0x4f, 0xed, 0x37, 0x3b, 0xe4, 0xb7, 0xb1, - 0x80, 0xfb, 0x02, 0x69, 0xf9, 0x7b, 0x87, 0xfc, 0x36, 0x46, 0x00, 0xfb, 0x47, 0x87, 0xbc, 0x38, - 0x57, 0x77, 0xb6, 0xec, 0xad, 0x0e, 0xf9, 0x39, 0x2e, 0x10, 0x3e, 0x7b, 0x1b, 0xcf, 0xfd, 0x39, - 0xdf, 0x29, 0xb1, 0x7f, 0x76, 0xc8, 0xdf, 0xdf, 0x8d, 0x4b, 0x1f, 0xef, 0x74, 0xc8, 0xdf, 0x93, - 0x8f, 0x0b, 0xf6, 0x2e, 0xdc, 0xa9, 0x81, 0x7a, 0xaf, 0x03, 0x17, 0x21, 0x5e, 0xde, 0x12, 0xd8, - 0x11, 0x04, 0xd0, 0x7e, 0x3f, 0x82, 0x1e, 0x1e, 0xa2, 0x1f, 0x20, 0x1f, 0x11, 0x5d, 0xf6, 0x61, - 0x04, 0x81, 0x1e, 0xfb, 0x48, 0x52, 0xf0, 0xb6, 0x70, 0x9f, 0x7d, 0x2c, 0x29, 0x94, 0x2d, 0x1b, - 0xe6, 0x9f, 0x48, 0x0a, 0x65, 0xcb, 0x66, 0x9f, 0x62, 0x30, 0x69, 0xc7, 0x47, 0x59, 0xfc, 0x0c, - 0x84, 0x36, 0xe4, 0xf1, 0x0a, 0xfd, 0x1c, 0xfd, 0xdb, 0x90, 0x0f, 0x7f, 0x03, 0x88, 0x91, 0xde, - 0xe0, 0xdb, 0xec, 0xd8, 0x4e, 0x72, 0x8d, 0x2b, 0x51, 0x76, 0x1c, 0x9e, 0x87, 0xd1, 0xd3, 0xe3, - 0x3b, 0xf1, 0xa5, 0x94, 0x97, 0xb9, 0x25, 0xd8, 0x09, 0x9d, 0xf8, 0x05, 0x82, 0xbc, 0x5a, 0x66, - 0x27, 0x76, 0xca, 0x4f, 0x26, 0x93, 0xdc, 0x0f, 0x70, 0x25, 0xce, 0x4e, 0x52, 0x72, 0x20, 0xec, - 0xe4, 0x4e, 0xdc, 0xe6, 0x3b, 0x85, 0x09, 0x99, 0xa5, 0x53, 0xa4, 0x5b, 0x6a, 0xb3, 0x53, 0x3b, - 0xf1, 0x51, 0x46, 0xb3, 0x3f, 0xad, 0x13, 0xbf, 0xd0, 0x20, 0xf6, 0xa7, 0x43, 0x2b, 0x5b, 0xa6, - 0x08, 0x67, 0x74, 0xca, 0x7f, 0x4c, 0xf0, 0xf3, 0xa5, 0x32, 0x3b, 0xb3, 0x53, 0x2d, 0x29, 0x01, - 0xb8, 0x57, 0xf3, 0x79, 0x56, 0x5c, 0x50, 0x4d, 0xe9, 0xd9, 0x9d, 0x6a, 0xed, 0x8b, 0x58, 0xb0, - 0x73, 0xe2, 0xa0, 0x4c, 0xec, 0xb9, 0x71, 0x30, 0xe3, 0xda, 0x7c, 0x8a, 0x9d, 0x07, 0x8e, 0x39, - 0x4f, 0x55, 0xd6, 0xf9, 0xb2, 0xe9, 0x3b, 0x25, 0xec, 0xf9, 0x7e, 0x88, 0xde, 0x51, 0x53, 0xfa, - 0xfd, 0x51, 0xd8, 0x96, 0x2e, 0x2f, 0x40, 0x3f, 0x46, 0xdc, 0x23, 0xf9, 0x14, 0xbb, 0x10, 0xb2, - 0x91, 0x72, 0x99, 0xcb, 0xb2, 0xba, 0x48, 0xca, 0xa8, 0xcd, 0xb6, 0x76, 0x52, 0x41, 0x56, 0xe7, - 0x2a, 0xbb, 0xb8, 0x53, 0xfe, 0xca, 0x62, 0x8b, 0x52, 0xbe, 0xa4, 0x93, 0x2a, 0x3f, 0xfc, 0xa5, - 0x68, 0x78, 0xc4, 0xec, 0x34, 0x0f, 0x35, 0xea, 0x35, 0xdc, 0x55, 0x2a, 0xc7, 0x7e, 0x2b, 0x7e, - 0x59, 0x27, 0x4d, 0x48, 0xf9, 0x0b, 0x50, 0x6d, 0x71, 0x79, 0x27, 0x2d, 0xe3, 0xc0, 0x6a, 0xd5, - 0xaf, 0xd0, 0x5d, 0x75, 0x5c, 0xcb, 0x9f, 0x66, 0x57, 0x76, 0x86, 0xb3, 0x4a, 0x02, 0xdb, 0xbe, - 0x28, 0x18, 0x76, 0xd1, 0xdb, 0x67, 0x75, 0x0c, 0xd1, 0x8e, 0xce, 0xe8, 0x6f, 0x57, 0x01, 0xed, - 0xec, 0x0c, 0x7f, 0x77, 0x8a, 0xf6, 0xae, 0xce, 0xb5, 0x3f, 0x88, 0xfe, 0xb3, 0x21, 0xfe, 0xeb, - 0xcc, 0x5c, 0x65, 0xac, 0xac, 0x81, 0x32, 0xee, 0xa4, 0x55, 0x74, 0x6c, 0x76, 0x80, 0x79, 0x88, - 0xb1, 0xa2, 0x46, 0x96, 0x9d, 0xf0, 0x2a, 0x45, 0x9b, 0x25, 0xcc, 0x7a, 0xe3, 0xe0, 0x1a, 0xd1, - 0x40, 0x25, 0x10, 0x6c, 0xce, 0x2c, 0xfe, 0x48, 0x30, 0xe8, 0x09, 0x36, 0x77, 0xed, 0xf7, 0x0d, - 0x73, 0xe6, 0x3f, 0x4b, 0xc6, 0xa3, 0x10, 0x5a, 0x25, 0xb0, 0xb2, 0xd6, 0xe0, 0x28, 0xcf, 0xa7, - 0xe8, 0x49, 0x63, 0x79, 0x1c, 0x1f, 0x9a, 0xf0, 0xad, 0x80, 0xb3, 0x39, 0xb3, 0x48, 0x7c, 0x3e, - 0xee, 0x4c, 0xb1, 0xb9, 0x6b, 0xb9, 0xb1, 0xac, 0xe6, 0x9f, 0xba, 0xf0, 0x2f, 0x22, 0x5e, 0xa9, - 0x5c, 0xe4, 0x82, 0xe3, 0x1e, 0xe5, 0x00, 0x73, 0x29, 0xd6, 0x45, 0xab, 0x88, 0x66, 0x82, 0x14, - 0x86, 0x2c, 0x5f, 0x38, 0x56, 0xf1, 0x30, 0x20, 0x73, 0x22, 0x48, 0x3b, 0x90, 0xb9, 0x64, 0xd2, - 0xcd, 0xed, 0x4a, 0x19, 0xcd, 0x79, 0xeb, 0xbf, 0xba, 0x67, 0xff, 0xea, 0xc4, 0x83, 0xfb, 0x57, - 0x27, 0x9e, 0xdb, 0xbf, 0x3a, 0xb1, 0xf5, 0x85, 0xd5, 0x07, 0x18, 0x2b, 0xf2, 0x5e, 0xa9, 0xad, - 0xec, 0xb8, 0x85, 0xbc, 0x55, 0x6e, 0x13, 0x8e, 0x3d, 0x86, 0x7f, 0xdd, 0x1a, 0x4a, 0xfc, 0x4f, - 0x00, 0x00, 0x00, 0xff, 0xff, 0x42, 0x84, 0xe3, 0x9a, 0x93, 0x3b, 0x00, 0x00, + // 6299 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x84, 0x7b, 0x79, 0x74, 0x1c, 0xc5, + 0xb5, 0x3e, 0x63, 0xd9, 0xd8, 0x6e, 0x6f, 0x45, 0x63, 0xa3, 0xc1, 0x01, 0x4b, 0xb2, 0x48, 0xa4, + 0x38, 0xbf, 0x9f, 0xc6, 0xc8, 0x44, 0xe2, 0x9c, 0x97, 0xf7, 0xf2, 0x64, 0x6d, 0x4c, 0x9e, 0x24, + 0xcb, 0x9a, 0x91, 0xc8, 0xfb, 0xcb, 0xa7, 0x35, 0x5d, 0x1a, 0x75, 0x3c, 0xd3, 0x3d, 0x74, 0xd7, + 0xd8, 0x12, 0x6f, 0x39, 0xec, 0xfb, 0x9e, 0x00, 0x66, 0x33, 0x5e, 0x59, 0xb3, 0xef, 0xec, 0x6b, + 0x82, 0xcd, 0x92, 0x90, 0xb0, 0xef, 0x60, 0x20, 0xec, 0x09, 0x84, 0x7d, 0x7f, 0xe7, 0x7e, 0x55, + 0xd5, 0xd3, 0x3d, 0x92, 0xcd, 0x5f, 0xea, 0xfa, 0xee, 0xf6, 0xd5, 0xad, 0x5b, 0xd5, 0x55, 0xd5, + 0x23, 0x83, 0xf1, 0x89, 0x92, 0xcf, 0x83, 0xc0, 0xf1, 0xdc, 0x96, 0x92, 0xef, 0x09, 0xcf, 0x9c, + 0x29, 0x9c, 0xd2, 0xe8, 0xd2, 0x85, 0x45, 0x2e, 0x2c, 0xdb, 0x12, 0x96, 0x44, 0x97, 0x2e, 0xce, + 0x7b, 0x79, 0x0f, 0x8f, 0x29, 0x7a, 0x92, 0xe8, 0xf2, 0xb7, 0x12, 0xc6, 0xdc, 0x1e, 0x87, 0x17, + 0xec, 0xec, 0x64, 0x89, 0x9b, 0x8b, 0x8d, 0x19, 0xa2, 0x94, 0x4c, 0xd4, 0x27, 0x9a, 0x67, 0xad, + 0x9e, 0xb9, 0xeb, 0xd9, 0xba, 0xfd, 0x86, 0x66, 0x88, 0x92, 0x99, 0x34, 0x66, 0x8e, 0x15, 0xac, + 0x7c, 0x72, 0x46, 0x7d, 0xa2, 0x79, 0x81, 0xc2, 0x81, 0x48, 0x09, 0x77, 0x93, 0x35, 0x11, 0x0b, + 0x20, 0xe6, 0x32, 0x63, 0xb6, 0xcd, 0x73, 0x4e, 0xd1, 0x2a, 0x24, 0x67, 0x46, 0x84, 0x1a, 0x24, + 0x79, 0xce, 0x2b, 0x14, 0x2c, 0xc1, 0x93, 0xb3, 0xa2, 0x72, 0x05, 0x42, 0x3e, 0x6e, 0xf9, 0x01, + 0x17, 0xc9, 0xfd, 0xeb, 0x13, 0xcd, 0x73, 0x43, 0xb9, 0x04, 0xcd, 0xa5, 0xc6, 0x2c, 0x5e, 0xe0, + 0xc5, 0x20, 0x39, 0xbb, 0xbe, 0x26, 0x94, 0x4a, 0x88, 0x64, 0x96, 0xef, 0x5b, 0x93, 0xc9, 0x39, + 0xf5, 0x89, 0xe6, 0x39, 0x5a, 0x06, 0x68, 0xf9, 0x2b, 0x35, 0xc6, 0xa1, 0x7d, 0x5e, 0xce, 0x2a, + 0xf4, 0x5b, 0x22, 0x37, 0xde, 0x91, 0xb7, 0x1c, 0x37, 0x10, 0xab, 0x3d, 0xaf, 0xc0, 0x2d, 0x77, + 0x6d, 0x99, 0xfb, 0x93, 0xe6, 0x91, 0xc6, 0x2c, 0xd7, 0xb3, 0x79, 0x90, 0x4c, 0xd4, 0xd7, 0x34, + 0xcf, 0x6b, 0x5d, 0xde, 0x42, 0xd9, 0x6c, 0xd9, 0x9b, 0xcd, 0x80, 0x67, 0xf3, 0x21, 0x69, 0x60, + 0xfe, 0x8b, 0xb1, 0x7f, 0x89, 0xd8, 0xf9, 0xc8, 0xd4, 0xc2, 0xd6, 0x43, 0xf7, 0x62, 0x3a, 0x08, + 0x25, 0xc5, 0x4b, 0x99, 0x98, 0x2d, 0x06, 0x73, 0xf3, 0xbe, 0x55, 0x5c, 0x27, 0xbc, 0xf5, 0xdc, + 0x5d, 0x17, 0x38, 0xc7, 0x72, 0xa4, 0x55, 0x27, 0x7c, 0x21, 0xa4, 0x59, 0x12, 0x66, 0x9c, 0x63, + 0xb9, 0xf9, 0x1d, 0x23, 0xe9, 0xb8, 0xae, 0x67, 0x8f, 0xae, 0x1b, 0x13, 0xeb, 0x8a, 0x8e, 0x1b, + 0xb5, 0x9b, 0x19, 0xb1, 0x5b, 0x2c, 0xb5, 0x7a, 0x44, 0xbf, 0xe3, 0xee, 0xcd, 0xda, 0x9a, 0x88, + 0x5a, 0xcf, 0x9a, 0xd6, 0xda, 0x9a, 0xa8, 0x58, 0x0f, 0x18, 0x0b, 0x02, 0xe1, 0x95, 0x36, 0x7a, + 0xbe, 0xbd, 0xae, 0xe8, 0xd9, 0x1c, 0x43, 0xb4, 0xb0, 0xb5, 0x71, 0x2f, 0xfd, 0xcd, 0x28, 0xdd, + 0x7e, 0xcf, 0xe6, 0xca, 0xef, 0xfc, 0x20, 0x82, 0x99, 0xab, 0x0c, 0x33, 0xf4, 0x27, 0x0b, 0xc0, + 0xf1, 0xdc, 0xe4, 0xec, 0xc8, 0xb8, 0x1f, 0xa0, 0xe5, 0x9d, 0x5a, 0x4c, 0x15, 0xb2, 0x81, 0xfb, + 0x54, 0xf6, 0x18, 0x67, 0xcd, 0x58, 0x83, 0xcb, 0xef, 0x4e, 0x18, 0x87, 0xec, 0x6b, 0xd4, 0xcc, + 0xef, 0x1a, 0xb3, 0xbc, 0x5c, 0xae, 0xec, 0xa3, 0xde, 0xf7, 0xce, 0x5e, 0x99, 0xac, 0x21, 0x55, + 0x5d, 0x4b, 0xb0, 0x33, 0xd3, 0xc6, 0x5c, 0xc1, 0xfd, 0xe2, 0x3a, 0x31, 0x59, 0xe2, 0x6a, 0xc8, + 0xbf, 0xb1, 0x6f, 0x27, 0x59, 0xee, 0x17, 0x69, 0xa2, 0x29, 0x3f, 0x73, 0x84, 0x6a, 0xd3, 0x44, + 0x12, 0x7c, 0x42, 0x60, 0xc4, 0x75, 0x9f, 0x81, 0x2c, 0x7f, 0x7b, 0x86, 0x31, 0xb3, 0x7b, 0xa2, + 0xe4, 0x9b, 0x87, 0x85, 0x73, 0x73, 0x61, 0xeb, 0x42, 0x19, 0x86, 0xf0, 0x88, 0x3b, 0x9a, 0xab, + 0xcc, 0xa8, 0xd9, 0x60, 0x15, 0xc0, 0x66, 0xfe, 0x10, 0x3d, 0x9a, 0xdf, 0x30, 0xe6, 0xe4, 0xc6, + 0x9d, 0x82, 0xed, 0x63, 0x9e, 0x52, 0x49, 0x1b, 0x15, 0xeb, 0xa1, 0x50, 0x66, 0x7e, 0xcb, 0xa8, + 0x09, 0x9c, 0x3c, 0x6a, 0x67, 0x61, 0xeb, 0x81, 0x52, 0x25, 0x93, 0xb3, 0x0a, 0x96, 0xdf, 0x53, + 0x76, 0x73, 0x19, 0x27, 0xaf, 0xa2, 0x90, 0x96, 0xd9, 0x62, 0x18, 0x63, 0xb4, 0x6a, 0xc8, 0xbe, + 0x53, 0xc5, 0xcc, 0x6b, 0x5d, 0x24, 0x6d, 0xc2, 0xd5, 0x64, 0x68, 0xee, 0x58, 0xb8, 0xb0, 0xd4, + 0x1b, 0xf3, 0xfd, 0x92, 0xbb, 0xce, 0xf2, 0xf3, 0xc1, 0x3a, 0x5a, 0x30, 0xa8, 0x60, 0x16, 0x0c, + 0x19, 0x7e, 0xc9, 0xed, 0xf0, 0xf3, 0x41, 0x1f, 0x77, 0xcd, 0x26, 0x63, 0xfe, 0xb8, 0x15, 0xac, + 0xb3, 0x9d, 0x40, 0x38, 0x6e, 0x4e, 0x60, 0xf4, 0xf5, 0xdc, 0x9d, 0x37, 0x6e, 0x05, 0x5d, 0x4a, + 0x60, 0x36, 0x19, 0x73, 0x3c, 0xdf, 0xe6, 0xfe, 0xba, 0x51, 0x9a, 0xe0, 0xd4, 0x9f, 0xf9, 0x32, + 0xf0, 0xea, 0xc9, 0xb4, 0xe0, 0xc5, 0xa1, 0xd9, 0x90, 0xae, 0x9e, 0x34, 0xdb, 0x8d, 0x79, 0x56, + 0x3e, 0x4f, 0xe4, 0xa9, 0xc8, 0x92, 0x73, 0xd1, 0xb1, 0x25, 0x52, 0xb7, 0x43, 0x0a, 0xa8, 0x90, + 0x48, 0x38, 0x14, 0xd5, 0x5c, 0xfe, 0x2d, 0x63, 0xf6, 0x50, 0xc9, 0x45, 0xd2, 0xeb, 0x8d, 0x59, + 0xb4, 0xbc, 0xea, 0xc5, 0x20, 0x9a, 0x39, 0x29, 0x58, 0x5e, 0x30, 0xf6, 0x97, 0x81, 0xcd, 0x65, + 0xc6, 0x4c, 0x82, 0x30, 0x44, 0x71, 0x55, 0xe0, 0x34, 0xc6, 0x36, 0x0f, 0x72, 0x18, 0x1b, 0xdd, + 0x33, 0x20, 0x66, 0xb3, 0x31, 0x87, 0xb2, 0x03, 0xeb, 0x1a, 0x58, 0x2f, 0x90, 0xd6, 0x8a, 0xc6, + 0xd0, 0x6c, 0x5f, 0x3e, 0xac, 0x78, 0x69, 0x96, 0x31, 0x47, 0x8f, 0xba, 0x39, 0xc7, 0x98, 0x39, + 0x50, 0x2e, 0x14, 0xd8, 0x7e, 0xe6, 0x5c, 0x63, 0x56, 0xda, 0x15, 0x6d, 0x47, 0xb0, 0x84, 0x69, + 0x18, 0xfb, 0x0f, 0x3b, 0x78, 0x9e, 0x61, 0xce, 0x33, 0x66, 0xf7, 0x14, 0x3c, 0x4b, 0xac, 0x6a, + 0x65, 0x35, 0x61, 0xa3, 0xed, 0x08, 0x36, 0x93, 0xb4, 0x32, 0xc2, 0x77, 0xdc, 0x3c, 0x9b, 0x45, + 0xc6, 0xab, 0x27, 0x05, 0x0f, 0xd8, 0xfe, 0xe6, 0x7c, 0x63, 0x4e, 0xff, 0x64, 0x70, 0x4c, 0x61, + 0xb5, 0x23, 0x18, 0x37, 0x99, 0x31, 0x1f, 0xad, 0x2e, 0xb9, 0x66, 0xb3, 0x31, 0xf3, 0x00, 0x63, + 0x81, 0x44, 0xca, 0x3e, 0x26, 0x21, 0xcb, 0x9b, 0x0b, 0x8c, 0xb9, 0x80, 0xba, 0xdd, 0x72, 0x91, + 0x8d, 0x87, 0x1e, 0x8e, 0xe2, 0x13, 0xcc, 0x09, 0x5b, 0x19, 0x2e, 0xd8, 0x0f, 0x42, 0xd5, 0xac, + 0x53, 0xe4, 0x6c, 0x7d, 0xd8, 0xfc, 0x5e, 0xe0, 0xb9, 0xac, 0x60, 0x2e, 0x31, 0x0e, 0xc8, 0x3a, + 0x5d, 0xab, 0x47, 0x78, 0x4e, 0x78, 0xbe, 0xa6, 0x3d, 0x69, 0x2e, 0x34, 0xe6, 0x8e, 0x58, 0x85, + 0x32, 0xef, 0x73, 0x02, 0xc1, 0x2e, 0x4e, 0x50, 0xbb, 0xd3, 0x2b, 0x94, 0x8b, 0xee, 0x10, 0x1f, + 0x63, 0xbb, 0xa9, 0xbf, 0xb3, 0x3a, 0xbd, 0xb2, 0x2b, 0xd8, 0x0d, 0xb5, 0xe6, 0x1c, 0xa3, 0x26, + 0x53, 0x2e, 0xb2, 0x1b, 0xf1, 0xd4, 0xb1, 0x21, 0xcf, 0x6e, 0xc2, 0x53, 0xbf, 0xe3, 0xb2, 0x9b, + 0xe5, 0x93, 0x35, 0xc1, 0x6e, 0xa9, 0x25, 0x9b, 0x1e, 0xc7, 0x0f, 0x04, 0xbb, 0xb5, 0xd6, 0x64, + 0xc6, 0xbc, 0x5e, 0xdf, 0x2b, 0x97, 0x3a, 0x3d, 0x37, 0x67, 0x09, 0x76, 0x5b, 0xad, 0xb9, 0xc8, + 0x30, 0x3a, 0xf2, 0xf9, 0x75, 0xab, 0x1d, 0xd1, 0xe1, 0xda, 0xec, 0xf6, 0x5a, 0x0a, 0xa9, 0x80, + 0x35, 0x3e, 0xbb, 0x23, 0xaa, 0xf0, 0x7d, 0xcf, 0x67, 0x77, 0xca, 0xb8, 0xc2, 0x66, 0x77, 0xd5, + 0x9a, 0xf3, 0x28, 0xaf, 0xb6, 0xcd, 0x37, 0xb0, 0xbb, 0x61, 0x27, 0x1b, 0x83, 0x5e, 0x89, 0xfd, + 0x01, 0x76, 0xb2, 0x9d, 0xb1, 0x8a, 0x25, 0xf6, 0x47, 0x68, 0x8f, 0x58, 0x3e, 0x49, 0xef, 0xa9, + 0x35, 0xe7, 0x1b, 0xb3, 0x47, 0x2c, 0x1f, 0xa2, 0x5d, 0xb5, 0xe6, 0x02, 0x63, 0xce, 0x88, 0xe5, + 0x3b, 0x96, 0x9b, 0xe3, 0x6c, 0x77, 0xad, 0x79, 0x80, 0x31, 0x9f, 0xd2, 0xd4, 0x41, 0xef, 0xb0, + 0x8e, 0x7c, 0x9e, 0xdd, 0x5b, 0x6b, 0x9a, 0xc6, 0x02, 0x82, 0xd6, 0x8c, 0xfe, 0x80, 0xe7, 0x04, + 0x61, 0xf7, 0xd5, 0x9a, 0x49, 0xe3, 0xc0, 0x8e, 0x52, 0xc9, 0xf7, 0x26, 0x90, 0x12, 0x3d, 0x65, + 0xd8, 0xfd, 0xe0, 0x32, 0xe4, 0x6d, 0x1c, 0x28, 0x17, 0x47, 0xb9, 0xcf, 0xb6, 0xd6, 0x99, 0x73, + 0x8d, 0x99, 0x43, 0x96, 0xbb, 0x9e, 0x6d, 0xab, 0x23, 0x51, 0x17, 0x77, 0x03, 0x8e, 0xf6, 0xf6, + 0x3a, 0x0a, 0xdd, 0x59, 0x2e, 0x72, 0xb2, 0x66, 0x3b, 0xea, 0x28, 0x41, 0x83, 0xdc, 0xcf, 0x71, + 0x57, 0x40, 0x61, 0x67, 0x1d, 0xa5, 0x6f, 0x40, 0x38, 0x05, 0xce, 0xae, 0x82, 0x9f, 0x3e, 0x6e, + 0xd9, 0xec, 0xea, 0x3a, 0xca, 0x42, 0x9f, 0x95, 0x67, 0xd7, 0xd4, 0x51, 0x47, 0x91, 0x5f, 0x0c, + 0x1c, 0xbb, 0x16, 0x21, 0xfa, 0x2c, 0xdd, 0xbe, 0x0e, 0x21, 0x06, 0xc4, 0xb8, 0x6c, 0x5e, 0x0f, + 0xfd, 0xca, 0x4a, 0xc3, 0xce, 0x1b, 0x58, 0xf1, 0xab, 0x51, 0x63, 0x41, 0x6c, 0xed, 0x31, 0x17, + 0x19, 0xf3, 0x86, 0xdd, 0xa0, 0xc4, 0x73, 0xce, 0x98, 0xc3, 0x6d, 0xb6, 0x1f, 0x15, 0x67, 0xa7, + 0x15, 0x88, 0xb4, 0x2b, 0x3a, 0x82, 0xb4, 0x2b, 0x58, 0x82, 0x8a, 0x33, 0x44, 0x86, 0xb8, 0x55, + 0x60, 0x33, 0xcc, 0x03, 0x8d, 0x45, 0x21, 0xa4, 0xea, 0xbd, 0xc6, 0x5c, 0x6c, 0xb0, 0x10, 0xd4, + 0xa5, 0x3d, 0x33, 0x66, 0x8d, 0x02, 0x9d, 0x45, 0x15, 0x59, 0x51, 0xd4, 0x15, 0xbf, 0x7f, 0x4c, + 0x13, 0xb5, 0x3b, 0x5b, 0x43, 0x14, 0x55, 0xb2, 0x31, 0x4c, 0xd3, 0x58, 0x58, 0x81, 0x40, 0x67, + 0x9e, 0x8e, 0x2c, 0x31, 0xc5, 0x67, 0xbe, 0x0e, 0x23, 0x51, 0x4d, 0x68, 0x41, 0xdc, 0x01, 0x18, + 0x2d, 0x34, 0x0f, 0x32, 0xcc, 0x88, 0xaa, 0xa6, 0xb4, 0x28, 0xae, 0x0b, 0x4e, 0x4c, 0x07, 0x53, + 0x0e, 0x25, 0xad, 0xc5, 0x3a, 0x58, 0x88, 0x82, 0xd9, 0x12, 0xb3, 0xd6, 0x38, 0x30, 0x06, 0x2b, + 0x72, 0x07, 0x99, 0x49, 0x63, 0x71, 0x4c, 0xa0, 0xf9, 0xd5, 0x4e, 0xf1, 0x04, 0x8a, 0x49, 0xf3, + 0x60, 0x63, 0x49, 0xdc, 0x40, 0xb3, 0x3c, 0x78, 0x8a, 0x05, 0x88, 0x2e, 0xd5, 0x83, 0x24, 0x43, + 0x4a, 0x9e, 0xcb, 0x34, 0x7b, 0x0d, 0x82, 0x66, 0x9d, 0xee, 0xbf, 0x46, 0x15, 0xcb, 0x7a, 0x4d, + 0x5f, 0xe3, 0x9a, 0x64, 0x43, 0xb5, 0x1b, 0x70, 0x5c, 0xae, 0x3b, 0x15, 0xaa, 0x6b, 0x8a, 0x8d, + 0xd5, 0xfa, 0x60, 0x78, 0x98, 0x1e, 0x5e, 0xb2, 0x96, 0xfc, 0x9a, 0x75, 0xc6, 0x25, 0x04, 0x76, + 0xdf, 0xd4, 0xc6, 0x12, 0x53, 0xdc, 0x56, 0xe8, 0x5e, 0x4b, 0x54, 0x33, 0xfb, 0x56, 0xdc, 0x01, + 0x78, 0xfd, 0x3f, 0xdd, 0x3d, 0xa5, 0xaa, 0x59, 0xfd, 0xff, 0xb8, 0x2e, 0x38, 0xb5, 0x84, 0xc9, + 0x54, 0x5a, 0x92, 0x57, 0xab, 0x76, 0x51, 0x81, 0xc1, 0x6d, 0x55, 0x38, 0x8e, 0x21, 0xae, 0xf8, + 0x1d, 0x11, 0x0e, 0x58, 0x28, 0xd1, 0x1c, 0xbf, 0x3d, 0xd5, 0x19, 0x78, 0xb6, 0x99, 0x4b, 0x8d, + 0x83, 0xaa, 0x4c, 0x34, 0xd7, 0xf6, 0xa9, 0x36, 0xe0, 0x7b, 0xa4, 0xce, 0x21, 0x56, 0x31, 0x70, + 0xfd, 0x8e, 0xee, 0x96, 0x84, 0xc0, 0xf3, 0x5f, 0x75, 0x0e, 0x25, 0xa6, 0x38, 0xfe, 0x9b, 0xee, + 0xac, 0x44, 0x35, 0xbf, 0xef, 0xc6, 0x1d, 0x80, 0xdb, 0xbf, 0xeb, 0xf8, 0x4a, 0x55, 0xf3, 0xea, + 0x88, 0xeb, 0x82, 0xd3, 0x6a, 0x5a, 0xda, 0x3a, 0x3d, 0xab, 0xc0, 0x83, 0x1c, 0x27, 0x46, 0xaf, + 0xd5, 0xd3, 0x3a, 0xab, 0x11, 0x10, 0x7a, 0xbd, 0xde, 0x5c, 0x6c, 0x2c, 0xd2, 0x90, 0x8e, 0xfc, + 0x46, 0xbd, 0x79, 0xa0, 0xb1, 0x50, 0xa3, 0x8a, 0xe5, 0x9b, 0x31, 0x6b, 0xb0, 0x79, 0xab, 0xde, + 0x5c, 0x62, 0xb0, 0xd0, 0x5a, 0x93, 0xf9, 0x7b, 0x4c, 0x13, 0x5c, 0xfe, 0x51, 0x4f, 0xaf, 0xe1, + 0xbe, 0x2c, 0xd1, 0xb0, 0xe9, 0xed, 0xdc, 0x97, 0x45, 0x7c, 0x4e, 0x6f, 0xc9, 0xbe, 0x6c, 0xe5, + 0x0d, 0x3c, 0xdf, 0x98, 0xd3, 0x97, 0x55, 0x11, 0xf3, 0x52, 0x11, 0xa1, 0xc6, 0xcd, 0x85, 0x86, + 0xd1, 0x97, 0x0d, 0x63, 0x38, 0x52, 0x06, 0xe7, 0x3f, 0x80, 0xef, 0x6e, 0xf2, 0xed, 0x02, 0xee, + 0x86, 0x6f, 0x0f, 0xbe, 0xbb, 0xb5, 0xef, 0x12, 0x7c, 0x77, 0x2b, 0xdf, 0xc7, 0x48, 0x45, 0xf8, + 0xf6, 0xe1, 0xbb, 0x3b, 0xf4, 0x1d, 0x48, 0x19, 0x7c, 0x0b, 0xf2, 0xdd, 0x0b, 0xde, 0x13, 0x04, + 0xf7, 0x4a, 0xde, 0x93, 0xe4, 0xbb, 0x37, 0xe4, 0x7d, 0x2c, 0xf9, 0xee, 0xd5, 0xbc, 0xff, 0x4b, + 0x2a, 0xc2, 0xf7, 0x7f, 0x93, 0xef, 0xde, 0x0a, 0xef, 0xff, 0x91, 0x32, 0xf8, 0xfe, 0x5f, 0xf9, + 0x72, 0xe6, 0x96, 0xe0, 0x58, 0x6e, 0xd9, 0x87, 0x48, 0x9c, 0x46, 0x10, 0xe8, 0x23, 0x0c, 0x90, + 0x86, 0x74, 0xbc, 0x8f, 0x31, 0x40, 0x1a, 0x55, 0x61, 0x3f, 0x89, 0x59, 0x23, 0xfa, 0xa7, 0xf5, + 0xf4, 0x2a, 0xea, 0xe3, 0x72, 0x39, 0x67, 0x9f, 0xd5, 0xe3, 0x4d, 0xc5, 0xd5, 0x52, 0xca, 0x3e, + 0x87, 0x05, 0xda, 0xda, 0xf3, 0x17, 0xf5, 0x44, 0x0a, 0x90, 0x72, 0xfb, 0x65, 0xc5, 0x08, 0x3e, + 0x8f, 0x6b, 0x20, 0x8d, 0xb4, 0x2b, 0xb8, 0xbf, 0xc1, 0x2a, 0x90, 0xdb, 0xe3, 0x1b, 0xc8, 0x8d, + 0x46, 0xe0, 0xf9, 0x84, 0x06, 0x7a, 0x8b, 0xf6, 0x62, 0x4c, 0x4e, 0x48, 0xd0, 0x46, 0xa0, 0x57, + 0x0e, 0xca, 0x89, 0xd8, 0xe1, 0xf4, 0x86, 0xa3, 0x72, 0x52, 0x82, 0x18, 0xf6, 0xea, 0x61, 0x39, + 0x59, 0xe9, 0x22, 0xd2, 0x29, 0x09, 0x7a, 0x73, 0xf6, 0x56, 0x06, 0xe6, 0x54, 0x25, 0x45, 0xf6, + 0x4e, 0xc3, 0xde, 0xa8, 0x7b, 0x2d, 0x85, 0x38, 0x0b, 0x82, 0xee, 0xb5, 0x08, 0x71, 0x36, 0x42, + 0x74, 0xaf, 0xd5, 0x21, 0xce, 0x41, 0x88, 0xee, 0xb5, 0x2a, 0xc4, 0xb9, 0x4a, 0x17, 0x21, 0xce, + 0x43, 0x88, 0xee, 0xb5, 0x61, 0x88, 0xf3, 0x95, 0x14, 0x21, 0x2e, 0x40, 0x88, 0x01, 0xf4, 0xe2, + 0x22, 0x08, 0x06, 0x64, 0x2f, 0xe4, 0x3e, 0x6d, 0x20, 0xec, 0xc5, 0x26, 0x84, 0x18, 0xd0, 0xbd, + 0xb8, 0x44, 0xe9, 0x22, 0xc4, 0xa5, 0x08, 0x31, 0x50, 0xe9, 0xc5, 0x65, 0x4a, 0x8a, 0x10, 0x97, + 0x4b, 0x4f, 0xe5, 0x42, 0x41, 0xf6, 0x64, 0x8b, 0xd4, 0x46, 0x1b, 0xa1, 0xb6, 0x26, 0x68, 0x27, + 0x24, 0x01, 0x1d, 0x6e, 0x1b, 0x6d, 0x06, 0xe6, 0x4b, 0x4c, 0x85, 0xdc, 0x1e, 0xb1, 0x43, 0xd8, + 0x1d, 0x09, 0x2a, 0x11, 0x65, 0xa7, 0x43, 0xef, 0x8c, 0x68, 0x21, 0xfc, 0x55, 0x20, 0x3e, 0x58, + 0x28, 0xcb, 0xf5, 0x69, 0x57, 0x02, 0xdb, 0xa1, 0x42, 0x39, 0x5c, 0x84, 0x76, 0x27, 0x68, 0xe3, + 0x46, 0x08, 0xb1, 0xbb, 0x0f, 0x6c, 0xfb, 0x1d, 0x57, 0xe9, 0xdf, 0x0f, 0x22, 0x68, 0x6b, 0x83, + 0x07, 0xe0, 0x11, 0x10, 0x59, 0xfc, 0x59, 0x6a, 0x94, 0x0b, 0xc2, 0x29, 0x15, 0x26, 0x61, 0xf4, + 0x60, 0x82, 0x4a, 0x5a, 0x43, 0xda, 0xee, 0x2f, 0x08, 0xad, 0x51, 0x32, 0xfd, 0x2b, 0xc8, 0x76, + 0x39, 0x1b, 0x1c, 0x5b, 0x2e, 0x56, 0x0f, 0x21, 0x15, 0x12, 0xd0, 0x66, 0x0f, 0x27, 0x54, 0xed, + 0x49, 0x98, 0xec, 0x1e, 0x49, 0xd0, 0xaa, 0x14, 0x42, 0x5a, 0xf3, 0x51, 0xf4, 0xa4, 0xdf, 0xb3, + 0xe1, 0xeb, 0x31, 0x38, 0xef, 0xf7, 0x6c, 0x2d, 0x7e, 0x1c, 0xa3, 0xd2, 0xef, 0xd9, 0xe4, 0xe2, + 0x89, 0x04, 0x6d, 0x35, 0x23, 0x64, 0x86, 0xdd, 0xc0, 0xc9, 0xbb, 0xdc, 0x66, 0x4f, 0x26, 0xcc, + 0x43, 0x8c, 0x5a, 0x95, 0x0f, 0x8d, 0x86, 0xd2, 0xa7, 0x12, 0xe6, 0x52, 0x63, 0x49, 0x95, 0x34, + 0x23, 0x65, 0x4f, 0x47, 0x65, 0x99, 0xb8, 0xdd, 0x33, 0x88, 0x17, 0x93, 0x29, 0xab, 0x67, 0x13, + 0xe6, 0xd7, 0x8c, 0x83, 0x24, 0xad, 0x29, 0xe1, 0x9e, 0x4b, 0x98, 0x07, 0x1b, 0x8b, 0xe3, 0x42, + 0x65, 0xf7, 0x7c, 0x44, 0x54, 0x15, 0xec, 0x85, 0x84, 0x59, 0x6b, 0x98, 0x51, 0x91, 0xb2, 0xd9, + 0x93, 0x30, 0x0f, 0x35, 0x92, 0x7a, 0xe8, 0xa6, 0x44, 0x7b, 0x51, 0x52, 0xa9, 0x12, 0x2b, 0xdb, + 0x97, 0x62, 0xc2, 0xaa, 0x88, 0x2f, 0x4b, 0x32, 0x31, 0xa1, 0xb2, 0xfb, 0x5b, 0xc2, 0x6c, 0x34, + 0x96, 0x69, 0x51, 0x8f, 0xe7, 0xe7, 0x2a, 0x76, 0xa1, 0xfd, 0x2b, 0x09, 0xb3, 0xc1, 0x38, 0x64, + 0x7a, 0x25, 0xe5, 0xe7, 0xd5, 0x69, 0x54, 0xaa, 0x58, 0xbc, 0x06, 0x95, 0x68, 0xa9, 0x4c, 0x09, + 0xf4, 0x7a, 0xc2, 0xac, 0x33, 0x96, 0x4e, 0xa7, 0xa2, 0xc2, 0xbc, 0x81, 0x14, 0x45, 0x15, 0x62, + 0xbd, 0x79, 0x73, 0x8a, 0x7d, 0x15, 0x87, 0xb7, 0x50, 0x65, 0x1d, 0xa3, 0x98, 0x1b, 0xbf, 0x61, + 0x54, 0x91, 0x1d, 0xa3, 0xc1, 0x30, 0xb5, 0x7e, 0xab, 0x5b, 0xa8, 0xcf, 0xdf, 0x31, 0x1c, 0xc3, + 0x46, 0xc3, 0x79, 0xf5, 0x7b, 0x86, 0x97, 0x2a, 0x77, 0x68, 0xc9, 0xcd, 0x7a, 0x5d, 0x3c, 0xc7, + 0x6e, 0x88, 0x43, 0xe4, 0xe4, 0xc6, 0x10, 0xea, 0xe2, 0x39, 0x09, 0xdd, 0x14, 0x87, 0xc8, 0xf0, + 0x66, 0x86, 0x43, 0x10, 0x77, 0xe4, 0x62, 0x7d, 0x0b, 0xa3, 0x79, 0xd5, 0x53, 0xf0, 0x3c, 0x3f, + 0xf4, 0x7d, 0x6b, 0x15, 0x46, 0x9e, 0x6e, 0xab, 0x60, 0xa1, 0xf7, 0xdb, 0xab, 0x30, 0xb2, 0xbd, + 0x83, 0xd1, 0x2a, 0x01, 0x0c, 0xfe, 0xef, 0x64, 0xf2, 0x78, 0x56, 0x76, 0xe5, 0xdc, 0xdb, 0x8d, + 0xf0, 0x68, 0x93, 0x8b, 0x7b, 0x2b, 0x4d, 0xb2, 0xbe, 0x8f, 0x99, 0x07, 0x19, 0x07, 0xa0, 0x79, + 0xb4, 0x23, 0xc6, 0x7b, 0x7c, 0x2b, 0x27, 0xd7, 0x1a, 0x46, 0xd3, 0x3a, 0x86, 0x93, 0xf5, 0x03, + 0x53, 0x61, 0xf2, 0xf2, 0x27, 0x64, 0xb3, 0xcf, 0xcb, 0x1f, 0xde, 0xe1, 0xe7, 0xd9, 0x43, 0x08, + 0xd1, 0xe7, 0xe5, 0x5b, 0x3b, 0xfc, 0x7c, 0xc0, 0x1e, 0x66, 0x38, 0xd7, 0x79, 0xf9, 0x56, 0xf6, + 0x08, 0xa3, 0x25, 0x9e, 0xf4, 0x56, 0xb2, 0x47, 0x99, 0x3a, 0x36, 0xda, 0xec, 0x31, 0x46, 0x15, + 0x4b, 0x8f, 0xe4, 0x34, 0xc3, 0xb9, 0x8d, 0x03, 0x5f, 0x2f, 0x77, 0xd9, 0xe3, 0x8c, 0x4e, 0x82, + 0x83, 0xde, 0x46, 0xf6, 0x04, 0xf4, 0x3b, 0x3d, 0x77, 0x03, 0x7b, 0x12, 0x6e, 0x3a, 0x87, 0x3a, + 0x57, 0xb5, 0xb2, 0xa7, 0x00, 0xd3, 0xc0, 0xb3, 0xa7, 0xe5, 0xe3, 0x31, 0xbe, 0x60, 0xcf, 0xe0, + 0xb1, 0x23, 0xe7, 0x05, 0xec, 0x59, 0xf9, 0x18, 0x38, 0x2e, 0x7b, 0x0e, 0xc4, 0x3a, 0x84, 0xe5, + 0x82, 0xe7, 0xf3, 0xc8, 0x14, 0x35, 0x25, 0xd1, 0x17, 0x10, 0xab, 0xd3, 0x0b, 0xd8, 0x1e, 0xf5, + 0x24, 0xd8, 0x8b, 0xe8, 0x59, 0x17, 0xcf, 0xfb, 0x9c, 0x07, 0xec, 0x25, 0xe0, 0xdd, 0x13, 0x25, + 0xf6, 0x32, 0x33, 0x67, 0x1b, 0x33, 0x06, 0xd3, 0xec, 0x6f, 0x50, 0x18, 0xb2, 0x6c, 0xc7, 0x72, + 0x03, 0xf6, 0x0a, 0x14, 0x32, 0x8e, 0xcb, 0x5e, 0xc5, 0x53, 0xd6, 0x72, 0xd9, 0x6b, 0x8c, 0xd6, + 0xda, 0xac, 0x5f, 0x76, 0x73, 0x96, 0xc0, 0x9a, 0xf9, 0x3a, 0x8a, 0x44, 0x23, 0xc8, 0xf7, 0x1b, + 0x74, 0xc4, 0x5a, 0xa4, 0x21, 0x5d, 0x86, 0x6f, 0xc6, 0x14, 0x87, 0x1d, 0x57, 0xb0, 0xb7, 0x50, + 0xaa, 0x7d, 0x5e, 0xde, 0xc9, 0x59, 0x85, 0x0e, 0xd7, 0x66, 0x57, 0x24, 0xb1, 0x63, 0x90, 0xc0, + 0x1a, 0x9f, 0x6d, 0x4e, 0x46, 0x14, 0xbe, 0xef, 0xf9, 0xec, 0xca, 0x24, 0xc5, 0x1f, 0x76, 0x2d, + 0x7f, 0x72, 0xc0, 0xc3, 0xce, 0x64, 0x4b, 0x92, 0x82, 0x69, 0x44, 0x07, 0xdb, 0x9a, 0xa4, 0x60, + 0x1a, 0x05, 0xab, 0x6d, 0x31, 0xe8, 0x7b, 0x99, 0x35, 0x03, 0x6c, 0x7b, 0x92, 0x4a, 0x10, 0x50, + 0xf8, 0xda, 0xd9, 0x91, 0xa4, 0xb7, 0x5f, 0x05, 0x83, 0xed, 0xce, 0x24, 0x55, 0x56, 0x05, 0xd4, + 0x61, 0xae, 0x82, 0x03, 0xd5, 0x4a, 0x07, 0xb8, 0x73, 0xba, 0x1a, 0x0e, 0xf4, 0x8b, 0x53, 0x81, + 0xd7, 0xa0, 0x23, 0xe4, 0x4b, 0x01, 0xd7, 0x82, 0x8d, 0x7c, 0x05, 0x2b, 0xe8, 0x3a, 0xe8, 0xd0, + 0x2b, 0x58, 0x01, 0xd7, 0x23, 0x1b, 0x69, 0x57, 0xa8, 0xf6, 0x8f, 0xa1, 0x40, 0x6f, 0x5f, 0x05, + 0xfc, 0x04, 0x0a, 0xf2, 0x3a, 0x26, 0xe3, 0xe4, 0xd9, 0x4f, 0x93, 0x54, 0x13, 0xb8, 0x8d, 0xa1, + 0xe6, 0xcf, 0xb4, 0xf8, 0xfb, 0x1e, 0xda, 0x3f, 0xd7, 0xed, 0x01, 0x9e, 0xa7, 0xf6, 0x2f, 0x2a, + 0xfe, 0xb3, 0x7e, 0x99, 0xb3, 0x5f, 0x46, 0x48, 0x02, 0xf8, 0x55, 0xbc, 0x7b, 0xc0, 0x7e, 0x0d, + 0x25, 0x18, 0xf5, 0x58, 0x85, 0x80, 0xb3, 0xdf, 0x60, 0x48, 0xa4, 0x95, 0x44, 0x7e, 0x2b, 0x33, + 0xa0, 0xcd, 0x24, 0xf8, 0x3b, 0x39, 0xb4, 0x7c, 0x4c, 0x64, 0xc6, 0x9d, 0x31, 0xc1, 0x6e, 0x90, + 0xc1, 0x9c, 0xfc, 0xb8, 0x02, 0x6e, 0x44, 0x8e, 0x43, 0x36, 0x34, 0x7b, 0xd0, 0xc9, 0x3f, 0x26, + 0xe9, 0xa5, 0x53, 0x61, 0x15, 0x0a, 0xee, 0x49, 0xd2, 0x6b, 0x31, 0xc6, 0x2e, 0x94, 0xed, 0x82, + 0x51, 0x85, 0x65, 0x28, 0xd8, 0x9d, 0xa4, 0xf7, 0x65, 0x84, 0x6d, 0x28, 0xb9, 0x37, 0x49, 0xef, + 0xa1, 0x38, 0xeb, 0x50, 0x78, 0x9f, 0xce, 0xac, 0xbc, 0x51, 0xfb, 0x3d, 0x7a, 0xd8, 0xcb, 0xc5, + 0xa0, 0xe5, 0x5b, 0x45, 0xb5, 0x91, 0xba, 0x29, 0x89, 0x3d, 0x26, 0x17, 0x23, 0x96, 0xcf, 0x6e, + 0x46, 0x63, 0xc8, 0xdb, 0x48, 0x89, 0xbe, 0x05, 0x8d, 0x8c, 0x94, 0xdc, 0x8a, 0xa4, 0xe2, 0x86, + 0x27, 0xac, 0xa3, 0xdb, 0xe0, 0x4f, 0x61, 0x7a, 0xcb, 0x75, 0x7b, 0x32, 0xbc, 0xe2, 0x43, 0x65, + 0xde, 0x81, 0x8c, 0xc9, 0x36, 0xca, 0xf7, 0xce, 0x08, 0x80, 0x32, 0xbd, 0x0b, 0x45, 0x25, 0x01, + 0x45, 0xea, 0xee, 0x88, 0x0e, 0x76, 0x77, 0x7f, 0x48, 0xd2, 0x7a, 0x93, 0x76, 0xc9, 0xe3, 0xd6, + 0x3a, 0xe2, 0x95, 0x76, 0xe5, 0xfc, 0xa8, 0x93, 0xd5, 0xa0, 0x39, 0xc9, 0xfb, 0xae, 0xb4, 0xab, + 0x1c, 0xed, 0x50, 0xba, 0x70, 0xb2, 0xb3, 0x4e, 0x16, 0x41, 0xc8, 0xf5, 0x2a, 0x25, 0xc5, 0xd6, + 0xf0, 0x6a, 0xe9, 0x69, 0x8c, 0x32, 0x47, 0x61, 0x4e, 0xae, 0x87, 0x36, 0xda, 0x08, 0x75, 0x4a, + 0x3d, 0xa5, 0x40, 0x02, 0x3a, 0xdc, 0xa9, 0x38, 0x51, 0x48, 0x4c, 0x85, 0x3c, 0x2d, 0x62, 0x87, + 0xb0, 0xa7, 0xe3, 0xf0, 0xa2, 0xec, 0x74, 0xe8, 0x33, 0xea, 0xd1, 0xa1, 0x31, 0x8a, 0x74, 0x66, + 0x3d, 0x68, 0x8c, 0x21, 0xca, 0x59, 0xf5, 0x92, 0x86, 0x8e, 0x70, 0x36, 0x8e, 0x34, 0xe9, 0x31, + 0xe5, 0xfd, 0x1c, 0xa5, 0x0b, 0xcf, 0xe7, 0xaa, 0x50, 0xa1, 0xd7, 0xf3, 0x22, 0xb1, 0xd1, 0xa9, + 0xf3, 0x95, 0xba, 0xdc, 0xde, 0xe3, 0xac, 0xd3, 0x69, 0x05, 0xfc, 0xe8, 0x71, 0x8e, 0x54, 0xbe, + 0x2d, 0x4f, 0xae, 0x0a, 0x41, 0xfc, 0x77, 0xe4, 0x09, 0x59, 0x41, 0x9a, 0xc5, 0x3f, 0xe5, 0x09, + 0x59, 0xa1, 0x8a, 0xcb, 0xbb, 0x31, 0x6b, 0x30, 0x7a, 0x4f, 0x9e, 0x90, 0xb5, 0xb5, 0xe6, 0xf5, + 0x7e, 0x4c, 0x13, 0x64, 0x3e, 0x00, 0xd5, 0x0e, 0x54, 0x93, 0x3f, 0x59, 0x12, 0xec, 0xc2, 0x46, + 0x05, 0x74, 0xbb, 0x12, 0xb8, 0xa8, 0x11, 0x6f, 0x6d, 0xaf, 0x88, 0xcf, 0xa1, 0xec, 0xe2, 0x46, + 0xdc, 0xf8, 0x76, 0x7d, 0x9b, 0x6d, 0x82, 0x60, 0xd0, 0x0a, 0x82, 0x8d, 0x9e, 0x6f, 0xb3, 0x4b, + 0x1a, 0x31, 0x95, 0x2d, 0xd7, 0xf6, 0x8a, 0xf2, 0xe2, 0xfb, 0xd2, 0x46, 0xbc, 0x86, 0x8e, 0xea, + 0x38, 0x9c, 0x5d, 0xa6, 0x1f, 0x5b, 0xd9, 0xe5, 0x08, 0x30, 0xec, 0xe6, 0xb4, 0xc7, 0x2b, 0x1a, + 0x69, 0xba, 0x55, 0x00, 0x6e, 0xf7, 0x71, 0x37, 0x2f, 0xc6, 0xd9, 0xe6, 0x46, 0xa2, 0x5b, 0xe1, + 0x96, 0x1e, 0x61, 0x57, 0x6a, 0x48, 0xb1, 0x4b, 0x8f, 0xb0, 0x2d, 0x8d, 0x38, 0x3a, 0xb9, 0x39, + 0xcf, 0xe6, 0x6c, 0x2b, 0x1a, 0x5d, 0x1c, 0x8d, 0x6d, 0xa0, 0x9a, 0xe9, 0x5f, 0xc5, 0xb6, 0x83, + 0x6a, 0x97, 0x25, 0xac, 0x51, 0x2b, 0xe0, 0xec, 0xda, 0x46, 0xec, 0x14, 0xb0, 0x33, 0xf0, 0x36, + 0x06, 0xec, 0x3a, 0x50, 0xef, 0x2c, 0xfb, 0x3e, 0x77, 0xc5, 0x70, 0xc0, 0x7d, 0x76, 0x3d, 0xf8, + 0xe2, 0xf1, 0xc7, 0x8d, 0xf2, 0x5a, 0xc1, 0x75, 0x39, 0x3e, 0x6c, 0xa4, 0xbb, 0xd8, 0x4f, 0x00, + 0xf5, 0xe1, 0x78, 0x1b, 0x70, 0x5f, 0xa4, 0xbb, 0xd8, 0x4f, 0xd1, 0x89, 0x28, 0x44, 0xd3, 0x3f, + 0xdd, 0xc5, 0x7e, 0xd6, 0x88, 0x2b, 0x68, 0xf9, 0xf5, 0x8c, 0xfd, 0x1c, 0x91, 0xe4, 0x85, 0xbc, + 0x44, 0x7e, 0xd1, 0x28, 0xb7, 0x21, 0x1b, 0xe5, 0xe2, 0xf0, 0xcb, 0x46, 0x2a, 0xc8, 0x4c, 0x81, + 0xf3, 0x12, 0xbb, 0xa7, 0x51, 0xee, 0x17, 0x72, 0xeb, 0xd9, 0x2e, 0x99, 0x5c, 0x5e, 0xe0, 0x56, + 0xc0, 0x81, 0xec, 0x6e, 0xa4, 0x02, 0xd1, 0x97, 0x7e, 0xee, 0xa4, 0xbc, 0xf5, 0xbd, 0xb7, 0x91, + 0x06, 0x3e, 0xbc, 0x25, 0xd2, 0xf0, 0x7d, 0x8d, 0xea, 0xf0, 0x1c, 0x22, 0xf7, 0xa3, 0x0b, 0xb4, + 0x12, 0x84, 0xd0, 0x03, 0x80, 0x70, 0xd9, 0xa9, 0xa1, 0x3f, 0x35, 0x52, 0xbd, 0xa9, 0x6b, 0x3b, + 0x0d, 0xfe, 0x19, 0x7a, 0xb8, 0x35, 0xd3, 0xd0, 0x83, 0x8d, 0x72, 0xba, 0x73, 0xd1, 0x21, 0x3c, + 0x97, 0xfd, 0x25, 0x6c, 0x0e, 0x08, 0xcf, 0x62, 0x7f, 0x6d, 0x94, 0x8b, 0x03, 0x17, 0x6d, 0x10, + 0x3f, 0x54, 0x69, 0x43, 0xfe, 0x30, 0x06, 0x2d, 0x1d, 0xa4, 0x07, 0x37, 0x1c, 0xc1, 0x1e, 0x81, + 0x77, 0xd9, 0xa0, 0xa2, 0xb3, 0x04, 0x7b, 0x34, 0x02, 0xf5, 0x5b, 0xa5, 0x12, 0xb7, 0xd9, 0x63, + 0x15, 0x93, 0x36, 0xf6, 0xb8, 0x1c, 0xac, 0xe1, 0x74, 0x17, 0x7b, 0x02, 0xc5, 0x35, 0xe2, 0x08, + 0x1e, 0x04, 0x47, 0x59, 0xc1, 0x38, 0x7b, 0x52, 0x29, 0x42, 0xfa, 0x14, 0x02, 0x53, 0xf6, 0x33, + 0xe3, 0x96, 0x6f, 0xb3, 0xa7, 0x1b, 0xc3, 0xef, 0x14, 0x8e, 0x8b, 0xb7, 0xda, 0x33, 0x92, 0x79, + 0xc1, 0x59, 0xcf, 0xa9, 0xf9, 0x48, 0x03, 0xb6, 0x73, 0xaa, 0xf5, 0x68, 0x03, 0x36, 0x94, 0x3c, + 0xcf, 0x27, 0x4a, 0xd4, 0x7e, 0xac, 0x81, 0x56, 0x22, 0xd9, 0x1e, 0xce, 0xf6, 0x1c, 0x49, 0xd8, + 0xe3, 0x11, 0x4c, 0xdb, 0x3d, 0xd1, 0x80, 0xad, 0x65, 0x88, 0x69, 0xdd, 0x27, 0x1b, 0x28, 0xbb, + 0x12, 0xc7, 0x52, 0x49, 0xe0, 0x53, 0x0d, 0xf2, 0x8d, 0x15, 0x82, 0x5a, 0xfb, 0xe9, 0x06, 0xec, + 0x38, 0x21, 0x18, 0xe2, 0xa5, 0x82, 0x95, 0x83, 0xf3, 0x67, 0x1a, 0xb0, 0x65, 0x8c, 0xc2, 0xda, + 0xe2, 0xd9, 0x06, 0x2a, 0x11, 0xc5, 0xb7, 0x3c, 0x1a, 0xc8, 0x00, 0xcf, 0x35, 0xc8, 0x97, 0x58, + 0x05, 0xd5, 0xfa, 0xcf, 0x83, 0x0f, 0x2d, 0x0b, 0xdd, 0x13, 0xc2, 0xb7, 0x72, 0x74, 0x8a, 0x60, + 0xa7, 0x37, 0x69, 0x70, 0xd8, 0x3d, 0xa6, 0xec, 0x09, 0x04, 0x3d, 0xa3, 0x89, 0x12, 0x47, 0x60, + 0x76, 0xb2, 0x04, 0xe4, 0xcc, 0x26, 0xbd, 0xbd, 0xc8, 0x70, 0xd8, 0x9d, 0xd5, 0xa4, 0x3f, 0xa5, + 0xc8, 0x09, 0x41, 0xd8, 0xd9, 0xa1, 0xaf, 0x48, 0x07, 0xce, 0x09, 0x15, 0x87, 0x78, 0xd1, 0xdb, + 0x00, 0xec, 0xdc, 0x26, 0xfd, 0x69, 0xa6, 0x9f, 0xfb, 0x79, 0x40, 0xe7, 0x35, 0xc5, 0x3f, 0xcd, + 0x10, 0x76, 0x7e, 0x53, 0xec, 0x0b, 0x0e, 0x41, 0x17, 0x34, 0x51, 0x96, 0x08, 0x1a, 0xb1, 0x0a, + 0x8e, 0x0d, 0x42, 0x4e, 0x9e, 0xfd, 0xb0, 0x89, 0x52, 0x41, 0xad, 0x4e, 0xcf, 0x15, 0x96, 0xe3, + 0x06, 0x84, 0xfe, 0xa8, 0x89, 0x72, 0x5d, 0xf9, 0x02, 0x54, 0x2a, 0x71, 0xb9, 0x17, 0xba, 0x30, + 0x2e, 0xa8, 0xf4, 0xe0, 0xa2, 0x26, 0x1a, 0xca, 0x90, 0xd8, 0xa0, 0x25, 0x72, 0xe3, 0x84, 0x5f, + 0xdc, 0x44, 0xa3, 0x50, 0xc1, 0x7d, 0x1e, 0x70, 0x5f, 0xf6, 0x65, 0x53, 0x13, 0xe5, 0x3b, 0x1a, + 0x7a, 0xd0, 0x12, 0x30, 0xba, 0x24, 0xec, 0xd2, 0xa0, 0xcf, 0x85, 0x00, 0xff, 0x4b, 0xc3, 0x2e, + 0xad, 0xd5, 0xc9, 0xbe, 0x2c, 0x54, 0xcb, 0x70, 0xcb, 0x97, 0xf1, 0x2e, 0x0f, 0x09, 0x66, 0x84, + 0xe7, 0x5b, 0x94, 0xa2, 0x63, 0xa1, 0x7c, 0x45, 0x68, 0xdf, 0xc5, 0x4b, 0x32, 0xcc, 0xe6, 0x70, + 0xb0, 0xfe, 0x83, 0x4f, 0xa2, 0xdf, 0x57, 0x86, 0x1e, 0xe5, 0x4a, 0x4b, 0xd8, 0x96, 0x30, 0x71, + 0xa4, 0x85, 0x73, 0x00, 0xc1, 0x5b, 0xc3, 0x40, 0xc8, 0xa7, 0x5c, 0x0a, 0x48, 0xb0, 0x2d, 0x2e, + 0x58, 0x23, 0xc6, 0xb9, 0x0f, 0x8b, 0xed, 0xd5, 0xd4, 0x7a, 0x7c, 0x0e, 0x6a, 0x3b, 0xc2, 0x31, + 0xe8, 0xe7, 0xc5, 0x51, 0xee, 0xaf, 0x19, 0x23, 0x74, 0x27, 0x08, 0x8f, 0xf0, 0x5c, 0x47, 0x90, + 0xe5, 0x13, 0x48, 0xf2, 0x07, 0x28, 0x93, 0x11, 0x9e, 0xeb, 0xf1, 0xbd, 0xa2, 0x06, 0x3f, 0x44, + 0x81, 0x8d, 0xf0, 0x5c, 0x97, 0x53, 0x44, 0x9c, 0x8f, 0x40, 0x78, 0x84, 0xe7, 0xfa, 0x0e, 0xef, + 0x72, 0x02, 0x61, 0xb9, 0xb2, 0x9c, 0x3e, 0x0e, 0xe1, 0xd6, 0x28, 0xfc, 0x49, 0x13, 0x1d, 0x91, + 0x47, 0x78, 0x6e, 0x80, 0xe7, 0x2d, 0xe1, 0x6c, 0xe0, 0x69, 0xd7, 0xe5, 0xfe, 0xa0, 0xef, 0xd9, + 0x65, 0x59, 0x4b, 0x9f, 0x62, 0x04, 0x47, 0x78, 0xae, 0xd3, 0x0b, 0x1c, 0x97, 0x47, 0x6d, 0x3f, + 0xd3, 0x14, 0xfb, 0x5a, 0x07, 0x3c, 0xbf, 0x48, 0xd0, 0xe7, 0x4d, 0xe6, 0x32, 0xe3, 0xe0, 0xe8, + 0x37, 0x8d, 0xf8, 0x07, 0xd6, 0x9b, 0x9b, 0x69, 0x3f, 0x48, 0xf2, 0x18, 0x2e, 0xaf, 0xe8, 0x6f, + 0x69, 0x36, 0x0f, 0x31, 0x6a, 0xa7, 0x11, 0xe2, 0xcd, 0x7f, 0x6b, 0xb3, 0x76, 0x5d, 0x25, 0x55, + 0xaf, 0xfb, 0xdb, 0x9a, 0xa9, 0x27, 0xd3, 0xc8, 0xf5, 0x26, 0xe1, 0xf6, 0xbd, 0xb9, 0xc7, 0xd6, + 0xe0, 0x8e, 0x66, 0xb3, 0xde, 0xf8, 0xda, 0x74, 0xe6, 0x7a, 0x97, 0x70, 0xe7, 0xde, 0xec, 0xb1, + 0x61, 0xb8, 0xab, 0xd9, 0xfc, 0xba, 0x51, 0x3f, 0x8d, 0x34, 0x9e, 0x80, 0xbb, 0x9b, 0x69, 0xa2, + 0x0c, 0x16, 0xca, 0x55, 0xf8, 0x85, 0xcd, 0xb8, 0x05, 0xa2, 0x73, 0x50, 0x5c, 0x70, 0x51, 0x33, + 0x6d, 0xc8, 0xf5, 0xdd, 0x57, 0x5c, 0x76, 0x31, 0x64, 0xf1, 0x78, 0xfa, 0xd5, 0xb3, 0x09, 0x32, + 0x7d, 0xeb, 0x1f, 0xb7, 0xbb, 0xa4, 0x99, 0x2a, 0xae, 0x2f, 0x1b, 0x47, 0x2f, 0x95, 0x68, 0x77, + 0x1c, 0xbd, 0x0c, 0x68, 0x6f, 0x95, 0xee, 0xe5, 0xf0, 0xae, 0x2f, 0xb7, 0xe3, 0xb2, 0x2b, 0xd0, + 0x15, 0xdc, 0x50, 0xc7, 0x05, 0x9b, 0xa5, 0xab, 0xaa, 0x00, 0x57, 0x02, 0xed, 0x5e, 0x1b, 0x47, + 0xb7, 0x00, 0x1d, 0xa8, 0xd2, 0xdd, 0xda, 0x4c, 0x6b, 0x86, 0xbc, 0x30, 0x8d, 0x4b, 0xb6, 0x41, + 0x12, 0xc3, 0xd4, 0x79, 0x6e, 0xfb, 0x74, 0x12, 0x9c, 0xba, 0x76, 0x34, 0xab, 0xd2, 0x8e, 0x4a, + 0xe4, 0xc1, 0x6a, 0x27, 0xaa, 0x61, 0x1a, 0xa3, 0xf0, 0xf0, 0x72, 0x55, 0xb3, 0xd9, 0x60, 0x1c, + 0x32, 0x9d, 0x71, 0xa8, 0x72, 0x35, 0x22, 0xcb, 0xed, 0x6e, 0x9c, 0xed, 0x35, 0xe8, 0x5d, 0x7a, + 0x2c, 0x8e, 0x5e, 0x2b, 0x87, 0x4c, 0x6d, 0x43, 0xe3, 0xb2, 0xeb, 0x9a, 0xcd, 0x43, 0x8d, 0xe4, + 0xde, 0x7e, 0xe8, 0xc3, 0x1e, 0x6d, 0xc6, 0xa1, 0xd2, 0x12, 0xbc, 0xc7, 0xf3, 0x8b, 0x16, 0x66, + 0xee, 0x3b, 0x2d, 0xb4, 0xbe, 0x11, 0xd6, 0xe7, 0x08, 0xee, 0xd3, 0x36, 0xb9, 0x45, 0x6d, 0xf7, + 0x78, 0x97, 0x33, 0x36, 0xc6, 0xde, 0x6d, 0xd1, 0xf7, 0xd6, 0x34, 0x03, 0x00, 0xbd, 0xd7, 0x42, + 0x63, 0x47, 0x4d, 0x39, 0xab, 0x42, 0xc1, 0xfb, 0x2d, 0x38, 0xc8, 0xa9, 0xb9, 0x50, 0x25, 0xfc, + 0xa0, 0x85, 0xc8, 0x69, 0xa1, 0xfe, 0x1b, 0x8a, 0x3f, 0x84, 0xd3, 0x8a, 0x4d, 0x28, 0xf8, 0x08, + 0x4e, 0xa5, 0x60, 0x8a, 0xd5, 0xc7, 0x2d, 0x34, 0x3a, 0x6a, 0x61, 0x8d, 0xc7, 0xfb, 0xa4, 0x85, + 0xd6, 0x32, 0xed, 0x2a, 0x84, 0x3f, 0x6d, 0xa1, 0xfd, 0x0e, 0x75, 0x8f, 0x7d, 0x86, 0xc7, 0xa3, + 0xbc, 0xb2, 0xcf, 0x3e, 0x6f, 0xc1, 0x4d, 0xb2, 0xe3, 0x96, 0x05, 0x67, 0x5f, 0xb4, 0xc8, 0x43, + 0x63, 0xce, 0x73, 0x6d, 0xf6, 0x25, 0x12, 0xd4, 0xef, 0xe4, 0x7c, 0x4f, 0x21, 0xc7, 0xa5, 0x68, + 0x97, 0xd9, 0xef, 0xb9, 0x62, 0x9c, 0x1d, 0x9f, 0xc2, 0xe5, 0x3a, 0x3d, 0x0f, 0x58, 0x45, 0xce, + 0x4e, 0x48, 0xe1, 0xb2, 0xde, 0xdb, 0x48, 0xe3, 0xdb, 0xe1, 0xe7, 0xd9, 0x89, 0x29, 0x7c, 0x0a, + 0x90, 0x80, 0x57, 0x16, 0x84, 0x9d, 0x94, 0xc2, 0x6d, 0x90, 0x35, 0x09, 0x93, 0x93, 0x61, 0xd2, + 0x65, 0x4d, 0xae, 0x19, 0x93, 0x3e, 0x4f, 0x81, 0x4f, 0x00, 0x47, 0x73, 0xbe, 0x9e, 0x9d, 0x5a, + 0x69, 0xff, 0x27, 0xb7, 0x7c, 0x76, 0x5a, 0x8a, 0x46, 0x84, 0x44, 0xe4, 0xb3, 0x9f, 0x36, 0xeb, + 0xa7, 0xa7, 0xa8, 0x54, 0x34, 0xe4, 0x95, 0x05, 0xd0, 0x33, 0x10, 0x87, 0xd0, 0x2e, 0x6b, 0x92, + 0x9d, 0x89, 0x38, 0xd4, 0x52, 0x7e, 0xce, 0x4a, 0x51, 0xf7, 0xf1, 0x78, 0x76, 0x8a, 0x72, 0x45, + 0x8f, 0x31, 0xb7, 0xe7, 0xa4, 0xa8, 0x36, 0xa3, 0xb0, 0x76, 0x7d, 0x2e, 0x38, 0xf5, 0x72, 0x21, + 0x2b, 0x89, 0x9d, 0x97, 0xc2, 0x5e, 0x77, 0x32, 0xa0, 0xc4, 0xe2, 0x4e, 0x2f, 0x28, 0xb1, 0xf3, + 0x53, 0xb4, 0x8c, 0x45, 0x40, 0xaf, 0x2c, 0x08, 0xbf, 0x20, 0x15, 0x39, 0x31, 0x60, 0x24, 0x7e, + 0x08, 0xfe, 0x0a, 0xa1, 0xa1, 0x5a, 0x49, 0x79, 0xfa, 0x51, 0x35, 0x8a, 0xfb, 0xb6, 0x0b, 0x41, + 0x1b, 0xcb, 0xf1, 0x45, 0x29, 0x79, 0x20, 0x28, 0x86, 0xc5, 0x7b, 0x31, 0xba, 0x3c, 0x9c, 0xed, + 0x84, 0xdb, 0x4d, 0xe0, 0x3f, 0x9c, 0xed, 0x24, 0x95, 0x40, 0x58, 0xc5, 0x92, 0x1e, 0x96, 0x4b, + 0x52, 0x54, 0x54, 0xd5, 0x12, 0x35, 0x3e, 0x97, 0x42, 0xd8, 0x61, 0xdb, 0xe4, 0x44, 0x60, 0xab, + 0x6e, 0x57, 0xbe, 0x04, 0xa5, 0xa8, 0xe2, 0xe2, 0x42, 0xf5, 0x72, 0xb9, 0x1c, 0xe1, 0x3a, 0x6c, + 0x1b, 0xc5, 0x66, 0x09, 0x14, 0x1d, 0x26, 0xf9, 0x15, 0xda, 0x48, 0x9f, 0x06, 0x2a, 0xfe, 0x36, + 0xa7, 0xa8, 0xee, 0xa3, 0x22, 0xe5, 0xed, 0x4a, 0x64, 0x4f, 0x79, 0x93, 0x18, 0x7c, 0x6d, 0x09, + 0xd9, 0x85, 0x07, 0x95, 0x8a, 0xb7, 0xad, 0x21, 0xbb, 0x8a, 0x50, 0xf9, 0xdb, 0x16, 0x63, 0xa7, + 0xc4, 0x72, 0xf1, 0xd3, 0x14, 0x88, 0x73, 0xd4, 0xdb, 0x0e, 0x94, 0x45, 0x45, 0xa0, 0x3c, 0xed, + 0x04, 0x83, 0x4c, 0x79, 0x74, 0xba, 0xfc, 0x5c, 0x05, 0x06, 0x71, 0xa1, 0xb2, 0xbb, 0x1a, 0x0c, + 0x32, 0xe5, 0xd1, 0x29, 0xf9, 0xb9, 0x46, 0x1b, 0x4d, 0xcd, 0xcf, 0xb5, 0x20, 0x17, 0x15, 0x29, + 0x6f, 0xd7, 0xc9, 0xea, 0x92, 0xde, 0x22, 0xf9, 0xb9, 0x3e, 0x64, 0x37, 0x4d, 0x7e, 0x7e, 0x1c, + 0xb2, 0x9b, 0x92, 0x9f, 0x9f, 0xc4, 0xd8, 0x45, 0xf3, 0xf3, 0x53, 0x4d, 0xa1, 0x3a, 0x3f, 0x3f, + 0x43, 0x7e, 0x2a, 0x02, 0xe5, 0xe9, 0xe7, 0x08, 0x32, 0xec, 0x3a, 0x13, 0x61, 0x75, 0xa9, 0x22, + 0x66, 0xbf, 0x80, 0x45, 0x4c, 0x44, 0x9b, 0x9a, 0x5f, 0x4e, 0x85, 0xbb, 0x78, 0x8e, 0xfd, 0x2a, + 0x25, 0x7f, 0x5a, 0xe6, 0x6e, 0xe0, 0xbe, 0xc8, 0x1e, 0xcb, 0x7e, 0x9d, 0xc2, 0x77, 0x3a, 0x6b, + 0x3d, 0xb2, 0xc7, 0x7e, 0x13, 0x36, 0x31, 0x1b, 0x7e, 0x0b, 0xed, 0x41, 0xee, 0x3b, 0x9e, 0xdd, + 0x61, 0xdb, 0xec, 0x77, 0x98, 0xf0, 0xb2, 0x8d, 0xa5, 0xef, 0xf7, 0x98, 0x1c, 0x6b, 0xcb, 0x96, + 0x2f, 0xb8, 0xcf, 0x6e, 0x80, 0x7a, 0x86, 0xe7, 0xb2, 0x1e, 0xcc, 0x6f, 0x4c, 0xc9, 0xf3, 0x5d, + 0x91, 0x67, 0x69, 0xa5, 0x63, 0x37, 0xa5, 0xf4, 0x49, 0x15, 0x7c, 0xc8, 0xe3, 0xcd, 0x29, 0x5a, + 0x18, 0xb3, 0x5e, 0x97, 0x35, 0x19, 0xb0, 0x5b, 0xa4, 0xbe, 0x5a, 0x15, 0x03, 0x76, 0x2b, 0x96, + 0x00, 0x35, 0xa5, 0xf4, 0x3c, 0xbb, 0x0d, 0x83, 0x14, 0x01, 0xd5, 0x14, 0xbb, 0x1d, 0xcb, 0x62, + 0xe8, 0x1c, 0x13, 0xfb, 0x0e, 0x38, 0x08, 0x31, 0x79, 0x9b, 0x7e, 0x67, 0x4a, 0xaf, 0xe2, 0x00, + 0xf5, 0x3c, 0xbf, 0x0b, 0x5d, 0xe9, 0xb3, 0x02, 0x41, 0x4b, 0xdb, 0xdd, 0xf0, 0x96, 0x11, 0x3e, + 0x51, 0x13, 0x32, 0x39, 0x7f, 0x90, 0xe5, 0x11, 0xc5, 0xa8, 0x1a, 0xd9, 0x1f, 0xab, 0x70, 0x3d, + 0x96, 0xf7, 0x20, 0x10, 0x6d, 0x9a, 0xf5, 0x30, 0x80, 0xd4, 0xae, 0x29, 0x30, 0xf1, 0x62, 0xbb, + 0xb1, 0x34, 0xa9, 0x93, 0x5e, 0xe8, 0xfb, 0xde, 0x18, 0xaa, 0x3d, 0xdf, 0xa7, 0x27, 0x1e, 0xe9, + 0x45, 0x5f, 0x55, 0xec, 0xfe, 0xe8, 0xfc, 0x52, 0x37, 0xd2, 0xae, 0x60, 0x0f, 0x44, 0x97, 0x18, + 0xf5, 0xe2, 0x53, 0xdb, 0xd3, 0x3f, 0x45, 0x2d, 0xd2, 0xae, 0xfe, 0xde, 0xff, 0x67, 0x24, 0xa0, + 0x02, 0x93, 0x97, 0x07, 0x53, 0xb4, 0x51, 0x50, 0x98, 0xa6, 0xa8, 0xf4, 0xff, 0x12, 0x9d, 0xf1, + 0x5a, 0x86, 0xef, 0xb7, 0x7a, 0x12, 0x4c, 0xe1, 0xfa, 0x50, 0xb4, 0xd6, 0x2b, 0x5c, 0x1f, 0x8e, + 0x4e, 0xf7, 0x38, 0xd7, 0x47, 0xa2, 0x16, 0x15, 0xae, 0x8f, 0xca, 0xc1, 0x0a, 0x61, 0xf2, 0xf2, + 0x18, 0xb8, 0x2a, 0xac, 0x8a, 0xeb, 0xe3, 0xd1, 0xd9, 0x17, 0xe5, 0xfa, 0x04, 0xca, 0x9f, 0x86, + 0x06, 0xf5, 0xf8, 0x64, 0x4a, 0x5f, 0xe2, 0xab, 0x77, 0xd2, 0x53, 0xf1, 0x1a, 0xc3, 0x14, 0x78, + 0x5a, 0x2f, 0x1a, 0x15, 0xba, 0x38, 0x37, 0x3c, 0x23, 0xdf, 0x5f, 0x21, 0x29, 0x80, 0xcf, 0x46, + 0x95, 0xd3, 0x6e, 0xf8, 0x89, 0xe3, 0xb9, 0x68, 0x92, 0x34, 0x23, 0x58, 0x3c, 0x1f, 0x5d, 0x19, + 0xb5, 0x44, 0x9b, 0xbd, 0x10, 0xeb, 0x64, 0x6c, 0x93, 0xc4, 0xf6, 0xc4, 0x3a, 0xa9, 0xbf, 0x60, + 0xb8, 0x82, 0xbd, 0x18, 0x8b, 0xa5, 0x04, 0x88, 0xf5, 0x52, 0x2c, 0x96, 0xde, 0x56, 0xa9, 0x58, + 0x2f, 0xeb, 0x97, 0x47, 0x55, 0x3f, 0xff, 0x86, 0x7e, 0x56, 0x0a, 0x05, 0xe0, 0x2b, 0x51, 0xe5, + 0x48, 0x3f, 0x5f, 0x8d, 0x16, 0x6e, 0xac, 0x9f, 0xaf, 0x45, 0xdf, 0x90, 0xd5, 0xfd, 0x7c, 0x3d, + 0x56, 0x78, 0xf1, 0x7e, 0xbe, 0x11, 0x2b, 0xbc, 0x48, 0x3f, 0xdf, 0x8c, 0xc5, 0x8a, 0xf6, 0xf3, + 0xad, 0x58, 0xac, 0xaa, 0x7e, 0xfe, 0x3d, 0x45, 0xe7, 0xbd, 0xaa, 0x79, 0x48, 0x25, 0xa1, 0xe2, + 0xfd, 0x23, 0xda, 0x35, 0x72, 0xa7, 0xf0, 0xb7, 0xa3, 0x79, 0xc0, 0x37, 0x09, 0x57, 0xb0, 0x77, + 0x30, 0x7d, 0x23, 0x20, 0xe2, 0xff, 0x33, 0x4a, 0x99, 0x10, 0x1d, 0xfb, 0xdd, 0xe8, 0x34, 0x55, + 0xa0, 0x72, 0xff, 0x5e, 0x34, 0xac, 0xfe, 0xb0, 0xe1, 0x0a, 0xf6, 0x7e, 0xac, 0xfb, 0x12, 0x47, + 0x90, 0x0f, 0x62, 0x39, 0x93, 0x02, 0x1d, 0xe7, 0xc3, 0x68, 0x19, 0x46, 0xfa, 0xf0, 0x51, 0xb4, + 0x66, 0x75, 0x1f, 0x3e, 0x46, 0x1f, 0x22, 0x20, 0xdc, 0x7f, 0x12, 0x2d, 0xaf, 0x68, 0x1f, 0x3e, + 0x8d, 0x4e, 0xdf, 0x78, 0x1f, 0x3e, 0x8b, 0x86, 0x8d, 0xf4, 0xe1, 0xf3, 0x58, 0xa9, 0x46, 0xfa, + 0xf0, 0x45, 0xac, 0xbe, 0xe3, 0x7d, 0xf8, 0x32, 0x65, 0x2e, 0x37, 0x0e, 0x9d, 0xb6, 0x26, 0xc2, + 0xd5, 0xf3, 0xb8, 0x95, 0x74, 0x36, 0x9f, 0x5a, 0x1b, 0xa1, 0xc2, 0xf1, 0x2b, 0xe9, 0xbc, 0x35, + 0x4d, 0x8d, 0x84, 0x1a, 0x27, 0xac, 0x34, 0x1b, 0x8d, 0x65, 0xd3, 0xd7, 0x4a, 0xa8, 0x74, 0xe2, + 0x4a, 0xe2, 0x32, 0xed, 0x3c, 0x0c, 0x75, 0x4e, 0x02, 0x97, 0xa9, 0xf3, 0x31, 0x54, 0x38, 0x19, + 0x5c, 0xa6, 0x99, 0x97, 0xa1, 0xc6, 0x29, 0xe0, 0x32, 0xfd, 0xfc, 0x0c, 0x95, 0x4e, 0x5d, 0xa9, + 0x3e, 0x0c, 0xaa, 0x5b, 0xfb, 0x27, 0xda, 0xcc, 0x39, 0x46, 0xcd, 0x6a, 0xc7, 0x65, 0x4f, 0xb6, + 0xd1, 0x29, 0xa3, 0x23, 0xd3, 0x99, 0x4e, 0xb3, 0xa7, 0xda, 0xf0, 0xd1, 0x7a, 0xdc, 0xf2, 0xd9, + 0xd3, 0x6d, 0xf8, 0x88, 0x31, 0x6e, 0xf9, 0xd2, 0x62, 0x38, 0xdb, 0x73, 0x24, 0x7b, 0xa6, 0x8d, + 0xde, 0xcb, 0xea, 0xd7, 0xe2, 0xcf, 0xb6, 0xc9, 0x4f, 0x0e, 0xd4, 0x38, 0x3a, 0xc3, 0x9e, 0x6b, + 0xa3, 0x37, 0xa5, 0xda, 0x43, 0xb0, 0xe7, 0xe1, 0xbf, 0xbb, 0x20, 0xd8, 0x0b, 0x6d, 0xb4, 0x3a, + 0x76, 0x4f, 0x94, 0x3c, 0x5f, 0x64, 0xb8, 0x58, 0x45, 0x6f, 0xb5, 0x3d, 0x71, 0xec, 0x08, 0xc2, + 0x5e, 0x8c, 0x63, 0xdf, 0x26, 0xec, 0x25, 0x84, 0xc0, 0x3f, 0x55, 0x50, 0x45, 0xbc, 0xdc, 0x86, + 0x2f, 0x02, 0xd4, 0x94, 0x8b, 0x4c, 0x1b, 0x6d, 0xcb, 0xd1, 0x56, 0xb5, 0xf4, 0x8a, 0xd2, 0x70, + 0xed, 0xb4, 0x9b, 0xe1, 0x82, 0xbd, 0x0a, 0xc2, 0x6a, 0x9d, 0x7e, 0xad, 0x0d, 0xaf, 0x58, 0x34, + 0x68, 0x8b, 0x80, 0xf3, 0x2b, 0x67, 0xaf, 0xb7, 0xe1, 0x37, 0xdb, 0xbe, 0x57, 0x5c, 0x6d, 0x05, + 0xbc, 0xed, 0x08, 0xf6, 0x06, 0x9c, 0x1c, 0xc5, 0x27, 0xd2, 0x2e, 0xf6, 0x10, 0x6f, 0xea, 0x76, + 0x46, 0xf8, 0xd4, 0x7e, 0xab, 0x4d, 0x7e, 0x1a, 0x0b, 0xb8, 0x2f, 0x90, 0x96, 0xbf, 0xb7, 0xc9, + 0x4f, 0x63, 0x04, 0xb0, 0x7f, 0xb4, 0xc9, 0x7b, 0x73, 0x75, 0x65, 0xcb, 0xde, 0x6e, 0x93, 0x5f, + 0xe3, 0x02, 0xe1, 0xb3, 0x77, 0xf0, 0xdc, 0x97, 0xf5, 0x9d, 0x22, 0xfb, 0x67, 0x9b, 0xfc, 0xf9, + 0xdd, 0x98, 0xf4, 0xf1, 0x6e, 0x9b, 0xfc, 0x39, 0xf9, 0x98, 0x60, 0xef, 0xc1, 0x9d, 0x1a, 0xa8, + 0xf7, 0xdb, 0x70, 0x0f, 0xe2, 0xe5, 0x2c, 0x81, 0x1d, 0x41, 0x00, 0xed, 0x0f, 0x22, 0xe8, 0xaa, + 0x10, 0xfd, 0x10, 0xf9, 0x88, 0xe8, 0xb2, 0x8f, 0x22, 0x08, 0xf4, 0xd8, 0xc7, 0x92, 0x82, 0xb7, + 0x91, 0xfb, 0xec, 0x13, 0x49, 0xa1, 0x64, 0xd9, 0x30, 0xff, 0x54, 0x52, 0x28, 0x59, 0x36, 0xfb, + 0x0c, 0x83, 0x49, 0x3b, 0x3e, 0xca, 0xe2, 0xe7, 0x20, 0xb4, 0x26, 0x87, 0x57, 0xe8, 0x17, 0xe8, + 0xdf, 0x9a, 0x5c, 0xf8, 0x13, 0x40, 0x8c, 0xf4, 0x1a, 0xdf, 0x66, 0xc7, 0xb5, 0x93, 0x6b, 0xdc, + 0x88, 0xb2, 0xe3, 0xf1, 0x3c, 0x84, 0x9e, 0x9e, 0xd0, 0x8e, 0x0f, 0xa5, 0xbc, 0xc4, 0x2d, 0xc1, + 0x4e, 0x6c, 0xc7, 0x0f, 0x10, 0xe4, 0xcd, 0x32, 0x3b, 0xa9, 0x5d, 0x7e, 0x31, 0xd9, 0xc0, 0xfd, + 0x00, 0x37, 0xe2, 0xec, 0x64, 0x25, 0x07, 0xc2, 0x4e, 0x69, 0xc7, 0x65, 0xbe, 0x93, 0x1f, 0x97, + 0x59, 0x3a, 0x55, 0xba, 0xa5, 0x36, 0x3b, 0xad, 0x1d, 0xdf, 0x64, 0x34, 0xfb, 0xd3, 0xdb, 0xf1, + 0x03, 0x0d, 0x62, 0x7f, 0x06, 0xb4, 0x32, 0x25, 0x8a, 0x70, 0x66, 0xbb, 0xfc, 0xbf, 0x04, 0x3f, + 0x57, 0x2c, 0xb1, 0xb3, 0xda, 0xd5, 0x92, 0x12, 0x80, 0x7b, 0x25, 0x9f, 0x67, 0xc7, 0x05, 0x95, + 0x94, 0x9e, 0xd3, 0xae, 0xd6, 0xbe, 0x88, 0x05, 0x3b, 0x37, 0x0e, 0xca, 0xc4, 0x9e, 0x17, 0x07, + 0xd3, 0xae, 0xcd, 0x27, 0xd8, 0xf9, 0xe0, 0x98, 0xf5, 0x54, 0x65, 0x5d, 0x20, 0x9b, 0xbe, 0x53, + 0xc4, 0x9e, 0xef, 0x87, 0xe8, 0x1d, 0x35, 0xa5, 0xdf, 0x1f, 0x85, 0x6d, 0xe9, 0xf2, 0x42, 0xf4, + 0x63, 0xd8, 0x3d, 0x8a, 0x4f, 0xb0, 0x8b, 0x20, 0x1b, 0x2e, 0x95, 0xb8, 0x2c, 0xab, 0x8b, 0xa5, + 0x8c, 0xda, 0x6c, 0x53, 0x3b, 0x15, 0x64, 0x65, 0xae, 0xb2, 0x4b, 0xda, 0xe5, 0x8f, 0x2c, 0x36, + 0x2a, 0xe5, 0x4b, 0xdb, 0xa9, 0xf2, 0xc3, 0x1f, 0x8a, 0x86, 0x47, 0xcc, 0x76, 0xf3, 0x10, 0xa3, + 0x56, 0xc3, 0x9d, 0xc5, 0x52, 0xec, 0xa7, 0xe2, 0x97, 0xb7, 0xd3, 0x84, 0x94, 0x3f, 0x00, 0xd5, + 0x16, 0x57, 0xb4, 0xd3, 0x32, 0x0e, 0xac, 0x5a, 0x7d, 0xb3, 0xee, 0xaa, 0xe3, 0x5a, 0xfe, 0x24, + 0xbb, 0xb2, 0x3d, 0x9c, 0x55, 0x12, 0xd8, 0xb2, 0xb7, 0x60, 0xd8, 0x45, 0x6f, 0x9d, 0xd6, 0x31, + 0x44, 0xdb, 0xda, 0xa3, 0x3f, 0x5d, 0x05, 0xb4, 0xbd, 0x3d, 0xfc, 0xd9, 0x29, 0xda, 0x3b, 0xda, + 0x57, 0xdc, 0x95, 0xd8, 0xfb, 0xff, 0x36, 0xe2, 0xdf, 0xd7, 0xcc, 0x66, 0xe3, 0xb0, 0x7d, 0x2a, + 0xa4, 0xdd, 0x0d, 0x56, 0xc1, 0xb1, 0xd9, 0x7e, 0x66, 0x93, 0xd1, 0xb8, 0x4f, 0xcd, 0xcc, 0xb8, + 0x57, 0x2e, 0xd8, 0x2c, 0x61, 0x7e, 0xdd, 0x68, 0xd8, 0xa7, 0x62, 0x7f, 0x39, 0x10, 0x6c, 0xc6, + 0x57, 0x46, 0x26, 0xb5, 0x01, 0x4f, 0xb0, 0x9a, 0x15, 0x77, 0x24, 0x8c, 0xfa, 0xaf, 0xfa, 0xff, + 0xb9, 0x7d, 0xd1, 0x23, 0x9d, 0x4a, 0x3f, 0x0e, 0xdb, 0xb7, 0xb3, 0xa3, 0x3d, 0x9f, 0x3a, 0xf1, + 0x0d, 0x63, 0xf9, 0xbe, 0xb4, 0x06, 0xc7, 0x7d, 0x2b, 0xe0, 0x6c, 0xc6, 0x57, 0xea, 0xf9, 0x7c, + 0xcc, 0x99, 0x60, 0x35, 0x2b, 0x4e, 0x4a, 0x18, 0xb5, 0x7b, 0xf9, 0xb7, 0x4f, 0x73, 0xb9, 0xb1, + 0x6c, 0x2f, 0xa2, 0x0a, 0xeb, 0x46, 0xa3, 0x6e, 0x2f, 0x3a, 0x19, 0x61, 0xb9, 0xb6, 0x05, 0xd2, + 0xf5, 0xd3, 0xfc, 0x7f, 0xa3, 0x54, 0x1a, 0xc8, 0xfb, 0x56, 0x91, 0xcd, 0x58, 0xb1, 0x79, 0xba, + 0x82, 0x88, 0xfe, 0x37, 0xe6, 0xb4, 0xc3, 0x12, 0x55, 0xa8, 0x50, 0xfa, 0xa6, 0xf1, 0xf5, 0x7d, + 0x6a, 0x76, 0x39, 0x81, 0x35, 0x5a, 0xe0, 0x44, 0xec, 0xab, 0x9c, 0xae, 0x2e, 0x3b, 0x05, 0xe1, + 0xb8, 0x6c, 0xc6, 0x0a, 0x6e, 0x2c, 0xaa, 0xfa, 0x4f, 0x3c, 0xfc, 0x5f, 0x8f, 0x57, 0x2c, 0x15, + 0xb8, 0xe0, 0xb8, 0xfd, 0xda, 0xcf, 0x5c, 0x80, 0xb7, 0x99, 0x55, 0x40, 0x33, 0x41, 0x0a, 0x83, + 0x96, 0x2f, 0x1c, 0xab, 0x70, 0x38, 0x90, 0x19, 0x11, 0xa4, 0x15, 0x48, 0x0d, 0x99, 0x74, 0x71, + 0xbb, 0x5c, 0x42, 0x73, 0xe6, 0xea, 0x6f, 0xee, 0xda, 0xb3, 0x2c, 0xf1, 0xe0, 0x9e, 0x65, 0x89, + 0xe7, 0xf7, 0x2c, 0x4b, 0x6c, 0x7a, 0x71, 0xd9, 0x7e, 0xc6, 0x92, 0x9c, 0x57, 0x6c, 0x29, 0x39, + 0x6e, 0x3e, 0x67, 0x95, 0x5a, 0x84, 0x63, 0x8f, 0xe2, 0xff, 0xed, 0x06, 0x13, 0xff, 0x17, 0x00, + 0x00, 0xff, 0xff, 0x93, 0x0e, 0x85, 0x0d, 0x4e, 0x3d, 0x00, 0x00, } diff --git a/proto/expression.proto b/proto/expression.proto index d7725fd9..7543262a 100644 --- a/proto/expression.proto +++ b/proto/expression.proto @@ -535,8 +535,8 @@ enum ScalarFuncSig { IfVectorFloat32 = 5161; CaseWhenVectorFloat32 = 5162; - /*fts*/ - FTSMatchBooleanExpression = 5206; + /*Local MATCH*/ + LocalMatchAgainstBoolean = 5206; /*time*/ DateFormatSig = 6001; @@ -772,51 +772,53 @@ enum ScalarFuncSig { // Evaluators should implement evaluation functions for every expression type. // Boolean full-text query representation carried as metadata by the -// FTSMatchBooleanExpression scalar function. -enum FTSBooleanOccur { - FTSBooleanOccurInvalid = 0; - FTSBooleanOccurShould = 1; - FTSBooleanOccurMust = 2; - FTSBooleanOccurMustNot = 3; +// LocalMatchAgainstBoolean scalar function. +enum LocalMatchAgainstBooleanOccur { + LocalMatchAgainstBooleanOccurInvalid = 0; + LocalMatchAgainstBooleanOccurShould = 1; + LocalMatchAgainstBooleanOccurMust = 2; + LocalMatchAgainstBooleanOccurMustNot = 3; } -enum FTSBooleanTermType { - FTSBooleanTermInvalid = 0; - FTSBooleanTermWord = 1; - FTSBooleanTermPhrase = 2; - FTSBooleanTermPrefix = 3; +enum LocalMatchAgainstBooleanTermType { + LocalMatchAgainstBooleanTermInvalid = 0; + LocalMatchAgainstBooleanTermWord = 1; + LocalMatchAgainstBooleanTermPhrase = 2; + LocalMatchAgainstBooleanTermPrefix = 3; } -message FTSBooleanTerm { - optional FTSBooleanTermType term_type = 1 [(gogoproto.nullable) = false]; - optional string text = 2 [(gogoproto.nullable) = false]; +enum LocalMatchAgainstParser { + LocalMatchAgainstParserInvalid = 0; + LocalMatchAgainstParserStandard = 1; + LocalMatchAgainstParserNgram = 2; } -message FTSBooleanQuery { - repeated FTSBooleanNode nodes = 1; -// The query carries the analyzer selected by TiDB so TiFlash does not have to -// infer NGRAM semantics from the raw query text. - optional string query_tokenizer = 2 [(gogoproto.nullable) = false]; +enum LocalMatchAgainstStopwordMode { + LocalMatchAgainstStopwordModeInvalid = 0; + LocalMatchAgainstStopwordModeDisabled = 1; + LocalMatchAgainstStopwordModeBuiltin = 2; +} + +message LocalMatchAgainstBooleanQuery { + repeated LocalMatchAgainstBooleanNode nodes = 1; + optional LocalMatchAgainstParser parser = 2 [(gogoproto.nullable) = false]; optional uint32 ngram_token_size = 3 [(gogoproto.nullable) = false]; - // STANDARD_V1 analyzer settings. If both token-size fields are zero, TiFlash - // uses the default STANDARD_V1 analyzer settings. + // STANDARD_V1 analyzer settings. optional uint32 innodb_ft_min_token_size = 4 [(gogoproto.nullable) = false]; optional uint32 innodb_ft_max_token_size = 5 [(gogoproto.nullable) = false]; - optional bool innodb_ft_enable_stopword = 6 [(gogoproto.nullable) = false]; -} - -// Versioned Boolean MATCH metadata stored in Expr.val when Expr.sig is -// FTSMatchBooleanExpression. Expr.val is already the generic scalar-function -// metadata slot, so this avoids adding an FTS-specific field to Expr while -// keeping the SQL arguments in Expr.children unchanged. -message FTSMatchBooleanMetadata { - optional uint32 version = 1 [(gogoproto.nullable) = false]; - optional FTSBooleanQuery boolean_query = 2; + optional LocalMatchAgainstStopwordMode stopword_mode = 6 [(gogoproto.nullable) = false]; + // Stopword lookup uses collation_server, independently of MATCH-column collation. + optional string stopword_collation = 7 [(gogoproto.nullable) = false]; + // This versions Local MATCH wire semantics, including the built-in stopword + // set selected by Builtin. TiFlash must support a version before TiDB emits it; + // unknown versions must be rejected, never interpreted using another version. + optional uint32 version = 8 [(gogoproto.nullable) = false]; } -message FTSBooleanNode { - optional FTSBooleanOccur occur = 1 [(gogoproto.nullable) = false]; - optional FTSBooleanTerm term = 3; +message LocalMatchAgainstBooleanNode { + optional LocalMatchAgainstBooleanOccur occur = 1 [(gogoproto.nullable) = false]; + optional LocalMatchAgainstBooleanTermType term_type = 2 [(gogoproto.nullable) = false]; + optional string text = 3 [(gogoproto.nullable) = false]; } message Expr { From f46c2bcf8ac205db6fc2781537c93ead09f59a3b Mon Sep 17 00:00:00 2001 From: Zhigao TONG Date: Fri, 9 Oct 2026 10:27:51 +0800 Subject: [PATCH 10/12] tipb: use distinct Local MATCH signature ID --- go-tipb/expression.pb.go | 794 +++++++++++++++++++-------------------- proto/expression.proto | 2 +- 2 files changed, 398 insertions(+), 398 deletions(-) diff --git a/go-tipb/expression.pb.go b/go-tipb/expression.pb.go index beedfe96..b585ad9d 100644 --- a/go-tipb/expression.pb.go +++ b/go-tipb/expression.pb.go @@ -627,7 +627,7 @@ const ( ScalarFuncSig_IfVectorFloat32 ScalarFuncSig = 5161 ScalarFuncSig_CaseWhenVectorFloat32 ScalarFuncSig = 5162 // Local MATCH - ScalarFuncSig_LocalMatchAgainstBoolean ScalarFuncSig = 5206 + ScalarFuncSig_LocalMatchAgainstBoolean ScalarFuncSig = 5250 // time ScalarFuncSig_DateFormatSig ScalarFuncSig = 6001 ScalarFuncSig_DateLiteral ScalarFuncSig = 6002 @@ -1264,7 +1264,7 @@ var ScalarFuncSig_name = map[int32]string{ 5160: "IfNullVectorFloat32", 5161: "IfVectorFloat32", 5162: "CaseWhenVectorFloat32", - 5206: "LocalMatchAgainstBoolean", + 5250: "LocalMatchAgainstBoolean", 6001: "DateFormatSig", 6002: "DateLiteral", 6003: "DateDiff", @@ -1898,7 +1898,7 @@ var ScalarFuncSig_value = map[string]int32{ "IfNullVectorFloat32": 5160, "IfVectorFloat32": 5161, "CaseWhenVectorFloat32": 5162, - "LocalMatchAgainstBoolean": 5206, + "LocalMatchAgainstBoolean": 5250, "DateFormatSig": 6001, "DateLiteral": 6002, "DateDiff": 6003, @@ -4329,399 +4329,399 @@ var ( func init() { proto.RegisterFile("expression.proto", fileDescriptorExpression) } var fileDescriptorExpression = []byte{ - // 6299 bytes of a gzipped FileDescriptorProto + // 6300 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x84, 0x7b, 0x79, 0x74, 0x1c, 0xc5, - 0xb5, 0x3e, 0x63, 0xd9, 0xd8, 0x6e, 0x6f, 0x45, 0x63, 0xa3, 0xc1, 0x01, 0x4b, 0xb2, 0x48, 0xa4, - 0x38, 0xbf, 0x9f, 0xc6, 0xc8, 0x44, 0xe2, 0x9c, 0x97, 0xf7, 0xf2, 0x64, 0x6d, 0x4c, 0x9e, 0x24, - 0xcb, 0x9a, 0x91, 0xc8, 0xfb, 0xcb, 0xa7, 0x35, 0x5d, 0x1a, 0x75, 0x3c, 0xd3, 0x3d, 0x74, 0xd7, - 0xd8, 0x12, 0x6f, 0x39, 0xec, 0xfb, 0x9e, 0x00, 0x66, 0x33, 0x5e, 0x59, 0xb3, 0xef, 0xec, 0x6b, - 0x82, 0xcd, 0x92, 0x90, 0xb0, 0xef, 0x60, 0x20, 0xec, 0x09, 0x84, 0x7d, 0x7f, 0xe7, 0x7e, 0x55, - 0xd5, 0xd3, 0x3d, 0x92, 0xcd, 0x5f, 0xea, 0xfa, 0xee, 0xf6, 0xd5, 0xad, 0x5b, 0xd5, 0x55, 0xd5, - 0x23, 0x83, 0xf1, 0x89, 0x92, 0xcf, 0x83, 0xc0, 0xf1, 0xdc, 0x96, 0x92, 0xef, 0x09, 0xcf, 0x9c, - 0x29, 0x9c, 0xd2, 0xe8, 0xd2, 0x85, 0x45, 0x2e, 0x2c, 0xdb, 0x12, 0x96, 0x44, 0x97, 0x2e, 0xce, - 0x7b, 0x79, 0x0f, 0x8f, 0x29, 0x7a, 0x92, 0xe8, 0xf2, 0xb7, 0x12, 0xc6, 0xdc, 0x1e, 0x87, 0x17, - 0xec, 0xec, 0x64, 0x89, 0x9b, 0x8b, 0x8d, 0x19, 0xa2, 0x94, 0x4c, 0xd4, 0x27, 0x9a, 0x67, 0xad, - 0x9e, 0xb9, 0xeb, 0xd9, 0xba, 0xfd, 0x86, 0x66, 0x88, 0x92, 0x99, 0x34, 0x66, 0x8e, 0x15, 0xac, - 0x7c, 0x72, 0x46, 0x7d, 0xa2, 0x79, 0x81, 0xc2, 0x81, 0x48, 0x09, 0x77, 0x93, 0x35, 0x11, 0x0b, - 0x20, 0xe6, 0x32, 0x63, 0xb6, 0xcd, 0x73, 0x4e, 0xd1, 0x2a, 0x24, 0x67, 0x46, 0x84, 0x1a, 0x24, - 0x79, 0xce, 0x2b, 0x14, 0x2c, 0xc1, 0x93, 0xb3, 0xa2, 0x72, 0x05, 0x42, 0x3e, 0x6e, 0xf9, 0x01, - 0x17, 0xc9, 0xfd, 0xeb, 0x13, 0xcd, 0x73, 0x43, 0xb9, 0x04, 0xcd, 0xa5, 0xc6, 0x2c, 0x5e, 0xe0, - 0xc5, 0x20, 0x39, 0xbb, 0xbe, 0x26, 0x94, 0x4a, 0x88, 0x64, 0x96, 0xef, 0x5b, 0x93, 0xc9, 0x39, - 0xf5, 0x89, 0xe6, 0x39, 0x5a, 0x06, 0x68, 0xf9, 0x2b, 0x35, 0xc6, 0xa1, 0x7d, 0x5e, 0xce, 0x2a, - 0xf4, 0x5b, 0x22, 0x37, 0xde, 0x91, 0xb7, 0x1c, 0x37, 0x10, 0xab, 0x3d, 0xaf, 0xc0, 0x2d, 0x77, - 0x6d, 0x99, 0xfb, 0x93, 0xe6, 0x91, 0xc6, 0x2c, 0xd7, 0xb3, 0x79, 0x90, 0x4c, 0xd4, 0xd7, 0x34, - 0xcf, 0x6b, 0x5d, 0xde, 0x42, 0xd9, 0x6c, 0xd9, 0x9b, 0xcd, 0x80, 0x67, 0xf3, 0x21, 0x69, 0x60, - 0xfe, 0x8b, 0xb1, 0x7f, 0x89, 0xd8, 0xf9, 0xc8, 0xd4, 0xc2, 0xd6, 0x43, 0xf7, 0x62, 0x3a, 0x08, - 0x25, 0xc5, 0x4b, 0x99, 0x98, 0x2d, 0x06, 0x73, 0xf3, 0xbe, 0x55, 0x5c, 0x27, 0xbc, 0xf5, 0xdc, - 0x5d, 0x17, 0x38, 0xc7, 0x72, 0xa4, 0x55, 0x27, 0x7c, 0x21, 0xa4, 0x59, 0x12, 0x66, 0x9c, 0x63, - 0xb9, 0xf9, 0x1d, 0x23, 0xe9, 0xb8, 0xae, 0x67, 0x8f, 0xae, 0x1b, 0x13, 0xeb, 0x8a, 0x8e, 0x1b, - 0xb5, 0x9b, 0x19, 0xb1, 0x5b, 0x2c, 0xb5, 0x7a, 0x44, 0xbf, 0xe3, 0xee, 0xcd, 0xda, 0x9a, 0x88, - 0x5a, 0xcf, 0x9a, 0xd6, 0xda, 0x9a, 0xa8, 0x58, 0x0f, 0x18, 0x0b, 0x02, 0xe1, 0x95, 0x36, 0x7a, - 0xbe, 0xbd, 0xae, 0xe8, 0xd9, 0x1c, 0x43, 0xb4, 0xb0, 0xb5, 0x71, 0x2f, 0xfd, 0xcd, 0x28, 0xdd, - 0x7e, 0xcf, 0xe6, 0xca, 0xef, 0xfc, 0x20, 0x82, 0x99, 0xab, 0x0c, 0x33, 0xf4, 0x27, 0x0b, 0xc0, - 0xf1, 0xdc, 0xe4, 0xec, 0xc8, 0xb8, 0x1f, 0xa0, 0xe5, 0x9d, 0x5a, 0x4c, 0x15, 0xb2, 0x81, 0xfb, - 0x54, 0xf6, 0x18, 0x67, 0xcd, 0x58, 0x83, 0xcb, 0xef, 0x4e, 0x18, 0x87, 0xec, 0x6b, 0xd4, 0xcc, - 0xef, 0x1a, 0xb3, 0xbc, 0x5c, 0xae, 0xec, 0xa3, 0xde, 0xf7, 0xce, 0x5e, 0x99, 0xac, 0x21, 0x55, - 0x5d, 0x4b, 0xb0, 0x33, 0xd3, 0xc6, 0x5c, 0xc1, 0xfd, 0xe2, 0x3a, 0x31, 0x59, 0xe2, 0x6a, 0xc8, - 0xbf, 0xb1, 0x6f, 0x27, 0x59, 0xee, 0x17, 0x69, 0xa2, 0x29, 0x3f, 0x73, 0x84, 0x6a, 0xd3, 0x44, - 0x12, 0x7c, 0x42, 0x60, 0xc4, 0x75, 0x9f, 0x81, 0x2c, 0x7f, 0x7b, 0x86, 0x31, 0xb3, 0x7b, 0xa2, - 0xe4, 0x9b, 0x87, 0x85, 0x73, 0x73, 0x61, 0xeb, 0x42, 0x19, 0x86, 0xf0, 0x88, 0x3b, 0x9a, 0xab, - 0xcc, 0xa8, 0xd9, 0x60, 0x15, 0xc0, 0x66, 0xfe, 0x10, 0x3d, 0x9a, 0xdf, 0x30, 0xe6, 0xe4, 0xc6, - 0x9d, 0x82, 0xed, 0x63, 0x9e, 0x52, 0x49, 0x1b, 0x15, 0xeb, 0xa1, 0x50, 0x66, 0x7e, 0xcb, 0xa8, - 0x09, 0x9c, 0x3c, 0x6a, 0x67, 0x61, 0xeb, 0x81, 0x52, 0x25, 0x93, 0xb3, 0x0a, 0x96, 0xdf, 0x53, - 0x76, 0x73, 0x19, 0x27, 0xaf, 0xa2, 0x90, 0x96, 0xd9, 0x62, 0x18, 0x63, 0xb4, 0x6a, 0xc8, 0xbe, - 0x53, 0xc5, 0xcc, 0x6b, 0x5d, 0x24, 0x6d, 0xc2, 0xd5, 0x64, 0x68, 0xee, 0x58, 0xb8, 0xb0, 0xd4, - 0x1b, 0xf3, 0xfd, 0x92, 0xbb, 0xce, 0xf2, 0xf3, 0xc1, 0x3a, 0x5a, 0x30, 0xa8, 0x60, 0x16, 0x0c, - 0x19, 0x7e, 0xc9, 0xed, 0xf0, 0xf3, 0x41, 0x1f, 0x77, 0xcd, 0x26, 0x63, 0xfe, 0xb8, 0x15, 0xac, - 0xb3, 0x9d, 0x40, 0x38, 0x6e, 0x4e, 0x60, 0xf4, 0xf5, 0xdc, 0x9d, 0x37, 0x6e, 0x05, 0x5d, 0x4a, - 0x60, 0x36, 0x19, 0x73, 0x3c, 0xdf, 0xe6, 0xfe, 0xba, 0x51, 0x9a, 0xe0, 0xd4, 0x9f, 0xf9, 0x32, - 0xf0, 0xea, 0xc9, 0xb4, 0xe0, 0xc5, 0xa1, 0xd9, 0x90, 0xae, 0x9e, 0x34, 0xdb, 0x8d, 0x79, 0x56, - 0x3e, 0x4f, 0xe4, 0xa9, 0xc8, 0x92, 0x73, 0xd1, 0xb1, 0x25, 0x52, 0xb7, 0x43, 0x0a, 0xa8, 0x90, - 0x48, 0x38, 0x14, 0xd5, 0x5c, 0xfe, 0x2d, 0x63, 0xf6, 0x50, 0xc9, 0x45, 0xd2, 0xeb, 0x8d, 0x59, - 0xb4, 0xbc, 0xea, 0xc5, 0x20, 0x9a, 0x39, 0x29, 0x58, 0x5e, 0x30, 0xf6, 0x97, 0x81, 0xcd, 0x65, - 0xc6, 0x4c, 0x82, 0x30, 0x44, 0x71, 0x55, 0xe0, 0x34, 0xc6, 0x36, 0x0f, 0x72, 0x18, 0x1b, 0xdd, - 0x33, 0x20, 0x66, 0xb3, 0x31, 0x87, 0xb2, 0x03, 0xeb, 0x1a, 0x58, 0x2f, 0x90, 0xd6, 0x8a, 0xc6, - 0xd0, 0x6c, 0x5f, 0x3e, 0xac, 0x78, 0x69, 0x96, 0x31, 0x47, 0x8f, 0xba, 0x39, 0xc7, 0x98, 0x39, - 0x50, 0x2e, 0x14, 0xd8, 0x7e, 0xe6, 0x5c, 0x63, 0x56, 0xda, 0x15, 0x6d, 0x47, 0xb0, 0x84, 0x69, - 0x18, 0xfb, 0x0f, 0x3b, 0x78, 0x9e, 0x61, 0xce, 0x33, 0x66, 0xf7, 0x14, 0x3c, 0x4b, 0xac, 0x6a, - 0x65, 0x35, 0x61, 0xa3, 0xed, 0x08, 0x36, 0x93, 0xb4, 0x32, 0xc2, 0x77, 0xdc, 0x3c, 0x9b, 0x45, - 0xc6, 0xab, 0x27, 0x05, 0x0f, 0xd8, 0xfe, 0xe6, 0x7c, 0x63, 0x4e, 0xff, 0x64, 0x70, 0x4c, 0x61, - 0xb5, 0x23, 0x18, 0x37, 0x99, 0x31, 0x1f, 0xad, 0x2e, 0xb9, 0x66, 0xb3, 0x31, 0xf3, 0x00, 0x63, - 0x81, 0x44, 0xca, 0x3e, 0x26, 0x21, 0xcb, 0x9b, 0x0b, 0x8c, 0xb9, 0x80, 0xba, 0xdd, 0x72, 0x91, - 0x8d, 0x87, 0x1e, 0x8e, 0xe2, 0x13, 0xcc, 0x09, 0x5b, 0x19, 0x2e, 0xd8, 0x0f, 0x42, 0xd5, 0xac, - 0x53, 0xe4, 0x6c, 0x7d, 0xd8, 0xfc, 0x5e, 0xe0, 0xb9, 0xac, 0x60, 0x2e, 0x31, 0x0e, 0xc8, 0x3a, - 0x5d, 0xab, 0x47, 0x78, 0x4e, 0x78, 0xbe, 0xa6, 0x3d, 0x69, 0x2e, 0x34, 0xe6, 0x8e, 0x58, 0x85, - 0x32, 0xef, 0x73, 0x02, 0xc1, 0x2e, 0x4e, 0x50, 0xbb, 0xd3, 0x2b, 0x94, 0x8b, 0xee, 0x10, 0x1f, - 0x63, 0xbb, 0xa9, 0xbf, 0xb3, 0x3a, 0xbd, 0xb2, 0x2b, 0xd8, 0x0d, 0xb5, 0xe6, 0x1c, 0xa3, 0x26, - 0x53, 0x2e, 0xb2, 0x1b, 0xf1, 0xd4, 0xb1, 0x21, 0xcf, 0x6e, 0xc2, 0x53, 0xbf, 0xe3, 0xb2, 0x9b, - 0xe5, 0x93, 0x35, 0xc1, 0x6e, 0xa9, 0x25, 0x9b, 0x1e, 0xc7, 0x0f, 0x04, 0xbb, 0xb5, 0xd6, 0x64, - 0xc6, 0xbc, 0x5e, 0xdf, 0x2b, 0x97, 0x3a, 0x3d, 0x37, 0x67, 0x09, 0x76, 0x5b, 0xad, 0xb9, 0xc8, - 0x30, 0x3a, 0xf2, 0xf9, 0x75, 0xab, 0x1d, 0xd1, 0xe1, 0xda, 0xec, 0xf6, 0x5a, 0x0a, 0xa9, 0x80, - 0x35, 0x3e, 0xbb, 0x23, 0xaa, 0xf0, 0x7d, 0xcf, 0x67, 0x77, 0xca, 0xb8, 0xc2, 0x66, 0x77, 0xd5, - 0x9a, 0xf3, 0x28, 0xaf, 0xb6, 0xcd, 0x37, 0xb0, 0xbb, 0x61, 0x27, 0x1b, 0x83, 0x5e, 0x89, 0xfd, - 0x01, 0x76, 0xb2, 0x9d, 0xb1, 0x8a, 0x25, 0xf6, 0x47, 0x68, 0x8f, 0x58, 0x3e, 0x49, 0xef, 0xa9, - 0x35, 0xe7, 0x1b, 0xb3, 0x47, 0x2c, 0x1f, 0xa2, 0x5d, 0xb5, 0xe6, 0x02, 0x63, 0xce, 0x88, 0xe5, - 0x3b, 0x96, 0x9b, 0xe3, 0x6c, 0x77, 0xad, 0x79, 0x80, 0x31, 0x9f, 0xd2, 0xd4, 0x41, 0xef, 0xb0, - 0x8e, 0x7c, 0x9e, 0xdd, 0x5b, 0x6b, 0x9a, 0xc6, 0x02, 0x82, 0xd6, 0x8c, 0xfe, 0x80, 0xe7, 0x04, - 0x61, 0xf7, 0xd5, 0x9a, 0x49, 0xe3, 0xc0, 0x8e, 0x52, 0xc9, 0xf7, 0x26, 0x90, 0x12, 0x3d, 0x65, - 0xd8, 0xfd, 0xe0, 0x32, 0xe4, 0x6d, 0x1c, 0x28, 0x17, 0x47, 0xb9, 0xcf, 0xb6, 0xd6, 0x99, 0x73, - 0x8d, 0x99, 0x43, 0x96, 0xbb, 0x9e, 0x6d, 0xab, 0x23, 0x51, 0x17, 0x77, 0x03, 0x8e, 0xf6, 0xf6, - 0x3a, 0x0a, 0xdd, 0x59, 0x2e, 0x72, 0xb2, 0x66, 0x3b, 0xea, 0x28, 0x41, 0x83, 0xdc, 0xcf, 0x71, - 0x57, 0x40, 0x61, 0x67, 0x1d, 0xa5, 0x6f, 0x40, 0x38, 0x05, 0xce, 0xae, 0x82, 0x9f, 0x3e, 0x6e, - 0xd9, 0xec, 0xea, 0x3a, 0xca, 0x42, 0x9f, 0x95, 0x67, 0xd7, 0xd4, 0x51, 0x47, 0x91, 0x5f, 0x0c, - 0x1c, 0xbb, 0x16, 0x21, 0xfa, 0x2c, 0xdd, 0xbe, 0x0e, 0x21, 0x06, 0xc4, 0xb8, 0x6c, 0x5e, 0x0f, - 0xfd, 0xca, 0x4a, 0xc3, 0xce, 0x1b, 0x58, 0xf1, 0xab, 0x51, 0x63, 0x41, 0x6c, 0xed, 0x31, 0x17, - 0x19, 0xf3, 0x86, 0xdd, 0xa0, 0xc4, 0x73, 0xce, 0x98, 0xc3, 0x6d, 0xb6, 0x1f, 0x15, 0x67, 0xa7, - 0x15, 0x88, 0xb4, 0x2b, 0x3a, 0x82, 0xb4, 0x2b, 0x58, 0x82, 0x8a, 0x33, 0x44, 0x86, 0xb8, 0x55, - 0x60, 0x33, 0xcc, 0x03, 0x8d, 0x45, 0x21, 0xa4, 0xea, 0xbd, 0xc6, 0x5c, 0x6c, 0xb0, 0x10, 0xd4, - 0xa5, 0x3d, 0x33, 0x66, 0x8d, 0x02, 0x9d, 0x45, 0x15, 0x59, 0x51, 0xd4, 0x15, 0xbf, 0x7f, 0x4c, - 0x13, 0xb5, 0x3b, 0x5b, 0x43, 0x14, 0x55, 0xb2, 0x31, 0x4c, 0xd3, 0x58, 0x58, 0x81, 0x40, 0x67, - 0x9e, 0x8e, 0x2c, 0x31, 0xc5, 0x67, 0xbe, 0x0e, 0x23, 0x51, 0x4d, 0x68, 0x41, 0xdc, 0x01, 0x18, - 0x2d, 0x34, 0x0f, 0x32, 0xcc, 0x88, 0xaa, 0xa6, 0xb4, 0x28, 0xae, 0x0b, 0x4e, 0x4c, 0x07, 0x53, - 0x0e, 0x25, 0xad, 0xc5, 0x3a, 0x58, 0x88, 0x82, 0xd9, 0x12, 0xb3, 0xd6, 0x38, 0x30, 0x06, 0x2b, - 0x72, 0x07, 0x99, 0x49, 0x63, 0x71, 0x4c, 0xa0, 0xf9, 0xd5, 0x4e, 0xf1, 0x04, 0x8a, 0x49, 0xf3, - 0x60, 0x63, 0x49, 0xdc, 0x40, 0xb3, 0x3c, 0x78, 0x8a, 0x05, 0x88, 0x2e, 0xd5, 0x83, 0x24, 0x43, - 0x4a, 0x9e, 0xcb, 0x34, 0x7b, 0x0d, 0x82, 0x66, 0x9d, 0xee, 0xbf, 0x46, 0x15, 0xcb, 0x7a, 0x4d, - 0x5f, 0xe3, 0x9a, 0x64, 0x43, 0xb5, 0x1b, 0x70, 0x5c, 0xae, 0x3b, 0x15, 0xaa, 0x6b, 0x8a, 0x8d, - 0xd5, 0xfa, 0x60, 0x78, 0x98, 0x1e, 0x5e, 0xb2, 0x96, 0xfc, 0x9a, 0x75, 0xc6, 0x25, 0x04, 0x76, - 0xdf, 0xd4, 0xc6, 0x12, 0x53, 0xdc, 0x56, 0xe8, 0x5e, 0x4b, 0x54, 0x33, 0xfb, 0x56, 0xdc, 0x01, - 0x78, 0xfd, 0x3f, 0xdd, 0x3d, 0xa5, 0xaa, 0x59, 0xfd, 0xff, 0xb8, 0x2e, 0x38, 0xb5, 0x84, 0xc9, - 0x54, 0x5a, 0x92, 0x57, 0xab, 0x76, 0x51, 0x81, 0xc1, 0x6d, 0x55, 0x38, 0x8e, 0x21, 0xae, 0xf8, - 0x1d, 0x11, 0x0e, 0x58, 0x28, 0xd1, 0x1c, 0xbf, 0x3d, 0xd5, 0x19, 0x78, 0xb6, 0x99, 0x4b, 0x8d, - 0x83, 0xaa, 0x4c, 0x34, 0xd7, 0xf6, 0xa9, 0x36, 0xe0, 0x7b, 0xa4, 0xce, 0x21, 0x56, 0x31, 0x70, - 0xfd, 0x8e, 0xee, 0x96, 0x84, 0xc0, 0xf3, 0x5f, 0x75, 0x0e, 0x25, 0xa6, 0x38, 0xfe, 0x9b, 0xee, - 0xac, 0x44, 0x35, 0xbf, 0xef, 0xc6, 0x1d, 0x80, 0xdb, 0xbf, 0xeb, 0xf8, 0x4a, 0x55, 0xf3, 0xea, - 0x88, 0xeb, 0x82, 0xd3, 0x6a, 0x5a, 0xda, 0x3a, 0x3d, 0xab, 0xc0, 0x83, 0x1c, 0x27, 0x46, 0xaf, - 0xd5, 0xd3, 0x3a, 0xab, 0x11, 0x10, 0x7a, 0xbd, 0xde, 0x5c, 0x6c, 0x2c, 0xd2, 0x90, 0x8e, 0xfc, - 0x46, 0xbd, 0x79, 0xa0, 0xb1, 0x50, 0xa3, 0x8a, 0xe5, 0x9b, 0x31, 0x6b, 0xb0, 0x79, 0xab, 0xde, - 0x5c, 0x62, 0xb0, 0xd0, 0x5a, 0x93, 0xf9, 0x7b, 0x4c, 0x13, 0x5c, 0xfe, 0x51, 0x4f, 0xaf, 0xe1, - 0xbe, 0x2c, 0xd1, 0xb0, 0xe9, 0xed, 0xdc, 0x97, 0x45, 0x7c, 0x4e, 0x6f, 0xc9, 0xbe, 0x6c, 0xe5, - 0x0d, 0x3c, 0xdf, 0x98, 0xd3, 0x97, 0x55, 0x11, 0xf3, 0x52, 0x11, 0xa1, 0xc6, 0xcd, 0x85, 0x86, - 0xd1, 0x97, 0x0d, 0x63, 0x38, 0x52, 0x06, 0xe7, 0x3f, 0x80, 0xef, 0x6e, 0xf2, 0xed, 0x02, 0xee, - 0x86, 0x6f, 0x0f, 0xbe, 0xbb, 0xb5, 0xef, 0x12, 0x7c, 0x77, 0x2b, 0xdf, 0xc7, 0x48, 0x45, 0xf8, - 0xf6, 0xe1, 0xbb, 0x3b, 0xf4, 0x1d, 0x48, 0x19, 0x7c, 0x0b, 0xf2, 0xdd, 0x0b, 0xde, 0x13, 0x04, - 0xf7, 0x4a, 0xde, 0x93, 0xe4, 0xbb, 0x37, 0xe4, 0x7d, 0x2c, 0xf9, 0xee, 0xd5, 0xbc, 0xff, 0x4b, - 0x2a, 0xc2, 0xf7, 0x7f, 0x93, 0xef, 0xde, 0x0a, 0xef, 0xff, 0x91, 0x32, 0xf8, 0xfe, 0x5f, 0xf9, - 0x72, 0xe6, 0x96, 0xe0, 0x58, 0x6e, 0xd9, 0x87, 0x48, 0x9c, 0x46, 0x10, 0xe8, 0x23, 0x0c, 0x90, - 0x86, 0x74, 0xbc, 0x8f, 0x31, 0x40, 0x1a, 0x55, 0x61, 0x3f, 0x89, 0x59, 0x23, 0xfa, 0xa7, 0xf5, - 0xf4, 0x2a, 0xea, 0xe3, 0x72, 0x39, 0x67, 0x9f, 0xd5, 0xe3, 0x4d, 0xc5, 0xd5, 0x52, 0xca, 0x3e, - 0x87, 0x05, 0xda, 0xda, 0xf3, 0x17, 0xf5, 0x44, 0x0a, 0x90, 0x72, 0xfb, 0x65, 0xc5, 0x08, 0x3e, - 0x8f, 0x6b, 0x20, 0x8d, 0xb4, 0x2b, 0xb8, 0xbf, 0xc1, 0x2a, 0x90, 0xdb, 0xe3, 0x1b, 0xc8, 0x8d, - 0x46, 0xe0, 0xf9, 0x84, 0x06, 0x7a, 0x8b, 0xf6, 0x62, 0x4c, 0x4e, 0x48, 0xd0, 0x46, 0xa0, 0x57, - 0x0e, 0xca, 0x89, 0xd8, 0xe1, 0xf4, 0x86, 0xa3, 0x72, 0x52, 0x82, 0x18, 0xf6, 0xea, 0x61, 0x39, - 0x59, 0xe9, 0x22, 0xd2, 0x29, 0x09, 0x7a, 0x73, 0xf6, 0x56, 0x06, 0xe6, 0x54, 0x25, 0x45, 0xf6, - 0x4e, 0xc3, 0xde, 0xa8, 0x7b, 0x2d, 0x85, 0x38, 0x0b, 0x82, 0xee, 0xb5, 0x08, 0x71, 0x36, 0x42, - 0x74, 0xaf, 0xd5, 0x21, 0xce, 0x41, 0x88, 0xee, 0xb5, 0x2a, 0xc4, 0xb9, 0x4a, 0x17, 0x21, 0xce, - 0x43, 0x88, 0xee, 0xb5, 0x61, 0x88, 0xf3, 0x95, 0x14, 0x21, 0x2e, 0x40, 0x88, 0x01, 0xf4, 0xe2, - 0x22, 0x08, 0x06, 0x64, 0x2f, 0xe4, 0x3e, 0x6d, 0x20, 0xec, 0xc5, 0x26, 0x84, 0x18, 0xd0, 0xbd, - 0xb8, 0x44, 0xe9, 0x22, 0xc4, 0xa5, 0x08, 0x31, 0x50, 0xe9, 0xc5, 0x65, 0x4a, 0x8a, 0x10, 0x97, - 0x4b, 0x4f, 0xe5, 0x42, 0x41, 0xf6, 0x64, 0x8b, 0xd4, 0x46, 0x1b, 0xa1, 0xb6, 0x26, 0x68, 0x27, - 0x24, 0x01, 0x1d, 0x6e, 0x1b, 0x6d, 0x06, 0xe6, 0x4b, 0x4c, 0x85, 0xdc, 0x1e, 0xb1, 0x43, 0xd8, - 0x1d, 0x09, 0x2a, 0x11, 0x65, 0xa7, 0x43, 0xef, 0x8c, 0x68, 0x21, 0xfc, 0x55, 0x20, 0x3e, 0x58, - 0x28, 0xcb, 0xf5, 0x69, 0x57, 0x02, 0xdb, 0xa1, 0x42, 0x39, 0x5c, 0x84, 0x76, 0x27, 0x68, 0xe3, - 0x46, 0x08, 0xb1, 0xbb, 0x0f, 0x6c, 0xfb, 0x1d, 0x57, 0xe9, 0xdf, 0x0f, 0x22, 0x68, 0x6b, 0x83, - 0x07, 0xe0, 0x11, 0x10, 0x59, 0xfc, 0x59, 0x6a, 0x94, 0x0b, 0xc2, 0x29, 0x15, 0x26, 0x61, 0xf4, - 0x60, 0x82, 0x4a, 0x5a, 0x43, 0xda, 0xee, 0x2f, 0x08, 0xad, 0x51, 0x32, 0xfd, 0x2b, 0xc8, 0x76, - 0x39, 0x1b, 0x1c, 0x5b, 0x2e, 0x56, 0x0f, 0x21, 0x15, 0x12, 0xd0, 0x66, 0x0f, 0x27, 0x54, 0xed, - 0x49, 0x98, 0xec, 0x1e, 0x49, 0xd0, 0xaa, 0x14, 0x42, 0x5a, 0xf3, 0x51, 0xf4, 0xa4, 0xdf, 0xb3, - 0xe1, 0xeb, 0x31, 0x38, 0xef, 0xf7, 0x6c, 0x2d, 0x7e, 0x1c, 0xa3, 0xd2, 0xef, 0xd9, 0xe4, 0xe2, - 0x89, 0x04, 0x6d, 0x35, 0x23, 0x64, 0x86, 0xdd, 0xc0, 0xc9, 0xbb, 0xdc, 0x66, 0x4f, 0x26, 0xcc, - 0x43, 0x8c, 0x5a, 0x95, 0x0f, 0x8d, 0x86, 0xd2, 0xa7, 0x12, 0xe6, 0x52, 0x63, 0x49, 0x95, 0x34, - 0x23, 0x65, 0x4f, 0x47, 0x65, 0x99, 0xb8, 0xdd, 0x33, 0x88, 0x17, 0x93, 0x29, 0xab, 0x67, 0x13, - 0xe6, 0xd7, 0x8c, 0x83, 0x24, 0xad, 0x29, 0xe1, 0x9e, 0x4b, 0x98, 0x07, 0x1b, 0x8b, 0xe3, 0x42, - 0x65, 0xf7, 0x7c, 0x44, 0x54, 0x15, 0xec, 0x85, 0x84, 0x59, 0x6b, 0x98, 0x51, 0x91, 0xb2, 0xd9, - 0x93, 0x30, 0x0f, 0x35, 0x92, 0x7a, 0xe8, 0xa6, 0x44, 0x7b, 0x51, 0x52, 0xa9, 0x12, 0x2b, 0xdb, - 0x97, 0x62, 0xc2, 0xaa, 0x88, 0x2f, 0x4b, 0x32, 0x31, 0xa1, 0xb2, 0xfb, 0x5b, 0xc2, 0x6c, 0x34, - 0x96, 0x69, 0x51, 0x8f, 0xe7, 0xe7, 0x2a, 0x76, 0xa1, 0xfd, 0x2b, 0x09, 0xb3, 0xc1, 0x38, 0x64, - 0x7a, 0x25, 0xe5, 0xe7, 0xd5, 0x69, 0x54, 0xaa, 0x58, 0xbc, 0x06, 0x95, 0x68, 0xa9, 0x4c, 0x09, - 0xf4, 0x7a, 0xc2, 0xac, 0x33, 0x96, 0x4e, 0xa7, 0xa2, 0xc2, 0xbc, 0x81, 0x14, 0x45, 0x15, 0x62, - 0xbd, 0x79, 0x73, 0x8a, 0x7d, 0x15, 0x87, 0xb7, 0x50, 0x65, 0x1d, 0xa3, 0x98, 0x1b, 0xbf, 0x61, - 0x54, 0x91, 0x1d, 0xa3, 0xc1, 0x30, 0xb5, 0x7e, 0xab, 0x5b, 0xa8, 0xcf, 0xdf, 0x31, 0x1c, 0xc3, - 0x46, 0xc3, 0x79, 0xf5, 0x7b, 0x86, 0x97, 0x2a, 0x77, 0x68, 0xc9, 0xcd, 0x7a, 0x5d, 0x3c, 0xc7, - 0x6e, 0x88, 0x43, 0xe4, 0xe4, 0xc6, 0x10, 0xea, 0xe2, 0x39, 0x09, 0xdd, 0x14, 0x87, 0xc8, 0xf0, - 0x66, 0x86, 0x43, 0x10, 0x77, 0xe4, 0x62, 0x7d, 0x0b, 0xa3, 0x79, 0xd5, 0x53, 0xf0, 0x3c, 0x3f, - 0xf4, 0x7d, 0x6b, 0x15, 0x46, 0x9e, 0x6e, 0xab, 0x60, 0xa1, 0xf7, 0xdb, 0xab, 0x30, 0xb2, 0xbd, - 0x83, 0xd1, 0x2a, 0x01, 0x0c, 0xfe, 0xef, 0x64, 0xf2, 0x78, 0x56, 0x76, 0xe5, 0xdc, 0xdb, 0x8d, - 0xf0, 0x68, 0x93, 0x8b, 0x7b, 0x2b, 0x4d, 0xb2, 0xbe, 0x8f, 0x99, 0x07, 0x19, 0x07, 0xa0, 0x79, - 0xb4, 0x23, 0xc6, 0x7b, 0x7c, 0x2b, 0x27, 0xd7, 0x1a, 0x46, 0xd3, 0x3a, 0x86, 0x93, 0xf5, 0x03, - 0x53, 0x61, 0xf2, 0xf2, 0x27, 0x64, 0xb3, 0xcf, 0xcb, 0x1f, 0xde, 0xe1, 0xe7, 0xd9, 0x43, 0x08, - 0xd1, 0xe7, 0xe5, 0x5b, 0x3b, 0xfc, 0x7c, 0xc0, 0x1e, 0x66, 0x38, 0xd7, 0x79, 0xf9, 0x56, 0xf6, - 0x08, 0xa3, 0x25, 0x9e, 0xf4, 0x56, 0xb2, 0x47, 0x99, 0x3a, 0x36, 0xda, 0xec, 0x31, 0x46, 0x15, - 0x4b, 0x8f, 0xe4, 0x34, 0xc3, 0xb9, 0x8d, 0x03, 0x5f, 0x2f, 0x77, 0xd9, 0xe3, 0x8c, 0x4e, 0x82, - 0x83, 0xde, 0x46, 0xf6, 0x04, 0xf4, 0x3b, 0x3d, 0x77, 0x03, 0x7b, 0x12, 0x6e, 0x3a, 0x87, 0x3a, - 0x57, 0xb5, 0xb2, 0xa7, 0x00, 0xd3, 0xc0, 0xb3, 0xa7, 0xe5, 0xe3, 0x31, 0xbe, 0x60, 0xcf, 0xe0, - 0xb1, 0x23, 0xe7, 0x05, 0xec, 0x59, 0xf9, 0x18, 0x38, 0x2e, 0x7b, 0x0e, 0xc4, 0x3a, 0x84, 0xe5, - 0x82, 0xe7, 0xf3, 0xc8, 0x14, 0x35, 0x25, 0xd1, 0x17, 0x10, 0xab, 0xd3, 0x0b, 0xd8, 0x1e, 0xf5, - 0x24, 0xd8, 0x8b, 0xe8, 0x59, 0x17, 0xcf, 0xfb, 0x9c, 0x07, 0xec, 0x25, 0xe0, 0xdd, 0x13, 0x25, - 0xf6, 0x32, 0x33, 0x67, 0x1b, 0x33, 0x06, 0xd3, 0xec, 0x6f, 0x50, 0x18, 0xb2, 0x6c, 0xc7, 0x72, - 0x03, 0xf6, 0x0a, 0x14, 0x32, 0x8e, 0xcb, 0x5e, 0xc5, 0x53, 0xd6, 0x72, 0xd9, 0x6b, 0x8c, 0xd6, - 0xda, 0xac, 0x5f, 0x76, 0x73, 0x96, 0xc0, 0x9a, 0xf9, 0x3a, 0x8a, 0x44, 0x23, 0xc8, 0xf7, 0x1b, - 0x74, 0xc4, 0x5a, 0xa4, 0x21, 0x5d, 0x86, 0x6f, 0xc6, 0x14, 0x87, 0x1d, 0x57, 0xb0, 0xb7, 0x50, - 0xaa, 0x7d, 0x5e, 0xde, 0xc9, 0x59, 0x85, 0x0e, 0xd7, 0x66, 0x57, 0x24, 0xb1, 0x63, 0x90, 0xc0, - 0x1a, 0x9f, 0x6d, 0x4e, 0x46, 0x14, 0xbe, 0xef, 0xf9, 0xec, 0xca, 0x24, 0xc5, 0x1f, 0x76, 0x2d, - 0x7f, 0x72, 0xc0, 0xc3, 0xce, 0x64, 0x4b, 0x92, 0x82, 0x69, 0x44, 0x07, 0xdb, 0x9a, 0xa4, 0x60, - 0x1a, 0x05, 0xab, 0x6d, 0x31, 0xe8, 0x7b, 0x99, 0x35, 0x03, 0x6c, 0x7b, 0x92, 0x4a, 0x10, 0x50, - 0xf8, 0xda, 0xd9, 0x91, 0xa4, 0xb7, 0x5f, 0x05, 0x83, 0xed, 0xce, 0x24, 0x55, 0x56, 0x05, 0xd4, - 0x61, 0xae, 0x82, 0x03, 0xd5, 0x4a, 0x07, 0xb8, 0x73, 0xba, 0x1a, 0x0e, 0xf4, 0x8b, 0x53, 0x81, - 0xd7, 0xa0, 0x23, 0xe4, 0x4b, 0x01, 0xd7, 0x82, 0x8d, 0x7c, 0x05, 0x2b, 0xe8, 0x3a, 0xe8, 0xd0, - 0x2b, 0x58, 0x01, 0xd7, 0x23, 0x1b, 0x69, 0x57, 0xa8, 0xf6, 0x8f, 0xa1, 0x40, 0x6f, 0x5f, 0x05, - 0xfc, 0x04, 0x0a, 0xf2, 0x3a, 0x26, 0xe3, 0xe4, 0xd9, 0x4f, 0x93, 0x54, 0x13, 0xb8, 0x8d, 0xa1, - 0xe6, 0xcf, 0xb4, 0xf8, 0xfb, 0x1e, 0xda, 0x3f, 0xd7, 0xed, 0x01, 0x9e, 0xa7, 0xf6, 0x2f, 0x2a, - 0xfe, 0xb3, 0x7e, 0x99, 0xb3, 0x5f, 0x46, 0x48, 0x02, 0xf8, 0x55, 0xbc, 0x7b, 0xc0, 0x7e, 0x0d, - 0x25, 0x18, 0xf5, 0x58, 0x85, 0x80, 0xb3, 0xdf, 0x60, 0x48, 0xa4, 0x95, 0x44, 0x7e, 0x2b, 0x33, - 0xa0, 0xcd, 0x24, 0xf8, 0x3b, 0x39, 0xb4, 0x7c, 0x4c, 0x64, 0xc6, 0x9d, 0x31, 0xc1, 0x6e, 0x90, - 0xc1, 0x9c, 0xfc, 0xb8, 0x02, 0x6e, 0x44, 0x8e, 0x43, 0x36, 0x34, 0x7b, 0xd0, 0xc9, 0x3f, 0x26, - 0xe9, 0xa5, 0x53, 0x61, 0x15, 0x0a, 0xee, 0x49, 0xd2, 0x6b, 0x31, 0xc6, 0x2e, 0x94, 0xed, 0x82, - 0x51, 0x85, 0x65, 0x28, 0xd8, 0x9d, 0xa4, 0xf7, 0x65, 0x84, 0x6d, 0x28, 0xb9, 0x37, 0x49, 0xef, - 0xa1, 0x38, 0xeb, 0x50, 0x78, 0x9f, 0xce, 0xac, 0xbc, 0x51, 0xfb, 0x3d, 0x7a, 0xd8, 0xcb, 0xc5, - 0xa0, 0xe5, 0x5b, 0x45, 0xb5, 0x91, 0xba, 0x29, 0x89, 0x3d, 0x26, 0x17, 0x23, 0x96, 0xcf, 0x6e, - 0x46, 0x63, 0xc8, 0xdb, 0x48, 0x89, 0xbe, 0x05, 0x8d, 0x8c, 0x94, 0xdc, 0x8a, 0xa4, 0xe2, 0x86, - 0x27, 0xac, 0xa3, 0xdb, 0xe0, 0x4f, 0x61, 0x7a, 0xcb, 0x75, 0x7b, 0x32, 0xbc, 0xe2, 0x43, 0x65, - 0xde, 0x81, 0x8c, 0xc9, 0x36, 0xca, 0xf7, 0xce, 0x08, 0x80, 0x32, 0xbd, 0x0b, 0x45, 0x25, 0x01, - 0x45, 0xea, 0xee, 0x88, 0x0e, 0x76, 0x77, 0x7f, 0x48, 0xd2, 0x7a, 0x93, 0x76, 0xc9, 0xe3, 0xd6, - 0x3a, 0xe2, 0x95, 0x76, 0xe5, 0xfc, 0xa8, 0x93, 0xd5, 0xa0, 0x39, 0xc9, 0xfb, 0xae, 0xb4, 0xab, - 0x1c, 0xed, 0x50, 0xba, 0x70, 0xb2, 0xb3, 0x4e, 0x16, 0x41, 0xc8, 0xf5, 0x2a, 0x25, 0xc5, 0xd6, - 0xf0, 0x6a, 0xe9, 0x69, 0x8c, 0x32, 0x47, 0x61, 0x4e, 0xae, 0x87, 0x36, 0xda, 0x08, 0x75, 0x4a, - 0x3d, 0xa5, 0x40, 0x02, 0x3a, 0xdc, 0xa9, 0x38, 0x51, 0x48, 0x4c, 0x85, 0x3c, 0x2d, 0x62, 0x87, - 0xb0, 0xa7, 0xe3, 0xf0, 0xa2, 0xec, 0x74, 0xe8, 0x33, 0xea, 0xd1, 0xa1, 0x31, 0x8a, 0x74, 0x66, - 0x3d, 0x68, 0x8c, 0x21, 0xca, 0x59, 0xf5, 0x92, 0x86, 0x8e, 0x70, 0x36, 0x8e, 0x34, 0xe9, 0x31, - 0xe5, 0xfd, 0x1c, 0xa5, 0x0b, 0xcf, 0xe7, 0xaa, 0x50, 0xa1, 0xd7, 0xf3, 0x22, 0xb1, 0xd1, 0xa9, - 0xf3, 0x95, 0xba, 0xdc, 0xde, 0xe3, 0xac, 0xd3, 0x69, 0x05, 0xfc, 0xe8, 0x71, 0x8e, 0x54, 0xbe, - 0x2d, 0x4f, 0xae, 0x0a, 0x41, 0xfc, 0x77, 0xe4, 0x09, 0x59, 0x41, 0x9a, 0xc5, 0x3f, 0xe5, 0x09, - 0x59, 0xa1, 0x8a, 0xcb, 0xbb, 0x31, 0x6b, 0x30, 0x7a, 0x4f, 0x9e, 0x90, 0xb5, 0xb5, 0xe6, 0xf5, - 0x7e, 0x4c, 0x13, 0x64, 0x3e, 0x00, 0xd5, 0x0e, 0x54, 0x93, 0x3f, 0x59, 0x12, 0xec, 0xc2, 0x46, - 0x05, 0x74, 0xbb, 0x12, 0xb8, 0xa8, 0x11, 0x6f, 0x6d, 0xaf, 0x88, 0xcf, 0xa1, 0xec, 0xe2, 0x46, - 0xdc, 0xf8, 0x76, 0x7d, 0x9b, 0x6d, 0x82, 0x60, 0xd0, 0x0a, 0x82, 0x8d, 0x9e, 0x6f, 0xb3, 0x4b, - 0x1a, 0x31, 0x95, 0x2d, 0xd7, 0xf6, 0x8a, 0xf2, 0xe2, 0xfb, 0xd2, 0x46, 0xbc, 0x86, 0x8e, 0xea, - 0x38, 0x9c, 0x5d, 0xa6, 0x1f, 0x5b, 0xd9, 0xe5, 0x08, 0x30, 0xec, 0xe6, 0xb4, 0xc7, 0x2b, 0x1a, - 0x69, 0xba, 0x55, 0x00, 0x6e, 0xf7, 0x71, 0x37, 0x2f, 0xc6, 0xd9, 0xe6, 0x46, 0xa2, 0x5b, 0xe1, - 0x96, 0x1e, 0x61, 0x57, 0x6a, 0x48, 0xb1, 0x4b, 0x8f, 0xb0, 0x2d, 0x8d, 0x38, 0x3a, 0xb9, 0x39, - 0xcf, 0xe6, 0x6c, 0x2b, 0x1a, 0x5d, 0x1c, 0x8d, 0x6d, 0xa0, 0x9a, 0xe9, 0x5f, 0xc5, 0xb6, 0x83, - 0x6a, 0x97, 0x25, 0xac, 0x51, 0x2b, 0xe0, 0xec, 0xda, 0x46, 0xec, 0x14, 0xb0, 0x33, 0xf0, 0x36, - 0x06, 0xec, 0x3a, 0x50, 0xef, 0x2c, 0xfb, 0x3e, 0x77, 0xc5, 0x70, 0xc0, 0x7d, 0x76, 0x3d, 0xf8, - 0xe2, 0xf1, 0xc7, 0x8d, 0xf2, 0x5a, 0xc1, 0x75, 0x39, 0x3e, 0x6c, 0xa4, 0xbb, 0xd8, 0x4f, 0x00, - 0xf5, 0xe1, 0x78, 0x1b, 0x70, 0x5f, 0xa4, 0xbb, 0xd8, 0x4f, 0xd1, 0x89, 0x28, 0x44, 0xd3, 0x3f, - 0xdd, 0xc5, 0x7e, 0xd6, 0x88, 0x2b, 0x68, 0xf9, 0xf5, 0x8c, 0xfd, 0x1c, 0x91, 0xe4, 0x85, 0xbc, - 0x44, 0x7e, 0xd1, 0x28, 0xb7, 0x21, 0x1b, 0xe5, 0xe2, 0xf0, 0xcb, 0x46, 0x2a, 0xc8, 0x4c, 0x81, - 0xf3, 0x12, 0xbb, 0xa7, 0x51, 0xee, 0x17, 0x72, 0xeb, 0xd9, 0x2e, 0x99, 0x5c, 0x5e, 0xe0, 0x56, - 0xc0, 0x81, 0xec, 0x6e, 0xa4, 0x02, 0xd1, 0x97, 0x7e, 0xee, 0xa4, 0xbc, 0xf5, 0xbd, 0xb7, 0x91, - 0x06, 0x3e, 0xbc, 0x25, 0xd2, 0xf0, 0x7d, 0x8d, 0xea, 0xf0, 0x1c, 0x22, 0xf7, 0xa3, 0x0b, 0xb4, - 0x12, 0x84, 0xd0, 0x03, 0x80, 0x70, 0xd9, 0xa9, 0xa1, 0x3f, 0x35, 0x52, 0xbd, 0xa9, 0x6b, 0x3b, - 0x0d, 0xfe, 0x19, 0x7a, 0xb8, 0x35, 0xd3, 0xd0, 0x83, 0x8d, 0x72, 0xba, 0x73, 0xd1, 0x21, 0x3c, - 0x97, 0xfd, 0x25, 0x6c, 0x0e, 0x08, 0xcf, 0x62, 0x7f, 0x6d, 0x94, 0x8b, 0x03, 0x17, 0x6d, 0x10, - 0x3f, 0x54, 0x69, 0x43, 0xfe, 0x30, 0x06, 0x2d, 0x1d, 0xa4, 0x07, 0x37, 0x1c, 0xc1, 0x1e, 0x81, - 0x77, 0xd9, 0xa0, 0xa2, 0xb3, 0x04, 0x7b, 0x34, 0x02, 0xf5, 0x5b, 0xa5, 0x12, 0xb7, 0xd9, 0x63, - 0x15, 0x93, 0x36, 0xf6, 0xb8, 0x1c, 0xac, 0xe1, 0x74, 0x17, 0x7b, 0x02, 0xc5, 0x35, 0xe2, 0x08, - 0x1e, 0x04, 0x47, 0x59, 0xc1, 0x38, 0x7b, 0x52, 0x29, 0x42, 0xfa, 0x14, 0x02, 0x53, 0xf6, 0x33, - 0xe3, 0x96, 0x6f, 0xb3, 0xa7, 0x1b, 0xc3, 0xef, 0x14, 0x8e, 0x8b, 0xb7, 0xda, 0x33, 0x92, 0x79, - 0xc1, 0x59, 0xcf, 0xa9, 0xf9, 0x48, 0x03, 0xb6, 0x73, 0xaa, 0xf5, 0x68, 0x03, 0x36, 0x94, 0x3c, - 0xcf, 0x27, 0x4a, 0xd4, 0x7e, 0xac, 0x81, 0x56, 0x22, 0xd9, 0x1e, 0xce, 0xf6, 0x1c, 0x49, 0xd8, - 0xe3, 0x11, 0x4c, 0xdb, 0x3d, 0xd1, 0x80, 0xad, 0x65, 0x88, 0x69, 0xdd, 0x27, 0x1b, 0x28, 0xbb, - 0x12, 0xc7, 0x52, 0x49, 0xe0, 0x53, 0x0d, 0xf2, 0x8d, 0x15, 0x82, 0x5a, 0xfb, 0xe9, 0x06, 0xec, - 0x38, 0x21, 0x18, 0xe2, 0xa5, 0x82, 0x95, 0x83, 0xf3, 0x67, 0x1a, 0xb0, 0x65, 0x8c, 0xc2, 0xda, - 0xe2, 0xd9, 0x06, 0x2a, 0x11, 0xc5, 0xb7, 0x3c, 0x1a, 0xc8, 0x00, 0xcf, 0x35, 0xc8, 0x97, 0x58, - 0x05, 0xd5, 0xfa, 0xcf, 0x83, 0x0f, 0x2d, 0x0b, 0xdd, 0x13, 0xc2, 0xb7, 0x72, 0x74, 0x8a, 0x60, - 0xa7, 0x37, 0x69, 0x70, 0xd8, 0x3d, 0xa6, 0xec, 0x09, 0x04, 0x3d, 0xa3, 0x89, 0x12, 0x47, 0x60, - 0x76, 0xb2, 0x04, 0xe4, 0xcc, 0x26, 0xbd, 0xbd, 0xc8, 0x70, 0xd8, 0x9d, 0xd5, 0xa4, 0x3f, 0xa5, - 0xc8, 0x09, 0x41, 0xd8, 0xd9, 0xa1, 0xaf, 0x48, 0x07, 0xce, 0x09, 0x15, 0x87, 0x78, 0xd1, 0xdb, - 0x00, 0xec, 0xdc, 0x26, 0xfd, 0x69, 0xa6, 0x9f, 0xfb, 0x79, 0x40, 0xe7, 0x35, 0xc5, 0x3f, 0xcd, - 0x10, 0x76, 0x7e, 0x53, 0xec, 0x0b, 0x0e, 0x41, 0x17, 0x34, 0x51, 0x96, 0x08, 0x1a, 0xb1, 0x0a, - 0x8e, 0x0d, 0x42, 0x4e, 0x9e, 0xfd, 0xb0, 0x89, 0x52, 0x41, 0xad, 0x4e, 0xcf, 0x15, 0x96, 0xe3, - 0x06, 0x84, 0xfe, 0xa8, 0x89, 0x72, 0x5d, 0xf9, 0x02, 0x54, 0x2a, 0x71, 0xb9, 0x17, 0xba, 0x30, - 0x2e, 0xa8, 0xf4, 0xe0, 0xa2, 0x26, 0x1a, 0xca, 0x90, 0xd8, 0xa0, 0x25, 0x72, 0xe3, 0x84, 0x5f, - 0xdc, 0x44, 0xa3, 0x50, 0xc1, 0x7d, 0x1e, 0x70, 0x5f, 0xf6, 0x65, 0x53, 0x13, 0xe5, 0x3b, 0x1a, - 0x7a, 0xd0, 0x12, 0x30, 0xba, 0x24, 0xec, 0xd2, 0xa0, 0xcf, 0x85, 0x00, 0xff, 0x4b, 0xc3, 0x2e, - 0xad, 0xd5, 0xc9, 0xbe, 0x2c, 0x54, 0xcb, 0x70, 0xcb, 0x97, 0xf1, 0x2e, 0x0f, 0x09, 0x66, 0x84, - 0xe7, 0x5b, 0x94, 0xa2, 0x63, 0xa1, 0x7c, 0x45, 0x68, 0xdf, 0xc5, 0x4b, 0x32, 0xcc, 0xe6, 0x70, - 0xb0, 0xfe, 0x83, 0x4f, 0xa2, 0xdf, 0x57, 0x86, 0x1e, 0xe5, 0x4a, 0x4b, 0xd8, 0x96, 0x30, 0x71, - 0xa4, 0x85, 0x73, 0x00, 0xc1, 0x5b, 0xc3, 0x40, 0xc8, 0xa7, 0x5c, 0x0a, 0x48, 0xb0, 0x2d, 0x2e, - 0x58, 0x23, 0xc6, 0xb9, 0x0f, 0x8b, 0xed, 0xd5, 0xd4, 0x7a, 0x7c, 0x0e, 0x6a, 0x3b, 0xc2, 0x31, - 0xe8, 0xe7, 0xc5, 0x51, 0xee, 0xaf, 0x19, 0x23, 0x74, 0x27, 0x08, 0x8f, 0xf0, 0x5c, 0x47, 0x90, - 0xe5, 0x13, 0x48, 0xf2, 0x07, 0x28, 0x93, 0x11, 0x9e, 0xeb, 0xf1, 0xbd, 0xa2, 0x06, 0x3f, 0x44, - 0x81, 0x8d, 0xf0, 0x5c, 0x97, 0x53, 0x44, 0x9c, 0x8f, 0x40, 0x78, 0x84, 0xe7, 0xfa, 0x0e, 0xef, - 0x72, 0x02, 0x61, 0xb9, 0xb2, 0x9c, 0x3e, 0x0e, 0xe1, 0xd6, 0x28, 0xfc, 0x49, 0x13, 0x1d, 0x91, - 0x47, 0x78, 0x6e, 0x80, 0xe7, 0x2d, 0xe1, 0x6c, 0xe0, 0x69, 0xd7, 0xe5, 0xfe, 0xa0, 0xef, 0xd9, - 0x65, 0x59, 0x4b, 0x9f, 0x62, 0x04, 0x47, 0x78, 0xae, 0xd3, 0x0b, 0x1c, 0x97, 0x47, 0x6d, 0x3f, - 0xd3, 0x14, 0xfb, 0x5a, 0x07, 0x3c, 0xbf, 0x48, 0xd0, 0xe7, 0x4d, 0xe6, 0x32, 0xe3, 0xe0, 0xe8, - 0x37, 0x8d, 0xf8, 0x07, 0xd6, 0x9b, 0x9b, 0x69, 0x3f, 0x48, 0xf2, 0x18, 0x2e, 0xaf, 0xe8, 0x6f, - 0x69, 0x36, 0x0f, 0x31, 0x6a, 0xa7, 0x11, 0xe2, 0xcd, 0x7f, 0x6b, 0xb3, 0x76, 0x5d, 0x25, 0x55, - 0xaf, 0xfb, 0xdb, 0x9a, 0xa9, 0x27, 0xd3, 0xc8, 0xf5, 0x26, 0xe1, 0xf6, 0xbd, 0xb9, 0xc7, 0xd6, - 0xe0, 0x8e, 0x66, 0xb3, 0xde, 0xf8, 0xda, 0x74, 0xe6, 0x7a, 0x97, 0x70, 0xe7, 0xde, 0xec, 0xb1, - 0x61, 0xb8, 0xab, 0xd9, 0xfc, 0xba, 0x51, 0x3f, 0x8d, 0x34, 0x9e, 0x80, 0xbb, 0x9b, 0x69, 0xa2, - 0x0c, 0x16, 0xca, 0x55, 0xf8, 0x85, 0xcd, 0xb8, 0x05, 0xa2, 0x73, 0x50, 0x5c, 0x70, 0x51, 0x33, - 0x6d, 0xc8, 0xf5, 0xdd, 0x57, 0x5c, 0x76, 0x31, 0x64, 0xf1, 0x78, 0xfa, 0xd5, 0xb3, 0x09, 0x32, - 0x7d, 0xeb, 0x1f, 0xb7, 0xbb, 0xa4, 0x99, 0x2a, 0xae, 0x2f, 0x1b, 0x47, 0x2f, 0x95, 0x68, 0x77, - 0x1c, 0xbd, 0x0c, 0x68, 0x6f, 0x95, 0xee, 0xe5, 0xf0, 0xae, 0x2f, 0xb7, 0xe3, 0xb2, 0x2b, 0xd0, - 0x15, 0xdc, 0x50, 0xc7, 0x05, 0x9b, 0xa5, 0xab, 0xaa, 0x00, 0x57, 0x02, 0xed, 0x5e, 0x1b, 0x47, - 0xb7, 0x00, 0x1d, 0xa8, 0xd2, 0xdd, 0xda, 0x4c, 0x6b, 0x86, 0xbc, 0x30, 0x8d, 0x4b, 0xb6, 0x41, - 0x12, 0xc3, 0xd4, 0x79, 0x6e, 0xfb, 0x74, 0x12, 0x9c, 0xba, 0x76, 0x34, 0xab, 0xd2, 0x8e, 0x4a, - 0xe4, 0xc1, 0x6a, 0x27, 0xaa, 0x61, 0x1a, 0xa3, 0xf0, 0xf0, 0x72, 0x55, 0xb3, 0xd9, 0x60, 0x1c, - 0x32, 0x9d, 0x71, 0xa8, 0x72, 0x35, 0x22, 0xcb, 0xed, 0x6e, 0x9c, 0xed, 0x35, 0xe8, 0x5d, 0x7a, - 0x2c, 0x8e, 0x5e, 0x2b, 0x87, 0x4c, 0x6d, 0x43, 0xe3, 0xb2, 0xeb, 0x9a, 0xcd, 0x43, 0x8d, 0xe4, - 0xde, 0x7e, 0xe8, 0xc3, 0x1e, 0x6d, 0xc6, 0xa1, 0xd2, 0x12, 0xbc, 0xc7, 0xf3, 0x8b, 0x16, 0x66, - 0xee, 0x3b, 0x2d, 0xb4, 0xbe, 0x11, 0xd6, 0xe7, 0x08, 0xee, 0xd3, 0x36, 0xb9, 0x45, 0x6d, 0xf7, - 0x78, 0x97, 0x33, 0x36, 0xc6, 0xde, 0x6d, 0xd1, 0xf7, 0xd6, 0x34, 0x03, 0x00, 0xbd, 0xd7, 0x42, - 0x63, 0x47, 0x4d, 0x39, 0xab, 0x42, 0xc1, 0xfb, 0x2d, 0x38, 0xc8, 0xa9, 0xb9, 0x50, 0x25, 0xfc, - 0xa0, 0x85, 0xc8, 0x69, 0xa1, 0xfe, 0x1b, 0x8a, 0x3f, 0x84, 0xd3, 0x8a, 0x4d, 0x28, 0xf8, 0x08, - 0x4e, 0xa5, 0x60, 0x8a, 0xd5, 0xc7, 0x2d, 0x34, 0x3a, 0x6a, 0x61, 0x8d, 0xc7, 0xfb, 0xa4, 0x85, - 0xd6, 0x32, 0xed, 0x2a, 0x84, 0x3f, 0x6d, 0xa1, 0xfd, 0x0e, 0x75, 0x8f, 0x7d, 0x86, 0xc7, 0xa3, - 0xbc, 0xb2, 0xcf, 0x3e, 0x6f, 0xc1, 0x4d, 0xb2, 0xe3, 0x96, 0x05, 0x67, 0x5f, 0xb4, 0xc8, 0x43, - 0x63, 0xce, 0x73, 0x6d, 0xf6, 0x25, 0x12, 0xd4, 0xef, 0xe4, 0x7c, 0x4f, 0x21, 0xc7, 0xa5, 0x68, - 0x97, 0xd9, 0xef, 0xb9, 0x62, 0x9c, 0x1d, 0x9f, 0xc2, 0xe5, 0x3a, 0x3d, 0x0f, 0x58, 0x45, 0xce, - 0x4e, 0x48, 0xe1, 0xb2, 0xde, 0xdb, 0x48, 0xe3, 0xdb, 0xe1, 0xe7, 0xd9, 0x89, 0x29, 0x7c, 0x0a, - 0x90, 0x80, 0x57, 0x16, 0x84, 0x9d, 0x94, 0xc2, 0x6d, 0x90, 0x35, 0x09, 0x93, 0x93, 0x61, 0xd2, - 0x65, 0x4d, 0xae, 0x19, 0x93, 0x3e, 0x4f, 0x81, 0x4f, 0x00, 0x47, 0x73, 0xbe, 0x9e, 0x9d, 0x5a, - 0x69, 0xff, 0x27, 0xb7, 0x7c, 0x76, 0x5a, 0x8a, 0x46, 0x84, 0x44, 0xe4, 0xb3, 0x9f, 0x36, 0xeb, - 0xa7, 0xa7, 0xa8, 0x54, 0x34, 0xe4, 0x95, 0x05, 0xd0, 0x33, 0x10, 0x87, 0xd0, 0x2e, 0x6b, 0x92, - 0x9d, 0x89, 0x38, 0xd4, 0x52, 0x7e, 0xce, 0x4a, 0x51, 0xf7, 0xf1, 0x78, 0x76, 0x8a, 0x72, 0x45, - 0x8f, 0x31, 0xb7, 0xe7, 0xa4, 0xa8, 0x36, 0xa3, 0xb0, 0x76, 0x7d, 0x2e, 0x38, 0xf5, 0x72, 0x21, - 0x2b, 0x89, 0x9d, 0x97, 0xc2, 0x5e, 0x77, 0x32, 0xa0, 0xc4, 0xe2, 0x4e, 0x2f, 0x28, 0xb1, 0xf3, - 0x53, 0xb4, 0x8c, 0x45, 0x40, 0xaf, 0x2c, 0x08, 0xbf, 0x20, 0x15, 0x39, 0x31, 0x60, 0x24, 0x7e, - 0x08, 0xfe, 0x0a, 0xa1, 0xa1, 0x5a, 0x49, 0x79, 0xfa, 0x51, 0x35, 0x8a, 0xfb, 0xb6, 0x0b, 0x41, - 0x1b, 0xcb, 0xf1, 0x45, 0x29, 0x79, 0x20, 0x28, 0x86, 0xc5, 0x7b, 0x31, 0xba, 0x3c, 0x9c, 0xed, - 0x84, 0xdb, 0x4d, 0xe0, 0x3f, 0x9c, 0xed, 0x24, 0x95, 0x40, 0x58, 0xc5, 0x92, 0x1e, 0x96, 0x4b, - 0x52, 0x54, 0x54, 0xd5, 0x12, 0x35, 0x3e, 0x97, 0x42, 0xd8, 0x61, 0xdb, 0xe4, 0x44, 0x60, 0xab, - 0x6e, 0x57, 0xbe, 0x04, 0xa5, 0xa8, 0xe2, 0xe2, 0x42, 0xf5, 0x72, 0xb9, 0x1c, 0xe1, 0x3a, 0x6c, - 0x1b, 0xc5, 0x66, 0x09, 0x14, 0x1d, 0x26, 0xf9, 0x15, 0xda, 0x48, 0x9f, 0x06, 0x2a, 0xfe, 0x36, - 0xa7, 0xa8, 0xee, 0xa3, 0x22, 0xe5, 0xed, 0x4a, 0x64, 0x4f, 0x79, 0x93, 0x18, 0x7c, 0x6d, 0x09, - 0xd9, 0x85, 0x07, 0x95, 0x8a, 0xb7, 0xad, 0x21, 0xbb, 0x8a, 0x50, 0xf9, 0xdb, 0x16, 0x63, 0xa7, - 0xc4, 0x72, 0xf1, 0xd3, 0x14, 0x88, 0x73, 0xd4, 0xdb, 0x0e, 0x94, 0x45, 0x45, 0xa0, 0x3c, 0xed, - 0x04, 0x83, 0x4c, 0x79, 0x74, 0xba, 0xfc, 0x5c, 0x05, 0x06, 0x71, 0xa1, 0xb2, 0xbb, 0x1a, 0x0c, - 0x32, 0xe5, 0xd1, 0x29, 0xf9, 0xb9, 0x46, 0x1b, 0x4d, 0xcd, 0xcf, 0xb5, 0x20, 0x17, 0x15, 0x29, - 0x6f, 0xd7, 0xc9, 0xea, 0x92, 0xde, 0x22, 0xf9, 0xb9, 0x3e, 0x64, 0x37, 0x4d, 0x7e, 0x7e, 0x1c, - 0xb2, 0x9b, 0x92, 0x9f, 0x9f, 0xc4, 0xd8, 0x45, 0xf3, 0xf3, 0x53, 0x4d, 0xa1, 0x3a, 0x3f, 0x3f, - 0x43, 0x7e, 0x2a, 0x02, 0xe5, 0xe9, 0xe7, 0x08, 0x32, 0xec, 0x3a, 0x13, 0x61, 0x75, 0xa9, 0x22, - 0x66, 0xbf, 0x80, 0x45, 0x4c, 0x44, 0x9b, 0x9a, 0x5f, 0x4e, 0x85, 0xbb, 0x78, 0x8e, 0xfd, 0x2a, - 0x25, 0x7f, 0x5a, 0xe6, 0x6e, 0xe0, 0xbe, 0xc8, 0x1e, 0xcb, 0x7e, 0x9d, 0xc2, 0x77, 0x3a, 0x6b, - 0x3d, 0xb2, 0xc7, 0x7e, 0x13, 0x36, 0x31, 0x1b, 0x7e, 0x0b, 0xed, 0x41, 0xee, 0x3b, 0x9e, 0xdd, - 0x61, 0xdb, 0xec, 0x77, 0x98, 0xf0, 0xb2, 0x8d, 0xa5, 0xef, 0xf7, 0x98, 0x1c, 0x6b, 0xcb, 0x96, - 0x2f, 0xb8, 0xcf, 0x6e, 0x80, 0x7a, 0x86, 0xe7, 0xb2, 0x1e, 0xcc, 0x6f, 0x4c, 0xc9, 0xf3, 0x5d, - 0x91, 0x67, 0x69, 0xa5, 0x63, 0x37, 0xa5, 0xf4, 0x49, 0x15, 0x7c, 0xc8, 0xe3, 0xcd, 0x29, 0x5a, - 0x18, 0xb3, 0x5e, 0x97, 0x35, 0x19, 0xb0, 0x5b, 0xa4, 0xbe, 0x5a, 0x15, 0x03, 0x76, 0x2b, 0x96, - 0x00, 0x35, 0xa5, 0xf4, 0x3c, 0xbb, 0x0d, 0x83, 0x14, 0x01, 0xd5, 0x14, 0xbb, 0x1d, 0xcb, 0x62, - 0xe8, 0x1c, 0x13, 0xfb, 0x0e, 0x38, 0x08, 0x31, 0x79, 0x9b, 0x7e, 0x67, 0x4a, 0xaf, 0xe2, 0x00, - 0xf5, 0x3c, 0xbf, 0x0b, 0x5d, 0xe9, 0xb3, 0x02, 0x41, 0x4b, 0xdb, 0xdd, 0xf0, 0x96, 0x11, 0x3e, - 0x51, 0x13, 0x32, 0x39, 0x7f, 0x90, 0xe5, 0x11, 0xc5, 0xa8, 0x1a, 0xd9, 0x1f, 0xab, 0x70, 0x3d, - 0x96, 0xf7, 0x20, 0x10, 0x6d, 0x9a, 0xf5, 0x30, 0x80, 0xd4, 0xae, 0x29, 0x30, 0xf1, 0x62, 0xbb, - 0xb1, 0x34, 0xa9, 0x93, 0x5e, 0xe8, 0xfb, 0xde, 0x18, 0xaa, 0x3d, 0xdf, 0xa7, 0x27, 0x1e, 0xe9, - 0x45, 0x5f, 0x55, 0xec, 0xfe, 0xe8, 0xfc, 0x52, 0x37, 0xd2, 0xae, 0x60, 0x0f, 0x44, 0x97, 0x18, - 0xf5, 0xe2, 0x53, 0xdb, 0xd3, 0x3f, 0x45, 0x2d, 0xd2, 0xae, 0xfe, 0xde, 0xff, 0x67, 0x24, 0xa0, - 0x02, 0x93, 0x97, 0x07, 0x53, 0xb4, 0x51, 0x50, 0x98, 0xa6, 0xa8, 0xf4, 0xff, 0x12, 0x9d, 0xf1, - 0x5a, 0x86, 0xef, 0xb7, 0x7a, 0x12, 0x4c, 0xe1, 0xfa, 0x50, 0xb4, 0xd6, 0x2b, 0x5c, 0x1f, 0x8e, - 0x4e, 0xf7, 0x38, 0xd7, 0x47, 0xa2, 0x16, 0x15, 0xae, 0x8f, 0xca, 0xc1, 0x0a, 0x61, 0xf2, 0xf2, - 0x18, 0xb8, 0x2a, 0xac, 0x8a, 0xeb, 0xe3, 0xd1, 0xd9, 0x17, 0xe5, 0xfa, 0x04, 0xca, 0x9f, 0x86, - 0x06, 0xf5, 0xf8, 0x64, 0x4a, 0x5f, 0xe2, 0xab, 0x77, 0xd2, 0x53, 0xf1, 0x1a, 0xc3, 0x14, 0x78, - 0x5a, 0x2f, 0x1a, 0x15, 0xba, 0x38, 0x37, 0x3c, 0x23, 0xdf, 0x5f, 0x21, 0x29, 0x80, 0xcf, 0x46, - 0x95, 0xd3, 0x6e, 0xf8, 0x89, 0xe3, 0xb9, 0x68, 0x92, 0x34, 0x23, 0x58, 0x3c, 0x1f, 0x5d, 0x19, - 0xb5, 0x44, 0x9b, 0xbd, 0x10, 0xeb, 0x64, 0x6c, 0x93, 0xc4, 0xf6, 0xc4, 0x3a, 0xa9, 0xbf, 0x60, - 0xb8, 0x82, 0xbd, 0x18, 0x8b, 0xa5, 0x04, 0x88, 0xf5, 0x52, 0x2c, 0x96, 0xde, 0x56, 0xa9, 0x58, - 0x2f, 0xeb, 0x97, 0x47, 0x55, 0x3f, 0xff, 0x86, 0x7e, 0x56, 0x0a, 0x05, 0xe0, 0x2b, 0x51, 0xe5, - 0x48, 0x3f, 0x5f, 0x8d, 0x16, 0x6e, 0xac, 0x9f, 0xaf, 0x45, 0xdf, 0x90, 0xd5, 0xfd, 0x7c, 0x3d, - 0x56, 0x78, 0xf1, 0x7e, 0xbe, 0x11, 0x2b, 0xbc, 0x48, 0x3f, 0xdf, 0x8c, 0xc5, 0x8a, 0xf6, 0xf3, - 0xad, 0x58, 0xac, 0xaa, 0x7e, 0xfe, 0x3d, 0x45, 0xe7, 0xbd, 0xaa, 0x79, 0x48, 0x25, 0xa1, 0xe2, - 0xfd, 0x23, 0xda, 0x35, 0x72, 0xa7, 0xf0, 0xb7, 0xa3, 0x79, 0xc0, 0x37, 0x09, 0x57, 0xb0, 0x77, - 0x30, 0x7d, 0x23, 0x20, 0xe2, 0xff, 0x33, 0x4a, 0x99, 0x10, 0x1d, 0xfb, 0xdd, 0xe8, 0x34, 0x55, - 0xa0, 0x72, 0xff, 0x5e, 0x34, 0xac, 0xfe, 0xb0, 0xe1, 0x0a, 0xf6, 0x7e, 0xac, 0xfb, 0x12, 0x47, - 0x90, 0x0f, 0x62, 0x39, 0x93, 0x02, 0x1d, 0xe7, 0xc3, 0x68, 0x19, 0x46, 0xfa, 0xf0, 0x51, 0xb4, - 0x66, 0x75, 0x1f, 0x3e, 0x46, 0x1f, 0x22, 0x20, 0xdc, 0x7f, 0x12, 0x2d, 0xaf, 0x68, 0x1f, 0x3e, - 0x8d, 0x4e, 0xdf, 0x78, 0x1f, 0x3e, 0x8b, 0x86, 0x8d, 0xf4, 0xe1, 0xf3, 0x58, 0xa9, 0x46, 0xfa, - 0xf0, 0x45, 0xac, 0xbe, 0xe3, 0x7d, 0xf8, 0x32, 0x65, 0x2e, 0x37, 0x0e, 0x9d, 0xb6, 0x26, 0xc2, - 0xd5, 0xf3, 0xb8, 0x95, 0x74, 0x36, 0x9f, 0x5a, 0x1b, 0xa1, 0xc2, 0xf1, 0x2b, 0xe9, 0xbc, 0x35, - 0x4d, 0x8d, 0x84, 0x1a, 0x27, 0xac, 0x34, 0x1b, 0x8d, 0x65, 0xd3, 0xd7, 0x4a, 0xa8, 0x74, 0xe2, - 0x4a, 0xe2, 0x32, 0xed, 0x3c, 0x0c, 0x75, 0x4e, 0x02, 0x97, 0xa9, 0xf3, 0x31, 0x54, 0x38, 0x19, - 0x5c, 0xa6, 0x99, 0x97, 0xa1, 0xc6, 0x29, 0xe0, 0x32, 0xfd, 0xfc, 0x0c, 0x95, 0x4e, 0x5d, 0xa9, - 0x3e, 0x0c, 0xaa, 0x5b, 0xfb, 0x27, 0xda, 0xcc, 0x39, 0x46, 0xcd, 0x6a, 0xc7, 0x65, 0x4f, 0xb6, - 0xd1, 0x29, 0xa3, 0x23, 0xd3, 0x99, 0x4e, 0xb3, 0xa7, 0xda, 0xf0, 0xd1, 0x7a, 0xdc, 0xf2, 0xd9, - 0xd3, 0x6d, 0xf8, 0x88, 0x31, 0x6e, 0xf9, 0xd2, 0x62, 0x38, 0xdb, 0x73, 0x24, 0x7b, 0xa6, 0x8d, - 0xde, 0xcb, 0xea, 0xd7, 0xe2, 0xcf, 0xb6, 0xc9, 0x4f, 0x0e, 0xd4, 0x38, 0x3a, 0xc3, 0x9e, 0x6b, - 0xa3, 0x37, 0xa5, 0xda, 0x43, 0xb0, 0xe7, 0xe1, 0xbf, 0xbb, 0x20, 0xd8, 0x0b, 0x6d, 0xb4, 0x3a, - 0x76, 0x4f, 0x94, 0x3c, 0x5f, 0x64, 0xb8, 0x58, 0x45, 0x6f, 0xb5, 0x3d, 0x71, 0xec, 0x08, 0xc2, - 0x5e, 0x8c, 0x63, 0xdf, 0x26, 0xec, 0x25, 0x84, 0xc0, 0x3f, 0x55, 0x50, 0x45, 0xbc, 0xdc, 0x86, - 0x2f, 0x02, 0xd4, 0x94, 0x8b, 0x4c, 0x1b, 0x6d, 0xcb, 0xd1, 0x56, 0xb5, 0xf4, 0x8a, 0xd2, 0x70, - 0xed, 0xb4, 0x9b, 0xe1, 0x82, 0xbd, 0x0a, 0xc2, 0x6a, 0x9d, 0x7e, 0xad, 0x0d, 0xaf, 0x58, 0x34, - 0x68, 0x8b, 0x80, 0xf3, 0x2b, 0x67, 0xaf, 0xb7, 0xe1, 0x37, 0xdb, 0xbe, 0x57, 0x5c, 0x6d, 0x05, - 0xbc, 0xed, 0x08, 0xf6, 0x06, 0x9c, 0x1c, 0xc5, 0x27, 0xd2, 0x2e, 0xf6, 0x10, 0x6f, 0xea, 0x76, - 0x46, 0xf8, 0xd4, 0x7e, 0xab, 0x4d, 0x7e, 0x1a, 0x0b, 0xb8, 0x2f, 0x90, 0x96, 0xbf, 0xb7, 0xc9, - 0x4f, 0x63, 0x04, 0xb0, 0x7f, 0xb4, 0xc9, 0x7b, 0x73, 0x75, 0x65, 0xcb, 0xde, 0x6e, 0x93, 0x5f, - 0xe3, 0x02, 0xe1, 0xb3, 0x77, 0xf0, 0xdc, 0x97, 0xf5, 0x9d, 0x22, 0xfb, 0x67, 0x9b, 0xfc, 0xf9, - 0xdd, 0x98, 0xf4, 0xf1, 0x6e, 0x9b, 0xfc, 0x39, 0xf9, 0x98, 0x60, 0xef, 0xc1, 0x9d, 0x1a, 0xa8, - 0xf7, 0xdb, 0x70, 0x0f, 0xe2, 0xe5, 0x2c, 0x81, 0x1d, 0x41, 0x00, 0xed, 0x0f, 0x22, 0xe8, 0xaa, - 0x10, 0xfd, 0x10, 0xf9, 0x88, 0xe8, 0xb2, 0x8f, 0x22, 0x08, 0xf4, 0xd8, 0xc7, 0x92, 0x82, 0xb7, - 0x91, 0xfb, 0xec, 0x13, 0x49, 0xa1, 0x64, 0xd9, 0x30, 0xff, 0x54, 0x52, 0x28, 0x59, 0x36, 0xfb, - 0x0c, 0x83, 0x49, 0x3b, 0x3e, 0xca, 0xe2, 0xe7, 0x20, 0xb4, 0x26, 0x87, 0x57, 0xe8, 0x17, 0xe8, - 0xdf, 0x9a, 0x5c, 0xf8, 0x13, 0x40, 0x8c, 0xf4, 0x1a, 0xdf, 0x66, 0xc7, 0xb5, 0x93, 0x6b, 0xdc, - 0x88, 0xb2, 0xe3, 0xf1, 0x3c, 0x84, 0x9e, 0x9e, 0xd0, 0x8e, 0x0f, 0xa5, 0xbc, 0xc4, 0x2d, 0xc1, - 0x4e, 0x6c, 0xc7, 0x0f, 0x10, 0xe4, 0xcd, 0x32, 0x3b, 0xa9, 0x5d, 0x7e, 0x31, 0xd9, 0xc0, 0xfd, - 0x00, 0x37, 0xe2, 0xec, 0x64, 0x25, 0x07, 0xc2, 0x4e, 0x69, 0xc7, 0x65, 0xbe, 0x93, 0x1f, 0x97, - 0x59, 0x3a, 0x55, 0xba, 0xa5, 0x36, 0x3b, 0xad, 0x1d, 0xdf, 0x64, 0x34, 0xfb, 0xd3, 0xdb, 0xf1, - 0x03, 0x0d, 0x62, 0x7f, 0x06, 0xb4, 0x32, 0x25, 0x8a, 0x70, 0x66, 0xbb, 0xfc, 0xbf, 0x04, 0x3f, - 0x57, 0x2c, 0xb1, 0xb3, 0xda, 0xd5, 0x92, 0x12, 0x80, 0x7b, 0x25, 0x9f, 0x67, 0xc7, 0x05, 0x95, - 0x94, 0x9e, 0xd3, 0xae, 0xd6, 0xbe, 0x88, 0x05, 0x3b, 0x37, 0x0e, 0xca, 0xc4, 0x9e, 0x17, 0x07, - 0xd3, 0xae, 0xcd, 0x27, 0xd8, 0xf9, 0xe0, 0x98, 0xf5, 0x54, 0x65, 0x5d, 0x20, 0x9b, 0xbe, 0x53, - 0xc4, 0x9e, 0xef, 0x87, 0xe8, 0x1d, 0x35, 0xa5, 0xdf, 0x1f, 0x85, 0x6d, 0xe9, 0xf2, 0x42, 0xf4, - 0x63, 0xd8, 0x3d, 0x8a, 0x4f, 0xb0, 0x8b, 0x20, 0x1b, 0x2e, 0x95, 0xb8, 0x2c, 0xab, 0x8b, 0xa5, - 0x8c, 0xda, 0x6c, 0x53, 0x3b, 0x15, 0x64, 0x65, 0xae, 0xb2, 0x4b, 0xda, 0xe5, 0x8f, 0x2c, 0x36, - 0x2a, 0xe5, 0x4b, 0xdb, 0xa9, 0xf2, 0xc3, 0x1f, 0x8a, 0x86, 0x47, 0xcc, 0x76, 0xf3, 0x10, 0xa3, - 0x56, 0xc3, 0x9d, 0xc5, 0x52, 0xec, 0xa7, 0xe2, 0x97, 0xb7, 0xd3, 0x84, 0x94, 0x3f, 0x00, 0xd5, - 0x16, 0x57, 0xb4, 0xd3, 0x32, 0x0e, 0xac, 0x5a, 0x7d, 0xb3, 0xee, 0xaa, 0xe3, 0x5a, 0xfe, 0x24, - 0xbb, 0xb2, 0x3d, 0x9c, 0x55, 0x12, 0xd8, 0xb2, 0xb7, 0x60, 0xd8, 0x45, 0x6f, 0x9d, 0xd6, 0x31, - 0x44, 0xdb, 0xda, 0xa3, 0x3f, 0x5d, 0x05, 0xb4, 0xbd, 0x3d, 0xfc, 0xd9, 0x29, 0xda, 0x3b, 0xda, - 0x57, 0xdc, 0x95, 0xd8, 0xfb, 0xff, 0x36, 0xe2, 0xdf, 0xd7, 0xcc, 0x66, 0xe3, 0xb0, 0x7d, 0x2a, - 0xa4, 0xdd, 0x0d, 0x56, 0xc1, 0xb1, 0xd9, 0x7e, 0x66, 0x93, 0xd1, 0xb8, 0x4f, 0xcd, 0xcc, 0xb8, - 0x57, 0x2e, 0xd8, 0x2c, 0x61, 0x7e, 0xdd, 0x68, 0xd8, 0xa7, 0x62, 0x7f, 0x39, 0x10, 0x6c, 0xc6, - 0x57, 0x46, 0x26, 0xb5, 0x01, 0x4f, 0xb0, 0x9a, 0x15, 0x77, 0x24, 0x8c, 0xfa, 0xaf, 0xfa, 0xff, - 0xb9, 0x7d, 0xd1, 0x23, 0x9d, 0x4a, 0x3f, 0x0e, 0xdb, 0xb7, 0xb3, 0xa3, 0x3d, 0x9f, 0x3a, 0xf1, - 0x0d, 0x63, 0xf9, 0xbe, 0xb4, 0x06, 0xc7, 0x7d, 0x2b, 0xe0, 0x6c, 0xc6, 0x57, 0xea, 0xf9, 0x7c, - 0xcc, 0x99, 0x60, 0x35, 0x2b, 0x4e, 0x4a, 0x18, 0xb5, 0x7b, 0xf9, 0xb7, 0x4f, 0x73, 0xb9, 0xb1, - 0x6c, 0x2f, 0xa2, 0x0a, 0xeb, 0x46, 0xa3, 0x6e, 0x2f, 0x3a, 0x19, 0x61, 0xb9, 0xb6, 0x05, 0xd2, - 0xf5, 0xd3, 0xfc, 0x7f, 0xa3, 0x54, 0x1a, 0xc8, 0xfb, 0x56, 0x91, 0xcd, 0x58, 0xb1, 0x79, 0xba, - 0x82, 0x88, 0xfe, 0x37, 0xe6, 0xb4, 0xc3, 0x12, 0x55, 0xa8, 0x50, 0xfa, 0xa6, 0xf1, 0xf5, 0x7d, - 0x6a, 0x76, 0x39, 0x81, 0x35, 0x5a, 0xe0, 0x44, 0xec, 0xab, 0x9c, 0xae, 0x2e, 0x3b, 0x05, 0xe1, - 0xb8, 0x6c, 0xc6, 0x0a, 0x6e, 0x2c, 0xaa, 0xfa, 0x4f, 0x3c, 0xfc, 0x5f, 0x8f, 0x57, 0x2c, 0x15, - 0xb8, 0xe0, 0xb8, 0xfd, 0xda, 0xcf, 0x5c, 0x80, 0xb7, 0x99, 0x55, 0x40, 0x33, 0x41, 0x0a, 0x83, - 0x96, 0x2f, 0x1c, 0xab, 0x70, 0x38, 0x90, 0x19, 0x11, 0xa4, 0x15, 0x48, 0x0d, 0x99, 0x74, 0x71, - 0xbb, 0x5c, 0x42, 0x73, 0xe6, 0xea, 0x6f, 0xee, 0xda, 0xb3, 0x2c, 0xf1, 0xe0, 0x9e, 0x65, 0x89, - 0xe7, 0xf7, 0x2c, 0x4b, 0x6c, 0x7a, 0x71, 0xd9, 0x7e, 0xc6, 0x92, 0x9c, 0x57, 0x6c, 0x29, 0x39, - 0x6e, 0x3e, 0x67, 0x95, 0x5a, 0x84, 0x63, 0x8f, 0xe2, 0xff, 0xed, 0x06, 0x13, 0xff, 0x17, 0x00, - 0x00, 0xff, 0xff, 0x93, 0x0e, 0x85, 0x0d, 0x4e, 0x3d, 0x00, 0x00, + 0xb5, 0x3e, 0x63, 0xd9, 0xd8, 0x6e, 0x6f, 0x45, 0x63, 0xa3, 0xc1, 0x01, 0x4b, 0xb2, 0x48, 0x24, + 0x9c, 0xdf, 0x4f, 0x63, 0x64, 0x22, 0x71, 0xce, 0xcb, 0x7b, 0x79, 0xb2, 0x36, 0x26, 0x4f, 0x92, + 0x65, 0xcd, 0x48, 0xe4, 0xfd, 0xe5, 0xd3, 0x9a, 0x2e, 0x8d, 0x3a, 0x9e, 0xe9, 0x1e, 0xba, 0x6b, + 0x6c, 0x89, 0xb7, 0x1c, 0xf6, 0x7d, 0x4f, 0x00, 0xb3, 0x19, 0xaf, 0xac, 0xd9, 0x77, 0xf6, 0x35, + 0xc1, 0x66, 0x49, 0x48, 0xd8, 0x77, 0x30, 0x10, 0xf6, 0x04, 0xc2, 0xbe, 0xe6, 0x9d, 0xfb, 0x55, + 0x55, 0x4f, 0xf7, 0x48, 0x36, 0x7f, 0xa9, 0xeb, 0xbb, 0xdb, 0x57, 0xb7, 0x6e, 0x55, 0x57, 0x55, + 0x8f, 0x0c, 0xc6, 0x27, 0x4a, 0x3e, 0x0f, 0x02, 0xc7, 0x73, 0x5b, 0x4a, 0xbe, 0x27, 0x3c, 0x73, + 0xa6, 0x70, 0x4a, 0xa3, 0x4b, 0x17, 0x16, 0xb9, 0xb0, 0x6c, 0x4b, 0x58, 0x12, 0x5d, 0xba, 0x38, + 0xef, 0xe5, 0x3d, 0x3c, 0xa6, 0xe8, 0x49, 0xa2, 0xcb, 0xdf, 0x4e, 0x18, 0x73, 0x7b, 0x1c, 0x5e, + 0xb0, 0xb3, 0x93, 0x25, 0x6e, 0x2e, 0x36, 0x66, 0x88, 0x52, 0x32, 0x51, 0x9f, 0x68, 0x9e, 0xb5, + 0x7a, 0xe6, 0xae, 0xe7, 0xea, 0xf6, 0x1b, 0x9a, 0x21, 0x4a, 0x66, 0xd2, 0x98, 0x39, 0x56, 0xb0, + 0xf2, 0xc9, 0x19, 0xf5, 0x89, 0xe6, 0x05, 0x0a, 0x07, 0x22, 0x25, 0xdc, 0x4d, 0xd6, 0x44, 0x2c, + 0x80, 0x98, 0xcb, 0x8c, 0xd9, 0x36, 0xcf, 0x39, 0x45, 0xab, 0x90, 0x9c, 0x19, 0x11, 0x6a, 0x90, + 0xe4, 0x39, 0xaf, 0x50, 0xb0, 0x04, 0x4f, 0xce, 0x8a, 0xca, 0x15, 0x08, 0xf9, 0xb8, 0xe5, 0x07, + 0x5c, 0x24, 0xf7, 0xaf, 0x4f, 0x34, 0xcf, 0x0d, 0xe5, 0x12, 0x34, 0x97, 0x1a, 0xb3, 0x78, 0x81, + 0x17, 0x83, 0xe4, 0xec, 0xfa, 0x9a, 0x50, 0x2a, 0x21, 0x92, 0x59, 0xbe, 0x6f, 0x4d, 0x26, 0xe7, + 0xd4, 0x27, 0x9a, 0xe7, 0x68, 0x19, 0xa0, 0xe5, 0xaf, 0xd6, 0x18, 0x87, 0xf6, 0x79, 0x39, 0xab, + 0xd0, 0x6f, 0x89, 0xdc, 0x78, 0x47, 0xde, 0x72, 0xdc, 0x40, 0xac, 0xf6, 0xbc, 0x02, 0xb7, 0xdc, + 0xb5, 0x65, 0xee, 0x4f, 0x9a, 0x47, 0x19, 0xb3, 0x5c, 0xcf, 0xe6, 0x41, 0x32, 0x51, 0x5f, 0xd3, + 0x3c, 0xaf, 0x75, 0x79, 0x0b, 0x65, 0xb3, 0x65, 0x6f, 0x36, 0x03, 0x9e, 0xcd, 0x87, 0xa4, 0x81, + 0xf9, 0x2f, 0xc6, 0xfe, 0x25, 0x62, 0xe7, 0x23, 0x53, 0x0b, 0x5b, 0x0f, 0xdd, 0x8b, 0xe9, 0x20, + 0x94, 0x14, 0x2f, 0x65, 0x62, 0xb6, 0x18, 0xcc, 0xcd, 0xfb, 0x56, 0x71, 0x9d, 0xf0, 0xd6, 0x73, + 0x77, 0x5d, 0xe0, 0x1c, 0xc7, 0x91, 0x56, 0x9d, 0xf0, 0x85, 0x90, 0x66, 0x49, 0x98, 0x71, 0x8e, + 0xe3, 0xe6, 0xb7, 0x8d, 0xa4, 0xe3, 0xba, 0x9e, 0x3d, 0xba, 0x6e, 0x4c, 0xac, 0x2b, 0x3a, 0x6e, + 0xd4, 0x6e, 0x66, 0xc4, 0x6e, 0xb1, 0xd4, 0xea, 0x11, 0xfd, 0x8e, 0xbb, 0x37, 0x6b, 0x6b, 0x22, + 0x6a, 0x3d, 0x6b, 0x5a, 0x6b, 0x6b, 0xa2, 0x62, 0x3d, 0x60, 0x2c, 0x08, 0x84, 0x57, 0xda, 0xe8, + 0xf9, 0xf6, 0xba, 0xa2, 0x67, 0x73, 0x0c, 0xd1, 0xc2, 0xd6, 0xc6, 0xbd, 0xf4, 0x37, 0xa3, 0x74, + 0xfb, 0x3d, 0x9b, 0x2b, 0xbf, 0xf3, 0x83, 0x08, 0x66, 0xae, 0x32, 0xcc, 0xd0, 0x9f, 0x2c, 0x00, + 0xc7, 0x73, 0x93, 0xb3, 0x23, 0xe3, 0x7e, 0x80, 0x96, 0x77, 0x6a, 0x31, 0x55, 0xc8, 0x06, 0xee, + 0x53, 0xd9, 0x63, 0x9c, 0x35, 0x63, 0x0d, 0x2e, 0xbf, 0x27, 0x61, 0x1c, 0xb2, 0xaf, 0x51, 0x33, + 0xbf, 0x63, 0xcc, 0xf2, 0x72, 0xb9, 0xb2, 0x8f, 0x7a, 0xdf, 0x3b, 0x7b, 0x65, 0xb2, 0x86, 0x54, + 0x75, 0x2d, 0xc1, 0xce, 0x4c, 0x1b, 0x73, 0x05, 0xf7, 0x8b, 0xeb, 0xc4, 0x64, 0x89, 0xab, 0x21, + 0xff, 0xc6, 0xbe, 0x9d, 0x64, 0xb9, 0x5f, 0xa4, 0x89, 0xa6, 0xfc, 0xcc, 0x11, 0xaa, 0x4d, 0x13, + 0x49, 0xf0, 0x09, 0x81, 0x11, 0xd7, 0x7d, 0x06, 0xb2, 0xfc, 0x9d, 0x19, 0xc6, 0xcc, 0xee, 0x89, + 0x92, 0x6f, 0x1e, 0x16, 0xce, 0xcd, 0x85, 0xad, 0x0b, 0x65, 0x18, 0xc2, 0x23, 0xee, 0x68, 0xae, + 0x32, 0xa3, 0x66, 0x83, 0x55, 0x00, 0x9b, 0xf9, 0x43, 0xf4, 0x68, 0x7e, 0xc3, 0x98, 0x93, 0x1b, + 0x77, 0x0a, 0xb6, 0x8f, 0x79, 0x4a, 0x25, 0x6d, 0x54, 0xac, 0x87, 0x42, 0x99, 0xf9, 0x4d, 0xa3, + 0x26, 0x70, 0xf2, 0xa8, 0x9d, 0x85, 0xad, 0x07, 0x4a, 0x95, 0x4c, 0xce, 0x2a, 0x58, 0x7e, 0x4f, + 0xd9, 0xcd, 0x65, 0x9c, 0xbc, 0x8a, 0x42, 0x5a, 0x66, 0x8b, 0x61, 0x8c, 0xd1, 0xaa, 0x21, 0xfb, + 0x4e, 0x15, 0x33, 0xaf, 0x75, 0x91, 0xb4, 0x09, 0x57, 0x93, 0xa1, 0xb9, 0x63, 0xe1, 0xc2, 0x52, + 0x6f, 0xcc, 0xf7, 0x4b, 0xee, 0x3a, 0xcb, 0xcf, 0x07, 0xeb, 0x68, 0xc1, 0xa0, 0x82, 0x59, 0x30, + 0x64, 0xf8, 0x25, 0xb7, 0xc3, 0xcf, 0x07, 0x7d, 0xdc, 0x35, 0x9b, 0x8c, 0xf9, 0xe3, 0x56, 0xb0, + 0xce, 0x76, 0x02, 0xe1, 0xb8, 0x39, 0x81, 0xd1, 0xd7, 0x73, 0x77, 0xde, 0xb8, 0x15, 0x74, 0x29, + 0x81, 0xd9, 0x64, 0xcc, 0xf1, 0x7c, 0x9b, 0xfb, 0xeb, 0x46, 0x69, 0x82, 0x53, 0x7f, 0xe6, 0xcb, + 0xc0, 0xab, 0x27, 0xd3, 0x82, 0x17, 0x87, 0x66, 0x43, 0xba, 0x7a, 0xd2, 0x6c, 0x37, 0xe6, 0x59, + 0xf9, 0x3c, 0x91, 0xa7, 0x22, 0x4b, 0xce, 0x45, 0xc7, 0x96, 0x48, 0xdd, 0x0e, 0x29, 0xa0, 0x42, + 0x22, 0xe1, 0x50, 0x54, 0x73, 0xf9, 0x37, 0x8d, 0xd9, 0x43, 0x25, 0x17, 0x49, 0xaf, 0x37, 0x66, + 0xd1, 0xf2, 0xaa, 0x17, 0x83, 0x68, 0xe6, 0xa4, 0x60, 0x79, 0xc1, 0xd8, 0x5f, 0x06, 0x36, 0x97, + 0x19, 0x33, 0x09, 0xc2, 0x10, 0xc5, 0x55, 0x81, 0xd3, 0x18, 0xdb, 0x3c, 0xc8, 0x61, 0x6c, 0x74, + 0xcf, 0x80, 0x98, 0xcd, 0xc6, 0x1c, 0xca, 0x0e, 0xac, 0x6b, 0x60, 0xbd, 0x40, 0x5a, 0x2b, 0x1a, + 0x43, 0xb3, 0x7d, 0xf9, 0xb0, 0xe2, 0xe5, 0x59, 0xc6, 0x1c, 0x3d, 0xea, 0xe6, 0x1c, 0x63, 0xe6, + 0x40, 0xb9, 0x50, 0x60, 0xfb, 0x99, 0x73, 0x8d, 0x59, 0x69, 0x57, 0xb4, 0x1d, 0xc9, 0x12, 0xa6, + 0x61, 0xec, 0x3f, 0xec, 0xe0, 0x79, 0x86, 0x39, 0xcf, 0x98, 0xdd, 0x53, 0xf0, 0x2c, 0xb1, 0xaa, + 0x95, 0xd5, 0x84, 0x8d, 0xb6, 0x23, 0xd9, 0x4c, 0xd2, 0xca, 0x08, 0xdf, 0x71, 0xf3, 0x6c, 0x16, + 0x19, 0xaf, 0x9e, 0x14, 0x3c, 0x60, 0xfb, 0x9b, 0xf3, 0x8d, 0x39, 0xfd, 0x93, 0xc1, 0xb1, 0x85, + 0xd5, 0x8e, 0x60, 0xdc, 0x64, 0xc6, 0x7c, 0xb4, 0xba, 0xe4, 0x9a, 0xcd, 0xc6, 0xcc, 0x03, 0x8c, + 0x05, 0x12, 0x29, 0xfb, 0x98, 0x84, 0x2c, 0x6f, 0x2e, 0x30, 0xe6, 0x02, 0xea, 0x76, 0xcb, 0x45, + 0x36, 0x1e, 0x7a, 0x38, 0x9a, 0x4f, 0x30, 0x27, 0x6c, 0x65, 0xb8, 0x60, 0xdf, 0x0f, 0x55, 0xb3, + 0x4e, 0x91, 0xb3, 0xf5, 0x61, 0xf3, 0xbb, 0x81, 0xe7, 0xb2, 0x82, 0xb9, 0xc4, 0x38, 0x20, 0xeb, + 0x74, 0xad, 0x1e, 0xe1, 0x39, 0xe1, 0xf9, 0x9a, 0xf6, 0xa4, 0xb9, 0xd0, 0x98, 0x3b, 0x62, 0x15, + 0xca, 0xbc, 0xcf, 0x09, 0x04, 0xbb, 0x24, 0x41, 0xed, 0x4e, 0xaf, 0x50, 0x2e, 0xba, 0x43, 0x7c, + 0x8c, 0xed, 0xa6, 0xfe, 0xce, 0xea, 0xf4, 0xca, 0xae, 0x60, 0x37, 0xd6, 0x9a, 0x73, 0x8c, 0x9a, + 0x4c, 0xb9, 0xc8, 0x6e, 0xc2, 0x53, 0xc7, 0x86, 0x3c, 0xbb, 0x19, 0x4f, 0xfd, 0x8e, 0xcb, 0x6e, + 0x91, 0x4f, 0xd6, 0x04, 0xbb, 0xb5, 0x96, 0x6c, 0x7a, 0x1c, 0x3f, 0x10, 0xec, 0xb6, 0x5a, 0x93, + 0x19, 0xf3, 0x7a, 0x7d, 0xaf, 0x5c, 0xea, 0xf4, 0xdc, 0x9c, 0x25, 0xd8, 0xed, 0xb5, 0xe6, 0x22, + 0xc3, 0xe8, 0xc8, 0xe7, 0xd7, 0xad, 0x76, 0x44, 0x87, 0x6b, 0xb3, 0x3b, 0x6a, 0x29, 0xa4, 0x02, + 0xd6, 0xf8, 0xec, 0xce, 0xa8, 0xc2, 0xf7, 0x3c, 0x9f, 0xdd, 0x25, 0xe3, 0x0a, 0x9b, 0xdd, 0x5d, + 0x6b, 0xce, 0xa3, 0xbc, 0xda, 0x36, 0xdf, 0xc0, 0xee, 0x81, 0x9d, 0x6c, 0x0c, 0x7a, 0x25, 0xf6, + 0x7b, 0xd8, 0xc9, 0x76, 0xc6, 0x2a, 0x96, 0xd8, 0x1f, 0xa0, 0x3d, 0x62, 0xf9, 0x24, 0xbd, 0xb7, + 0xd6, 0x9c, 0x6f, 0xcc, 0x1e, 0xb1, 0x7c, 0x88, 0x76, 0xd5, 0x9a, 0x0b, 0x8c, 0x39, 0x23, 0x96, + 0xef, 0x58, 0x6e, 0x8e, 0xb3, 0xdd, 0xb5, 0xe6, 0x01, 0xc6, 0x7c, 0x4a, 0x53, 0x07, 0xbd, 0xc3, + 0x3a, 0xf2, 0x79, 0x76, 0x5f, 0xad, 0x69, 0x1a, 0x0b, 0x08, 0x5a, 0x33, 0xfa, 0x7d, 0x9e, 0x13, + 0x84, 0xdd, 0x5f, 0x6b, 0x26, 0x8d, 0x03, 0x3b, 0x4a, 0x25, 0xdf, 0x9b, 0x40, 0x4a, 0xf4, 0x94, + 0x61, 0x0f, 0x80, 0xcb, 0x90, 0xb7, 0x71, 0xa0, 0x5c, 0x1c, 0xe5, 0x3e, 0xdb, 0x5a, 0x67, 0xce, + 0x35, 0x66, 0x0e, 0x59, 0xee, 0x7a, 0xb6, 0xad, 0x8e, 0x44, 0x5d, 0xdc, 0x0d, 0x38, 0xda, 0xdb, + 0xeb, 0x28, 0x74, 0x67, 0xb9, 0xc8, 0xc9, 0x9a, 0xed, 0xa8, 0xa3, 0x04, 0x0d, 0x72, 0x3f, 0xc7, + 0x5d, 0x01, 0x85, 0x9d, 0x75, 0x94, 0xbe, 0x01, 0xe1, 0x14, 0x38, 0xbb, 0x1a, 0x7e, 0xfa, 0xb8, + 0x65, 0xb3, 0x6b, 0xea, 0x28, 0x0b, 0x7d, 0x56, 0x9e, 0x5d, 0x5b, 0x47, 0x1d, 0x45, 0x7e, 0x31, + 0x70, 0xec, 0x3a, 0x84, 0xe8, 0xb3, 0x74, 0xfb, 0x7a, 0x84, 0x18, 0x10, 0xe3, 0xb2, 0x79, 0x03, + 0xf4, 0x2b, 0x2b, 0x0d, 0x3b, 0x7f, 0x60, 0xc5, 0x2f, 0x47, 0x8d, 0x05, 0xb1, 0xb5, 0xc7, 0x5c, + 0x64, 0xcc, 0x1b, 0x76, 0x83, 0x12, 0xcf, 0x39, 0x63, 0x0e, 0xb7, 0xd9, 0x7e, 0x54, 0x9c, 0x9d, + 0x56, 0x20, 0xd2, 0xae, 0xe8, 0x08, 0xd2, 0xae, 0x60, 0x09, 0x2a, 0xce, 0x10, 0x19, 0xe2, 0x56, + 0x81, 0xcd, 0x30, 0x0f, 0x34, 0x16, 0x85, 0x90, 0xaa, 0xf7, 0x1a, 0x73, 0xb1, 0xc1, 0x42, 0x50, + 0x97, 0xf6, 0xcc, 0x98, 0x35, 0x0a, 0x74, 0x16, 0x55, 0x64, 0x45, 0x51, 0x57, 0xfc, 0xfe, 0x31, + 0x4d, 0xd4, 0xee, 0x6c, 0x0d, 0x51, 0x54, 0xc9, 0xc6, 0x30, 0x4d, 0x63, 0x61, 0x05, 0x02, 0x9d, + 0x79, 0x3a, 0xb2, 0xc4, 0x14, 0x9f, 0xf9, 0x3a, 0x8c, 0x44, 0x35, 0xa1, 0x05, 0x71, 0x07, 0x60, + 0xb4, 0xd0, 0x3c, 0xc8, 0x30, 0x23, 0xaa, 0x9a, 0xd2, 0xa2, 0xb8, 0x2e, 0x38, 0x31, 0x1d, 0x4c, + 0x39, 0x94, 0xb4, 0x16, 0xeb, 0x60, 0x21, 0x0a, 0x66, 0x4b, 0xcc, 0x5a, 0xe3, 0xc0, 0x18, 0xac, + 0xc8, 0x1d, 0x64, 0x26, 0x8d, 0xc5, 0x31, 0x81, 0xe6, 0x57, 0x3b, 0xc5, 0x13, 0x28, 0x26, 0xcd, + 0x83, 0x8d, 0x25, 0x71, 0x03, 0xcd, 0xf2, 0xe0, 0x29, 0x16, 0x20, 0xba, 0x54, 0x0f, 0x92, 0x0c, + 0x29, 0x79, 0x2e, 0xd3, 0xec, 0x35, 0x08, 0x9a, 0x75, 0xba, 0xff, 0x1a, 0x55, 0x2c, 0xeb, 0x35, + 0x7d, 0x8d, 0x6b, 0x92, 0x0d, 0xd5, 0x6e, 0xc0, 0x71, 0xb9, 0xee, 0x54, 0xa8, 0xae, 0x29, 0x36, + 0x56, 0xeb, 0x83, 0xe1, 0x61, 0x7a, 0x78, 0xc9, 0x5a, 0xf2, 0x6b, 0xd6, 0x19, 0x97, 0x10, 0xd8, + 0x1d, 0xae, 0x8d, 0x25, 0xa6, 0xb8, 0xad, 0xd0, 0xbd, 0x96, 0xa8, 0x66, 0xf6, 0xcd, 0xb8, 0x03, + 0xf0, 0xfa, 0x7f, 0xba, 0x7b, 0x4a, 0x55, 0xb3, 0xfa, 0xff, 0x71, 0x5d, 0x70, 0x6a, 0x09, 0x93, + 0xa9, 0xb4, 0x24, 0xaf, 0x56, 0xed, 0xa2, 0x02, 0x83, 0xdb, 0xaa, 0x70, 0x1c, 0x43, 0x5c, 0xf1, + 0x3b, 0x32, 0x1c, 0xb0, 0x50, 0xa2, 0x39, 0x7e, 0x6b, 0xaa, 0x33, 0xf0, 0x6c, 0x33, 0x97, 0x1a, + 0x07, 0x55, 0x99, 0x68, 0xae, 0xed, 0x53, 0x6d, 0xc0, 0xf7, 0x28, 0x9d, 0x43, 0xac, 0x62, 0xe0, + 0xfa, 0x6d, 0xdd, 0x2d, 0x09, 0x81, 0xe7, 0xbf, 0xea, 0x1c, 0x4a, 0x4c, 0x71, 0xfc, 0x37, 0xdd, + 0x59, 0x89, 0x6a, 0x7e, 0xdf, 0x89, 0x3b, 0x00, 0xb7, 0x7f, 0xd7, 0xf1, 0x95, 0xaa, 0xe6, 0xd5, + 0x11, 0xd7, 0x05, 0xa7, 0xd5, 0xb4, 0xb4, 0x75, 0x7a, 0x56, 0x81, 0x07, 0x39, 0x4e, 0x8c, 0x5e, + 0xaf, 0xa7, 0x75, 0x56, 0x23, 0x20, 0xf4, 0x46, 0xbd, 0xb9, 0xd8, 0x58, 0xa4, 0x21, 0x1d, 0xf9, + 0xcd, 0x7a, 0xf3, 0x40, 0x63, 0xa1, 0x46, 0x15, 0xcb, 0xb7, 0x62, 0xd6, 0x60, 0xf3, 0x76, 0xbd, + 0xb9, 0xc4, 0x60, 0xa1, 0xb5, 0x26, 0xf3, 0xb7, 0x98, 0x26, 0xb8, 0xfc, 0xbd, 0x9e, 0x5e, 0xc3, + 0x7d, 0x59, 0xa2, 0x61, 0xd3, 0xdb, 0xb9, 0x2f, 0x8b, 0xf8, 0x9c, 0xde, 0x92, 0x7d, 0xd9, 0xca, + 0x1b, 0x78, 0xbe, 0x31, 0xa7, 0x2f, 0xab, 0x22, 0xe6, 0xa5, 0x22, 0x42, 0x8d, 0x9b, 0x0b, 0x0d, + 0xa3, 0x2f, 0x1b, 0xc6, 0x70, 0xa4, 0x0c, 0xce, 0xbf, 0x0f, 0xdf, 0xdd, 0xe4, 0xdb, 0x05, 0xdc, + 0x0d, 0xdf, 0x1e, 0x7c, 0x77, 0x6b, 0xdf, 0x25, 0xf8, 0xee, 0x56, 0xbe, 0x8f, 0x95, 0x8a, 0xf0, + 0xed, 0xc3, 0x77, 0x77, 0xe8, 0x3b, 0x90, 0x32, 0xf8, 0x16, 0xe4, 0xbb, 0x17, 0xbc, 0x27, 0x08, + 0xee, 0x95, 0xbc, 0x27, 0xc9, 0x77, 0x6f, 0xc8, 0xfb, 0x38, 0xf2, 0xdd, 0xab, 0x79, 0xff, 0x97, + 0x54, 0x84, 0xef, 0xff, 0x26, 0xdf, 0xbd, 0x15, 0xde, 0xff, 0x23, 0x65, 0xf0, 0xfd, 0xbf, 0xf2, + 0xe5, 0xcc, 0x2d, 0xc1, 0xb1, 0xdc, 0xb2, 0x8f, 0x90, 0x38, 0x8d, 0x20, 0xd0, 0xc7, 0x18, 0x20, + 0x0d, 0xe9, 0x78, 0x9f, 0x60, 0x80, 0x34, 0xaa, 0xc2, 0x7e, 0x1a, 0xb3, 0x46, 0xf4, 0xcf, 0xea, + 0xe9, 0x55, 0xd4, 0xc7, 0xe5, 0x72, 0xce, 0x3e, 0xaf, 0xc7, 0x9b, 0x8a, 0xab, 0xa5, 0x94, 0x7d, + 0x01, 0x0b, 0xb4, 0xb5, 0xe7, 0x2f, 0xeb, 0x89, 0x14, 0x20, 0xe5, 0xf6, 0x9f, 0x15, 0x23, 0xf8, + 0x3c, 0xbe, 0x81, 0x34, 0xd2, 0xae, 0xe0, 0xfe, 0x06, 0xab, 0x40, 0x6e, 0x4f, 0x68, 0x20, 0x37, + 0x1a, 0x81, 0xe7, 0x13, 0x1b, 0xe8, 0x2d, 0xda, 0x8b, 0x31, 0x39, 0x31, 0x41, 0x1b, 0x81, 0x5e, + 0x39, 0x28, 0x27, 0x61, 0x87, 0xd3, 0x1b, 0x8e, 0xca, 0xc9, 0x09, 0x62, 0xd8, 0xab, 0x87, 0xe5, + 0x14, 0xa5, 0x8b, 0x48, 0xa7, 0x26, 0xe8, 0xcd, 0xd9, 0x5b, 0x19, 0x98, 0xd3, 0x94, 0x14, 0xd9, + 0x3b, 0x1d, 0x7b, 0xa3, 0xee, 0xb5, 0x14, 0xe2, 0x6c, 0x08, 0xba, 0xd7, 0x22, 0xc4, 0x39, 0x08, + 0xd1, 0xbd, 0x56, 0x87, 0x38, 0x17, 0x21, 0xba, 0xd7, 0xaa, 0x10, 0xe7, 0x29, 0x5d, 0x84, 0x38, + 0x1f, 0x21, 0xba, 0xd7, 0x86, 0x21, 0x2e, 0x50, 0x52, 0x84, 0xb8, 0x10, 0x21, 0x06, 0xd0, 0x8b, + 0x8b, 0x21, 0x18, 0x90, 0xbd, 0x90, 0xfb, 0xb4, 0x81, 0xb0, 0x17, 0x9b, 0x10, 0x62, 0x40, 0xf7, + 0xe2, 0x52, 0xa5, 0x8b, 0x10, 0x97, 0x21, 0xc4, 0x40, 0xa5, 0x17, 0x97, 0x2b, 0x29, 0x42, 0x5c, + 0x21, 0x3d, 0x95, 0x0b, 0x05, 0xd9, 0x93, 0x2d, 0x52, 0x1b, 0x6d, 0x84, 0xda, 0x9a, 0xa0, 0x9d, + 0x90, 0x04, 0x74, 0xb8, 0x6d, 0xb4, 0x19, 0x98, 0x2f, 0x31, 0x15, 0x72, 0x7b, 0xc4, 0x0e, 0x61, + 0x77, 0x24, 0xa8, 0x44, 0x94, 0x9d, 0x0e, 0xbd, 0x33, 0xa2, 0x85, 0xf0, 0x57, 0x83, 0xf8, 0x60, + 0xa1, 0x2c, 0xd7, 0xa7, 0x5d, 0x09, 0x6c, 0x87, 0x0a, 0xe5, 0x70, 0x11, 0xda, 0x9d, 0xa0, 0x8d, + 0x1b, 0x21, 0xc4, 0xee, 0x7e, 0xb0, 0xed, 0x77, 0x5c, 0xa5, 0xff, 0x00, 0x88, 0xa0, 0xad, 0x0d, + 0x1e, 0x84, 0x47, 0x40, 0x64, 0xf1, 0x27, 0xa9, 0x51, 0x2e, 0x08, 0xa7, 0x54, 0x98, 0x84, 0xd1, + 0x43, 0x09, 0x2a, 0x69, 0x0d, 0x69, 0xbb, 0x3f, 0x23, 0xb4, 0x46, 0xc9, 0xf4, 0x2f, 0x20, 0xdb, + 0xe5, 0x6c, 0x70, 0x6c, 0xb9, 0x58, 0x3d, 0x8c, 0x54, 0x48, 0x40, 0x9b, 0x3d, 0x92, 0x50, 0xb5, + 0x27, 0x61, 0xb2, 0x7b, 0x34, 0x41, 0xab, 0x52, 0x08, 0x69, 0xcd, 0xc7, 0xd0, 0x93, 0x7e, 0xcf, + 0x86, 0xaf, 0xc7, 0xe1, 0xbc, 0xdf, 0xb3, 0xb5, 0xf8, 0x09, 0x8c, 0x4a, 0xbf, 0x67, 0x93, 0x8b, + 0x27, 0x13, 0xb4, 0xd5, 0x8c, 0x90, 0x19, 0x76, 0x03, 0x27, 0xef, 0x72, 0x9b, 0x3d, 0x95, 0x30, + 0x0f, 0x31, 0x6a, 0x55, 0x3e, 0x34, 0x1a, 0x4a, 0x9f, 0x4e, 0x98, 0x4b, 0x8d, 0x25, 0x55, 0xd2, + 0x8c, 0x94, 0x3d, 0x13, 0x95, 0x65, 0xe2, 0x76, 0xcf, 0x22, 0x5e, 0x4c, 0xa6, 0xac, 0x9e, 0x4b, + 0x98, 0x5f, 0x33, 0x0e, 0x92, 0xb4, 0xa6, 0x84, 0x7b, 0x3e, 0x61, 0x1e, 0x6c, 0x2c, 0x8e, 0x0b, + 0x95, 0xdd, 0x0b, 0x11, 0x51, 0x55, 0xb0, 0x17, 0x13, 0x66, 0xad, 0x61, 0x46, 0x45, 0xca, 0x66, + 0x4f, 0xc2, 0x3c, 0xd4, 0x48, 0xea, 0xa1, 0x9b, 0x12, 0xed, 0x25, 0x49, 0xa5, 0x4a, 0xac, 0x6c, + 0x5f, 0x8e, 0x09, 0xab, 0x22, 0xbe, 0x22, 0xc9, 0xc4, 0x84, 0xca, 0xee, 0xaf, 0x09, 0xb3, 0xd1, + 0x58, 0xa6, 0x45, 0x3d, 0x9e, 0x9f, 0xab, 0xd8, 0x85, 0xf6, 0xaf, 0x26, 0xcc, 0x06, 0xe3, 0x90, + 0xe9, 0x95, 0x94, 0x9f, 0xd7, 0xa6, 0x51, 0xa9, 0x62, 0xf1, 0x3a, 0x54, 0xa2, 0xa5, 0x32, 0x25, + 0xd0, 0x1b, 0x09, 0xb3, 0xce, 0x58, 0x3a, 0x9d, 0x8a, 0x0a, 0xf3, 0x26, 0x52, 0x14, 0x55, 0x88, + 0xf5, 0xe6, 0xad, 0x29, 0xf6, 0x55, 0x1c, 0xde, 0x46, 0x95, 0x75, 0x8c, 0x62, 0x6e, 0xfc, 0x9a, + 0x51, 0x45, 0x76, 0x8c, 0x06, 0xc3, 0xd4, 0xfa, 0x8d, 0x6e, 0xa1, 0x3e, 0x7f, 0xcb, 0x70, 0x0c, + 0x1b, 0x0d, 0xe7, 0xd5, 0xef, 0x18, 0x5e, 0xaa, 0xdc, 0xa1, 0x25, 0x37, 0xeb, 0x75, 0xf1, 0x1c, + 0xbb, 0x31, 0x0e, 0x91, 0x93, 0x9b, 0x42, 0xa8, 0x8b, 0xe7, 0x24, 0x74, 0x73, 0x1c, 0x22, 0xc3, + 0x5b, 0x18, 0x0e, 0x41, 0xdc, 0x91, 0x8b, 0xf5, 0xad, 0x8c, 0xe6, 0x55, 0x4f, 0xc1, 0xf3, 0xfc, + 0xd0, 0xf7, 0x6d, 0x55, 0x18, 0x79, 0xba, 0xbd, 0x82, 0x85, 0xde, 0xef, 0xa8, 0xc2, 0xc8, 0xf6, + 0x4e, 0x46, 0xab, 0x04, 0x30, 0xf8, 0xbf, 0x8b, 0xc9, 0xe3, 0x59, 0xd9, 0x95, 0x73, 0x6f, 0x37, + 0xc2, 0xa3, 0x4d, 0x2e, 0xee, 0xab, 0x34, 0xc9, 0xfa, 0x7e, 0x66, 0x1e, 0x64, 0x1c, 0x80, 0xe6, + 0x31, 0x8e, 0x18, 0xef, 0xf1, 0xad, 0x9c, 0x5c, 0x6b, 0x18, 0x4d, 0xeb, 0x18, 0x4e, 0xd6, 0x0f, + 0x4e, 0x85, 0xc9, 0xcb, 0x1f, 0x91, 0xcd, 0x3e, 0x2f, 0x7f, 0x44, 0x87, 0x9f, 0x67, 0x0f, 0x23, + 0x44, 0x9f, 0x97, 0x6f, 0xed, 0xf0, 0xf3, 0x01, 0x7b, 0x84, 0xe1, 0x5c, 0xe7, 0xe5, 0x5b, 0xd9, + 0xa3, 0x8c, 0x96, 0x78, 0xd2, 0x5b, 0xc9, 0x1e, 0x63, 0xea, 0xd8, 0x68, 0xb3, 0xc7, 0x19, 0x55, + 0x2c, 0x3d, 0x92, 0xd3, 0x0c, 0xe7, 0x36, 0x0e, 0x7c, 0xbd, 0xdc, 0x65, 0x4f, 0x30, 0x3a, 0x09, + 0x0e, 0x7a, 0x1b, 0xd9, 0x93, 0xd0, 0xef, 0xf4, 0xdc, 0x0d, 0xec, 0x29, 0xb8, 0xe9, 0x1c, 0xea, + 0x5c, 0xd5, 0xca, 0x9e, 0x06, 0x4c, 0x03, 0xcf, 0x9e, 0x91, 0x8f, 0xc7, 0xfa, 0x82, 0x3d, 0x8b, + 0xc7, 0x8e, 0x9c, 0x17, 0xb0, 0xe7, 0xe4, 0x63, 0xe0, 0xb8, 0xec, 0x79, 0x10, 0xeb, 0x10, 0x96, + 0x0b, 0x9e, 0x2f, 0x20, 0x53, 0xd4, 0x94, 0x44, 0x5f, 0x44, 0xac, 0x4e, 0x2f, 0x60, 0x7b, 0xd4, + 0x93, 0x60, 0x2f, 0xa1, 0x67, 0x5d, 0x3c, 0xef, 0x73, 0x1e, 0xb0, 0x97, 0x81, 0x77, 0x4f, 0x94, + 0xd8, 0x2b, 0xcc, 0x9c, 0x6d, 0xcc, 0x18, 0x4c, 0xb3, 0xbf, 0x42, 0x61, 0xc8, 0xb2, 0x1d, 0xcb, + 0x0d, 0xd8, 0xab, 0x50, 0xc8, 0x38, 0x2e, 0x7b, 0x0d, 0x4f, 0x59, 0xcb, 0x65, 0xaf, 0x33, 0x5a, + 0x6b, 0xb3, 0x7e, 0xd9, 0xcd, 0x59, 0x02, 0x6b, 0xe6, 0x1b, 0x28, 0x12, 0x8d, 0x20, 0xdf, 0x6f, + 0xd2, 0x11, 0x6b, 0x91, 0x86, 0x74, 0x19, 0xbe, 0x15, 0x53, 0x1c, 0x76, 0x5c, 0xc1, 0xde, 0x46, + 0xa9, 0xf6, 0x79, 0x79, 0x27, 0x67, 0x15, 0x3a, 0x5c, 0x9b, 0x5d, 0x99, 0xc4, 0x8e, 0x41, 0x02, + 0x6b, 0x7c, 0xb6, 0x39, 0x19, 0x51, 0xf8, 0x9e, 0xe7, 0xb3, 0xab, 0x92, 0x14, 0x7f, 0xd8, 0xb5, + 0xfc, 0xc9, 0x01, 0x0f, 0x3b, 0x93, 0x2d, 0x49, 0x0a, 0xa6, 0x11, 0x1d, 0x6c, 0x6b, 0x92, 0x82, + 0x69, 0x14, 0xac, 0xb6, 0xc5, 0xa0, 0xef, 0x66, 0xd6, 0x0c, 0xb0, 0xed, 0x49, 0x2a, 0x41, 0x40, + 0xe1, 0x6b, 0x67, 0x47, 0x92, 0xde, 0x7e, 0x15, 0x0c, 0xb6, 0x3b, 0x93, 0x54, 0x59, 0x15, 0x50, + 0x87, 0xb9, 0x1a, 0x0e, 0x54, 0x2b, 0x1d, 0xe0, 0xce, 0xe9, 0x1a, 0x38, 0xd0, 0x2f, 0x4e, 0x05, + 0x5e, 0x8b, 0x8e, 0x90, 0x2f, 0x05, 0x5c, 0x07, 0x36, 0xf2, 0x15, 0xac, 0xa0, 0xeb, 0xa1, 0x43, + 0xaf, 0x60, 0x05, 0xdc, 0x80, 0x6c, 0xa4, 0x5d, 0xa1, 0xda, 0x3f, 0x82, 0x02, 0xbd, 0x7d, 0x15, + 0xf0, 0x63, 0x28, 0xc8, 0xeb, 0x98, 0x8c, 0x93, 0x67, 0x3f, 0x49, 0x52, 0x4d, 0xe0, 0x36, 0x86, + 0x9a, 0x3f, 0xd5, 0xe2, 0xef, 0x79, 0x68, 0xff, 0x4c, 0xb7, 0x07, 0x78, 0x9e, 0xda, 0x3f, 0xaf, + 0xf8, 0xcf, 0xfa, 0x65, 0xce, 0x7e, 0x11, 0x21, 0x09, 0xe0, 0x97, 0xf1, 0xee, 0x01, 0xfb, 0x15, + 0x94, 0x60, 0xd4, 0x63, 0x15, 0x02, 0xce, 0x7e, 0x8d, 0x21, 0x91, 0x56, 0x12, 0xf9, 0x8d, 0xcc, + 0x80, 0x36, 0x93, 0xe0, 0x6f, 0xe5, 0xd0, 0xf2, 0x31, 0x91, 0x19, 0x77, 0xc6, 0x04, 0xbb, 0x51, + 0x06, 0x73, 0xf2, 0xe3, 0x0a, 0xb8, 0x09, 0x39, 0x0e, 0xd9, 0xd0, 0xec, 0x41, 0x27, 0xff, 0x90, + 0xa4, 0x97, 0x4e, 0x85, 0x55, 0x28, 0xb8, 0x37, 0x49, 0xaf, 0xc5, 0x18, 0xbb, 0x50, 0xb6, 0x0b, + 0x46, 0x15, 0x96, 0xa1, 0x60, 0x77, 0x92, 0xde, 0x97, 0x11, 0xb6, 0xa1, 0xe4, 0xbe, 0x24, 0xbd, + 0x87, 0xe2, 0xac, 0x43, 0xe1, 0xfd, 0x3a, 0xb3, 0xf2, 0x46, 0xed, 0x77, 0xe8, 0x61, 0x2f, 0x17, + 0x83, 0x96, 0x6f, 0x15, 0xd5, 0x46, 0xea, 0xe6, 0x24, 0xf6, 0x98, 0x5c, 0x8c, 0x58, 0x3e, 0xbb, + 0x05, 0x8d, 0x21, 0x6f, 0x23, 0x25, 0xfa, 0x56, 0x34, 0x32, 0x52, 0x72, 0x1b, 0x92, 0x8a, 0x1b, + 0x9e, 0xb0, 0x8e, 0x6e, 0x87, 0x3f, 0x85, 0xe9, 0x2d, 0xd7, 0x1d, 0xc9, 0xf0, 0x8a, 0x0f, 0x95, + 0x79, 0x27, 0x32, 0x26, 0xdb, 0x28, 0xdf, 0xbb, 0x22, 0x00, 0xca, 0xf4, 0x6e, 0x14, 0x95, 0x04, + 0x14, 0xa9, 0x7b, 0x22, 0x3a, 0xd8, 0xdd, 0xfd, 0x3e, 0x49, 0xeb, 0x4d, 0xda, 0x25, 0x8f, 0x5b, + 0xeb, 0x88, 0x57, 0xda, 0x95, 0xf3, 0xa3, 0x4e, 0x56, 0x83, 0xe6, 0x24, 0xef, 0xbb, 0xd2, 0xae, + 0x72, 0xb4, 0x43, 0xe9, 0xc2, 0xc9, 0xce, 0x3a, 0x59, 0x04, 0x21, 0xd7, 0xab, 0x95, 0x14, 0x5b, + 0xc3, 0x6b, 0xa4, 0xa7, 0x31, 0xca, 0x1c, 0x85, 0x39, 0xa5, 0x1e, 0xda, 0x68, 0x23, 0xd4, 0xa9, + 0xf5, 0x94, 0x02, 0x09, 0xe8, 0x70, 0xa7, 0xe1, 0x44, 0x21, 0x31, 0x15, 0xf2, 0xf4, 0x88, 0x1d, + 0xc2, 0x9e, 0x81, 0xc3, 0x8b, 0xb2, 0xd3, 0xa1, 0xcf, 0xac, 0x47, 0x87, 0xc6, 0x28, 0xd2, 0x59, + 0xf5, 0xa0, 0x31, 0x86, 0x28, 0x67, 0xd7, 0x4b, 0x1a, 0x3a, 0xc2, 0x39, 0x38, 0xd2, 0xa4, 0xc7, + 0x94, 0xf7, 0x73, 0x95, 0x2e, 0x3c, 0x9f, 0xa7, 0x42, 0x85, 0x5e, 0xcf, 0x8f, 0xc4, 0x46, 0xa7, + 0x2e, 0x50, 0xea, 0x72, 0x7b, 0x8f, 0xb3, 0x4e, 0xa7, 0x15, 0xf0, 0x63, 0xc6, 0x39, 0x52, 0xf9, + 0x8e, 0x3c, 0xb9, 0x2a, 0x04, 0xf1, 0xdf, 0x95, 0x27, 0x64, 0x05, 0x69, 0x16, 0xff, 0x90, 0x27, + 0x64, 0x85, 0x2a, 0x2e, 0xef, 0xc5, 0xac, 0xc1, 0xe8, 0x7d, 0x79, 0x42, 0xd6, 0xd6, 0x9a, 0xd7, + 0x07, 0x31, 0x4d, 0x90, 0xf9, 0x10, 0x54, 0x3b, 0x50, 0x4d, 0xfe, 0x64, 0x49, 0xb0, 0x8b, 0x1a, + 0x15, 0xd0, 0xed, 0x4a, 0xe0, 0xe2, 0x46, 0xbc, 0xb5, 0xbd, 0x22, 0x3e, 0x87, 0xb2, 0x4b, 0x1a, + 0x71, 0xe3, 0xdb, 0xf5, 0x2d, 0xb6, 0x09, 0x82, 0x41, 0x2b, 0x08, 0x36, 0x7a, 0xbe, 0xcd, 0x2e, + 0x6d, 0xc4, 0x54, 0xb6, 0x5c, 0xdb, 0x2b, 0xca, 0x8b, 0xef, 0xcb, 0x1a, 0xf1, 0x1a, 0x3a, 0xba, + 0xe3, 0x08, 0x76, 0xb9, 0x7e, 0x6c, 0x65, 0x57, 0x20, 0xc0, 0xb0, 0x9b, 0xd3, 0x1e, 0xaf, 0x6c, + 0xa4, 0xe9, 0x56, 0x01, 0xb8, 0xdd, 0xc7, 0xdd, 0xbc, 0x18, 0x67, 0x9b, 0x1b, 0x89, 0x6e, 0x85, + 0x5b, 0x7a, 0x84, 0x5d, 0xa5, 0x21, 0xc5, 0x2e, 0x3d, 0xc2, 0xb6, 0x34, 0xe2, 0xe8, 0xe4, 0xe6, + 0x3c, 0x9b, 0xb3, 0xad, 0x68, 0x74, 0x71, 0x34, 0xb6, 0x81, 0x6a, 0xa6, 0x7f, 0x15, 0xdb, 0x0e, + 0xaa, 0x5d, 0x96, 0xb0, 0x46, 0xad, 0x80, 0xb3, 0xeb, 0x1a, 0xb1, 0x53, 0xc0, 0xce, 0xc0, 0xdb, + 0x18, 0xb0, 0xeb, 0x41, 0xbd, 0xb3, 0xec, 0xfb, 0xdc, 0x15, 0xc3, 0x01, 0xf7, 0xd9, 0x0d, 0xe0, + 0x8b, 0xc7, 0x1f, 0x35, 0xca, 0x6b, 0x05, 0xd7, 0xe5, 0xf8, 0xb0, 0x91, 0xee, 0x62, 0x3f, 0x06, + 0xd4, 0x87, 0xe3, 0x6d, 0xc0, 0x7d, 0x91, 0xee, 0x62, 0x3f, 0x41, 0x27, 0xa2, 0x10, 0x4d, 0xff, + 0x74, 0x17, 0xfb, 0x69, 0x23, 0xae, 0xa0, 0xe5, 0xd7, 0x33, 0xf6, 0x33, 0x44, 0x92, 0x17, 0xf2, + 0x12, 0xf9, 0x79, 0xa3, 0xdc, 0x86, 0x6c, 0x94, 0x8b, 0xc3, 0x2f, 0x1a, 0xa9, 0x20, 0x33, 0x05, + 0xce, 0x4b, 0xec, 0xde, 0x46, 0xb9, 0x5f, 0xc8, 0xad, 0x67, 0xbb, 0x64, 0x72, 0x79, 0x81, 0x5b, + 0x01, 0x07, 0xb2, 0xbb, 0x91, 0x0a, 0x44, 0x5f, 0xfa, 0xb9, 0x93, 0xf2, 0xd6, 0xf7, 0xbe, 0x46, + 0x1a, 0xf8, 0xf0, 0x96, 0x48, 0xc3, 0xf7, 0x37, 0xaa, 0xc3, 0x73, 0x88, 0x3c, 0x80, 0x2e, 0xd0, + 0x4a, 0x10, 0x42, 0x0f, 0x02, 0xc2, 0x65, 0xa7, 0x86, 0xfe, 0xd8, 0x48, 0xf5, 0xa6, 0xae, 0xed, + 0x34, 0xf8, 0x27, 0xe8, 0xe1, 0xd6, 0x4c, 0x43, 0x0f, 0x35, 0xca, 0xe9, 0xce, 0x45, 0x87, 0xf0, + 0x5c, 0xf6, 0xe7, 0xb0, 0x39, 0x20, 0x3c, 0x8b, 0xfd, 0xa5, 0x51, 0x2e, 0x0e, 0x5c, 0xb4, 0x41, + 0xfc, 0x70, 0xa5, 0x0d, 0xf9, 0x23, 0x18, 0xb4, 0x74, 0x90, 0x1e, 0xdc, 0x70, 0x24, 0x7b, 0x14, + 0xde, 0x65, 0x83, 0x8a, 0xce, 0x12, 0xec, 0xb1, 0x08, 0xd4, 0x6f, 0x95, 0x4a, 0xdc, 0x66, 0x8f, + 0x57, 0x4c, 0xda, 0xd8, 0x13, 0x72, 0xb0, 0x86, 0xd3, 0x5d, 0xec, 0x49, 0x14, 0xd7, 0x88, 0x23, + 0x78, 0x10, 0x1c, 0x6d, 0x05, 0xe3, 0xec, 0x29, 0xa5, 0x08, 0xe9, 0xd3, 0x08, 0x4c, 0xd9, 0xcf, + 0x8c, 0x5b, 0xbe, 0xcd, 0x9e, 0x69, 0x0c, 0xbf, 0x53, 0x38, 0x2e, 0xde, 0x6a, 0xcf, 0x4a, 0xe6, + 0x05, 0x67, 0x3d, 0xa7, 0xe6, 0xa3, 0x0d, 0xd8, 0xce, 0xa9, 0xd6, 0x63, 0x0d, 0xd8, 0x50, 0xf2, + 0x3c, 0x9f, 0x28, 0x51, 0xfb, 0xf1, 0x06, 0x5a, 0x89, 0x64, 0x7b, 0x38, 0xdb, 0x73, 0x14, 0x61, + 0x4f, 0x44, 0x30, 0x6d, 0xf7, 0x64, 0x03, 0xb6, 0x96, 0x21, 0xa6, 0x75, 0x9f, 0x6a, 0xa0, 0xec, + 0x4a, 0x1c, 0x4b, 0x25, 0x81, 0x4f, 0x37, 0xc8, 0x37, 0x56, 0x08, 0x6a, 0xed, 0x67, 0x1a, 0xb0, + 0xe3, 0x84, 0x60, 0x88, 0x97, 0x0a, 0x56, 0x0e, 0xce, 0x9f, 0x6d, 0xc0, 0x96, 0x31, 0x0a, 0x6b, + 0x8b, 0xe7, 0x1a, 0xa8, 0x44, 0x14, 0xdf, 0xf2, 0x68, 0x20, 0x03, 0x3c, 0xdf, 0x20, 0x5f, 0x62, + 0x15, 0x54, 0xeb, 0xbf, 0x00, 0x3e, 0xb4, 0x2c, 0x74, 0x4f, 0x08, 0xdf, 0xca, 0xd1, 0x29, 0x82, + 0x9d, 0xd1, 0xa4, 0xc1, 0x61, 0xf7, 0xd8, 0xb2, 0x27, 0x10, 0xf4, 0xcc, 0x26, 0x4a, 0x1c, 0x81, + 0xd9, 0xc9, 0x12, 0x90, 0xb3, 0x9a, 0xf4, 0xf6, 0x22, 0xc3, 0x61, 0x77, 0x76, 0x93, 0xfe, 0x94, + 0x22, 0x27, 0x04, 0x61, 0xe7, 0x84, 0xbe, 0x22, 0x1d, 0x38, 0x37, 0x54, 0x1c, 0xe2, 0x45, 0x6f, + 0x03, 0xb0, 0xf3, 0x9a, 0xf4, 0xa7, 0x99, 0x7e, 0xee, 0xe7, 0x01, 0x9d, 0xdf, 0x14, 0xff, 0x34, + 0x43, 0xd8, 0x05, 0x4d, 0xb1, 0x2f, 0x38, 0x04, 0x5d, 0xd8, 0x44, 0x59, 0x22, 0x68, 0xc4, 0x2a, + 0x38, 0x36, 0x08, 0x39, 0x79, 0xf6, 0x83, 0x26, 0x4a, 0x05, 0xb5, 0x3a, 0x3d, 0x57, 0x58, 0x8e, + 0x1b, 0x10, 0xfa, 0xc3, 0x26, 0xca, 0x75, 0xe5, 0x0b, 0x50, 0xa9, 0xc4, 0xe5, 0x5e, 0xe8, 0xa2, + 0xb8, 0xa0, 0xd2, 0x83, 0x8b, 0x9b, 0x68, 0x28, 0x43, 0x62, 0x83, 0x96, 0xc8, 0x8d, 0x13, 0x7e, + 0x49, 0x13, 0x8d, 0x42, 0x05, 0xf7, 0x79, 0xc0, 0x7d, 0xd9, 0x97, 0x4d, 0x4d, 0x94, 0xef, 0x68, + 0xe8, 0x41, 0x4b, 0xc0, 0xe8, 0xd2, 0xb0, 0x4b, 0x83, 0x3e, 0x17, 0x02, 0xfc, 0x2f, 0x0b, 0xbb, + 0xb4, 0x56, 0x27, 0xfb, 0xf2, 0x50, 0x2d, 0xc3, 0x2d, 0x5f, 0xc6, 0xbb, 0x22, 0x24, 0x98, 0x11, + 0x9e, 0x6f, 0x51, 0x8a, 0x8e, 0x83, 0xf2, 0x95, 0xa1, 0x7d, 0x17, 0x2f, 0xc9, 0x30, 0x9b, 0xc3, + 0xc1, 0xfa, 0x0f, 0x3e, 0x89, 0x7e, 0x5f, 0x15, 0x7a, 0x94, 0x2b, 0x2d, 0x61, 0x5b, 0xc2, 0xc4, + 0x91, 0x16, 0xce, 0x01, 0x04, 0x6f, 0x0d, 0x03, 0x21, 0x9f, 0x72, 0x29, 0x20, 0xc1, 0xb6, 0xb8, + 0x60, 0x8d, 0x18, 0xe7, 0x3e, 0x2c, 0xb6, 0x57, 0x53, 0xeb, 0xf1, 0x39, 0xa8, 0xed, 0x08, 0xc7, + 0xa0, 0x9f, 0x17, 0x47, 0xb9, 0xbf, 0x66, 0x8c, 0xd0, 0x9d, 0x20, 0x3c, 0xc2, 0x73, 0x1d, 0x41, + 0x96, 0x4f, 0x20, 0xc9, 0x1f, 0xa2, 0x4c, 0x46, 0x78, 0xae, 0xc7, 0xf7, 0x8a, 0x1a, 0xfc, 0x08, + 0x05, 0x36, 0xc2, 0x73, 0x5d, 0x4e, 0x11, 0x71, 0x3e, 0x06, 0xe1, 0x11, 0x9e, 0xeb, 0x3b, 0xa2, + 0xcb, 0x09, 0x84, 0xe5, 0xca, 0x72, 0xfa, 0x24, 0x84, 0x5b, 0xa3, 0xf0, 0xa7, 0x4d, 0x74, 0x44, + 0x1e, 0xe1, 0xb9, 0x01, 0x9e, 0xb7, 0x84, 0xb3, 0x81, 0xa7, 0x5d, 0x97, 0xfb, 0x83, 0xbe, 0x67, + 0x97, 0x65, 0x2d, 0x7d, 0x86, 0x11, 0x1c, 0xe1, 0xb9, 0x4e, 0x2f, 0x70, 0x5c, 0x1e, 0xb5, 0xfd, + 0x5c, 0x53, 0xec, 0x6b, 0x1d, 0xf0, 0xfc, 0x22, 0x41, 0x5f, 0x34, 0x99, 0xcb, 0x8c, 0x83, 0xa3, + 0xdf, 0x34, 0xe2, 0x1f, 0x58, 0x6f, 0x69, 0xa6, 0xfd, 0x20, 0xc9, 0x63, 0xb8, 0xbc, 0xa2, 0xbf, + 0xb5, 0xd9, 0x3c, 0xc4, 0xa8, 0x9d, 0x46, 0x88, 0x37, 0xff, 0x6d, 0xcd, 0xda, 0x75, 0x95, 0x54, + 0xbd, 0xee, 0x6f, 0x6f, 0xa6, 0x9e, 0x4c, 0x23, 0xd7, 0x9b, 0x84, 0x3b, 0xf6, 0xe6, 0x1e, 0x5b, + 0x83, 0x3b, 0x9b, 0xcd, 0x7a, 0xe3, 0x6b, 0xd3, 0x99, 0xeb, 0x5d, 0xc2, 0x5d, 0x7b, 0xb3, 0xc7, + 0x86, 0xe1, 0xee, 0x66, 0xf3, 0xeb, 0x46, 0xfd, 0x34, 0xd2, 0x78, 0x02, 0xee, 0x69, 0xa6, 0x89, + 0x32, 0x58, 0x28, 0x57, 0xe1, 0x17, 0x35, 0xe3, 0x16, 0x88, 0xce, 0x41, 0x71, 0xc1, 0xc5, 0xcd, + 0xb4, 0x21, 0xd7, 0x77, 0x5f, 0x71, 0xd9, 0x25, 0x90, 0xc5, 0xe3, 0xe9, 0x57, 0xcf, 0x26, 0xc8, + 0xf4, 0xad, 0x7f, 0xdc, 0xee, 0xd2, 0x66, 0xaa, 0xb8, 0xbe, 0x6c, 0x1c, 0xbd, 0x4c, 0xa2, 0xdd, + 0x71, 0xf4, 0x72, 0xa0, 0xbd, 0x55, 0xba, 0x57, 0xc0, 0xbb, 0xbe, 0xdc, 0x8e, 0xcb, 0xae, 0x44, + 0x57, 0x70, 0x43, 0x1d, 0x17, 0x6c, 0x96, 0xae, 0xaa, 0x02, 0x5c, 0x05, 0xb4, 0x7b, 0x6d, 0x1c, + 0xdd, 0x02, 0x74, 0xa0, 0x4a, 0x77, 0x6b, 0x33, 0xad, 0x19, 0xf2, 0xc2, 0x34, 0x2e, 0xd9, 0x06, + 0x49, 0x0c, 0x53, 0xe7, 0xb9, 0xed, 0xd3, 0x49, 0x70, 0xea, 0xda, 0xd1, 0xac, 0x4a, 0x3b, 0x2a, + 0x91, 0x07, 0xab, 0x9d, 0xa8, 0x86, 0x69, 0x8c, 0xc2, 0xc3, 0xcb, 0xd5, 0xcd, 0x66, 0x83, 0x71, + 0xc8, 0x74, 0xc6, 0xa1, 0xca, 0x35, 0x88, 0x2c, 0xb7, 0xbb, 0x71, 0xb6, 0xd7, 0xa2, 0x77, 0xe9, + 0xb1, 0x38, 0x7a, 0x9d, 0x1c, 0x32, 0xb5, 0x0d, 0x8d, 0xcb, 0xae, 0x6f, 0x36, 0x0f, 0x35, 0x92, + 0x7b, 0xfb, 0xa1, 0x0f, 0x3b, 0xf1, 0x70, 0x1c, 0x2a, 0x2d, 0xc1, 0x7b, 0x3c, 0xbf, 0x68, 0x61, + 0xe6, 0xbe, 0xdb, 0x42, 0xeb, 0x1b, 0x61, 0x7d, 0x8e, 0xe0, 0x3e, 0x6d, 0x93, 0x5b, 0xd4, 0x76, + 0x8f, 0x77, 0x39, 0x63, 0x63, 0xec, 0xbd, 0x16, 0x7d, 0x6f, 0x4d, 0x33, 0x00, 0xd0, 0xfb, 0x2d, + 0x34, 0x76, 0xd4, 0x94, 0xb3, 0x2a, 0x14, 0x7c, 0xd0, 0x82, 0x83, 0x9c, 0x9a, 0x0b, 0x55, 0xc2, + 0x0f, 0x5b, 0x88, 0x9c, 0x16, 0xea, 0xbf, 0xa1, 0xf8, 0x23, 0x38, 0xad, 0xd8, 0x84, 0x82, 0x8f, + 0xe1, 0x54, 0x0a, 0xa6, 0x58, 0x7d, 0xd2, 0x42, 0xa3, 0xa3, 0x16, 0xd6, 0x78, 0xbc, 0x4f, 0x5b, + 0x68, 0x2d, 0xd3, 0xae, 0x42, 0xf8, 0xb3, 0x16, 0xda, 0xef, 0x50, 0xf7, 0xd8, 0xe7, 0x78, 0x3c, + 0xda, 0x2b, 0xfb, 0xec, 0x8b, 0x16, 0xdc, 0x24, 0x3b, 0x6e, 0x59, 0x70, 0xf6, 0x65, 0x8b, 0x3c, + 0x34, 0xe6, 0x3c, 0xd7, 0x66, 0xff, 0x44, 0x82, 0xfa, 0x9d, 0x9c, 0xef, 0x29, 0xe4, 0xf8, 0x14, + 0xed, 0x32, 0xfb, 0x3d, 0x57, 0x8c, 0xb3, 0x13, 0x52, 0xb8, 0x5c, 0xa7, 0xe7, 0x01, 0xab, 0xc8, + 0xd9, 0x89, 0x29, 0x5c, 0xd6, 0x7b, 0x1b, 0x69, 0x7c, 0x3b, 0xfc, 0x3c, 0x3b, 0x29, 0x85, 0x4f, + 0x01, 0x12, 0xf0, 0xca, 0x82, 0xb0, 0x93, 0x53, 0xb8, 0x0d, 0xb2, 0x26, 0x61, 0x72, 0x0a, 0x4c, + 0xba, 0xac, 0xc9, 0x35, 0x63, 0xd2, 0xe7, 0xa9, 0xf0, 0x09, 0xe0, 0x18, 0xce, 0xd7, 0xb3, 0xd3, + 0x2a, 0xed, 0xff, 0xe4, 0x96, 0xcf, 0x4e, 0x4f, 0xd1, 0x88, 0x90, 0x88, 0x7c, 0xf6, 0xd3, 0x66, + 0xfd, 0x8c, 0x14, 0x95, 0x8a, 0x86, 0xbc, 0xb2, 0x00, 0x7a, 0x26, 0xe2, 0x10, 0xda, 0x65, 0x4d, + 0xb2, 0xb3, 0x10, 0x87, 0x5a, 0xca, 0xcf, 0xd9, 0x29, 0xea, 0x3e, 0x1e, 0xcf, 0x49, 0x51, 0xae, + 0xe8, 0x31, 0xe6, 0xf6, 0xdc, 0x14, 0xd5, 0x66, 0x14, 0xd6, 0xae, 0xcf, 0x03, 0xa7, 0x5e, 0x2e, + 0x64, 0x25, 0xb1, 0xf3, 0x53, 0xd8, 0xeb, 0x4e, 0x06, 0x94, 0x58, 0xdc, 0xe9, 0x05, 0x25, 0x76, + 0x41, 0x8a, 0x96, 0xb1, 0x08, 0xe8, 0x95, 0x05, 0xe1, 0x17, 0xa6, 0x22, 0x27, 0x06, 0x8c, 0xc4, + 0x0f, 0xc0, 0x5f, 0x21, 0x34, 0x54, 0x2b, 0x29, 0x4f, 0x3f, 0xac, 0x46, 0x71, 0xdf, 0x76, 0x11, + 0x68, 0x63, 0x39, 0xbe, 0x38, 0x25, 0x0f, 0x04, 0xc5, 0xb0, 0x78, 0x2f, 0x41, 0x97, 0x87, 0xb3, + 0x9d, 0x70, 0xbb, 0x09, 0xfc, 0x87, 0xb3, 0x9d, 0xa4, 0x12, 0x08, 0xab, 0x58, 0xd2, 0xc3, 0x72, + 0x69, 0x8a, 0x8a, 0xaa, 0x5a, 0xa2, 0xc6, 0xe7, 0x32, 0x08, 0x3b, 0x6c, 0x9b, 0x9c, 0x08, 0x6c, + 0xd5, 0xed, 0xca, 0x97, 0xa0, 0x14, 0x55, 0x5c, 0x5c, 0xa8, 0x5e, 0x2e, 0x57, 0x20, 0x5c, 0x87, + 0x6d, 0xa3, 0xd8, 0x2c, 0x81, 0xa2, 0xc3, 0x24, 0xbf, 0x52, 0x1b, 0xe9, 0xd3, 0x40, 0xc5, 0xdf, + 0xe6, 0x14, 0xd5, 0x7d, 0x54, 0xa4, 0xbc, 0x5d, 0x85, 0xec, 0x29, 0x6f, 0x12, 0x83, 0xaf, 0x2d, + 0x21, 0xbb, 0xf0, 0xa0, 0x52, 0xf1, 0xb6, 0x35, 0x64, 0x57, 0x11, 0x2a, 0x7f, 0xdb, 0x62, 0xec, + 0x94, 0x58, 0x2e, 0x7e, 0x9a, 0x02, 0x71, 0x8e, 0x7a, 0xdb, 0x81, 0xb2, 0xa8, 0x08, 0x94, 0xa7, + 0x9d, 0x60, 0x90, 0x29, 0x8f, 0x4e, 0x97, 0x9f, 0xab, 0xc1, 0x20, 0x2e, 0x54, 0x76, 0xd7, 0x80, + 0x41, 0xa6, 0x3c, 0x3a, 0x25, 0x3f, 0xd7, 0x6a, 0xa3, 0xa9, 0xf9, 0xb9, 0x0e, 0xe4, 0xa2, 0x22, + 0xe5, 0xed, 0x7a, 0x59, 0x5d, 0xd2, 0x5b, 0x24, 0x3f, 0x37, 0x84, 0xec, 0xa6, 0xc9, 0xcf, 0x8f, + 0x42, 0x76, 0x53, 0xf2, 0xf3, 0xe3, 0x18, 0xbb, 0x68, 0x7e, 0x7e, 0xa2, 0x29, 0x54, 0xe7, 0xe7, + 0xa7, 0xc8, 0x4f, 0x45, 0xa0, 0x3c, 0xfd, 0x0c, 0x41, 0x86, 0x5d, 0x67, 0x22, 0xac, 0x2e, 0x55, + 0xc4, 0xec, 0xe7, 0xb0, 0x88, 0x89, 0x68, 0x53, 0xf3, 0x8b, 0xa9, 0x70, 0x17, 0xcf, 0xb1, 0x5f, + 0xa6, 0xe4, 0x4f, 0xcb, 0xdc, 0x0d, 0xdc, 0x17, 0xd9, 0xe3, 0xd8, 0xaf, 0x52, 0xf8, 0x4e, 0x67, + 0xad, 0x47, 0xf6, 0xd8, 0xaf, 0xc3, 0x26, 0x66, 0xc3, 0x6f, 0xa0, 0x3d, 0xc8, 0x7d, 0xc7, 0xb3, + 0x3b, 0x6c, 0x9b, 0xfd, 0x16, 0x13, 0x5e, 0xb6, 0xb1, 0xf4, 0xfd, 0x0e, 0x93, 0x63, 0x6d, 0xd9, + 0xf2, 0x05, 0xf7, 0xd9, 0x8d, 0x50, 0xcf, 0xf0, 0x5c, 0xd6, 0x83, 0xf9, 0x4d, 0x29, 0x79, 0xbe, + 0x2b, 0xf2, 0x2c, 0xad, 0x74, 0xec, 0xe6, 0x94, 0x3e, 0xa9, 0x82, 0x0f, 0x79, 0xbc, 0x25, 0x45, + 0x0b, 0x63, 0xd6, 0xeb, 0xb2, 0x26, 0x03, 0x76, 0xab, 0xd4, 0x57, 0xab, 0x62, 0xc0, 0x6e, 0xc3, + 0x12, 0xa0, 0xa6, 0x94, 0x9e, 0x67, 0xb7, 0x63, 0x90, 0x22, 0xa0, 0x9a, 0x62, 0x77, 0x60, 0x59, + 0x0c, 0x9d, 0x63, 0x62, 0xdf, 0x09, 0x07, 0x21, 0x26, 0x6f, 0xd3, 0xef, 0x4a, 0xe9, 0x55, 0x1c, + 0xa0, 0x9e, 0xe7, 0x77, 0xa3, 0x2b, 0x7d, 0x56, 0x20, 0x68, 0x69, 0xbb, 0x07, 0xde, 0x32, 0xc2, + 0x27, 0x6a, 0x42, 0x26, 0xe7, 0xf7, 0xb2, 0x3c, 0xa2, 0x18, 0x55, 0x23, 0xfb, 0x43, 0x15, 0xae, + 0xc7, 0xf2, 0x5e, 0x04, 0xa2, 0x4d, 0xb3, 0x1e, 0x06, 0x90, 0xda, 0x35, 0x05, 0x26, 0x5e, 0x6c, + 0x37, 0x96, 0x26, 0x75, 0xd2, 0x0b, 0x7d, 0xdf, 0x17, 0x43, 0xb5, 0xe7, 0xfb, 0xf5, 0xc4, 0x23, + 0xbd, 0xe8, 0xab, 0x8a, 0x3d, 0x10, 0x9d, 0x5f, 0xea, 0x46, 0xda, 0x15, 0xec, 0xc1, 0xe8, 0x12, + 0xa3, 0x5e, 0x7c, 0x6a, 0x7b, 0xfa, 0xc7, 0xa8, 0x45, 0xda, 0xd5, 0xdf, 0xfb, 0xff, 0x84, 0x04, + 0x54, 0x60, 0xf2, 0xf2, 0x50, 0x8a, 0x36, 0x0a, 0x0a, 0xd3, 0x14, 0x95, 0xfe, 0x9f, 0xa3, 0x33, + 0x5e, 0xcb, 0xf0, 0xfd, 0x56, 0x4f, 0x82, 0x29, 0x5c, 0x1f, 0x8e, 0xd6, 0x7a, 0x85, 0xeb, 0x23, + 0xd1, 0xe9, 0x1e, 0xe7, 0xfa, 0x68, 0xd4, 0xa2, 0xc2, 0xf5, 0x31, 0x39, 0x58, 0x21, 0x4c, 0x5e, + 0x1e, 0x07, 0x57, 0x85, 0x55, 0x71, 0x7d, 0x22, 0x3a, 0xfb, 0xa2, 0x5c, 0x9f, 0x44, 0xf9, 0xd3, + 0xd0, 0xa0, 0x1e, 0x9f, 0x4a, 0xe9, 0x4b, 0x7c, 0xf5, 0x4e, 0x7a, 0x3a, 0x5e, 0x63, 0x98, 0x02, + 0xcf, 0xe8, 0x45, 0xa3, 0x42, 0x17, 0xe7, 0x86, 0x67, 0xe5, 0xfb, 0x2b, 0x24, 0x05, 0xf0, 0xb9, + 0xa8, 0x72, 0xda, 0x0d, 0x3f, 0x71, 0x3c, 0x1f, 0x4d, 0x92, 0x66, 0x04, 0x8b, 0x17, 0xa2, 0x2b, + 0xa3, 0x96, 0x68, 0xb3, 0x17, 0x63, 0x9d, 0x8c, 0x6d, 0x92, 0xd8, 0x9e, 0x58, 0x27, 0xf5, 0x17, + 0x0c, 0x57, 0xb0, 0x97, 0x62, 0xb1, 0x94, 0x00, 0xb1, 0x5e, 0x8e, 0xc5, 0xd2, 0xdb, 0x2a, 0x15, + 0xeb, 0x15, 0xfd, 0xf2, 0xa8, 0xea, 0xe7, 0x5f, 0xd1, 0xcf, 0x4a, 0xa1, 0x00, 0x7c, 0x35, 0xaa, + 0x1c, 0xe9, 0xe7, 0x6b, 0xd1, 0xc2, 0x8d, 0xf5, 0xf3, 0xf5, 0xe8, 0x1b, 0xb2, 0xba, 0x9f, 0x6f, + 0xc4, 0x0a, 0x2f, 0xde, 0xcf, 0x37, 0x63, 0x85, 0x17, 0xe9, 0xe7, 0x5b, 0xb1, 0x58, 0xd1, 0x7e, + 0xbe, 0x1d, 0x8b, 0x55, 0xd5, 0xcf, 0xbf, 0xa5, 0xe8, 0xbc, 0x57, 0x35, 0x0f, 0xa9, 0x24, 0x54, + 0xbc, 0xbf, 0x47, 0xbb, 0x46, 0xee, 0x14, 0xfe, 0x4e, 0x34, 0x0f, 0xf8, 0x26, 0xe1, 0x0a, 0xf6, + 0x2e, 0xa6, 0x6f, 0x04, 0x44, 0xfc, 0x7f, 0x44, 0x29, 0x13, 0xa2, 0x63, 0xbf, 0x17, 0x9d, 0xa6, + 0x0a, 0x54, 0xee, 0xdf, 0x8f, 0x86, 0xd5, 0x1f, 0x36, 0x5c, 0xc1, 0x3e, 0x88, 0x75, 0x5f, 0xe2, + 0x08, 0xf2, 0x61, 0x2c, 0x67, 0x52, 0xa0, 0xe3, 0x7c, 0x14, 0x2d, 0xc3, 0x48, 0x1f, 0x3e, 0x8e, + 0xd6, 0xac, 0xee, 0xc3, 0x27, 0xe8, 0x43, 0x04, 0x84, 0xfb, 0x4f, 0xa3, 0xe5, 0x15, 0xed, 0xc3, + 0x67, 0xd1, 0xe9, 0x1b, 0xef, 0xc3, 0xe7, 0xd1, 0xb0, 0x91, 0x3e, 0x7c, 0x11, 0x2b, 0xd5, 0x48, + 0x1f, 0xbe, 0x8c, 0xd5, 0x77, 0xbc, 0x0f, 0xff, 0x4c, 0x99, 0xcb, 0x8d, 0x43, 0xa7, 0xad, 0x89, + 0x70, 0xf5, 0x3c, 0x7e, 0x25, 0x9d, 0xcd, 0xa7, 0xd6, 0x46, 0xa8, 0x70, 0xc2, 0x4a, 0x3a, 0x6f, + 0x4d, 0x53, 0x23, 0xa1, 0xc6, 0x89, 0x2b, 0xcd, 0x46, 0x63, 0xd9, 0xf4, 0xb5, 0x12, 0x2a, 0x9d, + 0xb4, 0x92, 0xb8, 0x4c, 0x3b, 0x0f, 0x43, 0x9d, 0x93, 0xc1, 0x65, 0xea, 0x7c, 0x0c, 0x15, 0x4e, + 0x01, 0x97, 0x69, 0xe6, 0x65, 0xa8, 0x71, 0x2a, 0xb8, 0x4c, 0x3f, 0x3f, 0x43, 0xa5, 0xd3, 0x56, + 0xaa, 0x0f, 0x83, 0xea, 0xd6, 0xfe, 0xc9, 0x36, 0x73, 0x8e, 0x51, 0xb3, 0xda, 0x71, 0xd9, 0x53, + 0x6d, 0x74, 0xca, 0xe8, 0xc8, 0x74, 0xa6, 0xd3, 0xec, 0xe9, 0x36, 0x7c, 0xb4, 0x1e, 0xb7, 0x7c, + 0xf6, 0x4c, 0x1b, 0x3e, 0x62, 0x8c, 0x5b, 0xbe, 0xb4, 0x18, 0xce, 0xf6, 0x1c, 0xc5, 0x9e, 0x6d, + 0xa3, 0xf7, 0xb2, 0xfa, 0xb5, 0xf8, 0x73, 0x6d, 0xf2, 0x93, 0x03, 0x35, 0x8e, 0xc9, 0xb0, 0xe7, + 0xdb, 0xe8, 0x4d, 0xa9, 0xf6, 0x10, 0xec, 0x05, 0xf8, 0xef, 0x2e, 0x08, 0xf6, 0x62, 0x1b, 0xad, + 0x8e, 0xdd, 0x13, 0x25, 0xcf, 0x17, 0x19, 0x2e, 0x56, 0xd1, 0x5b, 0x6d, 0x4f, 0x1c, 0x3b, 0x92, + 0xb0, 0x97, 0xe2, 0xd8, 0xb7, 0x08, 0x7b, 0x19, 0x21, 0xf0, 0x4f, 0x15, 0x54, 0x11, 0xaf, 0xb4, + 0xe1, 0x8b, 0x00, 0x35, 0xe5, 0x22, 0xd3, 0x46, 0xdb, 0x72, 0xb4, 0x55, 0x2d, 0xbd, 0xaa, 0x34, + 0x5c, 0x3b, 0xed, 0x66, 0xb8, 0x60, 0xaf, 0x81, 0xb0, 0x5a, 0xa7, 0x5f, 0x6f, 0xc3, 0x2b, 0x16, + 0x0d, 0xda, 0x22, 0xe0, 0xfc, 0xca, 0xd9, 0x1b, 0x6d, 0xf8, 0xcd, 0xb6, 0xef, 0x15, 0x57, 0x5b, + 0x01, 0x6f, 0x3b, 0x92, 0xbd, 0x09, 0x27, 0x47, 0xf3, 0x89, 0xb4, 0x8b, 0x3d, 0xc4, 0x5b, 0xba, + 0x9d, 0x11, 0x3e, 0xb5, 0xdf, 0x6e, 0x93, 0x9f, 0xc6, 0x02, 0xee, 0x0b, 0xa4, 0xe5, 0x6f, 0x6d, + 0xf2, 0xd3, 0x18, 0x01, 0xec, 0xef, 0x6d, 0xf2, 0xde, 0x5c, 0x5d, 0xd9, 0xb2, 0x77, 0xda, 0xe4, + 0xd7, 0xb8, 0x40, 0xf8, 0xec, 0x5d, 0x3c, 0xf7, 0x65, 0x7d, 0xa7, 0xc8, 0xfe, 0xd1, 0x26, 0x7f, + 0x7e, 0x37, 0x26, 0x7d, 0xbc, 0xd7, 0x26, 0x7f, 0x4e, 0x3e, 0x26, 0xd8, 0xfb, 0x70, 0xa7, 0x06, + 0xea, 0x83, 0x36, 0xdc, 0x83, 0x78, 0x39, 0x4b, 0x60, 0x47, 0x10, 0x40, 0xfb, 0xc3, 0x08, 0xba, + 0x2a, 0x44, 0x3f, 0x42, 0x3e, 0x22, 0xba, 0xec, 0xe3, 0x08, 0x02, 0x3d, 0xf6, 0x89, 0xa4, 0xe0, + 0x6d, 0xe4, 0x3e, 0xfb, 0x54, 0x52, 0x28, 0x59, 0x36, 0xcc, 0x3f, 0x93, 0x14, 0x4a, 0x96, 0xcd, + 0x3e, 0xc7, 0x60, 0xd2, 0x8e, 0x8f, 0xb2, 0xf8, 0x05, 0x08, 0xad, 0xc9, 0xe1, 0x15, 0xfa, 0x25, + 0xfa, 0xb7, 0x26, 0x17, 0xfe, 0x04, 0x10, 0x23, 0xbd, 0xc6, 0xb7, 0xd9, 0xf1, 0xed, 0xe4, 0x1a, + 0x37, 0xa2, 0xec, 0x04, 0x3c, 0x0f, 0xa1, 0xa7, 0x27, 0xb6, 0xe3, 0x43, 0x29, 0x2f, 0x71, 0x4b, + 0xb0, 0x93, 0xda, 0xf1, 0x03, 0x04, 0x79, 0xb3, 0xcc, 0x4e, 0x6e, 0x97, 0x5f, 0x4c, 0x36, 0x70, + 0x3f, 0xc0, 0x8d, 0x38, 0x3b, 0x45, 0xc9, 0x81, 0xb0, 0x53, 0xdb, 0x71, 0x99, 0xef, 0xe4, 0xc7, + 0x65, 0x96, 0x4e, 0x93, 0x6e, 0xa9, 0xcd, 0x4e, 0x6f, 0xc7, 0x37, 0x19, 0xcd, 0xfe, 0x8c, 0x76, + 0xfc, 0x40, 0x83, 0xd8, 0x9f, 0x09, 0xad, 0x4c, 0x89, 0x22, 0x9c, 0xd5, 0x2e, 0xff, 0x2f, 0xc1, + 0xcf, 0x15, 0x4b, 0xec, 0xec, 0x76, 0xb5, 0xa4, 0x04, 0xe0, 0x5e, 0xc9, 0xe7, 0x39, 0x71, 0x41, + 0x25, 0xa5, 0xe7, 0xb6, 0xab, 0xb5, 0x2f, 0x62, 0xc1, 0xce, 0x8b, 0x83, 0x32, 0xb1, 0xe7, 0xc7, + 0xc1, 0xb4, 0x6b, 0xf3, 0x09, 0x76, 0x01, 0x38, 0x66, 0x3d, 0x55, 0x59, 0x17, 0xca, 0xa6, 0xef, + 0x14, 0xb1, 0xe7, 0xfb, 0x01, 0x7a, 0x47, 0x4d, 0xe9, 0xf7, 0x87, 0x61, 0x5b, 0xba, 0xbc, 0x08, + 0xfd, 0x18, 0x76, 0x8f, 0xe6, 0x13, 0xec, 0x62, 0xc8, 0x86, 0x4b, 0x25, 0x2e, 0xcb, 0xea, 0x12, + 0x29, 0xa3, 0x36, 0xdb, 0xd4, 0x4e, 0x05, 0x59, 0x99, 0xab, 0xec, 0xd2, 0x76, 0xf9, 0x23, 0x8b, + 0x8d, 0x4a, 0xf9, 0xb2, 0x76, 0xaa, 0xfc, 0xf0, 0x87, 0xa2, 0xe1, 0x11, 0xb3, 0xdd, 0x3c, 0xc4, + 0xa8, 0xd5, 0x70, 0x67, 0xb1, 0x14, 0xfb, 0xa9, 0xf8, 0x15, 0xed, 0x34, 0x21, 0xe5, 0x0f, 0x40, + 0xb5, 0xc5, 0x95, 0xed, 0xb4, 0x8c, 0x03, 0xab, 0x56, 0xdf, 0xac, 0xbb, 0xea, 0xb8, 0x96, 0x3f, + 0xc9, 0xae, 0x6a, 0x0f, 0x67, 0x95, 0x04, 0xb6, 0xec, 0x2d, 0x18, 0x76, 0xd1, 0x5b, 0xa7, 0x75, + 0x0c, 0xd1, 0xb6, 0xf6, 0xe8, 0x4f, 0x57, 0x01, 0x6d, 0x6f, 0x0f, 0x7f, 0x76, 0x8a, 0xf6, 0x8e, + 0xf6, 0x15, 0x77, 0x27, 0xf6, 0xfe, 0xbf, 0x8d, 0xf8, 0xf7, 0x35, 0xb3, 0xd9, 0x38, 0x6c, 0x9f, + 0x0a, 0x69, 0x77, 0x83, 0x55, 0x70, 0x6c, 0xb6, 0x9f, 0xd9, 0x64, 0x34, 0xee, 0x53, 0x33, 0x33, + 0xee, 0x95, 0x0b, 0x36, 0x4b, 0x98, 0x5f, 0x37, 0x1a, 0xf6, 0xa9, 0xd8, 0x5f, 0x0e, 0x04, 0x9b, + 0xf1, 0x95, 0x91, 0x49, 0x6d, 0xc0, 0x13, 0xac, 0x66, 0xc5, 0x9d, 0x09, 0xa3, 0xfe, 0xab, 0xfe, + 0x7f, 0x6e, 0x5f, 0xf4, 0x48, 0xa7, 0xd2, 0x8f, 0xc3, 0xf6, 0xed, 0xec, 0x18, 0xcf, 0xa7, 0x4e, + 0x7c, 0xc3, 0x58, 0xbe, 0x2f, 0xad, 0xc1, 0x71, 0xdf, 0x0a, 0x38, 0x9b, 0xf1, 0x95, 0x7a, 0x3e, + 0x1f, 0x73, 0x26, 0x58, 0xcd, 0x8a, 0x93, 0x13, 0x46, 0xed, 0x5e, 0xfe, 0xed, 0xd3, 0x5c, 0x6e, + 0x2c, 0xdb, 0x8b, 0xa8, 0xc2, 0xba, 0xd1, 0xa8, 0xdb, 0x8b, 0x4e, 0x46, 0x58, 0xae, 0x6d, 0x81, + 0x74, 0xfd, 0x34, 0xff, 0xdf, 0x28, 0x95, 0x06, 0xf2, 0xbe, 0x55, 0x64, 0x33, 0x56, 0x6c, 0x9e, + 0xae, 0x20, 0xa2, 0xff, 0x8d, 0x39, 0xed, 0xb0, 0x44, 0x15, 0x2a, 0x94, 0x0e, 0x37, 0xbe, 0xbe, + 0x4f, 0xcd, 0x2e, 0x27, 0xb0, 0x46, 0x0b, 0x9c, 0x88, 0x7d, 0x95, 0xd3, 0xd5, 0x65, 0xa7, 0x20, + 0x1c, 0x97, 0xcd, 0x58, 0xc1, 0x8d, 0x45, 0x55, 0xff, 0x89, 0x87, 0xff, 0xeb, 0xf1, 0x8a, 0xa5, + 0x02, 0x17, 0x1c, 0xb7, 0x5f, 0xfb, 0x99, 0x0b, 0xf0, 0x36, 0xb3, 0x0a, 0x68, 0x26, 0x48, 0x61, + 0xd0, 0xf2, 0x85, 0x63, 0x15, 0x8e, 0x00, 0x32, 0x23, 0x82, 0xb4, 0x02, 0xa9, 0x21, 0x93, 0x2e, + 0x6e, 0x97, 0x4b, 0x68, 0xce, 0x5c, 0x7d, 0xf8, 0xae, 0x3d, 0xcb, 0x12, 0x0f, 0xed, 0x59, 0x96, + 0x78, 0x61, 0xcf, 0xb2, 0xc4, 0xa6, 0x97, 0x96, 0xed, 0x67, 0x2c, 0xc9, 0x79, 0xc5, 0x96, 0x92, + 0xe3, 0xe6, 0x73, 0x56, 0xa9, 0x45, 0x38, 0xf6, 0x28, 0xfe, 0xdf, 0x6e, 0x30, 0xf1, 0x7f, 0x01, + 0x00, 0x00, 0xff, 0xff, 0x88, 0x0b, 0xec, 0x9e, 0x4e, 0x3d, 0x00, 0x00, } diff --git a/proto/expression.proto b/proto/expression.proto index 7543262a..2fef7476 100644 --- a/proto/expression.proto +++ b/proto/expression.proto @@ -536,7 +536,7 @@ enum ScalarFuncSig { CaseWhenVectorFloat32 = 5162; /*Local MATCH*/ - LocalMatchAgainstBoolean = 5206; + LocalMatchAgainstBoolean = 5250; /*time*/ DateFormatSig = 6001; From abb16046172ff0ac20ec90e12371501ce26ed500 Mon Sep 17 00:00:00 2001 From: Zhigao TONG Date: Fri, 9 Oct 2026 19:57:02 +0800 Subject: [PATCH 11/12] Apply suggestion from @solotzg --- proto/executor.proto | 1 + 1 file changed, 1 insertion(+) diff --git a/proto/executor.proto b/proto/executor.proto index dc4d366c..2b262009 100644 --- a/proto/executor.proto +++ b/proto/executor.proto @@ -479,6 +479,7 @@ message Expand2{ repeated string generated_output_names = 2; // for output names for generated cols like grouping_id etc, like "gen_col1", "gen_col2" here optional Executor child = 3; } + message BroadcastQuery { optional string query = 1; } From 288bce9dffd8b682eb9ba819e3052d084106201a Mon Sep 17 00:00:00 2001 From: Zhigao TONG Date: Wed, 14 Oct 2026 16:25:44 +0800 Subject: [PATCH 12/12] docs: clarify Local MATCH Boolean query clauses --- go-tipb/expression.pb.go | 10 ++++++++++ proto/expression.proto | 10 ++++++++++ 2 files changed, 20 insertions(+) diff --git a/go-tipb/expression.pb.go b/go-tipb/expression.pb.go index b585ad9d..16208e05 100644 --- a/go-tipb/expression.pb.go +++ b/go-tipb/expression.pb.go @@ -2428,6 +2428,16 @@ func (m *FieldType) GetArray() bool { } type LocalMatchAgainstBooleanQuery struct { + // Each node describes one top-level BOOLEAN MODE clause; a query can have + // multiple clauses. A phrase occupies one node, not one node per word. + // For AGAINST ('+apple -banana +"hello world" app*' IN BOOLEAN MODE): + // clause occur term_type text + // +apple Must Word apple + // -banana MustNot Word banana + // +"hello world" Must Phrase hello world + // app* Should Prefix app + // Nodes are clauses, not analyzer tokens. Clause order is not significant; + // occur defines each clause's role. This flat list excludes nested groups. Nodes []*LocalMatchAgainstBooleanNode `protobuf:"bytes,1,rep,name=nodes" json:"nodes,omitempty"` Parser LocalMatchAgainstParser `protobuf:"varint,2,opt,name=parser,enum=tipb.LocalMatchAgainstParser" json:"parser"` NgramTokenSize uint32 `protobuf:"varint,3,opt,name=ngram_token_size,json=ngramTokenSize" json:"ngram_token_size"` diff --git a/proto/expression.proto b/proto/expression.proto index 2fef7476..b3ccc512 100644 --- a/proto/expression.proto +++ b/proto/expression.proto @@ -800,6 +800,16 @@ enum LocalMatchAgainstStopwordMode { } message LocalMatchAgainstBooleanQuery { + // Each node describes one top-level BOOLEAN MODE clause; a query can have + // multiple clauses. A phrase occupies one node, not one node per word. + // For AGAINST ('+apple -banana +"hello world" app*' IN BOOLEAN MODE): + // clause occur term_type text + // +apple Must Word apple + // -banana MustNot Word banana + // +"hello world" Must Phrase hello world + // app* Should Prefix app + // Nodes are clauses, not analyzer tokens. Clause order is not significant; + // occur defines each clause's role. This flat list excludes nested groups. repeated LocalMatchAgainstBooleanNode nodes = 1; optional LocalMatchAgainstParser parser = 2 [(gogoproto.nullable) = false]; optional uint32 ngram_token_size = 3 [(gogoproto.nullable) = false];