From 5bb182486d7e99eafa1db2e1c1efe9c6aee7598f Mon Sep 17 00:00:00 2001 From: Jakub Nyckowski Date: Mon, 8 May 2023 11:43:55 -0400 Subject: [PATCH 01/10] Assist - API implementation --- api/client/client.go | 48 + api/client/proto/authservice.pb.go | 4343 ++++++++++++----- .../legacy/client/proto/authservice.proto | 75 + api/types/constants.go | 3 + lib/auth/auth.go | 53 + lib/auth/auth_with_roles.go | 48 +- lib/auth/clt.go | 12 + lib/auth/grpcserver.go | 60 + lib/auth/init_test.go | 11 +- lib/reversetunnel/agent.go | 4 +- lib/services/identity.go | 15 + lib/services/local/users.go | 217 +- lib/web/apiserver.go | 55 +- lib/web/assistant.go | 65 + lib/web/command.go | 39 + 15 files changed, 3776 insertions(+), 1272 deletions(-) create mode 100644 lib/web/assistant.go create mode 100644 lib/web/command.go diff --git a/api/client/client.go b/api/client/client.go index 740fb66ac7692..01f1c9c6b9f86 100644 --- a/api/client/client.go +++ b/api/client/client.go @@ -3651,3 +3651,51 @@ func (c *Client) GetHeadlessAuthentication(ctx context.Context, id string) (*typ } return headlessAuthn, nil } + +// CreateAssistantConversation creates a new conversation entry in the backend. +func (c *Client) CreateAssistantConversation(ctx context.Context, req *proto.CreateAssistantConversationRequest) (*proto.CreateAssistantConversationResponse, error) { + resp, err := c.grpc.CreateAssistantConversation(ctx, req) + if err != nil { + return nil, trail.FromGRPC(err) + } + + return resp, nil +} + +// GetAssistantMessages retrieves assistant messages with given conversation ID. +func (c *Client) GetAssistantMessages(ctx context.Context, id string) (*proto.GetAssistantMessagesResponse, error) { + messages, err := c.grpc.GetAssistantMessages(ctx, &proto.AssistantRequest{ + ConversationId: id, + }) + if err != nil { + return nil, trail.FromGRPC(err) + } + return messages, nil +} + +// GetAssistantConversations returns all conversations started by a user. +func (c *Client) GetAssistantConversations(ctx context.Context, request *proto.GetAssistantConversationsRequest) (*proto.GetAssistantConversationsResponse, error) { + messages, err := c.grpc.GetAssistantConversations(ctx, request) + if err != nil { + return nil, trail.FromGRPC(err) + } + return messages, nil +} + +// InsertAssistantMessage saves a new conversation message. +func (c *Client) InsertAssistantMessage(ctx context.Context, in *proto.AssistantMessage) (*emptypb.Empty, error) { + resp, err := c.grpc.InsertAssistantMessage(ctx, in) + if err != nil { + return nil, trail.FromGRPC(err) + } + return resp, nil +} + +// SetAssistantConversationTitle set the given assistant conversation title. +func (c *Client) SetAssistantConversationTitle(ctx context.Context, in *proto.ConversationInfo) error { + _, err := c.grpc.SetAssistantConversationTitle(ctx, in) + if err != nil { + return trail.FromGRPC(err) + } + return nil +} diff --git a/api/client/proto/authservice.pb.go b/api/client/proto/authservice.pb.go index ec03f86716f01..f123cd98aa41e 100644 --- a/api/client/proto/authservice.pb.go +++ b/api/client/proto/authservice.pb.go @@ -14046,6 +14046,427 @@ func (m *ExportUpgradeWindowsResponse) GetSystemdUnitSchedule() string { return "" } +type AssistantRequest struct { + // conversation_id it's the ID of a conversation. + // It's used to tie all messages in a one conversation. + ConversationId string `protobuf:"bytes,1,opt,name=conversation_id,json=conversationId,proto3" json:"conversation_id,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *AssistantRequest) Reset() { *m = AssistantRequest{} } +func (m *AssistantRequest) String() string { return proto.CompactTextString(m) } +func (*AssistantRequest) ProtoMessage() {} +func (*AssistantRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_0ffcffcda38ae159, []int{205} +} +func (m *AssistantRequest) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *AssistantRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_AssistantRequest.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *AssistantRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_AssistantRequest.Merge(m, src) +} +func (m *AssistantRequest) XXX_Size() int { + return m.Size() +} +func (m *AssistantRequest) XXX_DiscardUnknown() { + xxx_messageInfo_AssistantRequest.DiscardUnknown(m) +} + +var xxx_messageInfo_AssistantRequest proto.InternalMessageInfo + +func (m *AssistantRequest) GetConversationId() string { + if m != nil { + return m.ConversationId + } + return "" +} + +type AssistantMessage struct { + // conversation_id used to tie all messages in a one conversation. + ConversationId string `protobuf:"bytes,1,opt,name=conversation_id,json=conversationId,proto3" json:"conversation_id,omitempty"` + // type is a type of message. It can be Chat response/query or a command to run. + Type string `protobuf:"bytes,2,opt,name=type,proto3" json:"type,omitempty"` + // createdTime is the time when the even occurred. + CreatedTime time.Time `protobuf:"bytes,3,opt,name=created_time,json=createdTime,proto3,stdtime" json:"created_time"` + // payload is a JSON message + Payload string `protobuf:"bytes,4,opt,name=payload,proto3" json:"payload,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *AssistantMessage) Reset() { *m = AssistantMessage{} } +func (m *AssistantMessage) String() string { return proto.CompactTextString(m) } +func (*AssistantMessage) ProtoMessage() {} +func (*AssistantMessage) Descriptor() ([]byte, []int) { + return fileDescriptor_0ffcffcda38ae159, []int{206} +} +func (m *AssistantMessage) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *AssistantMessage) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_AssistantMessage.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *AssistantMessage) XXX_Merge(src proto.Message) { + xxx_messageInfo_AssistantMessage.Merge(m, src) +} +func (m *AssistantMessage) XXX_Size() int { + return m.Size() +} +func (m *AssistantMessage) XXX_DiscardUnknown() { + xxx_messageInfo_AssistantMessage.DiscardUnknown(m) +} + +var xxx_messageInfo_AssistantMessage proto.InternalMessageInfo + +func (m *AssistantMessage) GetConversationId() string { + if m != nil { + return m.ConversationId + } + return "" +} + +func (m *AssistantMessage) GetType() string { + if m != nil { + return m.Type + } + return "" +} + +func (m *AssistantMessage) GetCreatedTime() time.Time { + if m != nil { + return m.CreatedTime + } + return time.Time{} +} + +func (m *AssistantMessage) GetPayload() string { + if m != nil { + return m.Payload + } + return "" +} + +type GetAssistantMessagesResponse struct { + // messages is a list of messages. + Messages []*AssistantMessage `protobuf:"bytes,1,rep,name=messages,proto3" json:"messages,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *GetAssistantMessagesResponse) Reset() { *m = GetAssistantMessagesResponse{} } +func (m *GetAssistantMessagesResponse) String() string { return proto.CompactTextString(m) } +func (*GetAssistantMessagesResponse) ProtoMessage() {} +func (*GetAssistantMessagesResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_0ffcffcda38ae159, []int{207} +} +func (m *GetAssistantMessagesResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *GetAssistantMessagesResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_GetAssistantMessagesResponse.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *GetAssistantMessagesResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_GetAssistantMessagesResponse.Merge(m, src) +} +func (m *GetAssistantMessagesResponse) XXX_Size() int { + return m.Size() +} +func (m *GetAssistantMessagesResponse) XXX_DiscardUnknown() { + xxx_messageInfo_GetAssistantMessagesResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_GetAssistantMessagesResponse proto.InternalMessageInfo + +func (m *GetAssistantMessagesResponse) GetMessages() []*AssistantMessage { + if m != nil { + return m.Messages + } + return nil +} + +type GetAssistantConversationsRequest struct { + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *GetAssistantConversationsRequest) Reset() { *m = GetAssistantConversationsRequest{} } +func (m *GetAssistantConversationsRequest) String() string { return proto.CompactTextString(m) } +func (*GetAssistantConversationsRequest) ProtoMessage() {} +func (*GetAssistantConversationsRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_0ffcffcda38ae159, []int{208} +} +func (m *GetAssistantConversationsRequest) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *GetAssistantConversationsRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_GetAssistantConversationsRequest.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *GetAssistantConversationsRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_GetAssistantConversationsRequest.Merge(m, src) +} +func (m *GetAssistantConversationsRequest) XXX_Size() int { + return m.Size() +} +func (m *GetAssistantConversationsRequest) XXX_DiscardUnknown() { + xxx_messageInfo_GetAssistantConversationsRequest.DiscardUnknown(m) +} + +var xxx_messageInfo_GetAssistantConversationsRequest proto.InternalMessageInfo + +type ConversationInfo struct { + // id is a unique conversation ID. + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + // title is a title of the conversation. + Title string `protobuf:"bytes,2,opt,name=title,proto3" json:"title,omitempty"` + // createdTime is the time when the conversation was created. + CreatedTime time.Time `protobuf:"bytes,3,opt,name=created_time,json=createdTime,proto3,stdtime" json:"created_time"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *ConversationInfo) Reset() { *m = ConversationInfo{} } +func (m *ConversationInfo) String() string { return proto.CompactTextString(m) } +func (*ConversationInfo) ProtoMessage() {} +func (*ConversationInfo) Descriptor() ([]byte, []int) { + return fileDescriptor_0ffcffcda38ae159, []int{209} +} +func (m *ConversationInfo) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *ConversationInfo) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_ConversationInfo.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *ConversationInfo) XXX_Merge(src proto.Message) { + xxx_messageInfo_ConversationInfo.Merge(m, src) +} +func (m *ConversationInfo) XXX_Size() int { + return m.Size() +} +func (m *ConversationInfo) XXX_DiscardUnknown() { + xxx_messageInfo_ConversationInfo.DiscardUnknown(m) +} + +var xxx_messageInfo_ConversationInfo proto.InternalMessageInfo + +func (m *ConversationInfo) GetId() string { + if m != nil { + return m.Id + } + return "" +} + +func (m *ConversationInfo) GetTitle() string { + if m != nil { + return m.Title + } + return "" +} + +func (m *ConversationInfo) GetCreatedTime() time.Time { + if m != nil { + return m.CreatedTime + } + return time.Time{} +} + +type GetAssistantConversationsResponse struct { + // conversations is a list of conversations. + Conversations []*ConversationInfo `protobuf:"bytes,1,rep,name=conversations,proto3" json:"conversations,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *GetAssistantConversationsResponse) Reset() { *m = GetAssistantConversationsResponse{} } +func (m *GetAssistantConversationsResponse) String() string { return proto.CompactTextString(m) } +func (*GetAssistantConversationsResponse) ProtoMessage() {} +func (*GetAssistantConversationsResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_0ffcffcda38ae159, []int{210} +} +func (m *GetAssistantConversationsResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *GetAssistantConversationsResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_GetAssistantConversationsResponse.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *GetAssistantConversationsResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_GetAssistantConversationsResponse.Merge(m, src) +} +func (m *GetAssistantConversationsResponse) XXX_Size() int { + return m.Size() +} +func (m *GetAssistantConversationsResponse) XXX_DiscardUnknown() { + xxx_messageInfo_GetAssistantConversationsResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_GetAssistantConversationsResponse proto.InternalMessageInfo + +func (m *GetAssistantConversationsResponse) GetConversations() []*ConversationInfo { + if m != nil { + return m.Conversations + } + return nil +} + +type CreateAssistantConversationRequest struct { + // createdTime is the time when the conversation was created. + CreatedTime time.Time `protobuf:"bytes,1,opt,name=created_time,json=createdTime,proto3,stdtime" json:"created_time"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *CreateAssistantConversationRequest) Reset() { *m = CreateAssistantConversationRequest{} } +func (m *CreateAssistantConversationRequest) String() string { return proto.CompactTextString(m) } +func (*CreateAssistantConversationRequest) ProtoMessage() {} +func (*CreateAssistantConversationRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_0ffcffcda38ae159, []int{211} +} +func (m *CreateAssistantConversationRequest) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *CreateAssistantConversationRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_CreateAssistantConversationRequest.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *CreateAssistantConversationRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_CreateAssistantConversationRequest.Merge(m, src) +} +func (m *CreateAssistantConversationRequest) XXX_Size() int { + return m.Size() +} +func (m *CreateAssistantConversationRequest) XXX_DiscardUnknown() { + xxx_messageInfo_CreateAssistantConversationRequest.DiscardUnknown(m) +} + +var xxx_messageInfo_CreateAssistantConversationRequest proto.InternalMessageInfo + +func (m *CreateAssistantConversationRequest) GetCreatedTime() time.Time { + if m != nil { + return m.CreatedTime + } + return time.Time{} +} + +type CreateAssistantConversationResponse struct { + // id is a unique conversation ID. + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *CreateAssistantConversationResponse) Reset() { *m = CreateAssistantConversationResponse{} } +func (m *CreateAssistantConversationResponse) String() string { return proto.CompactTextString(m) } +func (*CreateAssistantConversationResponse) ProtoMessage() {} +func (*CreateAssistantConversationResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_0ffcffcda38ae159, []int{212} +} +func (m *CreateAssistantConversationResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *CreateAssistantConversationResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_CreateAssistantConversationResponse.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *CreateAssistantConversationResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_CreateAssistantConversationResponse.Merge(m, src) +} +func (m *CreateAssistantConversationResponse) XXX_Size() int { + return m.Size() +} +func (m *CreateAssistantConversationResponse) XXX_DiscardUnknown() { + xxx_messageInfo_CreateAssistantConversationResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_CreateAssistantConversationResponse proto.InternalMessageInfo + +func (m *CreateAssistantConversationResponse) GetId() string { + if m != nil { + return m.Id + } + return "" +} + func init() { proto.RegisterEnum("proto.Operation", Operation_name, Operation_value) proto.RegisterEnum("proto.DeviceType", DeviceType_name, DeviceType_value) @@ -14264,6 +14685,14 @@ func init() { proto.RegisterType((*UpdateHeadlessAuthenticationStateRequest)(nil), "proto.UpdateHeadlessAuthenticationStateRequest") proto.RegisterType((*ExportUpgradeWindowsRequest)(nil), "proto.ExportUpgradeWindowsRequest") proto.RegisterType((*ExportUpgradeWindowsResponse)(nil), "proto.ExportUpgradeWindowsResponse") + proto.RegisterType((*AssistantRequest)(nil), "proto.AssistantRequest") + proto.RegisterType((*AssistantMessage)(nil), "proto.AssistantMessage") + proto.RegisterType((*GetAssistantMessagesResponse)(nil), "proto.GetAssistantMessagesResponse") + proto.RegisterType((*GetAssistantConversationsRequest)(nil), "proto.GetAssistantConversationsRequest") + proto.RegisterType((*ConversationInfo)(nil), "proto.ConversationInfo") + proto.RegisterType((*GetAssistantConversationsResponse)(nil), "proto.GetAssistantConversationsResponse") + proto.RegisterType((*CreateAssistantConversationRequest)(nil), "proto.CreateAssistantConversationRequest") + proto.RegisterType((*CreateAssistantConversationResponse)(nil), "proto.CreateAssistantConversationResponse") } func init() { @@ -14271,834 +14700,850 @@ func init() { } var fileDescriptor_0ffcffcda38ae159 = []byte{ - // 13228 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xc4, 0xbd, 0x5d, 0x6c, 0x1c, 0x49, - 0x92, 0x18, 0xac, 0x6e, 0x92, 0x22, 0x19, 0xfc, 0x6b, 0xa5, 0x48, 0xb1, 0xd5, 0xa4, 0xd8, 0x52, - 0x69, 0xa4, 0xd1, 0x68, 0x77, 0xf5, 0x43, 0xcd, 0xff, 0xcc, 0xce, 0x6c, 0x77, 0x93, 0x12, 0x29, - 0x51, 0x24, 0xa7, 0x9a, 0x6c, 0xcd, 0xee, 0xce, 0x6e, 0x6f, 0xb1, 0x3b, 0x45, 0xd5, 0xc7, 0x66, - 0x57, 0x6f, 0x55, 0xb5, 0x34, 0xba, 0x0f, 0xdf, 0x67, 0x9f, 0xcf, 0x77, 0x0f, 0x36, 0xce, 0x3e, - 0xc3, 0x77, 0x86, 0x0f, 0x86, 0x71, 0x06, 0xec, 0x17, 0x1b, 0x30, 0x60, 0x18, 0x38, 0xdc, 0x8b, - 0x5f, 0xce, 0x36, 0xe0, 0xb5, 0x81, 0x03, 0x0c, 0xd8, 0x07, 0x03, 0x7e, 0xa0, 0x7d, 0xfb, 0x48, - 0xc0, 0x0f, 0x86, 0x61, 0x3f, 0x2c, 0x60, 0xc0, 0xc8, 0xdf, 0xca, 0xac, 0xca, 0xaa, 0x26, 0x35, - 0xdc, 0xf1, 0x8b, 0xc4, 0xce, 0x8c, 0x88, 0xfc, 0x8f, 0x8a, 0x88, 0x8c, 0x8c, 0x80, 0x3b, 0x21, - 0xee, 0xe0, 0x9e, 0xe7, 0x87, 0x77, 0x3b, 0x78, 0xdf, 0x69, 0xbd, 0xbe, 0xdb, 0xea, 0xb8, 0xb8, - 0x1b, 0xde, 0xed, 0xf9, 0x5e, 0xe8, 0xdd, 0x75, 0xfa, 0xe1, 0x8b, 0x00, 0xfb, 0x2f, 0xdd, 0x16, - 0xbe, 0x43, 0x4b, 0xd0, 0x08, 0xfd, 0xaf, 0x34, 0xbb, 0xef, 0xed, 0x7b, 0x0c, 0x86, 0xfc, 0xc5, - 0x2a, 0x4b, 0x0b, 0xfb, 0x9e, 0xb7, 0xdf, 0xc1, 0x0c, 0x79, 0xaf, 0xff, 0xfc, 0x2e, 0x3e, 0xec, - 0x85, 0xaf, 0x79, 0x65, 0x39, 0x5e, 0x19, 0xba, 0x87, 0x38, 0x08, 0x9d, 0xc3, 0x1e, 0x07, 0x78, - 0x47, 0x76, 0xc5, 0x09, 0x43, 0x52, 0x13, 0xba, 0x5e, 0xf7, 0xee, 0xcb, 0xfb, 0xea, 0x4f, 0x0e, - 0x7a, 0x2b, 0xb3, 0xd7, 0x2d, 0xec, 0x87, 0x41, 0x82, 0x28, 0x87, 0x0c, 0x5f, 0xf7, 0x70, 0x70, - 0x17, 0xbf, 0xc4, 0xdd, 0x50, 0xfc, 0xc7, 0x41, 0xaf, 0x99, 0x41, 0xe9, 0xbf, 0x1c, 0xe4, 0x7b, - 0x66, 0x90, 0x57, 0x78, 0x8f, 0xcc, 0x54, 0x57, 0xfe, 0x31, 0x00, 0xdc, 0x77, 0x7a, 0x3d, 0xec, - 0x47, 0x7f, 0x24, 0xfa, 0xda, 0x0f, 0x9c, 0x7d, 0xcc, 0xfb, 0xf8, 0xf2, 0xbe, 0xfa, 0x93, 0x81, - 0x5a, 0xbf, 0xb3, 0x04, 0x23, 0xab, 0xa4, 0x00, 0x7d, 0x08, 0xc3, 0x3b, 0xaf, 0x7b, 0xb8, 0x98, - 0xbb, 0x9a, 0xbb, 0x35, 0xbd, 0x5c, 0x60, 0xf5, 0x77, 0xb6, 0x7a, 0xd8, 0xa7, 0x13, 0x56, 0x45, - 0xc7, 0x47, 0xe5, 0x69, 0xd2, 0xee, 0x77, 0xbd, 0x43, 0x37, 0xa4, 0x0b, 0x62, 0x53, 0x0c, 0xf4, - 0x0c, 0xa6, 0x6d, 0x1c, 0x78, 0x7d, 0xbf, 0x85, 0xd7, 0xb0, 0xd3, 0xc6, 0x7e, 0x31, 0x7f, 0x35, - 0x77, 0x6b, 0x62, 0x79, 0xee, 0x0e, 0x1b, 0xb2, 0x5e, 0x59, 0xbd, 0x74, 0x7c, 0x54, 0x46, 0x3e, - 0x2f, 0x8b, 0x88, 0xad, 0x9d, 0xb3, 0x63, 0x64, 0xd0, 0x57, 0x30, 0x55, 0xc3, 0x7e, 0x58, 0xe9, - 0x87, 0x2f, 0x3c, 0xdf, 0x0d, 0x5f, 0x17, 0x87, 0x28, 0xdd, 0x4b, 0x9c, 0xae, 0x56, 0xd7, 0x58, - 0xae, 0x2e, 0x1e, 0x1f, 0x95, 0x8b, 0x64, 0xcd, 0x9a, 0x8e, 0x28, 0xd5, 0xc8, 0xeb, 0xc4, 0xd0, - 0x97, 0x30, 0x59, 0x27, 0x9b, 0xa1, 0xb5, 0xe3, 0x1d, 0xe0, 0x6e, 0x50, 0x1c, 0xd6, 0x3a, 0xad, - 0x56, 0x35, 0x96, 0xab, 0x0b, 0xc7, 0x47, 0xe5, 0x79, 0xba, 0x77, 0x5a, 0xcd, 0x90, 0x16, 0x6a, - 0xa4, 0x35, 0x4a, 0xe8, 0x67, 0x30, 0xbd, 0xed, 0x7b, 0x2f, 0xdd, 0xc0, 0xf5, 0xba, 0xb4, 0xa8, - 0x38, 0x42, 0x69, 0xcf, 0x73, 0xda, 0x7a, 0x65, 0x63, 0xb9, 0x7a, 0xe5, 0xf8, 0xa8, 0x7c, 0xb9, - 0x27, 0x4a, 0x59, 0x03, 0xfa, 0xcc, 0xe8, 0x28, 0x68, 0x07, 0x26, 0x6a, 0x9d, 0x7e, 0x10, 0x62, - 0x7f, 0xd3, 0x39, 0xc4, 0xc5, 0xf3, 0x94, 0xfc, 0xac, 0x98, 0x97, 0xa8, 0xa6, 0xb1, 0x5c, 0x2d, - 0x1d, 0x1f, 0x95, 0x2f, 0xb5, 0x58, 0x51, 0xb3, 0xeb, 0x1c, 0xea, 0x53, 0xae, 0x92, 0x41, 0x1f, - 0xc0, 0xf0, 0x6e, 0x80, 0xfd, 0xe2, 0x18, 0x25, 0x37, 0xc5, 0xc9, 0x91, 0xa2, 0xc6, 0x32, 0x5b, - 0xff, 0x7e, 0x80, 0x7d, 0x0d, 0x9f, 0x22, 0x10, 0x44, 0xdb, 0xeb, 0xe0, 0xe2, 0xb8, 0x86, 0x48, - 0x8a, 0x1a, 0xef, 0x33, 0x44, 0xdf, 0xeb, 0xe8, 0x0d, 0x53, 0x04, 0xb4, 0x0e, 0xe3, 0xa4, 0xe5, - 0xa0, 0xe7, 0xb4, 0x70, 0x11, 0x28, 0x76, 0x81, 0x63, 0xcb, 0xf2, 0xea, 0xfc, 0xf1, 0x51, 0xf9, - 0x62, 0x57, 0xfc, 0xd4, 0xa8, 0x44, 0xd8, 0xe8, 0x73, 0x38, 0x5f, 0xc7, 0xfe, 0x4b, 0xec, 0x17, - 0x27, 0x28, 0x9d, 0x19, 0xb1, 0x90, 0xb4, 0xb0, 0xb1, 0x5c, 0x9d, 0x3d, 0x3e, 0x2a, 0x17, 0x02, - 0xfa, 0x4b, 0xa3, 0xc1, 0xd1, 0xc8, 0x6e, 0xb3, 0xf1, 0x4b, 0xec, 0x07, 0x78, 0xa7, 0xdf, 0xed, - 0xe2, 0x4e, 0x71, 0x52, 0xdb, 0x6d, 0x5a, 0x9d, 0xd8, 0x6d, 0x3e, 0x2b, 0x6c, 0x86, 0xb4, 0x54, - 0xdf, 0x6d, 0x1a, 0x02, 0x7a, 0x01, 0x05, 0xf6, 0x57, 0xcd, 0xeb, 0x76, 0x71, 0x8b, 0x1c, 0xa9, - 0xe2, 0x14, 0x6d, 0xe0, 0x32, 0x6f, 0x20, 0x5e, 0xdd, 0x58, 0xae, 0x96, 0x8f, 0x8f, 0xca, 0x0b, - 0x8c, 0x76, 0xb3, 0x25, 0x2b, 0xb4, 0x66, 0x12, 0x54, 0xc9, 0x38, 0x2a, 0xad, 0x16, 0x0e, 0x02, - 0x1b, 0xff, 0xbc, 0x8f, 0x83, 0xb0, 0x38, 0xad, 0x8d, 0x43, 0xab, 0x6b, 0x3c, 0x60, 0xe3, 0x70, - 0x68, 0x61, 0xd3, 0x67, 0xa5, 0xfa, 0x38, 0x34, 0x04, 0xb4, 0x0d, 0x50, 0xe9, 0xf5, 0xea, 0x38, - 0x20, 0x9b, 0xb1, 0x38, 0x43, 0x49, 0x5f, 0xe4, 0xa4, 0x9f, 0xe1, 0x3d, 0x5e, 0xd1, 0x58, 0xae, - 0x5e, 0x3e, 0x3e, 0x2a, 0xcf, 0x39, 0xbd, 0x5e, 0x33, 0x60, 0x45, 0x1a, 0x51, 0x85, 0x06, 0x9b, - 0xf7, 0x43, 0x2f, 0xc4, 0x7c, 0x2b, 0x16, 0x0b, 0xb1, 0x79, 0x57, 0xea, 0x44, 0x7f, 0x7d, 0x5a, - 0xd8, 0xe4, 0xdb, 0x3a, 0x3e, 0xef, 0x0a, 0x02, 0x39, 0x8b, 0x2b, 0x4e, 0xe8, 0xec, 0x39, 0x01, - 0xe6, 0xdb, 0xe3, 0x82, 0x76, 0x16, 0xf5, 0xca, 0xc6, 0x03, 0x76, 0x16, 0xdb, 0xbc, 0xb4, 0x69, - 0xd8, 0x2f, 0x31, 0x7a, 0x64, 0x46, 0xa2, 0x81, 0x17, 0xd1, 0x80, 0x19, 0x79, 0x85, 0xf7, 0xcc, - 0x33, 0x12, 0x81, 0xa2, 0x35, 0x18, 0x7b, 0x86, 0xf7, 0x18, 0xe7, 0xb8, 0x48, 0xe9, 0x5d, 0x88, - 0xe8, 0x31, 0x9e, 0xf1, 0x80, 0x9d, 0x0a, 0x42, 0x2d, 0xc9, 0x2d, 0x24, 0x36, 0xfa, 0xed, 0x1c, - 0xcc, 0x8b, 0x13, 0x8e, 0xc3, 0x57, 0x9e, 0x7f, 0xe0, 0x76, 0xf7, 0x6b, 0x5e, 0xf7, 0xb9, 0xbb, - 0x5f, 0x9c, 0xa5, 0x94, 0xaf, 0xc6, 0x98, 0x46, 0x0c, 0xaa, 0xb1, 0x5c, 0x7d, 0xfb, 0xf8, 0xa8, - 0x7c, 0x5d, 0x32, 0x10, 0x59, 0x4f, 0x36, 0xe4, 0x73, 0x77, 0x5f, 0x6b, 0x38, 0xad, 0x2d, 0xf4, - 0x9b, 0x39, 0xb8, 0xc4, 0x47, 0x67, 0xe3, 0x96, 0xe7, 0xb7, 0xa3, 0x6e, 0xcc, 0xd1, 0x6e, 0x94, - 0xe5, 0x69, 0x35, 0x01, 0x35, 0x96, 0xab, 0x37, 0x8f, 0x8f, 0xca, 0x16, 0x9f, 0xb8, 0xa6, 0x2f, - 0xaa, 0x4d, 0x9d, 0x48, 0x69, 0x88, 0xec, 0x04, 0xc2, 0xfc, 0xb7, 0x7d, 0xfc, 0x1c, 0xfb, 0xb8, - 0xdb, 0xc2, 0xc5, 0x4b, 0xda, 0x4e, 0xd0, 0x2b, 0x05, 0x57, 0x26, 0x9f, 0x92, 0x66, 0x4f, 0x16, - 0xeb, 0x3b, 0x41, 0x47, 0x41, 0x3f, 0x07, 0xc4, 0x27, 0xa0, 0xd2, 0x6f, 0xbb, 0x21, 0x1f, 0xe0, - 0x3c, 0x6d, 0x65, 0x41, 0x9f, 0x67, 0x05, 0xa0, 0xb1, 0x5c, 0xb5, 0x8e, 0x8f, 0xca, 0x4b, 0x62, - 0x8a, 0x1d, 0x52, 0x65, 0x1a, 0x98, 0x81, 0x38, 0xe1, 0xbc, 0x1b, 0x5e, 0xeb, 0xa0, 0x58, 0xd4, - 0x38, 0x2f, 0x29, 0x12, 0x2c, 0xbb, 0xe3, 0xb5, 0x0e, 0x74, 0xce, 0x4b, 0x6a, 0x51, 0x08, 0x17, - 0xf9, 0x2a, 0xd9, 0x38, 0x08, 0x7d, 0x97, 0xf2, 0x8e, 0xa0, 0x78, 0x99, 0xd2, 0x59, 0x14, 0x3c, - 0x38, 0x09, 0xd1, 0x78, 0x97, 0xf5, 0x96, 0x6f, 0x84, 0xa6, 0xaf, 0xd4, 0x69, 0xcd, 0x98, 0xc8, - 0xa3, 0xff, 0x0f, 0xe6, 0x9e, 0xb9, 0xdd, 0xb6, 0xf7, 0x2a, 0x58, 0xc1, 0xc1, 0x41, 0xe8, 0xf5, - 0xea, 0x4c, 0x28, 0x2c, 0x96, 0x68, 0xbb, 0x4b, 0x62, 0x9b, 0x9b, 0x60, 0x1a, 0x0f, 0xaa, 0x37, - 0x8e, 0x8f, 0xca, 0xd7, 0x5e, 0xb1, 0xca, 0x66, 0x9b, 0xd5, 0x36, 0xb9, 0x5c, 0xa9, 0x35, 0x6e, - 0x6e, 0x85, 0x6c, 0x01, 0xbd, 0xa2, 0xb8, 0xa0, 0x6d, 0x01, 0xbd, 0x52, 0x30, 0x83, 0x58, 0x83, - 0xfa, 0x16, 0xd0, 0x51, 0xd0, 0x23, 0x18, 0x13, 0xec, 0xa1, 0xb8, 0xa8, 0x1d, 0x5d, 0x51, 0xdc, - 0x78, 0xc0, 0x24, 0x20, 0xc1, 0x62, 0xf4, 0x93, 0x2b, 0xa0, 0xd0, 0x06, 0x8c, 0x53, 0x1e, 0x49, - 0x59, 0xd6, 0x15, 0x4a, 0x09, 0x89, 0x8d, 0x2a, 0xca, 0x1b, 0x0f, 0xaa, 0xc5, 0xe3, 0xa3, 0xf2, - 0x2c, 0xe3, 0xb2, 0x09, 0x46, 0x15, 0x11, 0x40, 0x0f, 0x60, 0xa8, 0xd2, 0xeb, 0x15, 0x97, 0x28, - 0x9d, 0xc9, 0x88, 0x4e, 0xe3, 0x41, 0xf5, 0xc2, 0xf1, 0x51, 0x79, 0xca, 0xe9, 0xe9, 0xc3, 0x22, - 0xd0, 0x68, 0x0f, 0x0a, 0xf5, 0xae, 0xf7, 0xea, 0x79, 0xc7, 0x39, 0xc0, 0x82, 0xbd, 0x95, 0xd3, - 0xd9, 0x1b, 0xfd, 0x58, 0x05, 0x02, 0xc1, 0xc8, 0xe4, 0x12, 0xf4, 0xc8, 0x67, 0xf1, 0x49, 0x7f, - 0x0f, 0xfb, 0x5d, 0x1c, 0xe2, 0x80, 0x8f, 0xf6, 0xaa, 0xf6, 0x59, 0x8c, 0x57, 0x37, 0x1e, 0xb0, - 0x96, 0x0e, 0x64, 0xb9, 0x69, 0xec, 0x09, 0xaa, 0xa8, 0x03, 0x17, 0xa2, 0x32, 0xf1, 0xa9, 0xb9, - 0x46, 0x9b, 0x2a, 0x25, 0x9a, 0x8a, 0x3e, 0x37, 0x57, 0x8f, 0x8f, 0xca, 0x8b, 0x4a, 0x5b, 0xa6, - 0x4f, 0x4e, 0x92, 0x30, 0x7a, 0x02, 0xe3, 0xeb, 0xdd, 0x20, 0x74, 0x3a, 0x1d, 0xec, 0x17, 0x2d, - 0x6d, 0xf9, 0x64, 0x79, 0xe3, 0x3e, 0x63, 0xe2, 0xae, 0x28, 0xd0, 0x57, 0x4f, 0xc2, 0xa1, 0x36, - 0xcc, 0xa8, 0xdf, 0x1c, 0x72, 0x5e, 0xae, 0x53, 0x92, 0x45, 0xc3, 0x47, 0x8c, 0x9c, 0x94, 0xfb, - 0xd5, 0xa5, 0xe3, 0xa3, 0x72, 0x49, 0xfb, 0x8a, 0xc5, 0x8f, 0x48, 0x9c, 0x24, 0xfa, 0x2b, 0x84, - 0x47, 0x57, 0x9e, 0x6e, 0xac, 0xb7, 0xb7, 0x79, 0x11, 0x15, 0x3a, 0x89, 0x3c, 0xff, 0x96, 0xce, - 0xa3, 0x8d, 0x40, 0x8d, 0xfb, 0xec, 0x4b, 0x11, 0x38, 0x87, 0x9d, 0xa6, 0xdb, 0x96, 0xe7, 0xb2, - 0xd9, 0xe3, 0x00, 0x31, 0x26, 0x6d, 0x24, 0x82, 0x7e, 0x02, 0xd3, 0xb2, 0x86, 0xed, 0xb8, 0x1b, - 0xe9, 0x3b, 0x8e, 0x0e, 0x52, 0x69, 0x2f, 0xb9, 0xe1, 0x62, 0xc4, 0xc8, 0xa9, 0x22, 0x02, 0xeb, - 0x23, 0xdf, 0xeb, 0xf7, 0x8a, 0x37, 0xb5, 0x65, 0x91, 0xe5, 0x8d, 0xfb, 0xec, 0x54, 0x11, 0x59, - 0xb7, 0xb9, 0x4f, 0x4a, 0xf4, 0x75, 0x91, 0x80, 0xe4, 0x3b, 0xbd, 0xbb, 0xce, 0xb9, 0xfc, 0xdb, - 0xda, 0x61, 0x17, 0xc5, 0x62, 0x89, 0xfb, 0xae, 0x89, 0xa1, 0x4b, 0x6c, 0xe4, 0xc0, 0xf4, 0xd6, - 0x41, 0xe8, 0xac, 0x1f, 0x12, 0xad, 0xcd, 0xee, 0x77, 0x70, 0xf1, 0x96, 0xc6, 0x98, 0xf4, 0x4a, - 0xb1, 0xbe, 0xde, 0x41, 0xe8, 0x34, 0x5d, 0x5a, 0xdc, 0xf4, 0xfb, 0x31, 0x01, 0x3b, 0x46, 0x90, - 0xf0, 0x3e, 0x52, 0x52, 0x09, 0x02, 0x77, 0xbf, 0x7b, 0x88, 0xbb, 0x61, 0xf1, 0x9d, 0x44, 0x13, - 0x51, 0x65, 0xe3, 0x3e, 0xe3, 0x7d, 0xb4, 0x09, 0x47, 0x16, 0x27, 0x5b, 0x88, 0x50, 0x50, 0x1d, - 0x26, 0xd6, 0xbb, 0x21, 0xde, 0x67, 0x0a, 0x63, 0xf1, 0xb6, 0xa6, 0x94, 0x28, 0x35, 0x8d, 0xfb, - 0x4c, 0x14, 0x72, 0xa3, 0x22, 0x5d, 0x27, 0x51, 0x60, 0x89, 0xa6, 0xf3, 0xcc, 0x09, 0x5b, 0x2f, - 0x88, 0x82, 0xd5, 0x0f, 0x8a, 0xdf, 0xd1, 0x88, 0x2a, 0x35, 0x8d, 0xfb, 0x4c, 0xd3, 0x79, 0x45, - 0x8a, 0x9a, 0x01, 0x2d, 0xd3, 0xa9, 0x2a, 0xc0, 0x55, 0x80, 0x31, 0xa1, 0x6b, 0x3e, 0x1e, 0x1e, - 0x1b, 0x2d, 0x8c, 0x59, 0x7f, 0x94, 0x83, 0x11, 0x0a, 0x81, 0x3e, 0x87, 0x91, 0x27, 0x6e, 0xb7, - 0x1d, 0x14, 0x73, 0x57, 0x87, 0x14, 0x7d, 0x84, 0x56, 0x92, 0x8a, 0xea, 0xfc, 0x2f, 0x8e, 0xca, - 0xe7, 0x8e, 0x8f, 0xca, 0x33, 0x07, 0x04, 0x4c, 0x51, 0x87, 0x19, 0x1e, 0xda, 0x85, 0x8b, 0x95, - 0x4e, 0xc7, 0x7b, 0xb5, 0xed, 0xf8, 0xa1, 0xeb, 0x74, 0xea, 0x7d, 0x2a, 0x40, 0x53, 0xa5, 0x78, - 0xac, 0x7a, 0xfd, 0xf8, 0xa8, 0x5c, 0x76, 0x48, 0x75, 0xb3, 0xc7, 0xea, 0x9b, 0x01, 0x03, 0x50, - 0x08, 0x99, 0xf0, 0xad, 0x3f, 0x3e, 0x0f, 0x85, 0x35, 0x2f, 0x08, 0x89, 0x16, 0x2b, 0xc5, 0xf1, - 0xeb, 0x70, 0x9e, 0x94, 0xad, 0xaf, 0x50, 0xbd, 0x7d, 0xbc, 0x3a, 0x71, 0x7c, 0x54, 0x1e, 0x7d, - 0xe1, 0x05, 0x61, 0xd3, 0x6d, 0xdb, 0xbc, 0x0a, 0xbd, 0x03, 0x63, 0x9b, 0x5e, 0x1b, 0x53, 0x55, - 0x31, 0x4f, 0xc1, 0xa6, 0x8e, 0x8f, 0xca, 0xe3, 0x5d, 0xaf, 0x8d, 0xa9, 0x46, 0x68, 0xcb, 0x6a, - 0xd4, 0xe0, 0x9a, 0xdc, 0x10, 0x05, 0xab, 0x1e, 0x1f, 0x95, 0x87, 0x89, 0xea, 0xf6, 0xab, 0xa3, - 0xf2, 0xfb, 0xfb, 0x6e, 0xf8, 0xa2, 0xbf, 0x77, 0xa7, 0xe5, 0x1d, 0xde, 0xdd, 0xf7, 0x9d, 0x97, - 0x2e, 0x33, 0xa4, 0x38, 0x9d, 0xbb, 0x91, 0xb9, 0xa5, 0xe7, 0x72, 0x2b, 0x47, 0xfd, 0x75, 0x10, - 0xe2, 0x43, 0x42, 0x89, 0x2b, 0x7a, 0xcf, 0x60, 0xb6, 0xd2, 0x6e, 0xbb, 0x0c, 0x63, 0xdb, 0x77, - 0xbb, 0x2d, 0xb7, 0xe7, 0x74, 0x88, 0xd2, 0x3d, 0x74, 0x6b, 0x9c, 0x4f, 0x8a, 0xac, 0x6f, 0xf6, - 0x24, 0x80, 0x32, 0x29, 0x46, 0x02, 0xe8, 0x01, 0x8c, 0xad, 0x6c, 0xd6, 0xa9, 0x1a, 0x58, 0x1c, - 0xa1, 0xc4, 0xe8, 0x81, 0x6b, 0x77, 0x03, 0x3a, 0x34, 0x95, 0x80, 0x04, 0x44, 0xef, 0xc3, 0xe4, - 0x76, 0x7f, 0xaf, 0xe3, 0xb6, 0x76, 0x36, 0xea, 0x4f, 0xf0, 0x6b, 0xaa, 0x3f, 0x4f, 0x32, 0x71, - 0xa9, 0x47, 0xcb, 0x9b, 0x61, 0x27, 0x68, 0x1e, 0xe0, 0xd7, 0xb6, 0x06, 0x17, 0xe1, 0xd5, 0xeb, - 0x6b, 0x04, 0x6f, 0x34, 0x81, 0x17, 0x04, 0x2f, 0x54, 0x3c, 0x06, 0x87, 0xee, 0x02, 0x30, 0xad, - 0xa4, 0xd2, 0x6e, 0x33, 0xf5, 0x7a, 0xbc, 0x3a, 0x73, 0x7c, 0x54, 0x9e, 0xe0, 0x7a, 0x8c, 0xd3, - 0x6e, 0xfb, 0xb6, 0x02, 0x82, 0x6a, 0x30, 0x66, 0x7b, 0x6c, 0x82, 0xb9, 0x52, 0x3d, 0x23, 0x95, - 0x6a, 0x56, 0xcc, 0xcd, 0x28, 0xfc, 0x97, 0x3a, 0x4a, 0x01, 0x81, 0xca, 0x30, 0xba, 0xe9, 0xd5, - 0x9c, 0xd6, 0x0b, 0xa6, 0x5a, 0x8f, 0x55, 0x47, 0x8e, 0x8f, 0xca, 0xb9, 0xef, 0xd9, 0xa2, 0x14, - 0xbd, 0x84, 0x89, 0x68, 0xa1, 0x82, 0xe2, 0x04, 0x9d, 0xbe, 0x1d, 0x72, 0x8a, 0x02, 0x5a, 0xdc, - 0x24, 0x4b, 0xaf, 0xcc, 0xe0, 0x37, 0xd8, 0x05, 0x6a, 0x43, 0xa8, 0x03, 0x57, 0x76, 0xc9, 0xc7, - 0x6d, 0xaf, 0x83, 0xa3, 0xe2, 0x4a, 0x10, 0x60, 0x9f, 0xd0, 0x5a, 0x5f, 0xa1, 0x9a, 0xf7, 0x38, - 0x17, 0xf9, 0xa3, 0x9e, 0x10, 0x3e, 0xc4, 0x40, 0x9a, 0x6e, 0x5b, 0x19, 0x71, 0x36, 0x31, 0xeb, - 0x7f, 0xe7, 0x00, 0x6d, 0xf5, 0x70, 0xb7, 0x5e, 0x5f, 0x23, 0x47, 0x47, 0x9c, 0x9c, 0xef, 0xc2, - 0x38, 0x5b, 0x23, 0xb2, 0x90, 0x79, 0xba, 0x90, 0xd3, 0xc7, 0x47, 0x65, 0xe0, 0x0b, 0x49, 0x16, - 0x31, 0x02, 0x40, 0x37, 0x60, 0x68, 0x67, 0x67, 0x83, 0x1e, 0x8b, 0xa1, 0xea, 0xc5, 0xe3, 0xa3, - 0xf2, 0x50, 0x18, 0x76, 0x7e, 0x75, 0x54, 0x1e, 0x5b, 0xe9, 0x33, 0x46, 0x65, 0x93, 0x7a, 0x74, - 0x03, 0x46, 0x85, 0x68, 0x31, 0x1c, 0x9d, 0x47, 0x2e, 0x33, 0xd8, 0xa2, 0x0e, 0x7d, 0x87, 0x1b, - 0x5a, 0x46, 0x4c, 0x86, 0x96, 0x31, 0x72, 0xe8, 0xc8, 0xc7, 0x87, 0x1b, 0x57, 0xee, 0xc0, 0x08, - 0x5b, 0x9f, 0xf3, 0x94, 0x1f, 0xc5, 0xac, 0x2b, 0xe3, 0xc7, 0x47, 0xe5, 0x11, 0xba, 0x4e, 0x36, - 0x03, 0x7b, 0x3c, 0x3c, 0x96, 0x2b, 0xe4, 0xed, 0x31, 0x82, 0x4b, 0x4e, 0x80, 0xf5, 0x1d, 0x98, - 0x50, 0x86, 0x8f, 0x16, 0x61, 0x98, 0xfc, 0x4f, 0xf9, 0xc5, 0x24, 0x6b, 0xac, 0x45, 0xa6, 0x85, - 0x96, 0x5a, 0x7f, 0x3c, 0x05, 0x05, 0x82, 0xa9, 0x31, 0x19, 0x6d, 0xaa, 0x72, 0x83, 0xa6, 0xea, - 0x16, 0xc8, 0xb6, 0x39, 0xb7, 0x99, 0x3c, 0x3e, 0x2a, 0x8f, 0xf5, 0x79, 0x59, 0xd4, 0x33, 0x54, - 0x87, 0xd1, 0xd5, 0xaf, 0x7b, 0xae, 0x8f, 0x03, 0x6e, 0xd9, 0x2b, 0xdd, 0x61, 0xb6, 0xdd, 0x3b, - 0xc2, 0xb6, 0x7b, 0x67, 0x47, 0xd8, 0x76, 0xab, 0x57, 0x38, 0xd7, 0xbd, 0x80, 0x19, 0x4a, 0xb4, - 0x01, 0x7e, 0xef, 0xbf, 0x94, 0x73, 0xb6, 0xa0, 0x84, 0xbe, 0x0b, 0xe7, 0x1f, 0x7a, 0xfe, 0xa1, - 0x13, 0xf2, 0x15, 0xa0, 0x66, 0x9f, 0xe7, 0xb4, 0x44, 0xd9, 0x33, 0x1c, 0x06, 0x3d, 0x84, 0x69, - 0xdb, 0xeb, 0x87, 0x78, 0xc7, 0x13, 0xeb, 0x36, 0x42, 0xb1, 0xe8, 0xf7, 0xd5, 0x27, 0x35, 0xcd, - 0xd0, 0x4b, 0x0a, 0x7d, 0x76, 0x0c, 0x0b, 0xad, 0xc2, 0xb4, 0x66, 0x27, 0x61, 0xab, 0x35, 0xce, - 0x75, 0x48, 0xcd, 0xba, 0xa2, 0xb2, 0xa4, 0x18, 0x12, 0xda, 0x34, 0x09, 0xa9, 0xa3, 0xb4, 0x47, - 0x03, 0x05, 0x51, 0x93, 0x18, 0x8a, 0x61, 0x86, 0x77, 0x54, 0x6a, 0x25, 0x63, 0xdc, 0xba, 0xc2, - 0xec, 0xbb, 0xb1, 0xda, 0xea, 0x75, 0x3e, 0xcb, 0x0b, 0x72, 0xec, 0x49, 0x3d, 0xc5, 0x8e, 0xd3, - 0x24, 0x4c, 0x58, 0x7e, 0x60, 0xc6, 0x69, 0x6f, 0x99, 0xcd, 0x4e, 0x7c, 0x60, 0x54, 0xf6, 0x24, - 0x3f, 0x35, 0x1b, 0x30, 0xb2, 0x1b, 0x38, 0xfb, 0x8c, 0x39, 0x4d, 0x2f, 0x5f, 0xe3, 0x3d, 0x8a, - 0xef, 0x3e, 0x6a, 0xe6, 0xa5, 0x80, 0xf4, 0xdc, 0xcd, 0x50, 0x1b, 0xb6, 0xfa, 0xd1, 0xa5, 0x75, - 0xe8, 0x0b, 0x00, 0xde, 0x2b, 0xa2, 0xe8, 0x4c, 0x70, 0x69, 0x4c, 0x1b, 0x64, 0xa5, 0xd7, 0xab, - 0x2e, 0xf1, 0xf1, 0x5d, 0x92, 0xe3, 0xd3, 0x54, 0x1f, 0x5b, 0x21, 0x82, 0x3e, 0x87, 0x49, 0xca, - 0xbb, 0xc4, 0x8a, 0x4e, 0xd2, 0x15, 0xa5, 0x96, 0x60, 0xca, 0x8e, 0x0c, 0xeb, 0xa9, 0x21, 0xa0, - 0xff, 0x1f, 0xe6, 0x38, 0xb9, 0x98, 0xd6, 0x39, 0xc5, 0xb5, 0x6c, 0xad, 0x7b, 0x3a, 0x4c, 0xf5, - 0x36, 0xef, 0xa9, 0x25, 0x7b, 0x9a, 0xaa, 0x87, 0xda, 0xe6, 0x66, 0xd0, 0x3a, 0xcc, 0xec, 0x06, - 0x58, 0x1b, 0xc3, 0x34, 0xfd, 0x10, 0x50, 0x05, 0xaa, 0x1f, 0xe0, 0x66, 0xda, 0x38, 0xe2, 0x78, - 0xc8, 0x06, 0xb4, 0xe2, 0x7b, 0xbd, 0xd8, 0x1e, 0x9f, 0xa1, 0x33, 0x42, 0xed, 0x01, 0x6d, 0xdf, - 0xeb, 0x35, 0xd3, 0x37, 0xba, 0x01, 0x1b, 0xfd, 0x14, 0x2e, 0x45, 0x66, 0xcb, 0x15, 0xd7, 0xd9, - 0xef, 0x7a, 0x41, 0xe8, 0xb6, 0xd6, 0x57, 0xa8, 0x05, 0x90, 0xf3, 0xff, 0xc8, 0xec, 0xd9, 0x6c, - 0x4b, 0x10, 0x9d, 0xff, 0xa7, 0x50, 0x41, 0x3f, 0x86, 0x29, 0xde, 0x16, 0x37, 0x93, 0x5f, 0xc8, - 0xde, 0x68, 0x12, 0x98, 0x9b, 0xac, 0xc5, 0x4f, 0x26, 0x23, 0xe9, 0xb4, 0xd0, 0x57, 0x30, 0xf1, - 0xf4, 0x61, 0xc5, 0xc6, 0x41, 0xcf, 0xeb, 0x06, 0x98, 0x9b, 0xfd, 0x96, 0x38, 0xe9, 0xa7, 0x0f, - 0x2b, 0x95, 0x7e, 0xf8, 0x02, 0x77, 0x43, 0xb7, 0xe5, 0x84, 0x58, 0x40, 0x31, 0x09, 0xf5, 0xf0, - 0xb9, 0xd3, 0xf4, 0x79, 0x89, 0x32, 0x0a, 0x95, 0x1c, 0x2a, 0xc1, 0x58, 0xbd, 0xbe, 0xb6, 0xe1, - 0xed, 0xbb, 0xcc, 0x02, 0x38, 0x6e, 0xcb, 0xdf, 0x68, 0x0f, 0xe6, 0x94, 0x8b, 0x2c, 0x2a, 0xea, - 0x62, 0x2a, 0xcf, 0x33, 0x83, 0xde, 0xf7, 0xe4, 0x4d, 0xdc, 0x1d, 0xf5, 0xbe, 0xeb, 0xe5, 0xfd, - 0x3b, 0x95, 0xe8, 0x67, 0x5d, 0x20, 0xd9, 0xb3, 0x8e, 0xa1, 0xd4, 0xfa, 0x12, 0xc6, 0xe5, 0xb1, - 0x43, 0xa3, 0x30, 0x54, 0xe9, 0x74, 0x0a, 0xe7, 0xc8, 0x1f, 0xf5, 0xfa, 0x5a, 0x21, 0x87, 0xa6, - 0x01, 0x22, 0x5e, 0x53, 0xc8, 0xa3, 0xc9, 0xc8, 0xea, 0x51, 0x18, 0xa2, 0xf0, 0xbd, 0x5e, 0x61, - 0x18, 0xa1, 0xb8, 0xb9, 0xa5, 0x30, 0x62, 0xed, 0xc2, 0xb8, 0x9c, 0x48, 0x34, 0x03, 0x13, 0xbb, - 0x9b, 0xf5, 0xed, 0xd5, 0xda, 0xfa, 0xc3, 0xf5, 0xd5, 0x95, 0xc2, 0x39, 0x74, 0x05, 0x2e, 0xef, - 0xd4, 0xd7, 0x9a, 0x2b, 0xd5, 0xe6, 0xc6, 0x56, 0xad, 0xb2, 0xd1, 0xdc, 0xb6, 0xb7, 0xbe, 0xfc, - 0x61, 0x73, 0x67, 0x77, 0x73, 0x73, 0x75, 0xa3, 0x90, 0x43, 0x45, 0x98, 0x25, 0xd5, 0x4f, 0x76, - 0xab, 0xab, 0x2a, 0x40, 0x21, 0x6f, 0xfd, 0xa7, 0x5c, 0x82, 0xd3, 0xa1, 0x65, 0x98, 0xe0, 0xea, - 0x25, 0x5d, 0x7d, 0x26, 0x20, 0x17, 0x8e, 0x8f, 0xca, 0x93, 0x42, 0x35, 0xa5, 0x0b, 0xab, 0x02, - 0x91, 0x8f, 0xd7, 0x36, 0x59, 0xc2, 0x96, 0xd7, 0x51, 0x3f, 0x5e, 0x3d, 0x5e, 0x66, 0xcb, 0x5a, - 0xb4, 0xac, 0x7c, 0xe6, 0x98, 0xb4, 0x4c, 0x25, 0x32, 0xf1, 0x99, 0x53, 0x59, 0x9e, 0xfc, 0xe0, - 0x2d, 0x2b, 0xd6, 0xa1, 0xe1, 0x08, 0xc7, 0xc0, 0x62, 0x25, 0x9c, 0xd5, 0x4f, 0x61, 0x22, 0xe8, - 0x93, 0x84, 0x31, 0x8b, 0x8d, 0x90, 0x72, 0xc9, 0x18, 0xaf, 0x48, 0xd8, 0xa9, 0xca, 0x30, 0xc2, - 0x76, 0x17, 0x1b, 0x24, 0x95, 0x22, 0x3a, 0xa4, 0xc0, 0x66, 0xe5, 0xd6, 0xdf, 0x18, 0x52, 0x19, - 0x2a, 0x91, 0x1a, 0x94, 0x49, 0xa4, 0x52, 0x03, 0x9d, 0x3c, 0x5a, 0x4a, 0x04, 0x04, 0xae, 0x61, - 0xaf, 0xaf, 0x70, 0x8a, 0x54, 0x40, 0x10, 0xf6, 0x5a, 0xb7, 0x6d, 0x47, 0x00, 0x44, 0x1a, 0x66, - 0xd2, 0x02, 0x95, 0x86, 0x87, 0x22, 0x69, 0x98, 0xcb, 0x13, 0x4c, 0x1a, 0x8e, 0x40, 0xc8, 0x42, - 0xaa, 0xb7, 0x5d, 0xc3, 0xd1, 0x42, 0xaa, 0xf7, 0x5a, 0xfa, 0x5d, 0xd6, 0xc7, 0x00, 0x95, 0x67, - 0x75, 0x2a, 0x0b, 0xda, 0x9b, 0xfc, 0xa3, 0x4e, 0x8f, 0x9f, 0xf3, 0x2a, 0xe0, 0xd2, 0xa4, 0xaf, - 0x8a, 0xcd, 0x0a, 0x34, 0xaa, 0xc2, 0x54, 0xe5, 0x37, 0xfa, 0x3e, 0x5e, 0x6f, 0x93, 0x13, 0x1c, - 0x32, 0xfd, 0x60, 0x9c, 0xdf, 0x94, 0x90, 0x8a, 0xa6, 0xcb, 0x6b, 0x14, 0x02, 0x3a, 0x0a, 0xda, - 0x82, 0x0b, 0x8f, 0x6a, 0xc2, 0xbc, 0x51, 0x69, 0xb5, 0xbc, 0x7e, 0x37, 0xe4, 0x5f, 0xf2, 0x6b, - 0xc7, 0x47, 0xe5, 0x2b, 0xfb, 0xad, 0xc8, 0x42, 0xe2, 0xb0, 0x6a, 0xf5, 0x53, 0x9e, 0xc0, 0xb5, - 0x3a, 0x30, 0xfd, 0x08, 0x87, 0x64, 0x2b, 0x09, 0xb1, 0x2c, 0x7b, 0x4d, 0x3e, 0x85, 0x89, 0x67, - 0x6e, 0xf8, 0xa2, 0x8e, 0x5b, 0x3e, 0x0e, 0x85, 0xf6, 0xc9, 0x54, 0x64, 0x37, 0x7c, 0xd1, 0x0c, - 0x58, 0xb9, 0xca, 0x80, 0x14, 0x70, 0x6b, 0x15, 0x66, 0x78, 0x6b, 0x52, 0x0a, 0x5c, 0xd6, 0x09, - 0xe6, 0x28, 0x41, 0xba, 0x0a, 0x2a, 0x41, 0x9d, 0xcc, 0x1f, 0xe7, 0x61, 0xae, 0xf6, 0xc2, 0xe9, - 0xee, 0xe3, 0x6d, 0x27, 0x08, 0x5e, 0x79, 0x7e, 0x5b, 0xe9, 0x3c, 0x15, 0x81, 0x13, 0x9d, 0xa7, - 0x32, 0xef, 0x32, 0x4c, 0x6c, 0x75, 0xda, 0x02, 0x87, 0x8b, 0xe7, 0xb4, 0x2d, 0xaf, 0xd3, 0x6e, - 0xf6, 0x04, 0x2d, 0x15, 0x88, 0xe0, 0x6c, 0xe2, 0x57, 0x12, 0x67, 0x28, 0xc2, 0xe9, 0xe2, 0x57, - 0x0a, 0x8e, 0x02, 0x84, 0x56, 0xe1, 0x42, 0x1d, 0xb7, 0xbc, 0x6e, 0xfb, 0xa1, 0xd3, 0x0a, 0x3d, - 0x9f, 0x5d, 0xb9, 0x0c, 0x47, 0x12, 0x4c, 0x40, 0x2b, 0x9b, 0xcf, 0x69, 0x2d, 0xbb, 0x69, 0xb1, - 0x93, 0x18, 0x68, 0x8b, 0x5e, 0xd8, 0xd0, 0x1b, 0x7b, 0x2e, 0xd3, 0xdf, 0xb8, 0x23, 0xaf, 0xf0, - 0x6b, 0x3e, 0xa6, 0x9b, 0xc2, 0xe9, 0x48, 0xad, 0x44, 0x7e, 0x10, 0x28, 0x73, 0x11, 0x90, 0xb6, - 0x24, 0x62, 0xed, 0xc2, 0xd4, 0x76, 0xa7, 0xbf, 0xef, 0x76, 0x09, 0x1b, 0xa8, 0xe3, 0x9f, 0xa3, - 0x15, 0x80, 0xa8, 0x80, 0x5b, 0x26, 0x84, 0x4d, 0x2c, 0xaa, 0x68, 0x3c, 0xe0, 0x07, 0x89, 0x96, - 0x50, 0xd1, 0xcd, 0x56, 0xf0, 0xac, 0xbf, 0x36, 0x04, 0x88, 0x2f, 0x00, 0xe5, 0xf5, 0x75, 0x1c, - 0x12, 0x36, 0x7c, 0x09, 0xf2, 0xd2, 0x80, 0x70, 0xfe, 0xf8, 0xa8, 0x9c, 0x77, 0xdb, 0x76, 0x7e, - 0x7d, 0x05, 0xbd, 0x0b, 0x23, 0x14, 0x8c, 0xce, 0xff, 0xb4, 0x6c, 0x4f, 0xa5, 0xc0, 0x38, 0x07, - 0xfd, 0x06, 0xd9, 0x0c, 0x18, 0xbd, 0x07, 0xe3, 0x2b, 0xb8, 0x83, 0xf7, 0x9d, 0xd0, 0x13, 0xa7, - 0x9b, 0xa9, 0xe4, 0xa2, 0x50, 0xd9, 0x73, 0x11, 0x24, 0x91, 0xdb, 0x6d, 0xec, 0x04, 0x5e, 0x57, - 0x95, 0xdb, 0x7d, 0x5a, 0xa2, 0xca, 0xed, 0x0c, 0x06, 0xfd, 0x41, 0x0e, 0x26, 0x2a, 0xdd, 0x2e, - 0x57, 0x75, 0x03, 0x3e, 0xeb, 0x73, 0x77, 0xa4, 0x27, 0xc4, 0x86, 0xb3, 0x87, 0x3b, 0x0d, 0xa7, - 0xd3, 0xc7, 0x41, 0xf5, 0x2b, 0x22, 0x4a, 0xfd, 0xe7, 0xa3, 0xf2, 0x27, 0xa7, 0x50, 0x5e, 0x23, - 0x9f, 0x8a, 0x1d, 0xdf, 0x71, 0xc3, 0x80, 0xde, 0x66, 0x46, 0x0d, 0xaa, 0xe7, 0x46, 0xe9, 0x07, - 0x7a, 0x47, 0x55, 0xd6, 0x38, 0x2f, 0x8e, 0x69, 0xd1, 0x5c, 0x4f, 0xb3, 0xae, 0xcb, 0x2f, 0xe1, - 0xfa, 0x4a, 0xda, 0x12, 0x58, 0x35, 0x58, 0x7c, 0x84, 0x43, 0x1b, 0x07, 0x38, 0x14, 0x9b, 0x96, - 0x6e, 0xb9, 0xc8, 0xfe, 0x33, 0x4a, 0x7f, 0x4b, 0x64, 0xba, 0x1e, 0x6c, 0xa3, 0x8a, 0x1a, 0xeb, - 0xaf, 0xe6, 0xa0, 0x5c, 0xf3, 0x31, 0x93, 0x44, 0x52, 0x08, 0x65, 0x33, 0x93, 0x45, 0xee, 0x1c, - 0x92, 0x8f, 0x6a, 0xc9, 0x2c, 0x71, 0x07, 0x90, 0x93, 0x29, 0xc7, 0xd6, 0x73, 0x98, 0xb3, 0x71, - 0x17, 0xbf, 0x22, 0xaa, 0xba, 0xa6, 0x5f, 0x96, 0x61, 0x84, 0x9d, 0xbc, 0xc4, 0x10, 0x58, 0xf9, - 0xe9, 0x74, 0x75, 0xeb, 0x1f, 0xe7, 0xa1, 0xc0, 0x86, 0x5b, 0xf5, 0xc2, 0x93, 0x8d, 0x8f, 0x8f, - 0x20, 0x3f, 0x40, 0xbd, 0xbf, 0x19, 0xcd, 0xf6, 0x50, 0x24, 0x1c, 0xd0, 0xae, 0x92, 0x6f, 0x9c, - 0xa8, 0x24, 0x03, 0x62, 0xbb, 0x80, 0x99, 0xb7, 0x12, 0x3a, 0x3a, 0xfa, 0x9d, 0x1c, 0x9c, 0x67, - 0xfb, 0x2a, 0x7b, 0xe7, 0x3e, 0x3b, 0x9b, 0x9d, 0x5b, 0x08, 0xe9, 0x5f, 0xea, 0x39, 0x62, 0x75, - 0xd6, 0x3f, 0xcd, 0xc3, 0x05, 0x65, 0xae, 0xb8, 0xf8, 0xf9, 0x0e, 0x93, 0x6d, 0x94, 0x09, 0xa3, - 0x06, 0x43, 0x6a, 0x11, 0x8f, 0x74, 0x78, 0x3a, 0x73, 0xef, 0xc0, 0x18, 0x19, 0x52, 0xdc, 0xb6, - 0x48, 0xbf, 0xb0, 0x0c, 0x54, 0x54, 0x9f, 0x78, 0xf6, 0xee, 0xc2, 0x18, 0xfd, 0x93, 0xac, 0xc8, - 0x70, 0xfa, 0x8a, 0x48, 0x20, 0xe4, 0x02, 0x3c, 0xf6, 0xdc, 0xee, 0x53, 0x1c, 0xbe, 0xf0, 0xda, - 0xfc, 0x5b, 0xbf, 0x4e, 0xf8, 0xe0, 0xff, 0xe3, 0xb9, 0xdd, 0xe6, 0x21, 0x2d, 0x3e, 0xad, 0xed, - 0x2a, 0x22, 0x68, 0x2b, 0xc4, 0xad, 0x7b, 0x50, 0x20, 0x2c, 0xeb, 0xe4, 0x5b, 0xcb, 0x9a, 0x05, - 0xf4, 0x08, 0x87, 0x55, 0x4f, 0xfb, 0x98, 0x5a, 0x53, 0x30, 0xb1, 0xed, 0x76, 0xf7, 0xc5, 0xcf, - 0x7f, 0x36, 0x04, 0x93, 0xec, 0x37, 0x5f, 0x81, 0x98, 0xc8, 0x93, 0x3b, 0x89, 0xc8, 0xf3, 0x21, - 0x4c, 0xf1, 0x2b, 0x32, 0xec, 0xd3, 0xab, 0x13, 0xb6, 0x1e, 0x54, 0x99, 0x61, 0x57, 0x64, 0xcd, - 0x97, 0xac, 0xc6, 0xd6, 0x01, 0xd1, 0x06, 0x4c, 0xb3, 0x82, 0x87, 0xd8, 0x09, 0xfb, 0x91, 0x3d, - 0x66, 0x86, 0xeb, 0x33, 0xa2, 0x98, 0xf1, 0x33, 0x4e, 0xeb, 0x39, 0x2f, 0xb4, 0x63, 0xb8, 0xe8, - 0x73, 0x98, 0xd9, 0xf6, 0xbd, 0xaf, 0x5f, 0x2b, 0x42, 0x1e, 0x63, 0xe9, 0x73, 0xc7, 0x47, 0xe5, - 0x0b, 0x3d, 0x52, 0xd5, 0x54, 0x45, 0xbd, 0x38, 0x34, 0xd9, 0x53, 0xeb, 0x41, 0xd5, 0xf3, 0xdd, - 0xee, 0x3e, 0x5d, 0xcd, 0x31, 0xb6, 0xa7, 0xdc, 0xa0, 0xb9, 0x47, 0x0b, 0x6d, 0x59, 0x1d, 0xb3, - 0xac, 0x8e, 0x0e, 0xb6, 0xac, 0xde, 0x03, 0xd8, 0xf0, 0x9c, 0x76, 0xa5, 0xd3, 0xa9, 0x55, 0x02, - 0x6a, 0x0c, 0xe1, 0x42, 0x4c, 0xc7, 0x73, 0xda, 0x4d, 0xa7, 0xd3, 0x69, 0xb6, 0x9c, 0xc0, 0x56, - 0x60, 0x1e, 0x0f, 0x8f, 0x9d, 0x2f, 0x8c, 0xda, 0x33, 0x1b, 0x6e, 0x0b, 0x77, 0x03, 0xfc, 0xcc, - 0xf1, 0xbb, 0x6e, 0x77, 0x3f, 0xb0, 0xfe, 0xf6, 0x08, 0x8c, 0xc9, 0x21, 0xdf, 0x51, 0x15, 0x22, - 0x2e, 0x1a, 0x51, 0x0e, 0x15, 0x19, 0x6c, 0x6c, 0x05, 0x02, 0x5d, 0x66, 0xf7, 0xb1, 0x4c, 0x28, - 0x1b, 0x25, 0xbb, 0xdb, 0xe9, 0xf5, 0xd8, 0xad, 0xeb, 0x25, 0xc8, 0xaf, 0x54, 0xe9, 0xfc, 0x8f, - 0xb1, 0x2f, 0x41, 0x7b, 0xcf, 0xce, 0xaf, 0x54, 0xc9, 0x2e, 0xdb, 0x5a, 0x5f, 0xa9, 0xd1, 0xa9, - 0x1c, 0x63, 0xbb, 0xcc, 0x73, 0xdb, 0x2d, 0x9b, 0x96, 0x92, 0xda, 0x7a, 0xe5, 0xe9, 0x06, 0x9f, - 0x2e, 0x5a, 0x1b, 0x38, 0x87, 0x1d, 0x9b, 0x96, 0x12, 0x55, 0x81, 0xe9, 0xde, 0x35, 0xaf, 0x1b, - 0xfa, 0x5e, 0x27, 0xa0, 0x12, 0xed, 0x18, 0x5b, 0x4e, 0xae, 0xb4, 0xb7, 0x78, 0x95, 0x1d, 0x03, - 0x45, 0xcf, 0x60, 0xbe, 0xd2, 0x7e, 0xe9, 0x74, 0x5b, 0xb8, 0xcd, 0x6a, 0x9e, 0x79, 0xfe, 0xc1, - 0xf3, 0x8e, 0xf7, 0x2a, 0xa0, 0xf3, 0x3d, 0xc6, 0x6d, 0x5c, 0x1c, 0x44, 0xd8, 0x00, 0x5e, 0x09, - 0x20, 0x3b, 0x0d, 0x9b, 0x70, 0xc9, 0x5a, 0xc7, 0xeb, 0xb7, 0xf9, 0x2a, 0x50, 0x2e, 0xd9, 0x22, - 0x05, 0x36, 0x2b, 0x27, 0xb3, 0xb4, 0x56, 0x7f, 0x4a, 0x2d, 0x4a, 0x7c, 0x96, 0x5e, 0x04, 0x87, - 0x36, 0x29, 0x43, 0x37, 0x60, 0x54, 0x68, 0x3d, 0xcc, 0xb6, 0x4d, 0x0d, 0xad, 0x42, 0xdb, 0x11, - 0x75, 0xe4, 0x48, 0xd8, 0xb8, 0xe5, 0xbd, 0xc4, 0xfe, 0xeb, 0x9a, 0xd7, 0xc6, 0xc2, 0xfe, 0xc1, - 0xf5, 0x7b, 0x56, 0xd1, 0x6c, 0x91, 0x1a, 0x5b, 0x07, 0x24, 0x0d, 0x30, 0xc1, 0x29, 0xa0, 0x4e, - 0x4e, 0xbc, 0x01, 0x26, 0x58, 0x05, 0xb6, 0xa8, 0x43, 0x2b, 0x70, 0xa1, 0xd2, 0x0f, 0xbd, 0x43, - 0x27, 0x74, 0x5b, 0xbb, 0xbd, 0x7d, 0xdf, 0x21, 0x8d, 0x14, 0x28, 0x02, 0x55, 0xed, 0x1c, 0x51, - 0xd9, 0xec, 0xf3, 0x5a, 0x3b, 0x89, 0x80, 0xde, 0x87, 0xc9, 0xf5, 0x80, 0xd9, 0xb8, 0x9c, 0x00, - 0xb7, 0xa9, 0xa1, 0x82, 0xf7, 0xd2, 0x0d, 0x9a, 0xd4, 0xe2, 0xd5, 0x24, 0xca, 0x60, 0xdb, 0xd6, - 0xe0, 0x1e, 0x0f, 0x8f, 0x4d, 0x14, 0x26, 0x1f, 0x0f, 0x8f, 0x4d, 0x16, 0xa6, 0x1e, 0x0f, 0x8f, - 0x4d, 0x15, 0xa6, 0xad, 0xfb, 0x70, 0x81, 0xf1, 0xa7, 0x13, 0x2b, 0x0a, 0xd6, 0x36, 0x40, 0x1d, - 0x1f, 0x3a, 0xbd, 0x17, 0x1e, 0xd9, 0xc9, 0x55, 0xf5, 0x17, 0x17, 0x34, 0x91, 0x74, 0xce, 0xe1, - 0x15, 0x8d, 0x07, 0x42, 0xbf, 0x13, 0x90, 0xb6, 0x82, 0x65, 0xfd, 0x59, 0x1e, 0x10, 0x75, 0x52, - 0xa9, 0x87, 0x3e, 0x76, 0x0e, 0x45, 0x37, 0x3e, 0x82, 0x49, 0xf6, 0xa9, 0x61, 0xc5, 0xb4, 0x3b, - 0x44, 0x8a, 0x65, 0x3c, 0x46, 0xad, 0x5a, 0x3b, 0x67, 0x6b, 0xa0, 0x04, 0xd5, 0xc6, 0x41, 0xff, - 0x50, 0xa0, 0xe6, 0x35, 0x54, 0xb5, 0x8a, 0xa0, 0xaa, 0xbf, 0xd1, 0xe7, 0x30, 0x5d, 0xf3, 0x0e, - 0x7b, 0x64, 0x4e, 0x38, 0xf2, 0x10, 0xff, 0xe2, 0xf2, 0x76, 0xb5, 0xca, 0xb5, 0x73, 0x76, 0x0c, - 0x1c, 0x6d, 0xc2, 0xc5, 0x87, 0x9d, 0x7e, 0xf0, 0xa2, 0xd2, 0x6d, 0xd7, 0x3a, 0x5e, 0x20, 0xa8, - 0x0c, 0x73, 0x8b, 0x35, 0xe7, 0x90, 0x49, 0x88, 0xb5, 0x73, 0xb6, 0x09, 0x11, 0xdd, 0xe0, 0x1e, - 0xb7, 0xd2, 0xfa, 0xcf, 0x1d, 0x72, 0xb7, 0xba, 0x78, 0xeb, 0xf9, 0xda, 0x39, 0x9b, 0xd5, 0x56, - 0xc7, 0x61, 0x54, 0x7c, 0x1d, 0xee, 0x92, 0x4d, 0x26, 0xa7, 0x93, 0x5d, 0x61, 0xa2, 0x12, 0x8c, - 0xed, 0xf6, 0x08, 0xd3, 0x12, 0xa2, 0x9f, 0x2d, 0x7f, 0x5b, 0xdf, 0xd5, 0x67, 0x1a, 0x2d, 0xaa, - 0xfa, 0x39, 0x03, 0x8e, 0x0a, 0xac, 0x35, 0x7d, 0x72, 0xb3, 0xa1, 0xb5, 0x76, 0xf3, 0xb1, 0x76, - 0x0b, 0xf1, 0xb9, 0xb6, 0xe6, 0x8c, 0x93, 0x67, 0x7d, 0x09, 0x4b, 0xbb, 0x3d, 0xa2, 0x0c, 0x55, - 0x7a, 0xbd, 0x8e, 0xdb, 0x62, 0xd6, 0x27, 0xfa, 0x15, 0x11, 0x9b, 0xe5, 0x7d, 0xe9, 0xce, 0x99, - 0x4b, 0x75, 0x7e, 0x81, 0xe3, 0xa3, 0xf2, 0x79, 0xf6, 0x35, 0x12, 0x5e, 0x9c, 0xd6, 0xef, 0xe5, - 0x60, 0x89, 0x9d, 0x80, 0x54, 0xd2, 0xdf, 0x51, 0x9d, 0x4e, 0x15, 0xf1, 0x46, 0xba, 0x98, 0xaa, - 0x6e, 0xa5, 0xd1, 0x05, 0x6b, 0x3e, 0xfd, 0x82, 0x55, 0x1c, 0xb0, 0x21, 0xe3, 0x01, 0xfb, 0x02, - 0x2c, 0xde, 0xa3, 0x4e, 0x27, 0xd1, 0xa9, 0xe0, 0x4d, 0x7a, 0x65, 0xfd, 0xb7, 0x3c, 0xcc, 0x3f, - 0xc2, 0x5d, 0xec, 0x3b, 0x74, 0x9c, 0x9a, 0x24, 0xaf, 0xde, 0xbf, 0xe4, 0x32, 0xef, 0x5f, 0xa4, - 0x98, 0x9a, 0x4f, 0x11, 0x53, 0x2f, 0xc3, 0xd0, 0xae, 0xbd, 0xce, 0x87, 0x45, 0x19, 0x70, 0xdf, - 0x77, 0x6d, 0x52, 0x86, 0xd6, 0xa3, 0xbb, 0x9b, 0xe1, 0x81, 0x77, 0x37, 0x17, 0xb9, 0x2d, 0x7b, - 0x94, 0xdf, 0xdd, 0xe8, 0x37, 0x36, 0x9b, 0x8a, 0x2c, 0x4c, 0xd8, 0xcd, 0x6d, 0x7e, 0xa6, 0x52, - 0x06, 0xc8, 0xc5, 0xda, 0xd5, 0x6e, 0xe8, 0xbf, 0x66, 0x5b, 0x80, 0x49, 0xb7, 0x42, 0xa6, 0x2d, - 0x7d, 0x01, 0x13, 0x0a, 0x08, 0x2a, 0xc0, 0xd0, 0x01, 0xbf, 0xb7, 0x1a, 0xb7, 0xc9, 0x9f, 0xe8, - 0xbb, 0x30, 0xf2, 0x92, 0xc8, 0xd7, 0x9c, 0x8d, 0x5c, 0x8a, 0x64, 0xef, 0x7a, 0x48, 0xa4, 0x0a, - 0x26, 0x7c, 0xdb, 0x0c, 0xe8, 0xe3, 0xfc, 0x87, 0x39, 0xeb, 0x13, 0x28, 0x26, 0x7b, 0xc3, 0x45, - 0xb5, 0x41, 0xda, 0x8b, 0xb5, 0x02, 0xb3, 0x8f, 0x70, 0x18, 0x79, 0xbc, 0x2a, 0xd7, 0x6a, 0xb1, - 0x73, 0x96, 0x61, 0x35, 0xb3, 0xea, 0x30, 0x17, 0xa3, 0xc2, 0xdb, 0xff, 0x18, 0x46, 0x85, 0xaf, - 0x4c, 0x2e, 0xdd, 0x57, 0x86, 0xee, 0x5b, 0x4e, 0xd9, 0x16, 0x08, 0xd6, 0x33, 0xb8, 0xa4, 0x11, - 0x0d, 0x24, 0xd5, 0xef, 0xc3, 0x98, 0x28, 0x8b, 0x99, 0x1b, 0x34, 0xb2, 0x74, 0x6b, 0x05, 0x02, - 0x59, 0xa2, 0x58, 0x2f, 0xe0, 0xd2, 0x86, 0x1b, 0xe8, 0x94, 0xd9, 0xa8, 0x17, 0x60, 0xbc, 0x47, - 0xbe, 0x67, 0x81, 0xfb, 0x1b, 0x6c, 0x7f, 0x8e, 0xd8, 0x63, 0xa4, 0xa0, 0xee, 0xfe, 0x06, 0x46, - 0x57, 0x00, 0x68, 0x25, 0x9d, 0x3f, 0xce, 0x5e, 0x28, 0x38, 0xd3, 0x03, 0x11, 0xd0, 0x8b, 0x51, - 0xb6, 0x21, 0x6d, 0xfa, 0xb7, 0xe5, 0xc3, 0x7c, 0xa2, 0x25, 0x3e, 0x86, 0xbb, 0x20, 0xbb, 0x96, - 0x31, 0x06, 0x5b, 0x02, 0xa1, 0x9b, 0x30, 0xd3, 0xc5, 0x5f, 0x87, 0xcd, 0x44, 0x1f, 0xa6, 0x48, - 0xf1, 0xb6, 0xe8, 0x87, 0xf5, 0x13, 0xaa, 0x95, 0xc7, 0x9d, 0xd9, 0xce, 0x6c, 0xf2, 0x3a, 0x50, - 0x22, 0x43, 0xd2, 0x7d, 0x97, 0x7e, 0x6d, 0x13, 0xf8, 0x12, 0x16, 0x8c, 0xad, 0xfd, 0xba, 0x27, - 0xf1, 0x2f, 0xf2, 0x30, 0xcf, 0xbe, 0x52, 0xc9, 0xa3, 0x71, 0x72, 0x1e, 0xf6, 0xad, 0x18, 0x93, - 0xef, 0x19, 0x8c, 0xc9, 0x14, 0x45, 0x35, 0x26, 0x6b, 0x26, 0xe4, 0x0f, 0xcd, 0x26, 0x64, 0x2a, - 0xd2, 0xe9, 0x26, 0xe4, 0xb8, 0xe1, 0x78, 0x35, 0xdd, 0x70, 0x4c, 0xcd, 0x68, 0x06, 0xc3, 0xb1, - 0xc1, 0x5c, 0xfc, 0x78, 0x78, 0x2c, 0x5f, 0x18, 0xb2, 0x1a, 0x50, 0x4c, 0x4e, 0xf1, 0x19, 0xf0, - 0x8d, 0x3f, 0xc9, 0xc1, 0x15, 0x2e, 0x61, 0xc4, 0x0e, 0xc1, 0xe9, 0x57, 0xf0, 0x3d, 0x98, 0xe4, - 0xb8, 0x3b, 0xd1, 0x66, 0x61, 0x6e, 0xa9, 0x82, 0x13, 0x32, 0x76, 0xaa, 0x81, 0xa1, 0xf7, 0x14, - 0x2b, 0x01, 0xb3, 0x3c, 0x5d, 0x26, 0x9f, 0x4b, 0x66, 0x4e, 0x48, 0xb5, 0x15, 0x58, 0x5f, 0xc1, - 0x52, 0x5a, 0xc7, 0xcf, 0x60, 0x5e, 0xfe, 0x34, 0x07, 0x0b, 0x9c, 0xbc, 0x76, 0x9c, 0xde, 0x88, - 0xe5, 0x9f, 0xc2, 0x93, 0xe2, 0x31, 0x4c, 0x90, 0x06, 0x45, 0xbf, 0xf5, 0x77, 0x52, 0x4a, 0xcd, - 0x8a, 0x13, 0x3a, 0xfc, 0x0a, 0xcc, 0x39, 0xec, 0x08, 0x97, 0x49, 0x5b, 0x45, 0xb6, 0x7e, 0x04, - 0x8b, 0xe6, 0x21, 0x9c, 0xc1, 0xfc, 0x3c, 0x86, 0x92, 0x81, 0x71, 0xbe, 0xd9, 0x07, 0xf1, 0x87, - 0xb0, 0x60, 0xa4, 0x75, 0x06, 0xdd, 0x5c, 0x23, 0x9f, 0xfb, 0xf0, 0x0c, 0x96, 0xd0, 0x7a, 0x06, - 0x97, 0x0d, 0x94, 0xce, 0xa0, 0x8b, 0x8f, 0x60, 0x5e, 0x8a, 0xb9, 0xdf, 0xa8, 0x87, 0x4f, 0xe1, - 0x0a, 0x23, 0x74, 0x36, 0xab, 0xf2, 0x04, 0x16, 0x38, 0xb9, 0x33, 0x98, 0xbd, 0x35, 0x58, 0x8c, - 0xb4, 0x59, 0x83, 0x2c, 0x71, 0x62, 0x26, 0x63, 0x6d, 0xc0, 0xd5, 0x88, 0x52, 0xca, 0x87, 0xf5, - 0xe4, 0xd4, 0x98, 0x2c, 0x16, 0xad, 0xd2, 0x19, 0xca, 0x62, 0x11, 0xe0, 0x99, 0x89, 0x13, 0xeb, - 0x70, 0x91, 0x11, 0xd6, 0xe5, 0xd6, 0x65, 0x55, 0x6e, 0x35, 0x3e, 0x31, 0x4a, 0x8a, 0xb2, 0x4f, - 0xa9, 0x28, 0x2b, 0x40, 0xa2, 0x1e, 0xbe, 0x07, 0xe7, 0xf9, 0x2b, 0x4a, 0xd6, 0x3f, 0x03, 0x31, - 0x26, 0xa9, 0x33, 0x34, 0x0e, 0x6c, 0xfd, 0x14, 0xae, 0x30, 0x35, 0x30, 0xee, 0xad, 0x2f, 0x96, - 0xe4, 0xfb, 0x31, 0x2d, 0x30, 0xe3, 0x51, 0x80, 0x49, 0x19, 0xdc, 0x13, 0x7b, 0x3b, 0x8d, 0xfe, - 0x89, 0xdc, 0x67, 0x85, 0x76, 0x97, 0x37, 0x6a, 0x77, 0xd7, 0xe1, 0x9a, 0xd4, 0xee, 0xe2, 0xcd, - 0x48, 0x73, 0xef, 0x8f, 0x60, 0x81, 0x0d, 0x54, 0x7f, 0x3b, 0x26, 0xba, 0xf1, 0x49, 0x6c, 0x98, - 0xa9, 0x8f, 0xd3, 0x4c, 0x83, 0xfc, 0xdd, 0x9c, 0x38, 0x72, 0x66, 0xe2, 0xdf, 0xb6, 0xba, 0xbb, - 0x09, 0x65, 0x39, 0x21, 0x7a, 0x8f, 0xde, 0x4c, 0xd7, 0x7d, 0x0a, 0x73, 0x89, 0xf7, 0x0d, 0x44, - 0x60, 0x45, 0xef, 0x92, 0x63, 0x41, 0x0b, 0xc4, 0xb6, 0x4b, 0x7d, 0x0f, 0x61, 0x4b, 0x48, 0xab, - 0x09, 0x8b, 0xc9, 0xa5, 0x70, 0x5b, 0xc2, 0xd5, 0x09, 0x7d, 0x4e, 0x8e, 0x30, 0x7b, 0x64, 0x91, - 0x1b, 0xf0, 0xc8, 0x82, 0x9f, 0x63, 0x86, 0x2e, 0xb0, 0x2c, 0x4b, 0xb0, 0x9a, 0xd8, 0xf8, 0x49, - 0xeb, 0x62, 0x3f, 0xb8, 0x80, 0x44, 0x55, 0xad, 0x6e, 0x8b, 0xa6, 0x2f, 0xc3, 0x50, 0xad, 0x6e, - 0x73, 0x0f, 0x4b, 0xaa, 0x6e, 0xb7, 0x02, 0xdf, 0x26, 0x65, 0x71, 0xa9, 0x35, 0x7f, 0x02, 0xa9, - 0xf5, 0xf1, 0xf0, 0xd8, 0x50, 0x61, 0xd8, 0xfa, 0x31, 0x5c, 0xd4, 0x9a, 0xe2, 0x27, 0x36, 0xd3, - 0x0d, 0x14, 0xdd, 0x84, 0xd1, 0x5a, 0x85, 0xde, 0xd1, 0x51, 0xdb, 0xc0, 0x24, 0xe3, 0x2d, 0x2d, - 0xa7, 0x49, 0x9f, 0xc4, 0xdb, 0xa2, 0xd2, 0xfa, 0x47, 0xc3, 0x0a, 0x75, 0xc5, 0xb9, 0x36, 0x63, - 0x24, 0xf7, 0x01, 0xd8, 0x6e, 0x50, 0x06, 0x42, 0x84, 0xbd, 0x09, 0x7e, 0xad, 0xc0, 0xd8, 0xaf, - 0xad, 0x00, 0x9d, 0xd4, 0xf9, 0x96, 0xfb, 0xfb, 0x30, 0x24, 0x71, 0xf7, 0x26, 0xfd, 0x7d, 0x38, - 0xe9, 0xc0, 0x56, 0x81, 0xd0, 0x4f, 0xe3, 0x3e, 0x62, 0x23, 0xf4, 0xaa, 0xfb, 0x2d, 0x6e, 0x82, - 0x30, 0x8c, 0xed, 0x74, 0x6e, 0x62, 0xaf, 0x60, 0x8e, 0xe0, 0xba, 0xcf, 0xa9, 0x23, 0xd8, 0xea, - 0xd7, 0x21, 0xee, 0x32, 0x3e, 0x7e, 0x9e, 0xb6, 0x73, 0x23, 0xa3, 0x9d, 0x08, 0x98, 0xbf, 0xe1, - 0x8e, 0xe8, 0x34, 0xb1, 0xac, 0xb3, 0xcd, 0xf4, 0xe9, 0x86, 0xb1, 0x37, 0x56, 0xbb, 0xed, 0x9e, - 0xe7, 0x4a, 0x05, 0x82, 0x6d, 0x18, 0xbf, 0xd3, 0xc4, 0xbc, 0xdc, 0x56, 0x81, 0xac, 0x9b, 0x99, - 0xbe, 0x59, 0x63, 0x30, 0xbc, 0x53, 0xdb, 0xd9, 0x28, 0xe4, 0xac, 0xbb, 0x00, 0x4a, 0x4b, 0x00, - 0xe7, 0x37, 0xb7, 0xec, 0xa7, 0x95, 0x8d, 0xc2, 0x39, 0x34, 0x07, 0x17, 0x9e, 0xad, 0x6f, 0xae, - 0x6c, 0x3d, 0xab, 0x37, 0xeb, 0x4f, 0x2b, 0xf6, 0x4e, 0xad, 0x62, 0xaf, 0x14, 0x72, 0xd6, 0x57, - 0x30, 0xab, 0x8f, 0xf0, 0x4c, 0x37, 0x61, 0x08, 0x17, 0xa5, 0xec, 0xf2, 0xf8, 0xd9, 0x8e, 0xe2, - 0xaf, 0xc2, 0x95, 0xa1, 0xf8, 0x15, 0x1a, 0x57, 0x9b, 0xf8, 0x91, 0x51, 0x80, 0xb4, 0x8b, 0xcf, - 0x7c, 0xe6, 0xc5, 0xa7, 0xf5, 0x01, 0xcc, 0xea, 0xad, 0x9e, 0xd4, 0x1c, 0xf4, 0x16, 0x75, 0xe4, - 0x51, 0xbc, 0x2b, 0x89, 0x56, 0x1e, 0x75, 0x91, 0x73, 0xd1, 0x0f, 0xa0, 0xc0, 0xa1, 0xa2, 0xaf, - 0xec, 0x75, 0x61, 0xaf, 0xcb, 0x19, 0x3c, 0xc1, 0x85, 0x5b, 0xc1, 0xdb, 0xe2, 0x06, 0x60, 0x50, - 0x0b, 0x7f, 0x96, 0x83, 0x62, 0xcc, 0x51, 0xb1, 0xf6, 0xc2, 0xe9, 0x74, 0x70, 0x77, 0x1f, 0xa3, - 0x5b, 0x30, 0xbc, 0xb3, 0xb5, 0xb3, 0xcd, 0x2d, 0x64, 0xb3, 0x7c, 0x9b, 0x92, 0x22, 0x09, 0x63, - 0x53, 0x08, 0xf4, 0x04, 0x2e, 0x08, 0xb7, 0x15, 0x59, 0xc5, 0x15, 0x90, 0x2b, 0xd9, 0x4e, 0x30, - 0x49, 0x3c, 0xf4, 0x2e, 0xf7, 0xaa, 0xfc, 0x79, 0xdf, 0xf5, 0x71, 0x9b, 0x2a, 0xe7, 0xd3, 0xcb, - 0x28, 0xf2, 0xaa, 0x14, 0x35, 0xb6, 0x0a, 0xc6, 0x3c, 0xde, 0xad, 0x3f, 0xc8, 0xc1, 0x7c, 0x8a, - 0xe3, 0x25, 0x7a, 0x47, 0x1b, 0xce, 0x45, 0x65, 0x38, 0x02, 0x64, 0xed, 0x1c, 0x1f, 0x4f, 0x4d, - 0xf1, 0xe5, 0x19, 0x3a, 0x85, 0x2f, 0x0f, 0x7f, 0x77, 0x4d, 0xe1, 0xf8, 0xfb, 0x22, 0x5a, 0x6e, - 0xcd, 0xc0, 0x94, 0x36, 0x6f, 0x96, 0x05, 0x93, 0x6a, 0xcb, 0x64, 0x71, 0x6a, 0x5e, 0x5b, 0x2e, - 0x0e, 0xf9, 0xdb, 0xfa, 0x5b, 0x39, 0x98, 0xa5, 0x43, 0xdc, 0x77, 0xc9, 0x69, 0x8c, 0x66, 0x68, - 0x59, 0x1b, 0xc9, 0xa2, 0x36, 0x92, 0x18, 0xac, 0x1c, 0xd2, 0xc7, 0x89, 0x21, 0x2d, 0x9a, 0x86, - 0x44, 0xb5, 0x3e, 0xd7, 0xeb, 0x6a, 0x23, 0x51, 0xae, 0x21, 0xfe, 0x6e, 0x0e, 0x2e, 0x2a, 0x7d, - 0x92, 0xfd, 0xbf, 0xaf, 0x75, 0x69, 0xc1, 0xd0, 0xa5, 0xc4, 0x24, 0x57, 0x13, 0x3d, 0x7a, 0x2b, - 0xab, 0x47, 0x03, 0xe7, 0xf8, 0xcf, 0x73, 0x30, 0x67, 0x9c, 0x03, 0x74, 0x89, 0x88, 0x56, 0x2d, - 0x1f, 0x87, 0x7c, 0x7a, 0xf9, 0x2f, 0x52, 0xbe, 0x1e, 0x04, 0x7d, 0x1e, 0xac, 0x64, 0xdc, 0xe6, - 0xbf, 0xd0, 0x5b, 0x30, 0xb5, 0x8d, 0x7d, 0xd7, 0x6b, 0x33, 0x2f, 0x2f, 0x76, 0x13, 0x3e, 0x65, - 0xeb, 0x85, 0x68, 0x11, 0xc6, 0x2b, 0x9d, 0x7d, 0xcf, 0x77, 0xc3, 0x17, 0xec, 0x26, 0x68, 0xdc, - 0x8e, 0x0a, 0x08, 0xed, 0x15, 0x77, 0x5f, 0x38, 0x77, 0x4c, 0xd9, 0xfc, 0x17, 0x2a, 0xc2, 0xa8, - 0x30, 0xe8, 0x50, 0x73, 0x90, 0x2d, 0x7e, 0x12, 0x8c, 0x2f, 0x6c, 0xba, 0x09, 0xe8, 0x93, 0x22, - 0x9b, 0xff, 0xb2, 0x6e, 0xc3, 0xac, 0x69, 0x1e, 0x8d, 0x5b, 0xe6, 0x2f, 0xe7, 0xe1, 0x62, 0xa5, - 0xdd, 0x7e, 0xfa, 0xb0, 0xb2, 0x82, 0x55, 0x81, 0xe6, 0x5d, 0x18, 0x5e, 0xef, 0xba, 0x21, 0x97, - 0x66, 0x84, 0x8b, 0xb2, 0x01, 0x92, 0x40, 0x91, 0x15, 0x22, 0xff, 0x23, 0x1b, 0x2e, 0xae, 0x7e, - 0xed, 0x06, 0xa1, 0xdb, 0xdd, 0x57, 0xfd, 0x9c, 0xf3, 0x27, 0xf1, 0x73, 0x5e, 0x3b, 0x67, 0x9b, - 0x90, 0xd1, 0x0e, 0x5c, 0xda, 0xc4, 0xaf, 0x0c, 0x5b, 0x48, 0x3e, 0xff, 0x50, 0x0e, 0x7a, 0x62, - 0xe7, 0xa4, 0xe0, 0xaa, 0x3b, 0xf4, 0x77, 0xf2, 0xf4, 0x99, 0x99, 0x32, 0x30, 0xde, 0xf2, 0x2e, - 0xcc, 0x2a, 0x1d, 0x8a, 0xf8, 0x54, 0x8e, 0x3f, 0x6c, 0x35, 0x0e, 0x47, 0x3d, 0x48, 0x46, 0x74, - 0xf4, 0x0c, 0xe6, 0xf5, 0x4e, 0x45, 0x94, 0xf5, 0xc3, 0x60, 0x02, 0x59, 0x3b, 0x67, 0xa7, 0x61, - 0xa3, 0x65, 0x18, 0xaa, 0xb4, 0x0e, 0xf8, 0xb4, 0x98, 0x97, 0x8c, 0x8d, 0xac, 0xd2, 0x3a, 0xa0, - 0xcf, 0xb5, 0x5b, 0x07, 0xda, 0x79, 0xf8, 0xd7, 0x39, 0x98, 0x4f, 0x59, 0x61, 0xb4, 0x04, 0xc0, - 0x0a, 0x95, 0x2f, 0x82, 0x52, 0x42, 0x04, 0x34, 0xf6, 0x8b, 0x7a, 0x7c, 0x0d, 0x51, 0x16, 0x2c, - 0x5e, 0x52, 0x44, 0x15, 0xb6, 0x02, 0x84, 0xb6, 0x61, 0x82, 0xfd, 0x62, 0x0f, 0x3a, 0x74, 0xb6, - 0xad, 0xd4, 0x30, 0x41, 0xa6, 0x4d, 0x0b, 0x9a, 0xf1, 0x87, 0x1c, 0x2a, 0x09, 0x6e, 0xbe, 0xac, - 0xc5, 0x47, 0x21, 0x07, 0x8d, 0x6e, 0xc1, 0x79, 0x56, 0xc8, 0xd7, 0x50, 0x3c, 0xd3, 0x8c, 0x80, - 0x79, 0xbd, 0xf5, 0x0f, 0x72, 0x70, 0x89, 0x7d, 0x11, 0x13, 0x47, 0xe3, 0x03, 0xed, 0x68, 0x5c, - 0x93, 0x1d, 0x36, 0x01, 0x6b, 0xa7, 0xa3, 0xaa, 0x7b, 0xff, 0x9f, 0xf4, 0x54, 0xa8, 0x48, 0xea, - 0xbe, 0xfd, 0x87, 0x39, 0x61, 0xcd, 0x49, 0x6e, 0xdd, 0x55, 0x98, 0x7c, 0xb3, 0x2d, 0xab, 0xa1, - 0xa1, 0xf7, 0xd8, 0x8e, 0xca, 0x67, 0x8f, 0x34, 0x73, 0x53, 0x7d, 0x0a, 0xa5, 0xf4, 0xa9, 0x19, - 0xb4, 0xad, 0xac, 0x87, 0x06, 0xec, 0x37, 0x59, 0xce, 0x7e, 0x82, 0x4e, 0xfd, 0x75, 0xb7, 0x25, - 0x56, 0xf4, 0x66, 0xdc, 0x1f, 0x32, 0xd5, 0xc7, 0x4c, 0xed, 0x6d, 0x3e, 0xba, 0x36, 0xe0, 0x9b, - 0x93, 0x0a, 0x7b, 0x6a, 0xf7, 0xff, 0x45, 0x5e, 0xdf, 0x8b, 0x6f, 0xd2, 0x68, 0x0d, 0xa6, 0x36, - 0xf1, 0xab, 0x44, 0xbb, 0xd4, 0x7f, 0xa6, 0x8b, 0x5f, 0x35, 0x95, 0xb6, 0x55, 0xc7, 0x72, 0x0d, - 0x07, 0xed, 0xc1, 0xb4, 0xe0, 0x1a, 0x27, 0x65, 0x9e, 0xec, 0x35, 0x1b, 0x69, 0x21, 0xe5, 0xed, - 0x49, 0x8c, 0xe2, 0xd9, 0x9f, 0x67, 0x6b, 0x1b, 0x8a, 0xc9, 0xd9, 0xe3, 0xad, 0xbd, 0x3b, 0x68, - 0xed, 0x99, 0xd9, 0xa3, 0xad, 0xef, 0x83, 0x35, 0x6a, 0x8a, 0x92, 0x30, 0xd2, 0xb6, 0x70, 0x2f, - 0xbe, 0x18, 0xd4, 0x0f, 0x47, 0x2c, 0x86, 0xd2, 0x3f, 0xe9, 0x1e, 0x5b, 0xa3, 0xd6, 0x3c, 0x95, - 0x12, 0xef, 0xd8, 0x6d, 0x18, 0xe5, 0x45, 0xb1, 0xb7, 0xe0, 0xd1, 0xae, 0x14, 0x00, 0xd6, 0x1f, - 0xe6, 0xe0, 0x32, 0xb5, 0x2d, 0xba, 0xdd, 0xfd, 0x0e, 0xde, 0x0d, 0x74, 0x0f, 0xd7, 0xef, 0x69, - 0x8c, 0x66, 0x3e, 0xe5, 0x05, 0xd2, 0xaf, 0x8b, 0xbd, 0xfc, 0x51, 0x0e, 0x4a, 0xa6, 0xbe, 0x9d, - 0x2d, 0x87, 0xb9, 0xc3, 0x95, 0xb9, 0x3c, 0xb7, 0x9a, 0x30, 0x74, 0xd9, 0xa6, 0x18, 0x2c, 0x19, - 0x24, 0xf9, 0x5f, 0x63, 0x2d, 0xff, 0x2b, 0x07, 0xb3, 0xeb, 0x81, 0x2a, 0xe0, 0xf3, 0x89, 0xbb, - 0x63, 0x7a, 0x10, 0x49, 0xd7, 0xd5, 0x1c, 0x77, 0xe3, 0x5d, 0xe5, 0x85, 0x4d, 0x3e, 0xeb, 0xa5, - 0xa3, 0x16, 0x6c, 0xe5, 0x26, 0x0c, 0x6f, 0x12, 0x71, 0x6a, 0x88, 0xef, 0x3f, 0x86, 0x41, 0x8a, - 0xe8, 0x63, 0x18, 0xd2, 0x65, 0xf2, 0x03, 0x3d, 0x4c, 0x3c, 0xb9, 0x19, 0x1e, 0xfc, 0x92, 0x2f, - 0x19, 0x25, 0xa6, 0x3a, 0x06, 0xe7, 0x77, 0x1c, 0x7f, 0x1f, 0x87, 0xd6, 0x8f, 0xa0, 0xc4, 0xbd, - 0x7a, 0x98, 0xb5, 0x96, 0xfa, 0xfe, 0x04, 0x91, 0xe3, 0x56, 0x96, 0x27, 0xce, 0x12, 0x40, 0x3d, - 0x74, 0xfc, 0x70, 0xbd, 0xdb, 0xc6, 0x5f, 0xd3, 0xd1, 0x8e, 0xd8, 0x4a, 0x89, 0xf5, 0x1e, 0x8c, - 0xcb, 0x21, 0x50, 0x0d, 0x50, 0x91, 0x18, 0xe9, 0x70, 0x66, 0xb5, 0x47, 0x40, 0xe2, 0xe5, 0xcf, - 0x03, 0x98, 0x8b, 0x2d, 0x45, 0xf4, 0x28, 0x4d, 0x6a, 0x66, 0xd4, 0xc5, 0xd1, 0x96, 0xbf, 0xad, - 0x1a, 0x5c, 0x48, 0xac, 0x34, 0x42, 0xf4, 0xbd, 0x18, 0xd3, 0xee, 0xc9, 0x07, 0xa5, 0x5e, 0x5f, - 0x23, 0x65, 0x3b, 0x1b, 0x75, 0xe6, 0xc4, 0x4d, 0xca, 0x76, 0x36, 0xea, 0xd5, 0xf3, 0x6c, 0xe7, - 0x58, 0xff, 0x24, 0x4f, 0x95, 0xde, 0xc4, 0x1c, 0xc4, 0x6c, 0x85, 0xaa, 0xbd, 0xb2, 0x0a, 0xe3, - 0x74, 0xc4, 0x2b, 0xe2, 0x99, 0x42, 0xb6, 0x23, 0xca, 0xd8, 0x2f, 0x8e, 0xca, 0xe7, 0xa8, 0xf7, - 0x49, 0x84, 0x86, 0x3e, 0x83, 0xd1, 0xd5, 0x6e, 0x9b, 0x52, 0x18, 0x3a, 0x05, 0x05, 0x81, 0x44, - 0xd6, 0x81, 0x76, 0x99, 0x88, 0x42, 0xdc, 0xec, 0x64, 0x2b, 0x25, 0x74, 0x9a, 0xdd, 0x43, 0x97, - 0x39, 0x7c, 0x8d, 0xd8, 0xec, 0x07, 0x7d, 0xe2, 0x47, 0xba, 0x20, 0xe2, 0x0f, 0x8c, 0xdb, 0xf2, - 0x37, 0xb2, 0x60, 0x64, 0xcb, 0x6f, 0xf3, 0xa7, 0xbf, 0xd3, 0xcb, 0x93, 0x22, 0x18, 0x23, 0x29, - 0xb3, 0x59, 0x95, 0xf5, 0x3f, 0x72, 0x30, 0xff, 0x08, 0x87, 0xc6, 0x7d, 0xa3, 0xcd, 0x4a, 0xee, - 0x1b, 0xcf, 0x4a, 0xfe, 0x4d, 0x66, 0x45, 0x8e, 0x7a, 0x28, 0x6d, 0xd4, 0xc3, 0x69, 0xa3, 0x1e, - 0x49, 0x1f, 0xf5, 0x23, 0x38, 0xcf, 0x86, 0x8a, 0xae, 0xc3, 0xc8, 0x7a, 0x88, 0x0f, 0x23, 0x63, - 0x88, 0xea, 0x46, 0x67, 0xb3, 0x3a, 0xa2, 0x71, 0x6d, 0x38, 0x41, 0x28, 0x9e, 0x0d, 0x8c, 0xdb, - 0xe2, 0xa7, 0xf5, 0x33, 0xfa, 0xc0, 0x69, 0xc3, 0x6b, 0x1d, 0x28, 0x56, 0xe9, 0x51, 0x76, 0x2a, - 0xe3, 0xb7, 0x18, 0x04, 0x8a, 0xd5, 0xd8, 0x02, 0x02, 0x5d, 0x85, 0x89, 0xf5, 0xee, 0x43, 0xcf, - 0x6f, 0xe1, 0xad, 0x6e, 0x87, 0x51, 0x1f, 0xb3, 0xd5, 0x22, 0x6e, 0xc1, 0xe1, 0x2d, 0x44, 0x16, - 0x1c, 0x5a, 0x10, 0xb3, 0xe0, 0xb0, 0x78, 0x5d, 0x36, 0xab, 0xe3, 0x06, 0x22, 0xf2, 0x77, 0x96, - 0xf9, 0x46, 0xda, 0x79, 0x06, 0x01, 0xee, 0xc1, 0x65, 0x1b, 0xf7, 0x3a, 0x0e, 0x11, 0xb8, 0x0e, - 0x3d, 0x06, 0x2f, 0xc7, 0x7c, 0xd5, 0xe0, 0x67, 0xae, 0xfb, 0x3e, 0xc8, 0x2e, 0xe7, 0x33, 0xba, - 0x7c, 0x08, 0xd7, 0x1e, 0xe1, 0xd0, 0x18, 0x74, 0x2b, 0x1a, 0xfc, 0x1a, 0x8c, 0x05, 0xba, 0xbd, - 0x7e, 0x50, 0xbc, 0x2f, 0x7e, 0xa3, 0xc5, 0xe9, 0xc8, 0xbf, 0xac, 0xcf, 0xa1, 0x9c, 0xd6, 0xdc, - 0xc9, 0x7c, 0x5e, 0x5d, 0xb8, 0x9a, 0x4e, 0x40, 0x7e, 0x16, 0x85, 0x6d, 0x5f, 0xaa, 0xce, 0xd9, - 0xbd, 0xd5, 0xaf, 0x03, 0xf8, 0x1f, 0x56, 0x55, 0x78, 0xff, 0x7d, 0x83, 0xee, 0x36, 0xe9, 0xb5, - 0xb9, 0x4e, 0x20, 0x9a, 0xd7, 0x0a, 0x8c, 0x89, 0x32, 0x3e, 0xaf, 0xa9, 0xf1, 0xcc, 0xe8, 0x84, - 0xb6, 0x05, 0x01, 0x89, 0x66, 0xfd, 0x4c, 0x5c, 0x21, 0xe9, 0x18, 0x27, 0x7b, 0x3c, 0x73, 0x92, - 0x3b, 0x23, 0xcb, 0x83, 0xcb, 0x3a, 0x6d, 0xf5, 0xba, 0xa0, 0xa0, 0x5c, 0x17, 0xb0, 0x5b, 0x82, - 0xab, 0xba, 0xf9, 0x3a, 0xcf, 0xf7, 0x65, 0x54, 0x84, 0x96, 0xd4, 0x4b, 0x81, 0xc9, 0xe4, 0x6b, - 0xa3, 0x7b, 0x50, 0x32, 0x35, 0xa8, 0x18, 0x50, 0xa4, 0xe5, 0x99, 0xc7, 0xbe, 0xf8, 0xcd, 0x1c, - 0x58, 0x9a, 0x27, 0x94, 0x16, 0x9a, 0x4a, 0x1e, 0x99, 0x77, 0x04, 0x63, 0xa3, 0xbe, 0x57, 0xcc, - 0x87, 0xbe, 0x43, 0x0a, 0xd4, 0x27, 0x5e, 0x8c, 0xdb, 0xdd, 0x83, 0xd1, 0x4d, 0xfc, 0x75, 0xc4, - 0x7e, 0x98, 0x2c, 0x4a, 0xbd, 0xa3, 0x0e, 0xb0, 0xfa, 0x78, 0x54, 0x80, 0x11, 0x41, 0xe8, 0x7a, - 0x66, 0x1f, 0x78, 0xff, 0xf7, 0xa0, 0x10, 0xaf, 0xe3, 0x6b, 0x3f, 0x30, 0x4a, 0x17, 0x7d, 0x85, - 0x11, 0x0f, 0xce, 0x15, 0xd8, 0x09, 0x7a, 0xa7, 0xef, 0x3d, 0xfa, 0x08, 0x60, 0xc7, 0x0b, 0x9d, - 0x4e, 0x8d, 0xda, 0xb8, 0x28, 0xe3, 0x67, 0xa1, 0x9e, 0x42, 0x52, 0xda, 0x8c, 0xbf, 0x72, 0x55, - 0x80, 0xad, 0x1f, 0xd0, 0x13, 0x69, 0xee, 0xf4, 0xc9, 0x0e, 0x49, 0x0d, 0xae, 0xc7, 0x3c, 0x0f, - 0xde, 0x80, 0x48, 0x08, 0x73, 0x64, 0xfa, 0x65, 0x8c, 0xaf, 0x6f, 0x67, 0xd5, 0xff, 0x5d, 0x8e, - 0xb9, 0x4b, 0xaa, 0xcd, 0xf2, 0x85, 0xae, 0x01, 0x44, 0xa5, 0x31, 0x7f, 0x7c, 0x35, 0x64, 0x19, - 0x55, 0x5e, 0xa3, 0x90, 0x65, 0x81, 0xad, 0xa0, 0x7d, 0xbb, 0x2b, 0xf9, 0x80, 0xba, 0x1b, 0xc8, - 0xd6, 0x4f, 0x36, 0xef, 0xef, 0x0b, 0x1b, 0xcd, 0x29, 0xf1, 0x5e, 0xc0, 0xac, 0x16, 0xd5, 0x39, - 0x0a, 0x53, 0x1b, 0x45, 0xb3, 0x1e, 0xaf, 0x7e, 0xfa, 0xab, 0xa3, 0xf2, 0x87, 0xa7, 0x79, 0xfd, - 0x25, 0x68, 0xee, 0xc8, 0x47, 0x8e, 0xd6, 0x3c, 0x0c, 0xd5, 0xec, 0x0d, 0xca, 0xaa, 0xec, 0x0d, - 0xc9, 0xaa, 0xec, 0x0d, 0xeb, 0xbf, 0xe7, 0xa1, 0xcc, 0xde, 0x38, 0x53, 0x2f, 0x95, 0x48, 0x57, - 0x52, 0xdc, 0x5e, 0x4e, 0x6a, 0x21, 0x88, 0xbd, 0x61, 0xce, 0x9f, 0xe4, 0x0d, 0xf3, 0xff, 0xfb, - 0xe6, 0x56, 0x55, 0x16, 0xb1, 0x2f, 0x32, 0x0c, 0xb0, 0x5a, 0x93, 0x85, 0x20, 0xa5, 0x89, 0xa4, - 0x49, 0x63, 0xf8, 0x0d, 0x4c, 0x1a, 0xf7, 0x60, 0x94, 0xaa, 0x1e, 0xeb, 0xdb, 0xdc, 0xb7, 0x92, - 0x6e, 0x4f, 0x1a, 0x8e, 0xa0, 0xe9, 0xaa, 0x71, 0x4e, 0x04, 0x98, 0xf5, 0x77, 0xf2, 0x70, 0x35, - 0x7d, 0xce, 0x79, 0xdf, 0x56, 0xb4, 0xc0, 0xbc, 0x19, 0xfe, 0x38, 0xf4, 0xec, 0x28, 0x81, 0x79, - 0xe3, 0xc1, 0x78, 0xc5, 0xcb, 0xa0, 0xd8, 0x6d, 0x98, 0xf6, 0x60, 0x48, 0x84, 0x35, 0x67, 0x45, - 0x5a, 0x3c, 0x2e, 0x5e, 0x86, 0xf6, 0x60, 0x7e, 0xdb, 0x77, 0x5f, 0x3a, 0x21, 0x7e, 0x82, 0x5f, - 0x6f, 0x7b, 0x1d, 0xb7, 0xf5, 0x7a, 0xb5, 0xeb, 0xec, 0x75, 0x70, 0x9b, 0x3f, 0xf7, 0xba, 0x75, - 0x7c, 0x54, 0x7e, 0xab, 0xc7, 0x40, 0xc8, 0xc1, 0x6c, 0xf6, 0x28, 0x50, 0x13, 0x33, 0x28, 0x85, - 0x68, 0x1a, 0x21, 0xeb, 0xdf, 0xe6, 0x60, 0x81, 0x0a, 0xd4, 0xfc, 0x66, 0x41, 0x34, 0xfe, 0x46, - 0x6e, 0x99, 0xea, 0x00, 0xf9, 0x5e, 0xa4, 0x6e, 0x99, 0xda, 0xcb, 0x29, 0x5b, 0x03, 0x43, 0xeb, - 0x30, 0xc1, 0x7f, 0x2b, 0xe6, 0xe3, 0x39, 0x85, 0x61, 0xd1, 0xad, 0xce, 0xac, 0x47, 0x74, 0x63, - 0x73, 0x62, 0x4d, 0xfa, 0x9e, 0x58, 0xc5, 0xb5, 0x7e, 0x99, 0x87, 0xc5, 0x06, 0xf6, 0xdd, 0xe7, - 0xaf, 0x53, 0x06, 0xb3, 0x05, 0xb3, 0xa2, 0x88, 0x8e, 0x59, 0x3f, 0x62, 0x2c, 0x50, 0x8f, 0xe8, - 0x6a, 0x40, 0x00, 0x9a, 0xf2, 0xc4, 0x19, 0x11, 0x4f, 0xe1, 0x70, 0xf9, 0x2e, 0x8c, 0xc5, 0x22, - 0x0d, 0xd0, 0xf5, 0x17, 0x27, 0x54, 0x0f, 0xf3, 0x28, 0x8f, 0xea, 0x6f, 0xa5, 0x5f, 0x51, 0x72, - 0x4b, 0xc2, 0xa0, 0x08, 0x32, 0xf4, 0xc0, 0x92, 0xc3, 0xea, 0x28, 0xb5, 0x86, 0x03, 0xbb, 0x76, - 0xce, 0x4e, 0x6b, 0xa9, 0x3a, 0x01, 0xe3, 0x15, 0x7a, 0xed, 0x4a, 0x14, 0xf7, 0xff, 0x99, 0x87, - 0x25, 0xf1, 0x66, 0x27, 0x65, 0x9a, 0xbf, 0x84, 0x79, 0x51, 0x54, 0xe9, 0x11, 0x81, 0x01, 0xb7, - 0xf5, 0x99, 0x66, 0xc1, 0xb2, 0xc4, 0x4c, 0x3b, 0x1c, 0x26, 0x9a, 0xec, 0x34, 0xf4, 0xb3, 0x31, - 0x88, 0x7e, 0x66, 0x8a, 0xfb, 0x40, 0x0d, 0x93, 0x2a, 0xcf, 0xd4, 0x63, 0x41, 0xaa, 0xfc, 0xb3, - 0x9d, 0x30, 0xa8, 0x0e, 0x7f, 0x53, 0x83, 0xea, 0xda, 0xb9, 0xb8, 0x49, 0xb5, 0x3a, 0x0d, 0x93, - 0x9b, 0xf8, 0x55, 0x34, 0xef, 0xbf, 0x9d, 0x8b, 0x3d, 0x4d, 0x24, 0x12, 0x06, 0x7b, 0xa3, 0x98, - 0x8b, 0x42, 0x07, 0xd0, 0xa7, 0x89, 0xaa, 0x84, 0xc1, 0x40, 0xd7, 0x61, 0x94, 0xb9, 0xe8, 0xb6, - 0x4f, 0xa0, 0x9b, 0xcb, 0xc7, 0x37, 0x2d, 0x86, 0xc2, 0xd4, 0x74, 0x8e, 0x6f, 0x3d, 0x81, 0x6b, - 0xdc, 0x43, 0x5c, 0x5f, 0x7c, 0xda, 0xd0, 0x29, 0x3f, 0x5f, 0x96, 0x03, 0x4b, 0x8f, 0x70, 0x9c, - 0xf5, 0x68, 0x8f, 0x93, 0x3e, 0x87, 0x19, 0xad, 0x5c, 0x52, 0xa4, 0x52, 0xa9, 0xdc, 0x43, 0x92, - 0x74, 0x1c, 0xda, 0xba, 0x6a, 0x6a, 0x42, 0xed, 0xac, 0x85, 0x69, 0xd4, 0x2b, 0x3f, 0xba, 0x45, - 0x0e, 0x4e, 0xc1, 0xf5, 0x6e, 0x29, 0xe7, 0x9a, 0x71, 0x3c, 0x16, 0xff, 0x47, 0x7c, 0x79, 0x65, - 0xad, 0x35, 0x05, 0x13, 0x35, 0xaf, 0x1b, 0xe2, 0xaf, 0xa9, 0xa8, 0x63, 0x4d, 0xc3, 0xa4, 0xa8, - 0xea, 0xe0, 0x20, 0xb0, 0xfe, 0xde, 0x10, 0x58, 0x7c, 0x62, 0x4d, 0xd6, 0x53, 0x31, 0x1f, 0x7b, - 0x89, 0xce, 0xf2, 0x0f, 0xd5, 0x25, 0xd5, 0x46, 0x1c, 0xd5, 0xb2, 0x9d, 0x47, 0xe5, 0xbc, 0x56, - 0x54, 0xaa, 0x07, 0xf6, 0x8d, 0x8f, 0xfe, 0xc7, 0x29, 0x6c, 0x92, 0x1d, 0x36, 0x1a, 0x53, 0x3b, - 0x85, 0x4d, 0x6a, 0x74, 0xcd, 0x2c, 0xd3, 0xd6, 0xa6, 0x81, 0x8b, 0x1c, 0x48, 0xbe, 0xad, 0x94, - 0x35, 0xdc, 0x87, 0x89, 0x15, 0x34, 0x13, 0x79, 0x24, 0x54, 0x22, 0x68, 0x57, 0x9f, 0x4b, 0x7e, - 0x1e, 0x85, 0xd7, 0x86, 0x5a, 0xc5, 0xa8, 0xf6, 0x94, 0x12, 0x3d, 0x2d, 0x87, 0x06, 0xab, 0x58, - 0xc4, 0x7f, 0x5f, 0xfa, 0xe9, 0x93, 0x0f, 0xa9, 0xdb, 0xc1, 0xfc, 0x51, 0x8a, 0x58, 0x96, 0xbe, - 0xf9, 0xf6, 0x3b, 0x77, 0x22, 0x1e, 0x4d, 0xa3, 0x99, 0x62, 0x8e, 0x9e, 0x76, 0xe5, 0x62, 0xa2, - 0x6f, 0x1d, 0xe5, 0xc4, 0xeb, 0x84, 0xc4, 0x95, 0xf0, 0x69, 0x25, 0xc9, 0xaa, 0x76, 0x8b, 0x9b, - 0x4f, 0xb9, 0xc5, 0xd5, 0xee, 0xbc, 0xc2, 0x01, 0xd7, 0xba, 0x43, 0xdf, 0xfc, 0x1a, 0xe8, 0x9f, - 0x9f, 0x87, 0x0b, 0xdb, 0xce, 0xbe, 0xdb, 0x25, 0xbc, 0x47, 0x44, 0xe0, 0x45, 0x95, 0x44, 0x8e, - 0x86, 0x6c, 0x37, 0x58, 0x43, 0x12, 0x86, 0x65, 0x35, 0x5c, 0x7a, 0x3e, 0xed, 0xc5, 0xa8, 0x1e, - 0x14, 0xfd, 0x23, 0xcd, 0xea, 0x9f, 0xc8, 0x17, 0x42, 0xbd, 0xfb, 0xba, 0x5e, 0x3b, 0x96, 0xb7, - 0x84, 0x5a, 0xce, 0x93, 0x81, 0xe4, 0x47, 0xce, 0x38, 0x90, 0xfc, 0x8f, 0x60, 0xe2, 0x49, 0x7f, - 0x4f, 0xe6, 0xc4, 0x38, 0x3f, 0x30, 0x50, 0x39, 0x5d, 0x83, 0x83, 0xfe, 0x9e, 0x39, 0x2b, 0x86, - 0x4a, 0xcc, 0x18, 0x74, 0x7d, 0xf4, 0xd7, 0x12, 0x74, 0x3d, 0x35, 0xde, 0xff, 0xd8, 0xb7, 0x12, - 0xef, 0xdf, 0x10, 0x38, 0x7d, 0xfc, 0xec, 0x03, 0xa7, 0x6b, 0x41, 0xc5, 0xe1, 0x1b, 0x06, 0x15, - 0xaf, 0x02, 0x8c, 0xf9, 0x51, 0x68, 0xea, 0xe1, 0xc2, 0x88, 0xf5, 0xaf, 0x46, 0x61, 0x76, 0xc3, - 0x0d, 0x42, 0x71, 0x5e, 0x82, 0xe8, 0x63, 0x3a, 0x29, 0xca, 0x14, 0x65, 0x97, 0xcb, 0xbd, 0xac, - 0xbc, 0x19, 0xcb, 0xd8, 0xa4, 0x21, 0xa0, 0xf7, 0xd4, 0xbb, 0x95, 0xbc, 0x12, 0xb8, 0x33, 0x99, - 0x6c, 0x47, 0xbd, 0x74, 0x79, 0x47, 0x33, 0xed, 0x67, 0xda, 0x42, 0x1e, 0xc4, 0xed, 0xfd, 0x3c, - 0xae, 0x16, 0xfd, 0xcc, 0xe8, 0xb6, 0x87, 0xe8, 0x22, 0x60, 0x17, 0xce, 0xd3, 0x20, 0x38, 0xe2, - 0x41, 0xf0, 0xdb, 0x9c, 0xe5, 0x98, 0x26, 0x81, 0x85, 0xcb, 0xe1, 0xaf, 0x81, 0x69, 0xcc, 0xa8, - 0x0e, 0x2d, 0x50, 0x63, 0xdd, 0x30, 0x10, 0xb4, 0x03, 0x17, 0xb7, 0x7d, 0xdc, 0xe6, 0x9e, 0xb2, - 0x3d, 0x9f, 0x2b, 0x86, 0xec, 0x65, 0x1e, 0x0d, 0x62, 0xd9, 0x13, 0xd5, 0x4d, 0x2c, 0xeb, 0x55, - 0x9e, 0x6d, 0x40, 0x47, 0xab, 0x30, 0x5d, 0xc7, 0x8e, 0xdf, 0x7a, 0xf1, 0x04, 0xbf, 0x26, 0x9f, - 0x9a, 0xa0, 0x38, 0x1a, 0x45, 0x7e, 0x0d, 0x68, 0x0d, 0x19, 0x28, 0xad, 0x52, 0xaf, 0xdc, 0x75, - 0x24, 0xf4, 0x03, 0x38, 0x5f, 0xf7, 0xfc, 0xb0, 0xfa, 0x3a, 0x96, 0x7d, 0x89, 0x15, 0x56, 0x2f, - 0x8b, 0xe8, 0xb7, 0x81, 0xe7, 0x87, 0xcd, 0x3d, 0x75, 0xde, 0x38, 0x1e, 0x7a, 0x48, 0xe4, 0x58, - 0x22, 0x5b, 0x4b, 0xb3, 0x0d, 0x0b, 0x9c, 0xc1, 0x65, 0x55, 0x2a, 0x90, 0x9b, 0x6c, 0x37, 0x31, - 0x2c, 0xf4, 0x1a, 0x66, 0xf5, 0xd3, 0xf4, 0xd0, 0xed, 0x10, 0x16, 0x04, 0x5a, 0x1e, 0x13, 0x13, - 0x48, 0xf5, 0x16, 0xef, 0xe5, 0xd5, 0xf8, 0x99, 0x7d, 0x4e, 0xeb, 0xd5, 0x60, 0xde, 0x26, 0x7c, - 0xf4, 0x94, 0x06, 0x1f, 0x66, 0x33, 0x53, 0x09, 0x44, 0x54, 0x6a, 0x32, 0x08, 0x1a, 0x33, 0xaf, - 0x4f, 0x4f, 0x24, 0x9d, 0x51, 0x27, 0x88, 0x07, 0xa7, 0xb6, 0x13, 0xa8, 0x68, 0x1b, 0x2e, 0xec, - 0x06, 0x78, 0xdb, 0xc7, 0x2f, 0x5d, 0xfc, 0x4a, 0xd0, 0x9b, 0xa4, 0xf4, 0xe8, 0x72, 0x13, 0x7a, - 0x3d, 0x56, 0x6b, 0x22, 0x98, 0x44, 0x2e, 0x7d, 0x04, 0x13, 0xca, 0x7e, 0x33, 0x3c, 0x2d, 0x9f, - 0x55, 0x9f, 0x96, 0x8f, 0xab, 0x4f, 0xc8, 0xff, 0x3c, 0xc7, 0x4c, 0x8b, 0xca, 0x06, 0xe6, 0x76, - 0x8a, 0x2d, 0x18, 0x97, 0x85, 0xf2, 0x21, 0x83, 0x90, 0x75, 0x62, 0xdf, 0x4a, 0x76, 0x7c, 0xc4, - 0xe9, 0x56, 0x7b, 0x1b, 0xd1, 0xf8, 0x76, 0xcd, 0x7d, 0xbf, 0x15, 0x3d, 0x79, 0xe4, 0xcf, 0x33, - 0x7d, 0xa7, 0x75, 0x10, 0xd9, 0x5b, 0x7f, 0x4a, 0xce, 0x87, 0x5a, 0xc1, 0x93, 0x46, 0xcd, 0xeb, - 0x19, 0x7f, 0x78, 0xa5, 0xc8, 0x3b, 0x20, 0x5f, 0x7e, 0xb2, 0x62, 0xfd, 0xe0, 0xa8, 0x08, 0xd4, - 0xf9, 0x77, 0xc6, 0xb2, 0xd9, 0x8b, 0x3d, 0x63, 0x0f, 0xde, 0x4f, 0xbe, 0x39, 0xa3, 0xbc, 0x38, - 0x7a, 0x73, 0xa6, 0x4e, 0x63, 0xf4, 0xfa, 0x6c, 0x17, 0x16, 0x6c, 0x7c, 0xe8, 0xbd, 0xc4, 0x67, - 0x4b, 0xf6, 0xc7, 0x70, 0x59, 0x27, 0xb8, 0xdb, 0x6b, 0xd3, 0x50, 0x1d, 0xec, 0xd6, 0xd5, 0x18, - 0x72, 0x8f, 0x23, 0xb0, 0x90, 0x7b, 0x2c, 0x08, 0x13, 0xf9, 0x53, 0xe5, 0xb7, 0xb4, 0xce, 0xf2, - 0x60, 0x51, 0x27, 0x5e, 0x69, 0xb7, 0x69, 0x1e, 0x81, 0x96, 0xdb, 0x73, 0xba, 0x21, 0xda, 0x82, - 0x09, 0xe5, 0x67, 0x4c, 0x52, 0x52, 0x6a, 0xd8, 0xea, 0xf7, 0xa2, 0x02, 0x55, 0xa2, 0x53, 0xe0, - 0x2c, 0x0c, 0xe5, 0xf8, 0xf4, 0x90, 0x29, 0x53, 0xdb, 0xac, 0xc2, 0x94, 0xf2, 0x53, 0x2a, 0x1e, - 0x34, 0x9c, 0xa6, 0xd2, 0x82, 0x3e, 0x61, 0x3a, 0x8a, 0xd5, 0x82, 0x92, 0x69, 0xd2, 0x68, 0x08, - 0x89, 0xd7, 0x68, 0x35, 0x0a, 0x46, 0x31, 0xf8, 0xb6, 0x7b, 0x26, 0x2d, 0x10, 0x85, 0xf5, 0x37, - 0x87, 0x61, 0x81, 0x2f, 0xc6, 0x59, 0xae, 0x38, 0xfa, 0x19, 0x4c, 0x28, 0x6b, 0xcc, 0x27, 0xfd, - 0xaa, 0x70, 0x90, 0x49, 0xdb, 0x0b, 0x4c, 0xa2, 0xeb, 0xd3, 0x82, 0x66, 0x6c, 0xb9, 0x89, 0x44, - 0xa7, 0x6e, 0x9b, 0x0e, 0x4c, 0xeb, 0x0b, 0xcd, 0x85, 0xda, 0xeb, 0xc6, 0x46, 0x74, 0x50, 0x11, - 0xbf, 0xa9, 0xdd, 0x34, 0x2e, 0x37, 0xcd, 0x73, 0xa5, 0x6f, 0xa2, 0xaf, 0xe1, 0x42, 0x62, 0x95, - 0xb9, 0x92, 0x76, 0xd3, 0xd8, 0x60, 0x02, 0x9a, 0x45, 0x33, 0xf7, 0x69, 0x71, 0x6a, 0xb3, 0xc9, - 0x46, 0x50, 0x1b, 0x26, 0xd5, 0x85, 0xe7, 0x52, 0xf7, 0xb5, 0x8c, 0xa9, 0x64, 0x80, 0x4c, 0x28, - 0xe2, 0x73, 0x49, 0xd7, 0x5e, 0x4f, 0x0d, 0xa9, 0x51, 0xad, 0x8e, 0xc1, 0x79, 0xf6, 0x9b, 0xb0, - 0x80, 0x6d, 0x1f, 0x07, 0xb8, 0xdb, 0xc2, 0xaa, 0xaf, 0xd3, 0x37, 0x65, 0x01, 0xff, 0x26, 0x07, - 0x45, 0x13, 0xdd, 0x3a, 0xee, 0xb6, 0xd1, 0x36, 0x14, 0xe2, 0x0d, 0xf1, 0x5d, 0x6d, 0x89, 0xaf, - 0x42, 0x7a, 0x97, 0x88, 0x14, 0x9e, 0xe8, 0xe6, 0x26, 0x5c, 0x50, 0xca, 0x4e, 0xe9, 0x54, 0x96, - 0x44, 0x55, 0x15, 0xe9, 0x35, 0xea, 0x3b, 0xb7, 0xe2, 0x1d, 0x3a, 0x6e, 0x97, 0x08, 0x88, 0x4a, - 0xd8, 0x08, 0x88, 0x4a, 0xf9, 0xdc, 0x30, 0x65, 0x93, 0x96, 0x0a, 0x07, 0x4b, 0x09, 0x62, 0x7d, - 0x4a, 0x39, 0x38, 0x57, 0x51, 0xd8, 0xd3, 0x1e, 0x49, 0xec, 0x2a, 0x8c, 0xec, 0x6c, 0xd4, 0x6b, - 0x15, 0xfe, 0x50, 0x88, 0x3d, 0x25, 0xed, 0x04, 0xcd, 0x96, 0x63, 0xb3, 0x0a, 0xeb, 0x13, 0x1a, - 0x65, 0x8f, 0xc7, 0x68, 0x93, 0x78, 0x37, 0x60, 0x94, 0x17, 0x71, 0x4c, 0x7a, 0x35, 0xdd, 0xe1, - 0x50, 0xa2, 0xce, 0xda, 0x16, 0xf2, 0x75, 0x07, 0x3b, 0x81, 0xf2, 0x61, 0xfe, 0x90, 0x88, 0xe2, - 0xac, 0x8c, 0x7f, 0x97, 0xa7, 0x65, 0x08, 0x54, 0x5a, 0xcc, 0x94, 0x6f, 0x01, 0x63, 0xcb, 0xbf, - 0xac, 0x3f, 0xcd, 0xc3, 0xac, 0x08, 0x18, 0xa3, 0x19, 0x16, 0x06, 0x86, 0xba, 0xfc, 0xa1, 0x1e, - 0x93, 0xa7, 0x26, 0x63, 0xf2, 0x7c, 0x83, 0xe4, 0x1b, 0x3c, 0x9a, 0xcf, 0x09, 0x9f, 0xd1, 0x3d, - 0x91, 0xd2, 0xf7, 0xb0, 0x26, 0x7d, 0x9b, 0xc6, 0xa3, 0x49, 0xdf, 0x74, 0x59, 0x98, 0xf4, 0x2d, - 0x64, 0xee, 0x6f, 0x22, 0x30, 0x7d, 0x48, 0xb6, 0x96, 0xd6, 0xe4, 0x49, 0x5f, 0x58, 0x6d, 0xd0, - 0x47, 0xf7, 0x5b, 0xeb, 0x2b, 0x35, 0xb2, 0xa7, 0x79, 0x57, 0xc5, 0x0a, 0xdc, 0xa5, 0x5e, 0x73, - 0x9c, 0xa6, 0xba, 0x31, 0x29, 0x8b, 0xe5, 0xa1, 0x26, 0x14, 0x10, 0xeb, 0x81, 0x7c, 0xc2, 0x6f, - 0xa0, 0x96, 0x16, 0xb7, 0x75, 0x93, 0x06, 0x27, 0x78, 0x44, 0xd7, 0xeb, 0x2c, 0x3a, 0xf1, 0x87, - 0x39, 0x16, 0xed, 0xa0, 0xbe, 0xa5, 0x84, 0xb8, 0xef, 0x3e, 0xf7, 0x14, 0xbb, 0xaa, 0xd2, 0xcc, - 0x13, 0xb7, 0xdb, 0x56, 0xed, 0xaa, 0x34, 0x89, 0x21, 0x7f, 0xa8, 0xd8, 0x3c, 0x70, 0xbb, 0x6d, - 0x3b, 0x0e, 0x8d, 0x3e, 0x82, 0x29, 0xa5, 0x48, 0x7e, 0xa4, 0x59, 0x84, 0x40, 0x15, 0xdd, 0x6d, - 0xdb, 0x3a, 0xa4, 0xf5, 0xdb, 0x79, 0x58, 0xc8, 0x48, 0xc1, 0x42, 0x75, 0x40, 0x6a, 0x0e, 0x90, - 0x33, 0xc5, 0x63, 0x2b, 0xd3, 0x47, 0x99, 0x1a, 0x8f, 0x94, 0x80, 0xe8, 0x53, 0x98, 0x50, 0x33, - 0xc2, 0xe4, 0x95, 0x00, 0xde, 0xe6, 0x2c, 0x30, 0x2a, 0x38, 0x0a, 0x00, 0xa2, 0x9e, 0xf0, 0x77, - 0xca, 0x75, 0x22, 0xd1, 0x28, 0xe9, 0x64, 0xce, 0x24, 0xaf, 0x8d, 0xd2, 0x8c, 0xf5, 0xd7, 0xf3, - 0xb0, 0x94, 0x31, 0x0f, 0x75, 0x1c, 0xfe, 0xdf, 0x98, 0x8a, 0x58, 0x92, 0x9f, 0xa1, 0x6f, 0x29, - 0xc9, 0x8f, 0xf5, 0xfb, 0x79, 0xb8, 0xb4, 0xdb, 0x0b, 0xa8, 0x73, 0xeb, 0x7a, 0xf7, 0x25, 0xee, - 0x86, 0x9e, 0xff, 0x9a, 0x3a, 0xe7, 0xa1, 0xf7, 0x60, 0x64, 0x0d, 0x77, 0x3a, 0x1e, 0xff, 0xac, - 0x5d, 0x11, 0xa6, 0xee, 0x38, 0x34, 0x05, 0x5a, 0x3b, 0x67, 0x33, 0x68, 0xf4, 0x11, 0x8c, 0xaf, - 0x61, 0xc7, 0x0f, 0xf7, 0xb0, 0x23, 0x24, 0xd7, 0xcb, 0x1c, 0x55, 0x41, 0xe1, 0x00, 0x6b, 0xe7, - 0xec, 0x08, 0x1a, 0x2d, 0xc3, 0xf0, 0xb6, 0xd7, 0xdd, 0x97, 0xaf, 0xdf, 0x52, 0x1a, 0x24, 0x30, - 0x6b, 0xe7, 0x6c, 0x0a, 0x8b, 0x9e, 0xc2, 0x54, 0x65, 0x1f, 0x77, 0xc3, 0xa7, 0x38, 0x74, 0xda, - 0x4e, 0xe8, 0x70, 0x09, 0xe7, 0x46, 0x1a, 0xb2, 0x06, 0x4c, 0x13, 0xe7, 0xaa, 0x05, 0xd5, 0x11, - 0x18, 0x7a, 0x1a, 0xec, 0x5b, 0xbf, 0x97, 0x83, 0xe2, 0x8a, 0xf7, 0xaa, 0x6b, 0x9c, 0x98, 0x0f, - 0xf4, 0x89, 0x11, 0x2e, 0xd8, 0x06, 0xf8, 0xd8, 0xd4, 0xbc, 0x0b, 0xc3, 0xdb, 0x6e, 0x77, 0x3f, - 0xf6, 0x51, 0x37, 0xe0, 0x11, 0x28, 0x3a, 0x42, 0xb7, 0xbb, 0x2f, 0xba, 0xf4, 0x0e, 0xcc, 0xa7, - 0x40, 0xa2, 0x69, 0xc9, 0xde, 0x86, 0x29, 0x5b, 0x7b, 0x1b, 0xe6, 0x8c, 0x93, 0x96, 0x00, 0xfc, - 0x97, 0x39, 0xc3, 0xea, 0xb3, 0xbe, 0x16, 0x61, 0x54, 0x04, 0xa8, 0x65, 0xdf, 0x01, 0xf1, 0x93, - 0x3a, 0x87, 0x8a, 0xd3, 0xc1, 0x43, 0x0b, 0xca, 0x43, 0xd0, 0x50, 0x1e, 0xfb, 0xb3, 0x3d, 0xfc, - 0xf1, 0x37, 0xd8, 0xa9, 0x92, 0x16, 0x69, 0x73, 0xcd, 0x0b, 0xc2, 0xae, 0xf4, 0x5d, 0xb0, 0xe5, - 0x6f, 0xeb, 0x3f, 0xe6, 0x69, 0x98, 0xc2, 0x8c, 0x65, 0x26, 0xe3, 0xde, 0xaa, 0xf3, 0x71, 0xe4, - 0xb7, 0xea, 0x68, 0x11, 0xc6, 0xb7, 0xea, 0x5a, 0xfc, 0x5d, 0x3b, 0x2a, 0x40, 0xb7, 0x59, 0x06, - 0xb7, 0x8a, 0xdf, 0x7a, 0xe1, 0x86, 0xb8, 0x15, 0xf6, 0x7d, 0xce, 0x9c, 0xec, 0x44, 0x39, 0xb2, - 0x60, 0xf2, 0x51, 0xc7, 0xdd, 0x6b, 0x09, 0x62, 0xac, 0x73, 0x5a, 0x19, 0xba, 0x09, 0xd3, 0x3c, - 0x4b, 0x24, 0x0b, 0x4f, 0xcc, 0x53, 0xa0, 0xd9, 0xb1, 0x52, 0xd2, 0x6e, 0xcd, 0xeb, 0x86, 0x8e, - 0xdb, 0xc5, 0xbe, 0xdd, 0xef, 0x86, 0x2e, 0xcf, 0x19, 0x3e, 0x6e, 0x27, 0xca, 0xd1, 0xbb, 0x30, - 0x27, 0xcb, 0xb6, 0xfc, 0xd6, 0x0b, 0x1c, 0x84, 0x3e, 0x0d, 0xe5, 0x4e, 0x9f, 0x90, 0xdb, 0xe6, - 0x4a, 0xda, 0x42, 0xc7, 0xeb, 0xb7, 0x57, 0xbb, 0x2f, 0x5d, 0xdf, 0x63, 0xf9, 0x05, 0xc7, 0x78, - 0x0b, 0xb1, 0x72, 0x6b, 0xdb, 0x78, 0x02, 0xbe, 0xc1, 0xe6, 0xb0, 0x6a, 0x80, 0x92, 0x1c, 0x00, - 0x7d, 0x0f, 0xc6, 0xeb, 0xf5, 0x35, 0xed, 0x46, 0x21, 0x6e, 0xe4, 0xb7, 0x23, 0x08, 0xeb, 0x7d, - 0xb8, 0x24, 0x89, 0xb0, 0x18, 0x9b, 0x8a, 0x0b, 0x3a, 0x4f, 0x31, 0x23, 0x3d, 0xdf, 0xa3, 0x02, - 0xeb, 0xc7, 0x09, 0xbc, 0x7a, 0xff, 0xf0, 0xd0, 0xf1, 0x5f, 0xa3, 0x8a, 0x8e, 0x37, 0x34, 0x90, - 0xd7, 0x55, 0x87, 0x7f, 0x71, 0x54, 0x3e, 0xa7, 0x12, 0xb7, 0x61, 0x56, 0x3b, 0x91, 0xa2, 0x4b, - 0xa5, 0xf8, 0x87, 0x44, 0x39, 0x2a, 0x4b, 0x00, 0x3c, 0x78, 0xef, 0x86, 0xb7, 0xcf, 0x3d, 0x93, - 0x95, 0x12, 0xeb, 0x21, 0xcc, 0xc5, 0x68, 0x72, 0xc1, 0xea, 0x7b, 0x20, 0x45, 0x41, 0x4a, 0x74, - 0xa8, 0x7a, 0xe1, 0x57, 0x47, 0xe5, 0x29, 0xb2, 0x2d, 0xee, 0x44, 0xa1, 0xb4, 0xc4, 0x5f, 0xd6, - 0x53, 0x55, 0x62, 0xaf, 0x74, 0xb4, 0x37, 0x25, 0xf7, 0xe1, 0x3c, 0x2b, 0x89, 0x05, 0xac, 0x51, - 0xa1, 0xf9, 0x68, 0x39, 0xa0, 0x35, 0x47, 0xfd, 0xc6, 0xe8, 0x8f, 0x4a, 0xe4, 0xa1, 0x6c, 0xed, - 0xb2, 0xe8, 0x89, 0x51, 0xb1, 0x0c, 0x8a, 0x33, 0x5c, 0x89, 0x3c, 0xa9, 0x85, 0x59, 0x52, 0xc0, - 0x75, 0xbd, 0x57, 0x1d, 0xdc, 0xde, 0xa7, 0xd9, 0x6c, 0xaa, 0x93, 0xdc, 0x2c, 0x39, 0xec, 0x10, - 0x02, 0x14, 0xcd, 0xfa, 0x1c, 0xe6, 0x6a, 0x1d, 0xec, 0xf8, 0xf1, 0xf6, 0xd0, 0x4d, 0x18, 0xa5, - 0x65, 0xfa, 0x05, 0x9b, 0x43, 0x8a, 0xe8, 0x05, 0x1b, 0xaf, 0x24, 0x42, 0x26, 0x8b, 0x23, 0xa2, - 0x0e, 0x29, 0x92, 0xef, 0x46, 0xe8, 0xef, 0x98, 0xd7, 0x91, 0x61, 0xf4, 0x0c, 0xce, 0xfa, 0x8c, - 0x5e, 0x6b, 0x9b, 0x12, 0x19, 0x9d, 0xcc, 0x0f, 0xee, 0x2f, 0xc1, 0x62, 0xa5, 0xd7, 0xc3, 0xdd, - 0x76, 0x84, 0x48, 0xd4, 0xe0, 0x93, 0xf9, 0x17, 0xa3, 0x0a, 0x8c, 0x50, 0x68, 0x69, 0x9a, 0xe0, - 0xdd, 0x35, 0x74, 0x87, 0xc2, 0x71, 0x99, 0x9b, 0x36, 0xc0, 0x30, 0xad, 0x36, 0xcc, 0xd7, 0xfb, - 0x7b, 0x87, 0x2e, 0xcb, 0x19, 0x44, 0x7d, 0xf4, 0x45, 0xdb, 0xeb, 0x22, 0xe0, 0x2d, 0x9b, 0x8c, - 0x5b, 0x51, 0x82, 0x22, 0x7a, 0x57, 0xc8, 0xfd, 0xf6, 0x5f, 0xde, 0xbf, 0x13, 0xa1, 0xd2, 0xcf, - 0x21, 0x6b, 0x85, 0x56, 0xf3, 0xa0, 0xb8, 0xd6, 0x45, 0xb8, 0xa0, 0xaa, 0x79, 0x6c, 0x87, 0xcc, - 0xc1, 0x45, 0x5d, 0x7d, 0x63, 0xc5, 0x5f, 0xc1, 0x2c, 0xb3, 0x4b, 0xb2, 0x08, 0x44, 0xcb, 0x51, - 0xb0, 0x9d, 0x7c, 0x63, 0x39, 0x76, 0xc3, 0x48, 0x9d, 0x44, 0x65, 0x6c, 0xb9, 0xc6, 0x32, 0x73, - 0x4d, 0x7a, 0xb9, 0xac, 0x19, 0x09, 0xf2, 0x8d, 0xe5, 0xea, 0x28, 0xd7, 0x3d, 0x08, 0x75, 0xb6, - 0xfc, 0xbf, 0x16, 0xea, 0xcb, 0xd4, 0x1b, 0x76, 0x0d, 0x3b, 0xf4, 0xe6, 0xda, 0xec, 0x53, 0x38, - 0x0d, 0x79, 0xb7, 0x2d, 0x3e, 0x3d, 0x6e, 0xdb, 0xfa, 0x93, 0x1c, 0xdc, 0x62, 0x66, 0x0b, 0x33, - 0x1e, 0xd5, 0x26, 0x52, 0x90, 0xd1, 0x87, 0xc0, 0x92, 0x78, 0x70, 0xbb, 0xa3, 0xc5, 0x7b, 0x9e, - 0x45, 0x89, 0x21, 0xa0, 0x0a, 0x4c, 0xaa, 0x57, 0xdc, 0xb1, 0x37, 0xcb, 0x29, 0x76, 0x05, 0x7b, - 0xe2, 0xf0, 0xb9, 0x23, 0xaf, 0xbd, 0x0f, 0x60, 0x61, 0xf5, 0x6b, 0xb2, 0x21, 0x78, 0x40, 0x6c, - 0x7e, 0x37, 0x10, 0xf9, 0xac, 0xcd, 0xec, 0xf0, 0x1d, 0xa3, 0x7f, 0x1b, 0xe2, 0xc5, 0xe4, 0x9b, - 0xc9, 0x49, 0xf8, 0x54, 0x05, 0x62, 0xdf, 0x09, 0xad, 0xcc, 0xfa, 0x0f, 0x39, 0x58, 0x34, 0xb7, - 0xc6, 0x19, 0xcb, 0x3a, 0x5c, 0xa8, 0x39, 0x5d, 0xaf, 0xeb, 0xb6, 0x9c, 0x4e, 0xbd, 0xf5, 0x02, - 0xb7, 0xfb, 0x1d, 0x71, 0xf3, 0x2f, 0xb9, 0x0c, 0x91, 0x01, 0x38, 0xba, 0x00, 0xb1, 0x93, 0x58, - 0xe8, 0x7d, 0xb8, 0x44, 0xef, 0x5d, 0x19, 0xef, 0xed, 0x60, 0x5f, 0xd2, 0x63, 0x3d, 0x4b, 0xa9, - 0x45, 0xf7, 0xe0, 0x22, 0x13, 0x56, 0xda, 0xbb, 0x5d, 0x37, 0x94, 0x48, 0x4c, 0x54, 0x30, 0x55, - 0xdd, 0xbe, 0x0d, 0xe3, 0x5b, 0x3d, 0xcc, 0x73, 0xe6, 0x8e, 0xc1, 0xf0, 0xfa, 0xe6, 0xfa, 0x0e, - 0xcb, 0xd8, 0xb5, 0xbd, 0xbb, 0x53, 0xc8, 0x21, 0x80, 0xf3, 0x2b, 0xab, 0x1b, 0xab, 0x3b, 0xab, - 0x85, 0xfc, 0xed, 0xa6, 0xea, 0x1a, 0x80, 0x16, 0x60, 0x7e, 0x65, 0xb5, 0xb1, 0x5e, 0x5b, 0x6d, - 0xee, 0xfc, 0x70, 0x7b, 0xb5, 0xa9, 0xc7, 0x7c, 0x99, 0x85, 0x82, 0x5a, 0xb9, 0xb3, 0xb5, 0xb3, - 0xcd, 0xd2, 0x70, 0xa9, 0xa5, 0xcf, 0x56, 0xab, 0x95, 0xdd, 0x9d, 0xb5, 0xcd, 0xc2, 0x90, 0x35, - 0x3c, 0x96, 0x2f, 0xe4, 0x6f, 0xff, 0x4c, 0xf3, 0x1b, 0x40, 0x8b, 0x50, 0xe4, 0xe0, 0xbb, 0xf5, - 0xca, 0xa3, 0xf4, 0x26, 0x58, 0xed, 0xd3, 0x87, 0x95, 0x42, 0x0e, 0x5d, 0x81, 0xcb, 0x5a, 0xe9, - 0x76, 0xa5, 0x5e, 0x7f, 0xb6, 0x65, 0xaf, 0x6c, 0xac, 0xd6, 0xeb, 0x85, 0xfc, 0xed, 0x86, 0x16, - 0x27, 0x84, 0xb4, 0xf0, 0xf4, 0x61, 0xa5, 0x69, 0xaf, 0x7e, 0xb1, 0xbb, 0x6e, 0xaf, 0xae, 0x24, - 0x5b, 0xd0, 0x6a, 0x7f, 0xb8, 0x5a, 0x2f, 0xe4, 0xd0, 0x45, 0x98, 0xd1, 0x4a, 0x37, 0xb7, 0x0a, - 0xf9, 0xdb, 0x37, 0xf9, 0x13, 0x24, 0x34, 0x0d, 0xb0, 0xb2, 0x5a, 0xaf, 0xad, 0x6e, 0xae, 0xac, - 0x6f, 0x3e, 0x2a, 0x9c, 0x43, 0x53, 0x30, 0x5e, 0x91, 0x3f, 0x73, 0xcb, 0x7f, 0xff, 0x77, 0x73, - 0x30, 0x41, 0x36, 0xb6, 0xb8, 0x03, 0xfe, 0x4a, 0x11, 0x02, 0xf8, 0x82, 0xf2, 0x68, 0xda, 0xa9, - 0x5f, 0x7c, 0xca, 0xe3, 0x4a, 0x19, 0x32, 0x3e, 0x05, 0xb8, 0x95, 0xbb, 0x97, 0x43, 0x36, 0xb5, - 0x6e, 0xc5, 0xa4, 0x0c, 0x49, 0xd9, 0x2c, 0xb5, 0x94, 0x52, 0xaa, 0x85, 0x70, 0xf2, 0x18, 0xa6, - 0xc8, 0xc7, 0x5f, 0xd6, 0xa2, 0x85, 0x38, 0xbc, 0x22, 0x6f, 0x94, 0x16, 0xcd, 0x95, 0x32, 0xec, - 0xdd, 0x24, 0xed, 0x5f, 0x10, 0x3a, 0x5d, 0x22, 0x54, 0xcf, 0xa9, 0xa9, 0xce, 0xbb, 0x2d, 0xcc, - 0xae, 0xf7, 0x4a, 0x17, 0x62, 0xc5, 0x8d, 0xfb, 0xf7, 0x72, 0xa8, 0x4e, 0x9f, 0x49, 0x69, 0x52, - 0x04, 0x12, 0x7e, 0x01, 0x49, 0xf1, 0x82, 0xf5, 0xa6, 0x2c, 0x4d, 0x52, 0x29, 0xe2, 0xc7, 0x26, - 0xa0, 0xe4, 0xc7, 0x19, 0x5d, 0x8d, 0x96, 0xc2, 0xfc, 0xdd, 0x2e, 0x5d, 0x4a, 0xdc, 0x1b, 0xac, - 0x12, 0xf6, 0x8c, 0x56, 0x61, 0x9a, 0x3b, 0x73, 0x71, 0x71, 0x01, 0x65, 0x09, 0x1c, 0xa9, 0x64, - 0x1e, 0xd1, 0x79, 0x92, 0x22, 0x07, 0x2a, 0x45, 0xe3, 0x88, 0xcb, 0x21, 0xa5, 0x05, 0x63, 0x1d, - 0x1f, 0xdf, 0x43, 0x98, 0xd6, 0xa5, 0x17, 0x24, 0x16, 0xc8, 0x28, 0xd4, 0xa4, 0x76, 0xa8, 0x09, - 0xf3, 0x4f, 0x1d, 0x97, 0x0a, 0xf4, 0xdc, 0x3a, 0x2d, 0x6c, 0xcb, 0xa8, 0x9c, 0x61, 0x6c, 0xae, - 0xe3, 0x6e, 0xbb, 0x34, 0xe8, 0x81, 0x30, 0xdd, 0xb9, 0x75, 0xf1, 0x11, 0xd6, 0x6d, 0xf3, 0xc8, - 0xd2, 0xa3, 0xfe, 0x9b, 0xae, 0x5b, 0x4a, 0x69, 0x37, 0x84, 0xe8, 0x29, 0x95, 0x02, 0x62, 0x14, - 0x95, 0x3d, 0x71, 0x6a, 0x72, 0x45, 0xea, 0x52, 0x18, 0xba, 0xf1, 0xab, 0xbe, 0x00, 0xa5, 0x4c, - 0x5c, 0x2a, 0xb1, 0x7b, 0x39, 0xf4, 0x15, 0x58, 0x69, 0xe4, 0x9e, 0xb9, 0xe1, 0x0b, 0x7e, 0xd5, - 0xbd, 0x60, 0x24, 0xc0, 0x0f, 0x4a, 0x06, 0x75, 0x1b, 0x66, 0x4d, 0x97, 0x92, 0x72, 0x42, 0x33, - 0x6e, 0x2c, 0x53, 0x77, 0x81, 0x4d, 0x64, 0x99, 0x76, 0xfa, 0x22, 0x65, 0xdc, 0x89, 0xa5, 0xd2, - 0xfc, 0x14, 0xa6, 0xc9, 0x2e, 0x79, 0x82, 0x71, 0xaf, 0xd2, 0x71, 0x5f, 0xe2, 0x00, 0x89, 0xc7, - 0xf3, 0xb2, 0x28, 0x0d, 0xf7, 0x56, 0x0e, 0x7d, 0x87, 0x67, 0x7d, 0xe7, 0x6f, 0x3d, 0xc5, 0x53, - 0x50, 0x5a, 0x56, 0x12, 0xbf, 0x68, 0xe5, 0xbd, 0x1c, 0xfa, 0x3e, 0x8c, 0x3e, 0xc2, 0x21, 0xf5, - 0xcb, 0xba, 0x26, 0xed, 0xf3, 0xec, 0x2e, 0x7c, 0xbd, 0x2b, 0xbd, 0x56, 0x44, 0x87, 0xe3, 0x2a, - 0x20, 0xba, 0x0b, 0xc0, 0x18, 0x02, 0xa5, 0x10, 0xaf, 0x2e, 0x25, 0xba, 0x8d, 0x1e, 0x91, 0xef, - 0x67, 0x07, 0x87, 0xf8, 0xa4, 0x4d, 0xa6, 0xcd, 0xd1, 0x06, 0x4c, 0xcb, 0x48, 0x81, 0x9b, 0xd4, - 0xb1, 0xd7, 0x8a, 0x11, 0x0b, 0x4e, 0x41, 0xed, 0x63, 0x72, 0x2a, 0x98, 0xbd, 0x5c, 0x06, 0x16, - 0x40, 0x69, 0xa1, 0x06, 0xe4, 0x24, 0x32, 0x30, 0x05, 0x57, 0xa6, 0x98, 0x97, 0xb8, 0xf1, 0xa4, - 0xf3, 0x31, 0x5c, 0x0c, 0x25, 0xb5, 0x5d, 0x3d, 0xc8, 0x40, 0xc4, 0x73, 0xd3, 0x62, 0x23, 0x94, - 0xae, 0x65, 0x40, 0x30, 0x76, 0x47, 0x39, 0xc9, 0x0a, 0x51, 0x0f, 0x59, 0x33, 0x6a, 0x3a, 0x6b, - 0x61, 0x01, 0x4c, 0x66, 0xf8, 0x2e, 0xa1, 0x64, 0x15, 0xf9, 0xea, 0x69, 0x8f, 0xdb, 0xa3, 0xaf, - 0x9e, 0x21, 0xfa, 0x40, 0xf4, 0xd5, 0x33, 0xbe, 0x87, 0x7f, 0xc2, 0x14, 0x56, 0x2d, 0xa9, 0x6d, - 0x63, 0x19, 0x09, 0x27, 0x3d, 0xad, 0x82, 0x1f, 0xec, 0x4b, 0xa6, 0xba, 0xc6, 0x83, 0x7b, 0x39, - 0xb4, 0x0a, 0x17, 0xa5, 0x1f, 0x76, 0x54, 0x85, 0x52, 0x10, 0x52, 0x37, 0xc1, 0xe7, 0x70, 0x91, - 0x6f, 0x29, 0x8d, 0x4c, 0x41, 0x72, 0x07, 0x6e, 0xb4, 0x4f, 0x25, 0xf0, 0x18, 0xe6, 0xea, 0xb1, - 0x41, 0xb1, 0x2b, 0xe6, 0xcb, 0x3a, 0x09, 0x25, 0x7f, 0x60, 0x2a, 0xad, 0x27, 0x80, 0x98, 0x4e, - 0x28, 0xc8, 0xbd, 0x74, 0xf1, 0x2b, 0x74, 0x25, 0x36, 0x24, 0x52, 0x48, 0xc1, 0x28, 0x7b, 0x49, - 0x9b, 0x22, 0xb4, 0xc3, 0xf2, 0x1f, 0xb0, 0xdc, 0x44, 0x4e, 0xcf, 0xd9, 0x73, 0x3b, 0x6e, 0xe8, - 0x62, 0xb2, 0xc3, 0x54, 0x04, 0xb5, 0x4a, 0x2c, 0xe3, 0xe5, 0x54, 0x08, 0xf4, 0x19, 0x4c, 0x3d, - 0xc2, 0x61, 0x94, 0x22, 0x11, 0xcd, 0x27, 0x92, 0x2a, 0xf2, 0xa5, 0x13, 0xaf, 0x7e, 0xf4, 0xbc, - 0x8c, 0xeb, 0x50, 0x60, 0xdc, 0x51, 0x21, 0x71, 0x25, 0x41, 0x82, 0x83, 0x38, 0xbe, 0x73, 0x18, - 0xa4, 0xce, 0xd6, 0x5d, 0x66, 0xc3, 0x45, 0x62, 0xdb, 0xaa, 0xe2, 0xd7, 0x45, 0xad, 0x4c, 0x46, - 0x69, 0x99, 0x33, 0xe6, 0x06, 0x44, 0xd7, 0xa3, 0x4f, 0x61, 0x6a, 0xc2, 0xbf, 0x12, 0x8a, 0xbf, - 0xc9, 0x69, 0x3c, 0x40, 0x32, 0x5c, 0xbc, 0x81, 0xe8, 0x4d, 0xed, 0x8b, 0x7d, 0x3a, 0xba, 0x9f, - 0xc1, 0xb8, 0x4c, 0x32, 0x27, 0xd9, 0x4a, 0x3c, 0x45, 0x5f, 0xa9, 0x98, 0xac, 0xe0, 0x23, 0xfd, - 0x94, 0xa5, 0x94, 0xd4, 0xf1, 0xe3, 0x79, 0xd8, 0x52, 0x27, 0xf6, 0x23, 0x98, 0x50, 0x32, 0xb0, - 0xc9, 0x8d, 0x9c, 0xcc, 0xca, 0x56, 0xd2, 0x33, 0xf1, 0xdf, 0xcb, 0xa1, 0xbb, 0xf4, 0xd3, 0x42, - 0x9d, 0xd2, 0xe7, 0x22, 0x34, 0x25, 0xb7, 0x52, 0x0c, 0x05, 0x7d, 0x40, 0xdf, 0xee, 0xd7, 0xfa, - 0xbe, 0x4f, 0x34, 0x44, 0x82, 0x97, 0x26, 0x41, 0xc4, 0x10, 0x3f, 0xa3, 0xcc, 0x44, 0x41, 0x64, - 0x77, 0xb6, 0x83, 0xb0, 0x59, 0xec, 0xc7, 0x7b, 0x39, 0xf4, 0x00, 0xc6, 0x44, 0xc2, 0x56, 0x74, - 0x49, 0xef, 0x6a, 0xfa, 0xf0, 0x1e, 0x00, 0xb0, 0xc9, 0xa6, 0x3d, 0xd5, 0xab, 0x53, 0xa7, 0xf3, - 0x01, 0xf9, 0x5e, 0xb6, 0x4f, 0x89, 0xf4, 0x99, 0xf8, 0x66, 0x52, 0xa4, 0xa2, 0xb6, 0x84, 0xea, - 0x74, 0xa6, 0xe1, 0x13, 0x81, 0x57, 0xcb, 0x23, 0x1b, 0x09, 0xbc, 0xa6, 0xf4, 0xb2, 0xa9, 0x74, - 0xd6, 0xa1, 0x50, 0x69, 0x51, 0x3e, 0x2e, 0xf3, 0x55, 0x49, 0x6d, 0x23, 0x5e, 0x21, 0x68, 0xcd, - 0xc5, 0xd3, 0x5f, 0x6d, 0x60, 0x87, 0x86, 0x33, 0x98, 0x97, 0x32, 0x41, 0xac, 0xca, 0x8c, 0x91, - 0xa1, 0x5d, 0xcc, 0xd6, 0x88, 0x3e, 0xd4, 0xf9, 0x66, 0x64, 0x3e, 0xa6, 0xbc, 0x4c, 0xc9, 0xe5, - 0x75, 0x29, 0x8e, 0x2f, 0xf5, 0x30, 0xe1, 0x2f, 0x23, 0x41, 0x2b, 0x30, 0xc3, 0x1f, 0x4f, 0xcb, - 0x69, 0x49, 0xc3, 0x4e, 0x6b, 0xfe, 0x03, 0x98, 0x5e, 0x25, 0xbc, 0xbe, 0xdf, 0x76, 0x59, 0x08, - 0x17, 0xa4, 0xc7, 0xe4, 0x48, 0x45, 0x5c, 0x13, 0x29, 0x28, 0x95, 0x24, 0x57, 0xf2, 0x94, 0x26, - 0xf3, 0x88, 0x95, 0x66, 0x05, 0x59, 0x35, 0x1f, 0x16, 0xd7, 0x93, 0xe7, 0x53, 0xd2, 0x4a, 0xa1, - 0x1b, 0x9a, 0xee, 0x97, 0x96, 0x1b, 0xca, 0x20, 0xed, 0x7d, 0xa9, 0x04, 0xda, 0x4f, 0xa1, 0x99, - 0x9d, 0x6f, 0x2a, 0x75, 0xdc, 0x32, 0xe8, 0x82, 0x31, 0x2f, 0x14, 0x7a, 0x47, 0xa7, 0x9e, 0x91, - 0x3b, 0x2a, 0xb5, 0x05, 0xaa, 0x5b, 0xeb, 0x69, 0x8b, 0xd0, 0x52, 0x76, 0x76, 0x25, 0x45, 0xb7, - 0x4e, 0xc9, 0x77, 0xf4, 0x98, 0x6e, 0xb3, 0x28, 0x1a, 0x3f, 0x52, 0x35, 0xd5, 0x78, 0x32, 0x02, - 0x29, 0x42, 0x99, 0x73, 0x17, 0x3d, 0xa2, 0xec, 0x52, 0x89, 0xec, 0x9f, 0xca, 0xf0, 0xae, 0x98, - 0xe8, 0x04, 0xca, 0xb7, 0x70, 0x26, 0x96, 0x05, 0x48, 0x9a, 0x47, 0xcc, 0x79, 0x88, 0x4a, 0x4b, - 0x69, 0xd5, 0x9c, 0x62, 0x5d, 0x24, 0x91, 0x55, 0x46, 0xba, 0xa4, 0x7d, 0xa1, 0x92, 0x83, 0x2d, - 0xa7, 0xd6, 0xcb, 0xb9, 0x2b, 0xc4, 0xb3, 0x36, 0x48, 0xa2, 0x29, 0xe9, 0x1c, 0x32, 0x58, 0xe2, - 0xac, 0xba, 0x35, 0x06, 0xce, 0x60, 0x1a, 0x9d, 0x1d, 0x98, 0x33, 0x26, 0x59, 0x90, 0x62, 0x44, - 0x56, 0x0a, 0x86, 0x54, 0xaa, 0x18, 0x2e, 0x99, 0xf3, 0xac, 0xa0, 0xb7, 0x74, 0xd5, 0xdf, 0x9c, - 0x75, 0xa2, 0x74, 0x63, 0x00, 0x14, 0x9f, 0xd0, 0xaf, 0xe8, 0x67, 0x33, 0xd1, 0xc6, 0x35, 0xc5, - 0x18, 0x90, 0xd2, 0x80, 0x95, 0x05, 0x22, 0xf7, 0xc0, 0xac, 0x29, 0xcf, 0x53, 0xea, 0x14, 0x5f, - 0x4f, 0xa7, 0x19, 0x6d, 0xac, 0x86, 0x08, 0x75, 0x90, 0x3a, 0x33, 0x99, 0xf9, 0x38, 0x32, 0xb4, - 0xc9, 0x92, 0xdc, 0x0f, 0x27, 0xef, 0x72, 0xba, 0x65, 0x68, 0xd6, 0x94, 0x05, 0x26, 0x6e, 0xb8, - 0x31, 0x25, 0xf9, 0x90, 0xd3, 0x90, 0x99, 0x46, 0xa6, 0xc1, 0x8c, 0x38, 0x3a, 0x75, 0xd5, 0x88, - 0x63, 0x24, 0x7d, 0x35, 0x1d, 0x20, 0xda, 0x11, 0x86, 0x74, 0x56, 0x72, 0x47, 0xa4, 0x27, 0xd6, - 0x92, 0x3b, 0x22, 0x2b, 0x1b, 0x96, 0x2d, 0x0e, 0x5d, 0xca, 0xb4, 0x64, 0xe4, 0x3e, 0xc9, 0x50, - 0xb9, 0x8a, 0xd1, 0xc2, 0xc5, 0xba, 0x7d, 0xda, 0x65, 0xfb, 0x0a, 0x2e, 0xa7, 0xe6, 0x39, 0x41, - 0x6f, 0x27, 0x0e, 0x74, 0xca, 0x4c, 0xa4, 0xf7, 0x74, 0x4a, 0x4b, 0x51, 0x22, 0xad, 0x58, 0xb1, - 0x6c, 0x28, 0x09, 0xd6, 0x6f, 0x48, 0x95, 0xc2, 0x58, 0xbf, 0x92, 0xee, 0xe4, 0x24, 0xac, 0xdf, - 0x94, 0x1d, 0x45, 0xf2, 0x54, 0xa5, 0x5f, 0x42, 0xa4, 0x8b, 0x57, 0x9c, 0x86, 0xa7, 0x9e, 0xa4, - 0x6b, 0x69, 0x74, 0x56, 0xa8, 0xca, 0x21, 0xb2, 0x9f, 0xa0, 0xcb, 0xda, 0x34, 0x69, 0x9f, 0xdb, - 0x92, 0x36, 0x38, 0xfd, 0x4b, 0x5b, 0xa3, 0xe6, 0x62, 0x99, 0x6d, 0x25, 0xb5, 0x17, 0x0b, 0x49, - 0x1a, 0x9a, 0xa9, 0x58, 0xce, 0x02, 0xeb, 0xcd, 0x62, 0x7c, 0x72, 0xb4, 0x0e, 0xa5, 0x0f, 0x09, - 0xa9, 0x53, 0x33, 0xa0, 0x4b, 0xe9, 0xa2, 0xee, 0x45, 0xa6, 0x3c, 0xb0, 0x58, 0x64, 0xe2, 0x45, - 0xe2, 0x25, 0x69, 0xf7, 0x52, 0x4a, 0x33, 0xcc, 0x1c, 0xdb, 0xd4, 0xbb, 0xc8, 0x90, 0x38, 0x46, - 0xf2, 0xd0, 0xcc, 0xbc, 0x32, 0x06, 0x31, 0x4f, 0x72, 0xe5, 0x54, 0x8a, 0x99, 0x99, 0x64, 0x52, - 0x7b, 0xfa, 0x53, 0x85, 0x2b, 0x27, 0xd2, 0xc3, 0xa0, 0x5b, 0x71, 0x19, 0x2f, 0x2d, 0x83, 0x4c, - 0x06, 0xd7, 0x9f, 0x35, 0x65, 0x96, 0x51, 0x6c, 0xb7, 0xa9, 0x69, 0x67, 0x0c, 0xb3, 0x20, 0xd9, - 0x5b, 0x0a, 0xb5, 0x8c, 0x3c, 0x33, 0xa9, 0x3d, 0xfc, 0x91, 0xc2, 0xde, 0x62, 0xf9, 0x60, 0xa4, - 0x51, 0x61, 0x40, 0xc2, 0x98, 0x54, 0xda, 0x9b, 0xd4, 0x1f, 0x2d, 0x99, 0xcc, 0x45, 0xca, 0x2e, - 0x59, 0xa9, 0x5e, 0x8c, 0xa6, 0xdd, 0xb9, 0xe4, 0x10, 0x09, 0xbd, 0x4b, 0x31, 0xc3, 0xec, 0xa0, - 0x8e, 0x49, 0x3e, 0x6c, 0x48, 0x02, 0x13, 0xe3, 0xc3, 0xe9, 0x69, 0x62, 0x32, 0x34, 0xa6, 0x99, - 0xba, 0xbb, 0xdf, 0x55, 0xf2, 0xba, 0x48, 0x7d, 0x29, 0x99, 0x56, 0x46, 0xb2, 0x18, 0x53, 0x1a, - 0x98, 0xad, 0xc8, 0x4f, 0x5d, 0xcd, 0xd0, 0x81, 0x4a, 0xe9, 0x89, 0x49, 0x24, 0xbb, 0x31, 0xa6, - 0xf4, 0x50, 0x08, 0xaa, 0xe9, 0x31, 0x24, 0x41, 0x43, 0xa6, 0x0e, 0x49, 0xd0, 0x98, 0x4f, 0x83, - 0x99, 0x60, 0x6c, 0xaf, 0x83, 0x55, 0x13, 0x8c, 0x92, 0xdc, 0x22, 0x66, 0x0b, 0x41, 0x9f, 0x50, - 0x4b, 0x48, 0xb6, 0xf9, 0x64, 0x5e, 0xa7, 0x14, 0x71, 0xcb, 0x07, 0xe2, 0x32, 0x80, 0x36, 0xa8, - 0x53, 0x1e, 0x6c, 0xdc, 0xa0, 0x48, 0xba, 0x71, 0x43, 0xed, 0x68, 0xba, 0x9d, 0x74, 0x52, 0x0d, - 0x8e, 0x2c, 0xe7, 0xca, 0x10, 0xc1, 0x5d, 0xce, 0x95, 0x29, 0x2e, 0x3a, 0xd5, 0x81, 0x77, 0x84, - 0x26, 0x1f, 0xd1, 0xbb, 0x92, 0x19, 0xd8, 0xbc, 0xb4, 0x94, 0x1d, 0x0d, 0x9c, 0xdf, 0xe3, 0x15, - 0xe2, 0xf1, 0x9b, 0x91, 0x29, 0x2e, 0xbd, 0x12, 0x16, 0x5b, 0x6a, 0x43, 0xa9, 0x81, 0x9f, 0xb7, - 0x85, 0xb1, 0x5a, 0xa7, 0x9b, 0x12, 0x9d, 0x5c, 0x25, 0x9d, 0x2d, 0xa0, 0x44, 0xa1, 0x9c, 0x55, - 0xdd, 0x34, 0x11, 0x2a, 0x5a, 0x15, 0x50, 0x0c, 0xd1, 0x9f, 0x5d, 0xf1, 0xae, 0xd1, 0x9c, 0x21, - 0xe5, 0x1d, 0x5d, 0xd7, 0xcb, 0x08, 0xf2, 0x31, 0xf0, 0xa6, 0x14, 0xfd, 0x44, 0x64, 0x42, 0x4d, - 0x66, 0x02, 0xb8, 0x11, 0x33, 0xbb, 0x9a, 0xc3, 0x42, 0x94, 0xb2, 0x12, 0x0d, 0xa0, 0xa7, 0xf4, - 0x8a, 0x7d, 0x6b, 0x7d, 0xa5, 0xc6, 0x3d, 0xba, 0x3c, 0x3f, 0x71, 0x6d, 0xf5, 0xcc, 0x0d, 0x5f, - 0xb0, 0xd4, 0x18, 0x0a, 0xf7, 0x61, 0x20, 0x1a, 0x62, 0xe3, 0x01, 0xaa, 0x53, 0xc9, 0x5d, 0x2b, - 0x35, 0xdc, 0x5c, 0x19, 0x08, 0x96, 0xcc, 0x04, 0x69, 0x32, 0x2f, 0x2a, 0x18, 0x90, 0x83, 0xa7, - 0x77, 0x33, 0xa5, 0x0f, 0x59, 0xf2, 0x05, 0xdb, 0x36, 0x66, 0x32, 0x27, 0x65, 0xdf, 0x8f, 0x60, - 0x8e, 0x4d, 0x78, 0xec, 0x11, 0x89, 0xd6, 0x1f, 0xa5, 0xbc, 0x94, 0x52, 0x8e, 0x36, 0xa9, 0xe7, - 0x46, 0xbc, 0x54, 0xd1, 0x62, 0xcc, 0xaf, 0x54, 0x52, 0xe9, 0xb1, 0xa5, 0x24, 0x62, 0xfb, 0x1b, - 0x2d, 0xa5, 0x86, 0xd8, 0x58, 0xe6, 0x4b, 0xa9, 0x95, 0x9e, 0x6e, 0x29, 0x63, 0x04, 0xf5, 0xa5, - 0xd4, 0xbb, 0x99, 0xd2, 0x87, 0xc1, 0x4b, 0x69, 0x26, 0x73, 0xea, 0xa5, 0x8c, 0xbd, 0xe0, 0xd1, - 0xfa, 0x63, 0x5a, 0xca, 0x38, 0x3c, 0x5b, 0xca, 0x78, 0x69, 0x4c, 0x21, 0xcd, 0x58, 0xca, 0x38, - 0xe6, 0x17, 0x94, 0x1e, 0x7b, 0x22, 0x74, 0xaa, 0xc5, 0x14, 0xc1, 0x2b, 0x62, 0xa8, 0x8d, 0x07, - 0xe8, 0x19, 0xb5, 0x86, 0xc4, 0xca, 0x4f, 0xb6, 0xa0, 0x8b, 0x69, 0x44, 0xe9, 0x92, 0xae, 0x0b, - 0x39, 0x2b, 0xde, 0xdd, 0xd4, 0xbe, 0x64, 0xad, 0x07, 0x5b, 0xd6, 0x38, 0xa9, 0xd3, 0x2e, 0xec, - 0x53, 0xc1, 0x34, 0x13, 0xaf, 0xac, 0x62, 0xbd, 0x52, 0x17, 0x37, 0xb5, 0x06, 0xed, 0x50, 0x5b, - 0x4f, 0xb2, 0x5c, 0xb1, 0x13, 0xa5, 0x3d, 0xe7, 0x1a, 0x48, 0x35, 0xf1, 0x6c, 0x4b, 0xa5, 0x9a, - 0xf6, 0xa6, 0x4b, 0x52, 0x4d, 0x62, 0xaf, 0xd0, 0x63, 0xbb, 0xe3, 0x13, 0x35, 0xa9, 0x9d, 0xd4, - 0xa1, 0xf4, 0xf9, 0x13, 0x37, 0x9a, 0x3a, 0x78, 0x63, 0x19, 0xad, 0xd3, 0x0d, 0xa8, 0x17, 0x67, - 0x29, 0x99, 0x66, 0x32, 0x74, 0x7f, 0xac, 0x49, 0x6f, 0x58, 0xbd, 0x4f, 0x69, 0x6d, 0xa7, 0x77, - 0x4a, 0x6a, 0xe0, 0x27, 0x1c, 0x5d, 0xda, 0xee, 0x60, 0x52, 0x20, 0x53, 0x78, 0x07, 0xcd, 0x4c, - 0xdc, 0x3f, 0x17, 0xfd, 0x00, 0xc6, 0x05, 0xf2, 0xe0, 0x09, 0x89, 0x63, 0xd3, 0x09, 0xf9, 0x0c, - 0x26, 0x14, 0xf7, 0x60, 0x94, 0xd6, 0x52, 0x86, 0x48, 0x39, 0xa1, 0x38, 0x2f, 0x9f, 0x1e, 0x7f, - 0x05, 0xa6, 0x34, 0xe7, 0x67, 0x29, 0x08, 0x99, 0x5c, 0xa2, 0xb3, 0xa8, 0x68, 0x4e, 0xce, 0x92, - 0x8a, 0xc9, 0xf5, 0x39, 0x5b, 0x28, 0x53, 0x1e, 0x72, 0x2a, 0x42, 0x59, 0xf2, 0x45, 0xa9, 0x22, - 0x94, 0x99, 0xde, 0x7e, 0x7e, 0x1f, 0x26, 0xf8, 0xf6, 0xc8, 0x5c, 0xd9, 0x74, 0x6d, 0x79, 0x4e, - 0xf1, 0x19, 0xec, 0xb7, 0xdd, 0xb0, 0xe6, 0x75, 0x9f, 0xbb, 0xfb, 0x03, 0x17, 0x39, 0x89, 0xd2, - 0x58, 0x46, 0x0d, 0x1a, 0x96, 0x5b, 0x04, 0x4b, 0xc7, 0xe1, 0x2b, 0xcf, 0x3f, 0x70, 0xbb, 0xfb, - 0x03, 0x48, 0x5e, 0xd5, 0x49, 0xc6, 0xf1, 0x18, 0xdd, 0x7a, 0x3a, 0xdd, 0x81, 0xf8, 0x19, 0xda, - 0xf2, 0x22, 0xbd, 0xb7, 0x3f, 0x6d, 0x8f, 0xd3, 0x6f, 0x0e, 0x2e, 0x47, 0xde, 0x76, 0x36, 0x6e, - 0x79, 0x7e, 0x7b, 0x30, 0xb1, 0xb2, 0xee, 0xdb, 0x16, 0x43, 0x6b, 0x2c, 0x13, 0xaa, 0xf5, 0x54, - 0xaa, 0x83, 0xb0, 0x33, 0xbe, 0x16, 0x0b, 0x74, 0xec, 0xa7, 0xec, 0x6d, 0xfa, 0xc9, 0x20, 0x1c, - 0x98, 0x70, 0xfa, 0x6d, 0x1f, 0x3f, 0xc7, 0x3e, 0x75, 0x99, 0x1c, 0xe4, 0x2c, 0xa8, 0x83, 0x37, - 0x96, 0x09, 0x95, 0x7a, 0x82, 0x4a, 0x1a, 0x74, 0x96, 0xa0, 0x44, 0x87, 0x76, 0xc2, 0xde, 0xa4, - 0x91, 0xf9, 0x90, 0xda, 0x2c, 0x77, 0xd7, 0x07, 0xcc, 0x88, 0x70, 0xe2, 0x15, 0x80, 0x8d, 0xfb, - 0x04, 0xb3, 0xae, 0x60, 0x26, 0x21, 0x52, 0xdb, 0xfc, 0x81, 0x30, 0x4e, 0x0e, 0x6c, 0x36, 0xdd, - 0x1b, 0x61, 0x5c, 0xa6, 0x0c, 0x41, 0x8a, 0x5a, 0xaf, 0x25, 0xc4, 0x28, 0x4d, 0xa9, 0x2e, 0x83, - 0x01, 0xaa, 0x30, 0x29, 0x5a, 0x4d, 0x9d, 0xa1, 0xdc, 0x8b, 0x1a, 0x73, 0x6a, 0xc4, 0x49, 0x30, - 0xb3, 0xc4, 0x86, 0xd7, 0x3a, 0x50, 0xcd, 0x12, 0x4a, 0x2e, 0x86, 0x92, 0x9e, 0x29, 0x81, 0x7f, - 0x90, 0x68, 0xba, 0x04, 0xd5, 0x41, 0x43, 0xcd, 0xc6, 0xa0, 0x9a, 0x25, 0xf4, 0xbc, 0x11, 0xd2, - 0x2c, 0x41, 0x1b, 0xd4, 0x29, 0x0f, 0x36, 0x4b, 0x50, 0x24, 0xdd, 0x2c, 0xa1, 0x76, 0x34, 0x9d, - 0x5d, 0xa0, 0x64, 0xe2, 0x08, 0x29, 0xf0, 0xa6, 0xe6, 0x94, 0xc8, 0xf0, 0xbd, 0xb8, 0x68, 0xc8, - 0x75, 0x23, 0xd5, 0xfd, 0xf4, 0x3c, 0x38, 0x25, 0xdd, 0x91, 0xe0, 0x5e, 0x0e, 0x6d, 0xd2, 0x5c, - 0xe9, 0x9c, 0x81, 0xd9, 0x38, 0x08, 0x7d, 0x97, 0xbe, 0x53, 0x4a, 0xff, 0x5a, 0x0b, 0xf9, 0xd6, - 0x80, 0xd3, 0x78, 0x97, 0xd0, 0xab, 0x9b, 0xe9, 0x65, 0xe2, 0x65, 0x58, 0x74, 0xb8, 0xf9, 0xef, - 0x34, 0x5d, 0x4c, 0xdf, 0xe2, 0xa3, 0xec, 0xd6, 0x3b, 0x1d, 0xb5, 0x10, 0xc5, 0x3a, 0xe4, 0x12, - 0xfb, 0x1d, 0x38, 0xcf, 0x90, 0x52, 0xbf, 0x91, 0x93, 0x2a, 0x0e, 0xba, 0x2f, 0x5c, 0xb4, 0x08, - 0x8a, 0x56, 0x95, 0xda, 0xaf, 0xfb, 0x30, 0xce, 0x6c, 0xf9, 0x27, 0x47, 0xf9, 0x44, 0x38, 0x72, - 0x65, 0x75, 0x2c, 0xdd, 0xb7, 0x71, 0x4a, 0xbd, 0xf0, 0x3e, 0xfd, 0x44, 0x7e, 0x9f, 0xde, 0xa7, - 0x08, 0xb3, 0x65, 0x3a, 0xfe, 0x5c, 0x2c, 0x3a, 0x20, 0x9f, 0x52, 0xc6, 0x20, 0x65, 0xd2, 0xa8, - 0xb4, 0xee, 0x5f, 0x48, 0x60, 0xa3, 0x4f, 0xc4, 0xf3, 0x01, 0x89, 0x9c, 0x04, 0xca, 0x98, 0xb3, - 0x69, 0x36, 0xcd, 0x6f, 0x82, 0x2c, 0x19, 0xec, 0xc0, 0x6e, 0x9f, 0xe4, 0xde, 0x67, 0xf0, 0xd4, - 0xa5, 0x51, 0xd9, 0xa2, 0x82, 0x57, 0x22, 0x6e, 0x65, 0x3a, 0xa1, 0xa5, 0xf4, 0x50, 0x97, 0x74, - 0x31, 0x1e, 0x53, 0xc5, 0x2a, 0x99, 0x00, 0x2c, 0x6d, 0x78, 0x19, 0xa1, 0x33, 0x23, 0x4d, 0x32, - 0x49, 0x2e, 0x03, 0x2d, 0x4b, 0x31, 0x65, 0x0b, 0x76, 0x36, 0xe4, 0xd6, 0x85, 0x03, 0xd2, 0xc9, - 0x07, 0x9b, 0x21, 0x04, 0x19, 0x6e, 0x9a, 0x06, 0xae, 0x45, 0x1a, 0xb9, 0x9f, 0x50, 0xf9, 0xcf, - 0x9c, 0xf5, 0x27, 0x95, 0xd8, 0x2d, 0xe5, 0xb2, 0x32, 0x3b, 0x5f, 0xd0, 0x01, 0x7d, 0x97, 0x61, - 0x8e, 0xec, 0x79, 0x73, 0x00, 0x15, 0x31, 0x13, 0x6f, 0x0f, 0x84, 0x93, 0xf7, 0x16, 0x0b, 0xec, - 0x0b, 0x6b, 0x6e, 0x6f, 0x40, 0xa4, 0x52, 0xc3, 0x55, 0x52, 0x4a, 0x4a, 0x1d, 0x41, 0x50, 0xf7, - 0xee, 0xca, 0x1c, 0x43, 0xda, 0xf4, 0x7f, 0x01, 0xe5, 0xe8, 0x46, 0xf6, 0x74, 0x8b, 0x90, 0x2e, - 0xd1, 0xa3, 0x64, 0xa2, 0x21, 0x94, 0x15, 0xf3, 0xb1, 0x74, 0x2d, 0x6d, 0x86, 0x03, 0xe5, 0xaa, - 0x9f, 0xfb, 0x92, 0xc4, 0x62, 0xdc, 0xa6, 0x45, 0xcb, 0xcd, 0xb0, 0x1d, 0xf1, 0x87, 0x2a, 0x67, - 0x42, 0x28, 0xb9, 0xda, 0xa7, 0x27, 0x24, 0x2f, 0x4c, 0x63, 0x84, 0xac, 0x8c, 0xe5, 0x3d, 0x8d, - 0x3f, 0x48, 0x7c, 0x29, 0x4e, 0xbb, 0xa0, 0x4e, 0xf4, 0x38, 0x23, 0x99, 0x0d, 0x49, 0xca, 0x72, - 0xa9, 0x99, 0x99, 0xe4, 0xea, 0x66, 0xa4, 0x52, 0xaa, 0x91, 0x63, 0xca, 0x9a, 0xd0, 0x52, 0xb1, - 0xd4, 0xec, 0x8d, 0xc8, 0xea, 0x60, 0xc8, 0xd1, 0x52, 0x02, 0x51, 0x69, 0x6f, 0xa0, 0x3a, 0x94, - 0xd8, 0x16, 0x31, 0xbd, 0x39, 0x97, 0x1e, 0xf5, 0xa6, 0xca, 0x0c, 0xed, 0xa2, 0x0e, 0x25, 0xb6, - 0x5d, 0xce, 0x92, 0x68, 0x93, 0xa6, 0xdd, 0x33, 0x52, 0xbc, 0xa1, 0x3c, 0x4b, 0x4c, 0x7f, 0xc9, - 0x5f, 0xca, 0x6e, 0x18, 0xfd, 0x18, 0xe6, 0x8c, 0x4f, 0xf9, 0xe5, 0x9d, 0x76, 0xd6, 0x43, 0xff, - 0x41, 0xc4, 0x0f, 0xa0, 0x98, 0x96, 0x37, 0x25, 0xf2, 0xf0, 0xcf, 0x4e, 0x66, 0x23, 0x79, 0xea, - 0xc0, 0x04, 0x2c, 0x9b, 0x30, 0x6b, 0xca, 0x45, 0x22, 0x0f, 0x47, 0x46, 0xa2, 0x12, 0xe3, 0x33, - 0x82, 0x6d, 0x98, 0x33, 0xe6, 0x03, 0x91, 0x33, 0x93, 0x95, 0x2d, 0xc4, 0x48, 0xf1, 0x4b, 0x98, - 0x4f, 0x49, 0x7e, 0x11, 0x5d, 0xbc, 0x65, 0x26, 0xc7, 0xc8, 0x70, 0x00, 0x28, 0xa5, 0xe7, 0x55, - 0x90, 0x7e, 0x1f, 0x03, 0x53, 0x2f, 0x94, 0x8c, 0xc9, 0x66, 0xd0, 0x0e, 0xdd, 0x84, 0xa6, 0x44, - 0x0b, 0xea, 0x26, 0xcc, 0x48, 0xc4, 0x90, 0xf2, 0xfc, 0x63, 0x3e, 0x25, 0xb7, 0x42, 0x06, 0xd5, - 0x13, 0xf4, 0x76, 0x53, 0xf0, 0x7f, 0x3d, 0xd8, 0x7e, 0xcc, 0x97, 0xd0, 0x18, 0x89, 0xdf, 0xd8, - 0x4f, 0xe5, 0xb9, 0x71, 0xa7, 0x93, 0x21, 0x06, 0x21, 0xf5, 0xbd, 0x31, 0x81, 0x6c, 0xdc, 0x27, - 0x4a, 0x84, 0x8a, 0x9b, 0xc5, 0x51, 0x13, 0xc8, 0x54, 0xf0, 0xfc, 0x18, 0x26, 0xeb, 0x6a, 0xe3, - 0x86, 0x46, 0x52, 0x37, 0x85, 0xf4, 0xb2, 0x1f, 0xdc, 0xf7, 0x81, 0xb7, 0x62, 0x95, 0x4e, 0xe7, - 0x44, 0xa3, 0x48, 0xb5, 0xc9, 0x6a, 0xc1, 0x88, 0x25, 0xa7, 0x36, 0xc5, 0xd8, 0x96, 0x36, 0x59, - 0x73, 0xfc, 0xe2, 0x55, 0x3a, 0xa5, 0x51, 0x28, 0xc7, 0x0c, 0x1d, 0x5c, 0x6e, 0x22, 0x43, 0xc4, - 0xc8, 0x27, 0xea, 0x43, 0x70, 0x16, 0x00, 0x32, 0xc3, 0x88, 0x18, 0x7f, 0x00, 0x1e, 0x8b, 0x18, - 0xd9, 0x80, 0xa2, 0x08, 0xc5, 0xc6, 0x82, 0xa1, 0x45, 0xc1, 0x9f, 0x22, 0xd7, 0xa8, 0xf4, 0x58, - 0x6d, 0x19, 0xf3, 0x56, 0x88, 0x87, 0x39, 0x91, 0x96, 0xa3, 0x94, 0xf8, 0x27, 0x19, 0xbb, 0x01, - 0xa2, 0x60, 0x26, 0xd2, 0x3e, 0x93, 0x88, 0x6f, 0x52, 0xba, 0x6c, 0xa8, 0x91, 0x92, 0xd5, 0xa4, - 0x1a, 0xfa, 0x44, 0x7a, 0x8e, 0x18, 0xe2, 0xa1, 0x94, 0x16, 0x8c, 0x75, 0x9c, 0x50, 0x08, 0x0b, - 0x19, 0x69, 0x07, 0xa5, 0xb4, 0x3a, 0x38, 0x3d, 0x62, 0xe9, 0xf6, 0x49, 0x40, 0x79, 0xab, 0x58, - 0x86, 0x56, 0x4c, 0x42, 0xa1, 0xb7, 0x0d, 0xae, 0xbe, 0xa6, 0x8c, 0x7e, 0xa5, 0x41, 0x19, 0x0f, - 0xd1, 0x33, 0x58, 0x8c, 0xb9, 0x22, 0xeb, 0x2d, 0x0d, 0x22, 0x90, 0xba, 0x82, 0xcf, 0x60, 0x91, - 0xbf, 0x8d, 0x3e, 0x63, 0xc2, 0x7b, 0xb0, 0x98, 0x95, 0xcb, 0x10, 0xdd, 0x36, 0xbb, 0x1b, 0x1b, - 0xa7, 0x27, 0x5d, 0x74, 0xbd, 0x9a, 0x74, 0x3b, 0x8e, 0xad, 0xfb, 0x69, 0xd9, 0xca, 0x53, 0x98, - 0xd6, 0xf3, 0x18, 0x22, 0x95, 0x75, 0x24, 0xb2, 0x2a, 0x96, 0xae, 0xa4, 0xd4, 0xf2, 0xfd, 0xf1, - 0x19, 0x65, 0xf4, 0xb2, 0x42, 0x8d, 0x97, 0x10, 0xcf, 0x13, 0x58, 0x32, 0xa4, 0x5c, 0x40, 0xdf, - 0x87, 0x99, 0xe8, 0x7d, 0x1b, 0x23, 0x61, 0x00, 0xcb, 0xb0, 0x17, 0xcd, 0x44, 0x2f, 0xdd, 0x4e, - 0x8f, 0xbe, 0x26, 0xb8, 0x7d, 0x84, 0x7e, 0x25, 0xe1, 0x81, 0xad, 0x8d, 0xe1, 0x24, 0x4c, 0x5f, - 0x99, 0xdb, 0xd3, 0xae, 0x4e, 0x8b, 0x1e, 0x37, 0x73, 0x4c, 0x1f, 0xf5, 0xb8, 0x65, 0xc6, 0x1d, - 0x92, 0x12, 0x66, 0x0a, 0x9d, 0x0e, 0x5c, 0x1b, 0x18, 0x85, 0x08, 0xdd, 0xd5, 0x22, 0x0b, 0x0c, - 0x8e, 0x57, 0x94, 0xf5, 0x4c, 0xc1, 0x14, 0xcc, 0x47, 0xf2, 0xf8, 0x8c, 0xb8, 0x42, 0xf2, 0x99, - 0x42, 0x66, 0x34, 0xa0, 0x2f, 0x69, 0xdc, 0x55, 0xfe, 0x91, 0xa1, 0xb1, 0x32, 0x70, 0xd7, 0xe9, - 0xb6, 0xf0, 0x80, 0xeb, 0x8a, 0x6b, 0xfa, 0x25, 0x5d, 0x02, 0x91, 0xca, 0xf9, 0x4b, 0x5c, 0x3b, - 0x49, 0x23, 0x3e, 0x98, 0x48, 0xda, 0xbc, 0x54, 0x57, 0x7e, 0xf1, 0x17, 0x4b, 0xb9, 0x5f, 0xfc, - 0x72, 0x29, 0xf7, 0xef, 0x7f, 0xb9, 0x94, 0xfb, 0xaf, 0xbf, 0x5c, 0xca, 0xfd, 0x68, 0xf9, 0x64, - 0xa1, 0x12, 0x5b, 0x1d, 0x17, 0x77, 0xc3, 0xbb, 0x8c, 0xdc, 0x79, 0xfa, 0xdf, 0x83, 0xff, 0x13, - 0x00, 0x00, 0xff, 0xff, 0xe4, 0x80, 0xee, 0x9d, 0xdd, 0xcf, 0x00, 0x00, + // 13482 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xc4, 0x7d, 0x5b, 0x6c, 0x1c, 0x49, + 0x92, 0x98, 0xba, 0x49, 0x8a, 0x64, 0xf0, 0xd5, 0x4a, 0x91, 0x62, 0xab, 0x49, 0xb1, 0xa5, 0xd2, + 0x4a, 0xa3, 0xd1, 0xee, 0xea, 0x41, 0xcd, 0x7b, 0x66, 0x67, 0xb6, 0xbb, 0x49, 0x89, 0x94, 0x28, + 0x92, 0x53, 0x4d, 0xb6, 0x66, 0x77, 0x67, 0xb7, 0xb7, 0xd8, 0x9d, 0x22, 0xcb, 0x6a, 0x76, 0xf5, + 0x56, 0x55, 0x4b, 0xa3, 0x33, 0xfc, 0x38, 0x9f, 0xef, 0x3e, 0x6c, 0xd8, 0x5e, 0xc3, 0x77, 0x86, + 0x0f, 0xfe, 0x38, 0x03, 0xf6, 0x8f, 0x0d, 0x18, 0x30, 0x0e, 0x38, 0xdc, 0x8f, 0x7f, 0xce, 0x36, + 0xe0, 0xb5, 0x81, 0x03, 0x0c, 0xd8, 0x07, 0x03, 0xfe, 0xa0, 0x7d, 0xfb, 0x49, 0xc0, 0x1f, 0x86, + 0xe1, 0xfb, 0x58, 0xc0, 0x80, 0x91, 0xcf, 0xca, 0xac, 0xca, 0xaa, 0x26, 0x35, 0xdc, 0xf1, 0x8f, + 0xc4, 0xce, 0x8c, 0x88, 0x7c, 0x47, 0x45, 0x44, 0x46, 0x46, 0xc0, 0x9d, 0x10, 0x77, 0x70, 0xcf, + 0xf3, 0xc3, 0xbb, 0x1d, 0xbc, 0xef, 0xb4, 0x5e, 0xdf, 0x6d, 0x75, 0x5c, 0xdc, 0x0d, 0xef, 0xf6, + 0x7c, 0x2f, 0xf4, 0xee, 0x3a, 0xfd, 0xf0, 0x20, 0xc0, 0xfe, 0x4b, 0xb7, 0x85, 0xef, 0xd0, 0x12, + 0x34, 0x42, 0xff, 0x2b, 0xcd, 0xee, 0x7b, 0xfb, 0x1e, 0x83, 0x21, 0x7f, 0xb1, 0xca, 0xd2, 0xc2, + 0xbe, 0xe7, 0xed, 0x77, 0x30, 0x43, 0xde, 0xeb, 0x3f, 0xbf, 0x8b, 0x0f, 0x7b, 0xe1, 0x6b, 0x5e, + 0x59, 0x8e, 0x57, 0x86, 0xee, 0x21, 0x0e, 0x42, 0xe7, 0xb0, 0xc7, 0x01, 0xde, 0x96, 0x5d, 0x71, + 0xc2, 0x90, 0xd4, 0x84, 0xae, 0xd7, 0xbd, 0xfb, 0xf2, 0xbe, 0xfa, 0x93, 0x83, 0xde, 0xca, 0xec, + 0x75, 0x0b, 0xfb, 0x61, 0x90, 0x20, 0xca, 0x21, 0xc3, 0xd7, 0x3d, 0x1c, 0xdc, 0xc5, 0x2f, 0x71, + 0x37, 0x14, 0xff, 0x71, 0xd0, 0x6b, 0x66, 0x50, 0xfa, 0x2f, 0x07, 0xf9, 0xae, 0x19, 0xe4, 0x15, + 0xde, 0x23, 0x33, 0xd5, 0x95, 0x7f, 0x0c, 0x00, 0xf7, 0x9d, 0x5e, 0x0f, 0xfb, 0xd1, 0x1f, 0x89, + 0xbe, 0xf6, 0x03, 0x67, 0x1f, 0xf3, 0x3e, 0xbe, 0xbc, 0xaf, 0xfe, 0x64, 0xa0, 0xd6, 0xef, 0x2c, + 0xc1, 0xc8, 0x2a, 0x29, 0x40, 0x1f, 0xc0, 0xf0, 0xce, 0xeb, 0x1e, 0x2e, 0xe6, 0xae, 0xe6, 0x6e, + 0x4d, 0x2f, 0x17, 0x58, 0xfd, 0x9d, 0xad, 0x1e, 0xf6, 0xe9, 0x84, 0x55, 0xd1, 0xf1, 0x51, 0x79, + 0x9a, 0xb4, 0xfb, 0x1d, 0xef, 0xd0, 0x0d, 0xe9, 0x82, 0xd8, 0x14, 0x03, 0x3d, 0x83, 0x69, 0x1b, + 0x07, 0x5e, 0xdf, 0x6f, 0xe1, 0x35, 0xec, 0xb4, 0xb1, 0x5f, 0xcc, 0x5f, 0xcd, 0xdd, 0x9a, 0x58, + 0x9e, 0xbb, 0xc3, 0x86, 0xac, 0x57, 0x56, 0x2f, 0x1d, 0x1f, 0x95, 0x91, 0xcf, 0xcb, 0x22, 0x62, + 0x6b, 0xe7, 0xec, 0x18, 0x19, 0xf4, 0x25, 0x4c, 0xd5, 0xb0, 0x1f, 0x56, 0xfa, 0xe1, 0x81, 0xe7, + 0xbb, 0xe1, 0xeb, 0xe2, 0x10, 0xa5, 0x7b, 0x89, 0xd3, 0xd5, 0xea, 0x1a, 0xcb, 0xd5, 0xc5, 0xe3, + 0xa3, 0x72, 0x91, 0xac, 0x59, 0xd3, 0x11, 0xa5, 0x1a, 0x79, 0x9d, 0x18, 0xfa, 0x02, 0x26, 0xeb, + 0x64, 0x33, 0xb4, 0x76, 0xbc, 0x17, 0xb8, 0x1b, 0x14, 0x87, 0xb5, 0x4e, 0xab, 0x55, 0x8d, 0xe5, + 0xea, 0xc2, 0xf1, 0x51, 0x79, 0x9e, 0xee, 0x9d, 0x56, 0x33, 0xa4, 0x85, 0x1a, 0x69, 0x8d, 0x12, + 0xfa, 0x29, 0x4c, 0x6f, 0xfb, 0xde, 0x4b, 0x37, 0x70, 0xbd, 0x2e, 0x2d, 0x2a, 0x8e, 0x50, 0xda, + 0xf3, 0x9c, 0xb6, 0x5e, 0xd9, 0x58, 0xae, 0x5e, 0x39, 0x3e, 0x2a, 0x5f, 0xee, 0x89, 0x52, 0xd6, + 0x80, 0x3e, 0x33, 0x3a, 0x0a, 0xda, 0x81, 0x89, 0x5a, 0xa7, 0x1f, 0x84, 0xd8, 0xdf, 0x74, 0x0e, + 0x71, 0xf1, 0x3c, 0x25, 0x3f, 0x2b, 0xe6, 0x25, 0xaa, 0x69, 0x2c, 0x57, 0x4b, 0xc7, 0x47, 0xe5, + 0x4b, 0x2d, 0x56, 0xd4, 0xec, 0x3a, 0x87, 0xfa, 0x94, 0xab, 0x64, 0xd0, 0xfb, 0x30, 0xbc, 0x1b, + 0x60, 0xbf, 0x38, 0x46, 0xc9, 0x4d, 0x71, 0x72, 0xa4, 0xa8, 0xb1, 0xcc, 0xd6, 0xbf, 0x1f, 0x60, + 0x5f, 0xc3, 0xa7, 0x08, 0x04, 0xd1, 0xf6, 0x3a, 0xb8, 0x38, 0xae, 0x21, 0x92, 0xa2, 0xc6, 0x7b, + 0x0c, 0xd1, 0xf7, 0x3a, 0x7a, 0xc3, 0x14, 0x01, 0xad, 0xc3, 0x38, 0x69, 0x39, 0xe8, 0x39, 0x2d, + 0x5c, 0x04, 0x8a, 0x5d, 0xe0, 0xd8, 0xb2, 0xbc, 0x3a, 0x7f, 0x7c, 0x54, 0xbe, 0xd8, 0x15, 0x3f, + 0x35, 0x2a, 0x11, 0x36, 0xfa, 0x0c, 0xce, 0xd7, 0xb1, 0xff, 0x12, 0xfb, 0xc5, 0x09, 0x4a, 0x67, + 0x46, 0x2c, 0x24, 0x2d, 0x6c, 0x2c, 0x57, 0x67, 0x8f, 0x8f, 0xca, 0x85, 0x80, 0xfe, 0xd2, 0x68, + 0x70, 0x34, 0xb2, 0xdb, 0x6c, 0xfc, 0x12, 0xfb, 0x01, 0xde, 0xe9, 0x77, 0xbb, 0xb8, 0x53, 0x9c, + 0xd4, 0x76, 0x9b, 0x56, 0x27, 0x76, 0x9b, 0xcf, 0x0a, 0x9b, 0x21, 0x2d, 0xd5, 0x77, 0x9b, 0x86, + 0x80, 0x0e, 0xa0, 0xc0, 0xfe, 0xaa, 0x79, 0xdd, 0x2e, 0x6e, 0x91, 0x23, 0x55, 0x9c, 0xa2, 0x0d, + 0x5c, 0xe6, 0x0d, 0xc4, 0xab, 0x1b, 0xcb, 0xd5, 0xf2, 0xf1, 0x51, 0x79, 0x81, 0xd1, 0x6e, 0xb6, + 0x64, 0x85, 0xd6, 0x4c, 0x82, 0x2a, 0x19, 0x47, 0xa5, 0xd5, 0xc2, 0x41, 0x60, 0xe3, 0x9f, 0xf5, + 0x71, 0x10, 0x16, 0xa7, 0xb5, 0x71, 0x68, 0x75, 0x8d, 0x07, 0x6c, 0x1c, 0x0e, 0x2d, 0x6c, 0xfa, + 0xac, 0x54, 0x1f, 0x87, 0x86, 0x80, 0xb6, 0x01, 0x2a, 0xbd, 0x5e, 0x1d, 0x07, 0x64, 0x33, 0x16, + 0x67, 0x28, 0xe9, 0x8b, 0x9c, 0xf4, 0x33, 0xbc, 0xc7, 0x2b, 0x1a, 0xcb, 0xd5, 0xcb, 0xc7, 0x47, + 0xe5, 0x39, 0xa7, 0xd7, 0x6b, 0x06, 0xac, 0x48, 0x23, 0xaa, 0xd0, 0x60, 0xf3, 0x7e, 0xe8, 0x85, + 0x98, 0x6f, 0xc5, 0x62, 0x21, 0x36, 0xef, 0x4a, 0x9d, 0xe8, 0xaf, 0x4f, 0x0b, 0x9b, 0x7c, 0x5b, + 0xc7, 0xe7, 0x5d, 0x41, 0x20, 0x67, 0x71, 0xc5, 0x09, 0x9d, 0x3d, 0x27, 0xc0, 0x7c, 0x7b, 0x5c, + 0xd0, 0xce, 0xa2, 0x5e, 0xd9, 0x78, 0xc0, 0xce, 0x62, 0x9b, 0x97, 0x36, 0x0d, 0xfb, 0x25, 0x46, + 0x8f, 0xcc, 0x48, 0x34, 0xf0, 0x22, 0x1a, 0x30, 0x23, 0xaf, 0xf0, 0x9e, 0x79, 0x46, 0x22, 0x50, + 0xb4, 0x06, 0x63, 0xcf, 0xf0, 0x1e, 0xe3, 0x1c, 0x17, 0x29, 0xbd, 0x0b, 0x11, 0x3d, 0xc6, 0x33, + 0x1e, 0xb0, 0x53, 0x41, 0xa8, 0x25, 0xb9, 0x85, 0xc4, 0x46, 0xbf, 0x9d, 0x83, 0x79, 0x71, 0xc2, + 0x71, 0xf8, 0xca, 0xf3, 0x5f, 0xb8, 0xdd, 0xfd, 0x9a, 0xd7, 0x7d, 0xee, 0xee, 0x17, 0x67, 0x29, + 0xe5, 0xab, 0x31, 0xa6, 0x11, 0x83, 0x6a, 0x2c, 0x57, 0xdf, 0x3a, 0x3e, 0x2a, 0x5f, 0x97, 0x0c, + 0x44, 0xd6, 0x93, 0x0d, 0xf9, 0xdc, 0xdd, 0xd7, 0x1a, 0x4e, 0x6b, 0x0b, 0xfd, 0x66, 0x0e, 0x2e, + 0xf1, 0xd1, 0xd9, 0xb8, 0xe5, 0xf9, 0xed, 0xa8, 0x1b, 0x73, 0xb4, 0x1b, 0x65, 0x79, 0x5a, 0x4d, + 0x40, 0x8d, 0xe5, 0xea, 0xcd, 0xe3, 0xa3, 0xb2, 0xc5, 0x27, 0xae, 0xe9, 0x8b, 0x6a, 0x53, 0x27, + 0x52, 0x1a, 0x22, 0x3b, 0x81, 0x30, 0xff, 0x6d, 0x1f, 0x3f, 0xc7, 0x3e, 0xee, 0xb6, 0x70, 0xf1, + 0x92, 0xb6, 0x13, 0xf4, 0x4a, 0xc1, 0x95, 0xc9, 0xa7, 0xa4, 0xd9, 0x93, 0xc5, 0xfa, 0x4e, 0xd0, + 0x51, 0xd0, 0xcf, 0x00, 0xf1, 0x09, 0xa8, 0xf4, 0xdb, 0x6e, 0xc8, 0x07, 0x38, 0x4f, 0x5b, 0x59, + 0xd0, 0xe7, 0x59, 0x01, 0x68, 0x2c, 0x57, 0xad, 0xe3, 0xa3, 0xf2, 0x92, 0x98, 0x62, 0x87, 0x54, + 0x99, 0x06, 0x66, 0x20, 0x4e, 0x38, 0xef, 0x86, 0xd7, 0x7a, 0x51, 0x2c, 0x6a, 0x9c, 0x97, 0x14, + 0x09, 0x96, 0xdd, 0xf1, 0x5a, 0x2f, 0x74, 0xce, 0x4b, 0x6a, 0x51, 0x08, 0x17, 0xf9, 0x2a, 0xd9, + 0x38, 0x08, 0x7d, 0x97, 0xf2, 0x8e, 0xa0, 0x78, 0x99, 0xd2, 0x59, 0x14, 0x3c, 0x38, 0x09, 0xd1, + 0x78, 0x87, 0xf5, 0x96, 0x6f, 0x84, 0xa6, 0xaf, 0xd4, 0x69, 0xcd, 0x98, 0xc8, 0xa3, 0xbf, 0x02, + 0x73, 0xcf, 0xdc, 0x6e, 0xdb, 0x7b, 0x15, 0xac, 0xe0, 0xe0, 0x45, 0xe8, 0xf5, 0xea, 0x4c, 0x28, + 0x2c, 0x96, 0x68, 0xbb, 0x4b, 0x62, 0x9b, 0x9b, 0x60, 0x1a, 0x0f, 0xaa, 0x37, 0x8e, 0x8f, 0xca, + 0xd7, 0x5e, 0xb1, 0xca, 0x66, 0x9b, 0xd5, 0x36, 0xb9, 0x5c, 0xa9, 0x35, 0x6e, 0x6e, 0x85, 0x6c, + 0x01, 0xbd, 0xa2, 0xb8, 0xa0, 0x6d, 0x01, 0xbd, 0x52, 0x30, 0x83, 0x58, 0x83, 0xfa, 0x16, 0xd0, + 0x51, 0xd0, 0x23, 0x18, 0x13, 0xec, 0xa1, 0xb8, 0xa8, 0x1d, 0x5d, 0x51, 0xdc, 0x78, 0xc0, 0x24, + 0x20, 0xc1, 0x62, 0xf4, 0x93, 0x2b, 0xa0, 0xd0, 0x06, 0x8c, 0x53, 0x1e, 0x49, 0x59, 0xd6, 0x15, + 0x4a, 0x09, 0x89, 0x8d, 0x2a, 0xca, 0x1b, 0x0f, 0xaa, 0xc5, 0xe3, 0xa3, 0xf2, 0x2c, 0xe3, 0xb2, + 0x09, 0x46, 0x15, 0x11, 0x40, 0x0f, 0x60, 0xa8, 0xd2, 0xeb, 0x15, 0x97, 0x28, 0x9d, 0xc9, 0x88, + 0x4e, 0xe3, 0x41, 0xf5, 0xc2, 0xf1, 0x51, 0x79, 0xca, 0xe9, 0xe9, 0xc3, 0x22, 0xd0, 0x68, 0x0f, + 0x0a, 0xf5, 0xae, 0xf7, 0xea, 0x79, 0xc7, 0x79, 0x81, 0x05, 0x7b, 0x2b, 0xa7, 0xb3, 0x37, 0xfa, + 0xb1, 0x0a, 0x04, 0x82, 0x91, 0xc9, 0x25, 0xe8, 0x91, 0xcf, 0xe2, 0x93, 0xfe, 0x1e, 0xf6, 0xbb, + 0x38, 0xc4, 0x01, 0x1f, 0xed, 0x55, 0xed, 0xb3, 0x18, 0xaf, 0x6e, 0x3c, 0x60, 0x2d, 0xbd, 0x90, + 0xe5, 0xa6, 0xb1, 0x27, 0xa8, 0xa2, 0x0e, 0x5c, 0x88, 0xca, 0xc4, 0xa7, 0xe6, 0x1a, 0x6d, 0xaa, + 0x94, 0x68, 0x2a, 0xfa, 0xdc, 0x5c, 0x3d, 0x3e, 0x2a, 0x2f, 0x2a, 0x6d, 0x99, 0x3e, 0x39, 0x49, + 0xc2, 0xe8, 0x09, 0x8c, 0xaf, 0x77, 0x83, 0xd0, 0xe9, 0x74, 0xb0, 0x5f, 0xb4, 0xb4, 0xe5, 0x93, + 0xe5, 0x8d, 0xfb, 0x8c, 0x89, 0xbb, 0xa2, 0x40, 0x5f, 0x3d, 0x09, 0x87, 0xda, 0x30, 0xa3, 0x7e, + 0x73, 0xc8, 0x79, 0xb9, 0x4e, 0x49, 0x16, 0x0d, 0x1f, 0x31, 0x72, 0x52, 0xee, 0x57, 0x97, 0x8e, + 0x8f, 0xca, 0x25, 0xed, 0x2b, 0x16, 0x3f, 0x22, 0x71, 0x92, 0xe8, 0x6f, 0x10, 0x1e, 0x5d, 0x79, + 0xba, 0xb1, 0xde, 0xde, 0xe6, 0x45, 0x54, 0xe8, 0x24, 0xf2, 0xfc, 0xb7, 0x74, 0x1e, 0x6d, 0x04, + 0x6a, 0xdc, 0x67, 0x5f, 0x8a, 0xc0, 0x39, 0xec, 0x34, 0xdd, 0xb6, 0x3c, 0x97, 0xcd, 0x1e, 0x07, + 0x88, 0x31, 0x69, 0x23, 0x11, 0xf4, 0x63, 0x98, 0x96, 0x35, 0x6c, 0xc7, 0xdd, 0x48, 0xdf, 0x71, + 0x74, 0x90, 0x4a, 0x7b, 0xc9, 0x0d, 0x17, 0x23, 0x46, 0x4e, 0x15, 0x11, 0x58, 0x1f, 0xf9, 0x5e, + 0xbf, 0x57, 0xbc, 0xa9, 0x2d, 0x8b, 0x2c, 0x6f, 0xdc, 0x67, 0xa7, 0x8a, 0xc8, 0xba, 0xcd, 0x7d, + 0x52, 0xa2, 0xaf, 0x8b, 0x04, 0x24, 0xdf, 0xe9, 0xdd, 0x75, 0xce, 0xe5, 0xdf, 0xd2, 0x0e, 0xbb, + 0x28, 0x16, 0x4b, 0xdc, 0x77, 0x4d, 0x0c, 0x5d, 0x62, 0x23, 0x07, 0xa6, 0xb7, 0x5e, 0x84, 0xce, + 0xfa, 0x21, 0xd1, 0xda, 0xec, 0x7e, 0x07, 0x17, 0x6f, 0x69, 0x8c, 0x49, 0xaf, 0x14, 0xeb, 0xeb, + 0xbd, 0x08, 0x9d, 0xa6, 0x4b, 0x8b, 0x9b, 0x7e, 0x3f, 0x26, 0x60, 0xc7, 0x08, 0x12, 0xde, 0x47, + 0x4a, 0x2a, 0x41, 0xe0, 0xee, 0x77, 0x0f, 0x71, 0x37, 0x2c, 0xbe, 0x9d, 0x68, 0x22, 0xaa, 0x6c, + 0xdc, 0x67, 0xbc, 0x8f, 0x36, 0xe1, 0xc8, 0xe2, 0x64, 0x0b, 0x11, 0x0a, 0xaa, 0xc3, 0xc4, 0x7a, + 0x37, 0xc4, 0xfb, 0x4c, 0x61, 0x2c, 0xde, 0xd6, 0x94, 0x12, 0xa5, 0xa6, 0x71, 0x9f, 0x89, 0x42, + 0x6e, 0x54, 0xa4, 0xeb, 0x24, 0x0a, 0x2c, 0xd1, 0x74, 0x9e, 0x39, 0x61, 0xeb, 0x80, 0x28, 0x58, + 0xfd, 0xa0, 0xf8, 0x6d, 0x8d, 0xa8, 0x52, 0xd3, 0xb8, 0xcf, 0x34, 0x9d, 0x57, 0xa4, 0xa8, 0x19, + 0xd0, 0x32, 0x9d, 0xaa, 0x02, 0x5c, 0x05, 0x18, 0x13, 0xba, 0xe6, 0xe3, 0xe1, 0xb1, 0xd1, 0xc2, + 0x98, 0xf5, 0x07, 0x39, 0x18, 0xa1, 0x10, 0xe8, 0x33, 0x18, 0x79, 0xe2, 0x76, 0xdb, 0x41, 0x31, + 0x77, 0x75, 0x48, 0xd1, 0x47, 0x68, 0x25, 0xa9, 0xa8, 0xce, 0xff, 0xe2, 0xa8, 0x7c, 0xee, 0xf8, + 0xa8, 0x3c, 0xf3, 0x82, 0x80, 0x29, 0xea, 0x30, 0xc3, 0x43, 0xbb, 0x70, 0xb1, 0xd2, 0xe9, 0x78, + 0xaf, 0xb6, 0x1d, 0x3f, 0x74, 0x9d, 0x4e, 0xbd, 0x4f, 0x05, 0x68, 0xaa, 0x14, 0x8f, 0x55, 0xaf, + 0x1f, 0x1f, 0x95, 0xcb, 0x0e, 0xa9, 0x6e, 0xf6, 0x58, 0x7d, 0x33, 0x60, 0x00, 0x0a, 0x21, 0x13, + 0xbe, 0xf5, 0x47, 0xe7, 0xa1, 0xb0, 0xe6, 0x05, 0x21, 0xd1, 0x62, 0xa5, 0x38, 0x7e, 0x1d, 0xce, + 0x93, 0xb2, 0xf5, 0x15, 0xaa, 0xb7, 0x8f, 0x57, 0x27, 0x8e, 0x8f, 0xca, 0xa3, 0x07, 0x5e, 0x10, + 0x36, 0xdd, 0xb6, 0xcd, 0xab, 0xd0, 0xdb, 0x30, 0xb6, 0xe9, 0xb5, 0x31, 0x55, 0x15, 0xf3, 0x14, + 0x6c, 0xea, 0xf8, 0xa8, 0x3c, 0xde, 0xf5, 0xda, 0x98, 0x6a, 0x84, 0xb6, 0xac, 0x46, 0x0d, 0xae, + 0xc9, 0x0d, 0x51, 0xb0, 0xea, 0xf1, 0x51, 0x79, 0x98, 0xa8, 0x6e, 0xbf, 0x3a, 0x2a, 0xbf, 0xb7, + 0xef, 0x86, 0x07, 0xfd, 0xbd, 0x3b, 0x2d, 0xef, 0xf0, 0xee, 0xbe, 0xef, 0xbc, 0x74, 0x99, 0x21, + 0xc5, 0xe9, 0xdc, 0x8d, 0xcc, 0x2d, 0x3d, 0x97, 0x5b, 0x39, 0xea, 0xaf, 0x83, 0x10, 0x1f, 0x12, + 0x4a, 0x5c, 0xd1, 0x7b, 0x06, 0xb3, 0x95, 0x76, 0xdb, 0x65, 0x18, 0xdb, 0xbe, 0xdb, 0x6d, 0xb9, + 0x3d, 0xa7, 0x43, 0x94, 0xee, 0xa1, 0x5b, 0xe3, 0x7c, 0x52, 0x64, 0x7d, 0xb3, 0x27, 0x01, 0x94, + 0x49, 0x31, 0x12, 0x40, 0x0f, 0x60, 0x6c, 0x65, 0xb3, 0x4e, 0xd5, 0xc0, 0xe2, 0x08, 0x25, 0x46, + 0x0f, 0x5c, 0xbb, 0x1b, 0xd0, 0xa1, 0xa9, 0x04, 0x24, 0x20, 0x7a, 0x0f, 0x26, 0xb7, 0xfb, 0x7b, + 0x1d, 0xb7, 0xb5, 0xb3, 0x51, 0x7f, 0x82, 0x5f, 0x53, 0xfd, 0x79, 0x92, 0x89, 0x4b, 0x3d, 0x5a, + 0xde, 0x0c, 0x3b, 0x41, 0xf3, 0x05, 0x7e, 0x6d, 0x6b, 0x70, 0x11, 0x5e, 0xbd, 0xbe, 0x46, 0xf0, + 0x46, 0x13, 0x78, 0x41, 0x70, 0xa0, 0xe2, 0x31, 0x38, 0x74, 0x17, 0x80, 0x69, 0x25, 0x95, 0x76, + 0x9b, 0xa9, 0xd7, 0xe3, 0xd5, 0x99, 0xe3, 0xa3, 0xf2, 0x04, 0xd7, 0x63, 0x9c, 0x76, 0xdb, 0xb7, + 0x15, 0x10, 0x54, 0x83, 0x31, 0xdb, 0x63, 0x13, 0xcc, 0x95, 0xea, 0x19, 0xa9, 0x54, 0xb3, 0x62, + 0x6e, 0x46, 0xe1, 0xbf, 0xd4, 0x51, 0x0a, 0x08, 0x54, 0x86, 0xd1, 0x4d, 0xaf, 0xe6, 0xb4, 0x0e, + 0x98, 0x6a, 0x3d, 0x56, 0x1d, 0x39, 0x3e, 0x2a, 0xe7, 0xbe, 0x6b, 0x8b, 0x52, 0xf4, 0x12, 0x26, + 0xa2, 0x85, 0x0a, 0x8a, 0x13, 0x74, 0xfa, 0x76, 0xc8, 0x29, 0x0a, 0x68, 0x71, 0x93, 0x2c, 0xbd, + 0x32, 0x83, 0x5f, 0x63, 0x17, 0xa8, 0x0d, 0xa1, 0x0e, 0x5c, 0xd9, 0x25, 0x1f, 0xb7, 0xbd, 0x0e, + 0x8e, 0x8a, 0x2b, 0x41, 0x80, 0x7d, 0x42, 0x6b, 0x7d, 0x85, 0x6a, 0xde, 0xe3, 0x5c, 0xe4, 0x8f, + 0x7a, 0x42, 0xf8, 0x10, 0x03, 0x69, 0xba, 0x6d, 0x65, 0xc4, 0xd9, 0xc4, 0xac, 0xff, 0x9b, 0x03, + 0xb4, 0xd5, 0xc3, 0xdd, 0x7a, 0x7d, 0x8d, 0x1c, 0x1d, 0x71, 0x72, 0xbe, 0x03, 0xe3, 0x6c, 0x8d, + 0xc8, 0x42, 0xe6, 0xe9, 0x42, 0x4e, 0x1f, 0x1f, 0x95, 0x81, 0x2f, 0x24, 0x59, 0xc4, 0x08, 0x00, + 0xdd, 0x80, 0xa1, 0x9d, 0x9d, 0x0d, 0x7a, 0x2c, 0x86, 0xaa, 0x17, 0x8f, 0x8f, 0xca, 0x43, 0x61, + 0xd8, 0xf9, 0xd5, 0x51, 0x79, 0x6c, 0xa5, 0xcf, 0x18, 0x95, 0x4d, 0xea, 0xd1, 0x0d, 0x18, 0x15, + 0xa2, 0xc5, 0x70, 0x74, 0x1e, 0xb9, 0xcc, 0x60, 0x8b, 0x3a, 0xf4, 0x6d, 0x6e, 0x68, 0x19, 0x31, + 0x19, 0x5a, 0xc6, 0xc8, 0xa1, 0x23, 0x1f, 0x1f, 0x6e, 0x5c, 0xb9, 0x03, 0x23, 0x6c, 0x7d, 0xce, + 0x53, 0x7e, 0x14, 0xb3, 0xae, 0x8c, 0x1f, 0x1f, 0x95, 0x47, 0xe8, 0x3a, 0xd9, 0x0c, 0xec, 0xf1, + 0xf0, 0x58, 0xae, 0x90, 0xb7, 0xc7, 0x08, 0x2e, 0x39, 0x01, 0xd6, 0xb7, 0x61, 0x42, 0x19, 0x3e, + 0x5a, 0x84, 0x61, 0xf2, 0x3f, 0xe5, 0x17, 0x93, 0xac, 0xb1, 0x16, 0x99, 0x16, 0x5a, 0x6a, 0xfd, + 0xd1, 0x14, 0x14, 0x08, 0xa6, 0xc6, 0x64, 0xb4, 0xa9, 0xca, 0x0d, 0x9a, 0xaa, 0x5b, 0x20, 0xdb, + 0xe6, 0xdc, 0x66, 0xf2, 0xf8, 0xa8, 0x3c, 0xd6, 0xe7, 0x65, 0x51, 0xcf, 0x50, 0x1d, 0x46, 0x57, + 0xbf, 0xea, 0xb9, 0x3e, 0x0e, 0xb8, 0x65, 0xaf, 0x74, 0x87, 0xd9, 0x76, 0xef, 0x08, 0xdb, 0xee, + 0x9d, 0x1d, 0x61, 0xdb, 0xad, 0x5e, 0xe1, 0x5c, 0xf7, 0x02, 0x66, 0x28, 0xd1, 0x06, 0xf8, 0xf9, + 0x7f, 0x2f, 0xe7, 0x6c, 0x41, 0x09, 0x7d, 0x07, 0xce, 0x3f, 0xf4, 0xfc, 0x43, 0x27, 0xe4, 0x2b, + 0x40, 0xcd, 0x3e, 0xcf, 0x69, 0x89, 0xb2, 0x67, 0x38, 0x0c, 0x7a, 0x08, 0xd3, 0xb6, 0xd7, 0x0f, + 0xf1, 0x8e, 0x27, 0xd6, 0x6d, 0x84, 0x62, 0xd1, 0xef, 0xab, 0x4f, 0x6a, 0x9a, 0xa1, 0x97, 0x14, + 0xfa, 0xec, 0x18, 0x16, 0x5a, 0x85, 0x69, 0xcd, 0x4e, 0xc2, 0x56, 0x6b, 0x9c, 0xeb, 0x90, 0x9a, + 0x75, 0x45, 0x65, 0x49, 0x31, 0x24, 0xb4, 0x69, 0x12, 0x52, 0x47, 0x69, 0x8f, 0x06, 0x0a, 0xa2, + 0x26, 0x31, 0x14, 0xc3, 0x0c, 0xef, 0xa8, 0xd4, 0x4a, 0xc6, 0xb8, 0x75, 0x85, 0xd9, 0x77, 0x63, + 0xb5, 0xd5, 0xeb, 0x7c, 0x96, 0x17, 0xe4, 0xd8, 0x93, 0x7a, 0x8a, 0x1d, 0xa7, 0x49, 0x98, 0xb0, + 0xfc, 0xc0, 0x8c, 0xd3, 0xde, 0x32, 0x9b, 0x9d, 0xf8, 0xc0, 0xa8, 0xec, 0x49, 0x7e, 0x6a, 0x36, + 0x60, 0x64, 0x37, 0x70, 0xf6, 0x19, 0x73, 0x9a, 0x5e, 0xbe, 0xc6, 0x7b, 0x14, 0xdf, 0x7d, 0xd4, + 0xcc, 0x4b, 0x01, 0xe9, 0xb9, 0x9b, 0xa1, 0x36, 0x6c, 0xf5, 0xa3, 0x4b, 0xeb, 0xd0, 0xe7, 0x00, + 0xbc, 0x57, 0x44, 0xd1, 0x99, 0xe0, 0xd2, 0x98, 0x36, 0xc8, 0x4a, 0xaf, 0x57, 0x5d, 0xe2, 0xe3, + 0xbb, 0x24, 0xc7, 0xa7, 0xa9, 0x3e, 0xb6, 0x42, 0x04, 0x7d, 0x06, 0x93, 0x94, 0x77, 0x89, 0x15, + 0x9d, 0xa4, 0x2b, 0x4a, 0x2d, 0xc1, 0x94, 0x1d, 0x19, 0xd6, 0x53, 0x43, 0x40, 0x7f, 0x15, 0xe6, + 0x38, 0xb9, 0x98, 0xd6, 0x39, 0xc5, 0xb5, 0x6c, 0xad, 0x7b, 0x3a, 0x4c, 0xf5, 0x36, 0xef, 0xa9, + 0x25, 0x7b, 0x9a, 0xaa, 0x87, 0xda, 0xe6, 0x66, 0xd0, 0x3a, 0xcc, 0xec, 0x06, 0x58, 0x1b, 0xc3, + 0x34, 0xfd, 0x10, 0x50, 0x05, 0xaa, 0x1f, 0xe0, 0x66, 0xda, 0x38, 0xe2, 0x78, 0xc8, 0x06, 0xb4, + 0xe2, 0x7b, 0xbd, 0xd8, 0x1e, 0x9f, 0xa1, 0x33, 0x42, 0xed, 0x01, 0x6d, 0xdf, 0xeb, 0x35, 0xd3, + 0x37, 0xba, 0x01, 0x1b, 0xfd, 0x04, 0x2e, 0x45, 0x66, 0xcb, 0x15, 0xd7, 0xd9, 0xef, 0x7a, 0x41, + 0xe8, 0xb6, 0xd6, 0x57, 0xa8, 0x05, 0x90, 0xf3, 0xff, 0xc8, 0xec, 0xd9, 0x6c, 0x4b, 0x10, 0x9d, + 0xff, 0xa7, 0x50, 0x41, 0x3f, 0x82, 0x29, 0xde, 0x16, 0x37, 0x93, 0x5f, 0xc8, 0xde, 0x68, 0x12, + 0x98, 0x9b, 0xac, 0xc5, 0x4f, 0x26, 0x23, 0xe9, 0xb4, 0xd0, 0x97, 0x30, 0xf1, 0xf4, 0x61, 0xc5, + 0xc6, 0x41, 0xcf, 0xeb, 0x06, 0x98, 0x9b, 0xfd, 0x96, 0x38, 0xe9, 0xa7, 0x0f, 0x2b, 0x95, 0x7e, + 0x78, 0x80, 0xbb, 0xa1, 0xdb, 0x72, 0x42, 0x2c, 0xa0, 0x98, 0x84, 0x7a, 0xf8, 0xdc, 0x69, 0xfa, + 0xbc, 0x44, 0x19, 0x85, 0x4a, 0x0e, 0x95, 0x60, 0xac, 0x5e, 0x5f, 0xdb, 0xf0, 0xf6, 0x5d, 0x66, + 0x01, 0x1c, 0xb7, 0xe5, 0x6f, 0xb4, 0x07, 0x73, 0xca, 0x45, 0x16, 0x15, 0x75, 0x31, 0x95, 0xe7, + 0x99, 0x41, 0xef, 0xbb, 0xf2, 0x26, 0xee, 0x8e, 0x7a, 0xdf, 0xf5, 0xf2, 0xfe, 0x9d, 0x4a, 0xf4, + 0xb3, 0x2e, 0x90, 0xec, 0x59, 0xc7, 0x50, 0x6a, 0x7d, 0x01, 0xe3, 0xf2, 0xd8, 0xa1, 0x51, 0x18, + 0xaa, 0x74, 0x3a, 0x85, 0x73, 0xe4, 0x8f, 0x7a, 0x7d, 0xad, 0x90, 0x43, 0xd3, 0x00, 0x11, 0xaf, + 0x29, 0xe4, 0xd1, 0x64, 0x64, 0xf5, 0x28, 0x0c, 0x51, 0xf8, 0x5e, 0xaf, 0x30, 0x8c, 0x50, 0xdc, + 0xdc, 0x52, 0x18, 0xb1, 0x76, 0x61, 0x5c, 0x4e, 0x24, 0x9a, 0x81, 0x89, 0xdd, 0xcd, 0xfa, 0xf6, + 0x6a, 0x6d, 0xfd, 0xe1, 0xfa, 0xea, 0x4a, 0xe1, 0x1c, 0xba, 0x02, 0x97, 0x77, 0xea, 0x6b, 0xcd, + 0x95, 0x6a, 0x73, 0x63, 0xab, 0x56, 0xd9, 0x68, 0x6e, 0xdb, 0x5b, 0x5f, 0xfc, 0xa0, 0xb9, 0xb3, + 0xbb, 0xb9, 0xb9, 0xba, 0x51, 0xc8, 0xa1, 0x22, 0xcc, 0x92, 0xea, 0x27, 0xbb, 0xd5, 0x55, 0x15, + 0xa0, 0x90, 0xb7, 0xfe, 0x6b, 0x2e, 0xc1, 0xe9, 0xd0, 0x32, 0x4c, 0x70, 0xf5, 0x92, 0xae, 0x3e, + 0x13, 0x90, 0x0b, 0xc7, 0x47, 0xe5, 0x49, 0xa1, 0x9a, 0xd2, 0x85, 0x55, 0x81, 0xc8, 0xc7, 0x6b, + 0x9b, 0x2c, 0x61, 0xcb, 0xeb, 0xa8, 0x1f, 0xaf, 0x1e, 0x2f, 0xb3, 0x65, 0x2d, 0x5a, 0x56, 0x3e, + 0x73, 0x4c, 0x5a, 0xa6, 0x12, 0x99, 0xf8, 0xcc, 0xa9, 0x2c, 0x4f, 0x7e, 0xf0, 0x96, 0x15, 0xeb, + 0xd0, 0x70, 0x84, 0x63, 0x60, 0xb1, 0x12, 0xce, 0xea, 0xa7, 0x30, 0x11, 0xf4, 0x71, 0xc2, 0x98, + 0xc5, 0x46, 0x48, 0xb9, 0x64, 0x8c, 0x57, 0x24, 0xec, 0x54, 0x65, 0x18, 0x61, 0xbb, 0x8b, 0x0d, + 0x92, 0x4a, 0x11, 0x1d, 0x52, 0x60, 0xb3, 0x72, 0xeb, 0xef, 0x0e, 0xa9, 0x0c, 0x95, 0x48, 0x0d, + 0xca, 0x24, 0x52, 0xa9, 0x81, 0x4e, 0x1e, 0x2d, 0x25, 0x02, 0x02, 0xd7, 0xb0, 0xd7, 0x57, 0x38, + 0x45, 0x2a, 0x20, 0x08, 0x7b, 0xad, 0xdb, 0xb6, 0x23, 0x00, 0x22, 0x0d, 0x33, 0x69, 0x81, 0x4a, + 0xc3, 0x43, 0x91, 0x34, 0xcc, 0xe5, 0x09, 0x26, 0x0d, 0x47, 0x20, 0x64, 0x21, 0xd5, 0xdb, 0xae, + 0xe1, 0x68, 0x21, 0xd5, 0x7b, 0x2d, 0xfd, 0x2e, 0xeb, 0x23, 0x80, 0xca, 0xb3, 0x3a, 0x95, 0x05, + 0xed, 0x4d, 0xfe, 0x51, 0xa7, 0xc7, 0xcf, 0x79, 0x15, 0x70, 0x69, 0xd2, 0x57, 0xc5, 0x66, 0x05, + 0x1a, 0x55, 0x61, 0xaa, 0xf2, 0x1b, 0x7d, 0x1f, 0xaf, 0xb7, 0xc9, 0x09, 0x0e, 0x99, 0x7e, 0x30, + 0xce, 0x6f, 0x4a, 0x48, 0x45, 0xd3, 0xe5, 0x35, 0x0a, 0x01, 0x1d, 0x05, 0x6d, 0xc1, 0x85, 0x47, + 0x35, 0x61, 0xde, 0xa8, 0xb4, 0x5a, 0x5e, 0xbf, 0x1b, 0xf2, 0x2f, 0xf9, 0xb5, 0xe3, 0xa3, 0xf2, + 0x95, 0xfd, 0x56, 0x64, 0x21, 0x71, 0x58, 0xb5, 0xfa, 0x29, 0x4f, 0xe0, 0x5a, 0x1d, 0x98, 0x7e, + 0x84, 0x43, 0xb2, 0x95, 0x84, 0x58, 0x96, 0xbd, 0x26, 0x9f, 0xc0, 0xc4, 0x33, 0x37, 0x3c, 0xa8, + 0xe3, 0x96, 0x8f, 0x43, 0xa1, 0x7d, 0x32, 0x15, 0xd9, 0x0d, 0x0f, 0x9a, 0x01, 0x2b, 0x57, 0x19, + 0x90, 0x02, 0x6e, 0xad, 0xc2, 0x0c, 0x6f, 0x4d, 0x4a, 0x81, 0xcb, 0x3a, 0xc1, 0x1c, 0x25, 0x48, + 0x57, 0x41, 0x25, 0xa8, 0x93, 0xf9, 0xa3, 0x3c, 0xcc, 0xd5, 0x0e, 0x9c, 0xee, 0x3e, 0xde, 0x76, + 0x82, 0xe0, 0x95, 0xe7, 0xb7, 0x95, 0xce, 0x53, 0x11, 0x38, 0xd1, 0x79, 0x2a, 0xf3, 0x2e, 0xc3, + 0xc4, 0x56, 0xa7, 0x2d, 0x70, 0xb8, 0x78, 0x4e, 0xdb, 0xf2, 0x3a, 0xed, 0x66, 0x4f, 0xd0, 0x52, + 0x81, 0x08, 0xce, 0x26, 0x7e, 0x25, 0x71, 0x86, 0x22, 0x9c, 0x2e, 0x7e, 0xa5, 0xe0, 0x28, 0x40, + 0x68, 0x15, 0x2e, 0xd4, 0x71, 0xcb, 0xeb, 0xb6, 0x1f, 0x3a, 0xad, 0xd0, 0xf3, 0xd9, 0x95, 0xcb, + 0x70, 0x24, 0xc1, 0x04, 0xb4, 0xb2, 0xf9, 0x9c, 0xd6, 0xb2, 0x9b, 0x16, 0x3b, 0x89, 0x81, 0xb6, + 0xe8, 0x85, 0x0d, 0xbd, 0xb1, 0xe7, 0x32, 0xfd, 0x8d, 0x3b, 0xf2, 0x0a, 0xbf, 0xe6, 0x63, 0xba, + 0x29, 0x9c, 0x8e, 0xd4, 0x4a, 0xe4, 0x07, 0x81, 0x32, 0x17, 0x01, 0x69, 0x4b, 0x22, 0xd6, 0x2e, + 0x4c, 0x6d, 0x77, 0xfa, 0xfb, 0x6e, 0x97, 0xb0, 0x81, 0x3a, 0xfe, 0x19, 0x5a, 0x01, 0x88, 0x0a, + 0xb8, 0x65, 0x42, 0xd8, 0xc4, 0xa2, 0x8a, 0xc6, 0x03, 0x7e, 0x90, 0x68, 0x09, 0x15, 0xdd, 0x6c, + 0x05, 0xcf, 0xfa, 0x5b, 0x43, 0x80, 0xf8, 0x02, 0x50, 0x5e, 0x5f, 0xc7, 0x21, 0x61, 0xc3, 0x97, + 0x20, 0x2f, 0x0d, 0x08, 0xe7, 0x8f, 0x8f, 0xca, 0x79, 0xb7, 0x6d, 0xe7, 0xd7, 0x57, 0xd0, 0x3b, + 0x30, 0x42, 0xc1, 0xe8, 0xfc, 0x4f, 0xcb, 0xf6, 0x54, 0x0a, 0x8c, 0x73, 0xd0, 0x6f, 0x90, 0xcd, + 0x80, 0xd1, 0xbb, 0x30, 0xbe, 0x82, 0x3b, 0x78, 0xdf, 0x09, 0x3d, 0x71, 0xba, 0x99, 0x4a, 0x2e, + 0x0a, 0x95, 0x3d, 0x17, 0x41, 0x12, 0xb9, 0xdd, 0xc6, 0x4e, 0xe0, 0x75, 0x55, 0xb9, 0xdd, 0xa7, + 0x25, 0xaa, 0xdc, 0xce, 0x60, 0xd0, 0xef, 0xe5, 0x60, 0xa2, 0xd2, 0xed, 0x72, 0x55, 0x37, 0xe0, + 0xb3, 0x3e, 0x77, 0x47, 0x7a, 0x42, 0x6c, 0x38, 0x7b, 0xb8, 0xd3, 0x70, 0x3a, 0x7d, 0x1c, 0x54, + 0xbf, 0x24, 0xa2, 0xd4, 0x7f, 0x3b, 0x2a, 0x7f, 0x7c, 0x0a, 0xe5, 0x35, 0xf2, 0xa9, 0xd8, 0xf1, + 0x1d, 0x37, 0x0c, 0xe8, 0x6d, 0x66, 0xd4, 0xa0, 0x7a, 0x6e, 0x94, 0x7e, 0xa0, 0xb7, 0x55, 0x65, + 0x8d, 0xf3, 0xe2, 0x98, 0x16, 0xcd, 0xf5, 0x34, 0xeb, 0xba, 0xfc, 0x12, 0xae, 0xaf, 0xa4, 0x2d, + 0x81, 0x55, 0x83, 0xc5, 0x47, 0x38, 0xb4, 0x71, 0x80, 0x43, 0xb1, 0x69, 0xe9, 0x96, 0x8b, 0xec, + 0x3f, 0xa3, 0xf4, 0xb7, 0x44, 0xa6, 0xeb, 0xc1, 0x36, 0xaa, 0xa8, 0xb1, 0xfe, 0x66, 0x0e, 0xca, + 0x35, 0x1f, 0x33, 0x49, 0x24, 0x85, 0x50, 0x36, 0x33, 0x59, 0xe4, 0xce, 0x21, 0xf9, 0xa8, 0x96, + 0xcc, 0x12, 0x77, 0x00, 0x39, 0x99, 0x72, 0x6c, 0x3d, 0x87, 0x39, 0x1b, 0x77, 0xf1, 0x2b, 0xa2, + 0xaa, 0x6b, 0xfa, 0x65, 0x19, 0x46, 0xd8, 0xc9, 0x4b, 0x0c, 0x81, 0x95, 0x9f, 0x4e, 0x57, 0xb7, + 0xfe, 0x79, 0x1e, 0x0a, 0x6c, 0xb8, 0x55, 0x2f, 0x3c, 0xd9, 0xf8, 0xf8, 0x08, 0xf2, 0x03, 0xd4, + 0xfb, 0x9b, 0xd1, 0x6c, 0x0f, 0x45, 0xc2, 0x01, 0xed, 0x2a, 0xf9, 0xc6, 0x89, 0x4a, 0x32, 0x20, + 0xb6, 0x0b, 0x98, 0x79, 0x2b, 0xa1, 0xa3, 0xa3, 0xdf, 0xc9, 0xc1, 0x79, 0xb6, 0xaf, 0xb2, 0x77, + 0xee, 0xb3, 0xb3, 0xd9, 0xb9, 0x85, 0x90, 0xfe, 0xa5, 0x9e, 0x23, 0x56, 0x67, 0xfd, 0xcb, 0x3c, + 0x5c, 0x50, 0xe6, 0x8a, 0x8b, 0x9f, 0x6f, 0x33, 0xd9, 0x46, 0x99, 0x30, 0x6a, 0x30, 0xa4, 0x16, + 0xf1, 0x48, 0x87, 0xa7, 0x33, 0xf7, 0x36, 0x8c, 0x91, 0x21, 0xc5, 0x6d, 0x8b, 0xf4, 0x0b, 0xcb, + 0x40, 0x45, 0xf5, 0x89, 0x67, 0xef, 0x2e, 0x8c, 0xd1, 0x3f, 0xc9, 0x8a, 0x0c, 0xa7, 0xaf, 0x88, + 0x04, 0x42, 0x2e, 0xc0, 0x63, 0xcf, 0xed, 0x3e, 0xc5, 0xe1, 0x81, 0xd7, 0xe6, 0xdf, 0xfa, 0x75, + 0xc2, 0x07, 0xff, 0x92, 0xe7, 0x76, 0x9b, 0x87, 0xb4, 0xf8, 0xb4, 0xb6, 0xab, 0x88, 0xa0, 0xad, + 0x10, 0xb7, 0xee, 0x41, 0x81, 0xb0, 0xac, 0x93, 0x6f, 0x2d, 0x6b, 0x16, 0xd0, 0x23, 0x1c, 0x56, + 0x3d, 0xed, 0x63, 0x6a, 0x4d, 0xc1, 0xc4, 0xb6, 0xdb, 0xdd, 0x17, 0x3f, 0xff, 0xd5, 0x10, 0x4c, + 0xb2, 0xdf, 0x7c, 0x05, 0x62, 0x22, 0x4f, 0xee, 0x24, 0x22, 0xcf, 0x07, 0x30, 0xc5, 0xaf, 0xc8, + 0xb0, 0x4f, 0xaf, 0x4e, 0xd8, 0x7a, 0x50, 0x65, 0x86, 0x5d, 0x91, 0x35, 0x5f, 0xb2, 0x1a, 0x5b, + 0x07, 0x44, 0x1b, 0x30, 0xcd, 0x0a, 0x1e, 0x62, 0x27, 0xec, 0x47, 0xf6, 0x98, 0x19, 0xae, 0xcf, + 0x88, 0x62, 0xc6, 0xcf, 0x38, 0xad, 0xe7, 0xbc, 0xd0, 0x8e, 0xe1, 0xa2, 0xcf, 0x60, 0x66, 0xdb, + 0xf7, 0xbe, 0x7a, 0xad, 0x08, 0x79, 0x8c, 0xa5, 0xcf, 0x1d, 0x1f, 0x95, 0x2f, 0xf4, 0x48, 0x55, + 0x53, 0x15, 0xf5, 0xe2, 0xd0, 0x64, 0x4f, 0xad, 0x07, 0x55, 0xcf, 0x77, 0xbb, 0xfb, 0x74, 0x35, + 0xc7, 0xd8, 0x9e, 0x72, 0x83, 0xe6, 0x1e, 0x2d, 0xb4, 0x65, 0x75, 0xcc, 0xb2, 0x3a, 0x3a, 0xd8, + 0xb2, 0x7a, 0x0f, 0x60, 0xc3, 0x73, 0xda, 0x95, 0x4e, 0xa7, 0x56, 0x09, 0xa8, 0x31, 0x84, 0x0b, + 0x31, 0x1d, 0xcf, 0x69, 0x37, 0x9d, 0x4e, 0xa7, 0xd9, 0x72, 0x02, 0x5b, 0x81, 0x79, 0x3c, 0x3c, + 0x76, 0xbe, 0x30, 0x6a, 0xcf, 0x6c, 0xb8, 0x2d, 0xdc, 0x0d, 0xf0, 0x33, 0xc7, 0xef, 0xba, 0xdd, + 0xfd, 0xc0, 0xfa, 0x07, 0x23, 0x30, 0x26, 0x87, 0x7c, 0x47, 0x55, 0x88, 0xb8, 0x68, 0x44, 0x39, + 0x54, 0x64, 0xb0, 0xb1, 0x15, 0x08, 0x74, 0x99, 0xdd, 0xc7, 0x32, 0xa1, 0x6c, 0x94, 0xec, 0x6e, + 0xa7, 0xd7, 0x63, 0xb7, 0xae, 0x97, 0x20, 0xbf, 0x52, 0xa5, 0xf3, 0x3f, 0xc6, 0xbe, 0x04, 0xed, + 0x3d, 0x3b, 0xbf, 0x52, 0x25, 0xbb, 0x6c, 0x6b, 0x7d, 0xa5, 0x46, 0xa7, 0x72, 0x8c, 0xed, 0x32, + 0xcf, 0x6d, 0xb7, 0x6c, 0x5a, 0x4a, 0x6a, 0xeb, 0x95, 0xa7, 0x1b, 0x7c, 0xba, 0x68, 0x6d, 0xe0, + 0x1c, 0x76, 0x6c, 0x5a, 0x4a, 0x54, 0x05, 0xa6, 0x7b, 0xd7, 0xbc, 0x6e, 0xe8, 0x7b, 0x9d, 0x80, + 0x4a, 0xb4, 0x63, 0x6c, 0x39, 0xb9, 0xd2, 0xde, 0xe2, 0x55, 0x76, 0x0c, 0x14, 0x3d, 0x83, 0xf9, + 0x4a, 0xfb, 0xa5, 0xd3, 0x6d, 0xe1, 0x36, 0xab, 0x79, 0xe6, 0xf9, 0x2f, 0x9e, 0x77, 0xbc, 0x57, + 0x01, 0x9d, 0xef, 0x31, 0x6e, 0xe3, 0xe2, 0x20, 0xc2, 0x06, 0xf0, 0x4a, 0x00, 0xd9, 0x69, 0xd8, + 0x84, 0x4b, 0xd6, 0x3a, 0x5e, 0xbf, 0xcd, 0x57, 0x81, 0x72, 0xc9, 0x16, 0x29, 0xb0, 0x59, 0x39, + 0x99, 0xa5, 0xb5, 0xfa, 0x53, 0x6a, 0x51, 0xe2, 0xb3, 0x74, 0x10, 0x1c, 0xda, 0xa4, 0x0c, 0xdd, + 0x80, 0x51, 0xa1, 0xf5, 0x30, 0xdb, 0x36, 0x35, 0xb4, 0x0a, 0x6d, 0x47, 0xd4, 0x91, 0x23, 0x61, + 0xe3, 0x96, 0xf7, 0x12, 0xfb, 0xaf, 0x6b, 0x5e, 0x1b, 0x0b, 0xfb, 0x07, 0xd7, 0xef, 0x59, 0x45, + 0xb3, 0x45, 0x6a, 0x6c, 0x1d, 0x90, 0x34, 0xc0, 0x04, 0xa7, 0x80, 0x3a, 0x39, 0xf1, 0x06, 0x98, + 0x60, 0x15, 0xd8, 0xa2, 0x0e, 0xad, 0xc0, 0x85, 0x4a, 0x3f, 0xf4, 0x0e, 0x9d, 0xd0, 0x6d, 0xed, + 0xf6, 0xf6, 0x7d, 0x87, 0x34, 0x52, 0xa0, 0x08, 0x54, 0xb5, 0x73, 0x44, 0x65, 0xb3, 0xcf, 0x6b, + 0xed, 0x24, 0x02, 0x7a, 0x0f, 0x26, 0xd7, 0x03, 0x66, 0xe3, 0x72, 0x02, 0xdc, 0xa6, 0x86, 0x0a, + 0xde, 0x4b, 0x37, 0x68, 0x52, 0x8b, 0x57, 0x93, 0x28, 0x83, 0x6d, 0x5b, 0x83, 0x7b, 0x3c, 0x3c, + 0x36, 0x51, 0x98, 0x7c, 0x3c, 0x3c, 0x36, 0x59, 0x98, 0x7a, 0x3c, 0x3c, 0x36, 0x55, 0x98, 0xb6, + 0xee, 0xc3, 0x05, 0xc6, 0x9f, 0x4e, 0xac, 0x28, 0x58, 0xdb, 0x00, 0x75, 0x7c, 0xe8, 0xf4, 0x0e, + 0x3c, 0xb2, 0x93, 0xab, 0xea, 0x2f, 0x2e, 0x68, 0x22, 0xe9, 0x9c, 0xc3, 0x2b, 0x1a, 0x0f, 0x84, + 0x7e, 0x27, 0x20, 0x6d, 0x05, 0xcb, 0xfa, 0xd3, 0x3c, 0x20, 0xea, 0xa4, 0x52, 0x0f, 0x7d, 0xec, + 0x1c, 0x8a, 0x6e, 0x7c, 0x08, 0x93, 0xec, 0x53, 0xc3, 0x8a, 0x69, 0x77, 0x88, 0x14, 0xcb, 0x78, + 0x8c, 0x5a, 0xb5, 0x76, 0xce, 0xd6, 0x40, 0x09, 0xaa, 0x8d, 0x83, 0xfe, 0xa1, 0x40, 0xcd, 0x6b, + 0xa8, 0x6a, 0x15, 0x41, 0x55, 0x7f, 0xa3, 0xcf, 0x60, 0xba, 0xe6, 0x1d, 0xf6, 0xc8, 0x9c, 0x70, + 0xe4, 0x21, 0xfe, 0xc5, 0xe5, 0xed, 0x6a, 0x95, 0x6b, 0xe7, 0xec, 0x18, 0x38, 0xda, 0x84, 0x8b, + 0x0f, 0x3b, 0xfd, 0xe0, 0xa0, 0xd2, 0x6d, 0xd7, 0x3a, 0x5e, 0x20, 0xa8, 0x0c, 0x73, 0x8b, 0x35, + 0xe7, 0x90, 0x49, 0x88, 0xb5, 0x73, 0xb6, 0x09, 0x11, 0xdd, 0xe0, 0x1e, 0xb7, 0xd2, 0xfa, 0xcf, + 0x1d, 0x72, 0xb7, 0xba, 0x78, 0xeb, 0xf9, 0xda, 0x39, 0x9b, 0xd5, 0x56, 0xc7, 0x61, 0x54, 0x7c, + 0x1d, 0xee, 0x92, 0x4d, 0x26, 0xa7, 0x93, 0x5d, 0x61, 0xa2, 0x12, 0x8c, 0xed, 0xf6, 0x08, 0xd3, + 0x12, 0xa2, 0x9f, 0x2d, 0x7f, 0x5b, 0xdf, 0xd1, 0x67, 0x1a, 0x2d, 0xaa, 0xfa, 0x39, 0x03, 0x8e, + 0x0a, 0xac, 0x35, 0x7d, 0x72, 0xb3, 0xa1, 0xb5, 0x76, 0xf3, 0xb1, 0x76, 0x0b, 0xf1, 0xb9, 0xb6, + 0xe6, 0x8c, 0x93, 0x67, 0x7d, 0x01, 0x4b, 0xbb, 0x3d, 0xa2, 0x0c, 0x55, 0x7a, 0xbd, 0x8e, 0xdb, + 0x62, 0xd6, 0x27, 0xfa, 0x15, 0x11, 0x9b, 0xe5, 0x3d, 0xe9, 0xce, 0x99, 0x4b, 0x75, 0x7e, 0x81, + 0xe3, 0xa3, 0xf2, 0x79, 0xf6, 0x35, 0x12, 0x5e, 0x9c, 0xd6, 0xcf, 0x73, 0xb0, 0xc4, 0x4e, 0x40, + 0x2a, 0xe9, 0x6f, 0xab, 0x4e, 0xa7, 0x8a, 0x78, 0x23, 0x5d, 0x4c, 0x55, 0xb7, 0xd2, 0xe8, 0x82, + 0x35, 0x9f, 0x7e, 0xc1, 0x2a, 0x0e, 0xd8, 0x90, 0xf1, 0x80, 0x7d, 0x0e, 0x16, 0xef, 0x51, 0xa7, + 0x93, 0xe8, 0x54, 0xf0, 0x26, 0xbd, 0xb2, 0xfe, 0x67, 0x1e, 0xe6, 0x1f, 0xe1, 0x2e, 0xf6, 0x1d, + 0x3a, 0x4e, 0x4d, 0x92, 0x57, 0xef, 0x5f, 0x72, 0x99, 0xf7, 0x2f, 0x52, 0x4c, 0xcd, 0xa7, 0x88, + 0xa9, 0x97, 0x61, 0x68, 0xd7, 0x5e, 0xe7, 0xc3, 0xa2, 0x0c, 0xb8, 0xef, 0xbb, 0x36, 0x29, 0x43, + 0xeb, 0xd1, 0xdd, 0xcd, 0xf0, 0xc0, 0xbb, 0x9b, 0x8b, 0xdc, 0x96, 0x3d, 0xca, 0xef, 0x6e, 0xf4, + 0x1b, 0x9b, 0x4d, 0x45, 0x16, 0x26, 0xec, 0xe6, 0x36, 0x3f, 0x53, 0x29, 0x03, 0xe4, 0x62, 0xed, + 0x6a, 0x37, 0xf4, 0x5f, 0xb3, 0x2d, 0xc0, 0xa4, 0x5b, 0x21, 0xd3, 0x96, 0x3e, 0x87, 0x09, 0x05, + 0x04, 0x15, 0x60, 0xe8, 0x05, 0xbf, 0xb7, 0x1a, 0xb7, 0xc9, 0x9f, 0xe8, 0x3b, 0x30, 0xf2, 0x92, + 0xc8, 0xd7, 0x9c, 0x8d, 0x5c, 0x8a, 0x64, 0xef, 0x7a, 0x48, 0xa4, 0x0a, 0x26, 0x7c, 0xdb, 0x0c, + 0xe8, 0xa3, 0xfc, 0x07, 0x39, 0xeb, 0x63, 0x28, 0x26, 0x7b, 0xc3, 0x45, 0xb5, 0x41, 0xda, 0x8b, + 0xb5, 0x02, 0xb3, 0x8f, 0x70, 0x18, 0x79, 0xbc, 0x2a, 0xd7, 0x6a, 0xb1, 0x73, 0x96, 0x61, 0x35, + 0xb3, 0xea, 0x30, 0x17, 0xa3, 0xc2, 0xdb, 0xff, 0x08, 0x46, 0x85, 0xaf, 0x4c, 0x2e, 0xdd, 0x57, + 0x86, 0xee, 0x5b, 0x4e, 0xd9, 0x16, 0x08, 0xd6, 0x33, 0xb8, 0xa4, 0x11, 0x0d, 0x24, 0xd5, 0xef, + 0xc1, 0x98, 0x28, 0x8b, 0x99, 0x1b, 0x34, 0xb2, 0x74, 0x6b, 0x05, 0x02, 0x59, 0xa2, 0x58, 0x07, + 0x70, 0x69, 0xc3, 0x0d, 0x74, 0xca, 0x6c, 0xd4, 0x0b, 0x30, 0xde, 0x23, 0xdf, 0xb3, 0xc0, 0xfd, + 0x0d, 0xb6, 0x3f, 0x47, 0xec, 0x31, 0x52, 0x50, 0x77, 0x7f, 0x03, 0xa3, 0x2b, 0x00, 0xb4, 0x92, + 0xce, 0x1f, 0x67, 0x2f, 0x14, 0x9c, 0xe9, 0x81, 0x08, 0xe8, 0xc5, 0x28, 0xdb, 0x90, 0x36, 0xfd, + 0xdb, 0xf2, 0x61, 0x3e, 0xd1, 0x12, 0x1f, 0xc3, 0x5d, 0x90, 0x5d, 0xcb, 0x18, 0x83, 0x2d, 0x81, + 0xd0, 0x4d, 0x98, 0xe9, 0xe2, 0xaf, 0xc2, 0x66, 0xa2, 0x0f, 0x53, 0xa4, 0x78, 0x5b, 0xf4, 0xc3, + 0xfa, 0x31, 0xd5, 0xca, 0xe3, 0xce, 0x6c, 0x67, 0x36, 0x79, 0x1d, 0x28, 0x91, 0x21, 0xe9, 0xbe, + 0x4b, 0xbf, 0xb6, 0x09, 0x7c, 0x09, 0x0b, 0xc6, 0xd6, 0x7e, 0xdd, 0x93, 0xf8, 0xe7, 0x79, 0x98, + 0x67, 0x5f, 0xa9, 0xe4, 0xd1, 0x38, 0x39, 0x0f, 0xfb, 0x46, 0x8c, 0xc9, 0xf7, 0x0c, 0xc6, 0x64, + 0x8a, 0xa2, 0x1a, 0x93, 0x35, 0x13, 0xf2, 0x07, 0x66, 0x13, 0x32, 0x15, 0xe9, 0x74, 0x13, 0x72, + 0xdc, 0x70, 0xbc, 0x9a, 0x6e, 0x38, 0xa6, 0x66, 0x34, 0x83, 0xe1, 0xd8, 0x60, 0x2e, 0x7e, 0x3c, + 0x3c, 0x96, 0x2f, 0x0c, 0x59, 0x0d, 0x28, 0x26, 0xa7, 0xf8, 0x0c, 0xf8, 0xc6, 0x1f, 0xe7, 0xe0, + 0x0a, 0x97, 0x30, 0x62, 0x87, 0xe0, 0xf4, 0x2b, 0xf8, 0x2e, 0x4c, 0x72, 0xdc, 0x9d, 0x68, 0xb3, + 0x30, 0xb7, 0x54, 0xc1, 0x09, 0x19, 0x3b, 0xd5, 0xc0, 0xd0, 0xbb, 0x8a, 0x95, 0x80, 0x59, 0x9e, + 0x2e, 0x93, 0xcf, 0x25, 0x33, 0x27, 0xa4, 0xda, 0x0a, 0xac, 0x2f, 0x61, 0x29, 0xad, 0xe3, 0x67, + 0x30, 0x2f, 0x7f, 0x92, 0x83, 0x05, 0x4e, 0x5e, 0x3b, 0x4e, 0x6f, 0xc4, 0xf2, 0x4f, 0xe1, 0x49, + 0xf1, 0x18, 0x26, 0x48, 0x83, 0xa2, 0xdf, 0xfa, 0x3b, 0x29, 0xa5, 0x66, 0xc5, 0x09, 0x1d, 0x7e, + 0x05, 0xe6, 0x1c, 0x76, 0x84, 0xcb, 0xa4, 0xad, 0x22, 0x5b, 0x3f, 0x84, 0x45, 0xf3, 0x10, 0xce, + 0x60, 0x7e, 0x1e, 0x43, 0xc9, 0xc0, 0x38, 0xdf, 0xec, 0x83, 0xf8, 0x03, 0x58, 0x30, 0xd2, 0x3a, + 0x83, 0x6e, 0xae, 0x91, 0xcf, 0x7d, 0x78, 0x06, 0x4b, 0x68, 0x3d, 0x83, 0xcb, 0x06, 0x4a, 0x67, + 0xd0, 0xc5, 0x47, 0x30, 0x2f, 0xc5, 0xdc, 0xaf, 0xd5, 0xc3, 0xa7, 0x70, 0x85, 0x11, 0x3a, 0x9b, + 0x55, 0x79, 0x02, 0x0b, 0x9c, 0xdc, 0x19, 0xcc, 0xde, 0x1a, 0x2c, 0x46, 0xda, 0xac, 0x41, 0x96, + 0x38, 0x31, 0x93, 0xb1, 0x36, 0xe0, 0x6a, 0x44, 0x29, 0xe5, 0xc3, 0x7a, 0x72, 0x6a, 0x4c, 0x16, + 0x8b, 0x56, 0xe9, 0x0c, 0x65, 0xb1, 0x08, 0xf0, 0xcc, 0xc4, 0x89, 0x75, 0xb8, 0xc8, 0x08, 0xeb, + 0x72, 0xeb, 0xb2, 0x2a, 0xb7, 0x1a, 0x9f, 0x18, 0x25, 0x45, 0xd9, 0xa7, 0x54, 0x94, 0x15, 0x20, + 0x51, 0x0f, 0xdf, 0x85, 0xf3, 0xfc, 0x15, 0x25, 0xeb, 0x9f, 0x81, 0x18, 0x93, 0xd4, 0x19, 0x1a, + 0x07, 0xb6, 0x7e, 0x02, 0x57, 0x98, 0x1a, 0x18, 0xf7, 0xd6, 0x17, 0x4b, 0xf2, 0xbd, 0x98, 0x16, + 0x98, 0xf1, 0x28, 0xc0, 0xa4, 0x0c, 0xee, 0x89, 0xbd, 0x9d, 0x46, 0xff, 0x44, 0xee, 0xb3, 0x42, + 0xbb, 0xcb, 0x1b, 0xb5, 0xbb, 0xeb, 0x70, 0x4d, 0x6a, 0x77, 0xf1, 0x66, 0xa4, 0xb9, 0xf7, 0x87, + 0xb0, 0xc0, 0x06, 0xaa, 0xbf, 0x1d, 0x13, 0xdd, 0xf8, 0x38, 0x36, 0xcc, 0xd4, 0xc7, 0x69, 0xa6, + 0x41, 0xfe, 0x9d, 0x9c, 0x38, 0x72, 0x66, 0xe2, 0xdf, 0xb4, 0xba, 0xbb, 0x09, 0x65, 0x39, 0x21, + 0x7a, 0x8f, 0xde, 0x4c, 0xd7, 0x7d, 0x0a, 0x73, 0x89, 0xf7, 0x0d, 0x44, 0x60, 0x45, 0xef, 0x90, + 0x63, 0x41, 0x0b, 0xc4, 0xb6, 0x4b, 0x7d, 0x0f, 0x61, 0x4b, 0x48, 0xab, 0x09, 0x8b, 0xc9, 0xa5, + 0x70, 0x5b, 0xc2, 0xd5, 0x09, 0x7d, 0x46, 0x8e, 0x30, 0x7b, 0x64, 0x91, 0x1b, 0xf0, 0xc8, 0x82, + 0x9f, 0x63, 0x86, 0x2e, 0xb0, 0x2c, 0x4b, 0xb0, 0x9a, 0xd8, 0xf8, 0x49, 0xeb, 0x62, 0x3f, 0xb8, + 0x80, 0x44, 0x55, 0xad, 0x6e, 0x8b, 0xa6, 0x2f, 0xc3, 0x50, 0xad, 0x6e, 0x73, 0x0f, 0x4b, 0xaa, + 0x6e, 0xb7, 0x02, 0xdf, 0x26, 0x65, 0x71, 0xa9, 0x35, 0x7f, 0x02, 0xa9, 0xf5, 0xf1, 0xf0, 0xd8, + 0x50, 0x61, 0xd8, 0xfa, 0x11, 0x5c, 0xd4, 0x9a, 0xe2, 0x27, 0x36, 0xd3, 0x0d, 0x14, 0xdd, 0x84, + 0xd1, 0x5a, 0x85, 0xde, 0xd1, 0x51, 0xdb, 0xc0, 0x24, 0xe3, 0x2d, 0x2d, 0xa7, 0x49, 0x9f, 0xc4, + 0xdb, 0xa2, 0xd2, 0xfa, 0x67, 0xc3, 0x0a, 0x75, 0xc5, 0xb9, 0x36, 0x63, 0x24, 0xf7, 0x01, 0xd8, + 0x6e, 0x50, 0x06, 0x42, 0x84, 0xbd, 0x09, 0x7e, 0xad, 0xc0, 0xd8, 0xaf, 0xad, 0x00, 0x9d, 0xd4, + 0xf9, 0x96, 0xfb, 0xfb, 0x30, 0x24, 0x71, 0xf7, 0x26, 0xfd, 0x7d, 0x38, 0xe9, 0xc0, 0x56, 0x81, + 0xd0, 0x4f, 0xe2, 0x3e, 0x62, 0x23, 0xf4, 0xaa, 0xfb, 0x5b, 0xdc, 0x04, 0x61, 0x18, 0xdb, 0xe9, + 0xdc, 0xc4, 0x5e, 0xc1, 0x1c, 0xc1, 0x75, 0x9f, 0x53, 0x47, 0xb0, 0xd5, 0xaf, 0x42, 0xdc, 0x65, + 0x7c, 0xfc, 0x3c, 0x6d, 0xe7, 0x46, 0x46, 0x3b, 0x11, 0x30, 0x7f, 0xc3, 0x1d, 0xd1, 0x69, 0x62, + 0x59, 0x67, 0x9b, 0xe9, 0xd3, 0x0d, 0x63, 0x6f, 0xac, 0x76, 0xdb, 0x3d, 0xcf, 0x95, 0x0a, 0x04, + 0xdb, 0x30, 0x7e, 0xa7, 0x89, 0x79, 0xb9, 0xad, 0x02, 0x59, 0x37, 0x33, 0x7d, 0xb3, 0xc6, 0x60, + 0x78, 0xa7, 0xb6, 0xb3, 0x51, 0xc8, 0x59, 0x77, 0x01, 0x94, 0x96, 0x00, 0xce, 0x6f, 0x6e, 0xd9, + 0x4f, 0x2b, 0x1b, 0x85, 0x73, 0x68, 0x0e, 0x2e, 0x3c, 0x5b, 0xdf, 0x5c, 0xd9, 0x7a, 0x56, 0x6f, + 0xd6, 0x9f, 0x56, 0xec, 0x9d, 0x5a, 0xc5, 0x5e, 0x29, 0xe4, 0xac, 0x2f, 0x61, 0x56, 0x1f, 0xe1, + 0x99, 0x6e, 0xc2, 0x10, 0x2e, 0x4a, 0xd9, 0xe5, 0xf1, 0xb3, 0x1d, 0xc5, 0x5f, 0x85, 0x2b, 0x43, + 0xf1, 0x2b, 0x34, 0xae, 0x36, 0xf1, 0x23, 0xa3, 0x00, 0x69, 0x17, 0x9f, 0xf9, 0xcc, 0x8b, 0x4f, + 0xeb, 0x7d, 0x98, 0xd5, 0x5b, 0x3d, 0xa9, 0x39, 0xe8, 0x5b, 0xd4, 0x91, 0x47, 0xf1, 0xae, 0x24, + 0x5a, 0x79, 0xd4, 0x45, 0xce, 0x45, 0xdf, 0x87, 0x02, 0x87, 0x8a, 0xbe, 0xb2, 0xd7, 0x85, 0xbd, + 0x2e, 0x67, 0xf0, 0x04, 0x17, 0x6e, 0x05, 0x6f, 0x89, 0x1b, 0x80, 0x41, 0x2d, 0xfc, 0x69, 0x0e, + 0x8a, 0x31, 0x47, 0xc5, 0xda, 0x81, 0xd3, 0xe9, 0xe0, 0xee, 0x3e, 0x46, 0xb7, 0x60, 0x78, 0x67, + 0x6b, 0x67, 0x9b, 0x5b, 0xc8, 0x66, 0xf9, 0x36, 0x25, 0x45, 0x12, 0xc6, 0xa6, 0x10, 0xe8, 0x09, + 0x5c, 0x10, 0x6e, 0x2b, 0xb2, 0x8a, 0x2b, 0x20, 0x57, 0xb2, 0x9d, 0x60, 0x92, 0x78, 0xe8, 0x1d, + 0xee, 0x55, 0xf9, 0xb3, 0xbe, 0xeb, 0xe3, 0x36, 0x55, 0xce, 0xa7, 0x97, 0x51, 0xe4, 0x55, 0x29, + 0x6a, 0x6c, 0x15, 0x8c, 0x79, 0xbc, 0x5b, 0xbf, 0x97, 0x83, 0xf9, 0x14, 0xc7, 0x4b, 0xf4, 0xb6, + 0x36, 0x9c, 0x8b, 0xca, 0x70, 0x04, 0xc8, 0xda, 0x39, 0x3e, 0x9e, 0x9a, 0xe2, 0xcb, 0x33, 0x74, + 0x0a, 0x5f, 0x1e, 0xfe, 0xee, 0x9a, 0xc2, 0xf1, 0xf7, 0x45, 0xb4, 0xdc, 0x9a, 0x81, 0x29, 0x6d, + 0xde, 0x2c, 0x0b, 0x26, 0xd5, 0x96, 0xc9, 0xe2, 0xd4, 0xbc, 0xb6, 0x5c, 0x1c, 0xf2, 0xb7, 0xf5, + 0xf7, 0x73, 0x30, 0x4b, 0x87, 0xb8, 0xef, 0x92, 0xd3, 0x18, 0xcd, 0xd0, 0xb2, 0x36, 0x92, 0x45, + 0x6d, 0x24, 0x31, 0x58, 0x39, 0xa4, 0x8f, 0x12, 0x43, 0x5a, 0x34, 0x0d, 0x89, 0x6a, 0x7d, 0xae, + 0xd7, 0xd5, 0x46, 0xa2, 0x5c, 0x43, 0xfc, 0xa3, 0x1c, 0x5c, 0x54, 0xfa, 0x24, 0xfb, 0x7f, 0x5f, + 0xeb, 0xd2, 0x82, 0xa1, 0x4b, 0x89, 0x49, 0xae, 0x26, 0x7a, 0xf4, 0xad, 0xac, 0x1e, 0x0d, 0x9c, + 0xe3, 0x3f, 0xcb, 0xc1, 0x9c, 0x71, 0x0e, 0xd0, 0x25, 0x22, 0x5a, 0xb5, 0x7c, 0x1c, 0xf2, 0xe9, + 0xe5, 0xbf, 0x48, 0xf9, 0x7a, 0x10, 0xf4, 0x79, 0xb0, 0x92, 0x71, 0x9b, 0xff, 0x42, 0xdf, 0x82, + 0xa9, 0x6d, 0xec, 0xbb, 0x5e, 0x9b, 0x79, 0x79, 0xb1, 0x9b, 0xf0, 0x29, 0x5b, 0x2f, 0x44, 0x8b, + 0x30, 0x5e, 0xe9, 0xec, 0x7b, 0xbe, 0x1b, 0x1e, 0xb0, 0x9b, 0xa0, 0x71, 0x3b, 0x2a, 0x20, 0xb4, + 0x57, 0xdc, 0x7d, 0xe1, 0xdc, 0x31, 0x65, 0xf3, 0x5f, 0xa8, 0x08, 0xa3, 0xc2, 0xa0, 0x43, 0xcd, + 0x41, 0xb6, 0xf8, 0x49, 0x30, 0x3e, 0xb7, 0xe9, 0x26, 0xa0, 0x4f, 0x8a, 0x6c, 0xfe, 0xcb, 0xba, + 0x0d, 0xb3, 0xa6, 0x79, 0x34, 0x6e, 0x99, 0xbf, 0x9e, 0x87, 0x8b, 0x95, 0x76, 0xfb, 0xe9, 0xc3, + 0xca, 0x0a, 0x56, 0x05, 0x9a, 0x77, 0x60, 0x78, 0xbd, 0xeb, 0x86, 0x5c, 0x9a, 0x11, 0x2e, 0xca, + 0x06, 0x48, 0x02, 0x45, 0x56, 0x88, 0xfc, 0x8f, 0x6c, 0xb8, 0xb8, 0xfa, 0x95, 0x1b, 0x84, 0x6e, + 0x77, 0x5f, 0xf5, 0x73, 0xce, 0x9f, 0xc4, 0xcf, 0x79, 0xed, 0x9c, 0x6d, 0x42, 0x46, 0x3b, 0x70, + 0x69, 0x13, 0xbf, 0x32, 0x6c, 0x21, 0xf9, 0xfc, 0x43, 0x39, 0xe8, 0x89, 0x9d, 0x93, 0x82, 0xab, + 0xee, 0xd0, 0xdf, 0xc9, 0xd3, 0x67, 0x66, 0xca, 0xc0, 0x78, 0xcb, 0xbb, 0x30, 0xab, 0x74, 0x28, + 0xe2, 0x53, 0x39, 0xfe, 0xb0, 0xd5, 0x38, 0x1c, 0xf5, 0x20, 0x19, 0xd1, 0xd1, 0x33, 0x98, 0xd7, + 0x3b, 0x15, 0x51, 0xd6, 0x0f, 0x83, 0x09, 0x64, 0xed, 0x9c, 0x9d, 0x86, 0x8d, 0x96, 0x61, 0xa8, + 0xd2, 0x7a, 0xc1, 0xa7, 0xc5, 0xbc, 0x64, 0x6c, 0x64, 0x95, 0xd6, 0x0b, 0xfa, 0x5c, 0xbb, 0xf5, + 0x42, 0x3b, 0x0f, 0xff, 0x2e, 0x07, 0xf3, 0x29, 0x2b, 0x8c, 0x96, 0x00, 0x58, 0xa1, 0xf2, 0x45, + 0x50, 0x4a, 0x88, 0x80, 0xc6, 0x7e, 0x51, 0x8f, 0xaf, 0x21, 0xca, 0x82, 0xc5, 0x4b, 0x8a, 0xa8, + 0xc2, 0x56, 0x80, 0xd0, 0x36, 0x4c, 0xb0, 0x5f, 0xec, 0x41, 0x87, 0xce, 0xb6, 0x95, 0x1a, 0x26, + 0xc8, 0xb4, 0x69, 0x41, 0x33, 0xfe, 0x90, 0x43, 0x25, 0xc1, 0xcd, 0x97, 0xb5, 0xf8, 0x28, 0xe4, + 0xa0, 0xd1, 0x2d, 0x38, 0xcf, 0x0a, 0xf9, 0x1a, 0x8a, 0x67, 0x9a, 0x11, 0x30, 0xaf, 0xb7, 0xfe, + 0x49, 0x0e, 0x2e, 0xb1, 0x2f, 0x62, 0xe2, 0x68, 0xbc, 0xaf, 0x1d, 0x8d, 0x6b, 0xb2, 0xc3, 0x26, + 0x60, 0xed, 0x74, 0x54, 0x75, 0xef, 0xff, 0x93, 0x9e, 0x0a, 0x15, 0x49, 0xdd, 0xb7, 0xff, 0x34, + 0x27, 0xac, 0x39, 0xc9, 0xad, 0xbb, 0x0a, 0x93, 0x6f, 0xb6, 0x65, 0x35, 0x34, 0xf4, 0x2e, 0xdb, + 0x51, 0xf9, 0xec, 0x91, 0x66, 0x6e, 0xaa, 0x4f, 0xa0, 0x94, 0x3e, 0x35, 0x83, 0xb6, 0x95, 0xf5, + 0xd0, 0x80, 0xfd, 0x26, 0xcb, 0xd9, 0x4f, 0xd0, 0xa9, 0xbf, 0xee, 0xb6, 0xc4, 0x8a, 0xde, 0x8c, + 0xfb, 0x43, 0xa6, 0xfa, 0x98, 0xa9, 0xbd, 0xcd, 0x47, 0xd7, 0x06, 0x7c, 0x73, 0x52, 0x61, 0x4f, + 0xed, 0xfe, 0xbf, 0xce, 0xeb, 0x7b, 0xf1, 0x4d, 0x1a, 0xad, 0xc1, 0xd4, 0x26, 0x7e, 0x95, 0x68, + 0x97, 0xfa, 0xcf, 0x74, 0xf1, 0xab, 0xa6, 0xd2, 0xb6, 0xea, 0x58, 0xae, 0xe1, 0xa0, 0x3d, 0x98, + 0x16, 0x5c, 0xe3, 0xa4, 0xcc, 0x93, 0xbd, 0x66, 0x23, 0x2d, 0xa4, 0xbc, 0x3d, 0x89, 0x51, 0x3c, + 0xfb, 0xf3, 0x6c, 0x6d, 0x43, 0x31, 0x39, 0x7b, 0xbc, 0xb5, 0x77, 0x06, 0xad, 0x3d, 0x33, 0x7b, + 0xb4, 0xf5, 0x7d, 0xb0, 0x46, 0x4d, 0x51, 0x12, 0x46, 0xda, 0x16, 0xee, 0xc5, 0x17, 0x83, 0xfa, + 0xe1, 0x88, 0xc5, 0x50, 0xfa, 0x27, 0xdd, 0x63, 0x6b, 0xd4, 0x9a, 0xa7, 0x52, 0xe2, 0x1d, 0xbb, + 0x0d, 0xa3, 0xbc, 0x28, 0xf6, 0x16, 0x3c, 0xda, 0x95, 0x02, 0xc0, 0xfa, 0xfd, 0x1c, 0x5c, 0xa6, + 0xb6, 0x45, 0xb7, 0xbb, 0xdf, 0xc1, 0xbb, 0x81, 0xee, 0xe1, 0xfa, 0x5d, 0x8d, 0xd1, 0xcc, 0xa7, + 0xbc, 0x40, 0xfa, 0x75, 0xb1, 0x97, 0x3f, 0xc8, 0x41, 0xc9, 0xd4, 0xb7, 0xb3, 0xe5, 0x30, 0x77, + 0xb8, 0x32, 0x97, 0xe7, 0x56, 0x13, 0x86, 0x2e, 0xdb, 0x14, 0x83, 0x25, 0x83, 0x24, 0xff, 0x6b, + 0xac, 0xe5, 0x2f, 0x72, 0x30, 0xbb, 0x1e, 0xa8, 0x02, 0x3e, 0x9f, 0xb8, 0x3b, 0xa6, 0x07, 0x91, + 0x74, 0x5d, 0xcd, 0x71, 0x37, 0xde, 0x51, 0x5e, 0xd8, 0xe4, 0xb3, 0x5e, 0x3a, 0x6a, 0xc1, 0x56, + 0x6e, 0xc2, 0xf0, 0x26, 0x11, 0xa7, 0x86, 0xf8, 0xfe, 0x63, 0x18, 0xa4, 0x88, 0x3e, 0x86, 0x21, + 0x5d, 0x26, 0x3f, 0xd0, 0xc3, 0xc4, 0x93, 0x9b, 0xe1, 0xc1, 0x2f, 0xf9, 0x92, 0x51, 0x62, 0xaa, + 0x63, 0x70, 0x7e, 0xc7, 0xf1, 0xf7, 0x71, 0x68, 0xfd, 0x10, 0x4a, 0xdc, 0xab, 0x87, 0x59, 0x6b, + 0xa9, 0xef, 0x4f, 0x10, 0x39, 0x6e, 0x65, 0x79, 0xe2, 0x2c, 0x01, 0xd4, 0x43, 0xc7, 0x0f, 0xd7, + 0xbb, 0x6d, 0xfc, 0x15, 0x1d, 0xed, 0x88, 0xad, 0x94, 0x58, 0xef, 0xc2, 0xb8, 0x1c, 0x02, 0xd5, + 0x00, 0x15, 0x89, 0x91, 0x0e, 0x67, 0x56, 0x7b, 0x04, 0x24, 0x5e, 0xfe, 0x3c, 0x80, 0xb9, 0xd8, + 0x52, 0x44, 0x8f, 0xd2, 0xa4, 0x66, 0x46, 0x5d, 0x1c, 0x6d, 0xf9, 0xdb, 0xaa, 0xc1, 0x85, 0xc4, + 0x4a, 0x23, 0x44, 0xdf, 0x8b, 0x31, 0xed, 0x9e, 0x7c, 0x50, 0xea, 0xf5, 0x35, 0x52, 0xb6, 0xb3, + 0x51, 0x67, 0x4e, 0xdc, 0xa4, 0x6c, 0x67, 0xa3, 0x5e, 0x3d, 0xcf, 0x76, 0x8e, 0xf5, 0x2f, 0xf2, + 0x54, 0xe9, 0x4d, 0xcc, 0x41, 0xcc, 0x56, 0xa8, 0xda, 0x2b, 0xab, 0x30, 0x4e, 0x47, 0xbc, 0x22, + 0x9e, 0x29, 0x64, 0x3b, 0xa2, 0x8c, 0xfd, 0xe2, 0xa8, 0x7c, 0x8e, 0x7a, 0x9f, 0x44, 0x68, 0xe8, + 0x53, 0x18, 0x5d, 0xed, 0xb6, 0x29, 0x85, 0xa1, 0x53, 0x50, 0x10, 0x48, 0x64, 0x1d, 0x68, 0x97, + 0x89, 0x28, 0xc4, 0xcd, 0x4e, 0xb6, 0x52, 0x42, 0xa7, 0xd9, 0x3d, 0x74, 0x99, 0xc3, 0xd7, 0x88, + 0xcd, 0x7e, 0xd0, 0x27, 0x7e, 0xa4, 0x0b, 0x22, 0xfe, 0xc0, 0xb8, 0x2d, 0x7f, 0x23, 0x0b, 0x46, + 0xb6, 0xfc, 0x36, 0x7f, 0xfa, 0x3b, 0xbd, 0x3c, 0x29, 0x82, 0x31, 0x92, 0x32, 0x9b, 0x55, 0x59, + 0xff, 0x3b, 0x07, 0xf3, 0x8f, 0x70, 0x68, 0xdc, 0x37, 0xda, 0xac, 0xe4, 0xbe, 0xf6, 0xac, 0xe4, + 0xdf, 0x64, 0x56, 0xe4, 0xa8, 0x87, 0xd2, 0x46, 0x3d, 0x9c, 0x36, 0xea, 0x91, 0xf4, 0x51, 0x3f, + 0x82, 0xf3, 0x6c, 0xa8, 0xe8, 0x3a, 0x8c, 0xac, 0x87, 0xf8, 0x30, 0x32, 0x86, 0xa8, 0x6e, 0x74, + 0x36, 0xab, 0x23, 0x1a, 0xd7, 0x86, 0x13, 0x84, 0xe2, 0xd9, 0xc0, 0xb8, 0x2d, 0x7e, 0x5a, 0x3f, + 0xa5, 0x0f, 0x9c, 0x36, 0xbc, 0xd6, 0x0b, 0xc5, 0x2a, 0x3d, 0xca, 0x4e, 0x65, 0xfc, 0x16, 0x83, + 0x40, 0xb1, 0x1a, 0x5b, 0x40, 0xa0, 0xab, 0x30, 0xb1, 0xde, 0x7d, 0xe8, 0xf9, 0x2d, 0xbc, 0xd5, + 0xed, 0x30, 0xea, 0x63, 0xb6, 0x5a, 0xc4, 0x2d, 0x38, 0xbc, 0x85, 0xc8, 0x82, 0x43, 0x0b, 0x62, + 0x16, 0x1c, 0x16, 0xaf, 0xcb, 0x66, 0x75, 0xdc, 0x40, 0x44, 0xfe, 0xce, 0x32, 0xdf, 0x48, 0x3b, + 0xcf, 0x20, 0xc0, 0x3d, 0xb8, 0x6c, 0xe3, 0x5e, 0xc7, 0x21, 0x02, 0xd7, 0xa1, 0xc7, 0xe0, 0xe5, + 0x98, 0xaf, 0x1a, 0xfc, 0xcc, 0x75, 0xdf, 0x07, 0xd9, 0xe5, 0x7c, 0x46, 0x97, 0x0f, 0xe1, 0xda, + 0x23, 0x1c, 0x1a, 0x83, 0x6e, 0x45, 0x83, 0x5f, 0x83, 0xb1, 0x40, 0xb7, 0xd7, 0x0f, 0x8a, 0xf7, + 0xc5, 0x6f, 0xb4, 0x38, 0x1d, 0xf9, 0x97, 0xf5, 0x19, 0x94, 0xd3, 0x9a, 0x3b, 0x99, 0xcf, 0xab, + 0x0b, 0x57, 0xd3, 0x09, 0xc8, 0xcf, 0xa2, 0xb0, 0xed, 0x4b, 0xd5, 0x39, 0xbb, 0xb7, 0xfa, 0x75, + 0x00, 0xff, 0xc3, 0xaa, 0x0a, 0xef, 0xbf, 0xaf, 0xd1, 0xdd, 0x26, 0xbd, 0x36, 0xd7, 0x09, 0x44, + 0xf3, 0x5a, 0x81, 0x31, 0x51, 0xc6, 0xe7, 0x35, 0x35, 0x9e, 0x19, 0x9d, 0xd0, 0xb6, 0x20, 0x20, + 0xd1, 0xac, 0x9f, 0x8a, 0x2b, 0x24, 0x1d, 0xe3, 0x64, 0x8f, 0x67, 0x4e, 0x72, 0x67, 0x64, 0x79, + 0x70, 0x59, 0xa7, 0xad, 0x5e, 0x17, 0x14, 0x94, 0xeb, 0x02, 0x76, 0x4b, 0x70, 0x55, 0x37, 0x5f, + 0xe7, 0xf9, 0xbe, 0x8c, 0x8a, 0xd0, 0x92, 0x7a, 0x29, 0x30, 0x99, 0x7c, 0x6d, 0x74, 0x0f, 0x4a, + 0xa6, 0x06, 0x15, 0x03, 0x8a, 0xb4, 0x3c, 0xf3, 0xd8, 0x17, 0xbf, 0x99, 0x03, 0x4b, 0xf3, 0x84, + 0xd2, 0x42, 0x53, 0xc9, 0x23, 0xf3, 0xb6, 0x60, 0x6c, 0xd4, 0xf7, 0x8a, 0xf9, 0xd0, 0x77, 0x48, + 0x81, 0xfa, 0xc4, 0x8b, 0x71, 0xbb, 0x7b, 0x30, 0xba, 0x89, 0xbf, 0x8a, 0xd8, 0x0f, 0x93, 0x45, + 0xa9, 0x77, 0xd4, 0x0b, 0xac, 0x3e, 0x1e, 0x15, 0x60, 0x44, 0x10, 0xba, 0x9e, 0xd9, 0x07, 0xde, + 0xff, 0x3d, 0x28, 0xc4, 0xeb, 0xf8, 0xda, 0x0f, 0x8c, 0xd2, 0x45, 0x5f, 0x61, 0xc4, 0x83, 0x73, + 0x05, 0x76, 0x82, 0xde, 0xe9, 0x7b, 0x8f, 0x3e, 0x04, 0xd8, 0xf1, 0x42, 0xa7, 0x53, 0xa3, 0x36, + 0x2e, 0xca, 0xf8, 0x59, 0xa8, 0xa7, 0x90, 0x94, 0x36, 0xe3, 0xaf, 0x5c, 0x15, 0x60, 0xeb, 0xfb, + 0xf4, 0x44, 0x9a, 0x3b, 0x7d, 0xb2, 0x43, 0x52, 0x83, 0xeb, 0x31, 0xcf, 0x83, 0x37, 0x20, 0x12, + 0xc2, 0x1c, 0x99, 0x7e, 0x19, 0xe3, 0xeb, 0x9b, 0x59, 0xf5, 0xff, 0x98, 0x63, 0xee, 0x92, 0x6a, + 0xb3, 0x7c, 0xa1, 0x6b, 0x00, 0x51, 0x69, 0xcc, 0x1f, 0x5f, 0x0d, 0x59, 0x46, 0x95, 0xd7, 0x28, + 0x64, 0x59, 0x60, 0x2b, 0x68, 0xdf, 0xec, 0x4a, 0x3e, 0xa0, 0xee, 0x06, 0xb2, 0xf5, 0x93, 0xcd, + 0xfb, 0x7b, 0xc2, 0x46, 0x73, 0x4a, 0xbc, 0x03, 0x98, 0xd5, 0xa2, 0x3a, 0x47, 0x61, 0x6a, 0xa3, + 0x68, 0xd6, 0xe3, 0xd5, 0x4f, 0x7e, 0x75, 0x54, 0xfe, 0xe0, 0x34, 0xaf, 0xbf, 0x04, 0xcd, 0x1d, + 0xf9, 0xc8, 0xd1, 0x9a, 0x87, 0xa1, 0x9a, 0xbd, 0x41, 0x59, 0x95, 0xbd, 0x21, 0x59, 0x95, 0xbd, + 0x61, 0xfd, 0xaf, 0x3c, 0x94, 0xd9, 0x1b, 0x67, 0xea, 0xa5, 0x12, 0xe9, 0x4a, 0x8a, 0xdb, 0xcb, + 0x49, 0x2d, 0x04, 0xb1, 0x37, 0xcc, 0xf9, 0x93, 0xbc, 0x61, 0xfe, 0xcb, 0x6f, 0x6e, 0x55, 0x65, + 0x11, 0xfb, 0x22, 0xc3, 0x00, 0xab, 0x35, 0x59, 0x08, 0x52, 0x9a, 0x48, 0x9a, 0x34, 0x86, 0xdf, + 0xc0, 0xa4, 0x71, 0x0f, 0x46, 0xa9, 0xea, 0xb1, 0xbe, 0xcd, 0x7d, 0x2b, 0xe9, 0xf6, 0xa4, 0xe1, + 0x08, 0x9a, 0xae, 0x1a, 0xe7, 0x44, 0x80, 0x59, 0xff, 0x30, 0x0f, 0x57, 0xd3, 0xe7, 0x9c, 0xf7, + 0x6d, 0x45, 0x0b, 0xcc, 0x9b, 0xe1, 0x8f, 0x43, 0xcf, 0x8e, 0x12, 0x98, 0x37, 0x1e, 0x8c, 0x57, + 0xbc, 0x0c, 0x8a, 0xdd, 0x86, 0x69, 0x0f, 0x86, 0x44, 0x58, 0x73, 0x56, 0xa4, 0xc5, 0xe3, 0xe2, + 0x65, 0x68, 0x0f, 0xe6, 0xb7, 0x7d, 0xf7, 0xa5, 0x13, 0xe2, 0x27, 0xf8, 0xf5, 0xb6, 0xd7, 0x71, + 0x5b, 0xaf, 0x57, 0xbb, 0xce, 0x5e, 0x07, 0xb7, 0xf9, 0x73, 0xaf, 0x5b, 0xc7, 0x47, 0xe5, 0x6f, + 0xf5, 0x18, 0x08, 0x39, 0x98, 0xcd, 0x1e, 0x05, 0x6a, 0x62, 0x06, 0xa5, 0x10, 0x4d, 0x23, 0x64, + 0xfd, 0x87, 0x1c, 0x2c, 0x50, 0x81, 0x9a, 0xdf, 0x2c, 0x88, 0xc6, 0xdf, 0xc8, 0x2d, 0x53, 0x1d, + 0x20, 0xdf, 0x8b, 0xd4, 0x2d, 0x53, 0x7b, 0x39, 0x65, 0x6b, 0x60, 0x68, 0x1d, 0x26, 0xf8, 0x6f, + 0xc5, 0x7c, 0x3c, 0xa7, 0x30, 0x2c, 0xba, 0xd5, 0x99, 0xf5, 0x88, 0x6e, 0x6c, 0x4e, 0xac, 0x49, + 0xdf, 0x13, 0xab, 0xb8, 0xd6, 0x2f, 0xf3, 0xb0, 0xd8, 0xc0, 0xbe, 0xfb, 0xfc, 0x75, 0xca, 0x60, + 0xb6, 0x60, 0x56, 0x14, 0xd1, 0x31, 0xeb, 0x47, 0x8c, 0x05, 0xea, 0x11, 0x5d, 0x0d, 0x08, 0x40, + 0x53, 0x9e, 0x38, 0x23, 0xe2, 0x29, 0x1c, 0x2e, 0xdf, 0x81, 0xb1, 0x58, 0xa4, 0x01, 0xba, 0xfe, + 0xe2, 0x84, 0xea, 0x61, 0x1e, 0xe5, 0x51, 0xfd, 0xad, 0xf4, 0x2b, 0x4a, 0x6e, 0x49, 0x18, 0x14, + 0x41, 0x86, 0x1e, 0x58, 0x72, 0x58, 0x1d, 0xa5, 0xd6, 0x70, 0x60, 0xd7, 0xce, 0xd9, 0x69, 0x2d, + 0x55, 0x27, 0x60, 0xbc, 0x42, 0xaf, 0x5d, 0x89, 0xe2, 0xfe, 0x7f, 0xf2, 0xb0, 0x24, 0xde, 0xec, + 0xa4, 0x4c, 0xf3, 0x17, 0x30, 0x2f, 0x8a, 0x2a, 0x3d, 0x22, 0x30, 0xe0, 0xb6, 0x3e, 0xd3, 0x2c, + 0x58, 0x96, 0x98, 0x69, 0x87, 0xc3, 0x44, 0x93, 0x9d, 0x86, 0x7e, 0x36, 0x06, 0xd1, 0x4f, 0x4d, + 0x71, 0x1f, 0xa8, 0x61, 0x52, 0xe5, 0x99, 0x7a, 0x2c, 0x48, 0x95, 0x7f, 0xb6, 0x13, 0x06, 0xd5, + 0xe1, 0xaf, 0x6b, 0x50, 0x5d, 0x3b, 0x17, 0x37, 0xa9, 0x56, 0xa7, 0x61, 0x72, 0x13, 0xbf, 0x8a, + 0xe6, 0xfd, 0xb7, 0x73, 0xb1, 0xa7, 0x89, 0x44, 0xc2, 0x60, 0x6f, 0x14, 0x73, 0x51, 0xe8, 0x00, + 0xfa, 0x34, 0x51, 0x95, 0x30, 0x18, 0xe8, 0x3a, 0x8c, 0x32, 0x17, 0xdd, 0xf6, 0x09, 0x74, 0x73, + 0xf9, 0xf8, 0xa6, 0xc5, 0x50, 0x98, 0x9a, 0xce, 0xf1, 0xad, 0x27, 0x70, 0x8d, 0x7b, 0x88, 0xeb, + 0x8b, 0x4f, 0x1b, 0x3a, 0xe5, 0xe7, 0xcb, 0x72, 0x60, 0xe9, 0x11, 0x8e, 0xb3, 0x1e, 0xed, 0x71, + 0xd2, 0x67, 0x30, 0xa3, 0x95, 0x4b, 0x8a, 0x54, 0x2a, 0x95, 0x7b, 0x48, 0x92, 0x8e, 0x43, 0x5b, + 0x57, 0x4d, 0x4d, 0xa8, 0x9d, 0xb5, 0x30, 0x8d, 0x7a, 0xe5, 0x47, 0xb7, 0xc8, 0xc1, 0x29, 0xb8, + 0xde, 0x2d, 0xe5, 0x5c, 0x33, 0x8e, 0xc7, 0xe2, 0xff, 0x88, 0x2f, 0xaf, 0xac, 0xb5, 0xa6, 0x60, + 0xa2, 0xe6, 0x75, 0x43, 0xfc, 0x15, 0x15, 0x75, 0xac, 0x69, 0x98, 0x14, 0x55, 0x1d, 0x1c, 0x04, + 0xd6, 0x3f, 0x1e, 0x02, 0x8b, 0x4f, 0xac, 0xc9, 0x7a, 0x2a, 0xe6, 0x63, 0x2f, 0xd1, 0x59, 0xfe, + 0xa1, 0xba, 0xa4, 0xda, 0x88, 0xa3, 0x5a, 0xb6, 0xf3, 0xa8, 0x9c, 0xd7, 0x8a, 0x4a, 0xf5, 0xc0, + 0xbe, 0xf1, 0xd1, 0xff, 0x28, 0x85, 0x4d, 0xb2, 0xc3, 0x46, 0x63, 0x6a, 0xa7, 0xb0, 0x49, 0x8d, + 0xae, 0x99, 0x65, 0xda, 0xda, 0x34, 0x70, 0x91, 0x03, 0xc9, 0xb7, 0x95, 0xb2, 0x86, 0xfb, 0x30, + 0xb1, 0x82, 0x66, 0x22, 0x8f, 0x84, 0x4a, 0x04, 0xed, 0xea, 0x73, 0xc9, 0xcf, 0xa3, 0xf0, 0xda, + 0x50, 0xab, 0x18, 0xd5, 0x9e, 0x52, 0xa2, 0xa7, 0xe5, 0xd0, 0x60, 0x15, 0x8b, 0xf8, 0xef, 0x4a, + 0x3f, 0x7d, 0xf2, 0x21, 0x75, 0x3b, 0x98, 0x3f, 0x4a, 0x11, 0xcb, 0xd2, 0x37, 0xdf, 0x7e, 0xe7, + 0x4e, 0xc4, 0xa3, 0x69, 0x34, 0x53, 0xcc, 0xd1, 0xd3, 0xae, 0x5c, 0x4c, 0xf4, 0xad, 0xa3, 0x9c, + 0x78, 0x9d, 0x90, 0xb8, 0x12, 0x3e, 0xad, 0x24, 0x59, 0xd5, 0x6e, 0x71, 0xf3, 0x29, 0xb7, 0xb8, + 0xda, 0x9d, 0x57, 0x38, 0xe0, 0x5a, 0x77, 0xe8, 0xeb, 0x5f, 0x03, 0xfd, 0xe1, 0x79, 0xb8, 0xb0, + 0xed, 0xec, 0xbb, 0x5d, 0xc2, 0x7b, 0x44, 0x04, 0x5e, 0x54, 0x49, 0xe4, 0x68, 0xc8, 0x76, 0x83, + 0x35, 0x24, 0x61, 0x58, 0x56, 0xc3, 0xa5, 0xe7, 0xd3, 0x5e, 0x8c, 0xea, 0x41, 0xd1, 0x3f, 0xd4, + 0xac, 0xfe, 0x89, 0x7c, 0x21, 0xd4, 0xbb, 0xaf, 0xeb, 0xb5, 0x63, 0x79, 0x4b, 0xa8, 0xe5, 0x3c, + 0x19, 0x48, 0x7e, 0xe4, 0x8c, 0x03, 0xc9, 0xff, 0x10, 0x26, 0x9e, 0xf4, 0xf7, 0x64, 0x4e, 0x8c, + 0xf3, 0x03, 0x03, 0x95, 0xd3, 0x35, 0x78, 0xd1, 0xdf, 0x33, 0x67, 0xc5, 0x50, 0x89, 0x19, 0x83, + 0xae, 0x8f, 0xfe, 0x5a, 0x82, 0xae, 0xa7, 0xc6, 0xfb, 0x1f, 0xfb, 0x46, 0xe2, 0xfd, 0x1b, 0x02, + 0xa7, 0x8f, 0x9f, 0x7d, 0xe0, 0x74, 0x2d, 0xa8, 0x38, 0x7c, 0xcd, 0xa0, 0xe2, 0x55, 0x80, 0x31, + 0x3f, 0x0a, 0x4d, 0x3d, 0x5c, 0x18, 0xb1, 0xfe, 0xed, 0x28, 0xcc, 0x6e, 0xb8, 0x41, 0x28, 0xce, + 0x4b, 0x10, 0x7d, 0x4c, 0x27, 0x45, 0x99, 0xa2, 0xec, 0x72, 0xb9, 0x97, 0x95, 0x37, 0x63, 0x19, + 0x9b, 0x34, 0x04, 0xf4, 0xae, 0x7a, 0xb7, 0x92, 0x57, 0x02, 0x77, 0x26, 0x93, 0xed, 0xa8, 0x97, + 0x2e, 0x6f, 0x6b, 0xa6, 0xfd, 0x4c, 0x5b, 0xc8, 0x83, 0xb8, 0xbd, 0x9f, 0xc7, 0xd5, 0xa2, 0x9f, + 0x19, 0xdd, 0xf6, 0x10, 0x5d, 0x04, 0xec, 0xc2, 0x79, 0x1a, 0x04, 0x47, 0x3c, 0x08, 0x7e, 0x8b, + 0xb3, 0x1c, 0xd3, 0x24, 0xb0, 0x70, 0x39, 0xfc, 0x35, 0x30, 0x8d, 0x19, 0xd5, 0xa1, 0x05, 0x6a, + 0xac, 0x1b, 0x06, 0x82, 0x76, 0xe0, 0xe2, 0xb6, 0x8f, 0xdb, 0xdc, 0x53, 0xb6, 0xe7, 0x73, 0xc5, + 0x90, 0xbd, 0xcc, 0xa3, 0x41, 0x2c, 0x7b, 0xa2, 0xba, 0x89, 0x65, 0xbd, 0xca, 0xb3, 0x0d, 0xe8, + 0x68, 0x15, 0xa6, 0xeb, 0xd8, 0xf1, 0x5b, 0x07, 0x4f, 0xf0, 0x6b, 0xf2, 0xa9, 0x09, 0x8a, 0xa3, + 0x51, 0xe4, 0xd7, 0x80, 0xd6, 0x90, 0x81, 0xd2, 0x2a, 0xf5, 0xca, 0x5d, 0x47, 0x42, 0xdf, 0x87, + 0xf3, 0x75, 0xcf, 0x0f, 0xab, 0xaf, 0x63, 0xd9, 0x97, 0x58, 0x61, 0xf5, 0xb2, 0x88, 0x7e, 0x1b, + 0x78, 0x7e, 0xd8, 0xdc, 0x53, 0xe7, 0x8d, 0xe3, 0xa1, 0x87, 0x44, 0x8e, 0x25, 0xb2, 0xb5, 0x34, + 0xdb, 0xb0, 0xc0, 0x19, 0x5c, 0x56, 0xa5, 0x02, 0xb9, 0xc9, 0x76, 0x13, 0xc3, 0x42, 0xaf, 0x61, + 0x56, 0x3f, 0x4d, 0x0f, 0xdd, 0x0e, 0x61, 0x41, 0xa0, 0xe5, 0x31, 0x31, 0x81, 0x54, 0x6f, 0xf1, + 0x5e, 0x5e, 0x8d, 0x9f, 0xd9, 0xe7, 0xb4, 0x5e, 0x0d, 0xe6, 0x6d, 0xc2, 0x47, 0x4f, 0x69, 0xf0, + 0x61, 0x36, 0x33, 0x95, 0x40, 0x44, 0xa5, 0x26, 0x83, 0xa0, 0x31, 0xf3, 0xfa, 0xf4, 0x44, 0xd2, + 0x19, 0x75, 0x82, 0x78, 0x70, 0x6a, 0x3b, 0x81, 0x8a, 0xb6, 0xe1, 0xc2, 0x6e, 0x80, 0xb7, 0x7d, + 0xfc, 0xd2, 0xc5, 0xaf, 0x04, 0xbd, 0x49, 0x4a, 0x8f, 0x2e, 0x37, 0xa1, 0xd7, 0x63, 0xb5, 0x26, + 0x82, 0x49, 0xe4, 0xd2, 0x87, 0x30, 0xa1, 0xec, 0x37, 0xc3, 0xd3, 0xf2, 0x59, 0xf5, 0x69, 0xf9, + 0xb8, 0xfa, 0x84, 0xfc, 0xcf, 0x72, 0xcc, 0xb4, 0xa8, 0x6c, 0x60, 0x6e, 0xa7, 0xd8, 0x82, 0x71, + 0x59, 0x28, 0x1f, 0x32, 0x08, 0x59, 0x27, 0xf6, 0xad, 0x64, 0xc7, 0x47, 0x9c, 0x6e, 0xb5, 0xb7, + 0x11, 0x8d, 0x6f, 0xd6, 0xdc, 0xf7, 0x5b, 0xd1, 0x93, 0x47, 0xfe, 0x3c, 0xd3, 0x77, 0x5a, 0x2f, + 0x22, 0x7b, 0xeb, 0x4f, 0xc8, 0xf9, 0x50, 0x2b, 0x78, 0xd2, 0xa8, 0x79, 0x3d, 0xe3, 0x0f, 0xaf, + 0x14, 0x79, 0x07, 0xe4, 0xcb, 0x4f, 0x56, 0xac, 0x1f, 0x1c, 0x15, 0x81, 0x3a, 0xff, 0xce, 0x58, + 0x36, 0x7b, 0xb1, 0x67, 0xec, 0xc1, 0x7b, 0xc9, 0x37, 0x67, 0x94, 0x17, 0x47, 0x6f, 0xce, 0xd4, + 0x69, 0x8c, 0x5e, 0x9f, 0xed, 0xc2, 0x82, 0x8d, 0x0f, 0xbd, 0x97, 0xf8, 0x6c, 0xc9, 0xfe, 0x08, + 0x2e, 0xeb, 0x04, 0x77, 0x7b, 0x6d, 0x1a, 0xaa, 0x83, 0xdd, 0xba, 0x1a, 0x43, 0xee, 0x71, 0x04, + 0x16, 0x72, 0x8f, 0x05, 0x61, 0x22, 0x7f, 0xaa, 0xfc, 0x96, 0xd6, 0x59, 0x1e, 0x2c, 0xea, 0xc4, + 0x2b, 0xed, 0x36, 0xcd, 0x23, 0xd0, 0x72, 0x7b, 0x4e, 0x37, 0x44, 0x5b, 0x30, 0xa1, 0xfc, 0x8c, + 0x49, 0x4a, 0x4a, 0x0d, 0x5b, 0xfd, 0x5e, 0x54, 0xa0, 0x4a, 0x74, 0x0a, 0x9c, 0x85, 0xa1, 0x1c, + 0x9f, 0x1e, 0x32, 0x65, 0x6a, 0x9b, 0x55, 0x98, 0x52, 0x7e, 0x4a, 0xc5, 0x83, 0x86, 0xd3, 0x54, + 0x5a, 0xd0, 0x27, 0x4c, 0x47, 0xb1, 0x5a, 0x50, 0x32, 0x4d, 0x1a, 0x0d, 0x21, 0xf1, 0x1a, 0xad, + 0x46, 0xc1, 0x28, 0x06, 0xdf, 0x76, 0xcf, 0xa4, 0x05, 0xa2, 0xb0, 0xfe, 0xde, 0x30, 0x2c, 0xf0, + 0xc5, 0x38, 0xcb, 0x15, 0x47, 0x3f, 0x85, 0x09, 0x65, 0x8d, 0xf9, 0xa4, 0x5f, 0x15, 0x0e, 0x32, + 0x69, 0x7b, 0x81, 0x49, 0x74, 0x7d, 0x5a, 0xd0, 0x8c, 0x2d, 0x37, 0x91, 0xe8, 0xd4, 0x6d, 0xd3, + 0x81, 0x69, 0x7d, 0xa1, 0xb9, 0x50, 0x7b, 0xdd, 0xd8, 0x88, 0x0e, 0x2a, 0xe2, 0x37, 0xb5, 0x9b, + 0xc6, 0xe5, 0xa6, 0x79, 0xae, 0xf4, 0x4d, 0xf4, 0x15, 0x5c, 0x48, 0xac, 0x32, 0x57, 0xd2, 0x6e, + 0x1a, 0x1b, 0x4c, 0x40, 0xb3, 0x68, 0xe6, 0x3e, 0x2d, 0x4e, 0x6d, 0x36, 0xd9, 0x08, 0x6a, 0xc3, + 0xa4, 0xba, 0xf0, 0x5c, 0xea, 0xbe, 0x96, 0x31, 0x95, 0x0c, 0x90, 0x09, 0x45, 0x7c, 0x2e, 0xe9, + 0xda, 0xeb, 0xa9, 0x21, 0x35, 0xaa, 0xd5, 0x31, 0x38, 0xcf, 0x7e, 0x13, 0x16, 0xb0, 0xed, 0xe3, + 0x00, 0x77, 0x5b, 0x58, 0xf5, 0x75, 0xfa, 0xba, 0x2c, 0xe0, 0xdf, 0xe7, 0xa0, 0x68, 0xa2, 0x5b, + 0xc7, 0xdd, 0x36, 0xda, 0x86, 0x42, 0xbc, 0x21, 0xbe, 0xab, 0x2d, 0xf1, 0x55, 0x48, 0xef, 0x12, + 0x91, 0xc2, 0x13, 0xdd, 0xdc, 0x84, 0x0b, 0x4a, 0xd9, 0x29, 0x9d, 0xca, 0x92, 0xa8, 0xaa, 0x22, + 0xbd, 0x46, 0x7d, 0xe7, 0x56, 0xbc, 0x43, 0xc7, 0xed, 0x12, 0x01, 0x51, 0x09, 0x1b, 0x01, 0x51, + 0x29, 0x9f, 0x1b, 0xa6, 0x6c, 0xd2, 0x52, 0xe1, 0x60, 0x29, 0x41, 0xac, 0x4f, 0x28, 0x07, 0xe7, + 0x2a, 0x0a, 0x7b, 0xda, 0x23, 0x89, 0x5d, 0x85, 0x91, 0x9d, 0x8d, 0x7a, 0xad, 0xc2, 0x1f, 0x0a, + 0xb1, 0xa7, 0xa4, 0x9d, 0xa0, 0xd9, 0x72, 0x6c, 0x56, 0x61, 0x7d, 0x4c, 0xa3, 0xec, 0xf1, 0x18, + 0x6d, 0x12, 0xef, 0x06, 0x8c, 0xf2, 0x22, 0x8e, 0x49, 0xaf, 0xa6, 0x3b, 0x1c, 0x4a, 0xd4, 0x59, + 0xdb, 0x42, 0xbe, 0xee, 0x60, 0x27, 0x50, 0x3e, 0xcc, 0x1f, 0x10, 0x51, 0x9c, 0x95, 0xf1, 0xef, + 0xf2, 0xb4, 0x0c, 0x81, 0x4a, 0x8b, 0x99, 0xf2, 0x2d, 0x60, 0x6c, 0xf9, 0x97, 0xf5, 0x27, 0x79, + 0x98, 0x15, 0x01, 0x63, 0x34, 0xc3, 0xc2, 0xc0, 0x50, 0x97, 0x3f, 0xd0, 0x63, 0xf2, 0xd4, 0x64, + 0x4c, 0x9e, 0xaf, 0x91, 0x7c, 0x83, 0x47, 0xf3, 0x39, 0xe1, 0x33, 0xba, 0x27, 0x52, 0xfa, 0x1e, + 0xd6, 0xa4, 0x6f, 0xd3, 0x78, 0x34, 0xe9, 0x9b, 0x2e, 0x0b, 0x93, 0xbe, 0x85, 0xcc, 0xfd, 0x75, + 0x04, 0xa6, 0x0f, 0xc8, 0xd6, 0xd2, 0x9a, 0x3c, 0xe9, 0x0b, 0xab, 0x0d, 0xfa, 0xe8, 0x7e, 0x6b, + 0x7d, 0xa5, 0x46, 0xf6, 0x34, 0xef, 0xaa, 0x58, 0x81, 0xbb, 0xd4, 0x6b, 0x8e, 0xd3, 0x54, 0x37, + 0x26, 0x65, 0xb1, 0x3c, 0xd4, 0x84, 0x02, 0x62, 0x3d, 0x90, 0x4f, 0xf8, 0x0d, 0xd4, 0xd2, 0xe2, + 0xb6, 0x6e, 0xd2, 0xe0, 0x04, 0x8f, 0xe8, 0x7a, 0x9d, 0x45, 0x27, 0x7e, 0x3f, 0xc7, 0xa2, 0x1d, + 0xd4, 0xb7, 0x94, 0x10, 0xf7, 0xdd, 0xe7, 0x9e, 0x62, 0x57, 0x55, 0x9a, 0x79, 0xe2, 0x76, 0xdb, + 0xaa, 0x5d, 0x95, 0x26, 0x31, 0xe4, 0x0f, 0x15, 0x9b, 0x2f, 0xdc, 0x6e, 0xdb, 0x8e, 0x43, 0xa3, + 0x0f, 0x61, 0x4a, 0x29, 0x92, 0x1f, 0x69, 0x16, 0x21, 0x50, 0x45, 0x77, 0xdb, 0xb6, 0x0e, 0x69, + 0xfd, 0x76, 0x1e, 0x16, 0x32, 0x52, 0xb0, 0x50, 0x1d, 0x90, 0x9a, 0x03, 0xe4, 0x4c, 0xf1, 0xd8, + 0xca, 0xf4, 0x51, 0xa6, 0xc6, 0x23, 0x25, 0x20, 0xfa, 0x04, 0x26, 0xd4, 0x8c, 0x30, 0x79, 0x25, + 0x80, 0xb7, 0x39, 0x0b, 0x8c, 0x0a, 0x8e, 0x02, 0x80, 0xa8, 0x27, 0xfc, 0x9d, 0x72, 0x9d, 0x48, + 0x34, 0x4a, 0x3a, 0x99, 0x33, 0xc9, 0x6b, 0xa3, 0x34, 0x63, 0xfd, 0xed, 0x3c, 0x2c, 0x65, 0xcc, + 0x43, 0x1d, 0x87, 0xff, 0x3f, 0xa6, 0x22, 0x96, 0xe4, 0x67, 0xe8, 0x1b, 0x4a, 0xf2, 0x63, 0xfd, + 0x6e, 0x1e, 0x2e, 0xed, 0xf6, 0x02, 0xea, 0xdc, 0xba, 0xde, 0x7d, 0x89, 0xbb, 0xa1, 0xe7, 0xbf, + 0xa6, 0xce, 0x79, 0xe8, 0x5d, 0x18, 0x59, 0xc3, 0x9d, 0x8e, 0xc7, 0x3f, 0x6b, 0x57, 0x84, 0xa9, + 0x3b, 0x0e, 0x4d, 0x81, 0xd6, 0xce, 0xd9, 0x0c, 0x1a, 0x7d, 0x08, 0xe3, 0x6b, 0xd8, 0xf1, 0xc3, + 0x3d, 0xec, 0x08, 0xc9, 0xf5, 0x32, 0x47, 0x55, 0x50, 0x38, 0xc0, 0xda, 0x39, 0x3b, 0x82, 0x46, + 0xcb, 0x30, 0xbc, 0xed, 0x75, 0xf7, 0xe5, 0xeb, 0xb7, 0x94, 0x06, 0x09, 0xcc, 0xda, 0x39, 0x9b, + 0xc2, 0xa2, 0xa7, 0x30, 0x55, 0xd9, 0xc7, 0xdd, 0xf0, 0x29, 0x0e, 0x9d, 0xb6, 0x13, 0x3a, 0x5c, + 0xc2, 0xb9, 0x91, 0x86, 0xac, 0x01, 0xd3, 0xc4, 0xb9, 0x6a, 0x41, 0x75, 0x04, 0x86, 0x9e, 0x06, + 0xfb, 0xd6, 0xcf, 0x73, 0x50, 0x5c, 0xf1, 0x5e, 0x75, 0x8d, 0x13, 0xf3, 0xbe, 0x3e, 0x31, 0xc2, + 0x05, 0xdb, 0x00, 0x1f, 0x9b, 0x9a, 0x77, 0x60, 0x78, 0xdb, 0xed, 0xee, 0xc7, 0x3e, 0xea, 0x06, + 0x3c, 0x02, 0x45, 0x47, 0xe8, 0x76, 0xf7, 0x45, 0x97, 0xde, 0x86, 0xf9, 0x14, 0x48, 0x34, 0x2d, + 0xd9, 0xdb, 0x30, 0x65, 0x6b, 0x6f, 0xc1, 0x9c, 0x71, 0xd2, 0x12, 0x80, 0xff, 0x26, 0x67, 0x58, + 0x7d, 0xd6, 0xd7, 0x22, 0x8c, 0x8a, 0x00, 0xb5, 0xec, 0x3b, 0x20, 0x7e, 0x52, 0xe7, 0x50, 0x71, + 0x3a, 0x78, 0x68, 0x41, 0x79, 0x08, 0x1a, 0xca, 0x63, 0x7f, 0xb6, 0x87, 0x3f, 0xfa, 0x1a, 0x3b, + 0x55, 0xd2, 0x22, 0x6d, 0xae, 0x79, 0x41, 0xd8, 0x95, 0xbe, 0x0b, 0xb6, 0xfc, 0x6d, 0xfd, 0x97, + 0x3c, 0x0d, 0x53, 0x98, 0xb1, 0xcc, 0x64, 0xdc, 0x5b, 0x75, 0x3e, 0x8e, 0xfc, 0x56, 0x1d, 0x2d, + 0xc2, 0xf8, 0x56, 0x5d, 0x8b, 0xbf, 0x6b, 0x47, 0x05, 0xe8, 0x36, 0xcb, 0xe0, 0x56, 0xf1, 0x5b, + 0x07, 0x6e, 0x88, 0x5b, 0x61, 0xdf, 0xe7, 0xcc, 0xc9, 0x4e, 0x94, 0x23, 0x0b, 0x26, 0x1f, 0x75, + 0xdc, 0xbd, 0x96, 0x20, 0xc6, 0x3a, 0xa7, 0x95, 0xa1, 0x9b, 0x30, 0xcd, 0xb3, 0x44, 0xb2, 0xf0, + 0xc4, 0x3c, 0x05, 0x9a, 0x1d, 0x2b, 0x25, 0xed, 0xd6, 0xbc, 0x6e, 0xe8, 0xb8, 0x5d, 0xec, 0xdb, + 0xfd, 0x6e, 0xe8, 0xf2, 0x9c, 0xe1, 0xe3, 0x76, 0xa2, 0x1c, 0xbd, 0x03, 0x73, 0xb2, 0x6c, 0xcb, + 0x6f, 0x1d, 0xe0, 0x20, 0xf4, 0x69, 0x28, 0x77, 0xfa, 0x84, 0xdc, 0x36, 0x57, 0xd2, 0x16, 0x3a, + 0x5e, 0xbf, 0xbd, 0xda, 0x7d, 0xe9, 0xfa, 0x1e, 0xcb, 0x2f, 0x38, 0xc6, 0x5b, 0x88, 0x95, 0x5b, + 0xdb, 0xc6, 0x13, 0xf0, 0x35, 0x36, 0x87, 0x55, 0x03, 0x94, 0xe4, 0x00, 0xe8, 0xbb, 0x30, 0x5e, + 0xaf, 0xaf, 0x69, 0x37, 0x0a, 0x71, 0x23, 0xbf, 0x1d, 0x41, 0x58, 0xef, 0xc1, 0x25, 0x49, 0x84, + 0xc5, 0xd8, 0x54, 0x5c, 0xd0, 0x79, 0x8a, 0x19, 0xe9, 0xf9, 0x1e, 0x15, 0x58, 0x3f, 0x4a, 0xe0, + 0xd5, 0xfb, 0x87, 0x87, 0x8e, 0xff, 0x1a, 0x55, 0x74, 0xbc, 0xa1, 0x81, 0xbc, 0xae, 0x3a, 0xfc, + 0x8b, 0xa3, 0xf2, 0x39, 0x95, 0xb8, 0x0d, 0xb3, 0xda, 0x89, 0x14, 0x5d, 0x2a, 0xc5, 0x3f, 0x24, + 0xca, 0x51, 0x59, 0x02, 0xe0, 0xc1, 0x7b, 0x37, 0xbc, 0x7d, 0xee, 0x99, 0xac, 0x94, 0x58, 0x0f, + 0x61, 0x2e, 0x46, 0x93, 0x0b, 0x56, 0xdf, 0x05, 0x29, 0x0a, 0x52, 0xa2, 0x43, 0xd5, 0x0b, 0xbf, + 0x3a, 0x2a, 0x4f, 0x91, 0x6d, 0x71, 0x27, 0x0a, 0xa5, 0x25, 0xfe, 0xb2, 0x9e, 0xaa, 0x12, 0x7b, + 0xa5, 0xa3, 0xbd, 0x29, 0xb9, 0x0f, 0xe7, 0x59, 0x49, 0x2c, 0x60, 0x8d, 0x0a, 0xcd, 0x47, 0xcb, + 0x01, 0xad, 0x39, 0xea, 0x37, 0x46, 0x7f, 0x54, 0x22, 0x0f, 0x65, 0x6b, 0x97, 0x45, 0x4f, 0x8c, + 0x8a, 0x65, 0x50, 0x9c, 0xe1, 0x4a, 0xe4, 0x49, 0x2d, 0xcc, 0x92, 0x02, 0xae, 0xeb, 0xbd, 0xea, + 0xe0, 0xf6, 0x3e, 0xcd, 0x66, 0x53, 0x9d, 0xe4, 0x66, 0xc9, 0x61, 0x87, 0x10, 0xa0, 0x68, 0xd6, + 0x67, 0x30, 0x57, 0xeb, 0x60, 0xc7, 0x8f, 0xb7, 0x87, 0x6e, 0xc2, 0x28, 0x2d, 0xd3, 0x2f, 0xd8, + 0x1c, 0x52, 0x44, 0x2f, 0xd8, 0x78, 0x25, 0x11, 0x32, 0x59, 0x1c, 0x11, 0x75, 0x48, 0x91, 0x7c, + 0x37, 0x42, 0x7f, 0xc7, 0xbc, 0x8e, 0x0c, 0xa3, 0x67, 0x70, 0xd6, 0xa7, 0xf4, 0x5a, 0xdb, 0x94, + 0xc8, 0xe8, 0x64, 0x7e, 0x70, 0x7f, 0x0d, 0x16, 0x2b, 0xbd, 0x1e, 0xee, 0xb6, 0x23, 0x44, 0xa2, + 0x06, 0x9f, 0xcc, 0xbf, 0x18, 0x55, 0x60, 0x84, 0x42, 0x4b, 0xd3, 0x04, 0xef, 0xae, 0xa1, 0x3b, + 0x14, 0x8e, 0xcb, 0xdc, 0xb4, 0x01, 0x86, 0x69, 0xb5, 0x61, 0xbe, 0xde, 0xdf, 0x3b, 0x74, 0x59, + 0xce, 0x20, 0xea, 0xa3, 0x2f, 0xda, 0x5e, 0x17, 0x01, 0x6f, 0xd9, 0x64, 0xdc, 0x8a, 0x12, 0x14, + 0xd1, 0xbb, 0x42, 0xee, 0xb7, 0xff, 0xf2, 0xfe, 0x9d, 0x08, 0x95, 0x7e, 0x0e, 0x59, 0x2b, 0xb4, + 0x9a, 0x07, 0xc5, 0xb5, 0x2e, 0xc2, 0x05, 0x55, 0xcd, 0x63, 0x3b, 0x64, 0x0e, 0x2e, 0xea, 0xea, + 0x1b, 0x2b, 0xfe, 0x12, 0x66, 0x99, 0x5d, 0x92, 0x45, 0x20, 0x5a, 0x8e, 0x82, 0xed, 0xe4, 0x1b, + 0xcb, 0xb1, 0x1b, 0x46, 0xea, 0x24, 0x2a, 0x63, 0xcb, 0x35, 0x96, 0x99, 0x6b, 0xd2, 0xcb, 0x65, + 0xcd, 0x48, 0x90, 0x6f, 0x2c, 0x57, 0x47, 0xb9, 0xee, 0x41, 0xa8, 0xb3, 0xe5, 0xff, 0xb5, 0x50, + 0x5f, 0xa6, 0xde, 0xb0, 0x6b, 0xd8, 0xa1, 0x37, 0xd7, 0x66, 0x9f, 0xc2, 0x69, 0xc8, 0xbb, 0x6d, + 0xf1, 0xe9, 0x71, 0xdb, 0xd6, 0x1f, 0xe7, 0xe0, 0x16, 0x33, 0x5b, 0x98, 0xf1, 0xa8, 0x36, 0x91, + 0x82, 0x8c, 0x3e, 0x00, 0x96, 0xc4, 0x83, 0xdb, 0x1d, 0x2d, 0xde, 0xf3, 0x2c, 0x4a, 0x0c, 0x01, + 0x55, 0x60, 0x52, 0xbd, 0xe2, 0x8e, 0xbd, 0x59, 0x4e, 0xb1, 0x2b, 0xd8, 0x13, 0x87, 0xcf, 0x1d, + 0x79, 0xed, 0xfd, 0x02, 0x16, 0x56, 0xbf, 0x22, 0x1b, 0x82, 0x07, 0xc4, 0xe6, 0x77, 0x03, 0x91, + 0xcf, 0xda, 0xcc, 0x0e, 0xdf, 0x31, 0xfa, 0xb7, 0x21, 0x5e, 0x4c, 0xbe, 0x99, 0x9c, 0x84, 0x4f, + 0x55, 0x20, 0xf6, 0x9d, 0xd0, 0xca, 0xac, 0xff, 0x9c, 0x83, 0x45, 0x73, 0x6b, 0x9c, 0xb1, 0xac, + 0xc3, 0x85, 0x9a, 0xd3, 0xf5, 0xba, 0x6e, 0xcb, 0xe9, 0xd4, 0x5b, 0x07, 0xb8, 0xdd, 0xef, 0x88, + 0x9b, 0x7f, 0xc9, 0x65, 0x88, 0x0c, 0xc0, 0xd1, 0x05, 0x88, 0x9d, 0xc4, 0x42, 0xef, 0xc1, 0x25, + 0x7a, 0xef, 0xca, 0x78, 0x6f, 0x07, 0xfb, 0x92, 0x1e, 0xeb, 0x59, 0x4a, 0x2d, 0xba, 0x07, 0x17, + 0x99, 0xb0, 0xd2, 0xde, 0xed, 0xba, 0xa1, 0x44, 0x62, 0xa2, 0x82, 0xa9, 0xca, 0xfa, 0x18, 0x0a, + 0x95, 0x20, 0x70, 0x83, 0xd0, 0x89, 0xce, 0xdd, 0x5b, 0x30, 0xd3, 0xf2, 0xba, 0x2f, 0xb1, 0x1f, + 0x38, 0x5c, 0x47, 0xe0, 0xf3, 0x36, 0xad, 0x16, 0xaf, 0xb7, 0xad, 0x3f, 0xcc, 0x29, 0xd8, 0x4f, + 0x71, 0x40, 0xb3, 0x7e, 0x9d, 0x14, 0x1b, 0x21, 0xa0, 0xb9, 0x40, 0xf8, 0x90, 0xe8, 0xdf, 0xe8, + 0x11, 0x4c, 0x72, 0x6f, 0xa3, 0x26, 0x15, 0x36, 0x4e, 0xf3, 0xae, 0x6a, 0x82, 0x63, 0x92, 0x3a, + 0x22, 0x0f, 0xf4, 0x9c, 0xd7, 0x1d, 0xcf, 0x69, 0x73, 0x01, 0x48, 0xfc, 0xb4, 0xea, 0x34, 0x06, + 0x6b, 0xbc, 0xdb, 0xd1, 0x32, 0x3e, 0x80, 0xb1, 0x43, 0x5e, 0x26, 0x5f, 0x45, 0xf0, 0x77, 0xf4, + 0x31, 0x1c, 0x5b, 0x02, 0x5a, 0x16, 0x3d, 0x77, 0x12, 0xa0, 0xa6, 0x8c, 0x54, 0xf2, 0x95, 0xdf, + 0xcc, 0x51, 0x69, 0x2a, 0x9a, 0x82, 0xee, 0x73, 0x2f, 0x71, 0x9e, 0x66, 0x61, 0x24, 0x74, 0x43, + 0xb9, 0xd0, 0xec, 0xc7, 0x99, 0x4d, 0x8b, 0xb5, 0x47, 0xdf, 0xdb, 0xa4, 0xf5, 0x53, 0x7e, 0x21, + 0xa7, 0xd4, 0xa5, 0x8a, 0x4f, 0x43, 0x7c, 0x0c, 0xb6, 0x0e, 0x6d, 0x1d, 0x4a, 0x07, 0x26, 0x53, + 0x33, 0x62, 0x93, 0xc5, 0x87, 0x94, 0x7b, 0xd3, 0x21, 0xbd, 0x0b, 0xd7, 0x33, 0x9b, 0xe3, 0x83, + 0x8a, 0x4d, 0xf4, 0xed, 0xdb, 0x30, 0xbe, 0xd5, 0xc3, 0x3c, 0x59, 0xf4, 0x18, 0x0c, 0xaf, 0x6f, + 0xae, 0xef, 0xb0, 0x54, 0x75, 0xdb, 0xbb, 0x3b, 0x85, 0x1c, 0x02, 0x38, 0xbf, 0xb2, 0xba, 0xb1, + 0xba, 0xb3, 0x5a, 0xc8, 0xdf, 0x6e, 0xaa, 0x3e, 0x31, 0x68, 0x01, 0xe6, 0x57, 0x56, 0x1b, 0xeb, + 0xb5, 0xd5, 0xe6, 0xce, 0x0f, 0xb6, 0x57, 0x9b, 0x7a, 0xb0, 0xa3, 0x59, 0x28, 0xa8, 0x95, 0x3b, + 0x5b, 0x3b, 0xdb, 0x2c, 0xff, 0x9c, 0x5a, 0xfa, 0x6c, 0xb5, 0x5a, 0xd9, 0xdd, 0x59, 0xdb, 0x2c, + 0x0c, 0x59, 0xc3, 0x63, 0xf9, 0x42, 0xfe, 0xf6, 0x4f, 0x35, 0x87, 0x19, 0xb4, 0x08, 0x45, 0x0e, + 0xbe, 0x5b, 0xaf, 0x3c, 0x4a, 0x6f, 0x82, 0xd5, 0x3e, 0x7d, 0x58, 0x29, 0xe4, 0xd0, 0x15, 0xb8, + 0xac, 0x95, 0x6e, 0x57, 0xea, 0xf5, 0x67, 0x5b, 0xf6, 0xca, 0xc6, 0x6a, 0xbd, 0x5e, 0xc8, 0xdf, + 0x6e, 0x68, 0x01, 0x72, 0x48, 0x0b, 0x4f, 0x1f, 0x56, 0x9a, 0xf6, 0xea, 0xe7, 0xbb, 0xeb, 0xf6, + 0xea, 0x4a, 0xb2, 0x05, 0xad, 0xf6, 0x07, 0xab, 0xf5, 0x42, 0x0e, 0x5d, 0x84, 0x19, 0xad, 0x74, + 0x73, 0xab, 0x90, 0xbf, 0x7d, 0x93, 0xbf, 0xbd, 0x43, 0xd3, 0x00, 0x2b, 0xab, 0xf5, 0xda, 0xea, + 0xe6, 0xca, 0xfa, 0xe6, 0xa3, 0xc2, 0x39, 0x34, 0x05, 0xe3, 0x15, 0xf9, 0x33, 0xb7, 0xfc, 0x17, + 0x3f, 0xcf, 0xc1, 0x04, 0xe1, 0xe8, 0xc2, 0xf9, 0x21, 0x14, 0xb7, 0x7f, 0xc6, 0x65, 0x43, 0x6f, + 0x6b, 0xd1, 0xfd, 0xb3, 0x76, 0x52, 0xe9, 0xf6, 0x49, 0x40, 0xf9, 0x2e, 0xe8, 0x52, 0x9b, 0x9c, + 0x79, 0xff, 0xa3, 0xc8, 0x60, 0x99, 0x7d, 0x92, 0x4b, 0xb7, 0x06, 0x03, 0xca, 0xc8, 0x25, 0xb3, + 0x26, 0x66, 0x83, 0x12, 0x2c, 0x45, 0x90, 0xbe, 0x6e, 0x20, 0x9d, 0x60, 0x51, 0xeb, 0x44, 0x73, + 0xa0, 0x51, 0xf0, 0xe3, 0xcc, 0x37, 0x8d, 0x55, 0x95, 0x2e, 0x25, 0x0e, 0xd6, 0x2a, 0x91, 0x1f, + 0xd0, 0x36, 0x5c, 0xa9, 0xa7, 0x8c, 0x62, 0x87, 0xb2, 0x9e, 0xb4, 0x53, 0x9f, 0x4a, 0xf1, 0x4b, + 0x45, 0xad, 0xe1, 0x9f, 0x28, 0x9e, 0x1f, 0x20, 0x55, 0x87, 0xa1, 0x52, 0x5b, 0x29, 0xc3, 0x6a, + 0x41, 0x01, 0x6e, 0xe5, 0xee, 0xe5, 0x90, 0x4d, 0xed, 0xf5, 0x31, 0xbd, 0x49, 0x52, 0x36, 0xeb, + 0x61, 0xa5, 0x94, 0x6a, 0xa1, 0x6e, 0x3d, 0x86, 0x29, 0xa2, 0xce, 0xc8, 0x5a, 0xb4, 0x10, 0x87, + 0x57, 0x34, 0xa8, 0xd2, 0xa2, 0xb9, 0x52, 0x06, 0xf2, 0x9c, 0xa4, 0xfd, 0x23, 0xb3, 0xd9, 0xc2, + 0x01, 0x9a, 0x93, 0x69, 0xec, 0x59, 0x09, 0x73, 0x58, 0x28, 0x5d, 0x88, 0x15, 0x37, 0xee, 0xdf, + 0xcb, 0xa1, 0x3a, 0x7d, 0xf8, 0xa9, 0xe9, 0x45, 0x48, 0x78, 0x3a, 0x25, 0x15, 0x26, 0xd6, 0x9b, + 0x72, 0xb4, 0x5f, 0xcc, 0x0a, 0xd5, 0x26, 0xa0, 0xa4, 0xba, 0x81, 0xae, 0x46, 0x4b, 0x61, 0xd6, + 0x44, 0x52, 0x97, 0x77, 0x15, 0xa6, 0xf9, 0x41, 0xe3, 0x0a, 0x10, 0xca, 0x52, 0xa1, 0x52, 0xc9, + 0x3c, 0xa2, 0xf3, 0x24, 0x95, 0x28, 0x54, 0x52, 0xf6, 0x7d, 0x4c, 0xb3, 0x2a, 0x2d, 0x18, 0xeb, + 0xf8, 0xf8, 0x1e, 0xc2, 0xb4, 0xae, 0x8f, 0x21, 0xb1, 0x40, 0x46, 0x35, 0x2d, 0xb5, 0x43, 0x4d, + 0x98, 0x7f, 0xea, 0xb8, 0xd4, 0x44, 0xc1, 0xef, 0xdb, 0xc4, 0x6d, 0x19, 0x2a, 0x67, 0x5c, 0x9f, + 0xd5, 0x71, 0xb7, 0x5d, 0x1a, 0x14, 0xf2, 0x80, 0xee, 0xdc, 0xba, 0x50, 0x2b, 0xf4, 0xdb, 0x46, + 0x64, 0xe9, 0x79, 0x4c, 0x4c, 0x17, 0xc8, 0xa5, 0x34, 0x9f, 0x07, 0xf4, 0x94, 0xea, 0x35, 0x31, + 0x8a, 0xca, 0x9e, 0x38, 0x35, 0xb9, 0x22, 0x75, 0x92, 0x0e, 0xdd, 0xb8, 0xf3, 0x42, 0x80, 0x52, + 0x26, 0x2e, 0x95, 0xd8, 0xbd, 0x1c, 0xfa, 0x12, 0xac, 0x34, 0x72, 0xcf, 0xdc, 0xf0, 0x80, 0x3b, + 0xef, 0x2c, 0x18, 0x09, 0xf0, 0x83, 0x92, 0x41, 0xdd, 0x86, 0x59, 0x93, 0x9b, 0x85, 0x9c, 0xd0, + 0x0c, 0x1f, 0x8c, 0xd4, 0x5d, 0x60, 0x13, 0xed, 0xac, 0x9d, 0xbe, 0x48, 0x19, 0xb7, 0xfc, 0xa9, + 0x34, 0x3f, 0x81, 0x69, 0xb2, 0x4b, 0x9e, 0x60, 0xdc, 0xab, 0x74, 0xdc, 0x97, 0x38, 0x40, 0x22, + 0x1c, 0x88, 0x2c, 0x4a, 0xc3, 0xbd, 0x95, 0x43, 0xdf, 0x86, 0x89, 0x67, 0x4e, 0xd8, 0x3a, 0xe0, + 0xaf, 0xd7, 0xc5, 0xe3, 0x76, 0x5a, 0x56, 0x12, 0xbf, 0x68, 0xe5, 0xbd, 0x1c, 0xfa, 0x1e, 0x8c, + 0x3e, 0xc2, 0x21, 0xf5, 0x34, 0xbd, 0x26, 0x6f, 0x1c, 0x99, 0x77, 0xcf, 0x7a, 0x57, 0xfa, 0xe1, + 0x89, 0x0e, 0xc7, 0x8d, 0x5a, 0xe8, 0x2e, 0x00, 0x63, 0x08, 0x94, 0x42, 0xbc, 0xba, 0x94, 0xe8, + 0x36, 0x7a, 0x44, 0x04, 0xa3, 0x0e, 0x0e, 0xf1, 0x49, 0x9b, 0x4c, 0x9b, 0xa3, 0x0d, 0x98, 0x96, + 0xb1, 0x4f, 0x37, 0xe9, 0x53, 0x05, 0x2b, 0x46, 0x2c, 0x38, 0x05, 0xb5, 0x8f, 0xc8, 0xa9, 0x60, + 0x37, 0x80, 0x32, 0x54, 0x0a, 0x4a, 0x0b, 0x9e, 0x22, 0x27, 0x91, 0x81, 0x29, 0xb8, 0x6b, 0x5e, + 0x10, 0xea, 0xb8, 0xb2, 0xc4, 0x8c, 0x8b, 0xa1, 0xa4, 0xb6, 0xab, 0x87, 0x4d, 0x89, 0x78, 0x6e, + 0x5a, 0xb4, 0x97, 0xd2, 0xb5, 0x0c, 0x08, 0xc6, 0xee, 0x28, 0x27, 0x59, 0x81, 0x8b, 0xa2, 0x19, + 0x35, 0x41, 0xbf, 0xb8, 0xd3, 0x50, 0xca, 0x04, 0x61, 0x94, 0xac, 0x22, 0x5f, 0x3d, 0x2d, 0x5c, + 0x47, 0xf4, 0xd5, 0x33, 0xc4, 0x53, 0x89, 0xbe, 0x7a, 0xc6, 0x08, 0x1f, 0x4f, 0x98, 0x09, 0x4e, + 0x4b, 0xd3, 0xdd, 0x58, 0x46, 0xc2, 0xed, 0x58, 0xab, 0xe0, 0x07, 0xfb, 0x92, 0xa9, 0xae, 0xf1, + 0xe0, 0x5e, 0x0e, 0xad, 0xc2, 0x45, 0xf9, 0xb2, 0x24, 0xaa, 0x42, 0x29, 0x08, 0xa9, 0x9b, 0xe0, + 0x33, 0xb8, 0xc8, 0xb7, 0x94, 0x46, 0xa6, 0x20, 0xb9, 0x03, 0xbf, 0x86, 0x4c, 0x25, 0xf0, 0x18, + 0xe6, 0xea, 0xb1, 0x41, 0x31, 0xa7, 0x99, 0xcb, 0x3a, 0x09, 0x25, 0x23, 0x6a, 0x2a, 0xad, 0x27, + 0x80, 0x98, 0x95, 0x4b, 0x90, 0x7b, 0xe9, 0xe2, 0x57, 0xe8, 0x4a, 0x6c, 0x48, 0xa4, 0x90, 0x82, + 0x51, 0xf6, 0x92, 0x36, 0x45, 0x68, 0x87, 0x65, 0x74, 0x61, 0xd9, 0xd6, 0x9c, 0x9e, 0xb3, 0xe7, + 0x76, 0xdc, 0xd0, 0xc5, 0x64, 0x87, 0xa9, 0x08, 0x6a, 0x95, 0x58, 0xc6, 0xcb, 0xa9, 0x10, 0xe8, + 0x53, 0x98, 0x7a, 0x84, 0xc3, 0x28, 0xe9, 0x2b, 0x9a, 0x4f, 0xa4, 0x89, 0xe5, 0x4b, 0x27, 0xde, + 0x31, 0xea, 0x99, 0x66, 0xd7, 0xa1, 0xc0, 0xb8, 0xa3, 0x42, 0xe2, 0x4a, 0x82, 0x04, 0x07, 0x71, + 0x7c, 0xe7, 0x30, 0x48, 0x9d, 0xad, 0xbb, 0xec, 0x56, 0x0a, 0x89, 0x6d, 0xab, 0x8a, 0x5f, 0x17, + 0xb5, 0x32, 0x19, 0x77, 0x6a, 0xce, 0x98, 0xed, 0x14, 0x29, 0xe2, 0x74, 0x6a, 0x0a, 0xd3, 0x12, + 0x8a, 0xbf, 0x32, 0x6c, 0x3c, 0x40, 0x32, 0x01, 0x86, 0x81, 0xe8, 0x4d, 0xed, 0x8b, 0x7d, 0x3a, + 0xba, 0x9f, 0xc2, 0xb8, 0x4c, 0x9b, 0x19, 0xc9, 0xd6, 0xb1, 0xa4, 0xa3, 0xa5, 0x62, 0xb2, 0x82, + 0x8f, 0xf4, 0x13, 0x96, 0x24, 0x57, 0xc7, 0x8f, 0x67, 0x96, 0x4c, 0x9d, 0xd8, 0x0f, 0x61, 0x42, + 0xc9, 0x29, 0x29, 0x37, 0x72, 0x32, 0xcf, 0x64, 0x69, 0x4a, 0xe9, 0x7b, 0x63, 0xf9, 0x5e, 0x0e, + 0xdd, 0xa5, 0x9f, 0x16, 0xfa, 0xcc, 0x66, 0x2e, 0x42, 0x53, 0xb2, 0xc5, 0xc5, 0x50, 0xd0, 0xfb, + 0x34, 0x1a, 0x49, 0xad, 0xef, 0xfb, 0xb8, 0xcb, 0xf0, 0xd2, 0x24, 0x88, 0x18, 0xe2, 0xa7, 0x94, + 0x99, 0x28, 0x88, 0xcc, 0x0b, 0x65, 0x10, 0x36, 0x8b, 0x66, 0x7b, 0x2f, 0x87, 0x1e, 0xc0, 0x98, + 0x48, 0x41, 0x8d, 0x2e, 0xe9, 0x5d, 0x4d, 0x1f, 0xde, 0x03, 0x00, 0x36, 0xd9, 0xb4, 0xa7, 0x7a, + 0x75, 0xea, 0x74, 0x3e, 0x20, 0xdf, 0xcb, 0xf6, 0x29, 0x91, 0x3e, 0x15, 0xdf, 0x4c, 0x8a, 0x54, + 0xd4, 0x96, 0x50, 0x9d, 0xce, 0x34, 0x7c, 0x22, 0xf0, 0x6a, 0x99, 0xb1, 0x23, 0x81, 0xd7, 0x94, + 0x30, 0x3b, 0x95, 0xce, 0x3a, 0x14, 0x2a, 0x2d, 0xca, 0xc7, 0x65, 0x06, 0x3e, 0xa9, 0x6d, 0xc4, + 0x2b, 0x04, 0xad, 0xb9, 0x78, 0x42, 0xbf, 0x0d, 0xec, 0xd0, 0x00, 0x2d, 0xf3, 0x52, 0x26, 0x88, + 0x55, 0x99, 0x31, 0x32, 0xb4, 0x8b, 0xd9, 0x1a, 0xd1, 0x87, 0x3a, 0x5f, 0x8f, 0xcc, 0x47, 0x94, + 0x97, 0x29, 0xd9, 0x09, 0x2f, 0xc5, 0xf1, 0xa5, 0x1e, 0x26, 0x3c, 0x00, 0x25, 0x68, 0x05, 0x66, + 0x78, 0x38, 0x08, 0x39, 0x2d, 0x69, 0xd8, 0x69, 0xcd, 0xbf, 0x0f, 0xd3, 0xab, 0x84, 0xd7, 0xf7, + 0xdb, 0x2e, 0x0b, 0x4a, 0x85, 0xf4, 0x28, 0x43, 0xa9, 0x88, 0x6b, 0x22, 0xa9, 0xae, 0x92, 0xb6, + 0x4f, 0x9e, 0xd2, 0x64, 0x66, 0xc4, 0xd2, 0xac, 0x20, 0xab, 0x66, 0xf8, 0xe3, 0x7a, 0xf2, 0x7c, + 0x4a, 0xa2, 0x3c, 0x74, 0x43, 0xd3, 0xfd, 0xd2, 0xb2, 0xdd, 0x19, 0xa4, 0xbd, 0x2f, 0x94, 0xd4, + 0x21, 0x29, 0x34, 0xb3, 0x33, 0xe8, 0xa5, 0x8e, 0x5b, 0x86, 0x91, 0x31, 0x66, 0xba, 0x93, 0xc6, + 0xa0, 0xc1, 0xd9, 0xf0, 0x52, 0x5b, 0xa0, 0xba, 0xb5, 0x9e, 0x88, 0x0d, 0x2d, 0x65, 0xe7, 0x8b, + 0x53, 0x74, 0xeb, 0x94, 0x0c, 0x6e, 0x8f, 0xe9, 0x36, 0x8b, 0xf2, 0x8b, 0x20, 0x55, 0x53, 0x8d, + 0xa7, 0x57, 0x91, 0x22, 0x94, 0x39, 0x1b, 0xdb, 0x23, 0xca, 0x2e, 0x95, 0x5c, 0x25, 0xa9, 0x0c, + 0xef, 0x8a, 0x89, 0x4e, 0xa0, 0x7c, 0x0b, 0x67, 0x62, 0x79, 0xcd, 0xa4, 0x79, 0xc4, 0x9c, 0x59, + 0xad, 0xb4, 0x94, 0x56, 0xcd, 0x29, 0xd6, 0x45, 0x5a, 0x6c, 0x65, 0xa4, 0x4b, 0xba, 0xd1, 0x2d, + 0x31, 0xd8, 0x72, 0x6a, 0xbd, 0x9c, 0xbb, 0x42, 0x3c, 0x0f, 0x8d, 0x24, 0x9a, 0x92, 0xa0, 0x26, + 0x83, 0x25, 0xce, 0xaa, 0x5b, 0x63, 0xe0, 0x0c, 0xa6, 0xd1, 0xd9, 0x81, 0x39, 0x63, 0xda, 0x18, + 0x29, 0x46, 0x64, 0x25, 0x95, 0x49, 0xa5, 0x8a, 0xe1, 0x92, 0x39, 0x73, 0x14, 0xfa, 0x96, 0xae, + 0xfa, 0x9b, 0xf3, 0xe8, 0x94, 0x6e, 0x0c, 0x80, 0xe2, 0x13, 0xfa, 0x25, 0xfd, 0x6c, 0x26, 0xda, + 0xb8, 0xa6, 0x18, 0x03, 0x52, 0x1a, 0xb0, 0xb2, 0x40, 0xe4, 0x1e, 0x98, 0x35, 0x65, 0xae, 0x4b, + 0x9d, 0xe2, 0xeb, 0xe9, 0x34, 0xa3, 0x8d, 0xd5, 0x10, 0xc1, 0x5b, 0x52, 0x67, 0x26, 0x33, 0xc3, + 0x50, 0x86, 0x36, 0x59, 0x92, 0xfb, 0xe1, 0xe4, 0x5d, 0x4e, 0xb7, 0x0c, 0xcd, 0x9a, 0xf2, 0x5a, + 0xc5, 0x0d, 0x37, 0xa6, 0xb4, 0x45, 0x72, 0x1a, 0x32, 0x13, 0x63, 0x35, 0x98, 0x11, 0x47, 0xa7, + 0xae, 0x1a, 0x71, 0x8c, 0xa4, 0xaf, 0xa6, 0x03, 0x44, 0x3b, 0xc2, 0x90, 0xa0, 0x4f, 0xee, 0x88, + 0xf4, 0x54, 0x81, 0x72, 0x47, 0x64, 0xe5, 0xf7, 0xb3, 0xc5, 0xa1, 0x4b, 0x99, 0x96, 0x8c, 0x6c, + 0x4e, 0x19, 0x2a, 0x57, 0x31, 0x5a, 0xb8, 0x58, 0xb7, 0x4f, 0xbb, 0x6c, 0x5f, 0xc2, 0xe5, 0xd4, + 0xcc, 0x4d, 0xd2, 0xd4, 0x3f, 0x28, 0xb7, 0x53, 0x46, 0x4f, 0xa7, 0xb4, 0xa4, 0x4b, 0xd2, 0x8a, + 0x15, 0xcb, 0xef, 0x94, 0x60, 0xfd, 0x86, 0xe4, 0x4f, 0x8c, 0xf5, 0x2b, 0x09, 0x9c, 0x4e, 0xc2, + 0xfa, 0x4d, 0xf9, 0x9e, 0x24, 0x4f, 0x55, 0xfa, 0x25, 0x44, 0xba, 0x78, 0xc5, 0x69, 0x78, 0xea, + 0x49, 0xba, 0x96, 0x46, 0x67, 0x85, 0xaa, 0x1c, 0x22, 0x9f, 0x13, 0xba, 0xac, 0x4d, 0x93, 0xf6, + 0xb9, 0x2d, 0x69, 0x83, 0xd3, 0xbf, 0xb4, 0x35, 0x6a, 0x2e, 0x96, 0xf9, 0xa3, 0x52, 0x7b, 0xb1, + 0x90, 0xa4, 0xa1, 0x99, 0x8a, 0xe5, 0x2c, 0xb0, 0xde, 0x2c, 0xc6, 0x27, 0x47, 0xeb, 0x50, 0xfa, + 0x90, 0x90, 0x3a, 0x35, 0x03, 0xba, 0x94, 0x2e, 0xea, 0x5e, 0x64, 0xca, 0x03, 0x8b, 0xae, 0x28, + 0xde, 0x58, 0x5f, 0x92, 0x76, 0x2f, 0xa5, 0x34, 0xc3, 0xcc, 0xb1, 0x4d, 0xfd, 0x25, 0x0d, 0xa9, + 0xb0, 0x24, 0x0f, 0xcd, 0xcc, 0x94, 0x65, 0x10, 0xf3, 0x24, 0x57, 0x4e, 0xa5, 0x98, 0x99, 0x1b, + 0x2b, 0xb5, 0xa7, 0x3f, 0x51, 0xb8, 0x72, 0x22, 0xe1, 0x15, 0xba, 0x15, 0x97, 0xf1, 0xd2, 0x72, + 0x62, 0x65, 0x70, 0xfd, 0x59, 0x53, 0xae, 0x2c, 0xc5, 0x76, 0x9b, 0x9a, 0x48, 0xcb, 0x30, 0x0b, + 0x92, 0xbd, 0xa5, 0x50, 0xcb, 0xc8, 0x9c, 0x95, 0xda, 0xc3, 0x1f, 0x2a, 0xec, 0x2d, 0x96, 0xe1, + 0x4a, 0x1a, 0x15, 0x06, 0xa4, 0xc0, 0x4a, 0xa5, 0xbd, 0x49, 0x3d, 0x6c, 0x93, 0xe9, 0xa9, 0xa4, + 0xec, 0x92, 0x95, 0xbc, 0xca, 0x68, 0xda, 0x9d, 0x4b, 0x0e, 0x91, 0xd0, 0xbb, 0x14, 0x33, 0xcc, + 0x0e, 0xea, 0x98, 0xe4, 0xc3, 0x86, 0xb4, 0x56, 0x31, 0x3e, 0x9c, 0x9e, 0xf8, 0x2a, 0x43, 0x63, + 0x9a, 0xa9, 0xbb, 0xfb, 0x5d, 0x25, 0x53, 0x95, 0xd4, 0x97, 0x92, 0x89, 0xb2, 0x24, 0x8b, 0x31, + 0x25, 0xb6, 0xda, 0x8a, 0x5e, 0xde, 0xa8, 0x39, 0x87, 0x50, 0x29, 0x3d, 0xd5, 0x92, 0x64, 0x37, + 0xc6, 0x24, 0x45, 0x0a, 0x41, 0x35, 0xe1, 0x8f, 0x24, 0x68, 0xc8, 0x3d, 0x24, 0x09, 0x1a, 0x33, + 0x04, 0x31, 0x13, 0x8c, 0xed, 0x75, 0xb0, 0x6a, 0x82, 0x51, 0xd2, 0xf5, 0xc4, 0x6c, 0x21, 0xe8, + 0x63, 0x6a, 0x09, 0xc9, 0x36, 0x9f, 0xcc, 0xeb, 0x94, 0x54, 0x3f, 0x18, 0x7e, 0x19, 0x40, 0x1b, + 0xd4, 0x29, 0x0f, 0x36, 0x6e, 0x50, 0x24, 0xdd, 0xb8, 0xa1, 0x76, 0x34, 0xdd, 0x4e, 0x3a, 0xa9, + 0x86, 0x7b, 0x97, 0x73, 0x65, 0xc8, 0x49, 0x21, 0xe7, 0xca, 0x94, 0xe9, 0x81, 0xea, 0xc0, 0x3b, + 0x42, 0x93, 0x8f, 0xe8, 0x5d, 0xc9, 0x4c, 0xd5, 0x50, 0x5a, 0xca, 0xce, 0x6f, 0xc0, 0xef, 0xf1, + 0x0a, 0xf1, 0x88, 0xf4, 0xc8, 0x94, 0x69, 0x43, 0x09, 0xf4, 0x2f, 0xb5, 0xa1, 0xd4, 0x50, 0xf6, + 0xdb, 0xc2, 0x58, 0xad, 0xd3, 0x4d, 0xc9, 0xb7, 0xa0, 0x92, 0xce, 0x16, 0x50, 0xa2, 0xe0, 0xf4, + 0xaa, 0x6e, 0x9a, 0x08, 0x7e, 0xaf, 0x0a, 0x28, 0x86, 0x78, 0xf6, 0xae, 0xf4, 0xd5, 0x30, 0xe6, + 0x7c, 0x8a, 0xf9, 0x6a, 0x64, 0x84, 0x2d, 0x1a, 0x78, 0x53, 0x8a, 0x7e, 0x2c, 0x72, 0x3b, 0x27, + 0x73, 0x9b, 0xdc, 0x88, 0x99, 0x5d, 0xcd, 0x81, 0x6e, 0x4a, 0x59, 0xa9, 0x53, 0xd0, 0x53, 0x7a, + 0xc5, 0xbe, 0xb5, 0xbe, 0x52, 0xe3, 0x3e, 0xaa, 0x9e, 0x9f, 0xb8, 0xb6, 0x7a, 0xe6, 0x86, 0x07, + 0x2c, 0xd9, 0x8f, 0xc2, 0x7d, 0x18, 0x88, 0x86, 0xd8, 0x78, 0x80, 0xea, 0x54, 0x72, 0xd7, 0x4a, + 0x0d, 0x37, 0x57, 0x06, 0x82, 0x25, 0x33, 0x41, 0x9a, 0x9e, 0x90, 0x0a, 0x06, 0xe4, 0xe0, 0xe9, + 0xdd, 0x4c, 0xe9, 0x43, 0x96, 0x7c, 0xc1, 0xb6, 0x8d, 0x99, 0xcc, 0x49, 0xd9, 0xf7, 0x23, 0x98, + 0x63, 0x13, 0x1e, 0x7b, 0x16, 0xa7, 0xf5, 0x47, 0x29, 0x2f, 0xa5, 0x94, 0xa3, 0x4d, 0xea, 0xb9, + 0x11, 0x2f, 0x55, 0xb4, 0x18, 0xf3, 0xbb, 0xbb, 0x54, 0x7a, 0x6c, 0x29, 0x89, 0xd8, 0xfe, 0x46, + 0x4b, 0xa9, 0x21, 0x36, 0x96, 0xf9, 0x52, 0x6a, 0xa5, 0xa7, 0x5b, 0xca, 0x18, 0x41, 0x7d, 0x29, + 0xf5, 0x6e, 0xa6, 0xf4, 0x61, 0xf0, 0x52, 0x9a, 0xc9, 0x9c, 0x7a, 0x29, 0x63, 0x6f, 0x12, 0xb5, + 0xfe, 0x98, 0x96, 0x32, 0x0e, 0xcf, 0x96, 0x32, 0x5e, 0x1a, 0x53, 0x48, 0x33, 0x96, 0x32, 0x8e, + 0xf9, 0x39, 0xa5, 0xc7, 0x1e, 0x3d, 0x9e, 0x6a, 0x31, 0x45, 0x38, 0x9e, 0x18, 0x6a, 0xe3, 0x01, + 0x7a, 0x46, 0xad, 0x21, 0xb1, 0xf2, 0x93, 0x2d, 0xe8, 0x62, 0x1a, 0x51, 0xba, 0xa4, 0xeb, 0x42, + 0xce, 0x8a, 0x77, 0x37, 0xb5, 0x2f, 0x59, 0xeb, 0xc1, 0x96, 0x35, 0x4e, 0xea, 0xb4, 0x0b, 0xfb, + 0x54, 0x30, 0xcd, 0xc4, 0xbb, 0xd1, 0x58, 0xaf, 0xd4, 0xc5, 0x4d, 0xad, 0xe1, 0x4e, 0x6b, 0xc9, + 0x72, 0xc5, 0x4e, 0x94, 0xf6, 0x40, 0x75, 0x20, 0xd5, 0xc4, 0x43, 0x54, 0x95, 0x6a, 0xda, 0x2b, + 0x55, 0x49, 0x35, 0x89, 0xbd, 0x42, 0x8f, 0xed, 0x8e, 0x4f, 0xd4, 0xa4, 0x76, 0x52, 0x87, 0xd2, + 0xe7, 0x4f, 0xdc, 0x68, 0xea, 0xe0, 0x8d, 0x65, 0xb4, 0x4e, 0x37, 0xa0, 0x5e, 0x9c, 0xa5, 0x64, + 0x9a, 0xc9, 0xd0, 0xfd, 0xb1, 0x26, 0xfd, 0xfb, 0xf5, 0x3e, 0xa5, 0xb5, 0x9d, 0xde, 0x29, 0xa9, + 0x81, 0x9f, 0x70, 0x74, 0x69, 0xbb, 0x83, 0x49, 0x81, 0x4c, 0xe1, 0x1d, 0x34, 0x33, 0xf1, 0x17, + 0x07, 0xe8, 0xfb, 0x30, 0x2e, 0x90, 0x07, 0x4f, 0x48, 0x1c, 0x9b, 0x4e, 0xc8, 0xa7, 0x30, 0xa1, + 0x3c, 0x78, 0x40, 0x69, 0x2d, 0x65, 0x88, 0x94, 0x13, 0xca, 0x73, 0x8c, 0xd3, 0xe3, 0xaf, 0xc0, + 0x94, 0xf6, 0x9c, 0x43, 0x0a, 0x42, 0xa6, 0x47, 0x1e, 0x59, 0x54, 0xb4, 0x67, 0x1b, 0x92, 0x8a, + 0xe9, 0x31, 0x47, 0xb6, 0x50, 0xa6, 0x3c, 0x4d, 0x57, 0x84, 0xb2, 0xe4, 0x1b, 0x79, 0x45, 0x28, + 0x33, 0xbd, 0x66, 0xff, 0x1e, 0x4c, 0xf0, 0xed, 0x91, 0xb9, 0xb2, 0xe9, 0xda, 0xf2, 0x9c, 0xe2, + 0x33, 0xd8, 0x6f, 0xbb, 0x61, 0xcd, 0xeb, 0x3e, 0x77, 0xf7, 0x07, 0x2e, 0x72, 0x12, 0xa5, 0xb1, + 0x8c, 0x1a, 0x34, 0xd1, 0x80, 0x48, 0xff, 0x80, 0xc3, 0x57, 0x9e, 0xff, 0xc2, 0xed, 0xee, 0x0f, + 0x20, 0x79, 0x55, 0x27, 0x19, 0xc7, 0x63, 0x74, 0xeb, 0xe9, 0x74, 0x07, 0xe2, 0x67, 0x68, 0xcb, + 0x8b, 0xf4, 0xde, 0xfe, 0xb4, 0x3d, 0x4e, 0xbf, 0x39, 0xb8, 0x1c, 0x79, 0xdb, 0xd9, 0xb8, 0xe5, + 0xf9, 0xed, 0xc1, 0xc4, 0xca, 0xba, 0x6f, 0x5b, 0x0c, 0xad, 0xb1, 0x4c, 0xa8, 0xd6, 0x53, 0xa9, + 0x0e, 0xc2, 0xce, 0xf8, 0x5a, 0x2c, 0xd0, 0xb1, 0x9f, 0xb2, 0xb7, 0xe9, 0x27, 0x83, 0x70, 0x60, + 0xc2, 0xe9, 0xb7, 0x7d, 0xfc, 0x1c, 0xfb, 0xd4, 0x65, 0x72, 0x90, 0xb3, 0xa0, 0x0e, 0xde, 0x58, + 0x26, 0x54, 0xea, 0x09, 0x2a, 0x69, 0xd0, 0x59, 0x82, 0x12, 0x1d, 0xda, 0x09, 0x7b, 0x93, 0x46, + 0xe6, 0x03, 0x6a, 0xb3, 0xdc, 0x5d, 0x1f, 0x30, 0x23, 0xc2, 0x89, 0x57, 0x00, 0x36, 0xee, 0x13, + 0xcc, 0xba, 0x82, 0x99, 0x84, 0x48, 0x6d, 0xf3, 0xfb, 0xc2, 0x38, 0x39, 0xb0, 0xd9, 0x74, 0x6f, + 0x84, 0x71, 0x99, 0x04, 0x09, 0x29, 0x6a, 0xbd, 0x96, 0xe2, 0xa7, 0x34, 0xa5, 0xba, 0x0c, 0x06, + 0xa8, 0xc2, 0xa4, 0x68, 0x35, 0x19, 0x90, 0x72, 0x2f, 0x6a, 0xcc, 0x12, 0x14, 0x27, 0xc1, 0xcc, + 0x12, 0x1b, 0x5e, 0xeb, 0x85, 0x6a, 0x96, 0x50, 0xb2, 0xcb, 0x94, 0xf4, 0xdc, 0x2f, 0xfc, 0x83, + 0x44, 0x13, 0xc0, 0xa8, 0x0e, 0x1a, 0x6a, 0x7e, 0x19, 0xd5, 0x2c, 0xa1, 0x67, 0xc2, 0x91, 0x66, + 0x09, 0xda, 0xa0, 0x4e, 0x79, 0xb0, 0x59, 0x82, 0x22, 0xe9, 0x66, 0x09, 0xb5, 0xa3, 0xe9, 0xec, + 0x02, 0x25, 0x53, 0xe1, 0x48, 0x81, 0x37, 0x35, 0x4b, 0x4e, 0x86, 0xef, 0xc5, 0x45, 0x43, 0xf6, + 0x2e, 0xa9, 0xee, 0xa7, 0x67, 0xf6, 0x2a, 0xe9, 0x8e, 0x04, 0xf7, 0x72, 0x68, 0x13, 0x2e, 0x3d, + 0xc2, 0x21, 0x67, 0x60, 0x36, 0x0e, 0x42, 0xdf, 0x6d, 0x85, 0x99, 0x96, 0x7a, 0x21, 0xdf, 0x1a, + 0x70, 0x1a, 0xef, 0x10, 0x7a, 0x75, 0x33, 0xbd, 0x4c, 0xbc, 0x0c, 0x8b, 0x0e, 0x37, 0xff, 0x9d, + 0xa6, 0x8b, 0xe9, 0x5b, 0x7c, 0x94, 0xdd, 0x7a, 0xa7, 0xa3, 0x16, 0xa2, 0xe8, 0xad, 0x5c, 0x62, + 0xbf, 0x03, 0xe7, 0x19, 0x52, 0xea, 0x37, 0x72, 0x52, 0xc5, 0x41, 0xf7, 0x85, 0x8b, 0x16, 0x41, + 0xd1, 0xaa, 0x52, 0xfb, 0x75, 0x1f, 0xc6, 0x99, 0x2d, 0xff, 0xe4, 0x28, 0x1f, 0x0b, 0x47, 0xae, + 0xac, 0x8e, 0xa5, 0xfb, 0x36, 0x4e, 0xa9, 0x17, 0xde, 0xa7, 0x9f, 0xc8, 0xef, 0xd1, 0xfb, 0x14, + 0x61, 0xb6, 0x4c, 0xc7, 0x9f, 0x8b, 0xc5, 0x3b, 0xe5, 0x53, 0xca, 0x18, 0xa4, 0x4c, 0x83, 0x97, + 0xd6, 0xfd, 0x0b, 0x09, 0x6c, 0xf4, 0xb1, 0x78, 0x3e, 0x20, 0x91, 0x93, 0x40, 0x19, 0x73, 0x36, + 0xcd, 0xa6, 0xf9, 0x4d, 0x90, 0x25, 0x83, 0x1d, 0xd8, 0xed, 0x93, 0xdc, 0xfb, 0x0c, 0x9e, 0xba, + 0x34, 0x2a, 0x5b, 0x54, 0xf0, 0x4a, 0x44, 0xe2, 0x4d, 0x27, 0xb4, 0x94, 0x1e, 0xbc, 0x97, 0x2e, + 0xc6, 0x63, 0xaa, 0x58, 0x25, 0x53, 0x1a, 0xa6, 0x0d, 0x2f, 0x23, 0x18, 0x70, 0xa4, 0x49, 0x26, + 0xc9, 0x65, 0xa0, 0x65, 0x29, 0xa6, 0x6c, 0xc1, 0xce, 0x86, 0xdc, 0xba, 0x70, 0x40, 0x3a, 0xf9, + 0x60, 0x33, 0x84, 0x20, 0xc3, 0x4d, 0xd3, 0xc0, 0xb5, 0x48, 0x23, 0xf7, 0x63, 0x2a, 0xff, 0x99, + 0xf3, 0x98, 0xa5, 0x12, 0x53, 0x9e, 0x91, 0x0d, 0xc8, 0x80, 0xf6, 0x82, 0xbe, 0xcb, 0x30, 0xc7, + 0x2a, 0xbe, 0x39, 0x80, 0x8a, 0x98, 0x89, 0xb7, 0x06, 0xc2, 0xc9, 0x7b, 0x8b, 0x05, 0xf6, 0x85, + 0x35, 0xb7, 0x37, 0x20, 0xf6, 0xb2, 0xe1, 0x2a, 0x29, 0x25, 0x49, 0x98, 0x20, 0xa8, 0x7b, 0x77, + 0x65, 0x8e, 0x21, 0x6d, 0xfa, 0x3f, 0x87, 0x72, 0x74, 0x23, 0x7b, 0xba, 0x45, 0x48, 0x97, 0xe8, + 0x51, 0x32, 0x75, 0x1a, 0xca, 0x8a, 0x62, 0x5b, 0xba, 0x96, 0x36, 0xc3, 0x81, 0x72, 0xd5, 0xcf, + 0x7d, 0x49, 0x62, 0x51, 0xbb, 0xd3, 0xe2, 0x7f, 0x67, 0xd8, 0x8e, 0xf8, 0x43, 0x95, 0x33, 0x21, + 0x94, 0x5c, 0xed, 0xd3, 0x13, 0x92, 0x17, 0xa6, 0x31, 0x42, 0x56, 0xc6, 0xf2, 0x9e, 0xc6, 0x1f, + 0x24, 0xbe, 0x14, 0xa7, 0x5d, 0x50, 0x27, 0x7a, 0x9c, 0x91, 0xcc, 0xef, 0x26, 0x65, 0xb9, 0xd4, + 0x5c, 0x73, 0x72, 0x75, 0x33, 0x92, 0xc3, 0xd5, 0xc8, 0x31, 0x65, 0x4d, 0x68, 0xc9, 0xa5, 0x6a, + 0xf6, 0x46, 0x64, 0x75, 0x30, 0x64, 0x9d, 0x2a, 0x81, 0xa8, 0xb4, 0x37, 0x50, 0x1d, 0x4a, 0x6c, + 0x8b, 0x98, 0xa2, 0x68, 0x48, 0x8f, 0x7a, 0x53, 0x65, 0x86, 0x76, 0x51, 0x87, 0x12, 0xdb, 0x2e, + 0x67, 0x49, 0xb4, 0x49, 0x13, 0x89, 0x1a, 0x29, 0xde, 0x50, 0x9e, 0x25, 0xa6, 0xc7, 0x26, 0x29, + 0x65, 0x37, 0x8c, 0x7e, 0x04, 0x73, 0xc6, 0xe0, 0x24, 0xf2, 0x4e, 0x3b, 0x2b, 0x74, 0xc9, 0x20, + 0xe2, 0x2f, 0xa0, 0x98, 0x96, 0x09, 0x2a, 0xf2, 0xf0, 0xcf, 0x4e, 0xcf, 0x25, 0x79, 0xea, 0xc0, + 0x94, 0x52, 0x9b, 0x30, 0x6b, 0xca, 0xae, 0x24, 0x0f, 0x47, 0x46, 0xea, 0x25, 0xe3, 0x33, 0x82, + 0x6d, 0x98, 0x33, 0x66, 0x38, 0x92, 0x33, 0x93, 0x95, 0xff, 0xc8, 0x48, 0xf1, 0x0b, 0x98, 0x4f, + 0x49, 0xe7, 0x13, 0x5d, 0xbc, 0x65, 0xa6, 0xfb, 0xc9, 0x70, 0x00, 0x28, 0xa5, 0x67, 0x8a, 0x91, + 0x7e, 0x1f, 0x03, 0x93, 0xc9, 0x94, 0x8c, 0xe9, 0xb3, 0xd0, 0x0e, 0xdd, 0x84, 0xa6, 0xd4, 0x31, + 0xea, 0x26, 0xcc, 0x48, 0x2d, 0x93, 0xf2, 0xfc, 0x63, 0x3e, 0x25, 0x5b, 0x4c, 0x06, 0xd5, 0x13, + 0xf4, 0x76, 0x53, 0xf0, 0x7f, 0x3d, 0x7d, 0x48, 0xcc, 0x97, 0xd0, 0x98, 0x5b, 0xc4, 0xd8, 0x4f, + 0xe5, 0xb9, 0x71, 0xa7, 0x93, 0x21, 0x06, 0x21, 0xf5, 0xbd, 0x31, 0x81, 0x6c, 0xdc, 0x27, 0x4a, + 0x84, 0x8a, 0x9b, 0xc5, 0x51, 0x13, 0xc8, 0x54, 0xf0, 0xfc, 0x08, 0x26, 0xeb, 0x6a, 0xe3, 0x86, + 0x46, 0x52, 0x37, 0x85, 0xf4, 0xb2, 0x1f, 0xdc, 0xf7, 0x81, 0xb7, 0x62, 0x95, 0x4e, 0xe7, 0x44, + 0xa3, 0x48, 0xb5, 0xc9, 0x6a, 0xe1, 0xd5, 0x25, 0xa7, 0x36, 0x65, 0x0d, 0x90, 0x36, 0x59, 0x73, + 0x44, 0xf6, 0x55, 0x3a, 0xa5, 0x51, 0x70, 0xda, 0x0c, 0x1d, 0x5c, 0x6e, 0x22, 0x43, 0x0c, 0xdc, + 0x27, 0xea, 0x43, 0x70, 0x16, 0xd2, 0x36, 0xc3, 0x88, 0x18, 0x7f, 0x00, 0x1e, 0x8b, 0x81, 0xdb, + 0x80, 0xa2, 0x08, 0x2e, 0xc9, 0xc2, 0x3b, 0x46, 0xe1, 0xec, 0x22, 0xd7, 0xa8, 0xf4, 0xe8, 0x93, + 0x19, 0xf3, 0x56, 0x88, 0x07, 0x6e, 0x92, 0x96, 0xa3, 0x94, 0x88, 0x4e, 0x19, 0xbb, 0x01, 0xa2, + 0xf0, 0x4c, 0xd2, 0x3e, 0x93, 0x88, 0xd8, 0x54, 0xba, 0x6c, 0xa8, 0x91, 0x92, 0xd5, 0xa4, 0x1a, + 0xcc, 0x49, 0x7a, 0x8e, 0x18, 0x22, 0x3c, 0x95, 0x16, 0x8c, 0x75, 0x9c, 0x50, 0x08, 0x0b, 0x19, + 0x89, 0x54, 0xa5, 0xb4, 0x3a, 0x38, 0xe1, 0xab, 0x0c, 0x4c, 0x71, 0x92, 0xbc, 0xac, 0x58, 0x06, + 0x8b, 0x4d, 0x42, 0xa9, 0x81, 0x29, 0x32, 0x73, 0x94, 0x96, 0x06, 0xe5, 0x70, 0x45, 0xcf, 0x60, + 0x31, 0xe6, 0x8a, 0xac, 0xb7, 0x34, 0x88, 0x40, 0xea, 0x0a, 0x3e, 0x83, 0x45, 0xfe, 0x36, 0xfa, + 0x8c, 0x09, 0xef, 0xc1, 0x62, 0x56, 0x76, 0x56, 0x74, 0xdb, 0xec, 0x6e, 0x6c, 0x9c, 0x9e, 0x74, + 0xd1, 0xf5, 0x6a, 0xd2, 0xed, 0x38, 0xb6, 0xee, 0xa7, 0x65, 0x2b, 0x4f, 0x61, 0x5a, 0xcf, 0xcc, + 0x8a, 0x54, 0xd6, 0x91, 0xc8, 0x13, 0x5b, 0xba, 0x92, 0x52, 0xcb, 0xf7, 0xc7, 0xa7, 0x94, 0xd1, + 0xcb, 0x0a, 0x35, 0x5e, 0x42, 0x3c, 0xf3, 0x69, 0xc9, 0x90, 0x44, 0x06, 0x7d, 0x0f, 0x66, 0xa2, + 0xf7, 0x6d, 0x8c, 0x84, 0x01, 0x2c, 0xc3, 0x5e, 0x34, 0x13, 0xbd, 0x74, 0x3b, 0x3d, 0xfa, 0x9a, + 0xe0, 0xf6, 0x11, 0xfa, 0x95, 0x84, 0x07, 0xb6, 0x36, 0x86, 0x93, 0x30, 0x7d, 0x65, 0x6e, 0x4f, + 0xbb, 0x3a, 0x2d, 0x7a, 0xdc, 0xcc, 0x51, 0xca, 0xd4, 0xe3, 0x96, 0x19, 0x49, 0x4d, 0x4a, 0x98, + 0x29, 0x74, 0x3a, 0x70, 0x6d, 0x60, 0x5c, 0x35, 0x74, 0x57, 0x8b, 0x2c, 0x30, 0x38, 0x02, 0x5b, + 0xd6, 0x33, 0x05, 0x53, 0x78, 0x32, 0xc9, 0xe3, 0x33, 0x22, 0xa5, 0xc9, 0x67, 0x0a, 0x99, 0xf1, + 0xcd, 0xbe, 0xa0, 0x91, 0xa4, 0xf9, 0x47, 0x86, 0xc6, 0xca, 0xc0, 0x5d, 0xa7, 0xdb, 0xc2, 0x03, + 0xae, 0x2b, 0xae, 0xe9, 0x97, 0x74, 0x09, 0x44, 0x2a, 0xe7, 0x2f, 0x71, 0xed, 0x24, 0x8d, 0xf8, + 0x60, 0x22, 0x69, 0xf3, 0x52, 0x5d, 0xf9, 0xc5, 0x9f, 0x2f, 0xe5, 0x7e, 0xf1, 0xcb, 0xa5, 0xdc, + 0x7f, 0xfa, 0xe5, 0x52, 0xee, 0x7f, 0xfc, 0x72, 0x29, 0xf7, 0xc3, 0xe5, 0x93, 0x05, 0x7f, 0x6d, + 0x75, 0x5c, 0xdc, 0x0d, 0xef, 0x32, 0x72, 0xe7, 0xe9, 0x7f, 0x0f, 0xfe, 0x5f, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x97, 0x7d, 0x9e, 0xb2, 0xaf, 0xd4, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. @@ -15113,6 +15558,16 @@ const _ = grpc.SupportPackageIsVersion4 // // For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream. type AuthServiceClient interface { + // CreateNewConversation creates a new conversation and returns the UUID of it. + CreateAssistantConversation(ctx context.Context, in *CreateAssistantConversationRequest, opts ...grpc.CallOption) (*CreateAssistantConversationResponse, error) + // GetAssistantConversations returns all conversations for the connected user. + GetAssistantConversations(ctx context.Context, in *GetAssistantConversationsRequest, opts ...grpc.CallOption) (*GetAssistantConversationsResponse, error) + // GetAssistantMessages returns all messages associated with the given conversation ID. + GetAssistantMessages(ctx context.Context, in *AssistantRequest, opts ...grpc.CallOption) (*GetAssistantMessagesResponse, error) + //InsertAssistantMessage adds a message to given conversation. + InsertAssistantMessage(ctx context.Context, in *AssistantMessage, opts ...grpc.CallOption) (*emptypb.Empty, error) + // SetAssistantConversationTitle sets the given conversation title. + SetAssistantConversationTitle(ctx context.Context, in *ConversationInfo, opts ...grpc.CallOption) (*emptypb.Empty, error) // InventoryControlStream is the per-instance stream used to advertise teleport instance // presence/version/etc to the auth server. InventoryControlStream(ctx context.Context, opts ...grpc.CallOption) (AuthService_InventoryControlStreamClient, error) @@ -15689,6 +16144,51 @@ func NewAuthServiceClient(cc *grpc.ClientConn) AuthServiceClient { return &authServiceClient{cc} } +func (c *authServiceClient) CreateAssistantConversation(ctx context.Context, in *CreateAssistantConversationRequest, opts ...grpc.CallOption) (*CreateAssistantConversationResponse, error) { + out := new(CreateAssistantConversationResponse) + err := c.cc.Invoke(ctx, "/proto.AuthService/CreateAssistantConversation", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *authServiceClient) GetAssistantConversations(ctx context.Context, in *GetAssistantConversationsRequest, opts ...grpc.CallOption) (*GetAssistantConversationsResponse, error) { + out := new(GetAssistantConversationsResponse) + err := c.cc.Invoke(ctx, "/proto.AuthService/GetAssistantConversations", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *authServiceClient) GetAssistantMessages(ctx context.Context, in *AssistantRequest, opts ...grpc.CallOption) (*GetAssistantMessagesResponse, error) { + out := new(GetAssistantMessagesResponse) + err := c.cc.Invoke(ctx, "/proto.AuthService/GetAssistantMessages", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *authServiceClient) InsertAssistantMessage(ctx context.Context, in *AssistantMessage, opts ...grpc.CallOption) (*emptypb.Empty, error) { + out := new(emptypb.Empty) + err := c.cc.Invoke(ctx, "/proto.AuthService/InsertAssistantMessage", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *authServiceClient) SetAssistantConversationTitle(ctx context.Context, in *ConversationInfo, opts ...grpc.CallOption) (*emptypb.Empty, error) { + out := new(emptypb.Empty) + err := c.cc.Invoke(ctx, "/proto.AuthService/SetAssistantConversationTitle", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + func (c *authServiceClient) InventoryControlStream(ctx context.Context, opts ...grpc.CallOption) (AuthService_InventoryControlStreamClient, error) { stream, err := c.cc.NewStream(ctx, &_AuthService_serviceDesc.Streams[0], "/proto.AuthService/InventoryControlStream", opts...) if err != nil { @@ -18188,6 +18688,16 @@ func (c *authServiceClient) UpdateClusterMaintenanceConfig(ctx context.Context, // AuthServiceServer is the server API for AuthService service. type AuthServiceServer interface { + // CreateNewConversation creates a new conversation and returns the UUID of it. + CreateAssistantConversation(context.Context, *CreateAssistantConversationRequest) (*CreateAssistantConversationResponse, error) + // GetAssistantConversations returns all conversations for the connected user. + GetAssistantConversations(context.Context, *GetAssistantConversationsRequest) (*GetAssistantConversationsResponse, error) + // GetAssistantMessages returns all messages associated with the given conversation ID. + GetAssistantMessages(context.Context, *AssistantRequest) (*GetAssistantMessagesResponse, error) + //InsertAssistantMessage adds a message to given conversation. + InsertAssistantMessage(context.Context, *AssistantMessage) (*emptypb.Empty, error) + // SetAssistantConversationTitle sets the given conversation title. + SetAssistantConversationTitle(context.Context, *ConversationInfo) (*emptypb.Empty, error) // InventoryControlStream is the per-instance stream used to advertise teleport instance // presence/version/etc to the auth server. InventoryControlStream(AuthService_InventoryControlStreamServer) error @@ -18760,6 +19270,21 @@ type AuthServiceServer interface { type UnimplementedAuthServiceServer struct { } +func (*UnimplementedAuthServiceServer) CreateAssistantConversation(ctx context.Context, req *CreateAssistantConversationRequest) (*CreateAssistantConversationResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method CreateAssistantConversation not implemented") +} +func (*UnimplementedAuthServiceServer) GetAssistantConversations(ctx context.Context, req *GetAssistantConversationsRequest) (*GetAssistantConversationsResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetAssistantConversations not implemented") +} +func (*UnimplementedAuthServiceServer) GetAssistantMessages(ctx context.Context, req *AssistantRequest) (*GetAssistantMessagesResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetAssistantMessages not implemented") +} +func (*UnimplementedAuthServiceServer) InsertAssistantMessage(ctx context.Context, req *AssistantMessage) (*emptypb.Empty, error) { + return nil, status.Errorf(codes.Unimplemented, "method InsertAssistantMessage not implemented") +} +func (*UnimplementedAuthServiceServer) SetAssistantConversationTitle(ctx context.Context, req *ConversationInfo) (*emptypb.Empty, error) { + return nil, status.Errorf(codes.Unimplemented, "method SetAssistantConversationTitle not implemented") +} func (*UnimplementedAuthServiceServer) InventoryControlStream(srv AuthService_InventoryControlStreamServer) error { return status.Errorf(codes.Unimplemented, "method InventoryControlStream not implemented") } @@ -19476,6 +20001,96 @@ func RegisterAuthServiceServer(s *grpc.Server, srv AuthServiceServer) { s.RegisterService(&_AuthService_serviceDesc, srv) } +func _AuthService_CreateAssistantConversation_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(CreateAssistantConversationRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(AuthServiceServer).CreateAssistantConversation(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/proto.AuthService/CreateAssistantConversation", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(AuthServiceServer).CreateAssistantConversation(ctx, req.(*CreateAssistantConversationRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _AuthService_GetAssistantConversations_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetAssistantConversationsRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(AuthServiceServer).GetAssistantConversations(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/proto.AuthService/GetAssistantConversations", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(AuthServiceServer).GetAssistantConversations(ctx, req.(*GetAssistantConversationsRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _AuthService_GetAssistantMessages_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(AssistantRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(AuthServiceServer).GetAssistantMessages(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/proto.AuthService/GetAssistantMessages", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(AuthServiceServer).GetAssistantMessages(ctx, req.(*AssistantRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _AuthService_InsertAssistantMessage_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(AssistantMessage) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(AuthServiceServer).InsertAssistantMessage(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/proto.AuthService/InsertAssistantMessage", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(AuthServiceServer).InsertAssistantMessage(ctx, req.(*AssistantMessage)) + } + return interceptor(ctx, in, info, handler) +} + +func _AuthService_SetAssistantConversationTitle_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ConversationInfo) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(AuthServiceServer).SetAssistantConversationTitle(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/proto.AuthService/SetAssistantConversationTitle", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(AuthServiceServer).SetAssistantConversationTitle(ctx, req.(*ConversationInfo)) + } + return interceptor(ctx, in, info, handler) +} + func _AuthService_InventoryControlStream_Handler(srv interface{}, stream grpc.ServerStream) error { return srv.(AuthServiceServer).InventoryControlStream(&authServiceInventoryControlStreamServer{stream}) } @@ -23829,6 +24444,26 @@ var _AuthService_serviceDesc = grpc.ServiceDesc{ ServiceName: "proto.AuthService", HandlerType: (*AuthServiceServer)(nil), Methods: []grpc.MethodDesc{ + { + MethodName: "CreateAssistantConversation", + Handler: _AuthService_CreateAssistantConversation_Handler, + }, + { + MethodName: "GetAssistantConversations", + Handler: _AuthService_GetAssistantConversations_Handler, + }, + { + MethodName: "GetAssistantMessages", + Handler: _AuthService_GetAssistantMessages_Handler, + }, + { + MethodName: "InsertAssistantMessage", + Handler: _AuthService_InsertAssistantMessage_Handler, + }, + { + MethodName: "SetAssistantConversationTitle", + Handler: _AuthService_SetAssistantConversationTitle_Handler, + }, { MethodName: "GetInventoryStatus", Handler: _AuthService_GetInventoryStatus_Handler, @@ -35921,6 +36556,323 @@ func (m *ExportUpgradeWindowsResponse) MarshalToSizedBuffer(dAtA []byte) (int, e return len(dAtA) - i, nil } +func (m *AssistantRequest) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *AssistantRequest) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *AssistantRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.XXX_unrecognized != nil { + i -= len(m.XXX_unrecognized) + copy(dAtA[i:], m.XXX_unrecognized) + } + if len(m.ConversationId) > 0 { + i -= len(m.ConversationId) + copy(dAtA[i:], m.ConversationId) + i = encodeVarintAuthservice(dAtA, i, uint64(len(m.ConversationId))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *AssistantMessage) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *AssistantMessage) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *AssistantMessage) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.XXX_unrecognized != nil { + i -= len(m.XXX_unrecognized) + copy(dAtA[i:], m.XXX_unrecognized) + } + if len(m.Payload) > 0 { + i -= len(m.Payload) + copy(dAtA[i:], m.Payload) + i = encodeVarintAuthservice(dAtA, i, uint64(len(m.Payload))) + i-- + dAtA[i] = 0x22 + } + n152, err152 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.CreatedTime, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.CreatedTime):]) + if err152 != nil { + return 0, err152 + } + i -= n152 + i = encodeVarintAuthservice(dAtA, i, uint64(n152)) + i-- + dAtA[i] = 0x1a + if len(m.Type) > 0 { + i -= len(m.Type) + copy(dAtA[i:], m.Type) + i = encodeVarintAuthservice(dAtA, i, uint64(len(m.Type))) + i-- + dAtA[i] = 0x12 + } + if len(m.ConversationId) > 0 { + i -= len(m.ConversationId) + copy(dAtA[i:], m.ConversationId) + i = encodeVarintAuthservice(dAtA, i, uint64(len(m.ConversationId))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *GetAssistantMessagesResponse) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *GetAssistantMessagesResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *GetAssistantMessagesResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.XXX_unrecognized != nil { + i -= len(m.XXX_unrecognized) + copy(dAtA[i:], m.XXX_unrecognized) + } + if len(m.Messages) > 0 { + for iNdEx := len(m.Messages) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.Messages[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintAuthservice(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa + } + } + return len(dAtA) - i, nil +} + +func (m *GetAssistantConversationsRequest) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *GetAssistantConversationsRequest) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *GetAssistantConversationsRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.XXX_unrecognized != nil { + i -= len(m.XXX_unrecognized) + copy(dAtA[i:], m.XXX_unrecognized) + } + return len(dAtA) - i, nil +} + +func (m *ConversationInfo) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *ConversationInfo) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *ConversationInfo) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.XXX_unrecognized != nil { + i -= len(m.XXX_unrecognized) + copy(dAtA[i:], m.XXX_unrecognized) + } + n153, err153 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.CreatedTime, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.CreatedTime):]) + if err153 != nil { + return 0, err153 + } + i -= n153 + i = encodeVarintAuthservice(dAtA, i, uint64(n153)) + i-- + dAtA[i] = 0x1a + if len(m.Title) > 0 { + i -= len(m.Title) + copy(dAtA[i:], m.Title) + i = encodeVarintAuthservice(dAtA, i, uint64(len(m.Title))) + i-- + dAtA[i] = 0x12 + } + if len(m.Id) > 0 { + i -= len(m.Id) + copy(dAtA[i:], m.Id) + i = encodeVarintAuthservice(dAtA, i, uint64(len(m.Id))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *GetAssistantConversationsResponse) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *GetAssistantConversationsResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *GetAssistantConversationsResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.XXX_unrecognized != nil { + i -= len(m.XXX_unrecognized) + copy(dAtA[i:], m.XXX_unrecognized) + } + if len(m.Conversations) > 0 { + for iNdEx := len(m.Conversations) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.Conversations[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintAuthservice(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa + } + } + return len(dAtA) - i, nil +} + +func (m *CreateAssistantConversationRequest) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *CreateAssistantConversationRequest) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *CreateAssistantConversationRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.XXX_unrecognized != nil { + i -= len(m.XXX_unrecognized) + copy(dAtA[i:], m.XXX_unrecognized) + } + n154, err154 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.CreatedTime, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.CreatedTime):]) + if err154 != nil { + return 0, err154 + } + i -= n154 + i = encodeVarintAuthservice(dAtA, i, uint64(n154)) + i-- + dAtA[i] = 0xa + return len(dAtA) - i, nil +} + +func (m *CreateAssistantConversationResponse) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *CreateAssistantConversationResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *CreateAssistantConversationResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.XXX_unrecognized != nil { + i -= len(m.XXX_unrecognized) + copy(dAtA[i:], m.XXX_unrecognized) + } + if len(m.Id) > 0 { + i -= len(m.Id) + copy(dAtA[i:], m.Id) + i = encodeVarintAuthservice(dAtA, i, uint64(len(m.Id))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + func encodeVarintAuthservice(dAtA []byte, offset int, v uint64) int { offset -= sovAuthservice(v) base := offset @@ -41236,6 +42188,148 @@ func (m *ExportUpgradeWindowsResponse) Size() (n int) { return n } +func (m *AssistantRequest) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.ConversationId) + if l > 0 { + n += 1 + l + sovAuthservice(uint64(l)) + } + if m.XXX_unrecognized != nil { + n += len(m.XXX_unrecognized) + } + return n +} + +func (m *AssistantMessage) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.ConversationId) + if l > 0 { + n += 1 + l + sovAuthservice(uint64(l)) + } + l = len(m.Type) + if l > 0 { + n += 1 + l + sovAuthservice(uint64(l)) + } + l = github_com_gogo_protobuf_types.SizeOfStdTime(m.CreatedTime) + n += 1 + l + sovAuthservice(uint64(l)) + l = len(m.Payload) + if l > 0 { + n += 1 + l + sovAuthservice(uint64(l)) + } + if m.XXX_unrecognized != nil { + n += len(m.XXX_unrecognized) + } + return n +} + +func (m *GetAssistantMessagesResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if len(m.Messages) > 0 { + for _, e := range m.Messages { + l = e.Size() + n += 1 + l + sovAuthservice(uint64(l)) + } + } + if m.XXX_unrecognized != nil { + n += len(m.XXX_unrecognized) + } + return n +} + +func (m *GetAssistantConversationsRequest) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.XXX_unrecognized != nil { + n += len(m.XXX_unrecognized) + } + return n +} + +func (m *ConversationInfo) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Id) + if l > 0 { + n += 1 + l + sovAuthservice(uint64(l)) + } + l = len(m.Title) + if l > 0 { + n += 1 + l + sovAuthservice(uint64(l)) + } + l = github_com_gogo_protobuf_types.SizeOfStdTime(m.CreatedTime) + n += 1 + l + sovAuthservice(uint64(l)) + if m.XXX_unrecognized != nil { + n += len(m.XXX_unrecognized) + } + return n +} + +func (m *GetAssistantConversationsResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if len(m.Conversations) > 0 { + for _, e := range m.Conversations { + l = e.Size() + n += 1 + l + sovAuthservice(uint64(l)) + } + } + if m.XXX_unrecognized != nil { + n += len(m.XXX_unrecognized) + } + return n +} + +func (m *CreateAssistantConversationRequest) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = github_com_gogo_protobuf_types.SizeOfStdTime(m.CreatedTime) + n += 1 + l + sovAuthservice(uint64(l)) + if m.XXX_unrecognized != nil { + n += len(m.XXX_unrecognized) + } + return n +} + +func (m *CreateAssistantConversationResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Id) + if l > 0 { + n += 1 + l + sovAuthservice(uint64(l)) + } + if m.XXX_unrecognized != nil { + n += len(m.XXX_unrecognized) + } + return n +} + func sovAuthservice(x uint64) (n int) { return (math_bits.Len64(x|1) + 6) / 7 } @@ -65365,7 +66459,727 @@ func (m *DownstreamInventoryHello) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.ServerID = string(dAtA[iNdEx:postIndex]) + m.ServerID = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipAuthservice(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthAuthservice + } + 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 *InventoryHeartbeat) 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 ErrIntOverflowAuthservice + } + 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: InventoryHeartbeat: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: InventoryHeartbeat: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field SSHServer", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowAuthservice + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthAuthservice + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthAuthservice + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.SSHServer == nil { + m.SSHServer = &types.ServerV2{} + } + if err := m.SSHServer.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipAuthservice(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthAuthservice + } + 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 *InventoryStatusRequest) 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 ErrIntOverflowAuthservice + } + 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: InventoryStatusRequest: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: InventoryStatusRequest: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Connected", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowAuthservice + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + m.Connected = bool(v != 0) + default: + iNdEx = preIndex + skippy, err := skipAuthservice(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthAuthservice + } + 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 *InventoryStatusSummary) 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 ErrIntOverflowAuthservice + } + 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: InventoryStatusSummary: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: InventoryStatusSummary: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Connected", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowAuthservice + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthAuthservice + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthAuthservice + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Connected = append(m.Connected, UpstreamInventoryHello{}) + if err := m.Connected[len(m.Connected)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipAuthservice(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthAuthservice + } + 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 *InventoryPingRequest) 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 ErrIntOverflowAuthservice + } + 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: InventoryPingRequest: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: InventoryPingRequest: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ServerID", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowAuthservice + } + 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 ErrInvalidLengthAuthservice + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthAuthservice + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.ServerID = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field ControlLog", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowAuthservice + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + m.ControlLog = bool(v != 0) + default: + iNdEx = preIndex + skippy, err := skipAuthservice(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthAuthservice + } + 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 *InventoryPingResponse) 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 ErrIntOverflowAuthservice + } + 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: InventoryPingResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: InventoryPingResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Duration", wireType) + } + m.Duration = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowAuthservice + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.Duration |= time.Duration(b&0x7F) << shift + if b < 0x80 { + break + } + } + default: + iNdEx = preIndex + skippy, err := skipAuthservice(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthAuthservice + } + 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 *GetClusterAlertsResponse) 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 ErrIntOverflowAuthservice + } + 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: GetClusterAlertsResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: GetClusterAlertsResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Alerts", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowAuthservice + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthAuthservice + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthAuthservice + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Alerts = append(m.Alerts, types.ClusterAlert{}) + if err := m.Alerts[len(m.Alerts)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipAuthservice(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthAuthservice + } + 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 *GetAlertAcksRequest) 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 ErrIntOverflowAuthservice + } + 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: GetAlertAcksRequest: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: GetAlertAcksRequest: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + default: + iNdEx = preIndex + skippy, err := skipAuthservice(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthAuthservice + } + 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 *GetAlertAcksResponse) 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 ErrIntOverflowAuthservice + } + 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: GetAlertAcksResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: GetAlertAcksResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Acks", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowAuthservice + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthAuthservice + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthAuthservice + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Acks = append(m.Acks, types.AlertAcknowledgement{}) + if err := m.Acks[len(m.Acks)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipAuthservice(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthAuthservice + } + 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 *ClearAlertAcksRequest) 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 ErrIntOverflowAuthservice + } + 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: ClearAlertAcksRequest: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ClearAlertAcksRequest: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field AlertID", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowAuthservice + } + 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 ErrInvalidLengthAuthservice + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthAuthservice + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.AlertID = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex default: iNdEx = preIndex @@ -65389,7 +67203,7 @@ func (m *DownstreamInventoryHello) Unmarshal(dAtA []byte) error { } return nil } -func (m *InventoryHeartbeat) Unmarshal(dAtA []byte) error { +func (m *UpsertClusterAlertRequest) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -65412,15 +67226,15 @@ func (m *InventoryHeartbeat) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: InventoryHeartbeat: wiretype end group for non-group") + return fmt.Errorf("proto: UpsertClusterAlertRequest: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: InventoryHeartbeat: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: UpsertClusterAlertRequest: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field SSHServer", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Alert", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -65447,10 +67261,7 @@ func (m *InventoryHeartbeat) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if m.SSHServer == nil { - m.SSHServer = &types.ServerV2{} - } - if err := m.SSHServer.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if err := m.Alert.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex @@ -65476,78 +67287,7 @@ func (m *InventoryHeartbeat) Unmarshal(dAtA []byte) error { } return nil } -func (m *InventoryStatusRequest) 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 ErrIntOverflowAuthservice - } - 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: InventoryStatusRequest: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: InventoryStatusRequest: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field Connected", wireType) - } - var v int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowAuthservice - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - v |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - m.Connected = bool(v != 0) - default: - iNdEx = preIndex - skippy, err := skipAuthservice(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthAuthservice - } - 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 *InventoryStatusSummary) Unmarshal(dAtA []byte) error { +func (m *GetConnectionDiagnosticRequest) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -65570,17 +67310,17 @@ func (m *InventoryStatusSummary) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: InventoryStatusSummary: wiretype end group for non-group") + return fmt.Errorf("proto: GetConnectionDiagnosticRequest: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: InventoryStatusSummary: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: GetConnectionDiagnosticRequest: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Connected", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType) } - var msglen int + var stringLen uint64 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowAuthservice @@ -65590,25 +67330,23 @@ func (m *InventoryStatusSummary) 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 ErrInvalidLengthAuthservice } - postIndex := iNdEx + msglen + postIndex := iNdEx + intStringLen if postIndex < 0 { return ErrInvalidLengthAuthservice } if postIndex > l { return io.ErrUnexpectedEOF } - m.Connected = append(m.Connected, UpstreamInventoryHello{}) - if err := m.Connected[len(m.Connected)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } + m.Name = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex default: iNdEx = preIndex @@ -65632,7 +67370,7 @@ func (m *InventoryStatusSummary) Unmarshal(dAtA []byte) error { } return nil } -func (m *InventoryPingRequest) Unmarshal(dAtA []byte) error { +func (m *AppendDiagnosticTraceRequest) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -65655,15 +67393,15 @@ func (m *InventoryPingRequest) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: InventoryPingRequest: wiretype end group for non-group") + return fmt.Errorf("proto: AppendDiagnosticTraceRequest: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: InventoryPingRequest: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: AppendDiagnosticTraceRequest: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field ServerID", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -65691,13 +67429,13 @@ func (m *InventoryPingRequest) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.ServerID = string(dAtA[iNdEx:postIndex]) + m.Name = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex case 2: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field ControlLog", wireType) + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Trace", wireType) } - var v int + var msglen int for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowAuthservice @@ -65707,82 +67445,28 @@ func (m *InventoryPingRequest) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - v |= int(b&0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } } - m.ControlLog = bool(v != 0) - default: - iNdEx = preIndex - skippy, err := skipAuthservice(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { + if msglen < 0 { return ErrInvalidLengthAuthservice } - 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 *InventoryPingResponse) 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 ErrIntOverflowAuthservice + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthAuthservice } - if iNdEx >= l { + if postIndex > 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: InventoryPingResponse: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: InventoryPingResponse: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field Duration", wireType) + if m.Trace == nil { + m.Trace = &types.ConnectionDiagnosticTrace{} } - m.Duration = 0 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowAuthservice - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - m.Duration |= time.Duration(b&0x7F) << shift - if b < 0x80 { - break - } + if err := m.Trace.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err } + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipAuthservice(dAtA[iNdEx:]) @@ -65805,7 +67489,7 @@ func (m *InventoryPingResponse) Unmarshal(dAtA []byte) error { } return nil } -func (m *GetClusterAlertsResponse) Unmarshal(dAtA []byte) error { +func (m *SubmitUsageEventRequest) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -65828,15 +67512,15 @@ func (m *GetClusterAlertsResponse) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: GetClusterAlertsResponse: wiretype end group for non-group") + return fmt.Errorf("proto: SubmitUsageEventRequest: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: GetClusterAlertsResponse: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: SubmitUsageEventRequest: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Alerts", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Event", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -65863,8 +67547,10 @@ func (m *GetClusterAlertsResponse) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.Alerts = append(m.Alerts, types.ClusterAlert{}) - if err := m.Alerts[len(m.Alerts)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if m.Event == nil { + m.Event = &v11.UsageEventOneOf{} + } + if err := m.Event.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex @@ -65890,7 +67576,7 @@ func (m *GetClusterAlertsResponse) Unmarshal(dAtA []byte) error { } return nil } -func (m *GetAlertAcksRequest) Unmarshal(dAtA []byte) error { +func (m *GetLicenseRequest) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -65913,10 +67599,10 @@ func (m *GetAlertAcksRequest) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: GetAlertAcksRequest: wiretype end group for non-group") + return fmt.Errorf("proto: GetLicenseRequest: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: GetAlertAcksRequest: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: GetLicenseRequest: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { default: @@ -65941,7 +67627,7 @@ func (m *GetAlertAcksRequest) Unmarshal(dAtA []byte) error { } return nil } -func (m *GetAlertAcksResponse) Unmarshal(dAtA []byte) error { +func (m *ListReleasesRequest) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -65964,46 +67650,12 @@ func (m *GetAlertAcksResponse) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: GetAlertAcksResponse: wiretype end group for non-group") + return fmt.Errorf("proto: ListReleasesRequest: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: GetAlertAcksResponse: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: ListReleasesRequest: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Acks", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowAuthservice - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthAuthservice - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthAuthservice - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Acks = append(m.Acks, types.AlertAcknowledgement{}) - if err := m.Acks[len(m.Acks)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipAuthservice(dAtA[iNdEx:]) @@ -66026,7 +67678,7 @@ func (m *GetAlertAcksResponse) Unmarshal(dAtA []byte) error { } return nil } -func (m *ClearAlertAcksRequest) Unmarshal(dAtA []byte) error { +func (m *CreateTokenV2Request) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -66049,17 +67701,17 @@ func (m *ClearAlertAcksRequest) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: ClearAlertAcksRequest: wiretype end group for non-group") + return fmt.Errorf("proto: CreateTokenV2Request: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: ClearAlertAcksRequest: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: CreateTokenV2Request: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field AlertID", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field V2", wireType) } - var stringLen uint64 + var msglen int for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowAuthservice @@ -66069,23 +67721,26 @@ func (m *ClearAlertAcksRequest) 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 ErrInvalidLengthAuthservice } - postIndex := iNdEx + intStringLen + postIndex := iNdEx + msglen if postIndex < 0 { return ErrInvalidLengthAuthservice } if postIndex > l { return io.ErrUnexpectedEOF } - m.AlertID = string(dAtA[iNdEx:postIndex]) + v := &types.ProvisionTokenV2{} + if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + m.Token = &CreateTokenV2Request_V2{v} iNdEx = postIndex default: iNdEx = preIndex @@ -66109,7 +67764,7 @@ func (m *ClearAlertAcksRequest) Unmarshal(dAtA []byte) error { } return nil } -func (m *UpsertClusterAlertRequest) Unmarshal(dAtA []byte) error { +func (m *UpsertTokenV2Request) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -66132,15 +67787,15 @@ func (m *UpsertClusterAlertRequest) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: UpsertClusterAlertRequest: wiretype end group for non-group") + return fmt.Errorf("proto: UpsertTokenV2Request: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: UpsertClusterAlertRequest: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: UpsertTokenV2Request: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Alert", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field V2", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -66167,9 +67822,11 @@ func (m *UpsertClusterAlertRequest) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if err := m.Alert.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + v := &types.ProvisionTokenV2{} + if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } + m.Token = &UpsertTokenV2Request_V2{v} iNdEx = postIndex default: iNdEx = preIndex @@ -66193,7 +67850,7 @@ func (m *UpsertClusterAlertRequest) Unmarshal(dAtA []byte) error { } return nil } -func (m *GetConnectionDiagnosticRequest) Unmarshal(dAtA []byte) error { +func (m *GetHeadlessAuthenticationRequest) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -66216,15 +67873,15 @@ func (m *GetConnectionDiagnosticRequest) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: GetConnectionDiagnosticRequest: wiretype end group for non-group") + return fmt.Errorf("proto: GetHeadlessAuthenticationRequest: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: GetConnectionDiagnosticRequest: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: GetHeadlessAuthenticationRequest: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Id", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -66252,7 +67909,7 @@ func (m *GetConnectionDiagnosticRequest) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.Name = string(dAtA[iNdEx:postIndex]) + m.Id = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex default: iNdEx = preIndex @@ -66276,7 +67933,7 @@ func (m *GetConnectionDiagnosticRequest) Unmarshal(dAtA []byte) error { } return nil } -func (m *AppendDiagnosticTraceRequest) Unmarshal(dAtA []byte) error { +func (m *UpdateHeadlessAuthenticationStateRequest) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -66299,15 +67956,15 @@ func (m *AppendDiagnosticTraceRequest) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: AppendDiagnosticTraceRequest: wiretype end group for non-group") + return fmt.Errorf("proto: UpdateHeadlessAuthenticationStateRequest: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: AppendDiagnosticTraceRequest: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: UpdateHeadlessAuthenticationStateRequest: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Id", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -66335,11 +67992,30 @@ func (m *AppendDiagnosticTraceRequest) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.Name = string(dAtA[iNdEx:postIndex]) + m.Id = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex case 2: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field State", wireType) + } + m.State = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowAuthservice + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.State |= types.HeadlessAuthenticationState(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 3: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Trace", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field MfaResponse", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -66366,10 +68042,10 @@ func (m *AppendDiagnosticTraceRequest) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if m.Trace == nil { - m.Trace = &types.ConnectionDiagnosticTrace{} + if m.MfaResponse == nil { + m.MfaResponse = &MFAAuthenticateResponse{} } - if err := m.Trace.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if err := m.MfaResponse.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex @@ -66395,7 +68071,7 @@ func (m *AppendDiagnosticTraceRequest) Unmarshal(dAtA []byte) error { } return nil } -func (m *SubmitUsageEventRequest) Unmarshal(dAtA []byte) error { +func (m *ExportUpgradeWindowsRequest) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -66418,17 +68094,17 @@ func (m *SubmitUsageEventRequest) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: SubmitUsageEventRequest: wiretype end group for non-group") + return fmt.Errorf("proto: ExportUpgradeWindowsRequest: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: SubmitUsageEventRequest: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: ExportUpgradeWindowsRequest: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Event", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field TeleportVersion", wireType) } - var msglen int + var stringLen uint64 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowAuthservice @@ -66438,27 +68114,55 @@ func (m *SubmitUsageEventRequest) 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 ErrInvalidLengthAuthservice } - postIndex := iNdEx + msglen + postIndex := iNdEx + intStringLen if postIndex < 0 { return ErrInvalidLengthAuthservice } if postIndex > l { return io.ErrUnexpectedEOF } - if m.Event == nil { - m.Event = &v11.UsageEventOneOf{} + m.TeleportVersion = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field UpgraderKind", wireType) } - if err := m.Event.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowAuthservice + } + 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 ErrInvalidLengthAuthservice + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthAuthservice } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.UpgraderKind = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex default: iNdEx = preIndex @@ -66482,7 +68186,7 @@ func (m *SubmitUsageEventRequest) Unmarshal(dAtA []byte) error { } return nil } -func (m *GetLicenseRequest) Unmarshal(dAtA []byte) error { +func (m *ExportUpgradeWindowsResponse) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -66505,12 +68209,112 @@ func (m *GetLicenseRequest) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: GetLicenseRequest: wiretype end group for non-group") + return fmt.Errorf("proto: ExportUpgradeWindowsResponse: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: GetLicenseRequest: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: ExportUpgradeWindowsResponse: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field CanonicalSchedule", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowAuthservice + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthAuthservice + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthAuthservice + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.CanonicalSchedule == nil { + m.CanonicalSchedule = &types.AgentUpgradeSchedule{} + } + if err := m.CanonicalSchedule.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field KubeControllerSchedule", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowAuthservice + } + 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 ErrInvalidLengthAuthservice + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthAuthservice + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.KubeControllerSchedule = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field SystemdUnitSchedule", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowAuthservice + } + 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 ErrInvalidLengthAuthservice + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthAuthservice + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.SystemdUnitSchedule = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipAuthservice(dAtA[iNdEx:]) @@ -66533,7 +68337,7 @@ func (m *GetLicenseRequest) Unmarshal(dAtA []byte) error { } return nil } -func (m *ListReleasesRequest) Unmarshal(dAtA []byte) error { +func (m *AssistantRequest) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -66556,12 +68360,44 @@ func (m *ListReleasesRequest) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: ListReleasesRequest: wiretype end group for non-group") + return fmt.Errorf("proto: AssistantRequest: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: ListReleasesRequest: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: AssistantRequest: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ConversationId", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowAuthservice + } + 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 ErrInvalidLengthAuthservice + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthAuthservice + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.ConversationId = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipAuthservice(dAtA[iNdEx:]) @@ -66584,7 +68420,7 @@ func (m *ListReleasesRequest) Unmarshal(dAtA []byte) error { } return nil } -func (m *CreateTokenV2Request) Unmarshal(dAtA []byte) error { +func (m *AssistantMessage) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -66607,15 +68443,79 @@ func (m *CreateTokenV2Request) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: CreateTokenV2Request: wiretype end group for non-group") + return fmt.Errorf("proto: AssistantMessage: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: CreateTokenV2Request: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: AssistantMessage: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field V2", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field ConversationId", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowAuthservice + } + 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 ErrInvalidLengthAuthservice + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthAuthservice + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.ConversationId = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Type", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowAuthservice + } + 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 ErrInvalidLengthAuthservice + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthAuthservice + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Type = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field CreatedTime", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -66642,11 +68542,41 @@ func (m *CreateTokenV2Request) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - v := &types.ProvisionTokenV2{} - if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if err := github_com_gogo_protobuf_types.StdTimeUnmarshal(&m.CreatedTime, dAtA[iNdEx:postIndex]); err != nil { return err } - m.Token = &CreateTokenV2Request_V2{v} + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Payload", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowAuthservice + } + 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 ErrInvalidLengthAuthservice + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthAuthservice + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Payload = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex default: iNdEx = preIndex @@ -66670,7 +68600,7 @@ func (m *CreateTokenV2Request) Unmarshal(dAtA []byte) error { } return nil } -func (m *UpsertTokenV2Request) Unmarshal(dAtA []byte) error { +func (m *GetAssistantMessagesResponse) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -66693,15 +68623,15 @@ func (m *UpsertTokenV2Request) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: UpsertTokenV2Request: wiretype end group for non-group") + return fmt.Errorf("proto: GetAssistantMessagesResponse: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: UpsertTokenV2Request: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: GetAssistantMessagesResponse: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field V2", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Messages", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -66728,11 +68658,10 @@ func (m *UpsertTokenV2Request) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - v := &types.ProvisionTokenV2{} - if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + m.Messages = append(m.Messages, &AssistantMessage{}) + if err := m.Messages[len(m.Messages)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } - m.Token = &UpsertTokenV2Request_V2{v} iNdEx = postIndex default: iNdEx = preIndex @@ -66756,7 +68685,7 @@ func (m *UpsertTokenV2Request) Unmarshal(dAtA []byte) error { } return nil } -func (m *GetHeadlessAuthenticationRequest) Unmarshal(dAtA []byte) error { +func (m *GetAssistantConversationsRequest) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -66779,44 +68708,12 @@ func (m *GetHeadlessAuthenticationRequest) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: GetHeadlessAuthenticationRequest: wiretype end group for non-group") + return fmt.Errorf("proto: GetAssistantConversationsRequest: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: GetHeadlessAuthenticationRequest: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: GetAssistantConversationsRequest: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Id", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowAuthservice - } - 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 ErrInvalidLengthAuthservice - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthAuthservice - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Id = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipAuthservice(dAtA[iNdEx:]) @@ -66839,7 +68736,7 @@ func (m *GetHeadlessAuthenticationRequest) Unmarshal(dAtA []byte) error { } return nil } -func (m *UpdateHeadlessAuthenticationStateRequest) Unmarshal(dAtA []byte) error { +func (m *ConversationInfo) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -66862,10 +68759,10 @@ func (m *UpdateHeadlessAuthenticationStateRequest) Unmarshal(dAtA []byte) error fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: UpdateHeadlessAuthenticationStateRequest: wiretype end group for non-group") + return fmt.Errorf("proto: ConversationInfo: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: UpdateHeadlessAuthenticationStateRequest: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: ConversationInfo: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: @@ -66901,10 +68798,10 @@ func (m *UpdateHeadlessAuthenticationStateRequest) Unmarshal(dAtA []byte) error m.Id = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex case 2: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field State", wireType) + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Title", wireType) } - m.State = 0 + var stringLen uint64 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowAuthservice @@ -66914,14 +68811,27 @@ func (m *UpdateHeadlessAuthenticationStateRequest) Unmarshal(dAtA []byte) error } b := dAtA[iNdEx] iNdEx++ - m.State |= types.HeadlessAuthenticationState(b&0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthAuthservice + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthAuthservice + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Title = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex case 3: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field MfaResponse", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field CreatedTime", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -66948,10 +68858,7 @@ func (m *UpdateHeadlessAuthenticationStateRequest) Unmarshal(dAtA []byte) error if postIndex > l { return io.ErrUnexpectedEOF } - if m.MfaResponse == nil { - m.MfaResponse = &MFAAuthenticateResponse{} - } - if err := m.MfaResponse.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if err := github_com_gogo_protobuf_types.StdTimeUnmarshal(&m.CreatedTime, dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex @@ -66977,7 +68884,7 @@ func (m *UpdateHeadlessAuthenticationStateRequest) Unmarshal(dAtA []byte) error } return nil } -func (m *ExportUpgradeWindowsRequest) Unmarshal(dAtA []byte) error { +func (m *GetAssistantConversationsResponse) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -67000,17 +68907,17 @@ func (m *ExportUpgradeWindowsRequest) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: ExportUpgradeWindowsRequest: wiretype end group for non-group") + return fmt.Errorf("proto: GetAssistantConversationsResponse: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: ExportUpgradeWindowsRequest: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: GetAssistantConversationsResponse: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field TeleportVersion", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Conversations", wireType) } - var stringLen uint64 + var msglen int for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowAuthservice @@ -67020,55 +68927,25 @@ func (m *ExportUpgradeWindowsRequest) 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 ErrInvalidLengthAuthservice } - postIndex := iNdEx + intStringLen + postIndex := iNdEx + msglen if postIndex < 0 { return ErrInvalidLengthAuthservice } if postIndex > l { return io.ErrUnexpectedEOF } - m.TeleportVersion = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 2: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field UpgraderKind", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowAuthservice - } - 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 ErrInvalidLengthAuthservice - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthAuthservice - } - if postIndex > l { - return io.ErrUnexpectedEOF + m.Conversations = append(m.Conversations, &ConversationInfo{}) + if err := m.Conversations[len(m.Conversations)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err } - m.UpgraderKind = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex default: iNdEx = preIndex @@ -67092,7 +68969,7 @@ func (m *ExportUpgradeWindowsRequest) Unmarshal(dAtA []byte) error { } return nil } -func (m *ExportUpgradeWindowsResponse) Unmarshal(dAtA []byte) error { +func (m *CreateAssistantConversationRequest) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -67115,15 +68992,15 @@ func (m *ExportUpgradeWindowsResponse) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: ExportUpgradeWindowsResponse: wiretype end group for non-group") + return fmt.Errorf("proto: CreateAssistantConversationRequest: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: ExportUpgradeWindowsResponse: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: CreateAssistantConversationRequest: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field CanonicalSchedule", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field CreatedTime", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -67150,48 +69027,64 @@ func (m *ExportUpgradeWindowsResponse) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if m.CanonicalSchedule == nil { - m.CanonicalSchedule = &types.AgentUpgradeSchedule{} - } - if err := m.CanonicalSchedule.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if err := github_com_gogo_protobuf_types.StdTimeUnmarshal(&m.CreatedTime, dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex - case 2: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field KubeControllerSchedule", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowAuthservice - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } + default: + iNdEx = preIndex + skippy, err := skipAuthservice(dAtA[iNdEx:]) + if err != nil { + return err } - intStringLen := int(stringLen) - if intStringLen < 0 { + if (skippy < 0) || (iNdEx+skippy) < 0 { return ErrInvalidLengthAuthservice } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthAuthservice + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF } - if postIndex > l { + m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *CreateAssistantConversationResponse) 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 ErrIntOverflowAuthservice + } + if iNdEx >= l { return io.ErrUnexpectedEOF } - m.KubeControllerSchedule = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 3: + 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: CreateAssistantConversationResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: CreateAssistantConversationResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field SystemdUnitSchedule", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Id", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -67219,7 +69112,7 @@ func (m *ExportUpgradeWindowsResponse) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.SystemdUnitSchedule = string(dAtA[iNdEx:postIndex]) + m.Id = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex default: iNdEx = preIndex diff --git a/api/proto/teleport/legacy/client/proto/authservice.proto b/api/proto/teleport/legacy/client/proto/authservice.proto index c3fd3a1191def..7cff40c86d8ec 100644 --- a/api/proto/teleport/legacy/client/proto/authservice.proto +++ b/api/proto/teleport/legacy/client/proto/authservice.proto @@ -2296,8 +2296,83 @@ message ExportUpgradeWindowsResponse { string SystemdUnitSchedule = 3; } +message AssistantRequest { + // conversation_id it's the ID of a conversation. + // It's used to tie all messages in a one conversation. + string conversation_id = 1; +} + +message AssistantMessage { + // conversation_id used to tie all messages in a one conversation. + string conversation_id = 1; + + // type is a type of message. It can be Chat response/query or a command to run. + string type = 2; + + // createdTime is the time when the even occurred. + google.protobuf.Timestamp created_time = 3 [ + (gogoproto.stdtime) = true, + (gogoproto.nullable) = false + ]; + + // payload is a JSON message + string payload = 4; +} + +message GetAssistantMessagesResponse { + // messages is a list of messages. + repeated AssistantMessage messages = 1; +} + +message GetAssistantConversationsRequest {} + +message ConversationInfo { + // id is a unique conversation ID. + string id = 1; + // title is a title of the conversation. + string title = 2; + // createdTime is the time when the conversation was created. + google.protobuf.Timestamp created_time = 3 [ + (gogoproto.stdtime) = true, + (gogoproto.nullable) = false + ]; +} + +message GetAssistantConversationsResponse { + // conversations is a list of conversations. + repeated ConversationInfo conversations = 1; +} + +message CreateAssistantConversationRequest { + // createdTime is the time when the conversation was created. + google.protobuf.Timestamp created_time = 1 [ + (gogoproto.stdtime) = true, + (gogoproto.nullable) = false + ]; +} + +message CreateAssistantConversationResponse { + // id is a unique conversation ID. + string id = 1; +} + // AuthService is authentication/authorization service implementation service AuthService { + // CreateNewConversation creates a new conversation and returns the UUID of it. + rpc CreateAssistantConversation(CreateAssistantConversationRequest) returns (CreateAssistantConversationResponse); + + // GetAssistantConversations returns all conversations for the connected user. + rpc GetAssistantConversations(GetAssistantConversationsRequest) returns (GetAssistantConversationsResponse); + + // GetAssistantMessages returns all messages associated with the given conversation ID. + rpc GetAssistantMessages(AssistantRequest) returns (GetAssistantMessagesResponse); + + //InsertAssistantMessage adds a message to given conversation. + rpc InsertAssistantMessage(AssistantMessage) returns (google.protobuf.Empty); + + // SetAssistantConversationTitle sets the given conversation title. + rpc SetAssistantConversationTitle(ConversationInfo) returns (google.protobuf.Empty); + // InventoryControlStream is the per-instance stream used to advertise teleport instance // presence/version/etc to the auth server. rpc InventoryControlStream(stream UpstreamInventoryOneOf) returns (stream DownstreamInventoryOneOf); diff --git a/api/types/constants.go b/api/types/constants.go index 6e1df15af6122..30f5fa2fc5411 100644 --- a/api/types/constants.go +++ b/api/types/constants.go @@ -341,6 +341,9 @@ const ( // KindHeadlessAuthentication is a headless authentication resource. KindHeadlessAuthentication = "headless_authentication" + // KindAssistant is a Teleport Assist resource kind. + KindAssistant = "assistant" + // KindIntegration is a connection to a 3rd party system API. KindIntegration = "integration" diff --git a/lib/auth/auth.go b/lib/auth/auth.go index 46150b55d595e..3d1b52eeca29d 100644 --- a/lib/auth/auth.go +++ b/lib/auth/auth.go @@ -5202,6 +5202,59 @@ func (a *Server) GetHeadlessAuthentication(ctx context.Context, name string) (*t return headlessAuthn, trace.Wrap(err) } +// GetAssistantMessages returns all messages with given conversation ID. +func (a *Server) GetAssistantMessages(ctx context.Context, id string) (*proto.GetAssistantMessagesResponse, error) { + username, err := authz.GetClientUsername(ctx) + if err != nil { + return nil, trace.Wrap(err) + } + + resp, err := a.Services.GetAssistantMessages(ctx, username, id) + return resp, trace.Wrap(err) +} + +// InsertAssistantMessage adds the message to the backend. +func (a *Server) InsertAssistantMessage(ctx context.Context, msg *proto.AssistantMessage) error { + username, err := authz.GetClientUsername(ctx) + if err != nil { + return trace.Wrap(err) + } + + return trace.Wrap(a.Services.CreateAssistantMessage(ctx, username, msg)) +} + +// SetAssistantConversationTitle stores the given conversation title in the DB. +func (a *Server) SetAssistantConversationTitle(ctx context.Context, msg *proto.ConversationInfo) error { + username, err := authz.GetClientUsername(ctx) + if err != nil { + return trace.Wrap(err) + } + + return trace.Wrap(a.Services.SetAssistantConversationTitle(ctx, username, msg)) +} + +// CreateAssistantConversation creates a new conversation entry in the backend. +func (a *Server) CreateAssistantConversation(ctx context.Context, req *proto.CreateAssistantConversationRequest) (*proto.CreateAssistantConversationResponse, error) { + username, err := authz.GetClientUsername(ctx) + if err != nil { + return nil, trace.Wrap(err) + } + + resp, err := a.Services.CreateAssistantConversation(ctx, username, req) + return resp, trace.Wrap(err) +} + +// GetAssistantConversations returns all conversations started by a user. +func (a *Server) GetAssistantConversations(ctx context.Context, request *proto.GetAssistantConversationsRequest) (*proto.GetAssistantConversationsResponse, error) { + username, err := authz.GetClientUsername(ctx) + if err != nil { + return nil, trace.Wrap(err) + } + + resp, err := a.Services.GetAssistantConversations(ctx, username, request) + return resp, trace.Wrap(err) +} + // CompareAndSwapHeadlessAuthentication performs a compare // and swap replacement on a headless authentication resource. func (a *Server) CompareAndSwapHeadlessAuthentication(ctx context.Context, old, new *types.HeadlessAuthentication) (*types.HeadlessAuthentication, error) { diff --git a/lib/auth/auth_with_roles.go b/lib/auth/auth_with_roles.go index 598c15bbc534c..f3a11648b3307 100644 --- a/lib/auth/auth_with_roles.go +++ b/lib/auth/auth_with_roles.go @@ -29,6 +29,7 @@ import ( collectortracev1 "go.opentelemetry.io/proto/otlp/collector/trace/v1" otlpcommonv1 "go.opentelemetry.io/proto/otlp/common/v1" "golang.org/x/exp/slices" + "google.golang.org/protobuf/types/known/emptypb" "github.com/gravitational/teleport" "github.com/gravitational/teleport/api/client" @@ -6077,6 +6078,51 @@ func (a *ServerWithRoles) UpdateHeadlessAuthenticationState(ctx context.Context, return trace.Wrap(err) } +// CreateAssistantConversation creates a new conversation entry in the backend. +func (a *ServerWithRoles) CreateAssistantConversation(ctx context.Context, req *proto.CreateAssistantConversationRequest) (*proto.CreateAssistantConversationResponse, error) { + if err := a.action(apidefaults.Namespace, types.KindAssistant, types.VerbCreate); err != nil { + return nil, trace.Wrap(err) + } + + return a.authServer.CreateAssistantConversation(ctx, req) +} + +// GetAssistantConversations returns all conversations started by a user. +func (a *ServerWithRoles) GetAssistantConversations(ctx context.Context, request *proto.GetAssistantConversationsRequest) (*proto.GetAssistantConversationsResponse, error) { + if err := a.action(apidefaults.Namespace, types.KindAssistant, types.VerbList); err != nil { + return nil, trace.Wrap(err) + } + + return a.authServer.GetAssistantConversations(ctx, request) +} + +// GetAssistantMessages returns all messages with given conversation ID. +func (a *ServerWithRoles) GetAssistantMessages(ctx context.Context, id string) (*proto.GetAssistantMessagesResponse, error) { + if err := a.action(apidefaults.Namespace, types.KindAssistant, types.VerbRead); err != nil { + return nil, trace.Wrap(err) + } + + return a.authServer.GetAssistantMessages(ctx, id) +} + +// InsertAssistantMessage adds the message to the backend. +func (a *ServerWithRoles) InsertAssistantMessage(ctx context.Context, msg *proto.AssistantMessage) (*emptypb.Empty, error) { + if err := a.action(apidefaults.Namespace, types.KindAssistant, types.VerbUpdate); err != nil { + return nil, trace.Wrap(err) + } + + return &emptypb.Empty{}, a.authServer.InsertAssistantMessage(ctx, msg) +} + +// SetAssistantConversationTitle set the given title as the assistant conversation title. +func (a *ServerWithRoles) SetAssistantConversationTitle(ctx context.Context, msg *proto.ConversationInfo) error { + if err := a.action(apidefaults.Namespace, types.KindAssistant, types.VerbUpdate); err != nil { + return trace.Wrap(err) + } + + return a.authServer.SetAssistantConversationTitle(ctx, msg) +} + // CloneHTTPClient creates a new HTTP client with the same configuration. func (a *ServerWithRoles) CloneHTTPClient(params ...roundtrip.ClientParam) (*HTTPClient, error) { return nil, trace.NotImplemented("not implemented") @@ -6111,7 +6157,7 @@ func (a *ServerWithRoles) UpdateClusterMaintenanceConfig(ctx context.Context, cm if modules.GetModules().Features().Cloud { // maintenance configuration in cloud is derived from values stored in - // an external cloud-specific databse. + // an external cloud-specific database. return trace.NotImplemented("cloud clusters not support custom cluster maintenance resources") } diff --git a/lib/auth/clt.go b/lib/auth/clt.go index 7798ea649d56c..67a3295b9a59e 100644 --- a/lib/auth/clt.go +++ b/lib/auth/clt.go @@ -24,6 +24,7 @@ import ( "github.com/gravitational/roundtrip" "github.com/gravitational/trace" + "google.golang.org/protobuf/types/known/emptypb" "github.com/gravitational/teleport/api/client" "github.com/gravitational/teleport/api/client/proto" @@ -652,6 +653,17 @@ type IdentityService interface { UpdateHeadlessAuthenticationState(ctx context.Context, id string, state types.HeadlessAuthenticationState, mfaResponse *proto.MFAAuthenticateResponse) error // GetHeadlessAuthentication retrieves a headless authentication by id. GetHeadlessAuthentication(ctx context.Context, id string) (*types.HeadlessAuthentication, error) + + // GetAssistantMessages returns all messages with given conversation ID. + GetAssistantMessages(ctx context.Context, id string) (*proto.GetAssistantMessagesResponse, error) + // GetAssistantConversations returns all conversations started by a user. + GetAssistantConversations(ctx context.Context, request *proto.GetAssistantConversationsRequest) (*proto.GetAssistantConversationsResponse, error) + // CreateAssistantConversation creates a new conversation entry in the backend. + CreateAssistantConversation(ctx context.Context, req *proto.CreateAssistantConversationRequest) (*proto.CreateAssistantConversationResponse, error) + // InsertAssistantMessage adds the message to the backend. + InsertAssistantMessage(ctx context.Context, in *proto.AssistantMessage) (*emptypb.Empty, error) + // SetAssistantConversationTitle sets the given title as the conversation title. + SetAssistantConversationTitle(ctx context.Context, in *proto.ConversationInfo) error } // ProvisioningService is a service in control diff --git a/lib/auth/grpcserver.go b/lib/auth/grpcserver.go index ffe15a938d513..702c0d69bcd4a 100644 --- a/lib/auth/grpcserver.go +++ b/lib/auth/grpcserver.go @@ -4984,6 +4984,66 @@ func (g *GRPCServer) UpdateClusterMaintenanceConfig(ctx context.Context, cmc *ty return &emptypb.Empty{}, nil } +// GetAssistantConversations returns all conversations started by a user. +func (g *GRPCServer) GetAssistantConversations(ctx context.Context, request *proto.GetAssistantConversationsRequest) (*proto.GetAssistantConversationsResponse, error) { + auth, err := g.authenticate(ctx) + if err != nil { + return nil, trace.Wrap(err) + } + + resp, err := auth.GetAssistantConversations(ctx, request) + if err != nil { + return nil, trace.Wrap(err) + } + + return resp, nil +} + +// SetAssistantConversationTitle sets the given title as the assistant conversation title. +func (g *GRPCServer) SetAssistantConversationTitle(ctx context.Context, request *proto.ConversationInfo) (*emptypb.Empty, error) { + auth, err := g.authenticate(ctx) + if err != nil { + return nil, trace.Wrap(err) + } + + err = auth.SetAssistantConversationTitle(ctx, request) + if err != nil { + return nil, trace.Wrap(err) + } + + return &emptypb.Empty{}, nil +} + +// CreateAssistantConversation creates a new conversation entry in the backend. +func (g *GRPCServer) CreateAssistantConversation(ctx context.Context, request *proto.CreateAssistantConversationRequest) (*proto.CreateAssistantConversationResponse, error) { + auth, err := g.authenticate(ctx) + if err != nil { + return nil, trace.Wrap(err) + } + resp, err := auth.CreateAssistantConversation(ctx, request) + return resp, trace.Wrap(err) +} + +// GetAssistantMessages returns all messages with given conversation ID. +func (g *GRPCServer) GetAssistantMessages(ctx context.Context, request *proto.AssistantRequest) (*proto.GetAssistantMessagesResponse, error) { + auth, err := g.authenticate(ctx) + if err != nil { + return nil, trace.Wrap(err) + } + messages, err := auth.GetAssistantMessages(ctx, request.ConversationId) + return messages, trace.Wrap(err) +} + +// InsertAssistantMessage adds the message to the backend. +func (g *GRPCServer) InsertAssistantMessage(ctx context.Context, assistantMessage *proto.AssistantMessage) (*emptypb.Empty, error) { + auth, err := g.authenticate(ctx) + if err != nil { + return &emptypb.Empty{}, trace.Wrap(err) + } + resp, err := auth.InsertAssistantMessage(ctx, assistantMessage) + return resp, trace.Wrap(err) +} + // GetBackend returns the backend from the underlying auth server. func (g *GRPCServer) GetBackend() backend.Backend { return g.AuthServer.bk diff --git a/lib/auth/init_test.go b/lib/auth/init_test.go index 7f394fe8ed56c..16360a6a1375b 100644 --- a/lib/auth/init_test.go +++ b/lib/auth/init_test.go @@ -623,8 +623,8 @@ func TestPresets(t *testing.T) { err := createPresets(ctx, roleManager) require.NoError(t, err) - require.Equal(t, 0, roleManager.upsertRoleCallsCount, "unexpectd call to UpsertRole") - require.Equal(t, 0, roleManager.getRoleCallsCount, "unexpectd call to GetRole") + require.Equal(t, 0, roleManager.upsertRoleCallsCount, "unexpected call to UpsertRole") + require.Equal(t, 0, roleManager.getRoleCallsCount, "unexpected call to GetRole") require.Equal(t, presetRoleCount, roleManager.createRoleCallsCount, "unexpected number of calls to CreateRole, got %d calls", roleManager.createRoleCallsCount) // Running a second time should return Already Exists, so it fetches the role. @@ -634,7 +634,7 @@ func TestPresets(t *testing.T) { err = createPresets(ctx, roleManager) require.NoError(t, err) - require.Equal(t, 0, roleManager.upsertRoleCallsCount, "unexpectd call to UpsertRole") + require.Equal(t, 0, roleManager.upsertRoleCallsCount, "unexpected call to UpsertRole") require.Equal(t, presetRoleCount, roleManager.getRoleCallsCount, "unexpected number of calls to CreateRole, got %d calls", roleManager.getRoleCallsCount) require.Equal(t, presetRoleCount, roleManager.createRoleCallsCount, "unexpected number of calls to CreateRole, got %d calls", roleManager.createRoleCallsCount) @@ -649,13 +649,14 @@ func TestPresets(t *testing.T) { allowRulesWithoutConnectionDiag = append(allowRulesWithoutConnectionDiag, r) } editorRole.SetRules(types.Allow, allowRulesWithoutConnectionDiag) - roleManager.UpsertRole(ctx, editorRole) + err = roleManager.UpsertRole(ctx, editorRole) + require.NoError(t, err) roleManager.ResetCallCounters() err = createPresets(ctx, roleManager) require.NoError(t, err) - require.Equal(t, 1, roleManager.upsertRoleCallsCount, "unexpectd call to UpsertRole") + require.Equal(t, 1, roleManager.upsertRoleCallsCount, "unexpected call to UpsertRole") require.Equal(t, presetRoleCount, roleManager.getRoleCallsCount, "unexpected number of calls to CreateRole, got %d calls", roleManager.getRoleCallsCount) require.Equal(t, presetRoleCount, roleManager.createRoleCallsCount, "unexpected number of calls to CreateRole, got %d calls", roleManager.createRoleCallsCount) }) diff --git a/lib/reversetunnel/agent.go b/lib/reversetunnel/agent.go index 89cf7944e5838..5a49c4bd9e4da 100644 --- a/lib/reversetunnel/agent.go +++ b/lib/reversetunnel/agent.go @@ -116,7 +116,7 @@ type agentConfig struct { // localAuthAddresses is a list of auth servers to use when dialing back to // the local cluster. localAuthAddresses []string - // PROXYSigner is used to sign PROXY headers for securely propagating client IP address + // proxySigner is used to sign PROXY headers for securely propagating client IP address proxySigner multiplexer.PROXYHeaderSigner } @@ -189,7 +189,7 @@ type agent struct { // drainWG tracks transports and other concurrent operations required // to drain a connection are finished. drainWG sync.WaitGroup - // PROXYSigner is used to sign PROXY headers for securely propagating client IP address + // proxySigner is used to sign PROXY headers for securely propagating client IP address proxySigner multiplexer.PROXYHeaderSigner } diff --git a/lib/services/identity.go b/lib/services/identity.go index ceb280c0d3b75..34dc63b0c4e61 100644 --- a/lib/services/identity.go +++ b/lib/services/identity.go @@ -267,6 +267,21 @@ type Identity interface { // DeleteHeadlessAuthentication deletes a headless authentication from the backend by name. DeleteHeadlessAuthentication(ctx context.Context, name string) error + // GetAssistantMessages returns all messages with given conversation ID. + GetAssistantMessages(ctx context.Context, username, id string) (*proto.GetAssistantMessagesResponse, error) + + // CreateAssistantMessage adds the message to the backend. + CreateAssistantMessage(ctx context.Context, username string, msg *proto.AssistantMessage) error + + // CreateAssistantConversation creates a new conversation entry in the backend. + CreateAssistantConversation(ctx context.Context, username string, req *proto.CreateAssistantConversationRequest) (*proto.CreateAssistantConversationResponse, error) + + // GetAssistantConversations returns all conversations started by a user. + GetAssistantConversations(ctx context.Context, username string, request *proto.GetAssistantConversationsRequest) (*proto.GetAssistantConversationsResponse, error) + + // SetAssistantConversationTitle sets the given title as the assistant conversation title. + SetAssistantConversationTitle(ctx context.Context, username string, msg *proto.ConversationInfo) error + types.WebSessionsGetter types.WebTokensGetter diff --git a/lib/services/local/users.go b/lib/services/local/users.go index 92fea76704710..c8dea30cd4d56 100644 --- a/lib/services/local/users.go +++ b/lib/services/local/users.go @@ -37,6 +37,7 @@ import ( "golang.org/x/crypto/bcrypt" "golang.org/x/crypto/ssh" + "github.com/gravitational/teleport/api/client/proto" "github.com/gravitational/teleport/api/types" wantypes "github.com/gravitational/teleport/api/types/webauthn" "github.com/gravitational/teleport/api/utils/keys" @@ -1384,6 +1385,178 @@ func (s *IdentityService) CreateUserRecoveryAttempt(ctx context.Context, user st return trace.Wrap(err) } +// Conversation is a conversation entry in the backend. +type Conversation struct { + Title string `json:"title,omitempty"` + ConversationID string `json:"conversation_id"` + CreatedTime time.Time `json:"created_time"` +} + +// CreateAssistantConversation creates a new conversation entry in the backend. +func (s *IdentityService) CreateAssistantConversation(ctx context.Context, username string, + req *proto.CreateAssistantConversationRequest, +) (*proto.CreateAssistantConversationResponse, error) { + if username == "" { + return nil, trace.BadParameter("missing parameter username") + } + + conversationID := uuid.New().String() + payload := &Conversation{ + ConversationID: conversationID, + CreatedTime: req.CreatedTime, + } + + value, err := json.Marshal(payload) + if err != nil { + return nil, trace.Wrap(err) + } + + item := backend.Item{ + Key: backend.Key(assistantConversationPrefix, username, conversationID), + Value: value, + } + + _, err = s.Create(ctx, item) + if err != nil { + return nil, trace.Wrap(err) + } + + return &proto.CreateAssistantConversationResponse{Id: conversationID}, nil +} + +func (s *IdentityService) getConversation(ctx context.Context, username, conversationID string) (*Conversation, error) { + item, err := s.Get(ctx, backend.Key(assistantConversationPrefix, username, conversationID)) + if err != nil { + return nil, trace.Wrap(err) + } + + var conversation Conversation + if err := json.Unmarshal(item.Value, &conversation); err != nil { + return nil, trace.Wrap(err) + } + + return &conversation, nil +} + +// SetAssistantConversationTitle sets the given title as the assistant conversation title. +func (s *IdentityService) SetAssistantConversationTitle(ctx context.Context, username string, request *proto.ConversationInfo) error { + if request.Id == "" || request.Title == "" { + return trace.BadParameter("missing conversation ID or title") + } + + msg, err := s.getConversation(ctx, username, request.Id) + if err != nil { + return trace.Wrap(err) + } + + // Only update the title, leave the rest of the fields intact. + msg.Title = request.Title + + payload, err := json.Marshal(msg) + if err != nil { + return trace.Wrap(err) + } + + item := backend.Item{ + Key: backend.Key(assistantConversationPrefix, username, request.Id), + Value: payload, + } + + if _, err = s.Update(ctx, item); err != nil { + return trace.Wrap(err) + } + + return nil +} + +// GetAssistantConversations returns all conversations started by a user. +func (s *IdentityService) GetAssistantConversations(ctx context.Context, username string, _ *proto.GetAssistantConversationsRequest) (*proto.GetAssistantConversationsResponse, error) { + startKey := backend.Key(assistantConversationPrefix, username) + result, err := s.GetRange(ctx, startKey, backend.RangeEnd(startKey), backend.NoLimit) + if err != nil { + return nil, trace.Wrap(err) + } + + conversationsIDs := make([]*proto.ConversationInfo, 0, len(result.Items)) + for _, item := range result.Items { + payload := &Conversation{} + if err := json.Unmarshal(item.Value, payload); err != nil { + return nil, trace.Wrap(err) + } + + conversationsIDs = append(conversationsIDs, &proto.ConversationInfo{ + Id: payload.ConversationID, + Title: payload.Title, + CreatedTime: payload.CreatedTime, + }) + } + + sort.Slice(conversationsIDs, func(i, j int) bool { + return conversationsIDs[i].CreatedTime.Before(conversationsIDs[j].GetCreatedTime()) + }) + + return &proto.GetAssistantConversationsResponse{ + Conversations: conversationsIDs, + }, nil +} + +// GetAssistantMessages returns all messages with given conversation ID. +func (s *IdentityService) GetAssistantMessages(ctx context.Context, username, conversationId string) (*proto.GetAssistantMessagesResponse, error) { + if username == "" { + return nil, trace.BadParameter("missing username") + } + + if conversationId == "" { + return nil, trace.BadParameter("missing conversation ID") + } + + startKey := backend.Key(assistantMessagePrefix, username, conversationId) + result, err := s.GetRange(ctx, startKey, backend.RangeEnd(startKey), backend.NoLimit) + if err != nil { + return nil, trace.Wrap(err) + } + + out := make([]*proto.AssistantMessage, len(result.Items)) + for i, item := range result.Items { + var a proto.AssistantMessage + if err := json.Unmarshal(item.Value, &a); err != nil { + return nil, trace.Wrap(err) + } + out[i] = &a + } + + sort.Slice(out, func(i, j int) bool { + // Sort by created time. + return out[i].CreatedTime.Before(out[j].GetCreatedTime()) + }) + + return &proto.GetAssistantMessagesResponse{ + Messages: out, + }, nil +} + +// CreateAssistantMessage adds the message to the backend. +func (s *IdentityService) CreateAssistantMessage(ctx context.Context, username string, msg *proto.AssistantMessage) error { + if username == "" { + return trace.BadParameter("missing username") + } + + value, err := json.Marshal(msg) + if err != nil { + return trace.Wrap(err) + } + + messageID := uuid.New().String() + + item := backend.Item{ + Key: backend.Key(assistantMessagePrefix, username, msg.ConversationId, messageID), + Value: value, + } + + _, err = s.Create(ctx, item) + return trace.Wrap(err) +} + // GetUserRecoveryAttempts returns users recovery attempts. func (s *IdentityService) GetUserRecoveryAttempts(ctx context.Context, user string) ([]*types.RecoveryAttempt, error) { if user == "" { @@ -1517,25 +1690,27 @@ func KeyAttestationDataFingerprintV11(pub crypto.PublicKey) (string, error) { } const ( - webPrefix = "web" - usersPrefix = "users" - sessionsPrefix = "sessions" - attemptsPrefix = "attempts" - pwdPrefix = "pwd" - connectorsPrefix = "connectors" - oidcPrefix = "oidc" - samlPrefix = "saml" - githubPrefix = "github" - requestsPrefix = "requests" - requestsTracePrefix = "requestsTrace" - usedTOTPPrefix = "used_totp" - usedTOTPTTL = 30 * time.Second - mfaDevicePrefix = "mfa" - webauthnPrefix = "webauthn" - webauthnGlobalSessionData = "sessionData" - webauthnLocalAuthPrefix = "webauthnlocalauth" - webauthnSessionData = "webauthnsessiondata" - recoveryCodesPrefix = "recoverycodes" - recoveryAttemptsPrefix = "recoveryattempts" - attestationsPrefix = "key_attestations" + webPrefix = "web" + usersPrefix = "users" + sessionsPrefix = "sessions" + attemptsPrefix = "attempts" + pwdPrefix = "pwd" + connectorsPrefix = "connectors" + oidcPrefix = "oidc" + samlPrefix = "saml" + githubPrefix = "github" + requestsPrefix = "requests" + requestsTracePrefix = "requestsTrace" + usedTOTPPrefix = "used_totp" + usedTOTPTTL = 30 * time.Second + mfaDevicePrefix = "mfa" + webauthnPrefix = "webauthn" + webauthnGlobalSessionData = "sessionData" + webauthnLocalAuthPrefix = "webauthnlocalauth" + webauthnSessionData = "webauthnsessiondata" + recoveryCodesPrefix = "recoverycodes" + recoveryAttemptsPrefix = "recoveryattempts" + attestationsPrefix = "key_attestations" + assistantMessagePrefix = "assistant_message" + assistantConversationPrefix = "assistant_conversation" ) diff --git a/lib/web/apiserver.go b/lib/web/apiserver.go index c1ab435f75fec..7f1b0ef6e86f5 100644 --- a/lib/web/apiserver.go +++ b/lib/web/apiserver.go @@ -743,6 +743,25 @@ func (h *Handler) bindDefaultEndpoints() { h.PUT("/webapi/headless/:headless_authentication_id", h.WithAuth(h.putHeadlessState)) h.GET("/webapi/sites/:site/user-groups", h.WithClusterAuth(h.getUserGroups)) + + // WebSocket endpoint for the chat conversation + h.GET("/webapi/sites/:site/assistant", h.WithClusterAuth(h.assistant)) + + // Sets the title for the conversation. + h.POST("/webapi/assistant/conversations/:conversation_id/title", h.WithAuth(h.setAssistantTitle)) + h.POST("/webapi/assistant/title/summary", h.WithAuth(h.generateAssistantTitle)) + + // Creates a new conversation - the conversation ID is returned in the response. + h.POST("/webapi/assistant/conversations", h.WithAuth(h.createAssistantConversation)) + + // Returns all conversations for the given user. + h.GET("/webapi/assistant/conversations", h.WithAuth(h.getAssistantConversations)) + + // Returns all messages in the given conversation. + h.GET("/webapi/assistant/conversations/:conversation_id", h.WithAuth(h.getAssistantConversationByID)) + + // Allows executing an arbitrary command on multiple nodes. + h.GET("/webapi/command/:site/execute", h.WithClusterAuth(h.executeCommand)) } // GetProxyClient returns authenticated auth server client @@ -976,27 +995,27 @@ func deviceTrustDisabled(cap types.AuthPreference) bool { } func getAuthSettings(ctx context.Context, authClient auth.ClientI) (webclient.AuthenticationSettings, error) { - cap, err := authClient.GetAuthPreference(ctx) + authPreference, err := authClient.GetAuthPreference(ctx) if err != nil { return webclient.AuthenticationSettings{}, trace.Wrap(err) } var as webclient.AuthenticationSettings - switch cap.GetType() { + switch authPreference.GetType() { case constants.Local: - as, err = localSettings(cap) + as, err = localSettings(authPreference) if err != nil { return webclient.AuthenticationSettings{}, trace.Wrap(err) } case constants.OIDC: - if cap.GetConnectorName() != "" { - oidcConnector, err := authClient.GetOIDCConnector(ctx, cap.GetConnectorName(), false) + if authPreference.GetConnectorName() != "" { + oidcConnector, err := authClient.GetOIDCConnector(ctx, authPreference.GetConnectorName(), false) if err != nil { return webclient.AuthenticationSettings{}, trace.Wrap(err) } - as = oidcSettings(oidcConnector, cap) + as = oidcSettings(oidcConnector, authPreference) } else { oidcConnectors, err := authClient.GetOIDCConnectors(ctx, false) if err != nil { @@ -1006,16 +1025,16 @@ func getAuthSettings(ctx context.Context, authClient auth.ClientI) (webclient.Au return webclient.AuthenticationSettings{}, trace.BadParameter("no oidc connectors found") } - as = oidcSettings(oidcConnectors[0], cap) + as = oidcSettings(oidcConnectors[0], authPreference) } case constants.SAML: - if cap.GetConnectorName() != "" { - samlConnector, err := authClient.GetSAMLConnector(ctx, cap.GetConnectorName(), false) + if authPreference.GetConnectorName() != "" { + samlConnector, err := authClient.GetSAMLConnector(ctx, authPreference.GetConnectorName(), false) if err != nil { return webclient.AuthenticationSettings{}, trace.Wrap(err) } - as = samlSettings(samlConnector, cap) + as = samlSettings(samlConnector, authPreference) } else { samlConnectors, err := authClient.GetSAMLConnectors(ctx, false) if err != nil { @@ -1025,15 +1044,15 @@ func getAuthSettings(ctx context.Context, authClient auth.ClientI) (webclient.Au return webclient.AuthenticationSettings{}, trace.BadParameter("no saml connectors found") } - as = samlSettings(samlConnectors[0], cap) + as = samlSettings(samlConnectors[0], authPreference) } case constants.Github: - if cap.GetConnectorName() != "" { - githubConnector, err := authClient.GetGithubConnector(ctx, cap.GetConnectorName(), false) + if authPreference.GetConnectorName() != "" { + githubConnector, err := authClient.GetGithubConnector(ctx, authPreference.GetConnectorName(), false) if err != nil { return webclient.AuthenticationSettings{}, trace.Wrap(err) } - as = githubSettings(githubConnector, cap) + as = githubSettings(githubConnector, authPreference) } else { githubConnectors, err := authClient.GetGithubConnectors(ctx, false) if err != nil { @@ -1042,13 +1061,13 @@ func getAuthSettings(ctx context.Context, authClient auth.ClientI) (webclient.Au if len(githubConnectors) == 0 { return webclient.AuthenticationSettings{}, trace.BadParameter("no github connectors found") } - as = githubSettings(githubConnectors[0], cap) + as = githubSettings(githubConnectors[0], authPreference) } default: - return webclient.AuthenticationSettings{}, trace.BadParameter("unknown type %v", cap.GetType()) + return webclient.AuthenticationSettings{}, trace.BadParameter("unknown type %v", authPreference.GetType()) } - as.HasMessageOfTheDay = cap.GetMessageOfTheDay() != "" + as.HasMessageOfTheDay = authPreference.GetMessageOfTheDay() != "" pingResp, err := authClient.Ping(ctx) if err != nil { return webclient.AuthenticationSettings{}, trace.Wrap(err) @@ -2772,7 +2791,7 @@ func (h *Handler) fetchExistingSession(ctx context.Context, clt auth.ClientI, re // When joining an existing session use the specially handled // `SSHSessionJoinPrincipal` login instead of the provided login so that // users are able to join sessions without having permissions to create - // new ones themselves for auditing purposes. Otherwise the user would + // new ones themselves for auditing purposes. Otherwise, the user would // fail the SSH lib username validation step. sessionData.Login = teleport.SSHSessionJoinPrincipal // Using the Login above will then display `-teleport-internal-join` as the diff --git a/lib/web/assistant.go b/lib/web/assistant.go new file mode 100644 index 0000000000000..c90b1f1a19e34 --- /dev/null +++ b/lib/web/assistant.go @@ -0,0 +1,65 @@ +/* + + Copyright 2023 Gravitational, Inc. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + + +*/ + +package web + +import ( + "net/http" + + "github.com/gravitational/trace" + "github.com/julienschmidt/httprouter" + + "github.com/gravitational/teleport/lib/reversetunnel" +) + +func (h *Handler) createAssistantConversation(_ http.ResponseWriter, r *http.Request, + _ httprouter.Params, sctx *SessionContext, +) (any, error) { + return nil, trace.NotImplemented("not implemented") +} + +func (h *Handler) getAssistantConversationByID(_ http.ResponseWriter, r *http.Request, + p httprouter.Params, sctx *SessionContext, +) (any, error) { + return nil, trace.NotImplemented("not implemented") +} + +func (h *Handler) getAssistantConversations(_ http.ResponseWriter, r *http.Request, + _ httprouter.Params, sctx *SessionContext, +) (any, error) { + return nil, trace.NotImplemented("not implemented") +} + +func (h *Handler) setAssistantTitle(_ http.ResponseWriter, r *http.Request, + p httprouter.Params, sctx *SessionContext, +) (any, error) { + return nil, trace.NotImplemented("not implemented") +} + +func (h *Handler) generateAssistantTitle(_ http.ResponseWriter, r *http.Request, + p httprouter.Params, sctx *SessionContext, +) (any, error) { + return nil, trace.NotImplemented("not implemented") +} + +func (h *Handler) assistant(w http.ResponseWriter, r *http.Request, _ httprouter.Params, + sctx *SessionContext, site reversetunnel.RemoteSite, +) (any, error) { + return nil, trace.NotImplemented("not implemented") +} diff --git a/lib/web/command.go b/lib/web/command.go new file mode 100644 index 0000000000000..5d21fc3037c9f --- /dev/null +++ b/lib/web/command.go @@ -0,0 +1,39 @@ +/* + + Copyright 2023 Gravitational, Inc. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + + +*/ + +package web + +import ( + "net/http" + + "github.com/gravitational/trace" + "github.com/julienschmidt/httprouter" + + "github.com/gravitational/teleport/lib/reversetunnel" +) + +func (h *Handler) executeCommand( + w http.ResponseWriter, + r *http.Request, + _ httprouter.Params, + sessionCtx *SessionContext, + site reversetunnel.RemoteSite, +) (any, error) { + return nil, trace.NotImplemented("not implemented") +} From d890cf8c2701ccef19bcc786401fc16404ec2efd Mon Sep 17 00:00:00 2001 From: Jakub Nyckowski Date: Mon, 8 May 2023 14:02:10 -0400 Subject: [PATCH 02/10] Add Assistant CRUD test --- lib/services/local/users_test.go | 80 ++++++++++++++++++++++++++++++++ 1 file changed, 80 insertions(+) diff --git a/lib/services/local/users_test.go b/lib/services/local/users_test.go index af0457891d844..7904a35a3ff23 100644 --- a/lib/services/local/users_test.go +++ b/lib/services/local/users_test.go @@ -28,6 +28,7 @@ import ( "github.com/go-webauthn/webauthn/protocol" "github.com/google/go-cmp/cmp" "github.com/google/uuid" + "github.com/gravitational/teleport/api/client/proto" "github.com/gravitational/trace" "github.com/jonboulle/clockwork" "github.com/stretchr/testify/require" @@ -938,3 +939,82 @@ func TestIdentityService_GetKeyAttestationDataV11Fingerprint(t *testing.T) { require.NoError(t, err) require.Equal(t, attestationData, retrievedAttestationData) } + +// TestAssistantCRUD tests the assistant CRUD operations. +func TestAssistantCRUD(t *testing.T) { + t.Parallel() + + identity := newIdentityService(t, clockwork.NewFakeClock()) + ctx := context.Background() + + const username = "foo" + var conversationID string + + t.Run("create conversation", func(t *testing.T) { + req := &proto.CreateAssistantConversationRequest{ + CreatedTime: time.Now(), + } + + conversationResp, err := identity.CreateAssistantConversation(ctx, username, req) + require.NoError(t, err) + require.NotEmpty(t, conversationResp.Id) + + conversationID = conversationResp.Id + }) + + t.Run("get conversation", func(t *testing.T) { + conversations, err := identity.GetAssistantConversations(ctx, username, nil) + require.NoError(t, err) + require.Len(t, conversations.Conversations, 1) + require.Equal(t, conversationID, conversations.Conversations[0].Id) + }) + + t.Run("create message", func(t *testing.T) { + msg := &proto.AssistantMessage{ + CreatedTime: time.Now(), + ConversationId: conversationID, + Payload: "foo", + Type: "USER_MSG", + } + err := identity.CreateAssistantMessage(ctx, username, msg) + require.NoError(t, err) + }) + + t.Run("get messages", func(t *testing.T) { + messages, err := identity.GetAssistantMessages(ctx, username, conversationID) + require.NoError(t, err) + require.Len(t, messages.Messages, 1) + require.Equal(t, "foo", messages.Messages[0].Payload) + }) + + t.Run("set conversation title", func(t *testing.T) { + titleReq := &proto.ConversationInfo{ + Title: "bar", + Id: conversationID, + } + title := "bar" + err := identity.SetAssistantConversationTitle(ctx, username, titleReq) + require.NoError(t, err) + + conversations, err := identity.GetAssistantConversations(ctx, username, nil) + require.NoError(t, err) + require.Len(t, conversations.Conversations, 1) + require.Equal(t, title, conversations.Conversations[0].Title) + }) + + t.Run("conversations are sorted by created_time", func(t *testing.T) { + req := &proto.CreateAssistantConversationRequest{ + CreatedTime: time.Now().Add(time.Hour), + } + + conversationResp, err := identity.CreateAssistantConversation(ctx, username, req) + require.NoError(t, err) + require.NotEmpty(t, conversationResp.Id) + + conversations, err := identity.GetAssistantConversations(ctx, username, nil) + require.NoError(t, err) + require.Len(t, conversations.Conversations, 2) + require.Equal(t, conversationID, conversations.Conversations[0].Id) + require.Equal(t, conversationResp.Id, conversations.Conversations[1].Id) + }) +} From a2652916d11cb92f45d1991e271e65b1bd77fbaa Mon Sep 17 00:00:00 2001 From: Jakub Nyckowski Date: Mon, 8 May 2023 14:09:18 -0400 Subject: [PATCH 03/10] Move assistant API to a separate file. --- lib/services/local/assistant.go | 204 +++++++++++++++++++++++++++ lib/services/local/assistant_test.go | 109 ++++++++++++++ lib/services/local/users.go | 173 ----------------------- lib/services/local/users_test.go | 80 ----------- 4 files changed, 313 insertions(+), 253 deletions(-) create mode 100644 lib/services/local/assistant.go create mode 100644 lib/services/local/assistant_test.go diff --git a/lib/services/local/assistant.go b/lib/services/local/assistant.go new file mode 100644 index 0000000000000..671211ecd4009 --- /dev/null +++ b/lib/services/local/assistant.go @@ -0,0 +1,204 @@ +/* + * + * Copyright 2023 Gravitational, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +package local + +import ( + "context" + "encoding/json" + "sort" + "time" + + "github.com/google/uuid" + "github.com/gravitational/trace" + + "github.com/gravitational/teleport/api/client/proto" + "github.com/gravitational/teleport/lib/backend" +) + +// Conversation is a conversation entry in the backend. +type Conversation struct { + Title string `json:"title,omitempty"` + ConversationID string `json:"conversation_id"` + CreatedTime time.Time `json:"created_time"` +} + +// CreateAssistantConversation creates a new conversation entry in the backend. +func (s *IdentityService) CreateAssistantConversation(ctx context.Context, username string, + req *proto.CreateAssistantConversationRequest, +) (*proto.CreateAssistantConversationResponse, error) { + if username == "" { + return nil, trace.BadParameter("missing parameter username") + } + + conversationID := uuid.New().String() + payload := &Conversation{ + ConversationID: conversationID, + CreatedTime: req.CreatedTime, + } + + value, err := json.Marshal(payload) + if err != nil { + return nil, trace.Wrap(err) + } + + item := backend.Item{ + Key: backend.Key(assistantConversationPrefix, username, conversationID), + Value: value, + } + + _, err = s.Create(ctx, item) + if err != nil { + return nil, trace.Wrap(err) + } + + return &proto.CreateAssistantConversationResponse{Id: conversationID}, nil +} + +func (s *IdentityService) getConversation(ctx context.Context, username, conversationID string) (*Conversation, error) { + item, err := s.Get(ctx, backend.Key(assistantConversationPrefix, username, conversationID)) + if err != nil { + return nil, trace.Wrap(err) + } + + var conversation Conversation + if err := json.Unmarshal(item.Value, &conversation); err != nil { + return nil, trace.Wrap(err) + } + + return &conversation, nil +} + +// SetAssistantConversationTitle sets the given title as the assistant conversation title. +func (s *IdentityService) SetAssistantConversationTitle(ctx context.Context, username string, request *proto.ConversationInfo) error { + if request.Id == "" || request.Title == "" { + return trace.BadParameter("missing conversation ID or title") + } + + msg, err := s.getConversation(ctx, username, request.Id) + if err != nil { + return trace.Wrap(err) + } + + // Only update the title, leave the rest of the fields intact. + msg.Title = request.Title + + payload, err := json.Marshal(msg) + if err != nil { + return trace.Wrap(err) + } + + item := backend.Item{ + Key: backend.Key(assistantConversationPrefix, username, request.Id), + Value: payload, + } + + if _, err = s.Update(ctx, item); err != nil { + return trace.Wrap(err) + } + + return nil +} + +// GetAssistantConversations returns all conversations started by a user. +func (s *IdentityService) GetAssistantConversations(ctx context.Context, username string, _ *proto.GetAssistantConversationsRequest) (*proto.GetAssistantConversationsResponse, error) { + startKey := backend.Key(assistantConversationPrefix, username) + result, err := s.GetRange(ctx, startKey, backend.RangeEnd(startKey), backend.NoLimit) + if err != nil { + return nil, trace.Wrap(err) + } + + conversationsIDs := make([]*proto.ConversationInfo, 0, len(result.Items)) + for _, item := range result.Items { + payload := &Conversation{} + if err := json.Unmarshal(item.Value, payload); err != nil { + return nil, trace.Wrap(err) + } + + conversationsIDs = append(conversationsIDs, &proto.ConversationInfo{ + Id: payload.ConversationID, + Title: payload.Title, + CreatedTime: payload.CreatedTime, + }) + } + + sort.Slice(conversationsIDs, func(i, j int) bool { + return conversationsIDs[i].CreatedTime.Before(conversationsIDs[j].GetCreatedTime()) + }) + + return &proto.GetAssistantConversationsResponse{ + Conversations: conversationsIDs, + }, nil +} + +// GetAssistantMessages returns all messages with given conversation ID. +func (s *IdentityService) GetAssistantMessages(ctx context.Context, username, conversationId string) (*proto.GetAssistantMessagesResponse, error) { + if username == "" { + return nil, trace.BadParameter("missing username") + } + + if conversationId == "" { + return nil, trace.BadParameter("missing conversation ID") + } + + startKey := backend.Key(assistantMessagePrefix, username, conversationId) + result, err := s.GetRange(ctx, startKey, backend.RangeEnd(startKey), backend.NoLimit) + if err != nil { + return nil, trace.Wrap(err) + } + + out := make([]*proto.AssistantMessage, len(result.Items)) + for i, item := range result.Items { + var a proto.AssistantMessage + if err := json.Unmarshal(item.Value, &a); err != nil { + return nil, trace.Wrap(err) + } + out[i] = &a + } + + sort.Slice(out, func(i, j int) bool { + // Sort by created time. + return out[i].CreatedTime.Before(out[j].GetCreatedTime()) + }) + + return &proto.GetAssistantMessagesResponse{ + Messages: out, + }, nil +} + +// CreateAssistantMessage adds the message to the backend. +func (s *IdentityService) CreateAssistantMessage(ctx context.Context, username string, msg *proto.AssistantMessage) error { + if username == "" { + return trace.BadParameter("missing username") + } + + value, err := json.Marshal(msg) + if err != nil { + return trace.Wrap(err) + } + + messageID := uuid.New().String() + + item := backend.Item{ + Key: backend.Key(assistantMessagePrefix, username, msg.ConversationId, messageID), + Value: value, + } + + _, err = s.Create(ctx, item) + return trace.Wrap(err) +} diff --git a/lib/services/local/assistant_test.go b/lib/services/local/assistant_test.go new file mode 100644 index 0000000000000..54b0675425025 --- /dev/null +++ b/lib/services/local/assistant_test.go @@ -0,0 +1,109 @@ +/* + * + * Copyright 2023 Gravitational, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * / + */ + +package local_test + +import ( + "context" + "testing" + "time" + + "github.com/jonboulle/clockwork" + "github.com/stretchr/testify/require" + + "github.com/gravitational/teleport/api/client/proto" +) + +// TestAssistantCRUD tests the assistant CRUD operations. +func TestAssistantCRUD(t *testing.T) { + t.Parallel() + + identity := newIdentityService(t, clockwork.NewFakeClock()) + ctx := context.Background() + + const username = "foo" + var conversationID string + + t.Run("create conversation", func(t *testing.T) { + req := &proto.CreateAssistantConversationRequest{ + CreatedTime: time.Now(), + } + + conversationResp, err := identity.CreateAssistantConversation(ctx, username, req) + require.NoError(t, err) + require.NotEmpty(t, conversationResp.Id) + + conversationID = conversationResp.Id + }) + + t.Run("get conversation", func(t *testing.T) { + conversations, err := identity.GetAssistantConversations(ctx, username, nil) + require.NoError(t, err) + require.Len(t, conversations.Conversations, 1) + require.Equal(t, conversationID, conversations.Conversations[0].Id) + }) + + t.Run("create message", func(t *testing.T) { + msg := &proto.AssistantMessage{ + CreatedTime: time.Now(), + ConversationId: conversationID, + Payload: "foo", + Type: "USER_MSG", + } + err := identity.CreateAssistantMessage(ctx, username, msg) + require.NoError(t, err) + }) + + t.Run("get messages", func(t *testing.T) { + messages, err := identity.GetAssistantMessages(ctx, username, conversationID) + require.NoError(t, err) + require.Len(t, messages.Messages, 1) + require.Equal(t, "foo", messages.Messages[0].Payload) + }) + + t.Run("set conversation title", func(t *testing.T) { + titleReq := &proto.ConversationInfo{ + Title: "bar", + Id: conversationID, + } + title := "bar" + err := identity.SetAssistantConversationTitle(ctx, username, titleReq) + require.NoError(t, err) + + conversations, err := identity.GetAssistantConversations(ctx, username, nil) + require.NoError(t, err) + require.Len(t, conversations.Conversations, 1) + require.Equal(t, title, conversations.Conversations[0].Title) + }) + + t.Run("conversations are sorted by created_time", func(t *testing.T) { + req := &proto.CreateAssistantConversationRequest{ + CreatedTime: time.Now().Add(time.Hour), + } + + conversationResp, err := identity.CreateAssistantConversation(ctx, username, req) + require.NoError(t, err) + require.NotEmpty(t, conversationResp.Id) + + conversations, err := identity.GetAssistantConversations(ctx, username, nil) + require.NoError(t, err) + require.Len(t, conversations.Conversations, 2) + require.Equal(t, conversationID, conversations.Conversations[0].Id) + require.Equal(t, conversationResp.Id, conversations.Conversations[1].Id) + }) +} diff --git a/lib/services/local/users.go b/lib/services/local/users.go index c8dea30cd4d56..ea219324cf0bc 100644 --- a/lib/services/local/users.go +++ b/lib/services/local/users.go @@ -37,7 +37,6 @@ import ( "golang.org/x/crypto/bcrypt" "golang.org/x/crypto/ssh" - "github.com/gravitational/teleport/api/client/proto" "github.com/gravitational/teleport/api/types" wantypes "github.com/gravitational/teleport/api/types/webauthn" "github.com/gravitational/teleport/api/utils/keys" @@ -1385,178 +1384,6 @@ func (s *IdentityService) CreateUserRecoveryAttempt(ctx context.Context, user st return trace.Wrap(err) } -// Conversation is a conversation entry in the backend. -type Conversation struct { - Title string `json:"title,omitempty"` - ConversationID string `json:"conversation_id"` - CreatedTime time.Time `json:"created_time"` -} - -// CreateAssistantConversation creates a new conversation entry in the backend. -func (s *IdentityService) CreateAssistantConversation(ctx context.Context, username string, - req *proto.CreateAssistantConversationRequest, -) (*proto.CreateAssistantConversationResponse, error) { - if username == "" { - return nil, trace.BadParameter("missing parameter username") - } - - conversationID := uuid.New().String() - payload := &Conversation{ - ConversationID: conversationID, - CreatedTime: req.CreatedTime, - } - - value, err := json.Marshal(payload) - if err != nil { - return nil, trace.Wrap(err) - } - - item := backend.Item{ - Key: backend.Key(assistantConversationPrefix, username, conversationID), - Value: value, - } - - _, err = s.Create(ctx, item) - if err != nil { - return nil, trace.Wrap(err) - } - - return &proto.CreateAssistantConversationResponse{Id: conversationID}, nil -} - -func (s *IdentityService) getConversation(ctx context.Context, username, conversationID string) (*Conversation, error) { - item, err := s.Get(ctx, backend.Key(assistantConversationPrefix, username, conversationID)) - if err != nil { - return nil, trace.Wrap(err) - } - - var conversation Conversation - if err := json.Unmarshal(item.Value, &conversation); err != nil { - return nil, trace.Wrap(err) - } - - return &conversation, nil -} - -// SetAssistantConversationTitle sets the given title as the assistant conversation title. -func (s *IdentityService) SetAssistantConversationTitle(ctx context.Context, username string, request *proto.ConversationInfo) error { - if request.Id == "" || request.Title == "" { - return trace.BadParameter("missing conversation ID or title") - } - - msg, err := s.getConversation(ctx, username, request.Id) - if err != nil { - return trace.Wrap(err) - } - - // Only update the title, leave the rest of the fields intact. - msg.Title = request.Title - - payload, err := json.Marshal(msg) - if err != nil { - return trace.Wrap(err) - } - - item := backend.Item{ - Key: backend.Key(assistantConversationPrefix, username, request.Id), - Value: payload, - } - - if _, err = s.Update(ctx, item); err != nil { - return trace.Wrap(err) - } - - return nil -} - -// GetAssistantConversations returns all conversations started by a user. -func (s *IdentityService) GetAssistantConversations(ctx context.Context, username string, _ *proto.GetAssistantConversationsRequest) (*proto.GetAssistantConversationsResponse, error) { - startKey := backend.Key(assistantConversationPrefix, username) - result, err := s.GetRange(ctx, startKey, backend.RangeEnd(startKey), backend.NoLimit) - if err != nil { - return nil, trace.Wrap(err) - } - - conversationsIDs := make([]*proto.ConversationInfo, 0, len(result.Items)) - for _, item := range result.Items { - payload := &Conversation{} - if err := json.Unmarshal(item.Value, payload); err != nil { - return nil, trace.Wrap(err) - } - - conversationsIDs = append(conversationsIDs, &proto.ConversationInfo{ - Id: payload.ConversationID, - Title: payload.Title, - CreatedTime: payload.CreatedTime, - }) - } - - sort.Slice(conversationsIDs, func(i, j int) bool { - return conversationsIDs[i].CreatedTime.Before(conversationsIDs[j].GetCreatedTime()) - }) - - return &proto.GetAssistantConversationsResponse{ - Conversations: conversationsIDs, - }, nil -} - -// GetAssistantMessages returns all messages with given conversation ID. -func (s *IdentityService) GetAssistantMessages(ctx context.Context, username, conversationId string) (*proto.GetAssistantMessagesResponse, error) { - if username == "" { - return nil, trace.BadParameter("missing username") - } - - if conversationId == "" { - return nil, trace.BadParameter("missing conversation ID") - } - - startKey := backend.Key(assistantMessagePrefix, username, conversationId) - result, err := s.GetRange(ctx, startKey, backend.RangeEnd(startKey), backend.NoLimit) - if err != nil { - return nil, trace.Wrap(err) - } - - out := make([]*proto.AssistantMessage, len(result.Items)) - for i, item := range result.Items { - var a proto.AssistantMessage - if err := json.Unmarshal(item.Value, &a); err != nil { - return nil, trace.Wrap(err) - } - out[i] = &a - } - - sort.Slice(out, func(i, j int) bool { - // Sort by created time. - return out[i].CreatedTime.Before(out[j].GetCreatedTime()) - }) - - return &proto.GetAssistantMessagesResponse{ - Messages: out, - }, nil -} - -// CreateAssistantMessage adds the message to the backend. -func (s *IdentityService) CreateAssistantMessage(ctx context.Context, username string, msg *proto.AssistantMessage) error { - if username == "" { - return trace.BadParameter("missing username") - } - - value, err := json.Marshal(msg) - if err != nil { - return trace.Wrap(err) - } - - messageID := uuid.New().String() - - item := backend.Item{ - Key: backend.Key(assistantMessagePrefix, username, msg.ConversationId, messageID), - Value: value, - } - - _, err = s.Create(ctx, item) - return trace.Wrap(err) -} - // GetUserRecoveryAttempts returns users recovery attempts. func (s *IdentityService) GetUserRecoveryAttempts(ctx context.Context, user string) ([]*types.RecoveryAttempt, error) { if user == "" { diff --git a/lib/services/local/users_test.go b/lib/services/local/users_test.go index 7904a35a3ff23..af0457891d844 100644 --- a/lib/services/local/users_test.go +++ b/lib/services/local/users_test.go @@ -28,7 +28,6 @@ import ( "github.com/go-webauthn/webauthn/protocol" "github.com/google/go-cmp/cmp" "github.com/google/uuid" - "github.com/gravitational/teleport/api/client/proto" "github.com/gravitational/trace" "github.com/jonboulle/clockwork" "github.com/stretchr/testify/require" @@ -939,82 +938,3 @@ func TestIdentityService_GetKeyAttestationDataV11Fingerprint(t *testing.T) { require.NoError(t, err) require.Equal(t, attestationData, retrievedAttestationData) } - -// TestAssistantCRUD tests the assistant CRUD operations. -func TestAssistantCRUD(t *testing.T) { - t.Parallel() - - identity := newIdentityService(t, clockwork.NewFakeClock()) - ctx := context.Background() - - const username = "foo" - var conversationID string - - t.Run("create conversation", func(t *testing.T) { - req := &proto.CreateAssistantConversationRequest{ - CreatedTime: time.Now(), - } - - conversationResp, err := identity.CreateAssistantConversation(ctx, username, req) - require.NoError(t, err) - require.NotEmpty(t, conversationResp.Id) - - conversationID = conversationResp.Id - }) - - t.Run("get conversation", func(t *testing.T) { - conversations, err := identity.GetAssistantConversations(ctx, username, nil) - require.NoError(t, err) - require.Len(t, conversations.Conversations, 1) - require.Equal(t, conversationID, conversations.Conversations[0].Id) - }) - - t.Run("create message", func(t *testing.T) { - msg := &proto.AssistantMessage{ - CreatedTime: time.Now(), - ConversationId: conversationID, - Payload: "foo", - Type: "USER_MSG", - } - err := identity.CreateAssistantMessage(ctx, username, msg) - require.NoError(t, err) - }) - - t.Run("get messages", func(t *testing.T) { - messages, err := identity.GetAssistantMessages(ctx, username, conversationID) - require.NoError(t, err) - require.Len(t, messages.Messages, 1) - require.Equal(t, "foo", messages.Messages[0].Payload) - }) - - t.Run("set conversation title", func(t *testing.T) { - titleReq := &proto.ConversationInfo{ - Title: "bar", - Id: conversationID, - } - title := "bar" - err := identity.SetAssistantConversationTitle(ctx, username, titleReq) - require.NoError(t, err) - - conversations, err := identity.GetAssistantConversations(ctx, username, nil) - require.NoError(t, err) - require.Len(t, conversations.Conversations, 1) - require.Equal(t, title, conversations.Conversations[0].Title) - }) - - t.Run("conversations are sorted by created_time", func(t *testing.T) { - req := &proto.CreateAssistantConversationRequest{ - CreatedTime: time.Now().Add(time.Hour), - } - - conversationResp, err := identity.CreateAssistantConversation(ctx, username, req) - require.NoError(t, err) - require.NotEmpty(t, conversationResp.Id) - - conversations, err := identity.GetAssistantConversations(ctx, username, nil) - require.NoError(t, err) - require.Len(t, conversations.Conversations, 2) - require.Equal(t, conversationID, conversations.Conversations[0].Id) - require.Equal(t, conversationResp.Id, conversations.Conversations[1].Id) - }) -} From 9d9d437668da11347075aa0264b7335ab33c1373 Mon Sep 17 00:00:00 2001 From: Jakub Nyckowski Date: Mon, 8 May 2023 16:51:55 -0400 Subject: [PATCH 04/10] Rename GRPC methods Fix comments --- api/client/client.go | 6 +- api/client/proto/authservice.pb.go | 458 +++++++++--------- .../legacy/client/proto/authservice.proto | 18 +- lib/auth/auth.go | 4 +- lib/auth/auth_with_roles.go | 6 +- lib/auth/clt.go | 4 +- lib/auth/grpcserver.go | 6 +- 7 files changed, 261 insertions(+), 241 deletions(-) diff --git a/api/client/client.go b/api/client/client.go index 01f1c9c6b9f86..36b4e854b7368 100644 --- a/api/client/client.go +++ b/api/client/client.go @@ -3682,9 +3682,9 @@ func (c *Client) GetAssistantConversations(ctx context.Context, request *proto.G return messages, nil } -// InsertAssistantMessage saves a new conversation message. -func (c *Client) InsertAssistantMessage(ctx context.Context, in *proto.AssistantMessage) (*emptypb.Empty, error) { - resp, err := c.grpc.InsertAssistantMessage(ctx, in) +// CreateAssistantMessage saves a new conversation message. +func (c *Client) CreateAssistantMessage(ctx context.Context, in *proto.AssistantMessage) (*emptypb.Empty, error) { + resp, err := c.grpc.CreateAssistantMessage(ctx, in) if err != nil { return nil, trail.FromGRPC(err) } diff --git a/api/client/proto/authservice.pb.go b/api/client/proto/authservice.pb.go index f123cd98aa41e..b3ef559518209 100644 --- a/api/client/proto/authservice.pb.go +++ b/api/client/proto/authservice.pb.go @@ -14046,8 +14046,9 @@ func (m *ExportUpgradeWindowsResponse) GetSystemdUnitSchedule() string { return "" } +// AssistantRequest is a request to the assistant service. type AssistantRequest struct { - // conversation_id it's the ID of a conversation. + // conversationId it's the ID of a conversation. // It's used to tie all messages in a one conversation. ConversationId string `protobuf:"bytes,1,opt,name=conversation_id,json=conversationId,proto3" json:"conversation_id,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-"` @@ -14095,8 +14096,10 @@ func (m *AssistantRequest) GetConversationId() string { return "" } +// AssistantMessage is a message sent to the assistant service. The conversation +// must be created first. type AssistantMessage struct { - // conversation_id used to tie all messages in a one conversation. + // conversationId used to tie all messages in a one conversation. ConversationId string `protobuf:"bytes,1,opt,name=conversation_id,json=conversationId,proto3" json:"conversation_id,omitempty"` // type is a type of message. It can be Chat response/query or a command to run. Type string `protobuf:"bytes,2,opt,name=type,proto3" json:"type,omitempty"` @@ -14170,6 +14173,7 @@ func (m *AssistantMessage) GetPayload() string { return "" } +// GetAssistantMessagesResponse is a response from the assistant service. type GetAssistantMessagesResponse struct { // messages is a list of messages. Messages []*AssistantMessage `protobuf:"bytes,1,rep,name=messages,proto3" json:"messages,omitempty"` @@ -14218,6 +14222,7 @@ func (m *GetAssistantMessagesResponse) GetMessages() []*AssistantMessage { return nil } +// GetAssistantConversationsRequest is a request to get a list of conversations. type GetAssistantConversationsRequest struct { XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_unrecognized []byte `json:"-"` @@ -14257,6 +14262,8 @@ func (m *GetAssistantConversationsRequest) XXX_DiscardUnknown() { var xxx_messageInfo_GetAssistantConversationsRequest proto.InternalMessageInfo +// ConversationInfo is a conversation info. It contains a conversation +// information like ID, title, created time. type ConversationInfo struct { // id is a unique conversation ID. Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` @@ -14323,6 +14330,7 @@ func (m *ConversationInfo) GetCreatedTime() time.Time { return time.Time{} } +// GetAssistantConversationsResponse is a response from the assistant service. type GetAssistantConversationsResponse struct { // conversations is a list of conversations. Conversations []*ConversationInfo `protobuf:"bytes,1,rep,name=conversations,proto3" json:"conversations,omitempty"` @@ -14371,6 +14379,7 @@ func (m *GetAssistantConversationsResponse) GetConversations() []*ConversationIn return nil } +// CreateAssistantConversationRequest is a request to create a new conversation. type CreateAssistantConversationRequest struct { // createdTime is the time when the conversation was created. CreatedTime time.Time `protobuf:"bytes,1,opt,name=created_time,json=createdTime,proto3,stdtime" json:"created_time"` @@ -14419,6 +14428,7 @@ func (m *CreateAssistantConversationRequest) GetCreatedTime() time.Time { return time.Time{} } +// CreateAssistantConversationResponse is a response from the assistant service. type CreateAssistantConversationResponse struct { // id is a unique conversation ID. Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` @@ -14700,7 +14710,7 @@ func init() { } var fileDescriptor_0ffcffcda38ae159 = []byte{ - // 13482 bytes of a gzipped FileDescriptorProto + // 13481 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xc4, 0x7d, 0x5b, 0x6c, 0x1c, 0x49, 0x92, 0x98, 0xba, 0x49, 0x8a, 0x64, 0xf0, 0xd5, 0x4a, 0x91, 0x62, 0xab, 0x49, 0xb1, 0xa5, 0xd2, 0x4a, 0xa3, 0xd1, 0xee, 0xea, 0x41, 0xcd, 0x7b, 0x66, 0x67, 0xb6, 0xbb, 0x49, 0x89, 0x94, 0x28, @@ -15337,213 +15347,213 @@ var fileDescriptor_0ffcffcda38ae159 = []byte{ 0x3f, 0xcf, 0xc1, 0x04, 0xe1, 0xe8, 0xc2, 0xf9, 0x21, 0x14, 0xb7, 0x7f, 0xc6, 0x65, 0x43, 0x6f, 0x6b, 0xd1, 0xfd, 0xb3, 0x76, 0x52, 0xe9, 0xf6, 0x49, 0x40, 0xf9, 0x2e, 0xe8, 0x52, 0x9b, 0x9c, 0x79, 0xff, 0xa3, 0xc8, 0x60, 0x99, 0x7d, 0x92, 0x4b, 0xb7, 0x06, 0x03, 0xca, 0xc8, 0x25, 0xb3, - 0x26, 0x66, 0x83, 0x12, 0x2c, 0x45, 0x90, 0xbe, 0x6e, 0x20, 0x9d, 0x60, 0x51, 0xeb, 0x44, 0x73, - 0xa0, 0x51, 0xf0, 0xe3, 0xcc, 0x37, 0x8d, 0x55, 0x95, 0x2e, 0x25, 0x0e, 0xd6, 0x2a, 0x91, 0x1f, - 0xd0, 0x36, 0x5c, 0xa9, 0xa7, 0x8c, 0x62, 0x87, 0xb2, 0x9e, 0xb4, 0x53, 0x9f, 0x4a, 0xf1, 0x4b, - 0x45, 0xad, 0xe1, 0x9f, 0x28, 0x9e, 0x1f, 0x20, 0x55, 0x87, 0xa1, 0x52, 0x5b, 0x29, 0xc3, 0x6a, - 0x41, 0x01, 0x6e, 0xe5, 0xee, 0xe5, 0x90, 0x4d, 0xed, 0xf5, 0x31, 0xbd, 0x49, 0x52, 0x36, 0xeb, - 0x61, 0xa5, 0x94, 0x6a, 0xa1, 0x6e, 0x3d, 0x86, 0x29, 0xa2, 0xce, 0xc8, 0x5a, 0xb4, 0x10, 0x87, - 0x57, 0x34, 0xa8, 0xd2, 0xa2, 0xb9, 0x52, 0x06, 0xf2, 0x9c, 0xa4, 0xfd, 0x23, 0xb3, 0xd9, 0xc2, - 0x01, 0x9a, 0x93, 0x69, 0xec, 0x59, 0x09, 0x73, 0x58, 0x28, 0x5d, 0x88, 0x15, 0x37, 0xee, 0xdf, - 0xcb, 0xa1, 0x3a, 0x7d, 0xf8, 0xa9, 0xe9, 0x45, 0x48, 0x78, 0x3a, 0x25, 0x15, 0x26, 0xd6, 0x9b, - 0x72, 0xb4, 0x5f, 0xcc, 0x0a, 0xd5, 0x26, 0xa0, 0xa4, 0xba, 0x81, 0xae, 0x46, 0x4b, 0x61, 0xd6, - 0x44, 0x52, 0x97, 0x77, 0x15, 0xa6, 0xf9, 0x41, 0xe3, 0x0a, 0x10, 0xca, 0x52, 0xa1, 0x52, 0xc9, - 0x3c, 0xa2, 0xf3, 0x24, 0x95, 0x28, 0x54, 0x52, 0xf6, 0x7d, 0x4c, 0xb3, 0x2a, 0x2d, 0x18, 0xeb, - 0xf8, 0xf8, 0x1e, 0xc2, 0xb4, 0xae, 0x8f, 0x21, 0xb1, 0x40, 0x46, 0x35, 0x2d, 0xb5, 0x43, 0x4d, - 0x98, 0x7f, 0xea, 0xb8, 0xd4, 0x44, 0xc1, 0xef, 0xdb, 0xc4, 0x6d, 0x19, 0x2a, 0x67, 0x5c, 0x9f, - 0xd5, 0x71, 0xb7, 0x5d, 0x1a, 0x14, 0xf2, 0x80, 0xee, 0xdc, 0xba, 0x50, 0x2b, 0xf4, 0xdb, 0x46, - 0x64, 0xe9, 0x79, 0x4c, 0x4c, 0x17, 0xc8, 0xa5, 0x34, 0x9f, 0x07, 0xf4, 0x94, 0xea, 0x35, 0x31, - 0x8a, 0xca, 0x9e, 0x38, 0x35, 0xb9, 0x22, 0x75, 0x92, 0x0e, 0xdd, 0xb8, 0xf3, 0x42, 0x80, 0x52, - 0x26, 0x2e, 0x95, 0xd8, 0xbd, 0x1c, 0xfa, 0x12, 0xac, 0x34, 0x72, 0xcf, 0xdc, 0xf0, 0x80, 0x3b, - 0xef, 0x2c, 0x18, 0x09, 0xf0, 0x83, 0x92, 0x41, 0xdd, 0x86, 0x59, 0x93, 0x9b, 0x85, 0x9c, 0xd0, - 0x0c, 0x1f, 0x8c, 0xd4, 0x5d, 0x60, 0x13, 0xed, 0xac, 0x9d, 0xbe, 0x48, 0x19, 0xb7, 0xfc, 0xa9, - 0x34, 0x3f, 0x81, 0x69, 0xb2, 0x4b, 0x9e, 0x60, 0xdc, 0xab, 0x74, 0xdc, 0x97, 0x38, 0x40, 0x22, - 0x1c, 0x88, 0x2c, 0x4a, 0xc3, 0xbd, 0x95, 0x43, 0xdf, 0x86, 0x89, 0x67, 0x4e, 0xd8, 0x3a, 0xe0, - 0xaf, 0xd7, 0xc5, 0xe3, 0x76, 0x5a, 0x56, 0x12, 0xbf, 0x68, 0xe5, 0xbd, 0x1c, 0xfa, 0x1e, 0x8c, - 0x3e, 0xc2, 0x21, 0xf5, 0x34, 0xbd, 0x26, 0x6f, 0x1c, 0x99, 0x77, 0xcf, 0x7a, 0x57, 0xfa, 0xe1, - 0x89, 0x0e, 0xc7, 0x8d, 0x5a, 0xe8, 0x2e, 0x00, 0x63, 0x08, 0x94, 0x42, 0xbc, 0xba, 0x94, 0xe8, - 0x36, 0x7a, 0x44, 0x04, 0xa3, 0x0e, 0x0e, 0xf1, 0x49, 0x9b, 0x4c, 0x9b, 0xa3, 0x0d, 0x98, 0x96, - 0xb1, 0x4f, 0x37, 0xe9, 0x53, 0x05, 0x2b, 0x46, 0x2c, 0x38, 0x05, 0xb5, 0x8f, 0xc8, 0xa9, 0x60, - 0x37, 0x80, 0x32, 0x54, 0x0a, 0x4a, 0x0b, 0x9e, 0x22, 0x27, 0x91, 0x81, 0x29, 0xb8, 0x6b, 0x5e, - 0x10, 0xea, 0xb8, 0xb2, 0xc4, 0x8c, 0x8b, 0xa1, 0xa4, 0xb6, 0xab, 0x87, 0x4d, 0x89, 0x78, 0x6e, - 0x5a, 0xb4, 0x97, 0xd2, 0xb5, 0x0c, 0x08, 0xc6, 0xee, 0x28, 0x27, 0x59, 0x81, 0x8b, 0xa2, 0x19, - 0x35, 0x41, 0xbf, 0xb8, 0xd3, 0x50, 0xca, 0x04, 0x61, 0x94, 0xac, 0x22, 0x5f, 0x3d, 0x2d, 0x5c, - 0x47, 0xf4, 0xd5, 0x33, 0xc4, 0x53, 0x89, 0xbe, 0x7a, 0xc6, 0x08, 0x1f, 0x4f, 0x98, 0x09, 0x4e, - 0x4b, 0xd3, 0xdd, 0x58, 0x46, 0xc2, 0xed, 0x58, 0xab, 0xe0, 0x07, 0xfb, 0x92, 0xa9, 0xae, 0xf1, - 0xe0, 0x5e, 0x0e, 0xad, 0xc2, 0x45, 0xf9, 0xb2, 0x24, 0xaa, 0x42, 0x29, 0x08, 0xa9, 0x9b, 0xe0, - 0x33, 0xb8, 0xc8, 0xb7, 0x94, 0x46, 0xa6, 0x20, 0xb9, 0x03, 0xbf, 0x86, 0x4c, 0x25, 0xf0, 0x18, - 0xe6, 0xea, 0xb1, 0x41, 0x31, 0xa7, 0x99, 0xcb, 0x3a, 0x09, 0x25, 0x23, 0x6a, 0x2a, 0xad, 0x27, - 0x80, 0x98, 0x95, 0x4b, 0x90, 0x7b, 0xe9, 0xe2, 0x57, 0xe8, 0x4a, 0x6c, 0x48, 0xa4, 0x90, 0x82, - 0x51, 0xf6, 0x92, 0x36, 0x45, 0x68, 0x87, 0x65, 0x74, 0x61, 0xd9, 0xd6, 0x9c, 0x9e, 0xb3, 0xe7, - 0x76, 0xdc, 0xd0, 0xc5, 0x64, 0x87, 0xa9, 0x08, 0x6a, 0x95, 0x58, 0xc6, 0xcb, 0xa9, 0x10, 0xe8, - 0x53, 0x98, 0x7a, 0x84, 0xc3, 0x28, 0xe9, 0x2b, 0x9a, 0x4f, 0xa4, 0x89, 0xe5, 0x4b, 0x27, 0xde, - 0x31, 0xea, 0x99, 0x66, 0xd7, 0xa1, 0xc0, 0xb8, 0xa3, 0x42, 0xe2, 0x4a, 0x82, 0x04, 0x07, 0x71, - 0x7c, 0xe7, 0x30, 0x48, 0x9d, 0xad, 0xbb, 0xec, 0x56, 0x0a, 0x89, 0x6d, 0xab, 0x8a, 0x5f, 0x17, - 0xb5, 0x32, 0x19, 0x77, 0x6a, 0xce, 0x98, 0xed, 0x14, 0x29, 0xe2, 0x74, 0x6a, 0x0a, 0xd3, 0x12, - 0x8a, 0xbf, 0x32, 0x6c, 0x3c, 0x40, 0x32, 0x01, 0x86, 0x81, 0xe8, 0x4d, 0xed, 0x8b, 0x7d, 0x3a, - 0xba, 0x9f, 0xc2, 0xb8, 0x4c, 0x9b, 0x19, 0xc9, 0xd6, 0xb1, 0xa4, 0xa3, 0xa5, 0x62, 0xb2, 0x82, - 0x8f, 0xf4, 0x13, 0x96, 0x24, 0x57, 0xc7, 0x8f, 0x67, 0x96, 0x4c, 0x9d, 0xd8, 0x0f, 0x61, 0x42, - 0xc9, 0x29, 0x29, 0x37, 0x72, 0x32, 0xcf, 0x64, 0x69, 0x4a, 0xe9, 0x7b, 0x63, 0xf9, 0x5e, 0x0e, - 0xdd, 0xa5, 0x9f, 0x16, 0xfa, 0xcc, 0x66, 0x2e, 0x42, 0x53, 0xb2, 0xc5, 0xc5, 0x50, 0xd0, 0xfb, - 0x34, 0x1a, 0x49, 0xad, 0xef, 0xfb, 0xb8, 0xcb, 0xf0, 0xd2, 0x24, 0x88, 0x18, 0xe2, 0xa7, 0x94, - 0x99, 0x28, 0x88, 0xcc, 0x0b, 0x65, 0x10, 0x36, 0x8b, 0x66, 0x7b, 0x2f, 0x87, 0x1e, 0xc0, 0x98, - 0x48, 0x41, 0x8d, 0x2e, 0xe9, 0x5d, 0x4d, 0x1f, 0xde, 0x03, 0x00, 0x36, 0xd9, 0xb4, 0xa7, 0x7a, - 0x75, 0xea, 0x74, 0x3e, 0x20, 0xdf, 0xcb, 0xf6, 0x29, 0x91, 0x3e, 0x15, 0xdf, 0x4c, 0x8a, 0x54, - 0xd4, 0x96, 0x50, 0x9d, 0xce, 0x34, 0x7c, 0x22, 0xf0, 0x6a, 0x99, 0xb1, 0x23, 0x81, 0xd7, 0x94, - 0x30, 0x3b, 0x95, 0xce, 0x3a, 0x14, 0x2a, 0x2d, 0xca, 0xc7, 0x65, 0x06, 0x3e, 0xa9, 0x6d, 0xc4, - 0x2b, 0x04, 0xad, 0xb9, 0x78, 0x42, 0xbf, 0x0d, 0xec, 0xd0, 0x00, 0x2d, 0xf3, 0x52, 0x26, 0x88, - 0x55, 0x99, 0x31, 0x32, 0xb4, 0x8b, 0xd9, 0x1a, 0xd1, 0x87, 0x3a, 0x5f, 0x8f, 0xcc, 0x47, 0x94, - 0x97, 0x29, 0xd9, 0x09, 0x2f, 0xc5, 0xf1, 0xa5, 0x1e, 0x26, 0x3c, 0x00, 0x25, 0x68, 0x05, 0x66, - 0x78, 0x38, 0x08, 0x39, 0x2d, 0x69, 0xd8, 0x69, 0xcd, 0xbf, 0x0f, 0xd3, 0xab, 0x84, 0xd7, 0xf7, - 0xdb, 0x2e, 0x0b, 0x4a, 0x85, 0xf4, 0x28, 0x43, 0xa9, 0x88, 0x6b, 0x22, 0xa9, 0xae, 0x92, 0xb6, - 0x4f, 0x9e, 0xd2, 0x64, 0x66, 0xc4, 0xd2, 0xac, 0x20, 0xab, 0x66, 0xf8, 0xe3, 0x7a, 0xf2, 0x7c, - 0x4a, 0xa2, 0x3c, 0x74, 0x43, 0xd3, 0xfd, 0xd2, 0xb2, 0xdd, 0x19, 0xa4, 0xbd, 0x2f, 0x94, 0xd4, - 0x21, 0x29, 0x34, 0xb3, 0x33, 0xe8, 0xa5, 0x8e, 0x5b, 0x86, 0x91, 0x31, 0x66, 0xba, 0x93, 0xc6, - 0xa0, 0xc1, 0xd9, 0xf0, 0x52, 0x5b, 0xa0, 0xba, 0xb5, 0x9e, 0x88, 0x0d, 0x2d, 0x65, 0xe7, 0x8b, - 0x53, 0x74, 0xeb, 0x94, 0x0c, 0x6e, 0x8f, 0xe9, 0x36, 0x8b, 0xf2, 0x8b, 0x20, 0x55, 0x53, 0x8d, - 0xa7, 0x57, 0x91, 0x22, 0x94, 0x39, 0x1b, 0xdb, 0x23, 0xca, 0x2e, 0x95, 0x5c, 0x25, 0xa9, 0x0c, - 0xef, 0x8a, 0x89, 0x4e, 0xa0, 0x7c, 0x0b, 0x67, 0x62, 0x79, 0xcd, 0xa4, 0x79, 0xc4, 0x9c, 0x59, - 0xad, 0xb4, 0x94, 0x56, 0xcd, 0x29, 0xd6, 0x45, 0x5a, 0x6c, 0x65, 0xa4, 0x4b, 0xba, 0xd1, 0x2d, - 0x31, 0xd8, 0x72, 0x6a, 0xbd, 0x9c, 0xbb, 0x42, 0x3c, 0x0f, 0x8d, 0x24, 0x9a, 0x92, 0xa0, 0x26, - 0x83, 0x25, 0xce, 0xaa, 0x5b, 0x63, 0xe0, 0x0c, 0xa6, 0xd1, 0xd9, 0x81, 0x39, 0x63, 0xda, 0x18, - 0x29, 0x46, 0x64, 0x25, 0x95, 0x49, 0xa5, 0x8a, 0xe1, 0x92, 0x39, 0x73, 0x14, 0xfa, 0x96, 0xae, - 0xfa, 0x9b, 0xf3, 0xe8, 0x94, 0x6e, 0x0c, 0x80, 0xe2, 0x13, 0xfa, 0x25, 0xfd, 0x6c, 0x26, 0xda, - 0xb8, 0xa6, 0x18, 0x03, 0x52, 0x1a, 0xb0, 0xb2, 0x40, 0xe4, 0x1e, 0x98, 0x35, 0x65, 0xae, 0x4b, - 0x9d, 0xe2, 0xeb, 0xe9, 0x34, 0xa3, 0x8d, 0xd5, 0x10, 0xc1, 0x5b, 0x52, 0x67, 0x26, 0x33, 0xc3, - 0x50, 0x86, 0x36, 0x59, 0x92, 0xfb, 0xe1, 0xe4, 0x5d, 0x4e, 0xb7, 0x0c, 0xcd, 0x9a, 0xf2, 0x5a, - 0xc5, 0x0d, 0x37, 0xa6, 0xb4, 0x45, 0x72, 0x1a, 0x32, 0x13, 0x63, 0x35, 0x98, 0x11, 0x47, 0xa7, - 0xae, 0x1a, 0x71, 0x8c, 0xa4, 0xaf, 0xa6, 0x03, 0x44, 0x3b, 0xc2, 0x90, 0xa0, 0x4f, 0xee, 0x88, - 0xf4, 0x54, 0x81, 0x72, 0x47, 0x64, 0xe5, 0xf7, 0xb3, 0xc5, 0xa1, 0x4b, 0x99, 0x96, 0x8c, 0x6c, - 0x4e, 0x19, 0x2a, 0x57, 0x31, 0x5a, 0xb8, 0x58, 0xb7, 0x4f, 0xbb, 0x6c, 0x5f, 0xc2, 0xe5, 0xd4, - 0xcc, 0x4d, 0xd2, 0xd4, 0x3f, 0x28, 0xb7, 0x53, 0x46, 0x4f, 0xa7, 0xb4, 0xa4, 0x4b, 0xd2, 0x8a, - 0x15, 0xcb, 0xef, 0x94, 0x60, 0xfd, 0x86, 0xe4, 0x4f, 0x8c, 0xf5, 0x2b, 0x09, 0x9c, 0x4e, 0xc2, - 0xfa, 0x4d, 0xf9, 0x9e, 0x24, 0x4f, 0x55, 0xfa, 0x25, 0x44, 0xba, 0x78, 0xc5, 0x69, 0x78, 0xea, - 0x49, 0xba, 0x96, 0x46, 0x67, 0x85, 0xaa, 0x1c, 0x22, 0x9f, 0x13, 0xba, 0xac, 0x4d, 0x93, 0xf6, - 0xb9, 0x2d, 0x69, 0x83, 0xd3, 0xbf, 0xb4, 0x35, 0x6a, 0x2e, 0x96, 0xf9, 0xa3, 0x52, 0x7b, 0xb1, - 0x90, 0xa4, 0xa1, 0x99, 0x8a, 0xe5, 0x2c, 0xb0, 0xde, 0x2c, 0xc6, 0x27, 0x47, 0xeb, 0x50, 0xfa, - 0x90, 0x90, 0x3a, 0x35, 0x03, 0xba, 0x94, 0x2e, 0xea, 0x5e, 0x64, 0xca, 0x03, 0x8b, 0xae, 0x28, - 0xde, 0x58, 0x5f, 0x92, 0x76, 0x2f, 0xa5, 0x34, 0xc3, 0xcc, 0xb1, 0x4d, 0xfd, 0x25, 0x0d, 0xa9, - 0xb0, 0x24, 0x0f, 0xcd, 0xcc, 0x94, 0x65, 0x10, 0xf3, 0x24, 0x57, 0x4e, 0xa5, 0x98, 0x99, 0x1b, - 0x2b, 0xb5, 0xa7, 0x3f, 0x51, 0xb8, 0x72, 0x22, 0xe1, 0x15, 0xba, 0x15, 0x97, 0xf1, 0xd2, 0x72, - 0x62, 0x65, 0x70, 0xfd, 0x59, 0x53, 0xae, 0x2c, 0xc5, 0x76, 0x9b, 0x9a, 0x48, 0xcb, 0x30, 0x0b, - 0x92, 0xbd, 0xa5, 0x50, 0xcb, 0xc8, 0x9c, 0x95, 0xda, 0xc3, 0x1f, 0x2a, 0xec, 0x2d, 0x96, 0xe1, - 0x4a, 0x1a, 0x15, 0x06, 0xa4, 0xc0, 0x4a, 0xa5, 0xbd, 0x49, 0x3d, 0x6c, 0x93, 0xe9, 0xa9, 0xa4, - 0xec, 0x92, 0x95, 0xbc, 0xca, 0x68, 0xda, 0x9d, 0x4b, 0x0e, 0x91, 0xd0, 0xbb, 0x14, 0x33, 0xcc, - 0x0e, 0xea, 0x98, 0xe4, 0xc3, 0x86, 0xb4, 0x56, 0x31, 0x3e, 0x9c, 0x9e, 0xf8, 0x2a, 0x43, 0x63, - 0x9a, 0xa9, 0xbb, 0xfb, 0x5d, 0x25, 0x53, 0x95, 0xd4, 0x97, 0x92, 0x89, 0xb2, 0x24, 0x8b, 0x31, - 0x25, 0xb6, 0xda, 0x8a, 0x5e, 0xde, 0xa8, 0x39, 0x87, 0x50, 0x29, 0x3d, 0xd5, 0x92, 0x64, 0x37, - 0xc6, 0x24, 0x45, 0x0a, 0x41, 0x35, 0xe1, 0x8f, 0x24, 0x68, 0xc8, 0x3d, 0x24, 0x09, 0x1a, 0x33, - 0x04, 0x31, 0x13, 0x8c, 0xed, 0x75, 0xb0, 0x6a, 0x82, 0x51, 0xd2, 0xf5, 0xc4, 0x6c, 0x21, 0xe8, - 0x63, 0x6a, 0x09, 0xc9, 0x36, 0x9f, 0xcc, 0xeb, 0x94, 0x54, 0x3f, 0x18, 0x7e, 0x19, 0x40, 0x1b, - 0xd4, 0x29, 0x0f, 0x36, 0x6e, 0x50, 0x24, 0xdd, 0xb8, 0xa1, 0x76, 0x34, 0xdd, 0x4e, 0x3a, 0xa9, - 0x86, 0x7b, 0x97, 0x73, 0x65, 0xc8, 0x49, 0x21, 0xe7, 0xca, 0x94, 0xe9, 0x81, 0xea, 0xc0, 0x3b, - 0x42, 0x93, 0x8f, 0xe8, 0x5d, 0xc9, 0x4c, 0xd5, 0x50, 0x5a, 0xca, 0xce, 0x6f, 0xc0, 0xef, 0xf1, - 0x0a, 0xf1, 0x88, 0xf4, 0xc8, 0x94, 0x69, 0x43, 0x09, 0xf4, 0x2f, 0xb5, 0xa1, 0xd4, 0x50, 0xf6, - 0xdb, 0xc2, 0x58, 0xad, 0xd3, 0x4d, 0xc9, 0xb7, 0xa0, 0x92, 0xce, 0x16, 0x50, 0xa2, 0xe0, 0xf4, - 0xaa, 0x6e, 0x9a, 0x08, 0x7e, 0xaf, 0x0a, 0x28, 0x86, 0x78, 0xf6, 0xae, 0xf4, 0xd5, 0x30, 0xe6, - 0x7c, 0x8a, 0xf9, 0x6a, 0x64, 0x84, 0x2d, 0x1a, 0x78, 0x53, 0x8a, 0x7e, 0x2c, 0x72, 0x3b, 0x27, - 0x73, 0x9b, 0xdc, 0x88, 0x99, 0x5d, 0xcd, 0x81, 0x6e, 0x4a, 0x59, 0xa9, 0x53, 0xd0, 0x53, 0x7a, - 0xc5, 0xbe, 0xb5, 0xbe, 0x52, 0xe3, 0x3e, 0xaa, 0x9e, 0x9f, 0xb8, 0xb6, 0x7a, 0xe6, 0x86, 0x07, - 0x2c, 0xd9, 0x8f, 0xc2, 0x7d, 0x18, 0x88, 0x86, 0xd8, 0x78, 0x80, 0xea, 0x54, 0x72, 0xd7, 0x4a, - 0x0d, 0x37, 0x57, 0x06, 0x82, 0x25, 0x33, 0x41, 0x9a, 0x9e, 0x90, 0x0a, 0x06, 0xe4, 0xe0, 0xe9, - 0xdd, 0x4c, 0xe9, 0x43, 0x96, 0x7c, 0xc1, 0xb6, 0x8d, 0x99, 0xcc, 0x49, 0xd9, 0xf7, 0x23, 0x98, - 0x63, 0x13, 0x1e, 0x7b, 0x16, 0xa7, 0xf5, 0x47, 0x29, 0x2f, 0xa5, 0x94, 0xa3, 0x4d, 0xea, 0xb9, - 0x11, 0x2f, 0x55, 0xb4, 0x18, 0xf3, 0xbb, 0xbb, 0x54, 0x7a, 0x6c, 0x29, 0x89, 0xd8, 0xfe, 0x46, - 0x4b, 0xa9, 0x21, 0x36, 0x96, 0xf9, 0x52, 0x6a, 0xa5, 0xa7, 0x5b, 0xca, 0x18, 0x41, 0x7d, 0x29, - 0xf5, 0x6e, 0xa6, 0xf4, 0x61, 0xf0, 0x52, 0x9a, 0xc9, 0x9c, 0x7a, 0x29, 0x63, 0x6f, 0x12, 0xb5, - 0xfe, 0x98, 0x96, 0x32, 0x0e, 0xcf, 0x96, 0x32, 0x5e, 0x1a, 0x53, 0x48, 0x33, 0x96, 0x32, 0x8e, - 0xf9, 0x39, 0xa5, 0xc7, 0x1e, 0x3d, 0x9e, 0x6a, 0x31, 0x45, 0x38, 0x9e, 0x18, 0x6a, 0xe3, 0x01, - 0x7a, 0x46, 0xad, 0x21, 0xb1, 0xf2, 0x93, 0x2d, 0xe8, 0x62, 0x1a, 0x51, 0xba, 0xa4, 0xeb, 0x42, - 0xce, 0x8a, 0x77, 0x37, 0xb5, 0x2f, 0x59, 0xeb, 0xc1, 0x96, 0x35, 0x4e, 0xea, 0xb4, 0x0b, 0xfb, - 0x54, 0x30, 0xcd, 0xc4, 0xbb, 0xd1, 0x58, 0xaf, 0xd4, 0xc5, 0x4d, 0xad, 0xe1, 0x4e, 0x6b, 0xc9, - 0x72, 0xc5, 0x4e, 0x94, 0xf6, 0x40, 0x75, 0x20, 0xd5, 0xc4, 0x43, 0x54, 0x95, 0x6a, 0xda, 0x2b, - 0x55, 0x49, 0x35, 0x89, 0xbd, 0x42, 0x8f, 0xed, 0x8e, 0x4f, 0xd4, 0xa4, 0x76, 0x52, 0x87, 0xd2, - 0xe7, 0x4f, 0xdc, 0x68, 0xea, 0xe0, 0x8d, 0x65, 0xb4, 0x4e, 0x37, 0xa0, 0x5e, 0x9c, 0xa5, 0x64, - 0x9a, 0xc9, 0xd0, 0xfd, 0xb1, 0x26, 0xfd, 0xfb, 0xf5, 0x3e, 0xa5, 0xb5, 0x9d, 0xde, 0x29, 0xa9, - 0x81, 0x9f, 0x70, 0x74, 0x69, 0xbb, 0x83, 0x49, 0x81, 0x4c, 0xe1, 0x1d, 0x34, 0x33, 0xf1, 0x17, - 0x07, 0xe8, 0xfb, 0x30, 0x2e, 0x90, 0x07, 0x4f, 0x48, 0x1c, 0x9b, 0x4e, 0xc8, 0xa7, 0x30, 0xa1, - 0x3c, 0x78, 0x40, 0x69, 0x2d, 0x65, 0x88, 0x94, 0x13, 0xca, 0x73, 0x8c, 0xd3, 0xe3, 0xaf, 0xc0, - 0x94, 0xf6, 0x9c, 0x43, 0x0a, 0x42, 0xa6, 0x47, 0x1e, 0x59, 0x54, 0xb4, 0x67, 0x1b, 0x92, 0x8a, - 0xe9, 0x31, 0x47, 0xb6, 0x50, 0xa6, 0x3c, 0x4d, 0x57, 0x84, 0xb2, 0xe4, 0x1b, 0x79, 0x45, 0x28, - 0x33, 0xbd, 0x66, 0xff, 0x1e, 0x4c, 0xf0, 0xed, 0x91, 0xb9, 0xb2, 0xe9, 0xda, 0xf2, 0x9c, 0xe2, - 0x33, 0xd8, 0x6f, 0xbb, 0x61, 0xcd, 0xeb, 0x3e, 0x77, 0xf7, 0x07, 0x2e, 0x72, 0x12, 0xa5, 0xb1, - 0x8c, 0x1a, 0x34, 0xd1, 0x80, 0x48, 0xff, 0x80, 0xc3, 0x57, 0x9e, 0xff, 0xc2, 0xed, 0xee, 0x0f, - 0x20, 0x79, 0x55, 0x27, 0x19, 0xc7, 0x63, 0x74, 0xeb, 0xe9, 0x74, 0x07, 0xe2, 0x67, 0x68, 0xcb, - 0x8b, 0xf4, 0xde, 0xfe, 0xb4, 0x3d, 0x4e, 0xbf, 0x39, 0xb8, 0x1c, 0x79, 0xdb, 0xd9, 0xb8, 0xe5, - 0xf9, 0xed, 0xc1, 0xc4, 0xca, 0xba, 0x6f, 0x5b, 0x0c, 0xad, 0xb1, 0x4c, 0xa8, 0xd6, 0x53, 0xa9, - 0x0e, 0xc2, 0xce, 0xf8, 0x5a, 0x2c, 0xd0, 0xb1, 0x9f, 0xb2, 0xb7, 0xe9, 0x27, 0x83, 0x70, 0x60, - 0xc2, 0xe9, 0xb7, 0x7d, 0xfc, 0x1c, 0xfb, 0xd4, 0x65, 0x72, 0x90, 0xb3, 0xa0, 0x0e, 0xde, 0x58, - 0x26, 0x54, 0xea, 0x09, 0x2a, 0x69, 0xd0, 0x59, 0x82, 0x12, 0x1d, 0xda, 0x09, 0x7b, 0x93, 0x46, - 0xe6, 0x03, 0x6a, 0xb3, 0xdc, 0x5d, 0x1f, 0x30, 0x23, 0xc2, 0x89, 0x57, 0x00, 0x36, 0xee, 0x13, - 0xcc, 0xba, 0x82, 0x99, 0x84, 0x48, 0x6d, 0xf3, 0xfb, 0xc2, 0x38, 0x39, 0xb0, 0xd9, 0x74, 0x6f, - 0x84, 0x71, 0x99, 0x04, 0x09, 0x29, 0x6a, 0xbd, 0x96, 0xe2, 0xa7, 0x34, 0xa5, 0xba, 0x0c, 0x06, - 0xa8, 0xc2, 0xa4, 0x68, 0x35, 0x19, 0x90, 0x72, 0x2f, 0x6a, 0xcc, 0x12, 0x14, 0x27, 0xc1, 0xcc, - 0x12, 0x1b, 0x5e, 0xeb, 0x85, 0x6a, 0x96, 0x50, 0xb2, 0xcb, 0x94, 0xf4, 0xdc, 0x2f, 0xfc, 0x83, - 0x44, 0x13, 0xc0, 0xa8, 0x0e, 0x1a, 0x6a, 0x7e, 0x19, 0xd5, 0x2c, 0xa1, 0x67, 0xc2, 0x91, 0x66, - 0x09, 0xda, 0xa0, 0x4e, 0x79, 0xb0, 0x59, 0x82, 0x22, 0xe9, 0x66, 0x09, 0xb5, 0xa3, 0xe9, 0xec, - 0x02, 0x25, 0x53, 0xe1, 0x48, 0x81, 0x37, 0x35, 0x4b, 0x4e, 0x86, 0xef, 0xc5, 0x45, 0x43, 0xf6, - 0x2e, 0xa9, 0xee, 0xa7, 0x67, 0xf6, 0x2a, 0xe9, 0x8e, 0x04, 0xf7, 0x72, 0x68, 0x13, 0x2e, 0x3d, - 0xc2, 0x21, 0x67, 0x60, 0x36, 0x0e, 0x42, 0xdf, 0x6d, 0x85, 0x99, 0x96, 0x7a, 0x21, 0xdf, 0x1a, - 0x70, 0x1a, 0xef, 0x10, 0x7a, 0x75, 0x33, 0xbd, 0x4c, 0xbc, 0x0c, 0x8b, 0x0e, 0x37, 0xff, 0x9d, - 0xa6, 0x8b, 0xe9, 0x5b, 0x7c, 0x94, 0xdd, 0x7a, 0xa7, 0xa3, 0x16, 0xa2, 0xe8, 0xad, 0x5c, 0x62, - 0xbf, 0x03, 0xe7, 0x19, 0x52, 0xea, 0x37, 0x72, 0x52, 0xc5, 0x41, 0xf7, 0x85, 0x8b, 0x16, 0x41, - 0xd1, 0xaa, 0x52, 0xfb, 0x75, 0x1f, 0xc6, 0x99, 0x2d, 0xff, 0xe4, 0x28, 0x1f, 0x0b, 0x47, 0xae, - 0xac, 0x8e, 0xa5, 0xfb, 0x36, 0x4e, 0xa9, 0x17, 0xde, 0xa7, 0x9f, 0xc8, 0xef, 0xd1, 0xfb, 0x14, - 0x61, 0xb6, 0x4c, 0xc7, 0x9f, 0x8b, 0xc5, 0x3b, 0xe5, 0x53, 0xca, 0x18, 0xa4, 0x4c, 0x83, 0x97, - 0xd6, 0xfd, 0x0b, 0x09, 0x6c, 0xf4, 0xb1, 0x78, 0x3e, 0x20, 0x91, 0x93, 0x40, 0x19, 0x73, 0x36, - 0xcd, 0xa6, 0xf9, 0x4d, 0x90, 0x25, 0x83, 0x1d, 0xd8, 0xed, 0x93, 0xdc, 0xfb, 0x0c, 0x9e, 0xba, - 0x34, 0x2a, 0x5b, 0x54, 0xf0, 0x4a, 0x44, 0xe2, 0x4d, 0x27, 0xb4, 0x94, 0x1e, 0xbc, 0x97, 0x2e, - 0xc6, 0x63, 0xaa, 0x58, 0x25, 0x53, 0x1a, 0xa6, 0x0d, 0x2f, 0x23, 0x18, 0x70, 0xa4, 0x49, 0x26, - 0xc9, 0x65, 0xa0, 0x65, 0x29, 0xa6, 0x6c, 0xc1, 0xce, 0x86, 0xdc, 0xba, 0x70, 0x40, 0x3a, 0xf9, - 0x60, 0x33, 0x84, 0x20, 0xc3, 0x4d, 0xd3, 0xc0, 0xb5, 0x48, 0x23, 0xf7, 0x63, 0x2a, 0xff, 0x99, - 0xf3, 0x98, 0xa5, 0x12, 0x53, 0x9e, 0x91, 0x0d, 0xc8, 0x80, 0xf6, 0x82, 0xbe, 0xcb, 0x30, 0xc7, - 0x2a, 0xbe, 0x39, 0x80, 0x8a, 0x98, 0x89, 0xb7, 0x06, 0xc2, 0xc9, 0x7b, 0x8b, 0x05, 0xf6, 0x85, - 0x35, 0xb7, 0x37, 0x20, 0xf6, 0xb2, 0xe1, 0x2a, 0x29, 0x25, 0x49, 0x98, 0x20, 0xa8, 0x7b, 0x77, - 0x65, 0x8e, 0x21, 0x6d, 0xfa, 0x3f, 0x87, 0x72, 0x74, 0x23, 0x7b, 0xba, 0x45, 0x48, 0x97, 0xe8, - 0x51, 0x32, 0x75, 0x1a, 0xca, 0x8a, 0x62, 0x5b, 0xba, 0x96, 0x36, 0xc3, 0x81, 0x72, 0xd5, 0xcf, - 0x7d, 0x49, 0x62, 0x51, 0xbb, 0xd3, 0xe2, 0x7f, 0x67, 0xd8, 0x8e, 0xf8, 0x43, 0x95, 0x33, 0x21, - 0x94, 0x5c, 0xed, 0xd3, 0x13, 0x92, 0x17, 0xa6, 0x31, 0x42, 0x56, 0xc6, 0xf2, 0x9e, 0xc6, 0x1f, - 0x24, 0xbe, 0x14, 0xa7, 0x5d, 0x50, 0x27, 0x7a, 0x9c, 0x91, 0xcc, 0xef, 0x26, 0x65, 0xb9, 0xd4, - 0x5c, 0x73, 0x72, 0x75, 0x33, 0x92, 0xc3, 0xd5, 0xc8, 0x31, 0x65, 0x4d, 0x68, 0xc9, 0xa5, 0x6a, - 0xf6, 0x46, 0x64, 0x75, 0x30, 0x64, 0x9d, 0x2a, 0x81, 0xa8, 0xb4, 0x37, 0x50, 0x1d, 0x4a, 0x6c, - 0x8b, 0x98, 0xa2, 0x68, 0x48, 0x8f, 0x7a, 0x53, 0x65, 0x86, 0x76, 0x51, 0x87, 0x12, 0xdb, 0x2e, - 0x67, 0x49, 0xb4, 0x49, 0x13, 0x89, 0x1a, 0x29, 0xde, 0x50, 0x9e, 0x25, 0xa6, 0xc7, 0x26, 0x29, - 0x65, 0x37, 0x8c, 0x7e, 0x04, 0x73, 0xc6, 0xe0, 0x24, 0xf2, 0x4e, 0x3b, 0x2b, 0x74, 0xc9, 0x20, - 0xe2, 0x2f, 0xa0, 0x98, 0x96, 0x09, 0x2a, 0xf2, 0xf0, 0xcf, 0x4e, 0xcf, 0x25, 0x79, 0xea, 0xc0, - 0x94, 0x52, 0x9b, 0x30, 0x6b, 0xca, 0xae, 0x24, 0x0f, 0x47, 0x46, 0xea, 0x25, 0xe3, 0x33, 0x82, - 0x6d, 0x98, 0x33, 0x66, 0x38, 0x92, 0x33, 0x93, 0x95, 0xff, 0xc8, 0x48, 0xf1, 0x0b, 0x98, 0x4f, - 0x49, 0xe7, 0x13, 0x5d, 0xbc, 0x65, 0xa6, 0xfb, 0xc9, 0x70, 0x00, 0x28, 0xa5, 0x67, 0x8a, 0x91, - 0x7e, 0x1f, 0x03, 0x93, 0xc9, 0x94, 0x8c, 0xe9, 0xb3, 0xd0, 0x0e, 0xdd, 0x84, 0xa6, 0xd4, 0x31, - 0xea, 0x26, 0xcc, 0x48, 0x2d, 0x93, 0xf2, 0xfc, 0x63, 0x3e, 0x25, 0x5b, 0x4c, 0x06, 0xd5, 0x13, - 0xf4, 0x76, 0x53, 0xf0, 0x7f, 0x3d, 0x7d, 0x48, 0xcc, 0x97, 0xd0, 0x98, 0x5b, 0xc4, 0xd8, 0x4f, - 0xe5, 0xb9, 0x71, 0xa7, 0x93, 0x21, 0x06, 0x21, 0xf5, 0xbd, 0x31, 0x81, 0x6c, 0xdc, 0x27, 0x4a, - 0x84, 0x8a, 0x9b, 0xc5, 0x51, 0x13, 0xc8, 0x54, 0xf0, 0xfc, 0x08, 0x26, 0xeb, 0x6a, 0xe3, 0x86, - 0x46, 0x52, 0x37, 0x85, 0xf4, 0xb2, 0x1f, 0xdc, 0xf7, 0x81, 0xb7, 0x62, 0x95, 0x4e, 0xe7, 0x44, - 0xa3, 0x48, 0xb5, 0xc9, 0x6a, 0xe1, 0xd5, 0x25, 0xa7, 0x36, 0x65, 0x0d, 0x90, 0x36, 0x59, 0x73, - 0x44, 0xf6, 0x55, 0x3a, 0xa5, 0x51, 0x70, 0xda, 0x0c, 0x1d, 0x5c, 0x6e, 0x22, 0x43, 0x0c, 0xdc, - 0x27, 0xea, 0x43, 0x70, 0x16, 0xd2, 0x36, 0xc3, 0x88, 0x18, 0x7f, 0x00, 0x1e, 0x8b, 0x81, 0xdb, - 0x80, 0xa2, 0x08, 0x2e, 0xc9, 0xc2, 0x3b, 0x46, 0xe1, 0xec, 0x22, 0xd7, 0xa8, 0xf4, 0xe8, 0x93, - 0x19, 0xf3, 0x56, 0x88, 0x07, 0x6e, 0x92, 0x96, 0xa3, 0x94, 0x88, 0x4e, 0x19, 0xbb, 0x01, 0xa2, - 0xf0, 0x4c, 0xd2, 0x3e, 0x93, 0x88, 0xd8, 0x54, 0xba, 0x6c, 0xa8, 0x91, 0x92, 0xd5, 0xa4, 0x1a, - 0xcc, 0x49, 0x7a, 0x8e, 0x18, 0x22, 0x3c, 0x95, 0x16, 0x8c, 0x75, 0x9c, 0x50, 0x08, 0x0b, 0x19, - 0x89, 0x54, 0xa5, 0xb4, 0x3a, 0x38, 0xe1, 0xab, 0x0c, 0x4c, 0x71, 0x92, 0xbc, 0xac, 0x58, 0x06, - 0x8b, 0x4d, 0x42, 0xa9, 0x81, 0x29, 0x32, 0x73, 0x94, 0x96, 0x06, 0xe5, 0x70, 0x45, 0xcf, 0x60, - 0x31, 0xe6, 0x8a, 0xac, 0xb7, 0x34, 0x88, 0x40, 0xea, 0x0a, 0x3e, 0x83, 0x45, 0xfe, 0x36, 0xfa, - 0x8c, 0x09, 0xef, 0xc1, 0x62, 0x56, 0x76, 0x56, 0x74, 0xdb, 0xec, 0x6e, 0x6c, 0x9c, 0x9e, 0x74, - 0xd1, 0xf5, 0x6a, 0xd2, 0xed, 0x38, 0xb6, 0xee, 0xa7, 0x65, 0x2b, 0x4f, 0x61, 0x5a, 0xcf, 0xcc, - 0x8a, 0x54, 0xd6, 0x91, 0xc8, 0x13, 0x5b, 0xba, 0x92, 0x52, 0xcb, 0xf7, 0xc7, 0xa7, 0x94, 0xd1, - 0xcb, 0x0a, 0x35, 0x5e, 0x42, 0x3c, 0xf3, 0x69, 0xc9, 0x90, 0x44, 0x06, 0x7d, 0x0f, 0x66, 0xa2, - 0xf7, 0x6d, 0x8c, 0x84, 0x01, 0x2c, 0xc3, 0x5e, 0x34, 0x13, 0xbd, 0x74, 0x3b, 0x3d, 0xfa, 0x9a, - 0xe0, 0xf6, 0x11, 0xfa, 0x95, 0x84, 0x07, 0xb6, 0x36, 0x86, 0x93, 0x30, 0x7d, 0x65, 0x6e, 0x4f, - 0xbb, 0x3a, 0x2d, 0x7a, 0xdc, 0xcc, 0x51, 0xca, 0xd4, 0xe3, 0x96, 0x19, 0x49, 0x4d, 0x4a, 0x98, - 0x29, 0x74, 0x3a, 0x70, 0x6d, 0x60, 0x5c, 0x35, 0x74, 0x57, 0x8b, 0x2c, 0x30, 0x38, 0x02, 0x5b, - 0xd6, 0x33, 0x05, 0x53, 0x78, 0x32, 0xc9, 0xe3, 0x33, 0x22, 0xa5, 0xc9, 0x67, 0x0a, 0x99, 0xf1, - 0xcd, 0xbe, 0xa0, 0x91, 0xa4, 0xf9, 0x47, 0x86, 0xc6, 0xca, 0xc0, 0x5d, 0xa7, 0xdb, 0xc2, 0x03, - 0xae, 0x2b, 0xae, 0xe9, 0x97, 0x74, 0x09, 0x44, 0x2a, 0xe7, 0x2f, 0x71, 0xed, 0x24, 0x8d, 0xf8, - 0x60, 0x22, 0x69, 0xf3, 0x52, 0x5d, 0xf9, 0xc5, 0x9f, 0x2f, 0xe5, 0x7e, 0xf1, 0xcb, 0xa5, 0xdc, - 0x7f, 0xfa, 0xe5, 0x52, 0xee, 0x7f, 0xfc, 0x72, 0x29, 0xf7, 0xc3, 0xe5, 0x93, 0x05, 0x7f, 0x6d, - 0x75, 0x5c, 0xdc, 0x0d, 0xef, 0x32, 0x72, 0xe7, 0xe9, 0x7f, 0x0f, 0xfe, 0x5f, 0x00, 0x00, 0x00, - 0xff, 0xff, 0x97, 0x7d, 0x9e, 0xb2, 0xaf, 0xd4, 0x00, 0x00, + 0x26, 0x66, 0x83, 0x12, 0x2c, 0x45, 0x90, 0xbe, 0x6e, 0x20, 0x9d, 0x60, 0x51, 0xeb, 0x70, 0x29, + 0x36, 0x58, 0xc1, 0x7c, 0xd3, 0x58, 0x55, 0xe9, 0x52, 0xe2, 0x60, 0xad, 0x12, 0xf9, 0x01, 0x6d, + 0xc3, 0x95, 0x7a, 0xca, 0x28, 0x76, 0x28, 0xeb, 0x49, 0x3b, 0xf5, 0xa9, 0x14, 0xbf, 0x54, 0xd4, + 0x1a, 0xfe, 0x89, 0xe2, 0xf9, 0x01, 0x52, 0x75, 0x18, 0x2a, 0xb5, 0x95, 0x32, 0xac, 0x16, 0x14, + 0xe0, 0x56, 0xee, 0x5e, 0x0e, 0xd9, 0xd4, 0x5e, 0x1f, 0xd3, 0x9b, 0x24, 0x65, 0xb3, 0x1e, 0x56, + 0x4a, 0xa9, 0x16, 0xea, 0xd6, 0x63, 0x98, 0x22, 0xea, 0x8c, 0xac, 0x45, 0x0b, 0x71, 0x78, 0x45, + 0x83, 0x2a, 0x2d, 0x9a, 0x2b, 0x65, 0x20, 0xcf, 0x49, 0xda, 0x3f, 0x32, 0x9b, 0x2d, 0x1c, 0xa0, + 0x39, 0x99, 0xc6, 0x9e, 0x95, 0x30, 0x87, 0x85, 0xd2, 0x85, 0x58, 0x71, 0xe3, 0xfe, 0xbd, 0x1c, + 0xaa, 0xd3, 0x87, 0x9f, 0x9a, 0x5e, 0x84, 0x84, 0xa7, 0x53, 0x52, 0x61, 0x62, 0xbd, 0x29, 0x47, + 0xfb, 0xc5, 0xac, 0x50, 0x6d, 0x02, 0x4a, 0xaa, 0x1b, 0xe8, 0x6a, 0xb4, 0x14, 0x66, 0x4d, 0x24, + 0x75, 0x79, 0x57, 0x61, 0x9a, 0xef, 0x3d, 0xae, 0x00, 0xa1, 0x2c, 0x15, 0x2a, 0x95, 0xcc, 0x23, + 0x3a, 0x4f, 0x52, 0x89, 0x42, 0x25, 0x65, 0xdf, 0xc7, 0x34, 0xab, 0xd2, 0x82, 0xb1, 0x8e, 0x8f, + 0xef, 0x21, 0x4c, 0xeb, 0xfa, 0x18, 0x12, 0x0b, 0x64, 0x54, 0xd3, 0x52, 0x3b, 0xd4, 0x84, 0xf9, + 0xa7, 0x8e, 0x4b, 0x4d, 0x14, 0xfc, 0xbe, 0x4d, 0xdc, 0x96, 0xa1, 0x72, 0xc6, 0xf5, 0x59, 0x1d, + 0x77, 0xdb, 0xa5, 0x41, 0x21, 0x0f, 0xe8, 0xce, 0xad, 0x0b, 0xb5, 0x42, 0xbf, 0x6d, 0x44, 0x96, + 0x9e, 0xc7, 0xc4, 0x74, 0x81, 0x5c, 0x4a, 0xf3, 0x79, 0x40, 0x4f, 0xa9, 0x5e, 0x13, 0xa3, 0xa8, + 0xec, 0x89, 0x53, 0x93, 0x2b, 0x52, 0x27, 0xe9, 0xd0, 0x8d, 0x3b, 0x2f, 0x04, 0x28, 0x65, 0xe2, + 0x52, 0x89, 0xdd, 0xcb, 0xa1, 0x2f, 0xc1, 0x4a, 0x23, 0xf7, 0xcc, 0x0d, 0x0f, 0xb8, 0xf3, 0xce, + 0x82, 0x91, 0x00, 0x3f, 0x28, 0x19, 0xd4, 0x6d, 0x98, 0x35, 0xb9, 0x59, 0xc8, 0x09, 0xcd, 0xf0, + 0xc1, 0x48, 0xdd, 0x05, 0x36, 0xd1, 0xce, 0xda, 0xe9, 0x8b, 0x94, 0x71, 0xcb, 0x9f, 0x4a, 0xf3, + 0x13, 0x98, 0x26, 0xbb, 0xe4, 0x09, 0xc6, 0xbd, 0x4a, 0xc7, 0x7d, 0x89, 0x03, 0x24, 0xc2, 0x81, + 0xc8, 0xa2, 0x34, 0xdc, 0x5b, 0x39, 0xf4, 0x6d, 0x98, 0x78, 0xe6, 0x84, 0xad, 0x03, 0xfe, 0x7a, + 0x5d, 0x3c, 0x6e, 0xa7, 0x65, 0x25, 0xf1, 0x8b, 0x56, 0xde, 0xcb, 0xa1, 0xef, 0xc1, 0xe8, 0x23, + 0x1c, 0x52, 0x4f, 0xd3, 0x6b, 0xf2, 0xc6, 0x91, 0x79, 0xf7, 0xac, 0x77, 0xa5, 0x1f, 0x9e, 0xe8, + 0x70, 0xdc, 0xa8, 0x85, 0xee, 0x02, 0x30, 0x86, 0x40, 0x29, 0xc4, 0xab, 0x4b, 0x89, 0x6e, 0xa3, + 0x47, 0x44, 0x30, 0xea, 0xe0, 0x10, 0x9f, 0xb4, 0xc9, 0xb4, 0x39, 0xda, 0x80, 0x69, 0x19, 0xfb, + 0x74, 0x93, 0x3e, 0x55, 0xb0, 0x62, 0xc4, 0x82, 0x53, 0x50, 0xfb, 0x88, 0x9c, 0x0a, 0x76, 0x03, + 0x28, 0x43, 0xa5, 0xa0, 0xb4, 0xe0, 0x29, 0x72, 0x12, 0x19, 0x98, 0x82, 0xbb, 0xe6, 0x05, 0xa1, + 0x8e, 0x2b, 0x4b, 0xcc, 0xb8, 0x18, 0x4a, 0x6a, 0xbb, 0x7a, 0xd8, 0x94, 0x88, 0xe7, 0xa6, 0x45, + 0x7b, 0x29, 0x5d, 0xcb, 0x80, 0x60, 0xec, 0x8e, 0x72, 0x92, 0x15, 0xb8, 0x28, 0x9a, 0x51, 0x13, + 0xf4, 0x8b, 0x3b, 0x0d, 0xa5, 0x4c, 0x10, 0x46, 0xc9, 0x2a, 0xf2, 0xd5, 0xd3, 0xc2, 0x75, 0x44, + 0x5f, 0x3d, 0x43, 0x3c, 0x95, 0xe8, 0xab, 0x67, 0x8c, 0xf0, 0xf1, 0x84, 0x99, 0xe0, 0xb4, 0x34, + 0xdd, 0x8d, 0x65, 0x24, 0xdc, 0x8e, 0xb5, 0x0a, 0x7e, 0xb0, 0x2f, 0x99, 0xea, 0x1a, 0x0f, 0xee, + 0xe5, 0xd0, 0x2a, 0x5c, 0x94, 0x2f, 0x4b, 0xa2, 0x2a, 0x94, 0x82, 0x90, 0xba, 0x09, 0x3e, 0x83, + 0x8b, 0x7c, 0x4b, 0x69, 0x64, 0x0a, 0x92, 0x3b, 0xf0, 0x6b, 0xc8, 0x54, 0x02, 0x8f, 0x61, 0xae, + 0x1e, 0x1b, 0x14, 0x73, 0x9a, 0xb9, 0xac, 0x93, 0x50, 0x32, 0xa2, 0xa6, 0xd2, 0x7a, 0x02, 0x88, + 0x59, 0xb9, 0x04, 0xb9, 0x97, 0x2e, 0x7e, 0x85, 0xae, 0xc4, 0x86, 0x44, 0x0a, 0x29, 0x18, 0x65, + 0x2f, 0x69, 0x53, 0x84, 0x76, 0x58, 0x46, 0x17, 0x96, 0x6d, 0xcd, 0xe9, 0x39, 0x7b, 0x6e, 0xc7, + 0x0d, 0x5d, 0x4c, 0x76, 0x98, 0x8a, 0xa0, 0x56, 0x89, 0x65, 0xbc, 0x9c, 0x0a, 0x81, 0x3e, 0x85, + 0xa9, 0x47, 0x38, 0x8c, 0x92, 0xbe, 0xa2, 0xf9, 0x44, 0x9a, 0x58, 0xbe, 0x74, 0xe2, 0x1d, 0xa3, + 0x9e, 0x69, 0x76, 0x1d, 0x0a, 0x8c, 0x3b, 0x2a, 0x24, 0xae, 0x24, 0x48, 0x70, 0x10, 0xc7, 0x77, + 0x0e, 0x83, 0xd4, 0xd9, 0xba, 0xcb, 0x6e, 0xa5, 0x90, 0xd8, 0xb6, 0xaa, 0xf8, 0x75, 0x51, 0x2b, + 0x93, 0x71, 0xa7, 0xe6, 0x8c, 0xd9, 0x4e, 0x91, 0x22, 0x4e, 0xa7, 0xa6, 0x30, 0x2d, 0xa1, 0xf8, + 0x2b, 0xc3, 0xc6, 0x03, 0x24, 0x13, 0x60, 0x18, 0x88, 0xde, 0xd4, 0xbe, 0xd8, 0xa7, 0xa3, 0xfb, + 0x29, 0x8c, 0xcb, 0xb4, 0x99, 0x91, 0x6c, 0x1d, 0x4b, 0x3a, 0x5a, 0x2a, 0x26, 0x2b, 0xf8, 0x48, + 0x3f, 0x61, 0x49, 0x72, 0x75, 0xfc, 0x78, 0x66, 0xc9, 0xd4, 0x89, 0xfd, 0x10, 0x26, 0x94, 0x9c, + 0x92, 0x72, 0x23, 0x27, 0xf3, 0x4c, 0x96, 0xa6, 0x94, 0xbe, 0x37, 0x96, 0xef, 0xe5, 0xd0, 0x5d, + 0xfa, 0x69, 0xa1, 0xcf, 0x6c, 0xe6, 0x22, 0x34, 0x25, 0x5b, 0x5c, 0x0c, 0x05, 0xbd, 0x4f, 0xa3, + 0x91, 0xd4, 0xfa, 0xbe, 0x8f, 0xbb, 0x0c, 0x2f, 0x4d, 0x82, 0x88, 0x21, 0x7e, 0x4a, 0x99, 0x89, + 0x82, 0xc8, 0xbc, 0x50, 0x06, 0x61, 0xb3, 0x68, 0xb6, 0xf7, 0x72, 0xe8, 0x01, 0x8c, 0x89, 0x14, + 0xd4, 0xe8, 0x92, 0xde, 0xd5, 0xf4, 0xe1, 0x3d, 0x00, 0x60, 0x93, 0x4d, 0x7b, 0xaa, 0x57, 0xa7, + 0x4e, 0xe7, 0x03, 0xf2, 0xbd, 0x6c, 0x9f, 0x12, 0xe9, 0x53, 0xf1, 0xcd, 0xa4, 0x48, 0x45, 0x6d, + 0x09, 0xd5, 0xe9, 0x4c, 0xc3, 0x27, 0x02, 0xaf, 0x96, 0x19, 0x3b, 0x12, 0x78, 0x4d, 0x09, 0xb3, + 0x53, 0xe9, 0xac, 0x43, 0xa1, 0xd2, 0xa2, 0x7c, 0x5c, 0x66, 0xe0, 0x93, 0xda, 0x46, 0xbc, 0x42, + 0xd0, 0x9a, 0x8b, 0x27, 0xf4, 0xdb, 0xc0, 0x0e, 0x0d, 0xd0, 0x32, 0x2f, 0x65, 0x82, 0x58, 0x95, + 0x19, 0x23, 0x43, 0xbb, 0x98, 0xad, 0x11, 0x7d, 0xa8, 0xf3, 0xf5, 0xc8, 0x7c, 0x44, 0x79, 0x99, + 0x92, 0x9d, 0xf0, 0x52, 0x1c, 0x5f, 0xea, 0x61, 0xc2, 0x03, 0x50, 0x82, 0x56, 0x60, 0x86, 0x87, + 0x83, 0x90, 0xd3, 0x92, 0x86, 0x9d, 0xd6, 0xfc, 0xfb, 0x30, 0xbd, 0x4a, 0x78, 0x7d, 0xbf, 0xed, + 0xb2, 0xa0, 0x54, 0x48, 0x8f, 0x32, 0x94, 0x8a, 0xb8, 0x26, 0x92, 0xea, 0x2a, 0x69, 0xfb, 0xe4, + 0x29, 0x4d, 0x66, 0x46, 0x2c, 0xcd, 0x0a, 0xb2, 0x6a, 0x86, 0x3f, 0xae, 0x27, 0xcf, 0xa7, 0x24, + 0xca, 0x43, 0x37, 0x34, 0xdd, 0x2f, 0x2d, 0xdb, 0x9d, 0x41, 0xda, 0xfb, 0x42, 0x49, 0x1d, 0x92, + 0x42, 0x33, 0x3b, 0x83, 0x5e, 0xea, 0xb8, 0x65, 0x18, 0x19, 0x63, 0xa6, 0x3b, 0x69, 0x0c, 0x1a, + 0x9c, 0x0d, 0x2f, 0xb5, 0x05, 0xaa, 0x5b, 0xeb, 0x89, 0xd8, 0xd0, 0x52, 0x76, 0xbe, 0x38, 0x45, + 0xb7, 0x4e, 0xc9, 0xe0, 0xf6, 0x98, 0x6e, 0xb3, 0x28, 0xbf, 0x08, 0x52, 0x35, 0xd5, 0x78, 0x7a, + 0x15, 0x29, 0x42, 0x99, 0xb3, 0xb1, 0x3d, 0xa2, 0xec, 0x52, 0xc9, 0x55, 0x92, 0xca, 0xf0, 0xae, + 0x98, 0xe8, 0x04, 0xca, 0xb7, 0x70, 0x26, 0x96, 0xd7, 0x4c, 0x9a, 0x47, 0xcc, 0x99, 0xd5, 0x4a, + 0x4b, 0x69, 0xd5, 0x9c, 0x62, 0x5d, 0xa4, 0xc5, 0x56, 0x46, 0xba, 0xa4, 0x1b, 0xdd, 0x12, 0x83, + 0x2d, 0xa7, 0xd6, 0xcb, 0xb9, 0x2b, 0xc4, 0xf3, 0xd0, 0x48, 0xa2, 0x29, 0x09, 0x6a, 0x32, 0x58, + 0xe2, 0xac, 0xba, 0x35, 0x06, 0xce, 0x60, 0x1a, 0x9d, 0x1d, 0x98, 0x33, 0xa6, 0x8d, 0x91, 0x62, + 0x44, 0x56, 0x52, 0x99, 0x54, 0xaa, 0x58, 0x58, 0xeb, 0xe2, 0x89, 0x72, 0xd0, 0xb7, 0x74, 0xd5, + 0xdf, 0x9c, 0x47, 0xa7, 0x74, 0x63, 0x00, 0x14, 0x9f, 0xd0, 0x2f, 0xe9, 0x67, 0x33, 0xd1, 0xc6, + 0x35, 0xc5, 0x18, 0x90, 0xd2, 0x80, 0x95, 0x05, 0x22, 0xf7, 0xc0, 0xac, 0x29, 0x73, 0x5d, 0xea, + 0x14, 0x5f, 0x4f, 0xa7, 0x19, 0x6d, 0xac, 0x86, 0x08, 0xde, 0x92, 0x3a, 0x33, 0x99, 0x19, 0x86, + 0x32, 0xb4, 0xc9, 0x92, 0xdc, 0x0f, 0x27, 0xef, 0x72, 0xba, 0x65, 0x68, 0xd6, 0x94, 0xd7, 0x2a, + 0x6e, 0xb8, 0x31, 0xa5, 0x2d, 0x92, 0xd3, 0x90, 0x99, 0x18, 0xab, 0xc1, 0x8c, 0x38, 0x3a, 0x75, + 0xd5, 0x88, 0x63, 0x24, 0x7d, 0x35, 0x1d, 0x20, 0xda, 0x11, 0x86, 0x04, 0x7d, 0x72, 0x47, 0xa4, + 0xa7, 0x0a, 0x94, 0x3b, 0x22, 0x2b, 0xbf, 0x9f, 0x2d, 0x0e, 0x5d, 0xca, 0xb4, 0x64, 0x64, 0x73, + 0xca, 0x50, 0xb9, 0x8a, 0xd1, 0xc2, 0xc5, 0xba, 0x7d, 0xda, 0x65, 0xfb, 0x12, 0x2e, 0xa7, 0x66, + 0x6e, 0x92, 0xa6, 0xfe, 0x41, 0xb9, 0x9d, 0x32, 0x7a, 0x3a, 0xa5, 0x25, 0x5d, 0x92, 0x56, 0xac, + 0x58, 0x7e, 0xa7, 0x04, 0xeb, 0x37, 0x24, 0x7f, 0x62, 0xac, 0x5f, 0x49, 0xe0, 0x74, 0x12, 0xd6, + 0x6f, 0xca, 0xf7, 0x24, 0x79, 0xaa, 0xd2, 0x2f, 0x21, 0xd2, 0xc5, 0x2b, 0x4e, 0xc3, 0x53, 0x4f, + 0xd2, 0xb5, 0x34, 0x3a, 0x2b, 0x54, 0xe5, 0x10, 0xf9, 0x9c, 0xd0, 0x65, 0x6d, 0x9a, 0xb4, 0xcf, + 0x6d, 0x49, 0x1b, 0x9c, 0xfe, 0xa5, 0xad, 0x51, 0x73, 0xb1, 0xcc, 0x1f, 0x95, 0xda, 0x8b, 0x85, + 0x24, 0x0d, 0xcd, 0x54, 0x2c, 0x67, 0x81, 0xf5, 0x66, 0x31, 0x3e, 0x39, 0x5a, 0x87, 0xd2, 0x87, + 0x84, 0xd4, 0xa9, 0x19, 0xd0, 0xa5, 0x74, 0x51, 0xf7, 0x22, 0x53, 0x1e, 0x58, 0x74, 0x45, 0xf1, + 0xc6, 0xfa, 0x92, 0xb4, 0x7b, 0x29, 0xa5, 0x19, 0x66, 0x8e, 0x6d, 0xea, 0x2f, 0x69, 0x48, 0x85, + 0x25, 0x79, 0x68, 0x66, 0xa6, 0x2c, 0x83, 0x98, 0x27, 0xb9, 0x72, 0x2a, 0xc5, 0xcc, 0xdc, 0x58, + 0xa9, 0x3d, 0xfd, 0x89, 0xc2, 0x95, 0x13, 0x09, 0xaf, 0xd0, 0xad, 0xb8, 0x8c, 0x97, 0x96, 0x13, + 0x2b, 0x83, 0xeb, 0xcf, 0x9a, 0x72, 0x65, 0x29, 0xb6, 0xdb, 0xd4, 0x44, 0x5a, 0x86, 0x59, 0x90, + 0xec, 0x2d, 0x85, 0x5a, 0x46, 0xe6, 0xac, 0xd4, 0x1e, 0xfe, 0x50, 0x61, 0x6f, 0xb1, 0x0c, 0x57, + 0xd2, 0xa8, 0x30, 0x20, 0x05, 0x56, 0x2a, 0xed, 0x4d, 0xea, 0x61, 0x9b, 0x4c, 0x4f, 0x25, 0x65, + 0x97, 0xac, 0xe4, 0x55, 0x46, 0xd3, 0xee, 0x5c, 0x72, 0x88, 0x84, 0xde, 0xa5, 0x98, 0x61, 0x76, + 0x50, 0xc7, 0x24, 0x1f, 0x36, 0xa4, 0xb5, 0x8a, 0xf1, 0xe1, 0xf4, 0xc4, 0x57, 0x19, 0x1a, 0xd3, + 0x4c, 0xdd, 0xdd, 0xef, 0x2a, 0x99, 0xaa, 0xa4, 0xbe, 0x94, 0x4c, 0x94, 0x25, 0x59, 0x8c, 0x29, + 0xb1, 0xd5, 0x56, 0xf4, 0xf2, 0x46, 0xcd, 0x39, 0x84, 0x4a, 0xe9, 0xa9, 0x96, 0x24, 0xbb, 0x31, + 0x26, 0x29, 0x52, 0x08, 0xaa, 0x09, 0x7f, 0x24, 0x41, 0x43, 0xee, 0x21, 0x49, 0xd0, 0x98, 0x21, + 0x88, 0x99, 0x60, 0x6c, 0xaf, 0x83, 0x55, 0x13, 0x8c, 0x92, 0xae, 0x27, 0x66, 0x0b, 0x41, 0x1f, + 0x53, 0x4b, 0x48, 0xb6, 0xf9, 0x64, 0x5e, 0xa7, 0xa4, 0xfa, 0xc1, 0xf0, 0xcb, 0x00, 0xda, 0xa0, + 0x4e, 0x79, 0xb0, 0x71, 0x83, 0x22, 0xe9, 0xc6, 0x0d, 0xb5, 0xa3, 0xe9, 0x76, 0xd2, 0x49, 0x35, + 0xdc, 0xbb, 0x9c, 0x2b, 0x43, 0x4e, 0x0a, 0x39, 0x57, 0xa6, 0x4c, 0x0f, 0x54, 0x07, 0xde, 0x11, + 0x9a, 0x7c, 0x44, 0xef, 0x4a, 0x66, 0xaa, 0x86, 0xd2, 0x52, 0x76, 0x7e, 0x03, 0x7e, 0x8f, 0x57, + 0x88, 0x47, 0xa4, 0x47, 0xa6, 0x4c, 0x1b, 0x4a, 0xa0, 0x7f, 0xa9, 0x0d, 0xa5, 0x86, 0xb2, 0xdf, + 0x16, 0xc6, 0x6a, 0x9d, 0x6e, 0x4a, 0xbe, 0x05, 0x95, 0x74, 0xb6, 0x80, 0x12, 0x05, 0xa7, 0x57, + 0x75, 0xd3, 0x44, 0xf0, 0x7b, 0x55, 0x40, 0x31, 0xc4, 0xb3, 0x77, 0xa5, 0xaf, 0x86, 0x31, 0xe7, + 0x53, 0xcc, 0x57, 0x23, 0x23, 0x6c, 0xd1, 0xc0, 0x9b, 0x52, 0xf4, 0x63, 0x91, 0xdb, 0x39, 0x99, + 0xdb, 0xe4, 0x46, 0xcc, 0xec, 0x6a, 0x0e, 0x74, 0x53, 0xca, 0x4a, 0x9d, 0x82, 0x9e, 0xd2, 0x2b, + 0xf6, 0xad, 0xf5, 0x95, 0x1a, 0xf7, 0x51, 0xf5, 0xfc, 0xc4, 0xb5, 0xd5, 0x33, 0x37, 0x3c, 0x60, + 0xc9, 0x7e, 0x14, 0xee, 0xc3, 0x40, 0x34, 0xc4, 0xc6, 0x03, 0x54, 0xa7, 0x92, 0xbb, 0x56, 0x6a, + 0xb8, 0xb9, 0x32, 0x10, 0x2c, 0x99, 0x09, 0xd2, 0xf4, 0x84, 0x54, 0x30, 0x20, 0x07, 0x4f, 0xef, + 0x66, 0x4a, 0x1f, 0xb2, 0xe4, 0x0b, 0xb6, 0x6d, 0xcc, 0x64, 0x4e, 0xca, 0xbe, 0x1f, 0xc1, 0x1c, + 0x9b, 0xf0, 0xd8, 0xb3, 0x38, 0xad, 0x3f, 0x4a, 0x79, 0x29, 0xa5, 0x1c, 0x6d, 0x52, 0xcf, 0x8d, + 0x78, 0xa9, 0xa2, 0xc5, 0x98, 0xdf, 0xdd, 0xa5, 0xd2, 0x63, 0x4b, 0x49, 0xc4, 0xf6, 0x37, 0x5a, + 0x4a, 0x0d, 0xb1, 0xb1, 0xcc, 0x97, 0x52, 0x2b, 0x3d, 0xdd, 0x52, 0xc6, 0x08, 0xea, 0x4b, 0xa9, + 0x77, 0x33, 0xa5, 0x0f, 0x83, 0x97, 0xd2, 0x4c, 0xe6, 0xd4, 0x4b, 0x19, 0x7b, 0x93, 0xa8, 0xf5, + 0xc7, 0xb4, 0x94, 0x71, 0x78, 0xb6, 0x94, 0xf1, 0xd2, 0x98, 0x42, 0x9a, 0xb1, 0x94, 0x71, 0xcc, + 0xcf, 0x29, 0x3d, 0xf6, 0xe8, 0xf1, 0x54, 0x8b, 0x29, 0xc2, 0xf1, 0xc4, 0x50, 0x1b, 0x0f, 0xd0, + 0x33, 0x6a, 0x0d, 0x89, 0x95, 0x9f, 0x6c, 0x41, 0x17, 0xd3, 0x88, 0xd2, 0x25, 0x5d, 0x17, 0x72, + 0x56, 0xbc, 0xbb, 0xa9, 0x7d, 0xc9, 0x5a, 0x0f, 0xb6, 0xac, 0x71, 0x52, 0xa7, 0x5d, 0xd8, 0xa7, + 0x82, 0x69, 0x26, 0xde, 0x8d, 0xc6, 0x7a, 0xa5, 0x2e, 0x6e, 0x6a, 0x0d, 0x77, 0x5a, 0x4b, 0x96, + 0x2b, 0x76, 0xa2, 0xb4, 0x07, 0xaa, 0x03, 0xa9, 0x26, 0x1e, 0xa2, 0xaa, 0x54, 0xd3, 0x5e, 0xa9, + 0x4a, 0xaa, 0x49, 0xec, 0x15, 0x7a, 0x6c, 0x77, 0x7c, 0xa2, 0x26, 0xb5, 0x93, 0x3a, 0x94, 0x3e, + 0x7f, 0xe2, 0x46, 0x53, 0x07, 0x6f, 0x2c, 0xa3, 0x75, 0xba, 0x01, 0xf5, 0xe2, 0x2c, 0x25, 0xd3, + 0x4c, 0x86, 0xee, 0x8f, 0x35, 0xe9, 0xdf, 0xaf, 0xf7, 0x29, 0xad, 0xed, 0xf4, 0x4e, 0x49, 0x0d, + 0xfc, 0x84, 0xa3, 0x4b, 0xdb, 0x1d, 0x4c, 0x0a, 0x64, 0x0a, 0xef, 0xa0, 0x99, 0x89, 0xbf, 0x38, + 0x40, 0xdf, 0x87, 0x71, 0x81, 0x3c, 0x78, 0x42, 0xe2, 0xd8, 0x74, 0x42, 0x3e, 0x85, 0x09, 0xe5, + 0xc1, 0x03, 0x4a, 0x6b, 0x29, 0x43, 0xa4, 0x9c, 0x50, 0x9e, 0x63, 0x9c, 0x1e, 0x7f, 0x05, 0xa6, + 0xb4, 0xe7, 0x1c, 0x52, 0x10, 0x32, 0x3d, 0xf2, 0xc8, 0xa2, 0xa2, 0x3d, 0xdb, 0x90, 0x54, 0x4c, + 0x8f, 0x39, 0xb2, 0x85, 0x32, 0xe5, 0x69, 0xba, 0x22, 0x94, 0x25, 0xdf, 0xc8, 0x2b, 0x42, 0x99, + 0xe9, 0x35, 0xfb, 0xf7, 0x60, 0x82, 0x6f, 0x8f, 0xcc, 0x95, 0x4d, 0xd7, 0x96, 0xe7, 0x14, 0x9f, + 0xc1, 0x7e, 0xdb, 0x0d, 0x6b, 0x5e, 0xf7, 0xb9, 0xbb, 0x3f, 0x70, 0x91, 0x93, 0x28, 0x8d, 0x65, + 0xd4, 0xa0, 0x89, 0x06, 0x44, 0xfa, 0x07, 0x1c, 0xbe, 0xf2, 0xfc, 0x17, 0x6e, 0x77, 0x7f, 0x00, + 0xc9, 0xab, 0x3a, 0xc9, 0x38, 0x1e, 0xa3, 0x5b, 0x4f, 0xa7, 0x3b, 0x10, 0x3f, 0x43, 0x5b, 0x5e, + 0xa4, 0xf7, 0xf6, 0xa7, 0xed, 0x71, 0xfa, 0xcd, 0xc1, 0xe5, 0xc8, 0xdb, 0xce, 0xc6, 0x2d, 0xcf, + 0x6f, 0x0f, 0x26, 0x56, 0xd6, 0x7d, 0xdb, 0x62, 0x68, 0x8d, 0x65, 0x42, 0xb5, 0x9e, 0x4a, 0x75, + 0x10, 0x76, 0xc6, 0xd7, 0x62, 0x81, 0x8e, 0xfd, 0x94, 0xbd, 0x4d, 0x3f, 0x19, 0x84, 0x03, 0x13, + 0x4e, 0xbf, 0xed, 0xe3, 0xe7, 0xd8, 0xa7, 0x2e, 0x93, 0x83, 0x9c, 0x05, 0x75, 0xf0, 0xc6, 0x32, + 0xa1, 0x52, 0x4f, 0x50, 0x49, 0x83, 0xce, 0x12, 0x94, 0xe8, 0xd0, 0x4e, 0xd8, 0x9b, 0x34, 0x32, + 0x1f, 0x50, 0x9b, 0xe5, 0xee, 0xfa, 0x80, 0x19, 0x11, 0x4e, 0xbc, 0x02, 0xb0, 0x71, 0x9f, 0x60, + 0xd6, 0x15, 0xcc, 0x24, 0x44, 0x6a, 0x9b, 0xdf, 0x17, 0xc6, 0xc9, 0x81, 0xcd, 0xa6, 0x7b, 0x23, + 0x8c, 0xcb, 0x24, 0x48, 0x48, 0x51, 0xeb, 0xb5, 0x14, 0x3f, 0xa5, 0x29, 0xd5, 0x65, 0x30, 0x40, + 0x15, 0x26, 0x45, 0xab, 0xc9, 0x80, 0x94, 0x7b, 0x51, 0x63, 0x96, 0xa0, 0x38, 0x09, 0x66, 0x96, + 0xd8, 0xf0, 0x5a, 0x2f, 0x54, 0xb3, 0x84, 0x92, 0x5d, 0xa6, 0xa4, 0xe7, 0x7e, 0xe1, 0x1f, 0x24, + 0x9a, 0x00, 0x46, 0x75, 0xd0, 0x50, 0xf3, 0xcb, 0xa8, 0x66, 0x09, 0x3d, 0x13, 0x8e, 0x34, 0x4b, + 0xd0, 0x06, 0x75, 0xca, 0x83, 0xcd, 0x12, 0x14, 0x49, 0x37, 0x4b, 0xa8, 0x1d, 0x4d, 0x67, 0x17, + 0x28, 0x99, 0x0a, 0x47, 0x0a, 0xbc, 0xa9, 0x59, 0x72, 0x32, 0x7c, 0x2f, 0x2e, 0x1a, 0xb2, 0x77, + 0x49, 0x75, 0x3f, 0x3d, 0xb3, 0x57, 0x49, 0x77, 0x24, 0xb8, 0x97, 0x43, 0x9b, 0x70, 0xe9, 0x11, + 0x0e, 0x39, 0x03, 0xb3, 0x71, 0x10, 0xfa, 0x6e, 0x2b, 0xcc, 0xb4, 0xd4, 0x0b, 0xf9, 0xd6, 0x80, + 0xd3, 0x78, 0x87, 0xd0, 0xab, 0x9b, 0xe9, 0x65, 0xe2, 0x65, 0x58, 0x74, 0xb8, 0xf9, 0xef, 0x34, + 0x5d, 0x4c, 0xdf, 0xe2, 0xa3, 0xec, 0xd6, 0x3b, 0x1d, 0xb5, 0x10, 0x45, 0x6f, 0xe5, 0x12, 0xfb, + 0x1d, 0x38, 0xcf, 0x90, 0x52, 0xbf, 0x91, 0x93, 0x2a, 0x0e, 0xba, 0x2f, 0x5c, 0xb4, 0x08, 0x8a, + 0x56, 0x95, 0xda, 0xaf, 0xfb, 0x30, 0xce, 0x6c, 0xf9, 0x27, 0x47, 0xf9, 0x58, 0x38, 0x72, 0x65, + 0x75, 0x2c, 0xdd, 0xb7, 0x71, 0x4a, 0xbd, 0xf0, 0x3e, 0xfd, 0x44, 0x7e, 0x8f, 0xde, 0xa7, 0x08, + 0xb3, 0x65, 0x3a, 0xfe, 0x5c, 0x2c, 0xde, 0x29, 0x9f, 0x52, 0xc6, 0x20, 0x65, 0x1a, 0xbc, 0xb4, + 0xee, 0x5f, 0x48, 0x60, 0xa3, 0x8f, 0xc5, 0xf3, 0x01, 0x89, 0x9c, 0x04, 0xca, 0x98, 0xb3, 0x69, + 0x36, 0xcd, 0x6f, 0x82, 0x2c, 0x19, 0xec, 0xc0, 0x6e, 0x9f, 0xe4, 0xde, 0x67, 0xf0, 0xd4, 0xa5, + 0x51, 0xd9, 0xa2, 0x82, 0x57, 0x22, 0x12, 0x6f, 0x3a, 0xa1, 0xa5, 0xf4, 0xe0, 0xbd, 0x74, 0x31, + 0x1e, 0x53, 0xc5, 0x2a, 0x99, 0xd2, 0x30, 0x6d, 0x78, 0x19, 0xc1, 0x80, 0x23, 0x4d, 0x32, 0x49, + 0x2e, 0x03, 0x2d, 0x4b, 0x31, 0x65, 0x0b, 0x76, 0x36, 0xe4, 0xd6, 0x85, 0x03, 0xd2, 0xc9, 0x07, + 0x9b, 0x21, 0x04, 0x19, 0x6e, 0x9a, 0x06, 0xae, 0x45, 0x1a, 0xb9, 0x1f, 0x53, 0xf9, 0xcf, 0x9c, + 0xc7, 0x2c, 0x95, 0x98, 0xf2, 0x8c, 0x6c, 0x40, 0x06, 0xb4, 0x17, 0xf4, 0x5d, 0x86, 0x39, 0x56, + 0xf1, 0xcd, 0x01, 0x54, 0xc4, 0x4c, 0xbc, 0x35, 0x10, 0x4e, 0xde, 0x5b, 0x2c, 0xb0, 0x2f, 0xac, + 0xb9, 0xbd, 0x01, 0xb1, 0x97, 0x0d, 0x57, 0x49, 0x29, 0x49, 0xc2, 0x04, 0x41, 0xdd, 0xbb, 0x2b, + 0x73, 0x0c, 0x69, 0xd3, 0xff, 0x39, 0x94, 0xa3, 0x1b, 0xd9, 0xd3, 0x2d, 0x42, 0xba, 0x44, 0x8f, + 0x92, 0xa9, 0xd3, 0x50, 0x56, 0x14, 0xdb, 0xd2, 0xb5, 0xb4, 0x19, 0x0e, 0x94, 0xab, 0x7e, 0xee, + 0x4b, 0x12, 0x8b, 0xda, 0x9d, 0x16, 0xff, 0x3b, 0xc3, 0x76, 0xc4, 0x1f, 0xaa, 0x9c, 0x09, 0xa1, + 0xe4, 0x6a, 0x9f, 0x9e, 0x90, 0xbc, 0x30, 0x8d, 0x11, 0xb2, 0x32, 0x96, 0xf7, 0x34, 0xfe, 0x20, + 0xf1, 0xa5, 0x38, 0xed, 0x82, 0x3a, 0xd1, 0xe3, 0x8c, 0x64, 0x7e, 0x37, 0x29, 0xcb, 0xa5, 0xe6, + 0x9a, 0x93, 0xab, 0x9b, 0x91, 0x1c, 0xae, 0x46, 0x8e, 0x29, 0x6b, 0x42, 0x4b, 0x2e, 0x55, 0xb3, + 0x37, 0x22, 0xab, 0x83, 0x21, 0xeb, 0x54, 0x09, 0x44, 0xa5, 0xbd, 0x81, 0xea, 0x50, 0x62, 0x5b, + 0xc4, 0x14, 0x45, 0x43, 0x7a, 0xd4, 0x9b, 0x2a, 0x33, 0xb4, 0x8b, 0x3a, 0x94, 0xd8, 0x76, 0x39, + 0x4b, 0xa2, 0x4d, 0x9a, 0x48, 0xd4, 0x48, 0xf1, 0x86, 0xf2, 0x2c, 0x31, 0x3d, 0x36, 0x49, 0x29, + 0xbb, 0x61, 0xf4, 0x23, 0x98, 0x33, 0x06, 0x27, 0x91, 0x77, 0xda, 0x59, 0xa1, 0x4b, 0x06, 0x11, + 0x7f, 0x01, 0xc5, 0xb4, 0x4c, 0x50, 0x91, 0x87, 0x7f, 0x76, 0x7a, 0x2e, 0xc9, 0x53, 0x07, 0xa6, + 0x94, 0xda, 0x84, 0x59, 0x53, 0x76, 0x25, 0x79, 0x38, 0x32, 0x52, 0x2f, 0x19, 0x9f, 0x11, 0x6c, + 0xc3, 0x9c, 0x31, 0xc3, 0x91, 0x9c, 0x99, 0xac, 0xfc, 0x47, 0x46, 0x8a, 0x5f, 0xc0, 0x7c, 0x4a, + 0x3a, 0x9f, 0xe8, 0xe2, 0x2d, 0x33, 0xdd, 0x4f, 0x86, 0x03, 0x40, 0x29, 0x3d, 0x53, 0x8c, 0xf4, + 0xfb, 0x18, 0x98, 0x4c, 0xa6, 0x64, 0x4c, 0x9f, 0x85, 0x76, 0xe8, 0x26, 0x34, 0xa5, 0x8e, 0x51, + 0x37, 0x61, 0x46, 0x6a, 0x99, 0x94, 0xe7, 0x1f, 0xf3, 0x29, 0xd9, 0x62, 0x32, 0xa8, 0x9e, 0xa0, + 0xb7, 0x9b, 0x82, 0xff, 0xeb, 0xe9, 0x43, 0x62, 0xbe, 0x84, 0xc6, 0xdc, 0x22, 0xc6, 0x7e, 0x2a, + 0xcf, 0x8d, 0x3b, 0x9d, 0x0c, 0x31, 0x08, 0xa9, 0xef, 0x8d, 0x09, 0x64, 0xe3, 0x3e, 0x51, 0x22, + 0x54, 0xdc, 0x2c, 0x8e, 0x9a, 0x40, 0xa6, 0x82, 0xe7, 0x47, 0x30, 0x59, 0x57, 0x1b, 0x37, 0x34, + 0x92, 0xba, 0x29, 0xa4, 0x97, 0xfd, 0xe0, 0xbe, 0x0f, 0xbc, 0x15, 0xab, 0x74, 0x3a, 0x27, 0x1a, + 0x45, 0xaa, 0x4d, 0x56, 0x0b, 0xaf, 0x2e, 0x39, 0xb5, 0x29, 0x6b, 0x80, 0xb4, 0xc9, 0x9a, 0x23, + 0xb2, 0xaf, 0xd2, 0x29, 0x8d, 0x82, 0xd3, 0x66, 0xe8, 0xe0, 0x72, 0x13, 0x19, 0x62, 0xe0, 0x3e, + 0x51, 0x1f, 0x82, 0xb3, 0x90, 0xb6, 0x19, 0x46, 0xc4, 0xf8, 0x03, 0xf0, 0x58, 0x0c, 0xdc, 0x06, + 0x14, 0x45, 0x70, 0x49, 0x16, 0xde, 0x31, 0x0a, 0x67, 0x17, 0xb9, 0x46, 0xa5, 0x47, 0x9f, 0xcc, + 0x98, 0xb7, 0x42, 0x3c, 0x70, 0x93, 0xb4, 0x1c, 0xa5, 0x44, 0x74, 0xca, 0xd8, 0x0d, 0x10, 0x85, + 0x67, 0x92, 0xf6, 0x99, 0x44, 0xc4, 0xa6, 0xd2, 0x65, 0x43, 0x8d, 0x94, 0xac, 0x26, 0xd5, 0x60, + 0x4e, 0xd2, 0x73, 0xc4, 0x10, 0xe1, 0xa9, 0xb4, 0x60, 0xac, 0xe3, 0x84, 0x42, 0x58, 0xc8, 0x48, + 0xa4, 0x2a, 0xa5, 0xd5, 0xc1, 0x09, 0x5f, 0x65, 0x60, 0x8a, 0x93, 0xe4, 0x65, 0xc5, 0x32, 0x58, + 0x6c, 0x12, 0x4a, 0x0d, 0x4c, 0x91, 0x99, 0xa3, 0xb4, 0x34, 0x28, 0x87, 0x2b, 0x7a, 0x06, 0x8b, + 0x31, 0x57, 0x64, 0xbd, 0xa5, 0x41, 0x04, 0x52, 0x57, 0xf0, 0x19, 0x2c, 0xf2, 0xb7, 0xd1, 0x67, + 0x4c, 0x78, 0x0f, 0x16, 0xb3, 0xb2, 0xb3, 0xa2, 0xdb, 0x66, 0x77, 0x63, 0xe3, 0xf4, 0xa4, 0x8b, + 0xae, 0x57, 0x93, 0x6e, 0xc7, 0xb1, 0x75, 0x3f, 0x2d, 0x5b, 0x79, 0x0a, 0xd3, 0x7a, 0x66, 0x56, + 0xa4, 0xb2, 0x8e, 0x44, 0x9e, 0xd8, 0xd2, 0x95, 0x94, 0x5a, 0xbe, 0x3f, 0x3e, 0xa5, 0x8c, 0x5e, + 0x56, 0xa8, 0xf1, 0x12, 0xe2, 0x99, 0x4f, 0x4b, 0x86, 0x24, 0x32, 0xe8, 0x7b, 0x30, 0x13, 0xbd, + 0x6f, 0x63, 0x24, 0x0c, 0x60, 0x19, 0xf6, 0xa2, 0x99, 0xe8, 0xa5, 0xdb, 0xe9, 0xd1, 0xd7, 0x04, + 0xb7, 0x8f, 0xd0, 0xaf, 0x24, 0x3c, 0xb0, 0xb5, 0x31, 0x9c, 0x84, 0xe9, 0x2b, 0x73, 0x7b, 0xda, + 0xd5, 0x69, 0xd1, 0xe3, 0x66, 0x8e, 0x52, 0xa6, 0x1e, 0xb7, 0xcc, 0x48, 0x6a, 0x52, 0xc2, 0x4c, + 0xa1, 0xd3, 0x81, 0x6b, 0x03, 0xe3, 0xaa, 0xa1, 0xbb, 0x5a, 0x64, 0x81, 0xc1, 0x11, 0xd8, 0xb2, + 0x9e, 0x29, 0x98, 0xc2, 0x93, 0x49, 0x1e, 0x9f, 0x11, 0x29, 0x4d, 0x3e, 0x53, 0xc8, 0x8c, 0x6f, + 0xf6, 0x05, 0x8d, 0x24, 0xcd, 0x3f, 0x32, 0x34, 0x56, 0x06, 0xee, 0x3a, 0xdd, 0x16, 0x1e, 0x70, + 0x5d, 0x71, 0x4d, 0xbf, 0xa4, 0x4b, 0x20, 0x52, 0x39, 0x7f, 0x89, 0x6b, 0x27, 0x69, 0xc4, 0x07, + 0x13, 0x49, 0x9b, 0x97, 0xea, 0xca, 0x2f, 0xfe, 0x7c, 0x29, 0xf7, 0x8b, 0x5f, 0x2e, 0xe5, 0xfe, + 0xd3, 0x2f, 0x97, 0x72, 0xff, 0xe3, 0x97, 0x4b, 0xb9, 0x1f, 0x2e, 0x9f, 0x2c, 0xf8, 0x6b, 0xab, + 0xe3, 0xe2, 0x6e, 0x78, 0x97, 0x91, 0x3b, 0x4f, 0xff, 0x7b, 0xf0, 0xff, 0x02, 0x00, 0x00, 0xff, + 0xff, 0xf9, 0x52, 0x49, 0x89, 0xaf, 0xd4, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. @@ -15564,8 +15574,8 @@ type AuthServiceClient interface { GetAssistantConversations(ctx context.Context, in *GetAssistantConversationsRequest, opts ...grpc.CallOption) (*GetAssistantConversationsResponse, error) // GetAssistantMessages returns all messages associated with the given conversation ID. GetAssistantMessages(ctx context.Context, in *AssistantRequest, opts ...grpc.CallOption) (*GetAssistantMessagesResponse, error) - //InsertAssistantMessage adds a message to given conversation. - InsertAssistantMessage(ctx context.Context, in *AssistantMessage, opts ...grpc.CallOption) (*emptypb.Empty, error) + // CreateAssistantMessage creates a new message in the given conversation. + CreateAssistantMessage(ctx context.Context, in *AssistantMessage, opts ...grpc.CallOption) (*emptypb.Empty, error) // SetAssistantConversationTitle sets the given conversation title. SetAssistantConversationTitle(ctx context.Context, in *ConversationInfo, opts ...grpc.CallOption) (*emptypb.Empty, error) // InventoryControlStream is the per-instance stream used to advertise teleport instance @@ -16171,9 +16181,9 @@ func (c *authServiceClient) GetAssistantMessages(ctx context.Context, in *Assist return out, nil } -func (c *authServiceClient) InsertAssistantMessage(ctx context.Context, in *AssistantMessage, opts ...grpc.CallOption) (*emptypb.Empty, error) { +func (c *authServiceClient) CreateAssistantMessage(ctx context.Context, in *AssistantMessage, opts ...grpc.CallOption) (*emptypb.Empty, error) { out := new(emptypb.Empty) - err := c.cc.Invoke(ctx, "/proto.AuthService/InsertAssistantMessage", in, out, opts...) + err := c.cc.Invoke(ctx, "/proto.AuthService/CreateAssistantMessage", in, out, opts...) if err != nil { return nil, err } @@ -18694,8 +18704,8 @@ type AuthServiceServer interface { GetAssistantConversations(context.Context, *GetAssistantConversationsRequest) (*GetAssistantConversationsResponse, error) // GetAssistantMessages returns all messages associated with the given conversation ID. GetAssistantMessages(context.Context, *AssistantRequest) (*GetAssistantMessagesResponse, error) - //InsertAssistantMessage adds a message to given conversation. - InsertAssistantMessage(context.Context, *AssistantMessage) (*emptypb.Empty, error) + // CreateAssistantMessage creates a new message in the given conversation. + CreateAssistantMessage(context.Context, *AssistantMessage) (*emptypb.Empty, error) // SetAssistantConversationTitle sets the given conversation title. SetAssistantConversationTitle(context.Context, *ConversationInfo) (*emptypb.Empty, error) // InventoryControlStream is the per-instance stream used to advertise teleport instance @@ -19279,8 +19289,8 @@ func (*UnimplementedAuthServiceServer) GetAssistantConversations(ctx context.Con func (*UnimplementedAuthServiceServer) GetAssistantMessages(ctx context.Context, req *AssistantRequest) (*GetAssistantMessagesResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method GetAssistantMessages not implemented") } -func (*UnimplementedAuthServiceServer) InsertAssistantMessage(ctx context.Context, req *AssistantMessage) (*emptypb.Empty, error) { - return nil, status.Errorf(codes.Unimplemented, "method InsertAssistantMessage not implemented") +func (*UnimplementedAuthServiceServer) CreateAssistantMessage(ctx context.Context, req *AssistantMessage) (*emptypb.Empty, error) { + return nil, status.Errorf(codes.Unimplemented, "method CreateAssistantMessage not implemented") } func (*UnimplementedAuthServiceServer) SetAssistantConversationTitle(ctx context.Context, req *ConversationInfo) (*emptypb.Empty, error) { return nil, status.Errorf(codes.Unimplemented, "method SetAssistantConversationTitle not implemented") @@ -20055,20 +20065,20 @@ func _AuthService_GetAssistantMessages_Handler(srv interface{}, ctx context.Cont return interceptor(ctx, in, info, handler) } -func _AuthService_InsertAssistantMessage_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { +func _AuthService_CreateAssistantMessage_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(AssistantMessage) if err := dec(in); err != nil { return nil, err } if interceptor == nil { - return srv.(AuthServiceServer).InsertAssistantMessage(ctx, in) + return srv.(AuthServiceServer).CreateAssistantMessage(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/proto.AuthService/InsertAssistantMessage", + FullMethod: "/proto.AuthService/CreateAssistantMessage", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(AuthServiceServer).InsertAssistantMessage(ctx, req.(*AssistantMessage)) + return srv.(AuthServiceServer).CreateAssistantMessage(ctx, req.(*AssistantMessage)) } return interceptor(ctx, in, info, handler) } @@ -24457,8 +24467,8 @@ var _AuthService_serviceDesc = grpc.ServiceDesc{ Handler: _AuthService_GetAssistantMessages_Handler, }, { - MethodName: "InsertAssistantMessage", - Handler: _AuthService_InsertAssistantMessage_Handler, + MethodName: "CreateAssistantMessage", + Handler: _AuthService_CreateAssistantMessage_Handler, }, { MethodName: "SetAssistantConversationTitle", diff --git a/api/proto/teleport/legacy/client/proto/authservice.proto b/api/proto/teleport/legacy/client/proto/authservice.proto index 7cff40c86d8ec..b00e14f61ecee 100644 --- a/api/proto/teleport/legacy/client/proto/authservice.proto +++ b/api/proto/teleport/legacy/client/proto/authservice.proto @@ -2296,14 +2296,17 @@ message ExportUpgradeWindowsResponse { string SystemdUnitSchedule = 3; } +// AssistantRequest is a request to the assistant service. message AssistantRequest { - // conversation_id it's the ID of a conversation. + // conversationId it's the ID of a conversation. // It's used to tie all messages in a one conversation. string conversation_id = 1; } +// AssistantMessage is a message sent to the assistant service. The conversation +// must be created first. message AssistantMessage { - // conversation_id used to tie all messages in a one conversation. + // conversationId used to tie all messages in a one conversation. string conversation_id = 1; // type is a type of message. It can be Chat response/query or a command to run. @@ -2319,13 +2322,17 @@ message AssistantMessage { string payload = 4; } +// GetAssistantMessagesResponse is a response from the assistant service. message GetAssistantMessagesResponse { // messages is a list of messages. repeated AssistantMessage messages = 1; } +// GetAssistantConversationsRequest is a request to get a list of conversations. message GetAssistantConversationsRequest {} +// ConversationInfo is a conversation info. It contains a conversation +// information like ID, title, created time. message ConversationInfo { // id is a unique conversation ID. string id = 1; @@ -2338,11 +2345,13 @@ message ConversationInfo { ]; } +// GetAssistantConversationsResponse is a response from the assistant service. message GetAssistantConversationsResponse { // conversations is a list of conversations. repeated ConversationInfo conversations = 1; } +// CreateAssistantConversationRequest is a request to create a new conversation. message CreateAssistantConversationRequest { // createdTime is the time when the conversation was created. google.protobuf.Timestamp created_time = 1 [ @@ -2351,6 +2360,7 @@ message CreateAssistantConversationRequest { ]; } +// CreateAssistantConversationResponse is a response from the assistant service. message CreateAssistantConversationResponse { // id is a unique conversation ID. string id = 1; @@ -2367,8 +2377,8 @@ service AuthService { // GetAssistantMessages returns all messages associated with the given conversation ID. rpc GetAssistantMessages(AssistantRequest) returns (GetAssistantMessagesResponse); - //InsertAssistantMessage adds a message to given conversation. - rpc InsertAssistantMessage(AssistantMessage) returns (google.protobuf.Empty); + // CreateAssistantMessage creates a new message in the given conversation. + rpc CreateAssistantMessage(AssistantMessage) returns (google.protobuf.Empty); // SetAssistantConversationTitle sets the given conversation title. rpc SetAssistantConversationTitle(ConversationInfo) returns (google.protobuf.Empty); diff --git a/lib/auth/auth.go b/lib/auth/auth.go index 3d1b52eeca29d..27109be68580f 100644 --- a/lib/auth/auth.go +++ b/lib/auth/auth.go @@ -5213,8 +5213,8 @@ func (a *Server) GetAssistantMessages(ctx context.Context, id string) (*proto.Ge return resp, trace.Wrap(err) } -// InsertAssistantMessage adds the message to the backend. -func (a *Server) InsertAssistantMessage(ctx context.Context, msg *proto.AssistantMessage) error { +// CreateAssistantMessage adds the message to the backend. +func (a *Server) CreateAssistantMessage(ctx context.Context, msg *proto.AssistantMessage) error { username, err := authz.GetClientUsername(ctx) if err != nil { return trace.Wrap(err) diff --git a/lib/auth/auth_with_roles.go b/lib/auth/auth_with_roles.go index f3a11648b3307..97f6db2305949 100644 --- a/lib/auth/auth_with_roles.go +++ b/lib/auth/auth_with_roles.go @@ -6105,13 +6105,13 @@ func (a *ServerWithRoles) GetAssistantMessages(ctx context.Context, id string) ( return a.authServer.GetAssistantMessages(ctx, id) } -// InsertAssistantMessage adds the message to the backend. -func (a *ServerWithRoles) InsertAssistantMessage(ctx context.Context, msg *proto.AssistantMessage) (*emptypb.Empty, error) { +// CreateAssistantMessage adds the message to the backend. +func (a *ServerWithRoles) CreateAssistantMessage(ctx context.Context, msg *proto.AssistantMessage) (*emptypb.Empty, error) { if err := a.action(apidefaults.Namespace, types.KindAssistant, types.VerbUpdate); err != nil { return nil, trace.Wrap(err) } - return &emptypb.Empty{}, a.authServer.InsertAssistantMessage(ctx, msg) + return &emptypb.Empty{}, a.authServer.CreateAssistantMessage(ctx, msg) } // SetAssistantConversationTitle set the given title as the assistant conversation title. diff --git a/lib/auth/clt.go b/lib/auth/clt.go index 67a3295b9a59e..cfc71ac108d5c 100644 --- a/lib/auth/clt.go +++ b/lib/auth/clt.go @@ -660,8 +660,8 @@ type IdentityService interface { GetAssistantConversations(ctx context.Context, request *proto.GetAssistantConversationsRequest) (*proto.GetAssistantConversationsResponse, error) // CreateAssistantConversation creates a new conversation entry in the backend. CreateAssistantConversation(ctx context.Context, req *proto.CreateAssistantConversationRequest) (*proto.CreateAssistantConversationResponse, error) - // InsertAssistantMessage adds the message to the backend. - InsertAssistantMessage(ctx context.Context, in *proto.AssistantMessage) (*emptypb.Empty, error) + // CreateAssistantMessage adds the message to the backend. + CreateAssistantMessage(ctx context.Context, in *proto.AssistantMessage) (*emptypb.Empty, error) // SetAssistantConversationTitle sets the given title as the conversation title. SetAssistantConversationTitle(ctx context.Context, in *proto.ConversationInfo) error } diff --git a/lib/auth/grpcserver.go b/lib/auth/grpcserver.go index 702c0d69bcd4a..7ca05239fb7e8 100644 --- a/lib/auth/grpcserver.go +++ b/lib/auth/grpcserver.go @@ -5034,13 +5034,13 @@ func (g *GRPCServer) GetAssistantMessages(ctx context.Context, request *proto.As return messages, trace.Wrap(err) } -// InsertAssistantMessage adds the message to the backend. -func (g *GRPCServer) InsertAssistantMessage(ctx context.Context, assistantMessage *proto.AssistantMessage) (*emptypb.Empty, error) { +// CreateAssistantMessage adds the message to the backend. +func (g *GRPCServer) CreateAssistantMessage(ctx context.Context, assistantMessage *proto.AssistantMessage) (*emptypb.Empty, error) { auth, err := g.authenticate(ctx) if err != nil { return &emptypb.Empty{}, trace.Wrap(err) } - resp, err := auth.InsertAssistantMessage(ctx, assistantMessage) + resp, err := auth.CreateAssistantMessage(ctx, assistantMessage) return resp, trace.Wrap(err) } From 5840e676a9ad6435084f432d3c0772f70c0c0446 Mon Sep 17 00:00:00 2001 From: Jakub Nyckowski Date: Mon, 8 May 2023 16:59:16 -0400 Subject: [PATCH 05/10] Address PR comments --- api/types/constants.go | 3 ++- lib/services/local/users.go | 4 ++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/api/types/constants.go b/api/types/constants.go index 30f5fa2fc5411..be8d732cf57ac 100644 --- a/api/types/constants.go +++ b/api/types/constants.go @@ -341,7 +341,8 @@ const ( // KindHeadlessAuthentication is a headless authentication resource. KindHeadlessAuthentication = "headless_authentication" - // KindAssistant is a Teleport Assist resource kind. + // KindAssistant is a Teleport Assist resource kind. It's used by + // Teleport Assist to store its objects as messages and conversations. KindAssistant = "assistant" // KindIntegration is a connection to a 3rd party system API. diff --git a/lib/services/local/users.go b/lib/services/local/users.go index ea219324cf0bc..3438fae309d4b 100644 --- a/lib/services/local/users.go +++ b/lib/services/local/users.go @@ -1538,6 +1538,6 @@ const ( recoveryCodesPrefix = "recoverycodes" recoveryAttemptsPrefix = "recoveryattempts" attestationsPrefix = "key_attestations" - assistantMessagePrefix = "assistant_message" - assistantConversationPrefix = "assistant_conversation" + assistantMessagePrefix = "assistant_messages" + assistantConversationPrefix = "assistant_conversations" ) From 20b1687514730c8a56b4958c325a867db2a646af Mon Sep 17 00:00:00 2001 From: Jakub Nyckowski Date: Mon, 8 May 2023 17:46:18 -0400 Subject: [PATCH 06/10] Update GRPC API - addressing code review comments --- api/client/client.go | 12 +- api/client/proto/authservice.pb.go | 2298 ++++++++++------- .../legacy/client/proto/authservice.proto | 40 +- lib/auth/auth.go | 41 +- lib/auth/auth_with_roles.go | 10 +- lib/auth/clt.go | 6 +- lib/auth/grpcserver.go | 10 +- lib/services/identity.go | 12 +- lib/services/local/assistant.go | 45 +- lib/services/local/assistant_test.go | 41 +- 10 files changed, 1518 insertions(+), 997 deletions(-) diff --git a/api/client/client.go b/api/client/client.go index 36b4e854b7368..d0cc138ef02f3 100644 --- a/api/client/client.go +++ b/api/client/client.go @@ -3663,10 +3663,8 @@ func (c *Client) CreateAssistantConversation(ctx context.Context, req *proto.Cre } // GetAssistantMessages retrieves assistant messages with given conversation ID. -func (c *Client) GetAssistantMessages(ctx context.Context, id string) (*proto.GetAssistantMessagesResponse, error) { - messages, err := c.grpc.GetAssistantMessages(ctx, &proto.AssistantRequest{ - ConversationId: id, - }) +func (c *Client) GetAssistantMessages(ctx context.Context, req *proto.AssistantMessageRequest) (*proto.GetAssistantMessagesResponse, error) { + messages, err := c.grpc.GetAssistantMessages(ctx, req) if err != nil { return nil, trail.FromGRPC(err) } @@ -3691,9 +3689,9 @@ func (c *Client) CreateAssistantMessage(ctx context.Context, in *proto.Assistant return resp, nil } -// SetAssistantConversationTitle set the given assistant conversation title. -func (c *Client) SetAssistantConversationTitle(ctx context.Context, in *proto.ConversationInfo) error { - _, err := c.grpc.SetAssistantConversationTitle(ctx, in) +// UpdateAssistantConversationInfo updates conversation info. +func (c *Client) UpdateAssistantConversationInfo(ctx context.Context, in *proto.UpdateAssistantConversationInfoRequest) error { + _, err := c.grpc.UpdateAssistantConversationInfo(ctx, in) if err != nil { return trail.FromGRPC(err) } diff --git a/api/client/proto/authservice.pb.go b/api/client/proto/authservice.pb.go index b3ef559518209..49fee6e7e4119 100644 --- a/api/client/proto/authservice.pb.go +++ b/api/client/proto/authservice.pb.go @@ -14046,28 +14046,30 @@ func (m *ExportUpgradeWindowsResponse) GetSystemdUnitSchedule() string { return "" } -// AssistantRequest is a request to the assistant service. -type AssistantRequest struct { +// AssistantMessageRequest is a request to the assistant service. +type AssistantMessageRequest struct { // conversationId it's the ID of a conversation. // It's used to tie all messages in a one conversation. - ConversationId string `protobuf:"bytes,1,opt,name=conversation_id,json=conversationId,proto3" json:"conversation_id,omitempty"` + ConversationId string `protobuf:"bytes,1,opt,name=conversation_id,json=conversationId,proto3" json:"conversation_id,omitempty"` + // username is a username of the user who sent the message. + Username string `protobuf:"bytes,2,opt,name=username,proto3" json:"username,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_unrecognized []byte `json:"-"` XXX_sizecache int32 `json:"-"` } -func (m *AssistantRequest) Reset() { *m = AssistantRequest{} } -func (m *AssistantRequest) String() string { return proto.CompactTextString(m) } -func (*AssistantRequest) ProtoMessage() {} -func (*AssistantRequest) Descriptor() ([]byte, []int) { +func (m *AssistantMessageRequest) Reset() { *m = AssistantMessageRequest{} } +func (m *AssistantMessageRequest) String() string { return proto.CompactTextString(m) } +func (*AssistantMessageRequest) ProtoMessage() {} +func (*AssistantMessageRequest) Descriptor() ([]byte, []int) { return fileDescriptor_0ffcffcda38ae159, []int{205} } -func (m *AssistantRequest) XXX_Unmarshal(b []byte) error { +func (m *AssistantMessageRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) } -func (m *AssistantRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { +func (m *AssistantMessageRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { if deterministic { - return xxx_messageInfo_AssistantRequest.Marshal(b, m, deterministic) + return xxx_messageInfo_AssistantMessageRequest.Marshal(b, m, deterministic) } else { b = b[:cap(b)] n, err := m.MarshalToSizedBuffer(b) @@ -14077,36 +14079,45 @@ func (m *AssistantRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, er return b[:n], nil } } -func (m *AssistantRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_AssistantRequest.Merge(m, src) +func (m *AssistantMessageRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_AssistantMessageRequest.Merge(m, src) } -func (m *AssistantRequest) XXX_Size() int { +func (m *AssistantMessageRequest) XXX_Size() int { return m.Size() } -func (m *AssistantRequest) XXX_DiscardUnknown() { - xxx_messageInfo_AssistantRequest.DiscardUnknown(m) +func (m *AssistantMessageRequest) XXX_DiscardUnknown() { + xxx_messageInfo_AssistantMessageRequest.DiscardUnknown(m) } -var xxx_messageInfo_AssistantRequest proto.InternalMessageInfo +var xxx_messageInfo_AssistantMessageRequest proto.InternalMessageInfo -func (m *AssistantRequest) GetConversationId() string { +func (m *AssistantMessageRequest) GetConversationId() string { if m != nil { return m.ConversationId } return "" } +func (m *AssistantMessageRequest) GetUsername() string { + if m != nil { + return m.Username + } + return "" +} + // AssistantMessage is a message sent to the assistant service. The conversation // must be created first. type AssistantMessage struct { // conversationId used to tie all messages in a one conversation. ConversationId string `protobuf:"bytes,1,opt,name=conversation_id,json=conversationId,proto3" json:"conversation_id,omitempty"` + // username is a username of the user who sent the message. + Username string `protobuf:"bytes,2,opt,name=username,proto3" json:"username,omitempty"` // type is a type of message. It can be Chat response/query or a command to run. - Type string `protobuf:"bytes,2,opt,name=type,proto3" json:"type,omitempty"` + Type string `protobuf:"bytes,3,opt,name=type,proto3" json:"type,omitempty"` // createdTime is the time when the even occurred. - CreatedTime time.Time `protobuf:"bytes,3,opt,name=created_time,json=createdTime,proto3,stdtime" json:"created_time"` + CreatedTime time.Time `protobuf:"bytes,4,opt,name=created_time,json=createdTime,proto3,stdtime" json:"created_time"` // payload is a JSON message - Payload string `protobuf:"bytes,4,opt,name=payload,proto3" json:"payload,omitempty"` + Payload string `protobuf:"bytes,5,opt,name=payload,proto3" json:"payload,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_unrecognized []byte `json:"-"` XXX_sizecache int32 `json:"-"` @@ -14152,6 +14163,13 @@ func (m *AssistantMessage) GetConversationId() string { return "" } +func (m *AssistantMessage) GetUsername() string { + if m != nil { + return m.Username + } + return "" +} + func (m *AssistantMessage) GetType() string { if m != nil { return m.Type @@ -14224,6 +14242,8 @@ func (m *GetAssistantMessagesResponse) GetMessages() []*AssistantMessage { // GetAssistantConversationsRequest is a request to get a list of conversations. type GetAssistantConversationsRequest struct { + // username is a username of the user who created the conversation. + Username string `protobuf:"bytes,1,opt,name=username,proto3" json:"username,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_unrecognized []byte `json:"-"` XXX_sizecache int32 `json:"-"` @@ -14262,6 +14282,13 @@ func (m *GetAssistantConversationsRequest) XXX_DiscardUnknown() { var xxx_messageInfo_GetAssistantConversationsRequest proto.InternalMessageInfo +func (m *GetAssistantConversationsRequest) GetUsername() string { + if m != nil { + return m.Username + } + return "" +} + // ConversationInfo is a conversation info. It contains a conversation // information like ID, title, created time. type ConversationInfo struct { @@ -14381,8 +14408,10 @@ func (m *GetAssistantConversationsResponse) GetConversations() []*ConversationIn // CreateAssistantConversationRequest is a request to create a new conversation. type CreateAssistantConversationRequest struct { + // username is a username of the user who created the conversation. + Username string `protobuf:"bytes,1,opt,name=username,proto3" json:"username,omitempty"` // createdTime is the time when the conversation was created. - CreatedTime time.Time `protobuf:"bytes,1,opt,name=created_time,json=createdTime,proto3,stdtime" json:"created_time"` + CreatedTime time.Time `protobuf:"bytes,2,opt,name=created_time,json=createdTime,proto3,stdtime" json:"created_time"` XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_unrecognized []byte `json:"-"` XXX_sizecache int32 `json:"-"` @@ -14421,6 +14450,13 @@ func (m *CreateAssistantConversationRequest) XXX_DiscardUnknown() { var xxx_messageInfo_CreateAssistantConversationRequest proto.InternalMessageInfo +func (m *CreateAssistantConversationRequest) GetUsername() string { + if m != nil { + return m.Username + } + return "" +} + func (m *CreateAssistantConversationRequest) GetCreatedTime() time.Time { if m != nil { return m.CreatedTime @@ -14477,6 +14513,74 @@ func (m *CreateAssistantConversationResponse) GetId() string { return "" } +type UpdateAssistantConversationInfoRequest struct { + // conversationId is a unique conversation ID. + ConversationId string `protobuf:"bytes,1,opt,name=conversation_id,json=conversationId,proto3" json:"conversation_id,omitempty"` + // username is a username of the user who created the conversation. + Username string `protobuf:"bytes,2,opt,name=username,proto3" json:"username,omitempty"` + // title is a title of the conversation. + Title string `protobuf:"bytes,3,opt,name=title,proto3" json:"title,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *UpdateAssistantConversationInfoRequest) Reset() { + *m = UpdateAssistantConversationInfoRequest{} +} +func (m *UpdateAssistantConversationInfoRequest) String() string { return proto.CompactTextString(m) } +func (*UpdateAssistantConversationInfoRequest) ProtoMessage() {} +func (*UpdateAssistantConversationInfoRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_0ffcffcda38ae159, []int{213} +} +func (m *UpdateAssistantConversationInfoRequest) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *UpdateAssistantConversationInfoRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_UpdateAssistantConversationInfoRequest.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *UpdateAssistantConversationInfoRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_UpdateAssistantConversationInfoRequest.Merge(m, src) +} +func (m *UpdateAssistantConversationInfoRequest) XXX_Size() int { + return m.Size() +} +func (m *UpdateAssistantConversationInfoRequest) XXX_DiscardUnknown() { + xxx_messageInfo_UpdateAssistantConversationInfoRequest.DiscardUnknown(m) +} + +var xxx_messageInfo_UpdateAssistantConversationInfoRequest proto.InternalMessageInfo + +func (m *UpdateAssistantConversationInfoRequest) GetConversationId() string { + if m != nil { + return m.ConversationId + } + return "" +} + +func (m *UpdateAssistantConversationInfoRequest) GetUsername() string { + if m != nil { + return m.Username + } + return "" +} + +func (m *UpdateAssistantConversationInfoRequest) GetTitle() string { + if m != nil { + return m.Title + } + return "" +} + func init() { proto.RegisterEnum("proto.Operation", Operation_name, Operation_value) proto.RegisterEnum("proto.DeviceType", DeviceType_name, DeviceType_value) @@ -14695,7 +14799,7 @@ func init() { proto.RegisterType((*UpdateHeadlessAuthenticationStateRequest)(nil), "proto.UpdateHeadlessAuthenticationStateRequest") proto.RegisterType((*ExportUpgradeWindowsRequest)(nil), "proto.ExportUpgradeWindowsRequest") proto.RegisterType((*ExportUpgradeWindowsResponse)(nil), "proto.ExportUpgradeWindowsResponse") - proto.RegisterType((*AssistantRequest)(nil), "proto.AssistantRequest") + proto.RegisterType((*AssistantMessageRequest)(nil), "proto.AssistantMessageRequest") proto.RegisterType((*AssistantMessage)(nil), "proto.AssistantMessage") proto.RegisterType((*GetAssistantMessagesResponse)(nil), "proto.GetAssistantMessagesResponse") proto.RegisterType((*GetAssistantConversationsRequest)(nil), "proto.GetAssistantConversationsRequest") @@ -14703,6 +14807,7 @@ func init() { proto.RegisterType((*GetAssistantConversationsResponse)(nil), "proto.GetAssistantConversationsResponse") proto.RegisterType((*CreateAssistantConversationRequest)(nil), "proto.CreateAssistantConversationRequest") proto.RegisterType((*CreateAssistantConversationResponse)(nil), "proto.CreateAssistantConversationResponse") + proto.RegisterType((*UpdateAssistantConversationInfoRequest)(nil), "proto.UpdateAssistantConversationInfoRequest") } func init() { @@ -14710,850 +14815,854 @@ func init() { } var fileDescriptor_0ffcffcda38ae159 = []byte{ - // 13481 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xc4, 0x7d, 0x5b, 0x6c, 0x1c, 0x49, - 0x92, 0x98, 0xba, 0x49, 0x8a, 0x64, 0xf0, 0xd5, 0x4a, 0x91, 0x62, 0xab, 0x49, 0xb1, 0xa5, 0xd2, - 0x4a, 0xa3, 0xd1, 0xee, 0xea, 0x41, 0xcd, 0x7b, 0x66, 0x67, 0xb6, 0xbb, 0x49, 0x89, 0x94, 0x28, - 0x92, 0x53, 0x4d, 0xb6, 0x66, 0x77, 0x67, 0xb7, 0xb7, 0xd8, 0x9d, 0x22, 0xcb, 0x6a, 0x76, 0xf5, - 0x56, 0x55, 0x4b, 0xa3, 0x33, 0xfc, 0x38, 0x9f, 0xef, 0x3e, 0x6c, 0xd8, 0x5e, 0xc3, 0x77, 0x86, - 0x0f, 0xfe, 0x38, 0x03, 0xf6, 0x8f, 0x0d, 0x18, 0x30, 0x0e, 0x38, 0xdc, 0x8f, 0x7f, 0xce, 0x36, - 0xe0, 0xb5, 0x81, 0x03, 0x0c, 0xd8, 0x07, 0x03, 0xfe, 0xa0, 0x7d, 0xfb, 0x49, 0xc0, 0x1f, 0x86, - 0xe1, 0xfb, 0x58, 0xc0, 0x80, 0x91, 0xcf, 0xca, 0xac, 0xca, 0xaa, 0x26, 0x35, 0xdc, 0xf1, 0x8f, - 0xc4, 0xce, 0x8c, 0x88, 0x7c, 0x47, 0x45, 0x44, 0x46, 0x46, 0xc0, 0x9d, 0x10, 0x77, 0x70, 0xcf, - 0xf3, 0xc3, 0xbb, 0x1d, 0xbc, 0xef, 0xb4, 0x5e, 0xdf, 0x6d, 0x75, 0x5c, 0xdc, 0x0d, 0xef, 0xf6, - 0x7c, 0x2f, 0xf4, 0xee, 0x3a, 0xfd, 0xf0, 0x20, 0xc0, 0xfe, 0x4b, 0xb7, 0x85, 0xef, 0xd0, 0x12, - 0x34, 0x42, 0xff, 0x2b, 0xcd, 0xee, 0x7b, 0xfb, 0x1e, 0x83, 0x21, 0x7f, 0xb1, 0xca, 0xd2, 0xc2, - 0xbe, 0xe7, 0xed, 0x77, 0x30, 0x43, 0xde, 0xeb, 0x3f, 0xbf, 0x8b, 0x0f, 0x7b, 0xe1, 0x6b, 0x5e, - 0x59, 0x8e, 0x57, 0x86, 0xee, 0x21, 0x0e, 0x42, 0xe7, 0xb0, 0xc7, 0x01, 0xde, 0x96, 0x5d, 0x71, - 0xc2, 0x90, 0xd4, 0x84, 0xae, 0xd7, 0xbd, 0xfb, 0xf2, 0xbe, 0xfa, 0x93, 0x83, 0xde, 0xca, 0xec, - 0x75, 0x0b, 0xfb, 0x61, 0x90, 0x20, 0xca, 0x21, 0xc3, 0xd7, 0x3d, 0x1c, 0xdc, 0xc5, 0x2f, 0x71, - 0x37, 0x14, 0xff, 0x71, 0xd0, 0x6b, 0x66, 0x50, 0xfa, 0x2f, 0x07, 0xf9, 0xae, 0x19, 0xe4, 0x15, - 0xde, 0x23, 0x33, 0xd5, 0x95, 0x7f, 0x0c, 0x00, 0xf7, 0x9d, 0x5e, 0x0f, 0xfb, 0xd1, 0x1f, 0x89, - 0xbe, 0xf6, 0x03, 0x67, 0x1f, 0xf3, 0x3e, 0xbe, 0xbc, 0xaf, 0xfe, 0x64, 0xa0, 0xd6, 0xef, 0x2c, - 0xc1, 0xc8, 0x2a, 0x29, 0x40, 0x1f, 0xc0, 0xf0, 0xce, 0xeb, 0x1e, 0x2e, 0xe6, 0xae, 0xe6, 0x6e, - 0x4d, 0x2f, 0x17, 0x58, 0xfd, 0x9d, 0xad, 0x1e, 0xf6, 0xe9, 0x84, 0x55, 0xd1, 0xf1, 0x51, 0x79, - 0x9a, 0xb4, 0xfb, 0x1d, 0xef, 0xd0, 0x0d, 0xe9, 0x82, 0xd8, 0x14, 0x03, 0x3d, 0x83, 0x69, 0x1b, - 0x07, 0x5e, 0xdf, 0x6f, 0xe1, 0x35, 0xec, 0xb4, 0xb1, 0x5f, 0xcc, 0x5f, 0xcd, 0xdd, 0x9a, 0x58, - 0x9e, 0xbb, 0xc3, 0x86, 0xac, 0x57, 0x56, 0x2f, 0x1d, 0x1f, 0x95, 0x91, 0xcf, 0xcb, 0x22, 0x62, - 0x6b, 0xe7, 0xec, 0x18, 0x19, 0xf4, 0x25, 0x4c, 0xd5, 0xb0, 0x1f, 0x56, 0xfa, 0xe1, 0x81, 0xe7, - 0xbb, 0xe1, 0xeb, 0xe2, 0x10, 0xa5, 0x7b, 0x89, 0xd3, 0xd5, 0xea, 0x1a, 0xcb, 0xd5, 0xc5, 0xe3, - 0xa3, 0x72, 0x91, 0xac, 0x59, 0xd3, 0x11, 0xa5, 0x1a, 0x79, 0x9d, 0x18, 0xfa, 0x02, 0x26, 0xeb, - 0x64, 0x33, 0xb4, 0x76, 0xbc, 0x17, 0xb8, 0x1b, 0x14, 0x87, 0xb5, 0x4e, 0xab, 0x55, 0x8d, 0xe5, - 0xea, 0xc2, 0xf1, 0x51, 0x79, 0x9e, 0xee, 0x9d, 0x56, 0x33, 0xa4, 0x85, 0x1a, 0x69, 0x8d, 0x12, - 0xfa, 0x29, 0x4c, 0x6f, 0xfb, 0xde, 0x4b, 0x37, 0x70, 0xbd, 0x2e, 0x2d, 0x2a, 0x8e, 0x50, 0xda, - 0xf3, 0x9c, 0xb6, 0x5e, 0xd9, 0x58, 0xae, 0x5e, 0x39, 0x3e, 0x2a, 0x5f, 0xee, 0x89, 0x52, 0xd6, - 0x80, 0x3e, 0x33, 0x3a, 0x0a, 0xda, 0x81, 0x89, 0x5a, 0xa7, 0x1f, 0x84, 0xd8, 0xdf, 0x74, 0x0e, - 0x71, 0xf1, 0x3c, 0x25, 0x3f, 0x2b, 0xe6, 0x25, 0xaa, 0x69, 0x2c, 0x57, 0x4b, 0xc7, 0x47, 0xe5, - 0x4b, 0x2d, 0x56, 0xd4, 0xec, 0x3a, 0x87, 0xfa, 0x94, 0xab, 0x64, 0xd0, 0xfb, 0x30, 0xbc, 0x1b, - 0x60, 0xbf, 0x38, 0x46, 0xc9, 0x4d, 0x71, 0x72, 0xa4, 0xa8, 0xb1, 0xcc, 0xd6, 0xbf, 0x1f, 0x60, - 0x5f, 0xc3, 0xa7, 0x08, 0x04, 0xd1, 0xf6, 0x3a, 0xb8, 0x38, 0xae, 0x21, 0x92, 0xa2, 0xc6, 0x7b, - 0x0c, 0xd1, 0xf7, 0x3a, 0x7a, 0xc3, 0x14, 0x01, 0xad, 0xc3, 0x38, 0x69, 0x39, 0xe8, 0x39, 0x2d, - 0x5c, 0x04, 0x8a, 0x5d, 0xe0, 0xd8, 0xb2, 0xbc, 0x3a, 0x7f, 0x7c, 0x54, 0xbe, 0xd8, 0x15, 0x3f, - 0x35, 0x2a, 0x11, 0x36, 0xfa, 0x0c, 0xce, 0xd7, 0xb1, 0xff, 0x12, 0xfb, 0xc5, 0x09, 0x4a, 0x67, - 0x46, 0x2c, 0x24, 0x2d, 0x6c, 0x2c, 0x57, 0x67, 0x8f, 0x8f, 0xca, 0x85, 0x80, 0xfe, 0xd2, 0x68, - 0x70, 0x34, 0xb2, 0xdb, 0x6c, 0xfc, 0x12, 0xfb, 0x01, 0xde, 0xe9, 0x77, 0xbb, 0xb8, 0x53, 0x9c, - 0xd4, 0x76, 0x9b, 0x56, 0x27, 0x76, 0x9b, 0xcf, 0x0a, 0x9b, 0x21, 0x2d, 0xd5, 0x77, 0x9b, 0x86, - 0x80, 0x0e, 0xa0, 0xc0, 0xfe, 0xaa, 0x79, 0xdd, 0x2e, 0x6e, 0x91, 0x23, 0x55, 0x9c, 0xa2, 0x0d, - 0x5c, 0xe6, 0x0d, 0xc4, 0xab, 0x1b, 0xcb, 0xd5, 0xf2, 0xf1, 0x51, 0x79, 0x81, 0xd1, 0x6e, 0xb6, - 0x64, 0x85, 0xd6, 0x4c, 0x82, 0x2a, 0x19, 0x47, 0xa5, 0xd5, 0xc2, 0x41, 0x60, 0xe3, 0x9f, 0xf5, - 0x71, 0x10, 0x16, 0xa7, 0xb5, 0x71, 0x68, 0x75, 0x8d, 0x07, 0x6c, 0x1c, 0x0e, 0x2d, 0x6c, 0xfa, - 0xac, 0x54, 0x1f, 0x87, 0x86, 0x80, 0xb6, 0x01, 0x2a, 0xbd, 0x5e, 0x1d, 0x07, 0x64, 0x33, 0x16, - 0x67, 0x28, 0xe9, 0x8b, 0x9c, 0xf4, 0x33, 0xbc, 0xc7, 0x2b, 0x1a, 0xcb, 0xd5, 0xcb, 0xc7, 0x47, - 0xe5, 0x39, 0xa7, 0xd7, 0x6b, 0x06, 0xac, 0x48, 0x23, 0xaa, 0xd0, 0x60, 0xf3, 0x7e, 0xe8, 0x85, - 0x98, 0x6f, 0xc5, 0x62, 0x21, 0x36, 0xef, 0x4a, 0x9d, 0xe8, 0xaf, 0x4f, 0x0b, 0x9b, 0x7c, 0x5b, - 0xc7, 0xe7, 0x5d, 0x41, 0x20, 0x67, 0x71, 0xc5, 0x09, 0x9d, 0x3d, 0x27, 0xc0, 0x7c, 0x7b, 0x5c, - 0xd0, 0xce, 0xa2, 0x5e, 0xd9, 0x78, 0xc0, 0xce, 0x62, 0x9b, 0x97, 0x36, 0x0d, 0xfb, 0x25, 0x46, - 0x8f, 0xcc, 0x48, 0x34, 0xf0, 0x22, 0x1a, 0x30, 0x23, 0xaf, 0xf0, 0x9e, 0x79, 0x46, 0x22, 0x50, - 0xb4, 0x06, 0x63, 0xcf, 0xf0, 0x1e, 0xe3, 0x1c, 0x17, 0x29, 0xbd, 0x0b, 0x11, 0x3d, 0xc6, 0x33, - 0x1e, 0xb0, 0x53, 0x41, 0xa8, 0x25, 0xb9, 0x85, 0xc4, 0x46, 0xbf, 0x9d, 0x83, 0x79, 0x71, 0xc2, - 0x71, 0xf8, 0xca, 0xf3, 0x5f, 0xb8, 0xdd, 0xfd, 0x9a, 0xd7, 0x7d, 0xee, 0xee, 0x17, 0x67, 0x29, - 0xe5, 0xab, 0x31, 0xa6, 0x11, 0x83, 0x6a, 0x2c, 0x57, 0xdf, 0x3a, 0x3e, 0x2a, 0x5f, 0x97, 0x0c, - 0x44, 0xd6, 0x93, 0x0d, 0xf9, 0xdc, 0xdd, 0xd7, 0x1a, 0x4e, 0x6b, 0x0b, 0xfd, 0x66, 0x0e, 0x2e, - 0xf1, 0xd1, 0xd9, 0xb8, 0xe5, 0xf9, 0xed, 0xa8, 0x1b, 0x73, 0xb4, 0x1b, 0x65, 0x79, 0x5a, 0x4d, - 0x40, 0x8d, 0xe5, 0xea, 0xcd, 0xe3, 0xa3, 0xb2, 0xc5, 0x27, 0xae, 0xe9, 0x8b, 0x6a, 0x53, 0x27, - 0x52, 0x1a, 0x22, 0x3b, 0x81, 0x30, 0xff, 0x6d, 0x1f, 0x3f, 0xc7, 0x3e, 0xee, 0xb6, 0x70, 0xf1, - 0x92, 0xb6, 0x13, 0xf4, 0x4a, 0xc1, 0x95, 0xc9, 0xa7, 0xa4, 0xd9, 0x93, 0xc5, 0xfa, 0x4e, 0xd0, - 0x51, 0xd0, 0xcf, 0x00, 0xf1, 0x09, 0xa8, 0xf4, 0xdb, 0x6e, 0xc8, 0x07, 0x38, 0x4f, 0x5b, 0x59, - 0xd0, 0xe7, 0x59, 0x01, 0x68, 0x2c, 0x57, 0xad, 0xe3, 0xa3, 0xf2, 0x92, 0x98, 0x62, 0x87, 0x54, - 0x99, 0x06, 0x66, 0x20, 0x4e, 0x38, 0xef, 0x86, 0xd7, 0x7a, 0x51, 0x2c, 0x6a, 0x9c, 0x97, 0x14, - 0x09, 0x96, 0xdd, 0xf1, 0x5a, 0x2f, 0x74, 0xce, 0x4b, 0x6a, 0x51, 0x08, 0x17, 0xf9, 0x2a, 0xd9, - 0x38, 0x08, 0x7d, 0x97, 0xf2, 0x8e, 0xa0, 0x78, 0x99, 0xd2, 0x59, 0x14, 0x3c, 0x38, 0x09, 0xd1, - 0x78, 0x87, 0xf5, 0x96, 0x6f, 0x84, 0xa6, 0xaf, 0xd4, 0x69, 0xcd, 0x98, 0xc8, 0xa3, 0xbf, 0x02, - 0x73, 0xcf, 0xdc, 0x6e, 0xdb, 0x7b, 0x15, 0xac, 0xe0, 0xe0, 0x45, 0xe8, 0xf5, 0xea, 0x4c, 0x28, - 0x2c, 0x96, 0x68, 0xbb, 0x4b, 0x62, 0x9b, 0x9b, 0x60, 0x1a, 0x0f, 0xaa, 0x37, 0x8e, 0x8f, 0xca, - 0xd7, 0x5e, 0xb1, 0xca, 0x66, 0x9b, 0xd5, 0x36, 0xb9, 0x5c, 0xa9, 0x35, 0x6e, 0x6e, 0x85, 0x6c, - 0x01, 0xbd, 0xa2, 0xb8, 0xa0, 0x6d, 0x01, 0xbd, 0x52, 0x30, 0x83, 0x58, 0x83, 0xfa, 0x16, 0xd0, - 0x51, 0xd0, 0x23, 0x18, 0x13, 0xec, 0xa1, 0xb8, 0xa8, 0x1d, 0x5d, 0x51, 0xdc, 0x78, 0xc0, 0x24, - 0x20, 0xc1, 0x62, 0xf4, 0x93, 0x2b, 0xa0, 0xd0, 0x06, 0x8c, 0x53, 0x1e, 0x49, 0x59, 0xd6, 0x15, - 0x4a, 0x09, 0x89, 0x8d, 0x2a, 0xca, 0x1b, 0x0f, 0xaa, 0xc5, 0xe3, 0xa3, 0xf2, 0x2c, 0xe3, 0xb2, - 0x09, 0x46, 0x15, 0x11, 0x40, 0x0f, 0x60, 0xa8, 0xd2, 0xeb, 0x15, 0x97, 0x28, 0x9d, 0xc9, 0x88, - 0x4e, 0xe3, 0x41, 0xf5, 0xc2, 0xf1, 0x51, 0x79, 0xca, 0xe9, 0xe9, 0xc3, 0x22, 0xd0, 0x68, 0x0f, - 0x0a, 0xf5, 0xae, 0xf7, 0xea, 0x79, 0xc7, 0x79, 0x81, 0x05, 0x7b, 0x2b, 0xa7, 0xb3, 0x37, 0xfa, - 0xb1, 0x0a, 0x04, 0x82, 0x91, 0xc9, 0x25, 0xe8, 0x91, 0xcf, 0xe2, 0x93, 0xfe, 0x1e, 0xf6, 0xbb, - 0x38, 0xc4, 0x01, 0x1f, 0xed, 0x55, 0xed, 0xb3, 0x18, 0xaf, 0x6e, 0x3c, 0x60, 0x2d, 0xbd, 0x90, - 0xe5, 0xa6, 0xb1, 0x27, 0xa8, 0xa2, 0x0e, 0x5c, 0x88, 0xca, 0xc4, 0xa7, 0xe6, 0x1a, 0x6d, 0xaa, - 0x94, 0x68, 0x2a, 0xfa, 0xdc, 0x5c, 0x3d, 0x3e, 0x2a, 0x2f, 0x2a, 0x6d, 0x99, 0x3e, 0x39, 0x49, - 0xc2, 0xe8, 0x09, 0x8c, 0xaf, 0x77, 0x83, 0xd0, 0xe9, 0x74, 0xb0, 0x5f, 0xb4, 0xb4, 0xe5, 0x93, - 0xe5, 0x8d, 0xfb, 0x8c, 0x89, 0xbb, 0xa2, 0x40, 0x5f, 0x3d, 0x09, 0x87, 0xda, 0x30, 0xa3, 0x7e, - 0x73, 0xc8, 0x79, 0xb9, 0x4e, 0x49, 0x16, 0x0d, 0x1f, 0x31, 0x72, 0x52, 0xee, 0x57, 0x97, 0x8e, - 0x8f, 0xca, 0x25, 0xed, 0x2b, 0x16, 0x3f, 0x22, 0x71, 0x92, 0xe8, 0x6f, 0x10, 0x1e, 0x5d, 0x79, - 0xba, 0xb1, 0xde, 0xde, 0xe6, 0x45, 0x54, 0xe8, 0x24, 0xf2, 0xfc, 0xb7, 0x74, 0x1e, 0x6d, 0x04, - 0x6a, 0xdc, 0x67, 0x5f, 0x8a, 0xc0, 0x39, 0xec, 0x34, 0xdd, 0xb6, 0x3c, 0x97, 0xcd, 0x1e, 0x07, - 0x88, 0x31, 0x69, 0x23, 0x11, 0xf4, 0x63, 0x98, 0x96, 0x35, 0x6c, 0xc7, 0xdd, 0x48, 0xdf, 0x71, - 0x74, 0x90, 0x4a, 0x7b, 0xc9, 0x0d, 0x17, 0x23, 0x46, 0x4e, 0x15, 0x11, 0x58, 0x1f, 0xf9, 0x5e, - 0xbf, 0x57, 0xbc, 0xa9, 0x2d, 0x8b, 0x2c, 0x6f, 0xdc, 0x67, 0xa7, 0x8a, 0xc8, 0xba, 0xcd, 0x7d, - 0x52, 0xa2, 0xaf, 0x8b, 0x04, 0x24, 0xdf, 0xe9, 0xdd, 0x75, 0xce, 0xe5, 0xdf, 0xd2, 0x0e, 0xbb, - 0x28, 0x16, 0x4b, 0xdc, 0x77, 0x4d, 0x0c, 0x5d, 0x62, 0x23, 0x07, 0xa6, 0xb7, 0x5e, 0x84, 0xce, - 0xfa, 0x21, 0xd1, 0xda, 0xec, 0x7e, 0x07, 0x17, 0x6f, 0x69, 0x8c, 0x49, 0xaf, 0x14, 0xeb, 0xeb, - 0xbd, 0x08, 0x9d, 0xa6, 0x4b, 0x8b, 0x9b, 0x7e, 0x3f, 0x26, 0x60, 0xc7, 0x08, 0x12, 0xde, 0x47, - 0x4a, 0x2a, 0x41, 0xe0, 0xee, 0x77, 0x0f, 0x71, 0x37, 0x2c, 0xbe, 0x9d, 0x68, 0x22, 0xaa, 0x6c, - 0xdc, 0x67, 0xbc, 0x8f, 0x36, 0xe1, 0xc8, 0xe2, 0x64, 0x0b, 0x11, 0x0a, 0xaa, 0xc3, 0xc4, 0x7a, - 0x37, 0xc4, 0xfb, 0x4c, 0x61, 0x2c, 0xde, 0xd6, 0x94, 0x12, 0xa5, 0xa6, 0x71, 0x9f, 0x89, 0x42, - 0x6e, 0x54, 0xa4, 0xeb, 0x24, 0x0a, 0x2c, 0xd1, 0x74, 0x9e, 0x39, 0x61, 0xeb, 0x80, 0x28, 0x58, - 0xfd, 0xa0, 0xf8, 0x6d, 0x8d, 0xa8, 0x52, 0xd3, 0xb8, 0xcf, 0x34, 0x9d, 0x57, 0xa4, 0xa8, 0x19, - 0xd0, 0x32, 0x9d, 0xaa, 0x02, 0x5c, 0x05, 0x18, 0x13, 0xba, 0xe6, 0xe3, 0xe1, 0xb1, 0xd1, 0xc2, - 0x98, 0xf5, 0x07, 0x39, 0x18, 0xa1, 0x10, 0xe8, 0x33, 0x18, 0x79, 0xe2, 0x76, 0xdb, 0x41, 0x31, - 0x77, 0x75, 0x48, 0xd1, 0x47, 0x68, 0x25, 0xa9, 0xa8, 0xce, 0xff, 0xe2, 0xa8, 0x7c, 0xee, 0xf8, - 0xa8, 0x3c, 0xf3, 0x82, 0x80, 0x29, 0xea, 0x30, 0xc3, 0x43, 0xbb, 0x70, 0xb1, 0xd2, 0xe9, 0x78, - 0xaf, 0xb6, 0x1d, 0x3f, 0x74, 0x9d, 0x4e, 0xbd, 0x4f, 0x05, 0x68, 0xaa, 0x14, 0x8f, 0x55, 0xaf, - 0x1f, 0x1f, 0x95, 0xcb, 0x0e, 0xa9, 0x6e, 0xf6, 0x58, 0x7d, 0x33, 0x60, 0x00, 0x0a, 0x21, 0x13, - 0xbe, 0xf5, 0x47, 0xe7, 0xa1, 0xb0, 0xe6, 0x05, 0x21, 0xd1, 0x62, 0xa5, 0x38, 0x7e, 0x1d, 0xce, - 0x93, 0xb2, 0xf5, 0x15, 0xaa, 0xb7, 0x8f, 0x57, 0x27, 0x8e, 0x8f, 0xca, 0xa3, 0x07, 0x5e, 0x10, - 0x36, 0xdd, 0xb6, 0xcd, 0xab, 0xd0, 0xdb, 0x30, 0xb6, 0xe9, 0xb5, 0x31, 0x55, 0x15, 0xf3, 0x14, - 0x6c, 0xea, 0xf8, 0xa8, 0x3c, 0xde, 0xf5, 0xda, 0x98, 0x6a, 0x84, 0xb6, 0xac, 0x46, 0x0d, 0xae, - 0xc9, 0x0d, 0x51, 0xb0, 0xea, 0xf1, 0x51, 0x79, 0x98, 0xa8, 0x6e, 0xbf, 0x3a, 0x2a, 0xbf, 0xb7, - 0xef, 0x86, 0x07, 0xfd, 0xbd, 0x3b, 0x2d, 0xef, 0xf0, 0xee, 0xbe, 0xef, 0xbc, 0x74, 0x99, 0x21, - 0xc5, 0xe9, 0xdc, 0x8d, 0xcc, 0x2d, 0x3d, 0x97, 0x5b, 0x39, 0xea, 0xaf, 0x83, 0x10, 0x1f, 0x12, - 0x4a, 0x5c, 0xd1, 0x7b, 0x06, 0xb3, 0x95, 0x76, 0xdb, 0x65, 0x18, 0xdb, 0xbe, 0xdb, 0x6d, 0xb9, - 0x3d, 0xa7, 0x43, 0x94, 0xee, 0xa1, 0x5b, 0xe3, 0x7c, 0x52, 0x64, 0x7d, 0xb3, 0x27, 0x01, 0x94, - 0x49, 0x31, 0x12, 0x40, 0x0f, 0x60, 0x6c, 0x65, 0xb3, 0x4e, 0xd5, 0xc0, 0xe2, 0x08, 0x25, 0x46, - 0x0f, 0x5c, 0xbb, 0x1b, 0xd0, 0xa1, 0xa9, 0x04, 0x24, 0x20, 0x7a, 0x0f, 0x26, 0xb7, 0xfb, 0x7b, - 0x1d, 0xb7, 0xb5, 0xb3, 0x51, 0x7f, 0x82, 0x5f, 0x53, 0xfd, 0x79, 0x92, 0x89, 0x4b, 0x3d, 0x5a, - 0xde, 0x0c, 0x3b, 0x41, 0xf3, 0x05, 0x7e, 0x6d, 0x6b, 0x70, 0x11, 0x5e, 0xbd, 0xbe, 0x46, 0xf0, - 0x46, 0x13, 0x78, 0x41, 0x70, 0xa0, 0xe2, 0x31, 0x38, 0x74, 0x17, 0x80, 0x69, 0x25, 0x95, 0x76, - 0x9b, 0xa9, 0xd7, 0xe3, 0xd5, 0x99, 0xe3, 0xa3, 0xf2, 0x04, 0xd7, 0x63, 0x9c, 0x76, 0xdb, 0xb7, - 0x15, 0x10, 0x54, 0x83, 0x31, 0xdb, 0x63, 0x13, 0xcc, 0x95, 0xea, 0x19, 0xa9, 0x54, 0xb3, 0x62, - 0x6e, 0x46, 0xe1, 0xbf, 0xd4, 0x51, 0x0a, 0x08, 0x54, 0x86, 0xd1, 0x4d, 0xaf, 0xe6, 0xb4, 0x0e, - 0x98, 0x6a, 0x3d, 0x56, 0x1d, 0x39, 0x3e, 0x2a, 0xe7, 0xbe, 0x6b, 0x8b, 0x52, 0xf4, 0x12, 0x26, - 0xa2, 0x85, 0x0a, 0x8a, 0x13, 0x74, 0xfa, 0x76, 0xc8, 0x29, 0x0a, 0x68, 0x71, 0x93, 0x2c, 0xbd, - 0x32, 0x83, 0x5f, 0x63, 0x17, 0xa8, 0x0d, 0xa1, 0x0e, 0x5c, 0xd9, 0x25, 0x1f, 0xb7, 0xbd, 0x0e, - 0x8e, 0x8a, 0x2b, 0x41, 0x80, 0x7d, 0x42, 0x6b, 0x7d, 0x85, 0x6a, 0xde, 0xe3, 0x5c, 0xe4, 0x8f, - 0x7a, 0x42, 0xf8, 0x10, 0x03, 0x69, 0xba, 0x6d, 0x65, 0xc4, 0xd9, 0xc4, 0xac, 0xff, 0x9b, 0x03, - 0xb4, 0xd5, 0xc3, 0xdd, 0x7a, 0x7d, 0x8d, 0x1c, 0x1d, 0x71, 0x72, 0xbe, 0x03, 0xe3, 0x6c, 0x8d, - 0xc8, 0x42, 0xe6, 0xe9, 0x42, 0x4e, 0x1f, 0x1f, 0x95, 0x81, 0x2f, 0x24, 0x59, 0xc4, 0x08, 0x00, - 0xdd, 0x80, 0xa1, 0x9d, 0x9d, 0x0d, 0x7a, 0x2c, 0x86, 0xaa, 0x17, 0x8f, 0x8f, 0xca, 0x43, 0x61, - 0xd8, 0xf9, 0xd5, 0x51, 0x79, 0x6c, 0xa5, 0xcf, 0x18, 0x95, 0x4d, 0xea, 0xd1, 0x0d, 0x18, 0x15, - 0xa2, 0xc5, 0x70, 0x74, 0x1e, 0xb9, 0xcc, 0x60, 0x8b, 0x3a, 0xf4, 0x6d, 0x6e, 0x68, 0x19, 0x31, - 0x19, 0x5a, 0xc6, 0xc8, 0xa1, 0x23, 0x1f, 0x1f, 0x6e, 0x5c, 0xb9, 0x03, 0x23, 0x6c, 0x7d, 0xce, - 0x53, 0x7e, 0x14, 0xb3, 0xae, 0x8c, 0x1f, 0x1f, 0x95, 0x47, 0xe8, 0x3a, 0xd9, 0x0c, 0xec, 0xf1, - 0xf0, 0x58, 0xae, 0x90, 0xb7, 0xc7, 0x08, 0x2e, 0x39, 0x01, 0xd6, 0xb7, 0x61, 0x42, 0x19, 0x3e, - 0x5a, 0x84, 0x61, 0xf2, 0x3f, 0xe5, 0x17, 0x93, 0xac, 0xb1, 0x16, 0x99, 0x16, 0x5a, 0x6a, 0xfd, - 0xd1, 0x14, 0x14, 0x08, 0xa6, 0xc6, 0x64, 0xb4, 0xa9, 0xca, 0x0d, 0x9a, 0xaa, 0x5b, 0x20, 0xdb, - 0xe6, 0xdc, 0x66, 0xf2, 0xf8, 0xa8, 0x3c, 0xd6, 0xe7, 0x65, 0x51, 0xcf, 0x50, 0x1d, 0x46, 0x57, - 0xbf, 0xea, 0xb9, 0x3e, 0x0e, 0xb8, 0x65, 0xaf, 0x74, 0x87, 0xd9, 0x76, 0xef, 0x08, 0xdb, 0xee, - 0x9d, 0x1d, 0x61, 0xdb, 0xad, 0x5e, 0xe1, 0x5c, 0xf7, 0x02, 0x66, 0x28, 0xd1, 0x06, 0xf8, 0xf9, - 0x7f, 0x2f, 0xe7, 0x6c, 0x41, 0x09, 0x7d, 0x07, 0xce, 0x3f, 0xf4, 0xfc, 0x43, 0x27, 0xe4, 0x2b, - 0x40, 0xcd, 0x3e, 0xcf, 0x69, 0x89, 0xb2, 0x67, 0x38, 0x0c, 0x7a, 0x08, 0xd3, 0xb6, 0xd7, 0x0f, - 0xf1, 0x8e, 0x27, 0xd6, 0x6d, 0x84, 0x62, 0xd1, 0xef, 0xab, 0x4f, 0x6a, 0x9a, 0xa1, 0x97, 0x14, - 0xfa, 0xec, 0x18, 0x16, 0x5a, 0x85, 0x69, 0xcd, 0x4e, 0xc2, 0x56, 0x6b, 0x9c, 0xeb, 0x90, 0x9a, - 0x75, 0x45, 0x65, 0x49, 0x31, 0x24, 0xb4, 0x69, 0x12, 0x52, 0x47, 0x69, 0x8f, 0x06, 0x0a, 0xa2, - 0x26, 0x31, 0x14, 0xc3, 0x0c, 0xef, 0xa8, 0xd4, 0x4a, 0xc6, 0xb8, 0x75, 0x85, 0xd9, 0x77, 0x63, - 0xb5, 0xd5, 0xeb, 0x7c, 0x96, 0x17, 0xe4, 0xd8, 0x93, 0x7a, 0x8a, 0x1d, 0xa7, 0x49, 0x98, 0xb0, - 0xfc, 0xc0, 0x8c, 0xd3, 0xde, 0x32, 0x9b, 0x9d, 0xf8, 0xc0, 0xa8, 0xec, 0x49, 0x7e, 0x6a, 0x36, - 0x60, 0x64, 0x37, 0x70, 0xf6, 0x19, 0x73, 0x9a, 0x5e, 0xbe, 0xc6, 0x7b, 0x14, 0xdf, 0x7d, 0xd4, - 0xcc, 0x4b, 0x01, 0xe9, 0xb9, 0x9b, 0xa1, 0x36, 0x6c, 0xf5, 0xa3, 0x4b, 0xeb, 0xd0, 0xe7, 0x00, - 0xbc, 0x57, 0x44, 0xd1, 0x99, 0xe0, 0xd2, 0x98, 0x36, 0xc8, 0x4a, 0xaf, 0x57, 0x5d, 0xe2, 0xe3, - 0xbb, 0x24, 0xc7, 0xa7, 0xa9, 0x3e, 0xb6, 0x42, 0x04, 0x7d, 0x06, 0x93, 0x94, 0x77, 0x89, 0x15, - 0x9d, 0xa4, 0x2b, 0x4a, 0x2d, 0xc1, 0x94, 0x1d, 0x19, 0xd6, 0x53, 0x43, 0x40, 0x7f, 0x15, 0xe6, - 0x38, 0xb9, 0x98, 0xd6, 0x39, 0xc5, 0xb5, 0x6c, 0xad, 0x7b, 0x3a, 0x4c, 0xf5, 0x36, 0xef, 0xa9, - 0x25, 0x7b, 0x9a, 0xaa, 0x87, 0xda, 0xe6, 0x66, 0xd0, 0x3a, 0xcc, 0xec, 0x06, 0x58, 0x1b, 0xc3, - 0x34, 0xfd, 0x10, 0x50, 0x05, 0xaa, 0x1f, 0xe0, 0x66, 0xda, 0x38, 0xe2, 0x78, 0xc8, 0x06, 0xb4, - 0xe2, 0x7b, 0xbd, 0xd8, 0x1e, 0x9f, 0xa1, 0x33, 0x42, 0xed, 0x01, 0x6d, 0xdf, 0xeb, 0x35, 0xd3, - 0x37, 0xba, 0x01, 0x1b, 0xfd, 0x04, 0x2e, 0x45, 0x66, 0xcb, 0x15, 0xd7, 0xd9, 0xef, 0x7a, 0x41, - 0xe8, 0xb6, 0xd6, 0x57, 0xa8, 0x05, 0x90, 0xf3, 0xff, 0xc8, 0xec, 0xd9, 0x6c, 0x4b, 0x10, 0x9d, - 0xff, 0xa7, 0x50, 0x41, 0x3f, 0x82, 0x29, 0xde, 0x16, 0x37, 0x93, 0x5f, 0xc8, 0xde, 0x68, 0x12, - 0x98, 0x9b, 0xac, 0xc5, 0x4f, 0x26, 0x23, 0xe9, 0xb4, 0xd0, 0x97, 0x30, 0xf1, 0xf4, 0x61, 0xc5, - 0xc6, 0x41, 0xcf, 0xeb, 0x06, 0x98, 0x9b, 0xfd, 0x96, 0x38, 0xe9, 0xa7, 0x0f, 0x2b, 0x95, 0x7e, - 0x78, 0x80, 0xbb, 0xa1, 0xdb, 0x72, 0x42, 0x2c, 0xa0, 0x98, 0x84, 0x7a, 0xf8, 0xdc, 0x69, 0xfa, - 0xbc, 0x44, 0x19, 0x85, 0x4a, 0x0e, 0x95, 0x60, 0xac, 0x5e, 0x5f, 0xdb, 0xf0, 0xf6, 0x5d, 0x66, - 0x01, 0x1c, 0xb7, 0xe5, 0x6f, 0xb4, 0x07, 0x73, 0xca, 0x45, 0x16, 0x15, 0x75, 0x31, 0x95, 0xe7, - 0x99, 0x41, 0xef, 0xbb, 0xf2, 0x26, 0xee, 0x8e, 0x7a, 0xdf, 0xf5, 0xf2, 0xfe, 0x9d, 0x4a, 0xf4, - 0xb3, 0x2e, 0x90, 0xec, 0x59, 0xc7, 0x50, 0x6a, 0x7d, 0x01, 0xe3, 0xf2, 0xd8, 0xa1, 0x51, 0x18, - 0xaa, 0x74, 0x3a, 0x85, 0x73, 0xe4, 0x8f, 0x7a, 0x7d, 0xad, 0x90, 0x43, 0xd3, 0x00, 0x11, 0xaf, - 0x29, 0xe4, 0xd1, 0x64, 0x64, 0xf5, 0x28, 0x0c, 0x51, 0xf8, 0x5e, 0xaf, 0x30, 0x8c, 0x50, 0xdc, - 0xdc, 0x52, 0x18, 0xb1, 0x76, 0x61, 0x5c, 0x4e, 0x24, 0x9a, 0x81, 0x89, 0xdd, 0xcd, 0xfa, 0xf6, - 0x6a, 0x6d, 0xfd, 0xe1, 0xfa, 0xea, 0x4a, 0xe1, 0x1c, 0xba, 0x02, 0x97, 0x77, 0xea, 0x6b, 0xcd, - 0x95, 0x6a, 0x73, 0x63, 0xab, 0x56, 0xd9, 0x68, 0x6e, 0xdb, 0x5b, 0x5f, 0xfc, 0xa0, 0xb9, 0xb3, - 0xbb, 0xb9, 0xb9, 0xba, 0x51, 0xc8, 0xa1, 0x22, 0xcc, 0x92, 0xea, 0x27, 0xbb, 0xd5, 0x55, 0x15, - 0xa0, 0x90, 0xb7, 0xfe, 0x6b, 0x2e, 0xc1, 0xe9, 0xd0, 0x32, 0x4c, 0x70, 0xf5, 0x92, 0xae, 0x3e, - 0x13, 0x90, 0x0b, 0xc7, 0x47, 0xe5, 0x49, 0xa1, 0x9a, 0xd2, 0x85, 0x55, 0x81, 0xc8, 0xc7, 0x6b, - 0x9b, 0x2c, 0x61, 0xcb, 0xeb, 0xa8, 0x1f, 0xaf, 0x1e, 0x2f, 0xb3, 0x65, 0x2d, 0x5a, 0x56, 0x3e, - 0x73, 0x4c, 0x5a, 0xa6, 0x12, 0x99, 0xf8, 0xcc, 0xa9, 0x2c, 0x4f, 0x7e, 0xf0, 0x96, 0x15, 0xeb, - 0xd0, 0x70, 0x84, 0x63, 0x60, 0xb1, 0x12, 0xce, 0xea, 0xa7, 0x30, 0x11, 0xf4, 0x71, 0xc2, 0x98, - 0xc5, 0x46, 0x48, 0xb9, 0x64, 0x8c, 0x57, 0x24, 0xec, 0x54, 0x65, 0x18, 0x61, 0xbb, 0x8b, 0x0d, - 0x92, 0x4a, 0x11, 0x1d, 0x52, 0x60, 0xb3, 0x72, 0xeb, 0xef, 0x0e, 0xa9, 0x0c, 0x95, 0x48, 0x0d, - 0xca, 0x24, 0x52, 0xa9, 0x81, 0x4e, 0x1e, 0x2d, 0x25, 0x02, 0x02, 0xd7, 0xb0, 0xd7, 0x57, 0x38, - 0x45, 0x2a, 0x20, 0x08, 0x7b, 0xad, 0xdb, 0xb6, 0x23, 0x00, 0x22, 0x0d, 0x33, 0x69, 0x81, 0x4a, - 0xc3, 0x43, 0x91, 0x34, 0xcc, 0xe5, 0x09, 0x26, 0x0d, 0x47, 0x20, 0x64, 0x21, 0xd5, 0xdb, 0xae, - 0xe1, 0x68, 0x21, 0xd5, 0x7b, 0x2d, 0xfd, 0x2e, 0xeb, 0x23, 0x80, 0xca, 0xb3, 0x3a, 0x95, 0x05, - 0xed, 0x4d, 0xfe, 0x51, 0xa7, 0xc7, 0xcf, 0x79, 0x15, 0x70, 0x69, 0xd2, 0x57, 0xc5, 0x66, 0x05, - 0x1a, 0x55, 0x61, 0xaa, 0xf2, 0x1b, 0x7d, 0x1f, 0xaf, 0xb7, 0xc9, 0x09, 0x0e, 0x99, 0x7e, 0x30, - 0xce, 0x6f, 0x4a, 0x48, 0x45, 0xd3, 0xe5, 0x35, 0x0a, 0x01, 0x1d, 0x05, 0x6d, 0xc1, 0x85, 0x47, - 0x35, 0x61, 0xde, 0xa8, 0xb4, 0x5a, 0x5e, 0xbf, 0x1b, 0xf2, 0x2f, 0xf9, 0xb5, 0xe3, 0xa3, 0xf2, - 0x95, 0xfd, 0x56, 0x64, 0x21, 0x71, 0x58, 0xb5, 0xfa, 0x29, 0x4f, 0xe0, 0x5a, 0x1d, 0x98, 0x7e, - 0x84, 0x43, 0xb2, 0x95, 0x84, 0x58, 0x96, 0xbd, 0x26, 0x9f, 0xc0, 0xc4, 0x33, 0x37, 0x3c, 0xa8, - 0xe3, 0x96, 0x8f, 0x43, 0xa1, 0x7d, 0x32, 0x15, 0xd9, 0x0d, 0x0f, 0x9a, 0x01, 0x2b, 0x57, 0x19, - 0x90, 0x02, 0x6e, 0xad, 0xc2, 0x0c, 0x6f, 0x4d, 0x4a, 0x81, 0xcb, 0x3a, 0xc1, 0x1c, 0x25, 0x48, - 0x57, 0x41, 0x25, 0xa8, 0x93, 0xf9, 0xa3, 0x3c, 0xcc, 0xd5, 0x0e, 0x9c, 0xee, 0x3e, 0xde, 0x76, - 0x82, 0xe0, 0x95, 0xe7, 0xb7, 0x95, 0xce, 0x53, 0x11, 0x38, 0xd1, 0x79, 0x2a, 0xf3, 0x2e, 0xc3, - 0xc4, 0x56, 0xa7, 0x2d, 0x70, 0xb8, 0x78, 0x4e, 0xdb, 0xf2, 0x3a, 0xed, 0x66, 0x4f, 0xd0, 0x52, - 0x81, 0x08, 0xce, 0x26, 0x7e, 0x25, 0x71, 0x86, 0x22, 0x9c, 0x2e, 0x7e, 0xa5, 0xe0, 0x28, 0x40, - 0x68, 0x15, 0x2e, 0xd4, 0x71, 0xcb, 0xeb, 0xb6, 0x1f, 0x3a, 0xad, 0xd0, 0xf3, 0xd9, 0x95, 0xcb, - 0x70, 0x24, 0xc1, 0x04, 0xb4, 0xb2, 0xf9, 0x9c, 0xd6, 0xb2, 0x9b, 0x16, 0x3b, 0x89, 0x81, 0xb6, - 0xe8, 0x85, 0x0d, 0xbd, 0xb1, 0xe7, 0x32, 0xfd, 0x8d, 0x3b, 0xf2, 0x0a, 0xbf, 0xe6, 0x63, 0xba, - 0x29, 0x9c, 0x8e, 0xd4, 0x4a, 0xe4, 0x07, 0x81, 0x32, 0x17, 0x01, 0x69, 0x4b, 0x22, 0xd6, 0x2e, - 0x4c, 0x6d, 0x77, 0xfa, 0xfb, 0x6e, 0x97, 0xb0, 0x81, 0x3a, 0xfe, 0x19, 0x5a, 0x01, 0x88, 0x0a, - 0xb8, 0x65, 0x42, 0xd8, 0xc4, 0xa2, 0x8a, 0xc6, 0x03, 0x7e, 0x90, 0x68, 0x09, 0x15, 0xdd, 0x6c, - 0x05, 0xcf, 0xfa, 0x5b, 0x43, 0x80, 0xf8, 0x02, 0x50, 0x5e, 0x5f, 0xc7, 0x21, 0x61, 0xc3, 0x97, - 0x20, 0x2f, 0x0d, 0x08, 0xe7, 0x8f, 0x8f, 0xca, 0x79, 0xb7, 0x6d, 0xe7, 0xd7, 0x57, 0xd0, 0x3b, - 0x30, 0x42, 0xc1, 0xe8, 0xfc, 0x4f, 0xcb, 0xf6, 0x54, 0x0a, 0x8c, 0x73, 0xd0, 0x6f, 0x90, 0xcd, - 0x80, 0xd1, 0xbb, 0x30, 0xbe, 0x82, 0x3b, 0x78, 0xdf, 0x09, 0x3d, 0x71, 0xba, 0x99, 0x4a, 0x2e, - 0x0a, 0x95, 0x3d, 0x17, 0x41, 0x12, 0xb9, 0xdd, 0xc6, 0x4e, 0xe0, 0x75, 0x55, 0xb9, 0xdd, 0xa7, - 0x25, 0xaa, 0xdc, 0xce, 0x60, 0xd0, 0xef, 0xe5, 0x60, 0xa2, 0xd2, 0xed, 0x72, 0x55, 0x37, 0xe0, - 0xb3, 0x3e, 0x77, 0x47, 0x7a, 0x42, 0x6c, 0x38, 0x7b, 0xb8, 0xd3, 0x70, 0x3a, 0x7d, 0x1c, 0x54, - 0xbf, 0x24, 0xa2, 0xd4, 0x7f, 0x3b, 0x2a, 0x7f, 0x7c, 0x0a, 0xe5, 0x35, 0xf2, 0xa9, 0xd8, 0xf1, - 0x1d, 0x37, 0x0c, 0xe8, 0x6d, 0x66, 0xd4, 0xa0, 0x7a, 0x6e, 0x94, 0x7e, 0xa0, 0xb7, 0x55, 0x65, - 0x8d, 0xf3, 0xe2, 0x98, 0x16, 0xcd, 0xf5, 0x34, 0xeb, 0xba, 0xfc, 0x12, 0xae, 0xaf, 0xa4, 0x2d, - 0x81, 0x55, 0x83, 0xc5, 0x47, 0x38, 0xb4, 0x71, 0x80, 0x43, 0xb1, 0x69, 0xe9, 0x96, 0x8b, 0xec, - 0x3f, 0xa3, 0xf4, 0xb7, 0x44, 0xa6, 0xeb, 0xc1, 0x36, 0xaa, 0xa8, 0xb1, 0xfe, 0x66, 0x0e, 0xca, - 0x35, 0x1f, 0x33, 0x49, 0x24, 0x85, 0x50, 0x36, 0x33, 0x59, 0xe4, 0xce, 0x21, 0xf9, 0xa8, 0x96, - 0xcc, 0x12, 0x77, 0x00, 0x39, 0x99, 0x72, 0x6c, 0x3d, 0x87, 0x39, 0x1b, 0x77, 0xf1, 0x2b, 0xa2, - 0xaa, 0x6b, 0xfa, 0x65, 0x19, 0x46, 0xd8, 0xc9, 0x4b, 0x0c, 0x81, 0x95, 0x9f, 0x4e, 0x57, 0xb7, - 0xfe, 0x79, 0x1e, 0x0a, 0x6c, 0xb8, 0x55, 0x2f, 0x3c, 0xd9, 0xf8, 0xf8, 0x08, 0xf2, 0x03, 0xd4, - 0xfb, 0x9b, 0xd1, 0x6c, 0x0f, 0x45, 0xc2, 0x01, 0xed, 0x2a, 0xf9, 0xc6, 0x89, 0x4a, 0x32, 0x20, - 0xb6, 0x0b, 0x98, 0x79, 0x2b, 0xa1, 0xa3, 0xa3, 0xdf, 0xc9, 0xc1, 0x79, 0xb6, 0xaf, 0xb2, 0x77, - 0xee, 0xb3, 0xb3, 0xd9, 0xb9, 0x85, 0x90, 0xfe, 0xa5, 0x9e, 0x23, 0x56, 0x67, 0xfd, 0xcb, 0x3c, - 0x5c, 0x50, 0xe6, 0x8a, 0x8b, 0x9f, 0x6f, 0x33, 0xd9, 0x46, 0x99, 0x30, 0x6a, 0x30, 0xa4, 0x16, - 0xf1, 0x48, 0x87, 0xa7, 0x33, 0xf7, 0x36, 0x8c, 0x91, 0x21, 0xc5, 0x6d, 0x8b, 0xf4, 0x0b, 0xcb, - 0x40, 0x45, 0xf5, 0x89, 0x67, 0xef, 0x2e, 0x8c, 0xd1, 0x3f, 0xc9, 0x8a, 0x0c, 0xa7, 0xaf, 0x88, - 0x04, 0x42, 0x2e, 0xc0, 0x63, 0xcf, 0xed, 0x3e, 0xc5, 0xe1, 0x81, 0xd7, 0xe6, 0xdf, 0xfa, 0x75, - 0xc2, 0x07, 0xff, 0x92, 0xe7, 0x76, 0x9b, 0x87, 0xb4, 0xf8, 0xb4, 0xb6, 0xab, 0x88, 0xa0, 0xad, - 0x10, 0xb7, 0xee, 0x41, 0x81, 0xb0, 0xac, 0x93, 0x6f, 0x2d, 0x6b, 0x16, 0xd0, 0x23, 0x1c, 0x56, - 0x3d, 0xed, 0x63, 0x6a, 0x4d, 0xc1, 0xc4, 0xb6, 0xdb, 0xdd, 0x17, 0x3f, 0xff, 0xd5, 0x10, 0x4c, - 0xb2, 0xdf, 0x7c, 0x05, 0x62, 0x22, 0x4f, 0xee, 0x24, 0x22, 0xcf, 0x07, 0x30, 0xc5, 0xaf, 0xc8, - 0xb0, 0x4f, 0xaf, 0x4e, 0xd8, 0x7a, 0x50, 0x65, 0x86, 0x5d, 0x91, 0x35, 0x5f, 0xb2, 0x1a, 0x5b, - 0x07, 0x44, 0x1b, 0x30, 0xcd, 0x0a, 0x1e, 0x62, 0x27, 0xec, 0x47, 0xf6, 0x98, 0x19, 0xae, 0xcf, - 0x88, 0x62, 0xc6, 0xcf, 0x38, 0xad, 0xe7, 0xbc, 0xd0, 0x8e, 0xe1, 0xa2, 0xcf, 0x60, 0x66, 0xdb, - 0xf7, 0xbe, 0x7a, 0xad, 0x08, 0x79, 0x8c, 0xa5, 0xcf, 0x1d, 0x1f, 0x95, 0x2f, 0xf4, 0x48, 0x55, - 0x53, 0x15, 0xf5, 0xe2, 0xd0, 0x64, 0x4f, 0xad, 0x07, 0x55, 0xcf, 0x77, 0xbb, 0xfb, 0x74, 0x35, - 0xc7, 0xd8, 0x9e, 0x72, 0x83, 0xe6, 0x1e, 0x2d, 0xb4, 0x65, 0x75, 0xcc, 0xb2, 0x3a, 0x3a, 0xd8, - 0xb2, 0x7a, 0x0f, 0x60, 0xc3, 0x73, 0xda, 0x95, 0x4e, 0xa7, 0x56, 0x09, 0xa8, 0x31, 0x84, 0x0b, - 0x31, 0x1d, 0xcf, 0x69, 0x37, 0x9d, 0x4e, 0xa7, 0xd9, 0x72, 0x02, 0x5b, 0x81, 0x79, 0x3c, 0x3c, - 0x76, 0xbe, 0x30, 0x6a, 0xcf, 0x6c, 0xb8, 0x2d, 0xdc, 0x0d, 0xf0, 0x33, 0xc7, 0xef, 0xba, 0xdd, - 0xfd, 0xc0, 0xfa, 0x07, 0x23, 0x30, 0x26, 0x87, 0x7c, 0x47, 0x55, 0x88, 0xb8, 0x68, 0x44, 0x39, - 0x54, 0x64, 0xb0, 0xb1, 0x15, 0x08, 0x74, 0x99, 0xdd, 0xc7, 0x32, 0xa1, 0x6c, 0x94, 0xec, 0x6e, - 0xa7, 0xd7, 0x63, 0xb7, 0xae, 0x97, 0x20, 0xbf, 0x52, 0xa5, 0xf3, 0x3f, 0xc6, 0xbe, 0x04, 0xed, - 0x3d, 0x3b, 0xbf, 0x52, 0x25, 0xbb, 0x6c, 0x6b, 0x7d, 0xa5, 0x46, 0xa7, 0x72, 0x8c, 0xed, 0x32, - 0xcf, 0x6d, 0xb7, 0x6c, 0x5a, 0x4a, 0x6a, 0xeb, 0x95, 0xa7, 0x1b, 0x7c, 0xba, 0x68, 0x6d, 0xe0, - 0x1c, 0x76, 0x6c, 0x5a, 0x4a, 0x54, 0x05, 0xa6, 0x7b, 0xd7, 0xbc, 0x6e, 0xe8, 0x7b, 0x9d, 0x80, - 0x4a, 0xb4, 0x63, 0x6c, 0x39, 0xb9, 0xd2, 0xde, 0xe2, 0x55, 0x76, 0x0c, 0x14, 0x3d, 0x83, 0xf9, - 0x4a, 0xfb, 0xa5, 0xd3, 0x6d, 0xe1, 0x36, 0xab, 0x79, 0xe6, 0xf9, 0x2f, 0x9e, 0x77, 0xbc, 0x57, - 0x01, 0x9d, 0xef, 0x31, 0x6e, 0xe3, 0xe2, 0x20, 0xc2, 0x06, 0xf0, 0x4a, 0x00, 0xd9, 0x69, 0xd8, - 0x84, 0x4b, 0xd6, 0x3a, 0x5e, 0xbf, 0xcd, 0x57, 0x81, 0x72, 0xc9, 0x16, 0x29, 0xb0, 0x59, 0x39, - 0x99, 0xa5, 0xb5, 0xfa, 0x53, 0x6a, 0x51, 0xe2, 0xb3, 0x74, 0x10, 0x1c, 0xda, 0xa4, 0x0c, 0xdd, - 0x80, 0x51, 0xa1, 0xf5, 0x30, 0xdb, 0x36, 0x35, 0xb4, 0x0a, 0x6d, 0x47, 0xd4, 0x91, 0x23, 0x61, - 0xe3, 0x96, 0xf7, 0x12, 0xfb, 0xaf, 0x6b, 0x5e, 0x1b, 0x0b, 0xfb, 0x07, 0xd7, 0xef, 0x59, 0x45, - 0xb3, 0x45, 0x6a, 0x6c, 0x1d, 0x90, 0x34, 0xc0, 0x04, 0xa7, 0x80, 0x3a, 0x39, 0xf1, 0x06, 0x98, - 0x60, 0x15, 0xd8, 0xa2, 0x0e, 0xad, 0xc0, 0x85, 0x4a, 0x3f, 0xf4, 0x0e, 0x9d, 0xd0, 0x6d, 0xed, - 0xf6, 0xf6, 0x7d, 0x87, 0x34, 0x52, 0xa0, 0x08, 0x54, 0xb5, 0x73, 0x44, 0x65, 0xb3, 0xcf, 0x6b, - 0xed, 0x24, 0x02, 0x7a, 0x0f, 0x26, 0xd7, 0x03, 0x66, 0xe3, 0x72, 0x02, 0xdc, 0xa6, 0x86, 0x0a, - 0xde, 0x4b, 0x37, 0x68, 0x52, 0x8b, 0x57, 0x93, 0x28, 0x83, 0x6d, 0x5b, 0x83, 0x7b, 0x3c, 0x3c, - 0x36, 0x51, 0x98, 0x7c, 0x3c, 0x3c, 0x36, 0x59, 0x98, 0x7a, 0x3c, 0x3c, 0x36, 0x55, 0x98, 0xb6, - 0xee, 0xc3, 0x05, 0xc6, 0x9f, 0x4e, 0xac, 0x28, 0x58, 0xdb, 0x00, 0x75, 0x7c, 0xe8, 0xf4, 0x0e, - 0x3c, 0xb2, 0x93, 0xab, 0xea, 0x2f, 0x2e, 0x68, 0x22, 0xe9, 0x9c, 0xc3, 0x2b, 0x1a, 0x0f, 0x84, - 0x7e, 0x27, 0x20, 0x6d, 0x05, 0xcb, 0xfa, 0xd3, 0x3c, 0x20, 0xea, 0xa4, 0x52, 0x0f, 0x7d, 0xec, - 0x1c, 0x8a, 0x6e, 0x7c, 0x08, 0x93, 0xec, 0x53, 0xc3, 0x8a, 0x69, 0x77, 0x88, 0x14, 0xcb, 0x78, - 0x8c, 0x5a, 0xb5, 0x76, 0xce, 0xd6, 0x40, 0x09, 0xaa, 0x8d, 0x83, 0xfe, 0xa1, 0x40, 0xcd, 0x6b, - 0xa8, 0x6a, 0x15, 0x41, 0x55, 0x7f, 0xa3, 0xcf, 0x60, 0xba, 0xe6, 0x1d, 0xf6, 0xc8, 0x9c, 0x70, - 0xe4, 0x21, 0xfe, 0xc5, 0xe5, 0xed, 0x6a, 0x95, 0x6b, 0xe7, 0xec, 0x18, 0x38, 0xda, 0x84, 0x8b, - 0x0f, 0x3b, 0xfd, 0xe0, 0xa0, 0xd2, 0x6d, 0xd7, 0x3a, 0x5e, 0x20, 0xa8, 0x0c, 0x73, 0x8b, 0x35, - 0xe7, 0x90, 0x49, 0x88, 0xb5, 0x73, 0xb6, 0x09, 0x11, 0xdd, 0xe0, 0x1e, 0xb7, 0xd2, 0xfa, 0xcf, - 0x1d, 0x72, 0xb7, 0xba, 0x78, 0xeb, 0xf9, 0xda, 0x39, 0x9b, 0xd5, 0x56, 0xc7, 0x61, 0x54, 0x7c, - 0x1d, 0xee, 0x92, 0x4d, 0x26, 0xa7, 0x93, 0x5d, 0x61, 0xa2, 0x12, 0x8c, 0xed, 0xf6, 0x08, 0xd3, - 0x12, 0xa2, 0x9f, 0x2d, 0x7f, 0x5b, 0xdf, 0xd1, 0x67, 0x1a, 0x2d, 0xaa, 0xfa, 0x39, 0x03, 0x8e, - 0x0a, 0xac, 0x35, 0x7d, 0x72, 0xb3, 0xa1, 0xb5, 0x76, 0xf3, 0xb1, 0x76, 0x0b, 0xf1, 0xb9, 0xb6, - 0xe6, 0x8c, 0x93, 0x67, 0x7d, 0x01, 0x4b, 0xbb, 0x3d, 0xa2, 0x0c, 0x55, 0x7a, 0xbd, 0x8e, 0xdb, - 0x62, 0xd6, 0x27, 0xfa, 0x15, 0x11, 0x9b, 0xe5, 0x3d, 0xe9, 0xce, 0x99, 0x4b, 0x75, 0x7e, 0x81, - 0xe3, 0xa3, 0xf2, 0x79, 0xf6, 0x35, 0x12, 0x5e, 0x9c, 0xd6, 0xcf, 0x73, 0xb0, 0xc4, 0x4e, 0x40, - 0x2a, 0xe9, 0x6f, 0xab, 0x4e, 0xa7, 0x8a, 0x78, 0x23, 0x5d, 0x4c, 0x55, 0xb7, 0xd2, 0xe8, 0x82, - 0x35, 0x9f, 0x7e, 0xc1, 0x2a, 0x0e, 0xd8, 0x90, 0xf1, 0x80, 0x7d, 0x0e, 0x16, 0xef, 0x51, 0xa7, - 0x93, 0xe8, 0x54, 0xf0, 0x26, 0xbd, 0xb2, 0xfe, 0x67, 0x1e, 0xe6, 0x1f, 0xe1, 0x2e, 0xf6, 0x1d, - 0x3a, 0x4e, 0x4d, 0x92, 0x57, 0xef, 0x5f, 0x72, 0x99, 0xf7, 0x2f, 0x52, 0x4c, 0xcd, 0xa7, 0x88, - 0xa9, 0x97, 0x61, 0x68, 0xd7, 0x5e, 0xe7, 0xc3, 0xa2, 0x0c, 0xb8, 0xef, 0xbb, 0x36, 0x29, 0x43, - 0xeb, 0xd1, 0xdd, 0xcd, 0xf0, 0xc0, 0xbb, 0x9b, 0x8b, 0xdc, 0x96, 0x3d, 0xca, 0xef, 0x6e, 0xf4, - 0x1b, 0x9b, 0x4d, 0x45, 0x16, 0x26, 0xec, 0xe6, 0x36, 0x3f, 0x53, 0x29, 0x03, 0xe4, 0x62, 0xed, - 0x6a, 0x37, 0xf4, 0x5f, 0xb3, 0x2d, 0xc0, 0xa4, 0x5b, 0x21, 0xd3, 0x96, 0x3e, 0x87, 0x09, 0x05, - 0x04, 0x15, 0x60, 0xe8, 0x05, 0xbf, 0xb7, 0x1a, 0xb7, 0xc9, 0x9f, 0xe8, 0x3b, 0x30, 0xf2, 0x92, - 0xc8, 0xd7, 0x9c, 0x8d, 0x5c, 0x8a, 0x64, 0xef, 0x7a, 0x48, 0xa4, 0x0a, 0x26, 0x7c, 0xdb, 0x0c, - 0xe8, 0xa3, 0xfc, 0x07, 0x39, 0xeb, 0x63, 0x28, 0x26, 0x7b, 0xc3, 0x45, 0xb5, 0x41, 0xda, 0x8b, - 0xb5, 0x02, 0xb3, 0x8f, 0x70, 0x18, 0x79, 0xbc, 0x2a, 0xd7, 0x6a, 0xb1, 0x73, 0x96, 0x61, 0x35, - 0xb3, 0xea, 0x30, 0x17, 0xa3, 0xc2, 0xdb, 0xff, 0x08, 0x46, 0x85, 0xaf, 0x4c, 0x2e, 0xdd, 0x57, - 0x86, 0xee, 0x5b, 0x4e, 0xd9, 0x16, 0x08, 0xd6, 0x33, 0xb8, 0xa4, 0x11, 0x0d, 0x24, 0xd5, 0xef, - 0xc1, 0x98, 0x28, 0x8b, 0x99, 0x1b, 0x34, 0xb2, 0x74, 0x6b, 0x05, 0x02, 0x59, 0xa2, 0x58, 0x07, - 0x70, 0x69, 0xc3, 0x0d, 0x74, 0xca, 0x6c, 0xd4, 0x0b, 0x30, 0xde, 0x23, 0xdf, 0xb3, 0xc0, 0xfd, - 0x0d, 0xb6, 0x3f, 0x47, 0xec, 0x31, 0x52, 0x50, 0x77, 0x7f, 0x03, 0xa3, 0x2b, 0x00, 0xb4, 0x92, - 0xce, 0x1f, 0x67, 0x2f, 0x14, 0x9c, 0xe9, 0x81, 0x08, 0xe8, 0xc5, 0x28, 0xdb, 0x90, 0x36, 0xfd, - 0xdb, 0xf2, 0x61, 0x3e, 0xd1, 0x12, 0x1f, 0xc3, 0x5d, 0x90, 0x5d, 0xcb, 0x18, 0x83, 0x2d, 0x81, - 0xd0, 0x4d, 0x98, 0xe9, 0xe2, 0xaf, 0xc2, 0x66, 0xa2, 0x0f, 0x53, 0xa4, 0x78, 0x5b, 0xf4, 0xc3, - 0xfa, 0x31, 0xd5, 0xca, 0xe3, 0xce, 0x6c, 0x67, 0x36, 0x79, 0x1d, 0x28, 0x91, 0x21, 0xe9, 0xbe, - 0x4b, 0xbf, 0xb6, 0x09, 0x7c, 0x09, 0x0b, 0xc6, 0xd6, 0x7e, 0xdd, 0x93, 0xf8, 0xe7, 0x79, 0x98, - 0x67, 0x5f, 0xa9, 0xe4, 0xd1, 0x38, 0x39, 0x0f, 0xfb, 0x46, 0x8c, 0xc9, 0xf7, 0x0c, 0xc6, 0x64, - 0x8a, 0xa2, 0x1a, 0x93, 0x35, 0x13, 0xf2, 0x07, 0x66, 0x13, 0x32, 0x15, 0xe9, 0x74, 0x13, 0x72, - 0xdc, 0x70, 0xbc, 0x9a, 0x6e, 0x38, 0xa6, 0x66, 0x34, 0x83, 0xe1, 0xd8, 0x60, 0x2e, 0x7e, 0x3c, - 0x3c, 0x96, 0x2f, 0x0c, 0x59, 0x0d, 0x28, 0x26, 0xa7, 0xf8, 0x0c, 0xf8, 0xc6, 0x1f, 0xe7, 0xe0, - 0x0a, 0x97, 0x30, 0x62, 0x87, 0xe0, 0xf4, 0x2b, 0xf8, 0x2e, 0x4c, 0x72, 0xdc, 0x9d, 0x68, 0xb3, - 0x30, 0xb7, 0x54, 0xc1, 0x09, 0x19, 0x3b, 0xd5, 0xc0, 0xd0, 0xbb, 0x8a, 0x95, 0x80, 0x59, 0x9e, - 0x2e, 0x93, 0xcf, 0x25, 0x33, 0x27, 0xa4, 0xda, 0x0a, 0xac, 0x2f, 0x61, 0x29, 0xad, 0xe3, 0x67, - 0x30, 0x2f, 0x7f, 0x92, 0x83, 0x05, 0x4e, 0x5e, 0x3b, 0x4e, 0x6f, 0xc4, 0xf2, 0x4f, 0xe1, 0x49, - 0xf1, 0x18, 0x26, 0x48, 0x83, 0xa2, 0xdf, 0xfa, 0x3b, 0x29, 0xa5, 0x66, 0xc5, 0x09, 0x1d, 0x7e, - 0x05, 0xe6, 0x1c, 0x76, 0x84, 0xcb, 0xa4, 0xad, 0x22, 0x5b, 0x3f, 0x84, 0x45, 0xf3, 0x10, 0xce, - 0x60, 0x7e, 0x1e, 0x43, 0xc9, 0xc0, 0x38, 0xdf, 0xec, 0x83, 0xf8, 0x03, 0x58, 0x30, 0xd2, 0x3a, - 0x83, 0x6e, 0xae, 0x91, 0xcf, 0x7d, 0x78, 0x06, 0x4b, 0x68, 0x3d, 0x83, 0xcb, 0x06, 0x4a, 0x67, - 0xd0, 0xc5, 0x47, 0x30, 0x2f, 0xc5, 0xdc, 0xaf, 0xd5, 0xc3, 0xa7, 0x70, 0x85, 0x11, 0x3a, 0x9b, - 0x55, 0x79, 0x02, 0x0b, 0x9c, 0xdc, 0x19, 0xcc, 0xde, 0x1a, 0x2c, 0x46, 0xda, 0xac, 0x41, 0x96, - 0x38, 0x31, 0x93, 0xb1, 0x36, 0xe0, 0x6a, 0x44, 0x29, 0xe5, 0xc3, 0x7a, 0x72, 0x6a, 0x4c, 0x16, - 0x8b, 0x56, 0xe9, 0x0c, 0x65, 0xb1, 0x08, 0xf0, 0xcc, 0xc4, 0x89, 0x75, 0xb8, 0xc8, 0x08, 0xeb, - 0x72, 0xeb, 0xb2, 0x2a, 0xb7, 0x1a, 0x9f, 0x18, 0x25, 0x45, 0xd9, 0xa7, 0x54, 0x94, 0x15, 0x20, - 0x51, 0x0f, 0xdf, 0x85, 0xf3, 0xfc, 0x15, 0x25, 0xeb, 0x9f, 0x81, 0x18, 0x93, 0xd4, 0x19, 0x1a, - 0x07, 0xb6, 0x7e, 0x02, 0x57, 0x98, 0x1a, 0x18, 0xf7, 0xd6, 0x17, 0x4b, 0xf2, 0xbd, 0x98, 0x16, - 0x98, 0xf1, 0x28, 0xc0, 0xa4, 0x0c, 0xee, 0x89, 0xbd, 0x9d, 0x46, 0xff, 0x44, 0xee, 0xb3, 0x42, - 0xbb, 0xcb, 0x1b, 0xb5, 0xbb, 0xeb, 0x70, 0x4d, 0x6a, 0x77, 0xf1, 0x66, 0xa4, 0xb9, 0xf7, 0x87, - 0xb0, 0xc0, 0x06, 0xaa, 0xbf, 0x1d, 0x13, 0xdd, 0xf8, 0x38, 0x36, 0xcc, 0xd4, 0xc7, 0x69, 0xa6, - 0x41, 0xfe, 0x9d, 0x9c, 0x38, 0x72, 0x66, 0xe2, 0xdf, 0xb4, 0xba, 0xbb, 0x09, 0x65, 0x39, 0x21, - 0x7a, 0x8f, 0xde, 0x4c, 0xd7, 0x7d, 0x0a, 0x73, 0x89, 0xf7, 0x0d, 0x44, 0x60, 0x45, 0xef, 0x90, - 0x63, 0x41, 0x0b, 0xc4, 0xb6, 0x4b, 0x7d, 0x0f, 0x61, 0x4b, 0x48, 0xab, 0x09, 0x8b, 0xc9, 0xa5, - 0x70, 0x5b, 0xc2, 0xd5, 0x09, 0x7d, 0x46, 0x8e, 0x30, 0x7b, 0x64, 0x91, 0x1b, 0xf0, 0xc8, 0x82, - 0x9f, 0x63, 0x86, 0x2e, 0xb0, 0x2c, 0x4b, 0xb0, 0x9a, 0xd8, 0xf8, 0x49, 0xeb, 0x62, 0x3f, 0xb8, - 0x80, 0x44, 0x55, 0xad, 0x6e, 0x8b, 0xa6, 0x2f, 0xc3, 0x50, 0xad, 0x6e, 0x73, 0x0f, 0x4b, 0xaa, - 0x6e, 0xb7, 0x02, 0xdf, 0x26, 0x65, 0x71, 0xa9, 0x35, 0x7f, 0x02, 0xa9, 0xf5, 0xf1, 0xf0, 0xd8, - 0x50, 0x61, 0xd8, 0xfa, 0x11, 0x5c, 0xd4, 0x9a, 0xe2, 0x27, 0x36, 0xd3, 0x0d, 0x14, 0xdd, 0x84, - 0xd1, 0x5a, 0x85, 0xde, 0xd1, 0x51, 0xdb, 0xc0, 0x24, 0xe3, 0x2d, 0x2d, 0xa7, 0x49, 0x9f, 0xc4, - 0xdb, 0xa2, 0xd2, 0xfa, 0x67, 0xc3, 0x0a, 0x75, 0xc5, 0xb9, 0x36, 0x63, 0x24, 0xf7, 0x01, 0xd8, - 0x6e, 0x50, 0x06, 0x42, 0x84, 0xbd, 0x09, 0x7e, 0xad, 0xc0, 0xd8, 0xaf, 0xad, 0x00, 0x9d, 0xd4, - 0xf9, 0x96, 0xfb, 0xfb, 0x30, 0x24, 0x71, 0xf7, 0x26, 0xfd, 0x7d, 0x38, 0xe9, 0xc0, 0x56, 0x81, - 0xd0, 0x4f, 0xe2, 0x3e, 0x62, 0x23, 0xf4, 0xaa, 0xfb, 0x5b, 0xdc, 0x04, 0x61, 0x18, 0xdb, 0xe9, - 0xdc, 0xc4, 0x5e, 0xc1, 0x1c, 0xc1, 0x75, 0x9f, 0x53, 0x47, 0xb0, 0xd5, 0xaf, 0x42, 0xdc, 0x65, - 0x7c, 0xfc, 0x3c, 0x6d, 0xe7, 0x46, 0x46, 0x3b, 0x11, 0x30, 0x7f, 0xc3, 0x1d, 0xd1, 0x69, 0x62, - 0x59, 0x67, 0x9b, 0xe9, 0xd3, 0x0d, 0x63, 0x6f, 0xac, 0x76, 0xdb, 0x3d, 0xcf, 0x95, 0x0a, 0x04, - 0xdb, 0x30, 0x7e, 0xa7, 0x89, 0x79, 0xb9, 0xad, 0x02, 0x59, 0x37, 0x33, 0x7d, 0xb3, 0xc6, 0x60, - 0x78, 0xa7, 0xb6, 0xb3, 0x51, 0xc8, 0x59, 0x77, 0x01, 0x94, 0x96, 0x00, 0xce, 0x6f, 0x6e, 0xd9, - 0x4f, 0x2b, 0x1b, 0x85, 0x73, 0x68, 0x0e, 0x2e, 0x3c, 0x5b, 0xdf, 0x5c, 0xd9, 0x7a, 0x56, 0x6f, - 0xd6, 0x9f, 0x56, 0xec, 0x9d, 0x5a, 0xc5, 0x5e, 0x29, 0xe4, 0xac, 0x2f, 0x61, 0x56, 0x1f, 0xe1, - 0x99, 0x6e, 0xc2, 0x10, 0x2e, 0x4a, 0xd9, 0xe5, 0xf1, 0xb3, 0x1d, 0xc5, 0x5f, 0x85, 0x2b, 0x43, - 0xf1, 0x2b, 0x34, 0xae, 0x36, 0xf1, 0x23, 0xa3, 0x00, 0x69, 0x17, 0x9f, 0xf9, 0xcc, 0x8b, 0x4f, - 0xeb, 0x7d, 0x98, 0xd5, 0x5b, 0x3d, 0xa9, 0x39, 0xe8, 0x5b, 0xd4, 0x91, 0x47, 0xf1, 0xae, 0x24, - 0x5a, 0x79, 0xd4, 0x45, 0xce, 0x45, 0xdf, 0x87, 0x02, 0x87, 0x8a, 0xbe, 0xb2, 0xd7, 0x85, 0xbd, - 0x2e, 0x67, 0xf0, 0x04, 0x17, 0x6e, 0x05, 0x6f, 0x89, 0x1b, 0x80, 0x41, 0x2d, 0xfc, 0x69, 0x0e, - 0x8a, 0x31, 0x47, 0xc5, 0xda, 0x81, 0xd3, 0xe9, 0xe0, 0xee, 0x3e, 0x46, 0xb7, 0x60, 0x78, 0x67, - 0x6b, 0x67, 0x9b, 0x5b, 0xc8, 0x66, 0xf9, 0x36, 0x25, 0x45, 0x12, 0xc6, 0xa6, 0x10, 0xe8, 0x09, - 0x5c, 0x10, 0x6e, 0x2b, 0xb2, 0x8a, 0x2b, 0x20, 0x57, 0xb2, 0x9d, 0x60, 0x92, 0x78, 0xe8, 0x1d, - 0xee, 0x55, 0xf9, 0xb3, 0xbe, 0xeb, 0xe3, 0x36, 0x55, 0xce, 0xa7, 0x97, 0x51, 0xe4, 0x55, 0x29, - 0x6a, 0x6c, 0x15, 0x8c, 0x79, 0xbc, 0x5b, 0xbf, 0x97, 0x83, 0xf9, 0x14, 0xc7, 0x4b, 0xf4, 0xb6, - 0x36, 0x9c, 0x8b, 0xca, 0x70, 0x04, 0xc8, 0xda, 0x39, 0x3e, 0x9e, 0x9a, 0xe2, 0xcb, 0x33, 0x74, - 0x0a, 0x5f, 0x1e, 0xfe, 0xee, 0x9a, 0xc2, 0xf1, 0xf7, 0x45, 0xb4, 0xdc, 0x9a, 0x81, 0x29, 0x6d, - 0xde, 0x2c, 0x0b, 0x26, 0xd5, 0x96, 0xc9, 0xe2, 0xd4, 0xbc, 0xb6, 0x5c, 0x1c, 0xf2, 0xb7, 0xf5, - 0xf7, 0x73, 0x30, 0x4b, 0x87, 0xb8, 0xef, 0x92, 0xd3, 0x18, 0xcd, 0xd0, 0xb2, 0x36, 0x92, 0x45, - 0x6d, 0x24, 0x31, 0x58, 0x39, 0xa4, 0x8f, 0x12, 0x43, 0x5a, 0x34, 0x0d, 0x89, 0x6a, 0x7d, 0xae, - 0xd7, 0xd5, 0x46, 0xa2, 0x5c, 0x43, 0xfc, 0xa3, 0x1c, 0x5c, 0x54, 0xfa, 0x24, 0xfb, 0x7f, 0x5f, - 0xeb, 0xd2, 0x82, 0xa1, 0x4b, 0x89, 0x49, 0xae, 0x26, 0x7a, 0xf4, 0xad, 0xac, 0x1e, 0x0d, 0x9c, - 0xe3, 0x3f, 0xcb, 0xc1, 0x9c, 0x71, 0x0e, 0xd0, 0x25, 0x22, 0x5a, 0xb5, 0x7c, 0x1c, 0xf2, 0xe9, - 0xe5, 0xbf, 0x48, 0xf9, 0x7a, 0x10, 0xf4, 0x79, 0xb0, 0x92, 0x71, 0x9b, 0xff, 0x42, 0xdf, 0x82, - 0xa9, 0x6d, 0xec, 0xbb, 0x5e, 0x9b, 0x79, 0x79, 0xb1, 0x9b, 0xf0, 0x29, 0x5b, 0x2f, 0x44, 0x8b, - 0x30, 0x5e, 0xe9, 0xec, 0x7b, 0xbe, 0x1b, 0x1e, 0xb0, 0x9b, 0xa0, 0x71, 0x3b, 0x2a, 0x20, 0xb4, - 0x57, 0xdc, 0x7d, 0xe1, 0xdc, 0x31, 0x65, 0xf3, 0x5f, 0xa8, 0x08, 0xa3, 0xc2, 0xa0, 0x43, 0xcd, - 0x41, 0xb6, 0xf8, 0x49, 0x30, 0x3e, 0xb7, 0xe9, 0x26, 0xa0, 0x4f, 0x8a, 0x6c, 0xfe, 0xcb, 0xba, - 0x0d, 0xb3, 0xa6, 0x79, 0x34, 0x6e, 0x99, 0xbf, 0x9e, 0x87, 0x8b, 0x95, 0x76, 0xfb, 0xe9, 0xc3, - 0xca, 0x0a, 0x56, 0x05, 0x9a, 0x77, 0x60, 0x78, 0xbd, 0xeb, 0x86, 0x5c, 0x9a, 0x11, 0x2e, 0xca, - 0x06, 0x48, 0x02, 0x45, 0x56, 0x88, 0xfc, 0x8f, 0x6c, 0xb8, 0xb8, 0xfa, 0x95, 0x1b, 0x84, 0x6e, - 0x77, 0x5f, 0xf5, 0x73, 0xce, 0x9f, 0xc4, 0xcf, 0x79, 0xed, 0x9c, 0x6d, 0x42, 0x46, 0x3b, 0x70, - 0x69, 0x13, 0xbf, 0x32, 0x6c, 0x21, 0xf9, 0xfc, 0x43, 0x39, 0xe8, 0x89, 0x9d, 0x93, 0x82, 0xab, - 0xee, 0xd0, 0xdf, 0xc9, 0xd3, 0x67, 0x66, 0xca, 0xc0, 0x78, 0xcb, 0xbb, 0x30, 0xab, 0x74, 0x28, - 0xe2, 0x53, 0x39, 0xfe, 0xb0, 0xd5, 0x38, 0x1c, 0xf5, 0x20, 0x19, 0xd1, 0xd1, 0x33, 0x98, 0xd7, - 0x3b, 0x15, 0x51, 0xd6, 0x0f, 0x83, 0x09, 0x64, 0xed, 0x9c, 0x9d, 0x86, 0x8d, 0x96, 0x61, 0xa8, - 0xd2, 0x7a, 0xc1, 0xa7, 0xc5, 0xbc, 0x64, 0x6c, 0x64, 0x95, 0xd6, 0x0b, 0xfa, 0x5c, 0xbb, 0xf5, - 0x42, 0x3b, 0x0f, 0xff, 0x2e, 0x07, 0xf3, 0x29, 0x2b, 0x8c, 0x96, 0x00, 0x58, 0xa1, 0xf2, 0x45, - 0x50, 0x4a, 0x88, 0x80, 0xc6, 0x7e, 0x51, 0x8f, 0xaf, 0x21, 0xca, 0x82, 0xc5, 0x4b, 0x8a, 0xa8, - 0xc2, 0x56, 0x80, 0xd0, 0x36, 0x4c, 0xb0, 0x5f, 0xec, 0x41, 0x87, 0xce, 0xb6, 0x95, 0x1a, 0x26, - 0xc8, 0xb4, 0x69, 0x41, 0x33, 0xfe, 0x90, 0x43, 0x25, 0xc1, 0xcd, 0x97, 0xb5, 0xf8, 0x28, 0xe4, - 0xa0, 0xd1, 0x2d, 0x38, 0xcf, 0x0a, 0xf9, 0x1a, 0x8a, 0x67, 0x9a, 0x11, 0x30, 0xaf, 0xb7, 0xfe, - 0x49, 0x0e, 0x2e, 0xb1, 0x2f, 0x62, 0xe2, 0x68, 0xbc, 0xaf, 0x1d, 0x8d, 0x6b, 0xb2, 0xc3, 0x26, - 0x60, 0xed, 0x74, 0x54, 0x75, 0xef, 0xff, 0x93, 0x9e, 0x0a, 0x15, 0x49, 0xdd, 0xb7, 0xff, 0x34, - 0x27, 0xac, 0x39, 0xc9, 0xad, 0xbb, 0x0a, 0x93, 0x6f, 0xb6, 0x65, 0x35, 0x34, 0xf4, 0x2e, 0xdb, - 0x51, 0xf9, 0xec, 0x91, 0x66, 0x6e, 0xaa, 0x4f, 0xa0, 0x94, 0x3e, 0x35, 0x83, 0xb6, 0x95, 0xf5, - 0xd0, 0x80, 0xfd, 0x26, 0xcb, 0xd9, 0x4f, 0xd0, 0xa9, 0xbf, 0xee, 0xb6, 0xc4, 0x8a, 0xde, 0x8c, - 0xfb, 0x43, 0xa6, 0xfa, 0x98, 0xa9, 0xbd, 0xcd, 0x47, 0xd7, 0x06, 0x7c, 0x73, 0x52, 0x61, 0x4f, - 0xed, 0xfe, 0xbf, 0xce, 0xeb, 0x7b, 0xf1, 0x4d, 0x1a, 0xad, 0xc1, 0xd4, 0x26, 0x7e, 0x95, 0x68, - 0x97, 0xfa, 0xcf, 0x74, 0xf1, 0xab, 0xa6, 0xd2, 0xb6, 0xea, 0x58, 0xae, 0xe1, 0xa0, 0x3d, 0x98, - 0x16, 0x5c, 0xe3, 0xa4, 0xcc, 0x93, 0xbd, 0x66, 0x23, 0x2d, 0xa4, 0xbc, 0x3d, 0x89, 0x51, 0x3c, - 0xfb, 0xf3, 0x6c, 0x6d, 0x43, 0x31, 0x39, 0x7b, 0xbc, 0xb5, 0x77, 0x06, 0xad, 0x3d, 0x33, 0x7b, - 0xb4, 0xf5, 0x7d, 0xb0, 0x46, 0x4d, 0x51, 0x12, 0x46, 0xda, 0x16, 0xee, 0xc5, 0x17, 0x83, 0xfa, - 0xe1, 0x88, 0xc5, 0x50, 0xfa, 0x27, 0xdd, 0x63, 0x6b, 0xd4, 0x9a, 0xa7, 0x52, 0xe2, 0x1d, 0xbb, - 0x0d, 0xa3, 0xbc, 0x28, 0xf6, 0x16, 0x3c, 0xda, 0x95, 0x02, 0xc0, 0xfa, 0xfd, 0x1c, 0x5c, 0xa6, - 0xb6, 0x45, 0xb7, 0xbb, 0xdf, 0xc1, 0xbb, 0x81, 0xee, 0xe1, 0xfa, 0x5d, 0x8d, 0xd1, 0xcc, 0xa7, - 0xbc, 0x40, 0xfa, 0x75, 0xb1, 0x97, 0x3f, 0xc8, 0x41, 0xc9, 0xd4, 0xb7, 0xb3, 0xe5, 0x30, 0x77, - 0xb8, 0x32, 0x97, 0xe7, 0x56, 0x13, 0x86, 0x2e, 0xdb, 0x14, 0x83, 0x25, 0x83, 0x24, 0xff, 0x6b, - 0xac, 0xe5, 0x2f, 0x72, 0x30, 0xbb, 0x1e, 0xa8, 0x02, 0x3e, 0x9f, 0xb8, 0x3b, 0xa6, 0x07, 0x91, - 0x74, 0x5d, 0xcd, 0x71, 0x37, 0xde, 0x51, 0x5e, 0xd8, 0xe4, 0xb3, 0x5e, 0x3a, 0x6a, 0xc1, 0x56, - 0x6e, 0xc2, 0xf0, 0x26, 0x11, 0xa7, 0x86, 0xf8, 0xfe, 0x63, 0x18, 0xa4, 0x88, 0x3e, 0x86, 0x21, - 0x5d, 0x26, 0x3f, 0xd0, 0xc3, 0xc4, 0x93, 0x9b, 0xe1, 0xc1, 0x2f, 0xf9, 0x92, 0x51, 0x62, 0xaa, - 0x63, 0x70, 0x7e, 0xc7, 0xf1, 0xf7, 0x71, 0x68, 0xfd, 0x10, 0x4a, 0xdc, 0xab, 0x87, 0x59, 0x6b, - 0xa9, 0xef, 0x4f, 0x10, 0x39, 0x6e, 0x65, 0x79, 0xe2, 0x2c, 0x01, 0xd4, 0x43, 0xc7, 0x0f, 0xd7, - 0xbb, 0x6d, 0xfc, 0x15, 0x1d, 0xed, 0x88, 0xad, 0x94, 0x58, 0xef, 0xc2, 0xb8, 0x1c, 0x02, 0xd5, - 0x00, 0x15, 0x89, 0x91, 0x0e, 0x67, 0x56, 0x7b, 0x04, 0x24, 0x5e, 0xfe, 0x3c, 0x80, 0xb9, 0xd8, - 0x52, 0x44, 0x8f, 0xd2, 0xa4, 0x66, 0x46, 0x5d, 0x1c, 0x6d, 0xf9, 0xdb, 0xaa, 0xc1, 0x85, 0xc4, - 0x4a, 0x23, 0x44, 0xdf, 0x8b, 0x31, 0xed, 0x9e, 0x7c, 0x50, 0xea, 0xf5, 0x35, 0x52, 0xb6, 0xb3, - 0x51, 0x67, 0x4e, 0xdc, 0xa4, 0x6c, 0x67, 0xa3, 0x5e, 0x3d, 0xcf, 0x76, 0x8e, 0xf5, 0x2f, 0xf2, - 0x54, 0xe9, 0x4d, 0xcc, 0x41, 0xcc, 0x56, 0xa8, 0xda, 0x2b, 0xab, 0x30, 0x4e, 0x47, 0xbc, 0x22, - 0x9e, 0x29, 0x64, 0x3b, 0xa2, 0x8c, 0xfd, 0xe2, 0xa8, 0x7c, 0x8e, 0x7a, 0x9f, 0x44, 0x68, 0xe8, - 0x53, 0x18, 0x5d, 0xed, 0xb6, 0x29, 0x85, 0xa1, 0x53, 0x50, 0x10, 0x48, 0x64, 0x1d, 0x68, 0x97, - 0x89, 0x28, 0xc4, 0xcd, 0x4e, 0xb6, 0x52, 0x42, 0xa7, 0xd9, 0x3d, 0x74, 0x99, 0xc3, 0xd7, 0x88, - 0xcd, 0x7e, 0xd0, 0x27, 0x7e, 0xa4, 0x0b, 0x22, 0xfe, 0xc0, 0xb8, 0x2d, 0x7f, 0x23, 0x0b, 0x46, - 0xb6, 0xfc, 0x36, 0x7f, 0xfa, 0x3b, 0xbd, 0x3c, 0x29, 0x82, 0x31, 0x92, 0x32, 0x9b, 0x55, 0x59, - 0xff, 0x3b, 0x07, 0xf3, 0x8f, 0x70, 0x68, 0xdc, 0x37, 0xda, 0xac, 0xe4, 0xbe, 0xf6, 0xac, 0xe4, - 0xdf, 0x64, 0x56, 0xe4, 0xa8, 0x87, 0xd2, 0x46, 0x3d, 0x9c, 0x36, 0xea, 0x91, 0xf4, 0x51, 0x3f, - 0x82, 0xf3, 0x6c, 0xa8, 0xe8, 0x3a, 0x8c, 0xac, 0x87, 0xf8, 0x30, 0x32, 0x86, 0xa8, 0x6e, 0x74, - 0x36, 0xab, 0x23, 0x1a, 0xd7, 0x86, 0x13, 0x84, 0xe2, 0xd9, 0xc0, 0xb8, 0x2d, 0x7e, 0x5a, 0x3f, - 0xa5, 0x0f, 0x9c, 0x36, 0xbc, 0xd6, 0x0b, 0xc5, 0x2a, 0x3d, 0xca, 0x4e, 0x65, 0xfc, 0x16, 0x83, - 0x40, 0xb1, 0x1a, 0x5b, 0x40, 0xa0, 0xab, 0x30, 0xb1, 0xde, 0x7d, 0xe8, 0xf9, 0x2d, 0xbc, 0xd5, - 0xed, 0x30, 0xea, 0x63, 0xb6, 0x5a, 0xc4, 0x2d, 0x38, 0xbc, 0x85, 0xc8, 0x82, 0x43, 0x0b, 0x62, - 0x16, 0x1c, 0x16, 0xaf, 0xcb, 0x66, 0x75, 0xdc, 0x40, 0x44, 0xfe, 0xce, 0x32, 0xdf, 0x48, 0x3b, - 0xcf, 0x20, 0xc0, 0x3d, 0xb8, 0x6c, 0xe3, 0x5e, 0xc7, 0x21, 0x02, 0xd7, 0xa1, 0xc7, 0xe0, 0xe5, - 0x98, 0xaf, 0x1a, 0xfc, 0xcc, 0x75, 0xdf, 0x07, 0xd9, 0xe5, 0x7c, 0x46, 0x97, 0x0f, 0xe1, 0xda, - 0x23, 0x1c, 0x1a, 0x83, 0x6e, 0x45, 0x83, 0x5f, 0x83, 0xb1, 0x40, 0xb7, 0xd7, 0x0f, 0x8a, 0xf7, - 0xc5, 0x6f, 0xb4, 0x38, 0x1d, 0xf9, 0x97, 0xf5, 0x19, 0x94, 0xd3, 0x9a, 0x3b, 0x99, 0xcf, 0xab, - 0x0b, 0x57, 0xd3, 0x09, 0xc8, 0xcf, 0xa2, 0xb0, 0xed, 0x4b, 0xd5, 0x39, 0xbb, 0xb7, 0xfa, 0x75, - 0x00, 0xff, 0xc3, 0xaa, 0x0a, 0xef, 0xbf, 0xaf, 0xd1, 0xdd, 0x26, 0xbd, 0x36, 0xd7, 0x09, 0x44, - 0xf3, 0x5a, 0x81, 0x31, 0x51, 0xc6, 0xe7, 0x35, 0x35, 0x9e, 0x19, 0x9d, 0xd0, 0xb6, 0x20, 0x20, - 0xd1, 0xac, 0x9f, 0x8a, 0x2b, 0x24, 0x1d, 0xe3, 0x64, 0x8f, 0x67, 0x4e, 0x72, 0x67, 0x64, 0x79, - 0x70, 0x59, 0xa7, 0xad, 0x5e, 0x17, 0x14, 0x94, 0xeb, 0x02, 0x76, 0x4b, 0x70, 0x55, 0x37, 0x5f, - 0xe7, 0xf9, 0xbe, 0x8c, 0x8a, 0xd0, 0x92, 0x7a, 0x29, 0x30, 0x99, 0x7c, 0x6d, 0x74, 0x0f, 0x4a, - 0xa6, 0x06, 0x15, 0x03, 0x8a, 0xb4, 0x3c, 0xf3, 0xd8, 0x17, 0xbf, 0x99, 0x03, 0x4b, 0xf3, 0x84, - 0xd2, 0x42, 0x53, 0xc9, 0x23, 0xf3, 0xb6, 0x60, 0x6c, 0xd4, 0xf7, 0x8a, 0xf9, 0xd0, 0x77, 0x48, - 0x81, 0xfa, 0xc4, 0x8b, 0x71, 0xbb, 0x7b, 0x30, 0xba, 0x89, 0xbf, 0x8a, 0xd8, 0x0f, 0x93, 0x45, - 0xa9, 0x77, 0xd4, 0x0b, 0xac, 0x3e, 0x1e, 0x15, 0x60, 0x44, 0x10, 0xba, 0x9e, 0xd9, 0x07, 0xde, - 0xff, 0x3d, 0x28, 0xc4, 0xeb, 0xf8, 0xda, 0x0f, 0x8c, 0xd2, 0x45, 0x5f, 0x61, 0xc4, 0x83, 0x73, - 0x05, 0x76, 0x82, 0xde, 0xe9, 0x7b, 0x8f, 0x3e, 0x04, 0xd8, 0xf1, 0x42, 0xa7, 0x53, 0xa3, 0x36, - 0x2e, 0xca, 0xf8, 0x59, 0xa8, 0xa7, 0x90, 0x94, 0x36, 0xe3, 0xaf, 0x5c, 0x15, 0x60, 0xeb, 0xfb, - 0xf4, 0x44, 0x9a, 0x3b, 0x7d, 0xb2, 0x43, 0x52, 0x83, 0xeb, 0x31, 0xcf, 0x83, 0x37, 0x20, 0x12, - 0xc2, 0x1c, 0x99, 0x7e, 0x19, 0xe3, 0xeb, 0x9b, 0x59, 0xf5, 0xff, 0x98, 0x63, 0xee, 0x92, 0x6a, - 0xb3, 0x7c, 0xa1, 0x6b, 0x00, 0x51, 0x69, 0xcc, 0x1f, 0x5f, 0x0d, 0x59, 0x46, 0x95, 0xd7, 0x28, - 0x64, 0x59, 0x60, 0x2b, 0x68, 0xdf, 0xec, 0x4a, 0x3e, 0xa0, 0xee, 0x06, 0xb2, 0xf5, 0x93, 0xcd, - 0xfb, 0x7b, 0xc2, 0x46, 0x73, 0x4a, 0xbc, 0x03, 0x98, 0xd5, 0xa2, 0x3a, 0x47, 0x61, 0x6a, 0xa3, - 0x68, 0xd6, 0xe3, 0xd5, 0x4f, 0x7e, 0x75, 0x54, 0xfe, 0xe0, 0x34, 0xaf, 0xbf, 0x04, 0xcd, 0x1d, - 0xf9, 0xc8, 0xd1, 0x9a, 0x87, 0xa1, 0x9a, 0xbd, 0x41, 0x59, 0x95, 0xbd, 0x21, 0x59, 0x95, 0xbd, - 0x61, 0xfd, 0xaf, 0x3c, 0x94, 0xd9, 0x1b, 0x67, 0xea, 0xa5, 0x12, 0xe9, 0x4a, 0x8a, 0xdb, 0xcb, - 0x49, 0x2d, 0x04, 0xb1, 0x37, 0xcc, 0xf9, 0x93, 0xbc, 0x61, 0xfe, 0xcb, 0x6f, 0x6e, 0x55, 0x65, - 0x11, 0xfb, 0x22, 0xc3, 0x00, 0xab, 0x35, 0x59, 0x08, 0x52, 0x9a, 0x48, 0x9a, 0x34, 0x86, 0xdf, - 0xc0, 0xa4, 0x71, 0x0f, 0x46, 0xa9, 0xea, 0xb1, 0xbe, 0xcd, 0x7d, 0x2b, 0xe9, 0xf6, 0xa4, 0xe1, - 0x08, 0x9a, 0xae, 0x1a, 0xe7, 0x44, 0x80, 0x59, 0xff, 0x30, 0x0f, 0x57, 0xd3, 0xe7, 0x9c, 0xf7, - 0x6d, 0x45, 0x0b, 0xcc, 0x9b, 0xe1, 0x8f, 0x43, 0xcf, 0x8e, 0x12, 0x98, 0x37, 0x1e, 0x8c, 0x57, - 0xbc, 0x0c, 0x8a, 0xdd, 0x86, 0x69, 0x0f, 0x86, 0x44, 0x58, 0x73, 0x56, 0xa4, 0xc5, 0xe3, 0xe2, - 0x65, 0x68, 0x0f, 0xe6, 0xb7, 0x7d, 0xf7, 0xa5, 0x13, 0xe2, 0x27, 0xf8, 0xf5, 0xb6, 0xd7, 0x71, - 0x5b, 0xaf, 0x57, 0xbb, 0xce, 0x5e, 0x07, 0xb7, 0xf9, 0x73, 0xaf, 0x5b, 0xc7, 0x47, 0xe5, 0x6f, - 0xf5, 0x18, 0x08, 0x39, 0x98, 0xcd, 0x1e, 0x05, 0x6a, 0x62, 0x06, 0xa5, 0x10, 0x4d, 0x23, 0x64, - 0xfd, 0x87, 0x1c, 0x2c, 0x50, 0x81, 0x9a, 0xdf, 0x2c, 0x88, 0xc6, 0xdf, 0xc8, 0x2d, 0x53, 0x1d, - 0x20, 0xdf, 0x8b, 0xd4, 0x2d, 0x53, 0x7b, 0x39, 0x65, 0x6b, 0x60, 0x68, 0x1d, 0x26, 0xf8, 0x6f, - 0xc5, 0x7c, 0x3c, 0xa7, 0x30, 0x2c, 0xba, 0xd5, 0x99, 0xf5, 0x88, 0x6e, 0x6c, 0x4e, 0xac, 0x49, - 0xdf, 0x13, 0xab, 0xb8, 0xd6, 0x2f, 0xf3, 0xb0, 0xd8, 0xc0, 0xbe, 0xfb, 0xfc, 0x75, 0xca, 0x60, - 0xb6, 0x60, 0x56, 0x14, 0xd1, 0x31, 0xeb, 0x47, 0x8c, 0x05, 0xea, 0x11, 0x5d, 0x0d, 0x08, 0x40, - 0x53, 0x9e, 0x38, 0x23, 0xe2, 0x29, 0x1c, 0x2e, 0xdf, 0x81, 0xb1, 0x58, 0xa4, 0x01, 0xba, 0xfe, - 0xe2, 0x84, 0xea, 0x61, 0x1e, 0xe5, 0x51, 0xfd, 0xad, 0xf4, 0x2b, 0x4a, 0x6e, 0x49, 0x18, 0x14, - 0x41, 0x86, 0x1e, 0x58, 0x72, 0x58, 0x1d, 0xa5, 0xd6, 0x70, 0x60, 0xd7, 0xce, 0xd9, 0x69, 0x2d, - 0x55, 0x27, 0x60, 0xbc, 0x42, 0xaf, 0x5d, 0x89, 0xe2, 0xfe, 0x7f, 0xf2, 0xb0, 0x24, 0xde, 0xec, - 0xa4, 0x4c, 0xf3, 0x17, 0x30, 0x2f, 0x8a, 0x2a, 0x3d, 0x22, 0x30, 0xe0, 0xb6, 0x3e, 0xd3, 0x2c, - 0x58, 0x96, 0x98, 0x69, 0x87, 0xc3, 0x44, 0x93, 0x9d, 0x86, 0x7e, 0x36, 0x06, 0xd1, 0x4f, 0x4d, - 0x71, 0x1f, 0xa8, 0x61, 0x52, 0xe5, 0x99, 0x7a, 0x2c, 0x48, 0x95, 0x7f, 0xb6, 0x13, 0x06, 0xd5, - 0xe1, 0xaf, 0x6b, 0x50, 0x5d, 0x3b, 0x17, 0x37, 0xa9, 0x56, 0xa7, 0x61, 0x72, 0x13, 0xbf, 0x8a, - 0xe6, 0xfd, 0xb7, 0x73, 0xb1, 0xa7, 0x89, 0x44, 0xc2, 0x60, 0x6f, 0x14, 0x73, 0x51, 0xe8, 0x00, - 0xfa, 0x34, 0x51, 0x95, 0x30, 0x18, 0xe8, 0x3a, 0x8c, 0x32, 0x17, 0xdd, 0xf6, 0x09, 0x74, 0x73, - 0xf9, 0xf8, 0xa6, 0xc5, 0x50, 0x98, 0x9a, 0xce, 0xf1, 0xad, 0x27, 0x70, 0x8d, 0x7b, 0x88, 0xeb, - 0x8b, 0x4f, 0x1b, 0x3a, 0xe5, 0xe7, 0xcb, 0x72, 0x60, 0xe9, 0x11, 0x8e, 0xb3, 0x1e, 0xed, 0x71, - 0xd2, 0x67, 0x30, 0xa3, 0x95, 0x4b, 0x8a, 0x54, 0x2a, 0x95, 0x7b, 0x48, 0x92, 0x8e, 0x43, 0x5b, - 0x57, 0x4d, 0x4d, 0xa8, 0x9d, 0xb5, 0x30, 0x8d, 0x7a, 0xe5, 0x47, 0xb7, 0xc8, 0xc1, 0x29, 0xb8, - 0xde, 0x2d, 0xe5, 0x5c, 0x33, 0x8e, 0xc7, 0xe2, 0xff, 0x88, 0x2f, 0xaf, 0xac, 0xb5, 0xa6, 0x60, - 0xa2, 0xe6, 0x75, 0x43, 0xfc, 0x15, 0x15, 0x75, 0xac, 0x69, 0x98, 0x14, 0x55, 0x1d, 0x1c, 0x04, - 0xd6, 0x3f, 0x1e, 0x02, 0x8b, 0x4f, 0xac, 0xc9, 0x7a, 0x2a, 0xe6, 0x63, 0x2f, 0xd1, 0x59, 0xfe, - 0xa1, 0xba, 0xa4, 0xda, 0x88, 0xa3, 0x5a, 0xb6, 0xf3, 0xa8, 0x9c, 0xd7, 0x8a, 0x4a, 0xf5, 0xc0, - 0xbe, 0xf1, 0xd1, 0xff, 0x28, 0x85, 0x4d, 0xb2, 0xc3, 0x46, 0x63, 0x6a, 0xa7, 0xb0, 0x49, 0x8d, - 0xae, 0x99, 0x65, 0xda, 0xda, 0x34, 0x70, 0x91, 0x03, 0xc9, 0xb7, 0x95, 0xb2, 0x86, 0xfb, 0x30, - 0xb1, 0x82, 0x66, 0x22, 0x8f, 0x84, 0x4a, 0x04, 0xed, 0xea, 0x73, 0xc9, 0xcf, 0xa3, 0xf0, 0xda, - 0x50, 0xab, 0x18, 0xd5, 0x9e, 0x52, 0xa2, 0xa7, 0xe5, 0xd0, 0x60, 0x15, 0x8b, 0xf8, 0xef, 0x4a, - 0x3f, 0x7d, 0xf2, 0x21, 0x75, 0x3b, 0x98, 0x3f, 0x4a, 0x11, 0xcb, 0xd2, 0x37, 0xdf, 0x7e, 0xe7, - 0x4e, 0xc4, 0xa3, 0x69, 0x34, 0x53, 0xcc, 0xd1, 0xd3, 0xae, 0x5c, 0x4c, 0xf4, 0xad, 0xa3, 0x9c, - 0x78, 0x9d, 0x90, 0xb8, 0x12, 0x3e, 0xad, 0x24, 0x59, 0xd5, 0x6e, 0x71, 0xf3, 0x29, 0xb7, 0xb8, - 0xda, 0x9d, 0x57, 0x38, 0xe0, 0x5a, 0x77, 0xe8, 0xeb, 0x5f, 0x03, 0xfd, 0xe1, 0x79, 0xb8, 0xb0, - 0xed, 0xec, 0xbb, 0x5d, 0xc2, 0x7b, 0x44, 0x04, 0x5e, 0x54, 0x49, 0xe4, 0x68, 0xc8, 0x76, 0x83, - 0x35, 0x24, 0x61, 0x58, 0x56, 0xc3, 0xa5, 0xe7, 0xd3, 0x5e, 0x8c, 0xea, 0x41, 0xd1, 0x3f, 0xd4, - 0xac, 0xfe, 0x89, 0x7c, 0x21, 0xd4, 0xbb, 0xaf, 0xeb, 0xb5, 0x63, 0x79, 0x4b, 0xa8, 0xe5, 0x3c, - 0x19, 0x48, 0x7e, 0xe4, 0x8c, 0x03, 0xc9, 0xff, 0x10, 0x26, 0x9e, 0xf4, 0xf7, 0x64, 0x4e, 0x8c, - 0xf3, 0x03, 0x03, 0x95, 0xd3, 0x35, 0x78, 0xd1, 0xdf, 0x33, 0x67, 0xc5, 0x50, 0x89, 0x19, 0x83, - 0xae, 0x8f, 0xfe, 0x5a, 0x82, 0xae, 0xa7, 0xc6, 0xfb, 0x1f, 0xfb, 0x46, 0xe2, 0xfd, 0x1b, 0x02, - 0xa7, 0x8f, 0x9f, 0x7d, 0xe0, 0x74, 0x2d, 0xa8, 0x38, 0x7c, 0xcd, 0xa0, 0xe2, 0x55, 0x80, 0x31, - 0x3f, 0x0a, 0x4d, 0x3d, 0x5c, 0x18, 0xb1, 0xfe, 0xed, 0x28, 0xcc, 0x6e, 0xb8, 0x41, 0x28, 0xce, - 0x4b, 0x10, 0x7d, 0x4c, 0x27, 0x45, 0x99, 0xa2, 0xec, 0x72, 0xb9, 0x97, 0x95, 0x37, 0x63, 0x19, - 0x9b, 0x34, 0x04, 0xf4, 0xae, 0x7a, 0xb7, 0x92, 0x57, 0x02, 0x77, 0x26, 0x93, 0xed, 0xa8, 0x97, - 0x2e, 0x6f, 0x6b, 0xa6, 0xfd, 0x4c, 0x5b, 0xc8, 0x83, 0xb8, 0xbd, 0x9f, 0xc7, 0xd5, 0xa2, 0x9f, - 0x19, 0xdd, 0xf6, 0x10, 0x5d, 0x04, 0xec, 0xc2, 0x79, 0x1a, 0x04, 0x47, 0x3c, 0x08, 0x7e, 0x8b, - 0xb3, 0x1c, 0xd3, 0x24, 0xb0, 0x70, 0x39, 0xfc, 0x35, 0x30, 0x8d, 0x19, 0xd5, 0xa1, 0x05, 0x6a, - 0xac, 0x1b, 0x06, 0x82, 0x76, 0xe0, 0xe2, 0xb6, 0x8f, 0xdb, 0xdc, 0x53, 0xb6, 0xe7, 0x73, 0xc5, - 0x90, 0xbd, 0xcc, 0xa3, 0x41, 0x2c, 0x7b, 0xa2, 0xba, 0x89, 0x65, 0xbd, 0xca, 0xb3, 0x0d, 0xe8, - 0x68, 0x15, 0xa6, 0xeb, 0xd8, 0xf1, 0x5b, 0x07, 0x4f, 0xf0, 0x6b, 0xf2, 0xa9, 0x09, 0x8a, 0xa3, - 0x51, 0xe4, 0xd7, 0x80, 0xd6, 0x90, 0x81, 0xd2, 0x2a, 0xf5, 0xca, 0x5d, 0x47, 0x42, 0xdf, 0x87, - 0xf3, 0x75, 0xcf, 0x0f, 0xab, 0xaf, 0x63, 0xd9, 0x97, 0x58, 0x61, 0xf5, 0xb2, 0x88, 0x7e, 0x1b, - 0x78, 0x7e, 0xd8, 0xdc, 0x53, 0xe7, 0x8d, 0xe3, 0xa1, 0x87, 0x44, 0x8e, 0x25, 0xb2, 0xb5, 0x34, - 0xdb, 0xb0, 0xc0, 0x19, 0x5c, 0x56, 0xa5, 0x02, 0xb9, 0xc9, 0x76, 0x13, 0xc3, 0x42, 0xaf, 0x61, - 0x56, 0x3f, 0x4d, 0x0f, 0xdd, 0x0e, 0x61, 0x41, 0xa0, 0xe5, 0x31, 0x31, 0x81, 0x54, 0x6f, 0xf1, - 0x5e, 0x5e, 0x8d, 0x9f, 0xd9, 0xe7, 0xb4, 0x5e, 0x0d, 0xe6, 0x6d, 0xc2, 0x47, 0x4f, 0x69, 0xf0, - 0x61, 0x36, 0x33, 0x95, 0x40, 0x44, 0xa5, 0x26, 0x83, 0xa0, 0x31, 0xf3, 0xfa, 0xf4, 0x44, 0xd2, - 0x19, 0x75, 0x82, 0x78, 0x70, 0x6a, 0x3b, 0x81, 0x8a, 0xb6, 0xe1, 0xc2, 0x6e, 0x80, 0xb7, 0x7d, - 0xfc, 0xd2, 0xc5, 0xaf, 0x04, 0xbd, 0x49, 0x4a, 0x8f, 0x2e, 0x37, 0xa1, 0xd7, 0x63, 0xb5, 0x26, - 0x82, 0x49, 0xe4, 0xd2, 0x87, 0x30, 0xa1, 0xec, 0x37, 0xc3, 0xd3, 0xf2, 0x59, 0xf5, 0x69, 0xf9, - 0xb8, 0xfa, 0x84, 0xfc, 0xcf, 0x72, 0xcc, 0xb4, 0xa8, 0x6c, 0x60, 0x6e, 0xa7, 0xd8, 0x82, 0x71, - 0x59, 0x28, 0x1f, 0x32, 0x08, 0x59, 0x27, 0xf6, 0xad, 0x64, 0xc7, 0x47, 0x9c, 0x6e, 0xb5, 0xb7, - 0x11, 0x8d, 0x6f, 0xd6, 0xdc, 0xf7, 0x5b, 0xd1, 0x93, 0x47, 0xfe, 0x3c, 0xd3, 0x77, 0x5a, 0x2f, - 0x22, 0x7b, 0xeb, 0x4f, 0xc8, 0xf9, 0x50, 0x2b, 0x78, 0xd2, 0xa8, 0x79, 0x3d, 0xe3, 0x0f, 0xaf, - 0x14, 0x79, 0x07, 0xe4, 0xcb, 0x4f, 0x56, 0xac, 0x1f, 0x1c, 0x15, 0x81, 0x3a, 0xff, 0xce, 0x58, - 0x36, 0x7b, 0xb1, 0x67, 0xec, 0xc1, 0x7b, 0xc9, 0x37, 0x67, 0x94, 0x17, 0x47, 0x6f, 0xce, 0xd4, - 0x69, 0x8c, 0x5e, 0x9f, 0xed, 0xc2, 0x82, 0x8d, 0x0f, 0xbd, 0x97, 0xf8, 0x6c, 0xc9, 0xfe, 0x08, - 0x2e, 0xeb, 0x04, 0x77, 0x7b, 0x6d, 0x1a, 0xaa, 0x83, 0xdd, 0xba, 0x1a, 0x43, 0xee, 0x71, 0x04, - 0x16, 0x72, 0x8f, 0x05, 0x61, 0x22, 0x7f, 0xaa, 0xfc, 0x96, 0xd6, 0x59, 0x1e, 0x2c, 0xea, 0xc4, - 0x2b, 0xed, 0x36, 0xcd, 0x23, 0xd0, 0x72, 0x7b, 0x4e, 0x37, 0x44, 0x5b, 0x30, 0xa1, 0xfc, 0x8c, - 0x49, 0x4a, 0x4a, 0x0d, 0x5b, 0xfd, 0x5e, 0x54, 0xa0, 0x4a, 0x74, 0x0a, 0x9c, 0x85, 0xa1, 0x1c, - 0x9f, 0x1e, 0x32, 0x65, 0x6a, 0x9b, 0x55, 0x98, 0x52, 0x7e, 0x4a, 0xc5, 0x83, 0x86, 0xd3, 0x54, - 0x5a, 0xd0, 0x27, 0x4c, 0x47, 0xb1, 0x5a, 0x50, 0x32, 0x4d, 0x1a, 0x0d, 0x21, 0xf1, 0x1a, 0xad, - 0x46, 0xc1, 0x28, 0x06, 0xdf, 0x76, 0xcf, 0xa4, 0x05, 0xa2, 0xb0, 0xfe, 0xde, 0x30, 0x2c, 0xf0, - 0xc5, 0x38, 0xcb, 0x15, 0x47, 0x3f, 0x85, 0x09, 0x65, 0x8d, 0xf9, 0xa4, 0x5f, 0x15, 0x0e, 0x32, - 0x69, 0x7b, 0x81, 0x49, 0x74, 0x7d, 0x5a, 0xd0, 0x8c, 0x2d, 0x37, 0x91, 0xe8, 0xd4, 0x6d, 0xd3, - 0x81, 0x69, 0x7d, 0xa1, 0xb9, 0x50, 0x7b, 0xdd, 0xd8, 0x88, 0x0e, 0x2a, 0xe2, 0x37, 0xb5, 0x9b, - 0xc6, 0xe5, 0xa6, 0x79, 0xae, 0xf4, 0x4d, 0xf4, 0x15, 0x5c, 0x48, 0xac, 0x32, 0x57, 0xd2, 0x6e, - 0x1a, 0x1b, 0x4c, 0x40, 0xb3, 0x68, 0xe6, 0x3e, 0x2d, 0x4e, 0x6d, 0x36, 0xd9, 0x08, 0x6a, 0xc3, - 0xa4, 0xba, 0xf0, 0x5c, 0xea, 0xbe, 0x96, 0x31, 0x95, 0x0c, 0x90, 0x09, 0x45, 0x7c, 0x2e, 0xe9, - 0xda, 0xeb, 0xa9, 0x21, 0x35, 0xaa, 0xd5, 0x31, 0x38, 0xcf, 0x7e, 0x13, 0x16, 0xb0, 0xed, 0xe3, - 0x00, 0x77, 0x5b, 0x58, 0xf5, 0x75, 0xfa, 0xba, 0x2c, 0xe0, 0xdf, 0xe7, 0xa0, 0x68, 0xa2, 0x5b, - 0xc7, 0xdd, 0x36, 0xda, 0x86, 0x42, 0xbc, 0x21, 0xbe, 0xab, 0x2d, 0xf1, 0x55, 0x48, 0xef, 0x12, - 0x91, 0xc2, 0x13, 0xdd, 0xdc, 0x84, 0x0b, 0x4a, 0xd9, 0x29, 0x9d, 0xca, 0x92, 0xa8, 0xaa, 0x22, - 0xbd, 0x46, 0x7d, 0xe7, 0x56, 0xbc, 0x43, 0xc7, 0xed, 0x12, 0x01, 0x51, 0x09, 0x1b, 0x01, 0x51, - 0x29, 0x9f, 0x1b, 0xa6, 0x6c, 0xd2, 0x52, 0xe1, 0x60, 0x29, 0x41, 0xac, 0x4f, 0x28, 0x07, 0xe7, - 0x2a, 0x0a, 0x7b, 0xda, 0x23, 0x89, 0x5d, 0x85, 0x91, 0x9d, 0x8d, 0x7a, 0xad, 0xc2, 0x1f, 0x0a, - 0xb1, 0xa7, 0xa4, 0x9d, 0xa0, 0xd9, 0x72, 0x6c, 0x56, 0x61, 0x7d, 0x4c, 0xa3, 0xec, 0xf1, 0x18, - 0x6d, 0x12, 0xef, 0x06, 0x8c, 0xf2, 0x22, 0x8e, 0x49, 0xaf, 0xa6, 0x3b, 0x1c, 0x4a, 0xd4, 0x59, - 0xdb, 0x42, 0xbe, 0xee, 0x60, 0x27, 0x50, 0x3e, 0xcc, 0x1f, 0x10, 0x51, 0x9c, 0x95, 0xf1, 0xef, - 0xf2, 0xb4, 0x0c, 0x81, 0x4a, 0x8b, 0x99, 0xf2, 0x2d, 0x60, 0x6c, 0xf9, 0x97, 0xf5, 0x27, 0x79, - 0x98, 0x15, 0x01, 0x63, 0x34, 0xc3, 0xc2, 0xc0, 0x50, 0x97, 0x3f, 0xd0, 0x63, 0xf2, 0xd4, 0x64, - 0x4c, 0x9e, 0xaf, 0x91, 0x7c, 0x83, 0x47, 0xf3, 0x39, 0xe1, 0x33, 0xba, 0x27, 0x52, 0xfa, 0x1e, - 0xd6, 0xa4, 0x6f, 0xd3, 0x78, 0x34, 0xe9, 0x9b, 0x2e, 0x0b, 0x93, 0xbe, 0x85, 0xcc, 0xfd, 0x75, - 0x04, 0xa6, 0x0f, 0xc8, 0xd6, 0xd2, 0x9a, 0x3c, 0xe9, 0x0b, 0xab, 0x0d, 0xfa, 0xe8, 0x7e, 0x6b, - 0x7d, 0xa5, 0x46, 0xf6, 0x34, 0xef, 0xaa, 0x58, 0x81, 0xbb, 0xd4, 0x6b, 0x8e, 0xd3, 0x54, 0x37, - 0x26, 0x65, 0xb1, 0x3c, 0xd4, 0x84, 0x02, 0x62, 0x3d, 0x90, 0x4f, 0xf8, 0x0d, 0xd4, 0xd2, 0xe2, - 0xb6, 0x6e, 0xd2, 0xe0, 0x04, 0x8f, 0xe8, 0x7a, 0x9d, 0x45, 0x27, 0x7e, 0x3f, 0xc7, 0xa2, 0x1d, - 0xd4, 0xb7, 0x94, 0x10, 0xf7, 0xdd, 0xe7, 0x9e, 0x62, 0x57, 0x55, 0x9a, 0x79, 0xe2, 0x76, 0xdb, - 0xaa, 0x5d, 0x95, 0x26, 0x31, 0xe4, 0x0f, 0x15, 0x9b, 0x2f, 0xdc, 0x6e, 0xdb, 0x8e, 0x43, 0xa3, - 0x0f, 0x61, 0x4a, 0x29, 0x92, 0x1f, 0x69, 0x16, 0x21, 0x50, 0x45, 0x77, 0xdb, 0xb6, 0x0e, 0x69, - 0xfd, 0x76, 0x1e, 0x16, 0x32, 0x52, 0xb0, 0x50, 0x1d, 0x90, 0x9a, 0x03, 0xe4, 0x4c, 0xf1, 0xd8, - 0xca, 0xf4, 0x51, 0xa6, 0xc6, 0x23, 0x25, 0x20, 0xfa, 0x04, 0x26, 0xd4, 0x8c, 0x30, 0x79, 0x25, - 0x80, 0xb7, 0x39, 0x0b, 0x8c, 0x0a, 0x8e, 0x02, 0x80, 0xa8, 0x27, 0xfc, 0x9d, 0x72, 0x9d, 0x48, - 0x34, 0x4a, 0x3a, 0x99, 0x33, 0xc9, 0x6b, 0xa3, 0x34, 0x63, 0xfd, 0xed, 0x3c, 0x2c, 0x65, 0xcc, - 0x43, 0x1d, 0x87, 0xff, 0x3f, 0xa6, 0x22, 0x96, 0xe4, 0x67, 0xe8, 0x1b, 0x4a, 0xf2, 0x63, 0xfd, - 0x6e, 0x1e, 0x2e, 0xed, 0xf6, 0x02, 0xea, 0xdc, 0xba, 0xde, 0x7d, 0x89, 0xbb, 0xa1, 0xe7, 0xbf, - 0xa6, 0xce, 0x79, 0xe8, 0x5d, 0x18, 0x59, 0xc3, 0x9d, 0x8e, 0xc7, 0x3f, 0x6b, 0x57, 0x84, 0xa9, - 0x3b, 0x0e, 0x4d, 0x81, 0xd6, 0xce, 0xd9, 0x0c, 0x1a, 0x7d, 0x08, 0xe3, 0x6b, 0xd8, 0xf1, 0xc3, - 0x3d, 0xec, 0x08, 0xc9, 0xf5, 0x32, 0x47, 0x55, 0x50, 0x38, 0xc0, 0xda, 0x39, 0x3b, 0x82, 0x46, - 0xcb, 0x30, 0xbc, 0xed, 0x75, 0xf7, 0xe5, 0xeb, 0xb7, 0x94, 0x06, 0x09, 0xcc, 0xda, 0x39, 0x9b, - 0xc2, 0xa2, 0xa7, 0x30, 0x55, 0xd9, 0xc7, 0xdd, 0xf0, 0x29, 0x0e, 0x9d, 0xb6, 0x13, 0x3a, 0x5c, - 0xc2, 0xb9, 0x91, 0x86, 0xac, 0x01, 0xd3, 0xc4, 0xb9, 0x6a, 0x41, 0x75, 0x04, 0x86, 0x9e, 0x06, - 0xfb, 0xd6, 0xcf, 0x73, 0x50, 0x5c, 0xf1, 0x5e, 0x75, 0x8d, 0x13, 0xf3, 0xbe, 0x3e, 0x31, 0xc2, - 0x05, 0xdb, 0x00, 0x1f, 0x9b, 0x9a, 0x77, 0x60, 0x78, 0xdb, 0xed, 0xee, 0xc7, 0x3e, 0xea, 0x06, - 0x3c, 0x02, 0x45, 0x47, 0xe8, 0x76, 0xf7, 0x45, 0x97, 0xde, 0x86, 0xf9, 0x14, 0x48, 0x34, 0x2d, - 0xd9, 0xdb, 0x30, 0x65, 0x6b, 0x6f, 0xc1, 0x9c, 0x71, 0xd2, 0x12, 0x80, 0xff, 0x26, 0x67, 0x58, - 0x7d, 0xd6, 0xd7, 0x22, 0x8c, 0x8a, 0x00, 0xb5, 0xec, 0x3b, 0x20, 0x7e, 0x52, 0xe7, 0x50, 0x71, - 0x3a, 0x78, 0x68, 0x41, 0x79, 0x08, 0x1a, 0xca, 0x63, 0x7f, 0xb6, 0x87, 0x3f, 0xfa, 0x1a, 0x3b, - 0x55, 0xd2, 0x22, 0x6d, 0xae, 0x79, 0x41, 0xd8, 0x95, 0xbe, 0x0b, 0xb6, 0xfc, 0x6d, 0xfd, 0x97, - 0x3c, 0x0d, 0x53, 0x98, 0xb1, 0xcc, 0x64, 0xdc, 0x5b, 0x75, 0x3e, 0x8e, 0xfc, 0x56, 0x1d, 0x2d, - 0xc2, 0xf8, 0x56, 0x5d, 0x8b, 0xbf, 0x6b, 0x47, 0x05, 0xe8, 0x36, 0xcb, 0xe0, 0x56, 0xf1, 0x5b, - 0x07, 0x6e, 0x88, 0x5b, 0x61, 0xdf, 0xe7, 0xcc, 0xc9, 0x4e, 0x94, 0x23, 0x0b, 0x26, 0x1f, 0x75, - 0xdc, 0xbd, 0x96, 0x20, 0xc6, 0x3a, 0xa7, 0x95, 0xa1, 0x9b, 0x30, 0xcd, 0xb3, 0x44, 0xb2, 0xf0, - 0xc4, 0x3c, 0x05, 0x9a, 0x1d, 0x2b, 0x25, 0xed, 0xd6, 0xbc, 0x6e, 0xe8, 0xb8, 0x5d, 0xec, 0xdb, - 0xfd, 0x6e, 0xe8, 0xf2, 0x9c, 0xe1, 0xe3, 0x76, 0xa2, 0x1c, 0xbd, 0x03, 0x73, 0xb2, 0x6c, 0xcb, - 0x6f, 0x1d, 0xe0, 0x20, 0xf4, 0x69, 0x28, 0x77, 0xfa, 0x84, 0xdc, 0x36, 0x57, 0xd2, 0x16, 0x3a, - 0x5e, 0xbf, 0xbd, 0xda, 0x7d, 0xe9, 0xfa, 0x1e, 0xcb, 0x2f, 0x38, 0xc6, 0x5b, 0x88, 0x95, 0x5b, - 0xdb, 0xc6, 0x13, 0xf0, 0x35, 0x36, 0x87, 0x55, 0x03, 0x94, 0xe4, 0x00, 0xe8, 0xbb, 0x30, 0x5e, - 0xaf, 0xaf, 0x69, 0x37, 0x0a, 0x71, 0x23, 0xbf, 0x1d, 0x41, 0x58, 0xef, 0xc1, 0x25, 0x49, 0x84, - 0xc5, 0xd8, 0x54, 0x5c, 0xd0, 0x79, 0x8a, 0x19, 0xe9, 0xf9, 0x1e, 0x15, 0x58, 0x3f, 0x4a, 0xe0, - 0xd5, 0xfb, 0x87, 0x87, 0x8e, 0xff, 0x1a, 0x55, 0x74, 0xbc, 0xa1, 0x81, 0xbc, 0xae, 0x3a, 0xfc, - 0x8b, 0xa3, 0xf2, 0x39, 0x95, 0xb8, 0x0d, 0xb3, 0xda, 0x89, 0x14, 0x5d, 0x2a, 0xc5, 0x3f, 0x24, - 0xca, 0x51, 0x59, 0x02, 0xe0, 0xc1, 0x7b, 0x37, 0xbc, 0x7d, 0xee, 0x99, 0xac, 0x94, 0x58, 0x0f, - 0x61, 0x2e, 0x46, 0x93, 0x0b, 0x56, 0xdf, 0x05, 0x29, 0x0a, 0x52, 0xa2, 0x43, 0xd5, 0x0b, 0xbf, - 0x3a, 0x2a, 0x4f, 0x91, 0x6d, 0x71, 0x27, 0x0a, 0xa5, 0x25, 0xfe, 0xb2, 0x9e, 0xaa, 0x12, 0x7b, - 0xa5, 0xa3, 0xbd, 0x29, 0xb9, 0x0f, 0xe7, 0x59, 0x49, 0x2c, 0x60, 0x8d, 0x0a, 0xcd, 0x47, 0xcb, - 0x01, 0xad, 0x39, 0xea, 0x37, 0x46, 0x7f, 0x54, 0x22, 0x0f, 0x65, 0x6b, 0x97, 0x45, 0x4f, 0x8c, - 0x8a, 0x65, 0x50, 0x9c, 0xe1, 0x4a, 0xe4, 0x49, 0x2d, 0xcc, 0x92, 0x02, 0xae, 0xeb, 0xbd, 0xea, - 0xe0, 0xf6, 0x3e, 0xcd, 0x66, 0x53, 0x9d, 0xe4, 0x66, 0xc9, 0x61, 0x87, 0x10, 0xa0, 0x68, 0xd6, - 0x67, 0x30, 0x57, 0xeb, 0x60, 0xc7, 0x8f, 0xb7, 0x87, 0x6e, 0xc2, 0x28, 0x2d, 0xd3, 0x2f, 0xd8, - 0x1c, 0x52, 0x44, 0x2f, 0xd8, 0x78, 0x25, 0x11, 0x32, 0x59, 0x1c, 0x11, 0x75, 0x48, 0x91, 0x7c, - 0x37, 0x42, 0x7f, 0xc7, 0xbc, 0x8e, 0x0c, 0xa3, 0x67, 0x70, 0xd6, 0xa7, 0xf4, 0x5a, 0xdb, 0x94, - 0xc8, 0xe8, 0x64, 0x7e, 0x70, 0x7f, 0x0d, 0x16, 0x2b, 0xbd, 0x1e, 0xee, 0xb6, 0x23, 0x44, 0xa2, - 0x06, 0x9f, 0xcc, 0xbf, 0x18, 0x55, 0x60, 0x84, 0x42, 0x4b, 0xd3, 0x04, 0xef, 0xae, 0xa1, 0x3b, - 0x14, 0x8e, 0xcb, 0xdc, 0xb4, 0x01, 0x86, 0x69, 0xb5, 0x61, 0xbe, 0xde, 0xdf, 0x3b, 0x74, 0x59, - 0xce, 0x20, 0xea, 0xa3, 0x2f, 0xda, 0x5e, 0x17, 0x01, 0x6f, 0xd9, 0x64, 0xdc, 0x8a, 0x12, 0x14, - 0xd1, 0xbb, 0x42, 0xee, 0xb7, 0xff, 0xf2, 0xfe, 0x9d, 0x08, 0x95, 0x7e, 0x0e, 0x59, 0x2b, 0xb4, - 0x9a, 0x07, 0xc5, 0xb5, 0x2e, 0xc2, 0x05, 0x55, 0xcd, 0x63, 0x3b, 0x64, 0x0e, 0x2e, 0xea, 0xea, - 0x1b, 0x2b, 0xfe, 0x12, 0x66, 0x99, 0x5d, 0x92, 0x45, 0x20, 0x5a, 0x8e, 0x82, 0xed, 0xe4, 0x1b, - 0xcb, 0xb1, 0x1b, 0x46, 0xea, 0x24, 0x2a, 0x63, 0xcb, 0x35, 0x96, 0x99, 0x6b, 0xd2, 0xcb, 0x65, - 0xcd, 0x48, 0x90, 0x6f, 0x2c, 0x57, 0x47, 0xb9, 0xee, 0x41, 0xa8, 0xb3, 0xe5, 0xff, 0xb5, 0x50, - 0x5f, 0xa6, 0xde, 0xb0, 0x6b, 0xd8, 0xa1, 0x37, 0xd7, 0x66, 0x9f, 0xc2, 0x69, 0xc8, 0xbb, 0x6d, - 0xf1, 0xe9, 0x71, 0xdb, 0xd6, 0x1f, 0xe7, 0xe0, 0x16, 0x33, 0x5b, 0x98, 0xf1, 0xa8, 0x36, 0x91, - 0x82, 0x8c, 0x3e, 0x00, 0x96, 0xc4, 0x83, 0xdb, 0x1d, 0x2d, 0xde, 0xf3, 0x2c, 0x4a, 0x0c, 0x01, - 0x55, 0x60, 0x52, 0xbd, 0xe2, 0x8e, 0xbd, 0x59, 0x4e, 0xb1, 0x2b, 0xd8, 0x13, 0x87, 0xcf, 0x1d, - 0x79, 0xed, 0xfd, 0x02, 0x16, 0x56, 0xbf, 0x22, 0x1b, 0x82, 0x07, 0xc4, 0xe6, 0x77, 0x03, 0x91, - 0xcf, 0xda, 0xcc, 0x0e, 0xdf, 0x31, 0xfa, 0xb7, 0x21, 0x5e, 0x4c, 0xbe, 0x99, 0x9c, 0x84, 0x4f, - 0x55, 0x20, 0xf6, 0x9d, 0xd0, 0xca, 0xac, 0xff, 0x9c, 0x83, 0x45, 0x73, 0x6b, 0x9c, 0xb1, 0xac, - 0xc3, 0x85, 0x9a, 0xd3, 0xf5, 0xba, 0x6e, 0xcb, 0xe9, 0xd4, 0x5b, 0x07, 0xb8, 0xdd, 0xef, 0x88, - 0x9b, 0x7f, 0xc9, 0x65, 0x88, 0x0c, 0xc0, 0xd1, 0x05, 0x88, 0x9d, 0xc4, 0x42, 0xef, 0xc1, 0x25, - 0x7a, 0xef, 0xca, 0x78, 0x6f, 0x07, 0xfb, 0x92, 0x1e, 0xeb, 0x59, 0x4a, 0x2d, 0xba, 0x07, 0x17, - 0x99, 0xb0, 0xd2, 0xde, 0xed, 0xba, 0xa1, 0x44, 0x62, 0xa2, 0x82, 0xa9, 0xca, 0xfa, 0x18, 0x0a, - 0x95, 0x20, 0x70, 0x83, 0xd0, 0x89, 0xce, 0xdd, 0x5b, 0x30, 0xd3, 0xf2, 0xba, 0x2f, 0xb1, 0x1f, - 0x38, 0x5c, 0x47, 0xe0, 0xf3, 0x36, 0xad, 0x16, 0xaf, 0xb7, 0xad, 0x3f, 0xcc, 0x29, 0xd8, 0x4f, - 0x71, 0x40, 0xb3, 0x7e, 0x9d, 0x14, 0x1b, 0x21, 0xa0, 0xb9, 0x40, 0xf8, 0x90, 0xe8, 0xdf, 0xe8, - 0x11, 0x4c, 0x72, 0x6f, 0xa3, 0x26, 0x15, 0x36, 0x4e, 0xf3, 0xae, 0x6a, 0x82, 0x63, 0x92, 0x3a, - 0x22, 0x0f, 0xf4, 0x9c, 0xd7, 0x1d, 0xcf, 0x69, 0x73, 0x01, 0x48, 0xfc, 0xb4, 0xea, 0x34, 0x06, - 0x6b, 0xbc, 0xdb, 0xd1, 0x32, 0x3e, 0x80, 0xb1, 0x43, 0x5e, 0x26, 0x5f, 0x45, 0xf0, 0x77, 0xf4, - 0x31, 0x1c, 0x5b, 0x02, 0x5a, 0x16, 0x3d, 0x77, 0x12, 0xa0, 0xa6, 0x8c, 0x54, 0xf2, 0x95, 0xdf, - 0xcc, 0x51, 0x69, 0x2a, 0x9a, 0x82, 0xee, 0x73, 0x2f, 0x71, 0x9e, 0x66, 0x61, 0x24, 0x74, 0x43, - 0xb9, 0xd0, 0xec, 0xc7, 0x99, 0x4d, 0x8b, 0xb5, 0x47, 0xdf, 0xdb, 0xa4, 0xf5, 0x53, 0x7e, 0x21, - 0xa7, 0xd4, 0xa5, 0x8a, 0x4f, 0x43, 0x7c, 0x0c, 0xb6, 0x0e, 0x6d, 0x1d, 0x4a, 0x07, 0x26, 0x53, - 0x33, 0x62, 0x93, 0xc5, 0x87, 0x94, 0x7b, 0xd3, 0x21, 0xbd, 0x0b, 0xd7, 0x33, 0x9b, 0xe3, 0x83, - 0x8a, 0x4d, 0xf4, 0xed, 0xdb, 0x30, 0xbe, 0xd5, 0xc3, 0x3c, 0x59, 0xf4, 0x18, 0x0c, 0xaf, 0x6f, - 0xae, 0xef, 0xb0, 0x54, 0x75, 0xdb, 0xbb, 0x3b, 0x85, 0x1c, 0x02, 0x38, 0xbf, 0xb2, 0xba, 0xb1, - 0xba, 0xb3, 0x5a, 0xc8, 0xdf, 0x6e, 0xaa, 0x3e, 0x31, 0x68, 0x01, 0xe6, 0x57, 0x56, 0x1b, 0xeb, - 0xb5, 0xd5, 0xe6, 0xce, 0x0f, 0xb6, 0x57, 0x9b, 0x7a, 0xb0, 0xa3, 0x59, 0x28, 0xa8, 0x95, 0x3b, - 0x5b, 0x3b, 0xdb, 0x2c, 0xff, 0x9c, 0x5a, 0xfa, 0x6c, 0xb5, 0x5a, 0xd9, 0xdd, 0x59, 0xdb, 0x2c, - 0x0c, 0x59, 0xc3, 0x63, 0xf9, 0x42, 0xfe, 0xf6, 0x4f, 0x35, 0x87, 0x19, 0xb4, 0x08, 0x45, 0x0e, - 0xbe, 0x5b, 0xaf, 0x3c, 0x4a, 0x6f, 0x82, 0xd5, 0x3e, 0x7d, 0x58, 0x29, 0xe4, 0xd0, 0x15, 0xb8, - 0xac, 0x95, 0x6e, 0x57, 0xea, 0xf5, 0x67, 0x5b, 0xf6, 0xca, 0xc6, 0x6a, 0xbd, 0x5e, 0xc8, 0xdf, - 0x6e, 0x68, 0x01, 0x72, 0x48, 0x0b, 0x4f, 0x1f, 0x56, 0x9a, 0xf6, 0xea, 0xe7, 0xbb, 0xeb, 0xf6, - 0xea, 0x4a, 0xb2, 0x05, 0xad, 0xf6, 0x07, 0xab, 0xf5, 0x42, 0x0e, 0x5d, 0x84, 0x19, 0xad, 0x74, - 0x73, 0xab, 0x90, 0xbf, 0x7d, 0x93, 0xbf, 0xbd, 0x43, 0xd3, 0x00, 0x2b, 0xab, 0xf5, 0xda, 0xea, - 0xe6, 0xca, 0xfa, 0xe6, 0xa3, 0xc2, 0x39, 0x34, 0x05, 0xe3, 0x15, 0xf9, 0x33, 0xb7, 0xfc, 0x17, - 0x3f, 0xcf, 0xc1, 0x04, 0xe1, 0xe8, 0xc2, 0xf9, 0x21, 0x14, 0xb7, 0x7f, 0xc6, 0x65, 0x43, 0x6f, - 0x6b, 0xd1, 0xfd, 0xb3, 0x76, 0x52, 0xe9, 0xf6, 0x49, 0x40, 0xf9, 0x2e, 0xe8, 0x52, 0x9b, 0x9c, - 0x79, 0xff, 0xa3, 0xc8, 0x60, 0x99, 0x7d, 0x92, 0x4b, 0xb7, 0x06, 0x03, 0xca, 0xc8, 0x25, 0xb3, - 0x26, 0x66, 0x83, 0x12, 0x2c, 0x45, 0x90, 0xbe, 0x6e, 0x20, 0x9d, 0x60, 0x51, 0xeb, 0x70, 0x29, - 0x36, 0x58, 0xc1, 0x7c, 0xd3, 0x58, 0x55, 0xe9, 0x52, 0xe2, 0x60, 0xad, 0x12, 0xf9, 0x01, 0x6d, - 0xc3, 0x95, 0x7a, 0xca, 0x28, 0x76, 0x28, 0xeb, 0x49, 0x3b, 0xf5, 0xa9, 0x14, 0xbf, 0x54, 0xd4, - 0x1a, 0xfe, 0x89, 0xe2, 0xf9, 0x01, 0x52, 0x75, 0x18, 0x2a, 0xb5, 0x95, 0x32, 0xac, 0x16, 0x14, - 0xe0, 0x56, 0xee, 0x5e, 0x0e, 0xd9, 0xd4, 0x5e, 0x1f, 0xd3, 0x9b, 0x24, 0x65, 0xb3, 0x1e, 0x56, - 0x4a, 0xa9, 0x16, 0xea, 0xd6, 0x63, 0x98, 0x22, 0xea, 0x8c, 0xac, 0x45, 0x0b, 0x71, 0x78, 0x45, - 0x83, 0x2a, 0x2d, 0x9a, 0x2b, 0x65, 0x20, 0xcf, 0x49, 0xda, 0x3f, 0x32, 0x9b, 0x2d, 0x1c, 0xa0, - 0x39, 0x99, 0xc6, 0x9e, 0x95, 0x30, 0x87, 0x85, 0xd2, 0x85, 0x58, 0x71, 0xe3, 0xfe, 0xbd, 0x1c, - 0xaa, 0xd3, 0x87, 0x9f, 0x9a, 0x5e, 0x84, 0x84, 0xa7, 0x53, 0x52, 0x61, 0x62, 0xbd, 0x29, 0x47, - 0xfb, 0xc5, 0xac, 0x50, 0x6d, 0x02, 0x4a, 0xaa, 0x1b, 0xe8, 0x6a, 0xb4, 0x14, 0x66, 0x4d, 0x24, - 0x75, 0x79, 0x57, 0x61, 0x9a, 0xef, 0x3d, 0xae, 0x00, 0xa1, 0x2c, 0x15, 0x2a, 0x95, 0xcc, 0x23, - 0x3a, 0x4f, 0x52, 0x89, 0x42, 0x25, 0x65, 0xdf, 0xc7, 0x34, 0xab, 0xd2, 0x82, 0xb1, 0x8e, 0x8f, - 0xef, 0x21, 0x4c, 0xeb, 0xfa, 0x18, 0x12, 0x0b, 0x64, 0x54, 0xd3, 0x52, 0x3b, 0xd4, 0x84, 0xf9, - 0xa7, 0x8e, 0x4b, 0x4d, 0x14, 0xfc, 0xbe, 0x4d, 0xdc, 0x96, 0xa1, 0x72, 0xc6, 0xf5, 0x59, 0x1d, - 0x77, 0xdb, 0xa5, 0x41, 0x21, 0x0f, 0xe8, 0xce, 0xad, 0x0b, 0xb5, 0x42, 0xbf, 0x6d, 0x44, 0x96, - 0x9e, 0xc7, 0xc4, 0x74, 0x81, 0x5c, 0x4a, 0xf3, 0x79, 0x40, 0x4f, 0xa9, 0x5e, 0x13, 0xa3, 0xa8, - 0xec, 0x89, 0x53, 0x93, 0x2b, 0x52, 0x27, 0xe9, 0xd0, 0x8d, 0x3b, 0x2f, 0x04, 0x28, 0x65, 0xe2, - 0x52, 0x89, 0xdd, 0xcb, 0xa1, 0x2f, 0xc1, 0x4a, 0x23, 0xf7, 0xcc, 0x0d, 0x0f, 0xb8, 0xf3, 0xce, - 0x82, 0x91, 0x00, 0x3f, 0x28, 0x19, 0xd4, 0x6d, 0x98, 0x35, 0xb9, 0x59, 0xc8, 0x09, 0xcd, 0xf0, - 0xc1, 0x48, 0xdd, 0x05, 0x36, 0xd1, 0xce, 0xda, 0xe9, 0x8b, 0x94, 0x71, 0xcb, 0x9f, 0x4a, 0xf3, - 0x13, 0x98, 0x26, 0xbb, 0xe4, 0x09, 0xc6, 0xbd, 0x4a, 0xc7, 0x7d, 0x89, 0x03, 0x24, 0xc2, 0x81, - 0xc8, 0xa2, 0x34, 0xdc, 0x5b, 0x39, 0xf4, 0x6d, 0x98, 0x78, 0xe6, 0x84, 0xad, 0x03, 0xfe, 0x7a, - 0x5d, 0x3c, 0x6e, 0xa7, 0x65, 0x25, 0xf1, 0x8b, 0x56, 0xde, 0xcb, 0xa1, 0xef, 0xc1, 0xe8, 0x23, - 0x1c, 0x52, 0x4f, 0xd3, 0x6b, 0xf2, 0xc6, 0x91, 0x79, 0xf7, 0xac, 0x77, 0xa5, 0x1f, 0x9e, 0xe8, - 0x70, 0xdc, 0xa8, 0x85, 0xee, 0x02, 0x30, 0x86, 0x40, 0x29, 0xc4, 0xab, 0x4b, 0x89, 0x6e, 0xa3, - 0x47, 0x44, 0x30, 0xea, 0xe0, 0x10, 0x9f, 0xb4, 0xc9, 0xb4, 0x39, 0xda, 0x80, 0x69, 0x19, 0xfb, - 0x74, 0x93, 0x3e, 0x55, 0xb0, 0x62, 0xc4, 0x82, 0x53, 0x50, 0xfb, 0x88, 0x9c, 0x0a, 0x76, 0x03, - 0x28, 0x43, 0xa5, 0xa0, 0xb4, 0xe0, 0x29, 0x72, 0x12, 0x19, 0x98, 0x82, 0xbb, 0xe6, 0x05, 0xa1, - 0x8e, 0x2b, 0x4b, 0xcc, 0xb8, 0x18, 0x4a, 0x6a, 0xbb, 0x7a, 0xd8, 0x94, 0x88, 0xe7, 0xa6, 0x45, - 0x7b, 0x29, 0x5d, 0xcb, 0x80, 0x60, 0xec, 0x8e, 0x72, 0x92, 0x15, 0xb8, 0x28, 0x9a, 0x51, 0x13, - 0xf4, 0x8b, 0x3b, 0x0d, 0xa5, 0x4c, 0x10, 0x46, 0xc9, 0x2a, 0xf2, 0xd5, 0xd3, 0xc2, 0x75, 0x44, - 0x5f, 0x3d, 0x43, 0x3c, 0x95, 0xe8, 0xab, 0x67, 0x8c, 0xf0, 0xf1, 0x84, 0x99, 0xe0, 0xb4, 0x34, - 0xdd, 0x8d, 0x65, 0x24, 0xdc, 0x8e, 0xb5, 0x0a, 0x7e, 0xb0, 0x2f, 0x99, 0xea, 0x1a, 0x0f, 0xee, - 0xe5, 0xd0, 0x2a, 0x5c, 0x94, 0x2f, 0x4b, 0xa2, 0x2a, 0x94, 0x82, 0x90, 0xba, 0x09, 0x3e, 0x83, - 0x8b, 0x7c, 0x4b, 0x69, 0x64, 0x0a, 0x92, 0x3b, 0xf0, 0x6b, 0xc8, 0x54, 0x02, 0x8f, 0x61, 0xae, - 0x1e, 0x1b, 0x14, 0x73, 0x9a, 0xb9, 0xac, 0x93, 0x50, 0x32, 0xa2, 0xa6, 0xd2, 0x7a, 0x02, 0x88, - 0x59, 0xb9, 0x04, 0xb9, 0x97, 0x2e, 0x7e, 0x85, 0xae, 0xc4, 0x86, 0x44, 0x0a, 0x29, 0x18, 0x65, - 0x2f, 0x69, 0x53, 0x84, 0x76, 0x58, 0x46, 0x17, 0x96, 0x6d, 0xcd, 0xe9, 0x39, 0x7b, 0x6e, 0xc7, - 0x0d, 0x5d, 0x4c, 0x76, 0x98, 0x8a, 0xa0, 0x56, 0x89, 0x65, 0xbc, 0x9c, 0x0a, 0x81, 0x3e, 0x85, - 0xa9, 0x47, 0x38, 0x8c, 0x92, 0xbe, 0xa2, 0xf9, 0x44, 0x9a, 0x58, 0xbe, 0x74, 0xe2, 0x1d, 0xa3, - 0x9e, 0x69, 0x76, 0x1d, 0x0a, 0x8c, 0x3b, 0x2a, 0x24, 0xae, 0x24, 0x48, 0x70, 0x10, 0xc7, 0x77, - 0x0e, 0x83, 0xd4, 0xd9, 0xba, 0xcb, 0x6e, 0xa5, 0x90, 0xd8, 0xb6, 0xaa, 0xf8, 0x75, 0x51, 0x2b, - 0x93, 0x71, 0xa7, 0xe6, 0x8c, 0xd9, 0x4e, 0x91, 0x22, 0x4e, 0xa7, 0xa6, 0x30, 0x2d, 0xa1, 0xf8, - 0x2b, 0xc3, 0xc6, 0x03, 0x24, 0x13, 0x60, 0x18, 0x88, 0xde, 0xd4, 0xbe, 0xd8, 0xa7, 0xa3, 0xfb, - 0x29, 0x8c, 0xcb, 0xb4, 0x99, 0x91, 0x6c, 0x1d, 0x4b, 0x3a, 0x5a, 0x2a, 0x26, 0x2b, 0xf8, 0x48, - 0x3f, 0x61, 0x49, 0x72, 0x75, 0xfc, 0x78, 0x66, 0xc9, 0xd4, 0x89, 0xfd, 0x10, 0x26, 0x94, 0x9c, - 0x92, 0x72, 0x23, 0x27, 0xf3, 0x4c, 0x96, 0xa6, 0x94, 0xbe, 0x37, 0x96, 0xef, 0xe5, 0xd0, 0x5d, - 0xfa, 0x69, 0xa1, 0xcf, 0x6c, 0xe6, 0x22, 0x34, 0x25, 0x5b, 0x5c, 0x0c, 0x05, 0xbd, 0x4f, 0xa3, - 0x91, 0xd4, 0xfa, 0xbe, 0x8f, 0xbb, 0x0c, 0x2f, 0x4d, 0x82, 0x88, 0x21, 0x7e, 0x4a, 0x99, 0x89, - 0x82, 0xc8, 0xbc, 0x50, 0x06, 0x61, 0xb3, 0x68, 0xb6, 0xf7, 0x72, 0xe8, 0x01, 0x8c, 0x89, 0x14, - 0xd4, 0xe8, 0x92, 0xde, 0xd5, 0xf4, 0xe1, 0x3d, 0x00, 0x60, 0x93, 0x4d, 0x7b, 0xaa, 0x57, 0xa7, - 0x4e, 0xe7, 0x03, 0xf2, 0xbd, 0x6c, 0x9f, 0x12, 0xe9, 0x53, 0xf1, 0xcd, 0xa4, 0x48, 0x45, 0x6d, - 0x09, 0xd5, 0xe9, 0x4c, 0xc3, 0x27, 0x02, 0xaf, 0x96, 0x19, 0x3b, 0x12, 0x78, 0x4d, 0x09, 0xb3, - 0x53, 0xe9, 0xac, 0x43, 0xa1, 0xd2, 0xa2, 0x7c, 0x5c, 0x66, 0xe0, 0x93, 0xda, 0x46, 0xbc, 0x42, - 0xd0, 0x9a, 0x8b, 0x27, 0xf4, 0xdb, 0xc0, 0x0e, 0x0d, 0xd0, 0x32, 0x2f, 0x65, 0x82, 0x58, 0x95, - 0x19, 0x23, 0x43, 0xbb, 0x98, 0xad, 0x11, 0x7d, 0xa8, 0xf3, 0xf5, 0xc8, 0x7c, 0x44, 0x79, 0x99, - 0x92, 0x9d, 0xf0, 0x52, 0x1c, 0x5f, 0xea, 0x61, 0xc2, 0x03, 0x50, 0x82, 0x56, 0x60, 0x86, 0x87, - 0x83, 0x90, 0xd3, 0x92, 0x86, 0x9d, 0xd6, 0xfc, 0xfb, 0x30, 0xbd, 0x4a, 0x78, 0x7d, 0xbf, 0xed, - 0xb2, 0xa0, 0x54, 0x48, 0x8f, 0x32, 0x94, 0x8a, 0xb8, 0x26, 0x92, 0xea, 0x2a, 0x69, 0xfb, 0xe4, - 0x29, 0x4d, 0x66, 0x46, 0x2c, 0xcd, 0x0a, 0xb2, 0x6a, 0x86, 0x3f, 0xae, 0x27, 0xcf, 0xa7, 0x24, - 0xca, 0x43, 0x37, 0x34, 0xdd, 0x2f, 0x2d, 0xdb, 0x9d, 0x41, 0xda, 0xfb, 0x42, 0x49, 0x1d, 0x92, - 0x42, 0x33, 0x3b, 0x83, 0x5e, 0xea, 0xb8, 0x65, 0x18, 0x19, 0x63, 0xa6, 0x3b, 0x69, 0x0c, 0x1a, - 0x9c, 0x0d, 0x2f, 0xb5, 0x05, 0xaa, 0x5b, 0xeb, 0x89, 0xd8, 0xd0, 0x52, 0x76, 0xbe, 0x38, 0x45, - 0xb7, 0x4e, 0xc9, 0xe0, 0xf6, 0x98, 0x6e, 0xb3, 0x28, 0xbf, 0x08, 0x52, 0x35, 0xd5, 0x78, 0x7a, - 0x15, 0x29, 0x42, 0x99, 0xb3, 0xb1, 0x3d, 0xa2, 0xec, 0x52, 0xc9, 0x55, 0x92, 0xca, 0xf0, 0xae, - 0x98, 0xe8, 0x04, 0xca, 0xb7, 0x70, 0x26, 0x96, 0xd7, 0x4c, 0x9a, 0x47, 0xcc, 0x99, 0xd5, 0x4a, - 0x4b, 0x69, 0xd5, 0x9c, 0x62, 0x5d, 0xa4, 0xc5, 0x56, 0x46, 0xba, 0xa4, 0x1b, 0xdd, 0x12, 0x83, - 0x2d, 0xa7, 0xd6, 0xcb, 0xb9, 0x2b, 0xc4, 0xf3, 0xd0, 0x48, 0xa2, 0x29, 0x09, 0x6a, 0x32, 0x58, - 0xe2, 0xac, 0xba, 0x35, 0x06, 0xce, 0x60, 0x1a, 0x9d, 0x1d, 0x98, 0x33, 0xa6, 0x8d, 0x91, 0x62, - 0x44, 0x56, 0x52, 0x99, 0x54, 0xaa, 0x58, 0x58, 0xeb, 0xe2, 0x89, 0x72, 0xd0, 0xb7, 0x74, 0xd5, - 0xdf, 0x9c, 0x47, 0xa7, 0x74, 0x63, 0x00, 0x14, 0x9f, 0xd0, 0x2f, 0xe9, 0x67, 0x33, 0xd1, 0xc6, - 0x35, 0xc5, 0x18, 0x90, 0xd2, 0x80, 0x95, 0x05, 0x22, 0xf7, 0xc0, 0xac, 0x29, 0x73, 0x5d, 0xea, - 0x14, 0x5f, 0x4f, 0xa7, 0x19, 0x6d, 0xac, 0x86, 0x08, 0xde, 0x92, 0x3a, 0x33, 0x99, 0x19, 0x86, - 0x32, 0xb4, 0xc9, 0x92, 0xdc, 0x0f, 0x27, 0xef, 0x72, 0xba, 0x65, 0x68, 0xd6, 0x94, 0xd7, 0x2a, - 0x6e, 0xb8, 0x31, 0xa5, 0x2d, 0x92, 0xd3, 0x90, 0x99, 0x18, 0xab, 0xc1, 0x8c, 0x38, 0x3a, 0x75, - 0xd5, 0x88, 0x63, 0x24, 0x7d, 0x35, 0x1d, 0x20, 0xda, 0x11, 0x86, 0x04, 0x7d, 0x72, 0x47, 0xa4, - 0xa7, 0x0a, 0x94, 0x3b, 0x22, 0x2b, 0xbf, 0x9f, 0x2d, 0x0e, 0x5d, 0xca, 0xb4, 0x64, 0x64, 0x73, - 0xca, 0x50, 0xb9, 0x8a, 0xd1, 0xc2, 0xc5, 0xba, 0x7d, 0xda, 0x65, 0xfb, 0x12, 0x2e, 0xa7, 0x66, - 0x6e, 0x92, 0xa6, 0xfe, 0x41, 0xb9, 0x9d, 0x32, 0x7a, 0x3a, 0xa5, 0x25, 0x5d, 0x92, 0x56, 0xac, - 0x58, 0x7e, 0xa7, 0x04, 0xeb, 0x37, 0x24, 0x7f, 0x62, 0xac, 0x5f, 0x49, 0xe0, 0x74, 0x12, 0xd6, - 0x6f, 0xca, 0xf7, 0x24, 0x79, 0xaa, 0xd2, 0x2f, 0x21, 0xd2, 0xc5, 0x2b, 0x4e, 0xc3, 0x53, 0x4f, - 0xd2, 0xb5, 0x34, 0x3a, 0x2b, 0x54, 0xe5, 0x10, 0xf9, 0x9c, 0xd0, 0x65, 0x6d, 0x9a, 0xb4, 0xcf, - 0x6d, 0x49, 0x1b, 0x9c, 0xfe, 0xa5, 0xad, 0x51, 0x73, 0xb1, 0xcc, 0x1f, 0x95, 0xda, 0x8b, 0x85, - 0x24, 0x0d, 0xcd, 0x54, 0x2c, 0x67, 0x81, 0xf5, 0x66, 0x31, 0x3e, 0x39, 0x5a, 0x87, 0xd2, 0x87, - 0x84, 0xd4, 0xa9, 0x19, 0xd0, 0xa5, 0x74, 0x51, 0xf7, 0x22, 0x53, 0x1e, 0x58, 0x74, 0x45, 0xf1, - 0xc6, 0xfa, 0x92, 0xb4, 0x7b, 0x29, 0xa5, 0x19, 0x66, 0x8e, 0x6d, 0xea, 0x2f, 0x69, 0x48, 0x85, - 0x25, 0x79, 0x68, 0x66, 0xa6, 0x2c, 0x83, 0x98, 0x27, 0xb9, 0x72, 0x2a, 0xc5, 0xcc, 0xdc, 0x58, - 0xa9, 0x3d, 0xfd, 0x89, 0xc2, 0x95, 0x13, 0x09, 0xaf, 0xd0, 0xad, 0xb8, 0x8c, 0x97, 0x96, 0x13, - 0x2b, 0x83, 0xeb, 0xcf, 0x9a, 0x72, 0x65, 0x29, 0xb6, 0xdb, 0xd4, 0x44, 0x5a, 0x86, 0x59, 0x90, - 0xec, 0x2d, 0x85, 0x5a, 0x46, 0xe6, 0xac, 0xd4, 0x1e, 0xfe, 0x50, 0x61, 0x6f, 0xb1, 0x0c, 0x57, - 0xd2, 0xa8, 0x30, 0x20, 0x05, 0x56, 0x2a, 0xed, 0x4d, 0xea, 0x61, 0x9b, 0x4c, 0x4f, 0x25, 0x65, - 0x97, 0xac, 0xe4, 0x55, 0x46, 0xd3, 0xee, 0x5c, 0x72, 0x88, 0x84, 0xde, 0xa5, 0x98, 0x61, 0x76, - 0x50, 0xc7, 0x24, 0x1f, 0x36, 0xa4, 0xb5, 0x8a, 0xf1, 0xe1, 0xf4, 0xc4, 0x57, 0x19, 0x1a, 0xd3, - 0x4c, 0xdd, 0xdd, 0xef, 0x2a, 0x99, 0xaa, 0xa4, 0xbe, 0x94, 0x4c, 0x94, 0x25, 0x59, 0x8c, 0x29, - 0xb1, 0xd5, 0x56, 0xf4, 0xf2, 0x46, 0xcd, 0x39, 0x84, 0x4a, 0xe9, 0xa9, 0x96, 0x24, 0xbb, 0x31, - 0x26, 0x29, 0x52, 0x08, 0xaa, 0x09, 0x7f, 0x24, 0x41, 0x43, 0xee, 0x21, 0x49, 0xd0, 0x98, 0x21, - 0x88, 0x99, 0x60, 0x6c, 0xaf, 0x83, 0x55, 0x13, 0x8c, 0x92, 0xae, 0x27, 0x66, 0x0b, 0x41, 0x1f, - 0x53, 0x4b, 0x48, 0xb6, 0xf9, 0x64, 0x5e, 0xa7, 0xa4, 0xfa, 0xc1, 0xf0, 0xcb, 0x00, 0xda, 0xa0, - 0x4e, 0x79, 0xb0, 0x71, 0x83, 0x22, 0xe9, 0xc6, 0x0d, 0xb5, 0xa3, 0xe9, 0x76, 0xd2, 0x49, 0x35, - 0xdc, 0xbb, 0x9c, 0x2b, 0x43, 0x4e, 0x0a, 0x39, 0x57, 0xa6, 0x4c, 0x0f, 0x54, 0x07, 0xde, 0x11, - 0x9a, 0x7c, 0x44, 0xef, 0x4a, 0x66, 0xaa, 0x86, 0xd2, 0x52, 0x76, 0x7e, 0x03, 0x7e, 0x8f, 0x57, - 0x88, 0x47, 0xa4, 0x47, 0xa6, 0x4c, 0x1b, 0x4a, 0xa0, 0x7f, 0xa9, 0x0d, 0xa5, 0x86, 0xb2, 0xdf, - 0x16, 0xc6, 0x6a, 0x9d, 0x6e, 0x4a, 0xbe, 0x05, 0x95, 0x74, 0xb6, 0x80, 0x12, 0x05, 0xa7, 0x57, - 0x75, 0xd3, 0x44, 0xf0, 0x7b, 0x55, 0x40, 0x31, 0xc4, 0xb3, 0x77, 0xa5, 0xaf, 0x86, 0x31, 0xe7, - 0x53, 0xcc, 0x57, 0x23, 0x23, 0x6c, 0xd1, 0xc0, 0x9b, 0x52, 0xf4, 0x63, 0x91, 0xdb, 0x39, 0x99, - 0xdb, 0xe4, 0x46, 0xcc, 0xec, 0x6a, 0x0e, 0x74, 0x53, 0xca, 0x4a, 0x9d, 0x82, 0x9e, 0xd2, 0x2b, - 0xf6, 0xad, 0xf5, 0x95, 0x1a, 0xf7, 0x51, 0xf5, 0xfc, 0xc4, 0xb5, 0xd5, 0x33, 0x37, 0x3c, 0x60, - 0xc9, 0x7e, 0x14, 0xee, 0xc3, 0x40, 0x34, 0xc4, 0xc6, 0x03, 0x54, 0xa7, 0x92, 0xbb, 0x56, 0x6a, - 0xb8, 0xb9, 0x32, 0x10, 0x2c, 0x99, 0x09, 0xd2, 0xf4, 0x84, 0x54, 0x30, 0x20, 0x07, 0x4f, 0xef, - 0x66, 0x4a, 0x1f, 0xb2, 0xe4, 0x0b, 0xb6, 0x6d, 0xcc, 0x64, 0x4e, 0xca, 0xbe, 0x1f, 0xc1, 0x1c, - 0x9b, 0xf0, 0xd8, 0xb3, 0x38, 0xad, 0x3f, 0x4a, 0x79, 0x29, 0xa5, 0x1c, 0x6d, 0x52, 0xcf, 0x8d, - 0x78, 0xa9, 0xa2, 0xc5, 0x98, 0xdf, 0xdd, 0xa5, 0xd2, 0x63, 0x4b, 0x49, 0xc4, 0xf6, 0x37, 0x5a, - 0x4a, 0x0d, 0xb1, 0xb1, 0xcc, 0x97, 0x52, 0x2b, 0x3d, 0xdd, 0x52, 0xc6, 0x08, 0xea, 0x4b, 0xa9, - 0x77, 0x33, 0xa5, 0x0f, 0x83, 0x97, 0xd2, 0x4c, 0xe6, 0xd4, 0x4b, 0x19, 0x7b, 0x93, 0xa8, 0xf5, - 0xc7, 0xb4, 0x94, 0x71, 0x78, 0xb6, 0x94, 0xf1, 0xd2, 0x98, 0x42, 0x9a, 0xb1, 0x94, 0x71, 0xcc, - 0xcf, 0x29, 0x3d, 0xf6, 0xe8, 0xf1, 0x54, 0x8b, 0x29, 0xc2, 0xf1, 0xc4, 0x50, 0x1b, 0x0f, 0xd0, - 0x33, 0x6a, 0x0d, 0x89, 0x95, 0x9f, 0x6c, 0x41, 0x17, 0xd3, 0x88, 0xd2, 0x25, 0x5d, 0x17, 0x72, - 0x56, 0xbc, 0xbb, 0xa9, 0x7d, 0xc9, 0x5a, 0x0f, 0xb6, 0xac, 0x71, 0x52, 0xa7, 0x5d, 0xd8, 0xa7, - 0x82, 0x69, 0x26, 0xde, 0x8d, 0xc6, 0x7a, 0xa5, 0x2e, 0x6e, 0x6a, 0x0d, 0x77, 0x5a, 0x4b, 0x96, - 0x2b, 0x76, 0xa2, 0xb4, 0x07, 0xaa, 0x03, 0xa9, 0x26, 0x1e, 0xa2, 0xaa, 0x54, 0xd3, 0x5e, 0xa9, - 0x4a, 0xaa, 0x49, 0xec, 0x15, 0x7a, 0x6c, 0x77, 0x7c, 0xa2, 0x26, 0xb5, 0x93, 0x3a, 0x94, 0x3e, - 0x7f, 0xe2, 0x46, 0x53, 0x07, 0x6f, 0x2c, 0xa3, 0x75, 0xba, 0x01, 0xf5, 0xe2, 0x2c, 0x25, 0xd3, - 0x4c, 0x86, 0xee, 0x8f, 0x35, 0xe9, 0xdf, 0xaf, 0xf7, 0x29, 0xad, 0xed, 0xf4, 0x4e, 0x49, 0x0d, - 0xfc, 0x84, 0xa3, 0x4b, 0xdb, 0x1d, 0x4c, 0x0a, 0x64, 0x0a, 0xef, 0xa0, 0x99, 0x89, 0xbf, 0x38, - 0x40, 0xdf, 0x87, 0x71, 0x81, 0x3c, 0x78, 0x42, 0xe2, 0xd8, 0x74, 0x42, 0x3e, 0x85, 0x09, 0xe5, - 0xc1, 0x03, 0x4a, 0x6b, 0x29, 0x43, 0xa4, 0x9c, 0x50, 0x9e, 0x63, 0x9c, 0x1e, 0x7f, 0x05, 0xa6, - 0xb4, 0xe7, 0x1c, 0x52, 0x10, 0x32, 0x3d, 0xf2, 0xc8, 0xa2, 0xa2, 0x3d, 0xdb, 0x90, 0x54, 0x4c, - 0x8f, 0x39, 0xb2, 0x85, 0x32, 0xe5, 0x69, 0xba, 0x22, 0x94, 0x25, 0xdf, 0xc8, 0x2b, 0x42, 0x99, - 0xe9, 0x35, 0xfb, 0xf7, 0x60, 0x82, 0x6f, 0x8f, 0xcc, 0x95, 0x4d, 0xd7, 0x96, 0xe7, 0x14, 0x9f, - 0xc1, 0x7e, 0xdb, 0x0d, 0x6b, 0x5e, 0xf7, 0xb9, 0xbb, 0x3f, 0x70, 0x91, 0x93, 0x28, 0x8d, 0x65, - 0xd4, 0xa0, 0x89, 0x06, 0x44, 0xfa, 0x07, 0x1c, 0xbe, 0xf2, 0xfc, 0x17, 0x6e, 0x77, 0x7f, 0x00, - 0xc9, 0xab, 0x3a, 0xc9, 0x38, 0x1e, 0xa3, 0x5b, 0x4f, 0xa7, 0x3b, 0x10, 0x3f, 0x43, 0x5b, 0x5e, - 0xa4, 0xf7, 0xf6, 0xa7, 0xed, 0x71, 0xfa, 0xcd, 0xc1, 0xe5, 0xc8, 0xdb, 0xce, 0xc6, 0x2d, 0xcf, - 0x6f, 0x0f, 0x26, 0x56, 0xd6, 0x7d, 0xdb, 0x62, 0x68, 0x8d, 0x65, 0x42, 0xb5, 0x9e, 0x4a, 0x75, - 0x10, 0x76, 0xc6, 0xd7, 0x62, 0x81, 0x8e, 0xfd, 0x94, 0xbd, 0x4d, 0x3f, 0x19, 0x84, 0x03, 0x13, - 0x4e, 0xbf, 0xed, 0xe3, 0xe7, 0xd8, 0xa7, 0x2e, 0x93, 0x83, 0x9c, 0x05, 0x75, 0xf0, 0xc6, 0x32, - 0xa1, 0x52, 0x4f, 0x50, 0x49, 0x83, 0xce, 0x12, 0x94, 0xe8, 0xd0, 0x4e, 0xd8, 0x9b, 0x34, 0x32, - 0x1f, 0x50, 0x9b, 0xe5, 0xee, 0xfa, 0x80, 0x19, 0x11, 0x4e, 0xbc, 0x02, 0xb0, 0x71, 0x9f, 0x60, - 0xd6, 0x15, 0xcc, 0x24, 0x44, 0x6a, 0x9b, 0xdf, 0x17, 0xc6, 0xc9, 0x81, 0xcd, 0xa6, 0x7b, 0x23, - 0x8c, 0xcb, 0x24, 0x48, 0x48, 0x51, 0xeb, 0xb5, 0x14, 0x3f, 0xa5, 0x29, 0xd5, 0x65, 0x30, 0x40, - 0x15, 0x26, 0x45, 0xab, 0xc9, 0x80, 0x94, 0x7b, 0x51, 0x63, 0x96, 0xa0, 0x38, 0x09, 0x66, 0x96, - 0xd8, 0xf0, 0x5a, 0x2f, 0x54, 0xb3, 0x84, 0x92, 0x5d, 0xa6, 0xa4, 0xe7, 0x7e, 0xe1, 0x1f, 0x24, - 0x9a, 0x00, 0x46, 0x75, 0xd0, 0x50, 0xf3, 0xcb, 0xa8, 0x66, 0x09, 0x3d, 0x13, 0x8e, 0x34, 0x4b, - 0xd0, 0x06, 0x75, 0xca, 0x83, 0xcd, 0x12, 0x14, 0x49, 0x37, 0x4b, 0xa8, 0x1d, 0x4d, 0x67, 0x17, - 0x28, 0x99, 0x0a, 0x47, 0x0a, 0xbc, 0xa9, 0x59, 0x72, 0x32, 0x7c, 0x2f, 0x2e, 0x1a, 0xb2, 0x77, - 0x49, 0x75, 0x3f, 0x3d, 0xb3, 0x57, 0x49, 0x77, 0x24, 0xb8, 0x97, 0x43, 0x9b, 0x70, 0xe9, 0x11, - 0x0e, 0x39, 0x03, 0xb3, 0x71, 0x10, 0xfa, 0x6e, 0x2b, 0xcc, 0xb4, 0xd4, 0x0b, 0xf9, 0xd6, 0x80, - 0xd3, 0x78, 0x87, 0xd0, 0xab, 0x9b, 0xe9, 0x65, 0xe2, 0x65, 0x58, 0x74, 0xb8, 0xf9, 0xef, 0x34, - 0x5d, 0x4c, 0xdf, 0xe2, 0xa3, 0xec, 0xd6, 0x3b, 0x1d, 0xb5, 0x10, 0x45, 0x6f, 0xe5, 0x12, 0xfb, - 0x1d, 0x38, 0xcf, 0x90, 0x52, 0xbf, 0x91, 0x93, 0x2a, 0x0e, 0xba, 0x2f, 0x5c, 0xb4, 0x08, 0x8a, - 0x56, 0x95, 0xda, 0xaf, 0xfb, 0x30, 0xce, 0x6c, 0xf9, 0x27, 0x47, 0xf9, 0x58, 0x38, 0x72, 0x65, - 0x75, 0x2c, 0xdd, 0xb7, 0x71, 0x4a, 0xbd, 0xf0, 0x3e, 0xfd, 0x44, 0x7e, 0x8f, 0xde, 0xa7, 0x08, - 0xb3, 0x65, 0x3a, 0xfe, 0x5c, 0x2c, 0xde, 0x29, 0x9f, 0x52, 0xc6, 0x20, 0x65, 0x1a, 0xbc, 0xb4, - 0xee, 0x5f, 0x48, 0x60, 0xa3, 0x8f, 0xc5, 0xf3, 0x01, 0x89, 0x9c, 0x04, 0xca, 0x98, 0xb3, 0x69, - 0x36, 0xcd, 0x6f, 0x82, 0x2c, 0x19, 0xec, 0xc0, 0x6e, 0x9f, 0xe4, 0xde, 0x67, 0xf0, 0xd4, 0xa5, - 0x51, 0xd9, 0xa2, 0x82, 0x57, 0x22, 0x12, 0x6f, 0x3a, 0xa1, 0xa5, 0xf4, 0xe0, 0xbd, 0x74, 0x31, - 0x1e, 0x53, 0xc5, 0x2a, 0x99, 0xd2, 0x30, 0x6d, 0x78, 0x19, 0xc1, 0x80, 0x23, 0x4d, 0x32, 0x49, - 0x2e, 0x03, 0x2d, 0x4b, 0x31, 0x65, 0x0b, 0x76, 0x36, 0xe4, 0xd6, 0x85, 0x03, 0xd2, 0xc9, 0x07, - 0x9b, 0x21, 0x04, 0x19, 0x6e, 0x9a, 0x06, 0xae, 0x45, 0x1a, 0xb9, 0x1f, 0x53, 0xf9, 0xcf, 0x9c, - 0xc7, 0x2c, 0x95, 0x98, 0xf2, 0x8c, 0x6c, 0x40, 0x06, 0xb4, 0x17, 0xf4, 0x5d, 0x86, 0x39, 0x56, - 0xf1, 0xcd, 0x01, 0x54, 0xc4, 0x4c, 0xbc, 0x35, 0x10, 0x4e, 0xde, 0x5b, 0x2c, 0xb0, 0x2f, 0xac, - 0xb9, 0xbd, 0x01, 0xb1, 0x97, 0x0d, 0x57, 0x49, 0x29, 0x49, 0xc2, 0x04, 0x41, 0xdd, 0xbb, 0x2b, - 0x73, 0x0c, 0x69, 0xd3, 0xff, 0x39, 0x94, 0xa3, 0x1b, 0xd9, 0xd3, 0x2d, 0x42, 0xba, 0x44, 0x8f, - 0x92, 0xa9, 0xd3, 0x50, 0x56, 0x14, 0xdb, 0xd2, 0xb5, 0xb4, 0x19, 0x0e, 0x94, 0xab, 0x7e, 0xee, - 0x4b, 0x12, 0x8b, 0xda, 0x9d, 0x16, 0xff, 0x3b, 0xc3, 0x76, 0xc4, 0x1f, 0xaa, 0x9c, 0x09, 0xa1, - 0xe4, 0x6a, 0x9f, 0x9e, 0x90, 0xbc, 0x30, 0x8d, 0x11, 0xb2, 0x32, 0x96, 0xf7, 0x34, 0xfe, 0x20, - 0xf1, 0xa5, 0x38, 0xed, 0x82, 0x3a, 0xd1, 0xe3, 0x8c, 0x64, 0x7e, 0x37, 0x29, 0xcb, 0xa5, 0xe6, - 0x9a, 0x93, 0xab, 0x9b, 0x91, 0x1c, 0xae, 0x46, 0x8e, 0x29, 0x6b, 0x42, 0x4b, 0x2e, 0x55, 0xb3, - 0x37, 0x22, 0xab, 0x83, 0x21, 0xeb, 0x54, 0x09, 0x44, 0xa5, 0xbd, 0x81, 0xea, 0x50, 0x62, 0x5b, - 0xc4, 0x14, 0x45, 0x43, 0x7a, 0xd4, 0x9b, 0x2a, 0x33, 0xb4, 0x8b, 0x3a, 0x94, 0xd8, 0x76, 0x39, - 0x4b, 0xa2, 0x4d, 0x9a, 0x48, 0xd4, 0x48, 0xf1, 0x86, 0xf2, 0x2c, 0x31, 0x3d, 0x36, 0x49, 0x29, - 0xbb, 0x61, 0xf4, 0x23, 0x98, 0x33, 0x06, 0x27, 0x91, 0x77, 0xda, 0x59, 0xa1, 0x4b, 0x06, 0x11, - 0x7f, 0x01, 0xc5, 0xb4, 0x4c, 0x50, 0x91, 0x87, 0x7f, 0x76, 0x7a, 0x2e, 0xc9, 0x53, 0x07, 0xa6, - 0x94, 0xda, 0x84, 0x59, 0x53, 0x76, 0x25, 0x79, 0x38, 0x32, 0x52, 0x2f, 0x19, 0x9f, 0x11, 0x6c, - 0xc3, 0x9c, 0x31, 0xc3, 0x91, 0x9c, 0x99, 0xac, 0xfc, 0x47, 0x46, 0x8a, 0x5f, 0xc0, 0x7c, 0x4a, - 0x3a, 0x9f, 0xe8, 0xe2, 0x2d, 0x33, 0xdd, 0x4f, 0x86, 0x03, 0x40, 0x29, 0x3d, 0x53, 0x8c, 0xf4, - 0xfb, 0x18, 0x98, 0x4c, 0xa6, 0x64, 0x4c, 0x9f, 0x85, 0x76, 0xe8, 0x26, 0x34, 0xa5, 0x8e, 0x51, - 0x37, 0x61, 0x46, 0x6a, 0x99, 0x94, 0xe7, 0x1f, 0xf3, 0x29, 0xd9, 0x62, 0x32, 0xa8, 0x9e, 0xa0, - 0xb7, 0x9b, 0x82, 0xff, 0xeb, 0xe9, 0x43, 0x62, 0xbe, 0x84, 0xc6, 0xdc, 0x22, 0xc6, 0x7e, 0x2a, - 0xcf, 0x8d, 0x3b, 0x9d, 0x0c, 0x31, 0x08, 0xa9, 0xef, 0x8d, 0x09, 0x64, 0xe3, 0x3e, 0x51, 0x22, - 0x54, 0xdc, 0x2c, 0x8e, 0x9a, 0x40, 0xa6, 0x82, 0xe7, 0x47, 0x30, 0x59, 0x57, 0x1b, 0x37, 0x34, - 0x92, 0xba, 0x29, 0xa4, 0x97, 0xfd, 0xe0, 0xbe, 0x0f, 0xbc, 0x15, 0xab, 0x74, 0x3a, 0x27, 0x1a, - 0x45, 0xaa, 0x4d, 0x56, 0x0b, 0xaf, 0x2e, 0x39, 0xb5, 0x29, 0x6b, 0x80, 0xb4, 0xc9, 0x9a, 0x23, - 0xb2, 0xaf, 0xd2, 0x29, 0x8d, 0x82, 0xd3, 0x66, 0xe8, 0xe0, 0x72, 0x13, 0x19, 0x62, 0xe0, 0x3e, - 0x51, 0x1f, 0x82, 0xb3, 0x90, 0xb6, 0x19, 0x46, 0xc4, 0xf8, 0x03, 0xf0, 0x58, 0x0c, 0xdc, 0x06, - 0x14, 0x45, 0x70, 0x49, 0x16, 0xde, 0x31, 0x0a, 0x67, 0x17, 0xb9, 0x46, 0xa5, 0x47, 0x9f, 0xcc, - 0x98, 0xb7, 0x42, 0x3c, 0x70, 0x93, 0xb4, 0x1c, 0xa5, 0x44, 0x74, 0xca, 0xd8, 0x0d, 0x10, 0x85, - 0x67, 0x92, 0xf6, 0x99, 0x44, 0xc4, 0xa6, 0xd2, 0x65, 0x43, 0x8d, 0x94, 0xac, 0x26, 0xd5, 0x60, - 0x4e, 0xd2, 0x73, 0xc4, 0x10, 0xe1, 0xa9, 0xb4, 0x60, 0xac, 0xe3, 0x84, 0x42, 0x58, 0xc8, 0x48, - 0xa4, 0x2a, 0xa5, 0xd5, 0xc1, 0x09, 0x5f, 0x65, 0x60, 0x8a, 0x93, 0xe4, 0x65, 0xc5, 0x32, 0x58, - 0x6c, 0x12, 0x4a, 0x0d, 0x4c, 0x91, 0x99, 0xa3, 0xb4, 0x34, 0x28, 0x87, 0x2b, 0x7a, 0x06, 0x8b, - 0x31, 0x57, 0x64, 0xbd, 0xa5, 0x41, 0x04, 0x52, 0x57, 0xf0, 0x19, 0x2c, 0xf2, 0xb7, 0xd1, 0x67, - 0x4c, 0x78, 0x0f, 0x16, 0xb3, 0xb2, 0xb3, 0xa2, 0xdb, 0x66, 0x77, 0x63, 0xe3, 0xf4, 0xa4, 0x8b, - 0xae, 0x57, 0x93, 0x6e, 0xc7, 0xb1, 0x75, 0x3f, 0x2d, 0x5b, 0x79, 0x0a, 0xd3, 0x7a, 0x66, 0x56, - 0xa4, 0xb2, 0x8e, 0x44, 0x9e, 0xd8, 0xd2, 0x95, 0x94, 0x5a, 0xbe, 0x3f, 0x3e, 0xa5, 0x8c, 0x5e, - 0x56, 0xa8, 0xf1, 0x12, 0xe2, 0x99, 0x4f, 0x4b, 0x86, 0x24, 0x32, 0xe8, 0x7b, 0x30, 0x13, 0xbd, - 0x6f, 0x63, 0x24, 0x0c, 0x60, 0x19, 0xf6, 0xa2, 0x99, 0xe8, 0xa5, 0xdb, 0xe9, 0xd1, 0xd7, 0x04, - 0xb7, 0x8f, 0xd0, 0xaf, 0x24, 0x3c, 0xb0, 0xb5, 0x31, 0x9c, 0x84, 0xe9, 0x2b, 0x73, 0x7b, 0xda, - 0xd5, 0x69, 0xd1, 0xe3, 0x66, 0x8e, 0x52, 0xa6, 0x1e, 0xb7, 0xcc, 0x48, 0x6a, 0x52, 0xc2, 0x4c, - 0xa1, 0xd3, 0x81, 0x6b, 0x03, 0xe3, 0xaa, 0xa1, 0xbb, 0x5a, 0x64, 0x81, 0xc1, 0x11, 0xd8, 0xb2, - 0x9e, 0x29, 0x98, 0xc2, 0x93, 0x49, 0x1e, 0x9f, 0x11, 0x29, 0x4d, 0x3e, 0x53, 0xc8, 0x8c, 0x6f, - 0xf6, 0x05, 0x8d, 0x24, 0xcd, 0x3f, 0x32, 0x34, 0x56, 0x06, 0xee, 0x3a, 0xdd, 0x16, 0x1e, 0x70, - 0x5d, 0x71, 0x4d, 0xbf, 0xa4, 0x4b, 0x20, 0x52, 0x39, 0x7f, 0x89, 0x6b, 0x27, 0x69, 0xc4, 0x07, - 0x13, 0x49, 0x9b, 0x97, 0xea, 0xca, 0x2f, 0xfe, 0x7c, 0x29, 0xf7, 0x8b, 0x5f, 0x2e, 0xe5, 0xfe, - 0xd3, 0x2f, 0x97, 0x72, 0xff, 0xe3, 0x97, 0x4b, 0xb9, 0x1f, 0x2e, 0x9f, 0x2c, 0xf8, 0x6b, 0xab, - 0xe3, 0xe2, 0x6e, 0x78, 0x97, 0x91, 0x3b, 0x4f, 0xff, 0x7b, 0xf0, 0xff, 0x02, 0x00, 0x00, 0xff, - 0xff, 0xf9, 0x52, 0x49, 0x89, 0xaf, 0xd4, 0x00, 0x00, + // 13543 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xc4, 0xbd, 0x5d, 0x6c, 0x1c, 0x49, + 0x92, 0x18, 0xac, 0x6e, 0x92, 0x22, 0x19, 0xfc, 0x6b, 0xa5, 0x48, 0xb1, 0xd5, 0xa4, 0xd8, 0x52, + 0x69, 0xa5, 0xd5, 0x68, 0x77, 0xf4, 0x43, 0xcd, 0xff, 0xcc, 0xce, 0x6c, 0x77, 0x93, 0x12, 0x29, + 0x51, 0x24, 0xa7, 0x9a, 0x6c, 0xcd, 0xee, 0xcc, 0x6e, 0x6f, 0xb1, 0x3b, 0x45, 0xd6, 0xa7, 0x66, + 0x57, 0x6f, 0x55, 0xb5, 0x34, 0xba, 0x0f, 0xdf, 0xcf, 0xf9, 0x7c, 0x07, 0xd8, 0x86, 0xed, 0x3b, + 0xf8, 0xce, 0xf0, 0xc1, 0x0f, 0x67, 0xc0, 0x7e, 0xb1, 0x01, 0x03, 0x86, 0x81, 0xc3, 0xbd, 0xf8, + 0xe5, 0x6c, 0x03, 0x5e, 0x1b, 0x38, 0xc3, 0x80, 0x7d, 0x30, 0xe0, 0x07, 0xda, 0xb7, 0x8f, 0x04, + 0xfc, 0x60, 0x18, 0xf6, 0xc3, 0x02, 0x06, 0x8c, 0xfc, 0xad, 0xcc, 0xaa, 0xac, 0x6a, 0x52, 0xc3, + 0x1d, 0xbf, 0x48, 0xec, 0xcc, 0x88, 0xc8, 0xff, 0xa8, 0x88, 0xc8, 0xc8, 0x08, 0xb8, 0x13, 0xe2, + 0x0e, 0xee, 0x79, 0x7e, 0x78, 0xb7, 0x83, 0xf7, 0x9d, 0xd6, 0xeb, 0xbb, 0xad, 0x8e, 0x8b, 0xbb, + 0xe1, 0xdd, 0x9e, 0xef, 0x85, 0xde, 0x5d, 0xa7, 0x1f, 0x1e, 0x04, 0xd8, 0x7f, 0xe9, 0xb6, 0xf0, + 0x1d, 0x5a, 0x82, 0x46, 0xe8, 0x7f, 0xa5, 0xd9, 0x7d, 0x6f, 0xdf, 0x63, 0x30, 0xe4, 0x2f, 0x56, + 0x59, 0x5a, 0xd8, 0xf7, 0xbc, 0xfd, 0x0e, 0x66, 0xc8, 0x7b, 0xfd, 0xe7, 0x77, 0xf1, 0x61, 0x2f, + 0x7c, 0xcd, 0x2b, 0xcb, 0xf1, 0xca, 0xd0, 0x3d, 0xc4, 0x41, 0xe8, 0x1c, 0xf6, 0x38, 0xc0, 0x5b, + 0xb2, 0x2b, 0x4e, 0x18, 0x92, 0x9a, 0xd0, 0xf5, 0xba, 0x77, 0x5f, 0xde, 0x57, 0x7f, 0x72, 0xd0, + 0x5b, 0x99, 0xbd, 0x6e, 0x61, 0x3f, 0x0c, 0x12, 0x44, 0x39, 0x64, 0xf8, 0xba, 0x87, 0x83, 0xbb, + 0xf8, 0x25, 0xee, 0x86, 0xe2, 0x3f, 0x0e, 0x7a, 0xcd, 0x0c, 0x4a, 0xff, 0xe5, 0x20, 0x6f, 0x9b, + 0x41, 0x5e, 0xe1, 0x3d, 0x32, 0x53, 0x5d, 0xf9, 0xc7, 0x00, 0x70, 0xdf, 0xe9, 0xf5, 0xb0, 0x1f, + 0xfd, 0x91, 0xe8, 0x6b, 0x3f, 0x70, 0xf6, 0x31, 0xef, 0xe3, 0xcb, 0xfb, 0xea, 0x4f, 0x06, 0x6a, + 0xfd, 0xce, 0x12, 0x8c, 0xac, 0x92, 0x02, 0xf4, 0x01, 0x0c, 0xef, 0xbc, 0xee, 0xe1, 0x62, 0xee, + 0x6a, 0xee, 0xd6, 0xf4, 0x72, 0x81, 0xd5, 0xdf, 0xd9, 0xea, 0x61, 0x9f, 0x4e, 0x58, 0x15, 0x1d, + 0x1f, 0x95, 0xa7, 0x49, 0xbb, 0xdf, 0xf7, 0x0e, 0xdd, 0x90, 0x2e, 0x88, 0x4d, 0x31, 0xd0, 0x33, + 0x98, 0xb6, 0x71, 0xe0, 0xf5, 0xfd, 0x16, 0x5e, 0xc3, 0x4e, 0x1b, 0xfb, 0xc5, 0xfc, 0xd5, 0xdc, + 0xad, 0x89, 0xe5, 0xb9, 0x3b, 0x6c, 0xc8, 0x7a, 0x65, 0xf5, 0xd2, 0xf1, 0x51, 0x19, 0xf9, 0xbc, + 0x2c, 0x22, 0xb6, 0x76, 0xce, 0x8e, 0x91, 0x41, 0x5f, 0xc1, 0x54, 0x0d, 0xfb, 0x61, 0xa5, 0x1f, + 0x1e, 0x78, 0xbe, 0x1b, 0xbe, 0x2e, 0x0e, 0x51, 0xba, 0x97, 0x38, 0x5d, 0xad, 0xae, 0xb1, 0x5c, + 0x5d, 0x3c, 0x3e, 0x2a, 0x17, 0xc9, 0x9a, 0x35, 0x1d, 0x51, 0xaa, 0x91, 0xd7, 0x89, 0xa1, 0x2f, + 0x60, 0xb2, 0x4e, 0x36, 0x43, 0x6b, 0xc7, 0x7b, 0x81, 0xbb, 0x41, 0x71, 0x58, 0xeb, 0xb4, 0x5a, + 0xd5, 0x58, 0xae, 0x2e, 0x1c, 0x1f, 0x95, 0xe7, 0xe9, 0xde, 0x69, 0x35, 0x43, 0x5a, 0xa8, 0x91, + 0xd6, 0x28, 0xa1, 0x9f, 0xc1, 0xf4, 0xb6, 0xef, 0xbd, 0x74, 0x03, 0xd7, 0xeb, 0xd2, 0xa2, 0xe2, + 0x08, 0xa5, 0x3d, 0xcf, 0x69, 0xeb, 0x95, 0x8d, 0xe5, 0xea, 0x95, 0xe3, 0xa3, 0xf2, 0xe5, 0x9e, + 0x28, 0x65, 0x0d, 0xe8, 0x33, 0xa3, 0xa3, 0xa0, 0x1d, 0x98, 0xa8, 0x75, 0xfa, 0x41, 0x88, 0xfd, + 0x4d, 0xe7, 0x10, 0x17, 0xcf, 0x53, 0xf2, 0xb3, 0x62, 0x5e, 0xa2, 0x9a, 0xc6, 0x72, 0xb5, 0x74, + 0x7c, 0x54, 0xbe, 0xd4, 0x62, 0x45, 0xcd, 0xae, 0x73, 0xa8, 0x4f, 0xb9, 0x4a, 0x06, 0xbd, 0x0f, + 0xc3, 0xbb, 0x01, 0xf6, 0x8b, 0x63, 0x94, 0xdc, 0x14, 0x27, 0x47, 0x8a, 0x1a, 0xcb, 0x6c, 0xfd, + 0xfb, 0x01, 0xf6, 0x35, 0x7c, 0x8a, 0x40, 0x10, 0x6d, 0xaf, 0x83, 0x8b, 0xe3, 0x1a, 0x22, 0x29, + 0x6a, 0xbc, 0xc7, 0x10, 0x7d, 0xaf, 0xa3, 0x37, 0x4c, 0x11, 0xd0, 0x3a, 0x8c, 0x93, 0x96, 0x83, + 0x9e, 0xd3, 0xc2, 0x45, 0xa0, 0xd8, 0x05, 0x8e, 0x2d, 0xcb, 0xab, 0xf3, 0xc7, 0x47, 0xe5, 0x8b, + 0x5d, 0xf1, 0x53, 0xa3, 0x12, 0x61, 0xa3, 0xcf, 0xe0, 0x7c, 0x1d, 0xfb, 0x2f, 0xb1, 0x5f, 0x9c, + 0xa0, 0x74, 0x66, 0xc4, 0x42, 0xd2, 0xc2, 0xc6, 0x72, 0x75, 0xf6, 0xf8, 0xa8, 0x5c, 0x08, 0xe8, + 0x2f, 0x8d, 0x06, 0x47, 0x23, 0xbb, 0xcd, 0xc6, 0x2f, 0xb1, 0x1f, 0xe0, 0x9d, 0x7e, 0xb7, 0x8b, + 0x3b, 0xc5, 0x49, 0x6d, 0xb7, 0x69, 0x75, 0x62, 0xb7, 0xf9, 0xac, 0xb0, 0x19, 0xd2, 0x52, 0x7d, + 0xb7, 0x69, 0x08, 0xe8, 0x00, 0x0a, 0xec, 0xaf, 0x9a, 0xd7, 0xed, 0xe2, 0x16, 0x39, 0x52, 0xc5, + 0x29, 0xda, 0xc0, 0x65, 0xde, 0x40, 0xbc, 0xba, 0xb1, 0x5c, 0x2d, 0x1f, 0x1f, 0x95, 0x17, 0x18, + 0xed, 0x66, 0x4b, 0x56, 0x68, 0xcd, 0x24, 0xa8, 0x92, 0x71, 0x54, 0x5a, 0x2d, 0x1c, 0x04, 0x36, + 0xfe, 0x79, 0x1f, 0x07, 0x61, 0x71, 0x5a, 0x1b, 0x87, 0x56, 0xd7, 0x78, 0xc0, 0xc6, 0xe1, 0xd0, + 0xc2, 0xa6, 0xcf, 0x4a, 0xf5, 0x71, 0x68, 0x08, 0x68, 0x1b, 0xa0, 0xd2, 0xeb, 0xd5, 0x71, 0x40, + 0x36, 0x63, 0x71, 0x86, 0x92, 0xbe, 0xc8, 0x49, 0x3f, 0xc3, 0x7b, 0xbc, 0xa2, 0xb1, 0x5c, 0xbd, + 0x7c, 0x7c, 0x54, 0x9e, 0x73, 0x7a, 0xbd, 0x66, 0xc0, 0x8a, 0x34, 0xa2, 0x0a, 0x0d, 0x36, 0xef, + 0x87, 0x5e, 0x88, 0xf9, 0x56, 0x2c, 0x16, 0x62, 0xf3, 0xae, 0xd4, 0x89, 0xfe, 0xfa, 0xb4, 0xb0, + 0xc9, 0xb7, 0x75, 0x7c, 0xde, 0x15, 0x04, 0x72, 0x16, 0x57, 0x9c, 0xd0, 0xd9, 0x73, 0x02, 0xcc, + 0xb7, 0xc7, 0x05, 0xed, 0x2c, 0xea, 0x95, 0x8d, 0x07, 0xec, 0x2c, 0xb6, 0x79, 0x69, 0xd3, 0xb0, + 0x5f, 0x62, 0xf4, 0xc8, 0x8c, 0x44, 0x03, 0x2f, 0xa2, 0x01, 0x33, 0xf2, 0x0a, 0xef, 0x99, 0x67, + 0x24, 0x02, 0x45, 0x6b, 0x30, 0xf6, 0x0c, 0xef, 0x31, 0xce, 0x71, 0x91, 0xd2, 0xbb, 0x10, 0xd1, + 0x63, 0x3c, 0xe3, 0x01, 0x3b, 0x15, 0x84, 0x5a, 0x92, 0x5b, 0x48, 0x6c, 0xf4, 0xdb, 0x39, 0x98, + 0x17, 0x27, 0x1c, 0x87, 0xaf, 0x3c, 0xff, 0x85, 0xdb, 0xdd, 0xaf, 0x79, 0xdd, 0xe7, 0xee, 0x7e, + 0x71, 0x96, 0x52, 0xbe, 0x1a, 0x63, 0x1a, 0x31, 0xa8, 0xc6, 0x72, 0xf5, 0xbb, 0xc7, 0x47, 0xe5, + 0xeb, 0x92, 0x81, 0xc8, 0x7a, 0xb2, 0x21, 0x9f, 0xbb, 0xfb, 0x5a, 0xc3, 0x69, 0x6d, 0xa1, 0xdf, + 0xcc, 0xc1, 0x25, 0x3e, 0x3a, 0x1b, 0xb7, 0x3c, 0xbf, 0x1d, 0x75, 0x63, 0x8e, 0x76, 0xa3, 0x2c, + 0x4f, 0xab, 0x09, 0xa8, 0xb1, 0x5c, 0xbd, 0x79, 0x7c, 0x54, 0xb6, 0xf8, 0xc4, 0x35, 0x7d, 0x51, + 0x6d, 0xea, 0x44, 0x4a, 0x43, 0x64, 0x27, 0x10, 0xe6, 0xbf, 0xed, 0xe3, 0xe7, 0xd8, 0xc7, 0xdd, + 0x16, 0x2e, 0x5e, 0xd2, 0x76, 0x82, 0x5e, 0x29, 0xb8, 0x32, 0xf9, 0x94, 0x34, 0x7b, 0xb2, 0x58, + 0xdf, 0x09, 0x3a, 0x0a, 0xfa, 0x39, 0x20, 0x3e, 0x01, 0x95, 0x7e, 0xdb, 0x0d, 0xf9, 0x00, 0xe7, + 0x69, 0x2b, 0x0b, 0xfa, 0x3c, 0x2b, 0x00, 0x8d, 0xe5, 0xaa, 0x75, 0x7c, 0x54, 0x5e, 0x12, 0x53, + 0xec, 0x90, 0x2a, 0xd3, 0xc0, 0x0c, 0xc4, 0x09, 0xe7, 0xdd, 0xf0, 0x5a, 0x2f, 0x8a, 0x45, 0x8d, + 0xf3, 0x92, 0x22, 0xc1, 0xb2, 0x3b, 0x5e, 0xeb, 0x85, 0xce, 0x79, 0x49, 0x2d, 0x0a, 0xe1, 0x22, + 0x5f, 0x25, 0x1b, 0x07, 0xa1, 0xef, 0x52, 0xde, 0x11, 0x14, 0x2f, 0x53, 0x3a, 0x8b, 0x82, 0x07, + 0x27, 0x21, 0x1a, 0xef, 0xb0, 0xde, 0xf2, 0x8d, 0xd0, 0xf4, 0x95, 0x3a, 0xad, 0x19, 0x13, 0x79, + 0xf4, 0xff, 0xc0, 0xdc, 0x33, 0xb7, 0xdb, 0xf6, 0x5e, 0x05, 0x2b, 0x38, 0x78, 0x11, 0x7a, 0xbd, + 0x3a, 0x13, 0x0a, 0x8b, 0x25, 0xda, 0xee, 0x92, 0xd8, 0xe6, 0x26, 0x98, 0xc6, 0x83, 0xea, 0x8d, + 0xe3, 0xa3, 0xf2, 0xb5, 0x57, 0xac, 0xb2, 0xd9, 0x66, 0xb5, 0x4d, 0x2e, 0x57, 0x6a, 0x8d, 0x9b, + 0x5b, 0x21, 0x5b, 0x40, 0xaf, 0x28, 0x2e, 0x68, 0x5b, 0x40, 0xaf, 0x14, 0xcc, 0x20, 0xd6, 0xa0, + 0xbe, 0x05, 0x74, 0x14, 0xf4, 0x08, 0xc6, 0x04, 0x7b, 0x28, 0x2e, 0x6a, 0x47, 0x57, 0x14, 0x37, + 0x1e, 0x30, 0x09, 0x48, 0xb0, 0x18, 0xfd, 0xe4, 0x0a, 0x28, 0xb4, 0x01, 0xe3, 0x94, 0x47, 0x52, + 0x96, 0x75, 0x85, 0x52, 0x42, 0x62, 0xa3, 0x8a, 0xf2, 0xc6, 0x83, 0x6a, 0xf1, 0xf8, 0xa8, 0x3c, + 0xcb, 0xb8, 0x6c, 0x82, 0x51, 0x45, 0x04, 0xd0, 0x03, 0x18, 0xaa, 0xf4, 0x7a, 0xc5, 0x25, 0x4a, + 0x67, 0x32, 0xa2, 0xd3, 0x78, 0x50, 0xbd, 0x70, 0x7c, 0x54, 0x9e, 0x72, 0x7a, 0xfa, 0xb0, 0x08, + 0x34, 0xda, 0x83, 0x42, 0xbd, 0xeb, 0xbd, 0x7a, 0xde, 0x71, 0x5e, 0x60, 0xc1, 0xde, 0xca, 0xe9, + 0xec, 0x8d, 0x7e, 0xac, 0x02, 0x81, 0x60, 0x64, 0x72, 0x09, 0x7a, 0xe4, 0xb3, 0xf8, 0xa4, 0xbf, + 0x87, 0xfd, 0x2e, 0x0e, 0x71, 0xc0, 0x47, 0x7b, 0x55, 0xfb, 0x2c, 0xc6, 0xab, 0x1b, 0x0f, 0x58, + 0x4b, 0x2f, 0x64, 0xb9, 0x69, 0xec, 0x09, 0xaa, 0xa8, 0x03, 0x17, 0xa2, 0x32, 0xf1, 0xa9, 0xb9, + 0x46, 0x9b, 0x2a, 0x25, 0x9a, 0x8a, 0x3e, 0x37, 0x57, 0x8f, 0x8f, 0xca, 0x8b, 0x4a, 0x5b, 0xa6, + 0x4f, 0x4e, 0x92, 0x30, 0x7a, 0x02, 0xe3, 0xeb, 0xdd, 0x20, 0x74, 0x3a, 0x1d, 0xec, 0x17, 0x2d, + 0x6d, 0xf9, 0x64, 0x79, 0xe3, 0x3e, 0x63, 0xe2, 0xae, 0x28, 0xd0, 0x57, 0x4f, 0xc2, 0xa1, 0x36, + 0xcc, 0xa8, 0xdf, 0x1c, 0x72, 0x5e, 0xae, 0x53, 0x92, 0x45, 0xc3, 0x47, 0x8c, 0x9c, 0x94, 0xfb, + 0xd5, 0xa5, 0xe3, 0xa3, 0x72, 0x49, 0xfb, 0x8a, 0xc5, 0x8f, 0x48, 0x9c, 0x24, 0xfa, 0x4b, 0x84, + 0x47, 0x57, 0x9e, 0x6e, 0xac, 0xb7, 0xb7, 0x79, 0x11, 0x15, 0x3a, 0x89, 0x3c, 0xff, 0x1d, 0x9d, + 0x47, 0x1b, 0x81, 0x1a, 0xf7, 0xd9, 0x97, 0x22, 0x70, 0x0e, 0x3b, 0x4d, 0xb7, 0x2d, 0xcf, 0x65, + 0xb3, 0xc7, 0x01, 0x62, 0x4c, 0xda, 0x48, 0x04, 0xfd, 0x04, 0xa6, 0x65, 0x0d, 0xdb, 0x71, 0x37, + 0xd2, 0x77, 0x1c, 0x1d, 0xa4, 0xd2, 0x5e, 0x72, 0xc3, 0xc5, 0x88, 0x91, 0x53, 0x45, 0x04, 0xd6, + 0x47, 0xbe, 0xd7, 0xef, 0x15, 0x6f, 0x6a, 0xcb, 0x22, 0xcb, 0x1b, 0xf7, 0xd9, 0xa9, 0x22, 0xb2, + 0x6e, 0x73, 0x9f, 0x94, 0xe8, 0xeb, 0x22, 0x01, 0xc9, 0x77, 0x7a, 0x77, 0x9d, 0x73, 0xf9, 0xef, + 0x6a, 0x87, 0x5d, 0x14, 0x8b, 0x25, 0xee, 0xbb, 0x26, 0x86, 0x2e, 0xb1, 0x91, 0x03, 0xd3, 0x5b, + 0x2f, 0x42, 0x67, 0xfd, 0x90, 0x68, 0x6d, 0x76, 0xbf, 0x83, 0x8b, 0xb7, 0x34, 0xc6, 0xa4, 0x57, + 0x8a, 0xf5, 0xf5, 0x5e, 0x84, 0x4e, 0xd3, 0xa5, 0xc5, 0x4d, 0xbf, 0x1f, 0x13, 0xb0, 0x63, 0x04, + 0x09, 0xef, 0x23, 0x25, 0x95, 0x20, 0x70, 0xf7, 0xbb, 0x87, 0xb8, 0x1b, 0x16, 0xdf, 0x4a, 0x34, + 0x11, 0x55, 0x36, 0xee, 0x33, 0xde, 0x47, 0x9b, 0x70, 0x64, 0x71, 0xb2, 0x85, 0x08, 0x05, 0xd5, + 0x61, 0x62, 0xbd, 0x1b, 0xe2, 0x7d, 0xa6, 0x30, 0x16, 0x6f, 0x6b, 0x4a, 0x89, 0x52, 0xd3, 0xb8, + 0xcf, 0x44, 0x21, 0x37, 0x2a, 0xd2, 0x75, 0x12, 0x05, 0x96, 0x68, 0x3a, 0xcf, 0x9c, 0xb0, 0x75, + 0x40, 0x14, 0xac, 0x7e, 0x50, 0xfc, 0x9e, 0x46, 0x54, 0xa9, 0x69, 0xdc, 0x67, 0x9a, 0xce, 0x2b, + 0x52, 0xd4, 0x0c, 0x68, 0x99, 0x4e, 0x55, 0x01, 0xae, 0x02, 0x8c, 0x09, 0x5d, 0xf3, 0xf1, 0xf0, + 0xd8, 0x68, 0x61, 0xcc, 0xfa, 0xa3, 0x1c, 0x8c, 0x50, 0x08, 0xf4, 0x19, 0x8c, 0x3c, 0x71, 0xbb, + 0xed, 0xa0, 0x98, 0xbb, 0x3a, 0xa4, 0xe8, 0x23, 0xb4, 0x92, 0x54, 0x54, 0xe7, 0x7f, 0x71, 0x54, + 0x3e, 0x77, 0x7c, 0x54, 0x9e, 0x79, 0x41, 0xc0, 0x14, 0x75, 0x98, 0xe1, 0xa1, 0x5d, 0xb8, 0x58, + 0xe9, 0x74, 0xbc, 0x57, 0xdb, 0x8e, 0x1f, 0xba, 0x4e, 0xa7, 0xde, 0xa7, 0x02, 0x34, 0x55, 0x8a, + 0xc7, 0xaa, 0xd7, 0x8f, 0x8f, 0xca, 0x65, 0x87, 0x54, 0x37, 0x7b, 0xac, 0xbe, 0x19, 0x30, 0x00, + 0x85, 0x90, 0x09, 0xdf, 0xfa, 0xe3, 0xf3, 0x50, 0x58, 0xf3, 0x82, 0x90, 0x68, 0xb1, 0x52, 0x1c, + 0xbf, 0x0e, 0xe7, 0x49, 0xd9, 0xfa, 0x0a, 0xd5, 0xdb, 0xc7, 0xab, 0x13, 0xc7, 0x47, 0xe5, 0xd1, + 0x03, 0x2f, 0x08, 0x9b, 0x6e, 0xdb, 0xe6, 0x55, 0xe8, 0x2d, 0x18, 0xdb, 0xf4, 0xda, 0x98, 0xaa, + 0x8a, 0x79, 0x0a, 0x36, 0x75, 0x7c, 0x54, 0x1e, 0xef, 0x7a, 0x6d, 0x4c, 0x35, 0x42, 0x5b, 0x56, + 0xa3, 0x06, 0xd7, 0xe4, 0x86, 0x28, 0x58, 0xf5, 0xf8, 0xa8, 0x3c, 0x4c, 0x54, 0xb7, 0x5f, 0x1d, + 0x95, 0xdf, 0xdb, 0x77, 0xc3, 0x83, 0xfe, 0xde, 0x9d, 0x96, 0x77, 0x78, 0x77, 0xdf, 0x77, 0x5e, + 0xba, 0xcc, 0x90, 0xe2, 0x74, 0xee, 0x46, 0xe6, 0x96, 0x9e, 0xcb, 0xad, 0x1c, 0xf5, 0xd7, 0x41, + 0x88, 0x0f, 0x09, 0x25, 0xae, 0xe8, 0x3d, 0x83, 0xd9, 0x4a, 0xbb, 0xed, 0x32, 0x8c, 0x6d, 0xdf, + 0xed, 0xb6, 0xdc, 0x9e, 0xd3, 0x21, 0x4a, 0xf7, 0xd0, 0xad, 0x71, 0x3e, 0x29, 0xb2, 0xbe, 0xd9, + 0x93, 0x00, 0xca, 0xa4, 0x18, 0x09, 0xa0, 0x07, 0x30, 0xb6, 0xb2, 0x59, 0xa7, 0x6a, 0x60, 0x71, + 0x84, 0x12, 0xa3, 0x07, 0xae, 0xdd, 0x0d, 0xe8, 0xd0, 0x54, 0x02, 0x12, 0x10, 0xbd, 0x07, 0x93, + 0xdb, 0xfd, 0xbd, 0x8e, 0xdb, 0xda, 0xd9, 0xa8, 0x3f, 0xc1, 0xaf, 0xa9, 0xfe, 0x3c, 0xc9, 0xc4, + 0xa5, 0x1e, 0x2d, 0x6f, 0x86, 0x9d, 0xa0, 0xf9, 0x02, 0xbf, 0xb6, 0x35, 0xb8, 0x08, 0xaf, 0x5e, + 0x5f, 0x23, 0x78, 0xa3, 0x09, 0xbc, 0x20, 0x38, 0x50, 0xf1, 0x18, 0x1c, 0xba, 0x0b, 0xc0, 0xb4, + 0x92, 0x4a, 0xbb, 0xcd, 0xd4, 0xeb, 0xf1, 0xea, 0xcc, 0xf1, 0x51, 0x79, 0x82, 0xeb, 0x31, 0x4e, + 0xbb, 0xed, 0xdb, 0x0a, 0x08, 0xaa, 0xc1, 0x98, 0xed, 0xb1, 0x09, 0xe6, 0x4a, 0xf5, 0x8c, 0x54, + 0xaa, 0x59, 0x31, 0x37, 0xa3, 0xf0, 0x5f, 0xea, 0x28, 0x05, 0x04, 0x2a, 0xc3, 0xe8, 0xa6, 0x57, + 0x73, 0x5a, 0x07, 0x4c, 0xb5, 0x1e, 0xab, 0x8e, 0x1c, 0x1f, 0x95, 0x73, 0x6f, 0xdb, 0xa2, 0x14, + 0xbd, 0x84, 0x89, 0x68, 0xa1, 0x82, 0xe2, 0x04, 0x9d, 0xbe, 0x1d, 0x72, 0x8a, 0x02, 0x5a, 0xdc, + 0x24, 0x4b, 0xaf, 0xcc, 0xe0, 0x37, 0xd8, 0x05, 0x6a, 0x43, 0xa8, 0x03, 0x57, 0x76, 0xc9, 0xc7, + 0x6d, 0xaf, 0x83, 0xa3, 0xe2, 0x4a, 0x10, 0x60, 0x9f, 0xd0, 0x5a, 0x5f, 0xa1, 0x9a, 0xf7, 0x38, + 0x17, 0xf9, 0xa3, 0x9e, 0x10, 0x3e, 0xc4, 0x40, 0x9a, 0x6e, 0x5b, 0x19, 0x71, 0x36, 0x31, 0xeb, + 0x7f, 0xe5, 0x00, 0x6d, 0xf5, 0x70, 0xb7, 0x5e, 0x5f, 0x23, 0x47, 0x47, 0x9c, 0x9c, 0xef, 0xc3, + 0x38, 0x5b, 0x23, 0xb2, 0x90, 0x79, 0xba, 0x90, 0xd3, 0xc7, 0x47, 0x65, 0xe0, 0x0b, 0x49, 0x16, + 0x31, 0x02, 0x40, 0x37, 0x60, 0x68, 0x67, 0x67, 0x83, 0x1e, 0x8b, 0xa1, 0xea, 0xc5, 0xe3, 0xa3, + 0xf2, 0x50, 0x18, 0x76, 0x7e, 0x75, 0x54, 0x1e, 0x5b, 0xe9, 0x33, 0x46, 0x65, 0x93, 0x7a, 0x74, + 0x03, 0x46, 0x85, 0x68, 0x31, 0x1c, 0x9d, 0x47, 0x2e, 0x33, 0xd8, 0xa2, 0x0e, 0x7d, 0x8f, 0x1b, + 0x5a, 0x46, 0x4c, 0x86, 0x96, 0x31, 0x72, 0xe8, 0xc8, 0xc7, 0x87, 0x1b, 0x57, 0xee, 0xc0, 0x08, + 0x5b, 0x9f, 0xf3, 0x94, 0x1f, 0xc5, 0xac, 0x2b, 0xe3, 0xc7, 0x47, 0xe5, 0x11, 0xba, 0x4e, 0x36, + 0x03, 0x7b, 0x3c, 0x3c, 0x96, 0x2b, 0xe4, 0xed, 0x31, 0x82, 0x4b, 0x4e, 0x80, 0xf5, 0x3d, 0x98, + 0x50, 0x86, 0x8f, 0x16, 0x61, 0x98, 0xfc, 0x4f, 0xf9, 0xc5, 0x24, 0x6b, 0xac, 0x45, 0xa6, 0x85, + 0x96, 0x5a, 0x7f, 0x3c, 0x05, 0x05, 0x82, 0xa9, 0x31, 0x19, 0x6d, 0xaa, 0x72, 0x83, 0xa6, 0xea, + 0x16, 0xc8, 0xb6, 0x39, 0xb7, 0x99, 0x3c, 0x3e, 0x2a, 0x8f, 0xf5, 0x79, 0x59, 0xd4, 0x33, 0x54, + 0x87, 0xd1, 0xd5, 0xaf, 0x7b, 0xae, 0x8f, 0x03, 0x6e, 0xd9, 0x2b, 0xdd, 0x61, 0xb6, 0xdd, 0x3b, + 0xc2, 0xb6, 0x7b, 0x67, 0x47, 0xd8, 0x76, 0xab, 0x57, 0x38, 0xd7, 0xbd, 0x80, 0x19, 0x4a, 0xb4, + 0x01, 0x7e, 0xf7, 0x3f, 0x97, 0x73, 0xb6, 0xa0, 0x84, 0xbe, 0x0f, 0xe7, 0x1f, 0x7a, 0xfe, 0xa1, + 0x13, 0xf2, 0x15, 0xa0, 0x66, 0x9f, 0xe7, 0xb4, 0x44, 0xd9, 0x33, 0x1c, 0x06, 0x3d, 0x84, 0x69, + 0xdb, 0xeb, 0x87, 0x78, 0xc7, 0x13, 0xeb, 0x36, 0x42, 0xb1, 0xe8, 0xf7, 0xd5, 0x27, 0x35, 0xcd, + 0xd0, 0x4b, 0x0a, 0x7d, 0x76, 0x0c, 0x0b, 0xad, 0xc2, 0xb4, 0x66, 0x27, 0x61, 0xab, 0x35, 0xce, + 0x75, 0x48, 0xcd, 0xba, 0xa2, 0xb2, 0xa4, 0x18, 0x12, 0xda, 0x34, 0x09, 0xa9, 0xa3, 0xb4, 0x47, + 0x03, 0x05, 0x51, 0x93, 0x18, 0x8a, 0x61, 0x86, 0x77, 0x54, 0x6a, 0x25, 0x63, 0xdc, 0xba, 0xc2, + 0xec, 0xbb, 0xb1, 0xda, 0xea, 0x75, 0x3e, 0xcb, 0x0b, 0x72, 0xec, 0x49, 0x3d, 0xc5, 0x8e, 0xd3, + 0x24, 0x4c, 0x58, 0x7e, 0x60, 0xc6, 0x69, 0x6f, 0x99, 0xcd, 0x4e, 0x7c, 0x60, 0x54, 0xf6, 0x24, + 0x3f, 0x35, 0x1b, 0x30, 0xb2, 0x1b, 0x38, 0xfb, 0x8c, 0x39, 0x4d, 0x2f, 0x5f, 0xe3, 0x3d, 0x8a, + 0xef, 0x3e, 0x6a, 0xe6, 0xa5, 0x80, 0xf4, 0xdc, 0xcd, 0x50, 0x1b, 0xb6, 0xfa, 0xd1, 0xa5, 0x75, + 0xe8, 0x73, 0x00, 0xde, 0x2b, 0xa2, 0xe8, 0x4c, 0x70, 0x69, 0x4c, 0x1b, 0x64, 0xa5, 0xd7, 0xab, + 0x2e, 0xf1, 0xf1, 0x5d, 0x92, 0xe3, 0xd3, 0x54, 0x1f, 0x5b, 0x21, 0x82, 0x3e, 0x83, 0x49, 0xca, + 0xbb, 0xc4, 0x8a, 0x4e, 0xd2, 0x15, 0xa5, 0x96, 0x60, 0xca, 0x8e, 0x0c, 0xeb, 0xa9, 0x21, 0xa0, + 0xff, 0x17, 0xe6, 0x38, 0xb9, 0x98, 0xd6, 0x39, 0xc5, 0xb5, 0x6c, 0xad, 0x7b, 0x3a, 0x4c, 0xf5, + 0x36, 0xef, 0xa9, 0x25, 0x7b, 0x9a, 0xaa, 0x87, 0xda, 0xe6, 0x66, 0xd0, 0x3a, 0xcc, 0xec, 0x06, + 0x58, 0x1b, 0xc3, 0x34, 0xfd, 0x10, 0x50, 0x05, 0xaa, 0x1f, 0xe0, 0x66, 0xda, 0x38, 0xe2, 0x78, + 0xc8, 0x06, 0xb4, 0xe2, 0x7b, 0xbd, 0xd8, 0x1e, 0x9f, 0xa1, 0x33, 0x42, 0xed, 0x01, 0x6d, 0xdf, + 0xeb, 0x35, 0xd3, 0x37, 0xba, 0x01, 0x1b, 0xfd, 0x14, 0x2e, 0x45, 0x66, 0xcb, 0x15, 0xd7, 0xd9, + 0xef, 0x7a, 0x41, 0xe8, 0xb6, 0xd6, 0x57, 0xa8, 0x05, 0x90, 0xf3, 0xff, 0xc8, 0xec, 0xd9, 0x6c, + 0x4b, 0x10, 0x9d, 0xff, 0xa7, 0x50, 0x41, 0x5f, 0xc2, 0x14, 0x6f, 0x8b, 0x9b, 0xc9, 0x2f, 0x64, + 0x6f, 0x34, 0x09, 0xcc, 0x4d, 0xd6, 0xe2, 0x27, 0x93, 0x91, 0x74, 0x5a, 0xe8, 0x2b, 0x98, 0x78, + 0xfa, 0xb0, 0x62, 0xe3, 0xa0, 0xe7, 0x75, 0x03, 0xcc, 0xcd, 0x7e, 0x4b, 0x9c, 0xf4, 0xd3, 0x87, + 0x95, 0x4a, 0x3f, 0x3c, 0xc0, 0xdd, 0xd0, 0x6d, 0x39, 0x21, 0x16, 0x50, 0x4c, 0x42, 0x3d, 0x7c, + 0xee, 0x34, 0x7d, 0x5e, 0xa2, 0x8c, 0x42, 0x25, 0x87, 0x4a, 0x30, 0x56, 0xaf, 0xaf, 0x6d, 0x78, + 0xfb, 0x2e, 0xb3, 0x00, 0x8e, 0xdb, 0xf2, 0x37, 0xda, 0x83, 0x39, 0xe5, 0x22, 0x8b, 0x8a, 0xba, + 0x98, 0xca, 0xf3, 0xcc, 0xa0, 0xf7, 0xb6, 0xbc, 0x89, 0xbb, 0xa3, 0xde, 0x77, 0xbd, 0xbc, 0x7f, + 0xa7, 0x12, 0xfd, 0xac, 0x0b, 0x24, 0x7b, 0xd6, 0x31, 0x94, 0x5a, 0x5f, 0xc0, 0xb8, 0x3c, 0x76, + 0x68, 0x14, 0x86, 0x2a, 0x9d, 0x4e, 0xe1, 0x1c, 0xf9, 0xa3, 0x5e, 0x5f, 0x2b, 0xe4, 0xd0, 0x34, + 0x40, 0xc4, 0x6b, 0x0a, 0x79, 0x34, 0x19, 0x59, 0x3d, 0x0a, 0x43, 0x14, 0xbe, 0xd7, 0x2b, 0x0c, + 0x23, 0x14, 0x37, 0xb7, 0x14, 0x46, 0xac, 0x5d, 0x18, 0x97, 0x13, 0x89, 0x66, 0x60, 0x62, 0x77, + 0xb3, 0xbe, 0xbd, 0x5a, 0x5b, 0x7f, 0xb8, 0xbe, 0xba, 0x52, 0x38, 0x87, 0xae, 0xc0, 0xe5, 0x9d, + 0xfa, 0x5a, 0x73, 0xa5, 0xda, 0xdc, 0xd8, 0xaa, 0x55, 0x36, 0x9a, 0xdb, 0xf6, 0xd6, 0x17, 0x3f, + 0x6a, 0xee, 0xec, 0x6e, 0x6e, 0xae, 0x6e, 0x14, 0x72, 0xa8, 0x08, 0xb3, 0xa4, 0xfa, 0xc9, 0x6e, + 0x75, 0x55, 0x05, 0x28, 0xe4, 0xad, 0xff, 0x98, 0x4b, 0x70, 0x3a, 0xb4, 0x0c, 0x13, 0x5c, 0xbd, + 0xa4, 0xab, 0xcf, 0x04, 0xe4, 0xc2, 0xf1, 0x51, 0x79, 0x52, 0xa8, 0xa6, 0x74, 0x61, 0x55, 0x20, + 0xf2, 0xf1, 0xda, 0x26, 0x4b, 0xd8, 0xf2, 0x3a, 0xea, 0xc7, 0xab, 0xc7, 0xcb, 0x6c, 0x59, 0x8b, + 0x96, 0x95, 0xcf, 0x1c, 0x93, 0x96, 0xa9, 0x44, 0x26, 0x3e, 0x73, 0x2a, 0xcb, 0x93, 0x1f, 0xbc, + 0x65, 0xc5, 0x3a, 0x34, 0x1c, 0xe1, 0x18, 0x58, 0xac, 0x84, 0xb3, 0xfa, 0x29, 0x4c, 0x04, 0x7d, + 0x9c, 0x30, 0x66, 0xb1, 0x11, 0x52, 0x2e, 0x19, 0xe3, 0x15, 0x09, 0x3b, 0x55, 0x19, 0x46, 0xd8, + 0xee, 0x62, 0x83, 0xa4, 0x52, 0x44, 0x87, 0x14, 0xd8, 0xac, 0xdc, 0xfa, 0x1b, 0x43, 0x2a, 0x43, + 0x25, 0x52, 0x83, 0x32, 0x89, 0x54, 0x6a, 0xa0, 0x93, 0x47, 0x4b, 0x89, 0x80, 0xc0, 0x35, 0xec, + 0xf5, 0x15, 0x4e, 0x91, 0x0a, 0x08, 0xc2, 0x5e, 0xeb, 0xb6, 0xed, 0x08, 0x80, 0x48, 0xc3, 0x4c, + 0x5a, 0xa0, 0xd2, 0xf0, 0x50, 0x24, 0x0d, 0x73, 0x79, 0x82, 0x49, 0xc3, 0x11, 0x08, 0x59, 0x48, + 0xf5, 0xb6, 0x6b, 0x38, 0x5a, 0x48, 0xf5, 0x5e, 0x4b, 0xbf, 0xcb, 0xfa, 0x08, 0xa0, 0xf2, 0xac, + 0x4e, 0x65, 0x41, 0x7b, 0x93, 0x7f, 0xd4, 0xe9, 0xf1, 0x73, 0x5e, 0x05, 0x5c, 0x9a, 0xf4, 0x55, + 0xb1, 0x59, 0x81, 0x46, 0x55, 0x98, 0xaa, 0xfc, 0x46, 0xdf, 0xc7, 0xeb, 0x6d, 0x72, 0x82, 0x43, + 0xa6, 0x1f, 0x8c, 0xf3, 0x9b, 0x12, 0x52, 0xd1, 0x74, 0x79, 0x8d, 0x42, 0x40, 0x47, 0x41, 0x5b, + 0x70, 0xe1, 0x51, 0x4d, 0x98, 0x37, 0x2a, 0xad, 0x96, 0xd7, 0xef, 0x86, 0xfc, 0x4b, 0x7e, 0xed, + 0xf8, 0xa8, 0x7c, 0x65, 0xbf, 0x15, 0x59, 0x48, 0x1c, 0x56, 0xad, 0x7e, 0xca, 0x13, 0xb8, 0x56, + 0x07, 0xa6, 0x1f, 0xe1, 0x90, 0x6c, 0x25, 0x21, 0x96, 0x65, 0xaf, 0xc9, 0x27, 0x30, 0xf1, 0xcc, + 0x0d, 0x0f, 0xea, 0xb8, 0xe5, 0xe3, 0x50, 0x68, 0x9f, 0x4c, 0x45, 0x76, 0xc3, 0x83, 0x66, 0xc0, + 0xca, 0x55, 0x06, 0xa4, 0x80, 0x5b, 0xab, 0x30, 0xc3, 0x5b, 0x93, 0x52, 0xe0, 0xb2, 0x4e, 0x30, + 0x47, 0x09, 0xd2, 0x55, 0x50, 0x09, 0xea, 0x64, 0xfe, 0x38, 0x0f, 0x73, 0xb5, 0x03, 0xa7, 0xbb, + 0x8f, 0xb7, 0x9d, 0x20, 0x78, 0xe5, 0xf9, 0x6d, 0xa5, 0xf3, 0x54, 0x04, 0x4e, 0x74, 0x9e, 0xca, + 0xbc, 0xcb, 0x30, 0xb1, 0xd5, 0x69, 0x0b, 0x1c, 0x2e, 0x9e, 0xd3, 0xb6, 0xbc, 0x4e, 0xbb, 0xd9, + 0x13, 0xb4, 0x54, 0x20, 0x82, 0xb3, 0x89, 0x5f, 0x49, 0x9c, 0xa1, 0x08, 0xa7, 0x8b, 0x5f, 0x29, + 0x38, 0x0a, 0x10, 0x5a, 0x85, 0x0b, 0x75, 0xdc, 0xf2, 0xba, 0xed, 0x87, 0x4e, 0x2b, 0xf4, 0x7c, + 0x76, 0xe5, 0x32, 0x1c, 0x49, 0x30, 0x01, 0xad, 0x6c, 0x3e, 0xa7, 0xb5, 0xec, 0xa6, 0xc5, 0x4e, + 0x62, 0xa0, 0x2d, 0x7a, 0x61, 0x43, 0x6f, 0xec, 0xb9, 0x4c, 0x7f, 0xe3, 0x8e, 0xbc, 0xc2, 0xaf, + 0xf9, 0x98, 0x6e, 0x0a, 0xa7, 0x23, 0xb5, 0x12, 0xf9, 0x41, 0xa0, 0xcc, 0x45, 0x40, 0xda, 0x92, + 0x88, 0xb5, 0x0b, 0x53, 0xdb, 0x9d, 0xfe, 0xbe, 0xdb, 0x25, 0x6c, 0xa0, 0x8e, 0x7f, 0x8e, 0x56, + 0x00, 0xa2, 0x02, 0x6e, 0x99, 0x10, 0x36, 0xb1, 0xa8, 0xa2, 0xf1, 0x80, 0x1f, 0x24, 0x5a, 0x42, + 0x45, 0x37, 0x5b, 0xc1, 0xb3, 0xfe, 0xea, 0x10, 0x20, 0xbe, 0x00, 0x94, 0xd7, 0xd7, 0x71, 0x48, + 0xd8, 0xf0, 0x25, 0xc8, 0x4b, 0x03, 0xc2, 0xf9, 0xe3, 0xa3, 0x72, 0xde, 0x6d, 0xdb, 0xf9, 0xf5, + 0x15, 0xf4, 0x0e, 0x8c, 0x50, 0x30, 0x3a, 0xff, 0xd3, 0xb2, 0x3d, 0x95, 0x02, 0xe3, 0x1c, 0xf4, + 0x1b, 0x64, 0x33, 0x60, 0xf4, 0x2e, 0x8c, 0xaf, 0xe0, 0x0e, 0xde, 0x77, 0x42, 0x4f, 0x9c, 0x6e, + 0xa6, 0x92, 0x8b, 0x42, 0x65, 0xcf, 0x45, 0x90, 0x44, 0x6e, 0xb7, 0xb1, 0x13, 0x78, 0x5d, 0x55, + 0x6e, 0xf7, 0x69, 0x89, 0x2a, 0xb7, 0x33, 0x18, 0xf4, 0x07, 0x39, 0x98, 0xa8, 0x74, 0xbb, 0x5c, + 0xd5, 0x0d, 0xf8, 0xac, 0xcf, 0xdd, 0x91, 0x9e, 0x10, 0x1b, 0xce, 0x1e, 0xee, 0x34, 0x9c, 0x4e, + 0x1f, 0x07, 0xd5, 0xaf, 0x88, 0x28, 0xf5, 0x9f, 0x8e, 0xca, 0x1f, 0x9f, 0x42, 0x79, 0x8d, 0x7c, + 0x2a, 0x76, 0x7c, 0xc7, 0x0d, 0x03, 0x7a, 0x9b, 0x19, 0x35, 0xa8, 0x9e, 0x1b, 0xa5, 0x1f, 0xe8, + 0x2d, 0x55, 0x59, 0xe3, 0xbc, 0x38, 0xa6, 0x45, 0x73, 0x3d, 0xcd, 0xba, 0x2e, 0xbf, 0x84, 0xeb, + 0x2b, 0x69, 0x4b, 0x60, 0xd5, 0x60, 0xf1, 0x11, 0x0e, 0x6d, 0x1c, 0xe0, 0x50, 0x6c, 0x5a, 0xba, + 0xe5, 0x22, 0xfb, 0xcf, 0x28, 0xfd, 0x2d, 0x91, 0xe9, 0x7a, 0xb0, 0x8d, 0x2a, 0x6a, 0xac, 0xbf, + 0x9c, 0x83, 0x72, 0xcd, 0xc7, 0x4c, 0x12, 0x49, 0x21, 0x94, 0xcd, 0x4c, 0x16, 0xb9, 0x73, 0x48, + 0x3e, 0xaa, 0x25, 0xb3, 0xc4, 0x1d, 0x40, 0x4e, 0xa6, 0x1c, 0x5b, 0xcf, 0x61, 0xce, 0xc6, 0x5d, + 0xfc, 0x8a, 0xa8, 0xea, 0x9a, 0x7e, 0x59, 0x86, 0x11, 0x76, 0xf2, 0x12, 0x43, 0x60, 0xe5, 0xa7, + 0xd3, 0xd5, 0xad, 0x7f, 0x98, 0x87, 0x02, 0x1b, 0x6e, 0xd5, 0x0b, 0x4f, 0x36, 0x3e, 0x3e, 0x82, + 0xfc, 0x00, 0xf5, 0xfe, 0x66, 0x34, 0xdb, 0x43, 0x91, 0x70, 0x40, 0xbb, 0x4a, 0xbe, 0x71, 0xa2, + 0x92, 0x0c, 0x88, 0xed, 0x02, 0x66, 0xde, 0x4a, 0xe8, 0xe8, 0xe8, 0x77, 0x72, 0x70, 0x9e, 0xed, + 0xab, 0xec, 0x9d, 0xfb, 0xec, 0x6c, 0x76, 0x6e, 0x21, 0xa4, 0x7f, 0xa9, 0xe7, 0x88, 0xd5, 0x59, + 0xff, 0x38, 0x0f, 0x17, 0x94, 0xb9, 0xe2, 0xe2, 0xe7, 0x5b, 0x4c, 0xb6, 0x51, 0x26, 0x8c, 0x1a, + 0x0c, 0xa9, 0x45, 0x3c, 0xd2, 0xe1, 0xe9, 0xcc, 0xbd, 0x05, 0x63, 0x64, 0x48, 0x71, 0xdb, 0x22, + 0xfd, 0xc2, 0x32, 0x50, 0x51, 0x7d, 0xe2, 0xd9, 0xbb, 0x0b, 0x63, 0xf4, 0x4f, 0xb2, 0x22, 0xc3, + 0xe9, 0x2b, 0x22, 0x81, 0x90, 0x0b, 0xf0, 0xd8, 0x73, 0xbb, 0x4f, 0x71, 0x78, 0xe0, 0xb5, 0xf9, + 0xb7, 0x7e, 0x9d, 0xf0, 0xc1, 0xff, 0xcb, 0x73, 0xbb, 0xcd, 0x43, 0x5a, 0x7c, 0x5a, 0xdb, 0x55, + 0x44, 0xd0, 0x56, 0x88, 0x5b, 0xf7, 0xa0, 0x40, 0x58, 0xd6, 0xc9, 0xb7, 0x96, 0x35, 0x0b, 0xe8, + 0x11, 0x0e, 0xab, 0x9e, 0xf6, 0x31, 0xb5, 0xa6, 0x60, 0x62, 0xdb, 0xed, 0xee, 0x8b, 0x9f, 0xff, + 0x64, 0x08, 0x26, 0xd9, 0x6f, 0xbe, 0x02, 0x31, 0x91, 0x27, 0x77, 0x12, 0x91, 0xe7, 0x03, 0x98, + 0xe2, 0x57, 0x64, 0xd8, 0xa7, 0x57, 0x27, 0x6c, 0x3d, 0xa8, 0x32, 0xc3, 0xae, 0xc8, 0x9a, 0x2f, + 0x59, 0x8d, 0xad, 0x03, 0xa2, 0x0d, 0x98, 0x66, 0x05, 0x0f, 0xb1, 0x13, 0xf6, 0x23, 0x7b, 0xcc, + 0x0c, 0xd7, 0x67, 0x44, 0x31, 0xe3, 0x67, 0x9c, 0xd6, 0x73, 0x5e, 0x68, 0xc7, 0x70, 0xd1, 0x67, + 0x30, 0xb3, 0xed, 0x7b, 0x5f, 0xbf, 0x56, 0x84, 0x3c, 0xc6, 0xd2, 0xe7, 0x8e, 0x8f, 0xca, 0x17, + 0x7a, 0xa4, 0xaa, 0xa9, 0x8a, 0x7a, 0x71, 0x68, 0xb2, 0xa7, 0xd6, 0x83, 0xaa, 0xe7, 0xbb, 0xdd, + 0x7d, 0xba, 0x9a, 0x63, 0x6c, 0x4f, 0xb9, 0x41, 0x73, 0x8f, 0x16, 0xda, 0xb2, 0x3a, 0x66, 0x59, + 0x1d, 0x1d, 0x6c, 0x59, 0xbd, 0x07, 0xb0, 0xe1, 0x39, 0xed, 0x4a, 0xa7, 0x53, 0xab, 0x04, 0xd4, + 0x18, 0xc2, 0x85, 0x98, 0x8e, 0xe7, 0xb4, 0x9b, 0x4e, 0xa7, 0xd3, 0x6c, 0x39, 0x81, 0xad, 0xc0, + 0x3c, 0x1e, 0x1e, 0x3b, 0x5f, 0x18, 0xb5, 0x67, 0x36, 0xdc, 0x16, 0xee, 0x06, 0xf8, 0x99, 0xe3, + 0x77, 0xdd, 0xee, 0x7e, 0x60, 0xfd, 0xad, 0x11, 0x18, 0x93, 0x43, 0xbe, 0xa3, 0x2a, 0x44, 0x5c, + 0x34, 0xa2, 0x1c, 0x2a, 0x32, 0xd8, 0xd8, 0x0a, 0x04, 0xba, 0xcc, 0xee, 0x63, 0x99, 0x50, 0x36, + 0x4a, 0x76, 0xb7, 0xd3, 0xeb, 0xb1, 0x5b, 0xd7, 0x4b, 0x90, 0x5f, 0xa9, 0xd2, 0xf9, 0x1f, 0x63, + 0x5f, 0x82, 0xf6, 0x9e, 0x9d, 0x5f, 0xa9, 0x92, 0x5d, 0xb6, 0xb5, 0xbe, 0x52, 0xa3, 0x53, 0x39, + 0xc6, 0x76, 0x99, 0xe7, 0xb6, 0x5b, 0x36, 0x2d, 0x25, 0xb5, 0xf5, 0xca, 0xd3, 0x0d, 0x3e, 0x5d, + 0xb4, 0x36, 0x70, 0x0e, 0x3b, 0x36, 0x2d, 0x25, 0xaa, 0x02, 0xd3, 0xbd, 0x6b, 0x5e, 0x37, 0xf4, + 0xbd, 0x4e, 0x40, 0x25, 0xda, 0x31, 0xb6, 0x9c, 0x5c, 0x69, 0x6f, 0xf1, 0x2a, 0x3b, 0x06, 0x8a, + 0x9e, 0xc1, 0x7c, 0xa5, 0xfd, 0xd2, 0xe9, 0xb6, 0x70, 0x9b, 0xd5, 0x3c, 0xf3, 0xfc, 0x17, 0xcf, + 0x3b, 0xde, 0xab, 0x80, 0xce, 0xf7, 0x18, 0xb7, 0x71, 0x71, 0x10, 0x61, 0x03, 0x78, 0x25, 0x80, + 0xec, 0x34, 0x6c, 0xc2, 0x25, 0x6b, 0x1d, 0xaf, 0xdf, 0xe6, 0xab, 0x40, 0xb9, 0x64, 0x8b, 0x14, + 0xd8, 0xac, 0x9c, 0xcc, 0xd2, 0x5a, 0xfd, 0x29, 0xb5, 0x28, 0xf1, 0x59, 0x3a, 0x08, 0x0e, 0x6d, + 0x52, 0x86, 0x6e, 0xc0, 0xa8, 0xd0, 0x7a, 0x98, 0x6d, 0x9b, 0x1a, 0x5a, 0x85, 0xb6, 0x23, 0xea, + 0xc8, 0x91, 0xb0, 0x71, 0xcb, 0x7b, 0x89, 0xfd, 0xd7, 0x35, 0xaf, 0x8d, 0x85, 0xfd, 0x83, 0xeb, + 0xf7, 0xac, 0xa2, 0xd9, 0x22, 0x35, 0xb6, 0x0e, 0x48, 0x1a, 0x60, 0x82, 0x53, 0x40, 0x9d, 0x9c, + 0x78, 0x03, 0x4c, 0xb0, 0x0a, 0x6c, 0x51, 0x87, 0x56, 0xe0, 0x42, 0xa5, 0x1f, 0x7a, 0x87, 0x4e, + 0xe8, 0xb6, 0x76, 0x7b, 0xfb, 0xbe, 0x43, 0x1a, 0x29, 0x50, 0x04, 0xaa, 0xda, 0x39, 0xa2, 0xb2, + 0xd9, 0xe7, 0xb5, 0x76, 0x12, 0x01, 0xbd, 0x07, 0x93, 0xeb, 0x01, 0xb3, 0x71, 0x39, 0x01, 0x6e, + 0x53, 0x43, 0x05, 0xef, 0xa5, 0x1b, 0x34, 0xa9, 0xc5, 0xab, 0x49, 0x94, 0xc1, 0xb6, 0xad, 0xc1, + 0x3d, 0x1e, 0x1e, 0x9b, 0x28, 0x4c, 0x3e, 0x1e, 0x1e, 0x9b, 0x2c, 0x4c, 0x3d, 0x1e, 0x1e, 0x9b, + 0x2a, 0x4c, 0x5b, 0xf7, 0xe1, 0x02, 0xe3, 0x4f, 0x27, 0x56, 0x14, 0xac, 0x6d, 0x80, 0x3a, 0x3e, + 0x74, 0x7a, 0x07, 0x1e, 0xd9, 0xc9, 0x55, 0xf5, 0x17, 0x17, 0x34, 0x91, 0x74, 0xce, 0xe1, 0x15, + 0x8d, 0x07, 0x42, 0xbf, 0x13, 0x90, 0xb6, 0x82, 0x65, 0xfd, 0x59, 0x1e, 0x10, 0x75, 0x52, 0xa9, + 0x87, 0x3e, 0x76, 0x0e, 0x45, 0x37, 0x3e, 0x84, 0x49, 0xf6, 0xa9, 0x61, 0xc5, 0xb4, 0x3b, 0x44, + 0x8a, 0x65, 0x3c, 0x46, 0xad, 0x5a, 0x3b, 0x67, 0x6b, 0xa0, 0x04, 0xd5, 0xc6, 0x41, 0xff, 0x50, + 0xa0, 0xe6, 0x35, 0x54, 0xb5, 0x8a, 0xa0, 0xaa, 0xbf, 0xd1, 0x67, 0x30, 0x5d, 0xf3, 0x0e, 0x7b, + 0x64, 0x4e, 0x38, 0xf2, 0x10, 0xff, 0xe2, 0xf2, 0x76, 0xb5, 0xca, 0xb5, 0x73, 0x76, 0x0c, 0x1c, + 0x6d, 0xc2, 0xc5, 0x87, 0x9d, 0x7e, 0x70, 0x50, 0xe9, 0xb6, 0x6b, 0x1d, 0x2f, 0x10, 0x54, 0x86, + 0xb9, 0xc5, 0x9a, 0x73, 0xc8, 0x24, 0xc4, 0xda, 0x39, 0xdb, 0x84, 0x88, 0x6e, 0x70, 0x8f, 0x5b, + 0x69, 0xfd, 0xe7, 0x0e, 0xb9, 0x5b, 0x5d, 0xbc, 0xf5, 0x7c, 0xed, 0x9c, 0xcd, 0x6a, 0xab, 0xe3, + 0x30, 0x2a, 0xbe, 0x0e, 0x77, 0xc9, 0x26, 0x93, 0xd3, 0xc9, 0xae, 0x30, 0x51, 0x09, 0xc6, 0x76, + 0x7b, 0x84, 0x69, 0x09, 0xd1, 0xcf, 0x96, 0xbf, 0xad, 0xef, 0xeb, 0x33, 0x8d, 0x16, 0x55, 0xfd, + 0x9c, 0x01, 0x47, 0x05, 0xd6, 0x9a, 0x3e, 0xb9, 0xd9, 0xd0, 0x5a, 0xbb, 0xf9, 0x58, 0xbb, 0x85, + 0xf8, 0x5c, 0x5b, 0x73, 0xc6, 0xc9, 0xb3, 0xbe, 0x80, 0xa5, 0xdd, 0x1e, 0x51, 0x86, 0x2a, 0xbd, + 0x5e, 0xc7, 0x6d, 0x31, 0xeb, 0x13, 0xfd, 0x8a, 0x88, 0xcd, 0xf2, 0x9e, 0x74, 0xe7, 0xcc, 0xa5, + 0x3a, 0xbf, 0xc0, 0xf1, 0x51, 0xf9, 0x3c, 0xfb, 0x1a, 0x09, 0x2f, 0x4e, 0xeb, 0x77, 0x73, 0xb0, + 0xc4, 0x4e, 0x40, 0x2a, 0xe9, 0xef, 0xa9, 0x4e, 0xa7, 0x8a, 0x78, 0x23, 0x5d, 0x4c, 0x55, 0xb7, + 0xd2, 0xe8, 0x82, 0x35, 0x9f, 0x7e, 0xc1, 0x2a, 0x0e, 0xd8, 0x90, 0xf1, 0x80, 0x7d, 0x0e, 0x16, + 0xef, 0x51, 0xa7, 0x93, 0xe8, 0x54, 0xf0, 0x26, 0xbd, 0xb2, 0xfe, 0x6b, 0x1e, 0xe6, 0x1f, 0xe1, + 0x2e, 0xf6, 0x1d, 0x3a, 0x4e, 0x4d, 0x92, 0x57, 0xef, 0x5f, 0x72, 0x99, 0xf7, 0x2f, 0x52, 0x4c, + 0xcd, 0xa7, 0x88, 0xa9, 0x97, 0x61, 0x68, 0xd7, 0x5e, 0xe7, 0xc3, 0xa2, 0x0c, 0xb8, 0xef, 0xbb, + 0x36, 0x29, 0x43, 0xeb, 0xd1, 0xdd, 0xcd, 0xf0, 0xc0, 0xbb, 0x9b, 0x8b, 0xdc, 0x96, 0x3d, 0xca, + 0xef, 0x6e, 0xf4, 0x1b, 0x9b, 0x4d, 0x45, 0x16, 0x26, 0xec, 0xe6, 0x36, 0x3f, 0x53, 0x29, 0x03, + 0xe4, 0x62, 0xed, 0x6a, 0x37, 0xf4, 0x5f, 0xb3, 0x2d, 0xc0, 0xa4, 0x5b, 0x21, 0xd3, 0x96, 0x3e, + 0x87, 0x09, 0x05, 0x04, 0x15, 0x60, 0xe8, 0x05, 0xbf, 0xb7, 0x1a, 0xb7, 0xc9, 0x9f, 0xe8, 0xfb, + 0x30, 0xf2, 0x92, 0xc8, 0xd7, 0x9c, 0x8d, 0x5c, 0x8a, 0x64, 0xef, 0x7a, 0x48, 0xa4, 0x0a, 0x26, + 0x7c, 0xdb, 0x0c, 0xe8, 0xa3, 0xfc, 0x07, 0x39, 0xeb, 0x63, 0x28, 0x26, 0x7b, 0xc3, 0x45, 0xb5, + 0x41, 0xda, 0x8b, 0xb5, 0x02, 0xb3, 0x8f, 0x70, 0x18, 0x79, 0xbc, 0x2a, 0xd7, 0x6a, 0xb1, 0x73, + 0x96, 0x61, 0x35, 0xb3, 0xea, 0x30, 0x17, 0xa3, 0xc2, 0xdb, 0xff, 0x08, 0x46, 0x85, 0xaf, 0x4c, + 0x2e, 0xdd, 0x57, 0x86, 0xee, 0x5b, 0x4e, 0xd9, 0x16, 0x08, 0xd6, 0x33, 0xb8, 0xa4, 0x11, 0x0d, + 0x24, 0xd5, 0x1f, 0xc0, 0x98, 0x28, 0x8b, 0x99, 0x1b, 0x34, 0xb2, 0x74, 0x6b, 0x05, 0x02, 0x59, + 0xa2, 0x58, 0x07, 0x70, 0x69, 0xc3, 0x0d, 0x74, 0xca, 0x6c, 0xd4, 0x0b, 0x30, 0xde, 0x23, 0xdf, + 0xb3, 0xc0, 0xfd, 0x0d, 0xb6, 0x3f, 0x47, 0xec, 0x31, 0x52, 0x50, 0x77, 0x7f, 0x03, 0xa3, 0x2b, + 0x00, 0xb4, 0x92, 0xce, 0x1f, 0x67, 0x2f, 0x14, 0x9c, 0xe9, 0x81, 0x08, 0xe8, 0xc5, 0x28, 0xdb, + 0x90, 0x36, 0xfd, 0xdb, 0xf2, 0x61, 0x3e, 0xd1, 0x12, 0x1f, 0xc3, 0x5d, 0x90, 0x5d, 0xcb, 0x18, + 0x83, 0x2d, 0x81, 0xd0, 0x4d, 0x98, 0xe9, 0xe2, 0xaf, 0xc3, 0x66, 0xa2, 0x0f, 0x53, 0xa4, 0x78, + 0x5b, 0xf4, 0xc3, 0xfa, 0x09, 0xd5, 0xca, 0xe3, 0xce, 0x6c, 0x67, 0x36, 0x79, 0x1d, 0x28, 0x91, + 0x21, 0xe9, 0xbe, 0x4b, 0xbf, 0xb6, 0x09, 0x7c, 0x09, 0x0b, 0xc6, 0xd6, 0x7e, 0xdd, 0x93, 0xf8, + 0x17, 0x79, 0x98, 0x67, 0x5f, 0xa9, 0xe4, 0xd1, 0x38, 0x39, 0x0f, 0xfb, 0x56, 0x8c, 0xc9, 0xf7, + 0x0c, 0xc6, 0x64, 0x8a, 0xa2, 0x1a, 0x93, 0x35, 0x13, 0xf2, 0x07, 0x66, 0x13, 0x32, 0x15, 0xe9, + 0x74, 0x13, 0x72, 0xdc, 0x70, 0xbc, 0x9a, 0x6e, 0x38, 0xa6, 0x66, 0x34, 0x83, 0xe1, 0xd8, 0x60, + 0x2e, 0x7e, 0x3c, 0x3c, 0x96, 0x2f, 0x0c, 0x59, 0x0d, 0x28, 0x26, 0xa7, 0xf8, 0x0c, 0xf8, 0xc6, + 0x9f, 0xe4, 0xe0, 0x0a, 0x97, 0x30, 0x62, 0x87, 0xe0, 0xf4, 0x2b, 0xf8, 0x2e, 0x4c, 0x72, 0xdc, + 0x9d, 0x68, 0xb3, 0x30, 0xb7, 0x54, 0xc1, 0x09, 0x19, 0x3b, 0xd5, 0xc0, 0xd0, 0xbb, 0x8a, 0x95, + 0x80, 0x59, 0x9e, 0x2e, 0x93, 0xcf, 0x25, 0x33, 0x27, 0xa4, 0xda, 0x0a, 0xac, 0xaf, 0x60, 0x29, + 0xad, 0xe3, 0x67, 0x30, 0x2f, 0x7f, 0x9a, 0x83, 0x05, 0x4e, 0x5e, 0x3b, 0x4e, 0x6f, 0xc4, 0xf2, + 0x4f, 0xe1, 0x49, 0xf1, 0x18, 0x26, 0x48, 0x83, 0xa2, 0xdf, 0xfa, 0x3b, 0x29, 0xa5, 0x66, 0xc5, + 0x09, 0x1d, 0x7e, 0x05, 0xe6, 0x1c, 0x76, 0x84, 0xcb, 0xa4, 0xad, 0x22, 0x5b, 0x3f, 0x86, 0x45, + 0xf3, 0x10, 0xce, 0x60, 0x7e, 0x1e, 0x43, 0xc9, 0xc0, 0x38, 0xdf, 0xec, 0x83, 0xf8, 0x23, 0x58, + 0x30, 0xd2, 0x3a, 0x83, 0x6e, 0xae, 0x91, 0xcf, 0x7d, 0x78, 0x06, 0x4b, 0x68, 0x3d, 0x83, 0xcb, + 0x06, 0x4a, 0x67, 0xd0, 0xc5, 0x47, 0x30, 0x2f, 0xc5, 0xdc, 0x6f, 0xd4, 0xc3, 0xa7, 0x70, 0x85, + 0x11, 0x3a, 0x9b, 0x55, 0x79, 0x02, 0x0b, 0x9c, 0xdc, 0x19, 0xcc, 0xde, 0x1a, 0x2c, 0x46, 0xda, + 0xac, 0x41, 0x96, 0x38, 0x31, 0x93, 0xb1, 0x36, 0xe0, 0x6a, 0x44, 0x29, 0xe5, 0xc3, 0x7a, 0x72, + 0x6a, 0x4c, 0x16, 0x8b, 0x56, 0xe9, 0x0c, 0x65, 0xb1, 0x08, 0xf0, 0xcc, 0xc4, 0x89, 0x75, 0xb8, + 0xc8, 0x08, 0xeb, 0x72, 0xeb, 0xb2, 0x2a, 0xb7, 0x1a, 0x9f, 0x18, 0x25, 0x45, 0xd9, 0xa7, 0x54, + 0x94, 0x15, 0x20, 0x51, 0x0f, 0xdf, 0x85, 0xf3, 0xfc, 0x15, 0x25, 0xeb, 0x9f, 0x81, 0x18, 0x93, + 0xd4, 0x19, 0x1a, 0x07, 0xb6, 0x7e, 0x0a, 0x57, 0x98, 0x1a, 0x18, 0xf7, 0xd6, 0x17, 0x4b, 0xf2, + 0x83, 0x98, 0x16, 0x98, 0xf1, 0x28, 0xc0, 0xa4, 0x0c, 0xee, 0x89, 0xbd, 0x9d, 0x46, 0xff, 0x44, + 0xee, 0xb3, 0x42, 0xbb, 0xcb, 0x1b, 0xb5, 0xbb, 0xeb, 0x70, 0x4d, 0x6a, 0x77, 0xf1, 0x66, 0xa4, + 0xb9, 0xf7, 0xc7, 0xb0, 0xc0, 0x06, 0xaa, 0xbf, 0x1d, 0x13, 0xdd, 0xf8, 0x38, 0x36, 0xcc, 0xd4, + 0xc7, 0x69, 0xa6, 0x41, 0xfe, 0xf5, 0x9c, 0x38, 0x72, 0x66, 0xe2, 0xdf, 0xb6, 0xba, 0xbb, 0x09, + 0x65, 0x39, 0x21, 0x7a, 0x8f, 0xde, 0x4c, 0xd7, 0x7d, 0x0a, 0x73, 0x89, 0xf7, 0x0d, 0x44, 0x60, + 0x45, 0xef, 0x90, 0x63, 0x41, 0x0b, 0xc4, 0xb6, 0x4b, 0x7d, 0x0f, 0x61, 0x4b, 0x48, 0xab, 0x09, + 0x8b, 0xc9, 0xa5, 0x70, 0x5b, 0xc2, 0xd5, 0x09, 0x7d, 0x46, 0x8e, 0x30, 0x7b, 0x64, 0x91, 0x1b, + 0xf0, 0xc8, 0x82, 0x9f, 0x63, 0x86, 0x2e, 0xb0, 0x2c, 0x4b, 0xb0, 0x9a, 0xd8, 0xf8, 0x49, 0xeb, + 0x62, 0x3f, 0xb8, 0x80, 0x44, 0x55, 0xad, 0x6e, 0x8b, 0xa6, 0x2f, 0xc3, 0x50, 0xad, 0x6e, 0x73, + 0x0f, 0x4b, 0xaa, 0x6e, 0xb7, 0x02, 0xdf, 0x26, 0x65, 0x71, 0xa9, 0x35, 0x7f, 0x02, 0xa9, 0xf5, + 0xf1, 0xf0, 0xd8, 0x50, 0x61, 0xd8, 0xfa, 0x12, 0x2e, 0x6a, 0x4d, 0xf1, 0x13, 0x9b, 0xe9, 0x06, + 0x8a, 0x6e, 0xc2, 0x68, 0xad, 0x42, 0xef, 0xe8, 0xa8, 0x6d, 0x60, 0x92, 0xf1, 0x96, 0x96, 0xd3, + 0xa4, 0x4f, 0xe2, 0x6d, 0x51, 0x69, 0xfd, 0x83, 0x61, 0x85, 0xba, 0xe2, 0x5c, 0x9b, 0x31, 0x92, + 0xfb, 0x00, 0x6c, 0x37, 0x28, 0x03, 0x21, 0xc2, 0xde, 0x04, 0xbf, 0x56, 0x60, 0xec, 0xd7, 0x56, + 0x80, 0x4e, 0xea, 0x7c, 0xcb, 0xfd, 0x7d, 0x18, 0x92, 0xb8, 0x7b, 0x93, 0xfe, 0x3e, 0x9c, 0x74, + 0x60, 0xab, 0x40, 0xe8, 0xa7, 0x71, 0x1f, 0xb1, 0x11, 0x7a, 0xd5, 0xfd, 0x1d, 0x6e, 0x82, 0x30, + 0x8c, 0xed, 0x74, 0x6e, 0x62, 0xaf, 0x60, 0x8e, 0xe0, 0xba, 0xcf, 0xa9, 0x23, 0xd8, 0xea, 0xd7, + 0x21, 0xee, 0x32, 0x3e, 0x7e, 0x9e, 0xb6, 0x73, 0x23, 0xa3, 0x9d, 0x08, 0x98, 0xbf, 0xe1, 0x8e, + 0xe8, 0x34, 0xb1, 0xac, 0xb3, 0xcd, 0xf4, 0xe9, 0x86, 0xb1, 0x37, 0x56, 0xbb, 0xed, 0x9e, 0xe7, + 0x4a, 0x05, 0x82, 0x6d, 0x18, 0xbf, 0xd3, 0xc4, 0xbc, 0xdc, 0x56, 0x81, 0xac, 0x9b, 0x99, 0xbe, + 0x59, 0x63, 0x30, 0xbc, 0x53, 0xdb, 0xd9, 0x28, 0xe4, 0xac, 0xbb, 0x00, 0x4a, 0x4b, 0x00, 0xe7, + 0x37, 0xb7, 0xec, 0xa7, 0x95, 0x8d, 0xc2, 0x39, 0x34, 0x07, 0x17, 0x9e, 0xad, 0x6f, 0xae, 0x6c, + 0x3d, 0xab, 0x37, 0xeb, 0x4f, 0x2b, 0xf6, 0x4e, 0xad, 0x62, 0xaf, 0x14, 0x72, 0xd6, 0x57, 0x30, + 0xab, 0x8f, 0xf0, 0x4c, 0x37, 0x61, 0x08, 0x17, 0xa5, 0xec, 0xf2, 0xf8, 0xd9, 0x8e, 0xe2, 0xaf, + 0xc2, 0x95, 0xa1, 0xf8, 0x15, 0x1a, 0x57, 0x9b, 0xf8, 0x91, 0x51, 0x80, 0xb4, 0x8b, 0xcf, 0x7c, + 0xe6, 0xc5, 0xa7, 0xf5, 0x3e, 0xcc, 0xea, 0xad, 0x9e, 0xd4, 0x1c, 0xf4, 0x1d, 0xea, 0xc8, 0xa3, + 0x78, 0x57, 0x12, 0xad, 0x3c, 0xea, 0x22, 0xe7, 0xa2, 0xef, 0x43, 0x81, 0x43, 0x45, 0x5f, 0xd9, + 0xeb, 0xc2, 0x5e, 0x97, 0x33, 0x78, 0x82, 0x0b, 0xb7, 0x82, 0xef, 0x8a, 0x1b, 0x80, 0x41, 0x2d, + 0xfc, 0x59, 0x0e, 0x8a, 0x31, 0x47, 0xc5, 0xda, 0x81, 0xd3, 0xe9, 0xe0, 0xee, 0x3e, 0x46, 0xb7, + 0x60, 0x78, 0x67, 0x6b, 0x67, 0x9b, 0x5b, 0xc8, 0x66, 0xf9, 0x36, 0x25, 0x45, 0x12, 0xc6, 0xa6, + 0x10, 0xe8, 0x09, 0x5c, 0x10, 0x6e, 0x2b, 0xb2, 0x8a, 0x2b, 0x20, 0x57, 0xb2, 0x9d, 0x60, 0x92, + 0x78, 0xe8, 0x1d, 0xee, 0x55, 0xf9, 0xf3, 0xbe, 0xeb, 0xe3, 0x36, 0x55, 0xce, 0xa7, 0x97, 0x51, + 0xe4, 0x55, 0x29, 0x6a, 0x6c, 0x15, 0x8c, 0x79, 0xbc, 0x5b, 0x7f, 0x90, 0x83, 0xf9, 0x14, 0xc7, + 0x4b, 0xf4, 0x96, 0x36, 0x9c, 0x8b, 0xca, 0x70, 0x04, 0xc8, 0xda, 0x39, 0x3e, 0x9e, 0x9a, 0xe2, + 0xcb, 0x33, 0x74, 0x0a, 0x5f, 0x1e, 0xfe, 0xee, 0x9a, 0xc2, 0xf1, 0xf7, 0x45, 0xb4, 0xdc, 0x9a, + 0x81, 0x29, 0x6d, 0xde, 0x2c, 0x0b, 0x26, 0xd5, 0x96, 0xc9, 0xe2, 0xd4, 0xbc, 0xb6, 0x5c, 0x1c, + 0xf2, 0xb7, 0xf5, 0x7b, 0x39, 0x98, 0xa5, 0x43, 0xdc, 0x77, 0xc9, 0x69, 0x8c, 0x66, 0x68, 0x59, + 0x1b, 0xc9, 0xa2, 0x36, 0x92, 0x18, 0xac, 0x1c, 0xd2, 0x47, 0x89, 0x21, 0x2d, 0x9a, 0x86, 0x44, + 0xb5, 0x3e, 0xd7, 0xeb, 0x6a, 0x23, 0x51, 0xae, 0x21, 0xfe, 0x4e, 0x0e, 0x2e, 0x2a, 0x7d, 0x92, + 0xfd, 0xbf, 0xaf, 0x75, 0x69, 0xc1, 0xd0, 0xa5, 0xc4, 0x24, 0x57, 0x13, 0x3d, 0xfa, 0x4e, 0x56, + 0x8f, 0x06, 0xce, 0xf1, 0x9f, 0xe7, 0x60, 0xce, 0x38, 0x07, 0xe8, 0x12, 0x11, 0xad, 0x5a, 0x3e, + 0x0e, 0xf9, 0xf4, 0xf2, 0x5f, 0xa4, 0x7c, 0x3d, 0x08, 0xfa, 0x3c, 0x58, 0xc9, 0xb8, 0xcd, 0x7f, + 0xa1, 0xef, 0xc0, 0xd4, 0x36, 0xf6, 0x5d, 0xaf, 0xcd, 0xbc, 0xbc, 0xd8, 0x4d, 0xf8, 0x94, 0xad, + 0x17, 0xa2, 0x45, 0x18, 0xaf, 0x74, 0xf6, 0x3d, 0xdf, 0x0d, 0x0f, 0xd8, 0x4d, 0xd0, 0xb8, 0x1d, + 0x15, 0x10, 0xda, 0x2b, 0xee, 0xbe, 0x70, 0xee, 0x98, 0xb2, 0xf9, 0x2f, 0x54, 0x84, 0x51, 0x61, + 0xd0, 0xa1, 0xe6, 0x20, 0x5b, 0xfc, 0x24, 0x18, 0x9f, 0xdb, 0x74, 0x13, 0xd0, 0x27, 0x45, 0x36, + 0xff, 0x65, 0xdd, 0x86, 0x59, 0xd3, 0x3c, 0x1a, 0xb7, 0xcc, 0xff, 0x9f, 0x87, 0x8b, 0x95, 0x76, + 0xfb, 0xe9, 0xc3, 0xca, 0x0a, 0x56, 0x05, 0x9a, 0x77, 0x60, 0x78, 0xbd, 0xeb, 0x86, 0x5c, 0x9a, + 0x11, 0x2e, 0xca, 0x06, 0x48, 0x02, 0x45, 0x56, 0x88, 0xfc, 0x8f, 0x6c, 0xb8, 0xb8, 0xfa, 0xb5, + 0x1b, 0x84, 0x6e, 0x77, 0x5f, 0xf5, 0x73, 0xce, 0x9f, 0xc4, 0xcf, 0x79, 0xed, 0x9c, 0x6d, 0x42, + 0x46, 0x3b, 0x70, 0x69, 0x13, 0xbf, 0x32, 0x6c, 0x21, 0xf9, 0xfc, 0x43, 0x39, 0xe8, 0x89, 0x9d, + 0x93, 0x82, 0xab, 0xee, 0xd0, 0xdf, 0xc9, 0xd3, 0x67, 0x66, 0xca, 0xc0, 0x78, 0xcb, 0xbb, 0x30, + 0xab, 0x74, 0x28, 0xe2, 0x53, 0x39, 0xfe, 0xb0, 0xd5, 0x38, 0x1c, 0xf5, 0x20, 0x19, 0xd1, 0xd1, + 0x33, 0x98, 0xd7, 0x3b, 0x15, 0x51, 0xd6, 0x0f, 0x83, 0x09, 0x64, 0xed, 0x9c, 0x9d, 0x86, 0x8d, + 0x96, 0x61, 0xa8, 0xd2, 0x7a, 0xc1, 0xa7, 0xc5, 0xbc, 0x64, 0x6c, 0x64, 0x95, 0xd6, 0x0b, 0xfa, + 0x5c, 0xbb, 0xf5, 0x42, 0x3b, 0x0f, 0xff, 0x32, 0x07, 0xf3, 0x29, 0x2b, 0x8c, 0x96, 0x00, 0x58, + 0xa1, 0xf2, 0x45, 0x50, 0x4a, 0x88, 0x80, 0xc6, 0x7e, 0x51, 0x8f, 0xaf, 0x21, 0xca, 0x82, 0xc5, + 0x4b, 0x8a, 0xa8, 0xc2, 0x56, 0x80, 0xd0, 0x36, 0x4c, 0xb0, 0x5f, 0xec, 0x41, 0x87, 0xce, 0xb6, + 0x95, 0x1a, 0x26, 0xc8, 0xb4, 0x69, 0x41, 0x33, 0xfe, 0x90, 0x43, 0x25, 0xc1, 0xcd, 0x97, 0xb5, + 0xf8, 0x28, 0xe4, 0xa0, 0xd1, 0x2d, 0x38, 0xcf, 0x0a, 0xf9, 0x1a, 0x8a, 0x67, 0x9a, 0x11, 0x30, + 0xaf, 0xb7, 0xfe, 0x5e, 0x0e, 0x2e, 0xb1, 0x2f, 0x62, 0xe2, 0x68, 0xbc, 0xaf, 0x1d, 0x8d, 0x6b, + 0xb2, 0xc3, 0x26, 0x60, 0xed, 0x74, 0x54, 0x75, 0xef, 0xff, 0x93, 0x9e, 0x0a, 0x15, 0x49, 0xdd, + 0xb7, 0x7f, 0x3f, 0x27, 0xac, 0x39, 0xc9, 0xad, 0xbb, 0x0a, 0x93, 0x6f, 0xb6, 0x65, 0x35, 0x34, + 0xf4, 0x2e, 0xdb, 0x51, 0xf9, 0xec, 0x91, 0x66, 0x6e, 0xaa, 0x4f, 0xa0, 0x94, 0x3e, 0x35, 0x83, + 0xb6, 0x95, 0xf5, 0xd0, 0x80, 0xfd, 0x26, 0xcb, 0xd9, 0x4f, 0xd0, 0xa9, 0xbf, 0xee, 0xb6, 0xc4, + 0x8a, 0xde, 0x8c, 0xfb, 0x43, 0xa6, 0xfa, 0x98, 0xa9, 0xbd, 0xcd, 0x47, 0xd7, 0x06, 0x7c, 0x73, + 0x52, 0x61, 0x4f, 0xed, 0xfe, 0x3f, 0xcb, 0xeb, 0x7b, 0xf1, 0x4d, 0x1a, 0xad, 0xc1, 0xd4, 0x26, + 0x7e, 0x95, 0x68, 0x97, 0xfa, 0xcf, 0x74, 0xf1, 0xab, 0xa6, 0xd2, 0xb6, 0xea, 0x58, 0xae, 0xe1, + 0xa0, 0x3d, 0x98, 0x16, 0x5c, 0xe3, 0xa4, 0xcc, 0x93, 0xbd, 0x66, 0x23, 0x2d, 0xa4, 0xbc, 0x3d, + 0x89, 0x51, 0x3c, 0xfb, 0xf3, 0x6c, 0x6d, 0x43, 0x31, 0x39, 0x7b, 0xbc, 0xb5, 0x77, 0x06, 0xad, + 0x3d, 0x33, 0x7b, 0xb4, 0xf5, 0x7d, 0xb0, 0x46, 0x4d, 0x51, 0x12, 0x46, 0xda, 0x16, 0xee, 0xc5, + 0x17, 0x83, 0xfa, 0xe1, 0x88, 0xc5, 0x50, 0xfa, 0x27, 0xdd, 0x63, 0x6b, 0xd4, 0x9a, 0xa7, 0x52, + 0xe2, 0x1d, 0xbb, 0x0d, 0xa3, 0xbc, 0x28, 0xf6, 0x16, 0x3c, 0xda, 0x95, 0x02, 0xc0, 0xfa, 0xc3, + 0x1c, 0x5c, 0xa6, 0xb6, 0x45, 0xb7, 0xbb, 0xdf, 0xc1, 0xbb, 0x81, 0xee, 0xe1, 0xfa, 0xb6, 0xc6, + 0x68, 0xe6, 0x53, 0x5e, 0x20, 0xfd, 0xba, 0xd8, 0xcb, 0x1f, 0xe5, 0xa0, 0x64, 0xea, 0xdb, 0xd9, + 0x72, 0x98, 0x3b, 0x5c, 0x99, 0xcb, 0x73, 0xab, 0x09, 0x43, 0x97, 0x6d, 0x8a, 0xc1, 0x92, 0x41, + 0x92, 0xff, 0x35, 0xd6, 0xf2, 0x3f, 0x73, 0x30, 0xbb, 0x1e, 0xa8, 0x02, 0x3e, 0x9f, 0xb8, 0x3b, + 0xa6, 0x07, 0x91, 0x74, 0x5d, 0xcd, 0x71, 0x37, 0xde, 0x51, 0x5e, 0xd8, 0xe4, 0xb3, 0x5e, 0x3a, + 0x6a, 0xc1, 0x56, 0x6e, 0xc2, 0xf0, 0x26, 0x11, 0xa7, 0x86, 0xf8, 0xfe, 0x63, 0x18, 0xa4, 0x88, + 0x3e, 0x86, 0x21, 0x5d, 0x26, 0x3f, 0xd0, 0xc3, 0xc4, 0x93, 0x9b, 0xe1, 0xc1, 0x2f, 0xf9, 0x92, + 0x51, 0x62, 0xaa, 0x63, 0x70, 0x7e, 0xc7, 0xf1, 0xf7, 0x71, 0x68, 0xfd, 0x18, 0x4a, 0xdc, 0xab, + 0x87, 0x59, 0x6b, 0xa9, 0xef, 0x4f, 0x10, 0x39, 0x6e, 0x65, 0x79, 0xe2, 0x2c, 0x01, 0xd4, 0x43, + 0xc7, 0x0f, 0xd7, 0xbb, 0x6d, 0xfc, 0x35, 0x1d, 0xed, 0x88, 0xad, 0x94, 0x58, 0xef, 0xc2, 0xb8, + 0x1c, 0x02, 0xd5, 0x00, 0x15, 0x89, 0x91, 0x0e, 0x67, 0x56, 0x7b, 0x04, 0x24, 0x5e, 0xfe, 0x3c, + 0x80, 0xb9, 0xd8, 0x52, 0x44, 0x8f, 0xd2, 0xa4, 0x66, 0x46, 0x5d, 0x1c, 0x6d, 0xf9, 0xdb, 0xaa, + 0xc1, 0x85, 0xc4, 0x4a, 0x23, 0x44, 0xdf, 0x8b, 0x31, 0xed, 0x9e, 0x7c, 0x50, 0xea, 0xf5, 0x35, + 0x52, 0xb6, 0xb3, 0x51, 0x67, 0x4e, 0xdc, 0xa4, 0x6c, 0x67, 0xa3, 0x5e, 0x3d, 0xcf, 0x76, 0x8e, + 0xf5, 0x8f, 0xf2, 0x54, 0xe9, 0x4d, 0xcc, 0x41, 0xcc, 0x56, 0xa8, 0xda, 0x2b, 0xab, 0x30, 0x4e, + 0x47, 0xbc, 0x22, 0x9e, 0x29, 0x64, 0x3b, 0xa2, 0x8c, 0xfd, 0xe2, 0xa8, 0x7c, 0x8e, 0x7a, 0x9f, + 0x44, 0x68, 0xe8, 0x53, 0x18, 0x5d, 0xed, 0xb6, 0x29, 0x85, 0xa1, 0x53, 0x50, 0x10, 0x48, 0x64, + 0x1d, 0x68, 0x97, 0x89, 0x28, 0xc4, 0xcd, 0x4e, 0xb6, 0x52, 0x42, 0xa7, 0xd9, 0x3d, 0x74, 0x99, + 0xc3, 0xd7, 0x88, 0xcd, 0x7e, 0xd0, 0x27, 0x7e, 0xa4, 0x0b, 0x22, 0xfe, 0xc0, 0xb8, 0x2d, 0x7f, + 0x23, 0x0b, 0x46, 0xb6, 0xfc, 0x36, 0x7f, 0xfa, 0x3b, 0xbd, 0x3c, 0x29, 0x82, 0x31, 0x92, 0x32, + 0x9b, 0x55, 0x59, 0xff, 0x3d, 0x07, 0xf3, 0x8f, 0x70, 0x68, 0xdc, 0x37, 0xda, 0xac, 0xe4, 0xbe, + 0xf1, 0xac, 0xe4, 0xdf, 0x64, 0x56, 0xe4, 0xa8, 0x87, 0xd2, 0x46, 0x3d, 0x9c, 0x36, 0xea, 0x91, + 0xf4, 0x51, 0x3f, 0x82, 0xf3, 0x6c, 0xa8, 0xe8, 0x3a, 0x8c, 0xac, 0x87, 0xf8, 0x30, 0x32, 0x86, + 0xa8, 0x6e, 0x74, 0x36, 0xab, 0x23, 0x1a, 0xd7, 0x86, 0x13, 0x84, 0xe2, 0xd9, 0xc0, 0xb8, 0x2d, + 0x7e, 0x5a, 0x3f, 0xa3, 0x0f, 0x9c, 0x36, 0xbc, 0xd6, 0x0b, 0xc5, 0x2a, 0x3d, 0xca, 0x4e, 0x65, + 0xfc, 0x16, 0x83, 0x40, 0xb1, 0x1a, 0x5b, 0x40, 0xa0, 0xab, 0x30, 0xb1, 0xde, 0x7d, 0xe8, 0xf9, + 0x2d, 0xbc, 0xd5, 0xed, 0x30, 0xea, 0x63, 0xb6, 0x5a, 0xc4, 0x2d, 0x38, 0xbc, 0x85, 0xc8, 0x82, + 0x43, 0x0b, 0x62, 0x16, 0x1c, 0x16, 0xaf, 0xcb, 0x66, 0x75, 0xdc, 0x40, 0x44, 0xfe, 0xce, 0x32, + 0xdf, 0x48, 0x3b, 0xcf, 0x20, 0xc0, 0x3d, 0xb8, 0x6c, 0xe3, 0x5e, 0xc7, 0x21, 0x02, 0xd7, 0xa1, + 0xc7, 0xe0, 0xe5, 0x98, 0xaf, 0x1a, 0xfc, 0xcc, 0x75, 0xdf, 0x07, 0xd9, 0xe5, 0x7c, 0x46, 0x97, + 0x0f, 0xe1, 0xda, 0x23, 0x1c, 0x1a, 0x83, 0x6e, 0x45, 0x83, 0x5f, 0x83, 0xb1, 0x40, 0xb7, 0xd7, + 0x0f, 0x8a, 0xf7, 0xc5, 0x6f, 0xb4, 0x38, 0x1d, 0xf9, 0x97, 0xf5, 0x19, 0x94, 0xd3, 0x9a, 0x3b, + 0x99, 0xcf, 0xab, 0x0b, 0x57, 0xd3, 0x09, 0xc8, 0xcf, 0xa2, 0xb0, 0xed, 0x4b, 0xd5, 0x39, 0xbb, + 0xb7, 0xfa, 0x75, 0x00, 0xff, 0xc3, 0xaa, 0x0a, 0xef, 0xbf, 0x6f, 0xd0, 0xdd, 0x26, 0xbd, 0x36, + 0xd7, 0x09, 0x44, 0xf3, 0x5a, 0x81, 0x31, 0x51, 0xc6, 0xe7, 0x35, 0x35, 0x9e, 0x19, 0x9d, 0xd0, + 0xb6, 0x20, 0x20, 0xd1, 0xac, 0x9f, 0x89, 0x2b, 0x24, 0x1d, 0xe3, 0x64, 0x8f, 0x67, 0x4e, 0x72, + 0x67, 0x64, 0x79, 0x70, 0x59, 0xa7, 0xad, 0x5e, 0x17, 0x14, 0x94, 0xeb, 0x02, 0x76, 0x4b, 0x70, + 0x55, 0x37, 0x5f, 0xe7, 0xf9, 0xbe, 0x8c, 0x8a, 0xd0, 0x92, 0x7a, 0x29, 0x30, 0x99, 0x7c, 0x6d, + 0x74, 0x0f, 0x4a, 0xa6, 0x06, 0x15, 0x03, 0x8a, 0xb4, 0x3c, 0xf3, 0xd8, 0x17, 0xbf, 0x99, 0x03, + 0x4b, 0xf3, 0x84, 0xd2, 0x42, 0x53, 0xc9, 0x23, 0xf3, 0x96, 0x60, 0x6c, 0xd4, 0xf7, 0x8a, 0xf9, + 0xd0, 0x77, 0x48, 0x81, 0xfa, 0xc4, 0x8b, 0x71, 0xbb, 0x7b, 0x30, 0xba, 0x89, 0xbf, 0x8e, 0xd8, + 0x0f, 0x93, 0x45, 0xa9, 0x77, 0xd4, 0x0b, 0xac, 0x3e, 0x1e, 0x15, 0x60, 0x44, 0x10, 0xba, 0x9e, + 0xd9, 0x07, 0xde, 0xff, 0x3d, 0x28, 0xc4, 0xeb, 0xf8, 0xda, 0x0f, 0x8c, 0xd2, 0x45, 0x5f, 0x61, + 0xc4, 0x83, 0x73, 0x05, 0x76, 0x82, 0xde, 0xe9, 0x7b, 0x8f, 0x3e, 0x04, 0xd8, 0xf1, 0x42, 0xa7, + 0x53, 0xa3, 0x36, 0x2e, 0xca, 0xf8, 0x59, 0xa8, 0xa7, 0x90, 0x94, 0x36, 0xe3, 0xaf, 0x5c, 0x15, + 0x60, 0xeb, 0x87, 0xf4, 0x44, 0x9a, 0x3b, 0x7d, 0xb2, 0x43, 0x52, 0x83, 0xeb, 0x31, 0xcf, 0x83, + 0x37, 0x20, 0x12, 0xc2, 0x1c, 0x99, 0x7e, 0x19, 0xe3, 0xeb, 0xdb, 0x59, 0xf5, 0x7f, 0x93, 0x63, + 0xee, 0x92, 0x6a, 0xb3, 0x7c, 0xa1, 0x6b, 0x00, 0x51, 0x69, 0xcc, 0x1f, 0x5f, 0x0d, 0x59, 0x46, + 0x95, 0xd7, 0x28, 0x64, 0x59, 0x60, 0x2b, 0x68, 0xdf, 0xee, 0x4a, 0x3e, 0xa0, 0xee, 0x06, 0xb2, + 0xf5, 0x93, 0xcd, 0xfb, 0x7b, 0xc2, 0x46, 0x73, 0x4a, 0xbc, 0x03, 0x98, 0xd5, 0xa2, 0x3a, 0x47, + 0x61, 0x6a, 0xa3, 0x68, 0xd6, 0xe3, 0xd5, 0x4f, 0x7e, 0x75, 0x54, 0xfe, 0xe0, 0x34, 0xaf, 0xbf, + 0x04, 0xcd, 0x1d, 0xf9, 0xc8, 0xd1, 0x9a, 0x87, 0xa1, 0x9a, 0xbd, 0x41, 0x59, 0x95, 0xbd, 0x21, + 0x59, 0x95, 0xbd, 0x61, 0xfd, 0xb7, 0x3c, 0x94, 0xd9, 0x1b, 0x67, 0xea, 0xa5, 0x12, 0xe9, 0x4a, + 0x8a, 0xdb, 0xcb, 0x49, 0x2d, 0x04, 0xb1, 0x37, 0xcc, 0xf9, 0x93, 0xbc, 0x61, 0xfe, 0xbf, 0xdf, + 0xdc, 0xaa, 0xca, 0x22, 0xf6, 0x45, 0x86, 0x01, 0x56, 0x6b, 0xb2, 0x10, 0xa4, 0x34, 0x91, 0x34, + 0x69, 0x0c, 0xbf, 0x81, 0x49, 0xe3, 0x1e, 0x8c, 0x52, 0xd5, 0x63, 0x7d, 0x9b, 0xfb, 0x56, 0xd2, + 0xed, 0x49, 0xc3, 0x11, 0x34, 0x5d, 0x35, 0xce, 0x89, 0x00, 0xb3, 0xfe, 0x76, 0x1e, 0xae, 0xa6, + 0xcf, 0x39, 0xef, 0xdb, 0x8a, 0x16, 0x98, 0x37, 0xc3, 0x1f, 0x87, 0x9e, 0x1d, 0x25, 0x30, 0x6f, + 0x3c, 0x18, 0xaf, 0x78, 0x19, 0x14, 0xbb, 0x0d, 0xd3, 0x1e, 0x0c, 0x89, 0xb0, 0xe6, 0xac, 0x48, + 0x8b, 0xc7, 0xc5, 0xcb, 0xd0, 0x1e, 0xcc, 0x6f, 0xfb, 0xee, 0x4b, 0x27, 0xc4, 0x4f, 0xf0, 0xeb, + 0x6d, 0xaf, 0xe3, 0xb6, 0x5e, 0xaf, 0x76, 0x9d, 0xbd, 0x0e, 0x6e, 0xf3, 0xe7, 0x5e, 0xb7, 0x8e, + 0x8f, 0xca, 0xdf, 0xe9, 0x31, 0x10, 0x72, 0x30, 0x9b, 0x3d, 0x0a, 0xd4, 0xc4, 0x0c, 0x4a, 0x21, + 0x9a, 0x46, 0xc8, 0xfa, 0xd7, 0x39, 0x58, 0xa0, 0x02, 0x35, 0xbf, 0x59, 0x10, 0x8d, 0xbf, 0x91, + 0x5b, 0xa6, 0x3a, 0x40, 0xbe, 0x17, 0xa9, 0x5b, 0xa6, 0xf6, 0x72, 0xca, 0xd6, 0xc0, 0xd0, 0x3a, + 0x4c, 0xf0, 0xdf, 0x8a, 0xf9, 0x78, 0x4e, 0x61, 0x58, 0x74, 0xab, 0x33, 0xeb, 0x11, 0xdd, 0xd8, + 0x9c, 0x58, 0x93, 0xbe, 0x27, 0x56, 0x71, 0xad, 0x5f, 0xe6, 0x61, 0xb1, 0x81, 0x7d, 0xf7, 0xf9, + 0xeb, 0x94, 0xc1, 0x6c, 0xc1, 0xac, 0x28, 0xa2, 0x63, 0xd6, 0x8f, 0x18, 0x0b, 0xd4, 0x23, 0xba, + 0x1a, 0x10, 0x80, 0xa6, 0x3c, 0x71, 0x46, 0xc4, 0x53, 0x38, 0x5c, 0xbe, 0x03, 0x63, 0xb1, 0x48, + 0x03, 0x74, 0xfd, 0xc5, 0x09, 0xd5, 0xc3, 0x3c, 0xca, 0xa3, 0xfa, 0x5b, 0xe9, 0x57, 0x94, 0xdc, + 0x92, 0x30, 0x28, 0x82, 0x0c, 0x3d, 0xb0, 0xe4, 0xb0, 0x3a, 0x4a, 0xad, 0xe1, 0xc0, 0xae, 0x9d, + 0xb3, 0xd3, 0x5a, 0xaa, 0x4e, 0xc0, 0x78, 0x85, 0x5e, 0xbb, 0x12, 0xc5, 0xfd, 0x7f, 0xe4, 0x61, + 0x49, 0xbc, 0xd9, 0x49, 0x99, 0xe6, 0x2f, 0x60, 0x5e, 0x14, 0x55, 0x7a, 0x44, 0x60, 0xc0, 0x6d, + 0x7d, 0xa6, 0x59, 0xb0, 0x2c, 0x31, 0xd3, 0x0e, 0x87, 0x89, 0x26, 0x3b, 0x0d, 0xfd, 0x6c, 0x0c, + 0xa2, 0x9f, 0x9a, 0xe2, 0x3e, 0x50, 0xc3, 0xa4, 0xca, 0x33, 0xf5, 0x58, 0x90, 0x2a, 0xff, 0x6c, + 0x27, 0x0c, 0xaa, 0xc3, 0xdf, 0xd4, 0xa0, 0xba, 0x76, 0x2e, 0x6e, 0x52, 0xad, 0x4e, 0xc3, 0xe4, + 0x26, 0x7e, 0x15, 0xcd, 0xfb, 0x6f, 0xe7, 0x62, 0x4f, 0x13, 0x89, 0x84, 0xc1, 0xde, 0x28, 0xe6, + 0xa2, 0xd0, 0x01, 0xf4, 0x69, 0xa2, 0x2a, 0x61, 0x30, 0xd0, 0x75, 0x18, 0x65, 0x2e, 0xba, 0xed, + 0x13, 0xe8, 0xe6, 0xf2, 0xf1, 0x4d, 0x8b, 0xa1, 0x30, 0x35, 0x9d, 0xe3, 0x5b, 0x4f, 0xe0, 0x1a, + 0xf7, 0x10, 0xd7, 0x17, 0x9f, 0x36, 0x74, 0xca, 0xcf, 0x97, 0xe5, 0xc0, 0xd2, 0x23, 0x1c, 0x67, + 0x3d, 0xda, 0xe3, 0xa4, 0xcf, 0x60, 0x46, 0x2b, 0x97, 0x14, 0xa9, 0x54, 0x2a, 0xf7, 0x90, 0x24, + 0x1d, 0x87, 0xb6, 0xae, 0x9a, 0x9a, 0x50, 0x3b, 0x6b, 0x61, 0x1a, 0xf5, 0xca, 0x8f, 0x6e, 0x91, + 0x83, 0x53, 0x70, 0xbd, 0x5b, 0xca, 0xb9, 0x66, 0x1c, 0x8f, 0xc5, 0xff, 0x11, 0x5f, 0x5e, 0x59, + 0x6b, 0x4d, 0xc1, 0x44, 0xcd, 0xeb, 0x86, 0xf8, 0x6b, 0x2a, 0xea, 0x58, 0xd3, 0x30, 0x29, 0xaa, + 0x3a, 0x38, 0x08, 0xac, 0xbf, 0x3b, 0x04, 0x16, 0x9f, 0x58, 0x93, 0xf5, 0x54, 0xcc, 0xc7, 0x5e, + 0xa2, 0xb3, 0xfc, 0x43, 0x75, 0x49, 0xb5, 0x11, 0x47, 0xb5, 0x6c, 0xe7, 0x51, 0x39, 0xaf, 0x15, + 0x95, 0xea, 0x81, 0x7d, 0xe3, 0xa3, 0xff, 0x32, 0x85, 0x4d, 0xb2, 0xc3, 0x46, 0x63, 0x6a, 0xa7, + 0xb0, 0x49, 0x8d, 0xae, 0x99, 0x65, 0xda, 0xda, 0x34, 0x70, 0x91, 0x03, 0xc9, 0xb7, 0x95, 0xb2, + 0x86, 0xfb, 0x30, 0xb1, 0x82, 0x66, 0x22, 0x8f, 0x84, 0x4a, 0x04, 0xed, 0xea, 0x73, 0xc9, 0xcf, + 0xa3, 0xf0, 0xda, 0x50, 0xab, 0x18, 0xd5, 0x9e, 0x52, 0xa2, 0xa7, 0xe5, 0xd0, 0x60, 0x15, 0x8b, + 0xf8, 0xef, 0x4b, 0x3f, 0x7d, 0xf2, 0x21, 0x75, 0x3b, 0x98, 0x3f, 0x4a, 0x11, 0xcb, 0xd2, 0x37, + 0xdf, 0x7e, 0xe7, 0x4e, 0xc4, 0xa3, 0x69, 0x34, 0x53, 0xcc, 0xd1, 0xd3, 0xae, 0x5c, 0x4c, 0xf4, + 0xad, 0xa3, 0x9c, 0x78, 0x9d, 0x90, 0xb8, 0x12, 0x3e, 0xad, 0x24, 0x59, 0xd5, 0x6e, 0x71, 0xf3, + 0x29, 0xb7, 0xb8, 0xda, 0x9d, 0x57, 0x38, 0xe0, 0x5a, 0x77, 0xe8, 0x9b, 0x5f, 0x03, 0xfd, 0xd3, + 0xf3, 0x70, 0x61, 0xdb, 0xd9, 0x77, 0xbb, 0x84, 0xf7, 0x88, 0x08, 0xbc, 0xa8, 0x92, 0xc8, 0xd1, + 0x90, 0xed, 0x06, 0x6b, 0x48, 0xc2, 0xb0, 0xac, 0x86, 0x4b, 0xcf, 0xa7, 0xbd, 0x18, 0xd5, 0x83, + 0xa2, 0x7f, 0xa8, 0x59, 0xfd, 0x13, 0xf9, 0x42, 0xa8, 0x77, 0x5f, 0xd7, 0x6b, 0xc7, 0xf2, 0x96, + 0x50, 0xcb, 0x79, 0x32, 0x90, 0xfc, 0xc8, 0x19, 0x07, 0x92, 0xff, 0x31, 0x4c, 0x3c, 0xe9, 0xef, + 0xc9, 0x9c, 0x18, 0xe7, 0x07, 0x06, 0x2a, 0xa7, 0x6b, 0xf0, 0xa2, 0xbf, 0x67, 0xce, 0x8a, 0xa1, + 0x12, 0x33, 0x06, 0x5d, 0x1f, 0xfd, 0xb5, 0x04, 0x5d, 0x4f, 0x8d, 0xf7, 0x3f, 0xf6, 0xad, 0xc4, + 0xfb, 0x37, 0x04, 0x4e, 0x1f, 0x3f, 0xfb, 0xc0, 0xe9, 0x5a, 0x50, 0x71, 0xf8, 0x86, 0x41, 0xc5, + 0xab, 0x00, 0x63, 0x7e, 0x14, 0x9a, 0x7a, 0xb8, 0x30, 0x62, 0xfd, 0x8b, 0x51, 0x98, 0xdd, 0x70, + 0x83, 0x50, 0x9c, 0x97, 0x20, 0xfa, 0x98, 0x4e, 0x8a, 0x32, 0x45, 0xd9, 0xe5, 0x72, 0x2f, 0x2b, + 0x6f, 0xc6, 0x32, 0x36, 0x69, 0x08, 0xe8, 0x5d, 0xf5, 0x6e, 0x25, 0xaf, 0x04, 0xee, 0x4c, 0x26, + 0xdb, 0x51, 0x2f, 0x5d, 0xde, 0xd2, 0x4c, 0xfb, 0x99, 0xb6, 0x90, 0x07, 0x71, 0x7b, 0x3f, 0x8f, + 0xab, 0x45, 0x3f, 0x33, 0xba, 0xed, 0x21, 0xba, 0x08, 0xd8, 0x85, 0xf3, 0x34, 0x08, 0x8e, 0x78, + 0x10, 0xfc, 0x5d, 0xce, 0x72, 0x4c, 0x93, 0xc0, 0xc2, 0xe5, 0xf0, 0xd7, 0xc0, 0x34, 0x66, 0x54, + 0x87, 0x16, 0xa8, 0xb1, 0x6e, 0x18, 0x08, 0xda, 0x81, 0x8b, 0xdb, 0x3e, 0x6e, 0x73, 0x4f, 0xd9, + 0x9e, 0xcf, 0x15, 0x43, 0xf6, 0x32, 0x8f, 0x06, 0xb1, 0xec, 0x89, 0xea, 0x26, 0x96, 0xf5, 0x2a, + 0xcf, 0x36, 0xa0, 0xa3, 0x55, 0x98, 0xae, 0x63, 0xc7, 0x6f, 0x1d, 0x3c, 0xc1, 0xaf, 0xc9, 0xa7, + 0x26, 0x28, 0x8e, 0x46, 0x91, 0x5f, 0x03, 0x5a, 0x43, 0x06, 0x4a, 0xab, 0xd4, 0x2b, 0x77, 0x1d, + 0x09, 0xfd, 0x10, 0xce, 0xd7, 0x3d, 0x3f, 0xac, 0xbe, 0x8e, 0x65, 0x5f, 0x62, 0x85, 0xd5, 0xcb, + 0x22, 0xfa, 0x6d, 0xe0, 0xf9, 0x61, 0x73, 0x4f, 0x9d, 0x37, 0x8e, 0x87, 0x1e, 0x12, 0x39, 0x96, + 0xc8, 0xd6, 0xd2, 0x6c, 0xc3, 0x02, 0x67, 0x70, 0x59, 0x95, 0x0a, 0xe4, 0x26, 0xdb, 0x4d, 0x0c, + 0x0b, 0xbd, 0x86, 0x59, 0xfd, 0x34, 0x3d, 0x74, 0x3b, 0x84, 0x05, 0x81, 0x96, 0xc7, 0xc4, 0x04, + 0x52, 0xbd, 0xc5, 0x7b, 0x79, 0x35, 0x7e, 0x66, 0x9f, 0xd3, 0x7a, 0x35, 0x98, 0xb7, 0x09, 0x1f, + 0x3d, 0xa5, 0xc1, 0x87, 0xd9, 0xcc, 0x54, 0x02, 0x11, 0x95, 0x9a, 0x0c, 0x82, 0xc6, 0xcc, 0xeb, + 0xd3, 0x13, 0x49, 0x67, 0xd4, 0x09, 0xe2, 0xc1, 0xa9, 0xed, 0x04, 0x2a, 0xda, 0x86, 0x0b, 0xbb, + 0x01, 0xde, 0xf6, 0xf1, 0x4b, 0x17, 0xbf, 0x12, 0xf4, 0x26, 0x29, 0x3d, 0xba, 0xdc, 0x84, 0x5e, + 0x8f, 0xd5, 0x9a, 0x08, 0x26, 0x91, 0x4b, 0x1f, 0xc2, 0x84, 0xb2, 0xdf, 0x0c, 0x4f, 0xcb, 0x67, + 0xd5, 0xa7, 0xe5, 0xe3, 0xea, 0x13, 0xf2, 0x3f, 0xcf, 0x31, 0xd3, 0xa2, 0xb2, 0x81, 0xb9, 0x9d, + 0x62, 0x0b, 0xc6, 0x65, 0xa1, 0x7c, 0xc8, 0x20, 0x64, 0x9d, 0xd8, 0xb7, 0x92, 0x1d, 0x1f, 0x71, + 0xba, 0xd5, 0xde, 0x46, 0x34, 0xbe, 0x5d, 0x73, 0xdf, 0x6f, 0x45, 0x4f, 0x1e, 0xf9, 0xf3, 0x4c, + 0xdf, 0x69, 0xbd, 0x88, 0xec, 0xad, 0x3f, 0x25, 0xe7, 0x43, 0xad, 0xe0, 0x49, 0xa3, 0xe6, 0xf5, + 0x8c, 0x3f, 0xbc, 0x52, 0xe4, 0x1d, 0x90, 0x2f, 0x3f, 0x59, 0xb1, 0x7e, 0x70, 0x54, 0x04, 0xea, + 0xfc, 0x3b, 0x63, 0xd9, 0xec, 0xc5, 0x9e, 0xb1, 0x07, 0xef, 0x25, 0xdf, 0x9c, 0x51, 0x5e, 0x1c, + 0xbd, 0x39, 0x53, 0xa7, 0x31, 0x7a, 0x7d, 0xb6, 0x0b, 0x0b, 0x36, 0x3e, 0xf4, 0x5e, 0xe2, 0xb3, + 0x25, 0xfb, 0x25, 0x5c, 0xd6, 0x09, 0xee, 0xf6, 0xda, 0x34, 0x54, 0x07, 0xbb, 0x75, 0x35, 0x86, + 0xdc, 0xe3, 0x08, 0x2c, 0xe4, 0x1e, 0x0b, 0xc2, 0x44, 0xfe, 0x54, 0xf9, 0x2d, 0xad, 0xb3, 0x3c, + 0x58, 0xd4, 0x89, 0x57, 0xda, 0x6d, 0x9a, 0x47, 0xa0, 0xe5, 0xf6, 0x9c, 0x6e, 0x88, 0xb6, 0x60, + 0x42, 0xf9, 0x19, 0x93, 0x94, 0x94, 0x1a, 0xb6, 0xfa, 0xbd, 0xa8, 0x40, 0x95, 0xe8, 0x14, 0x38, + 0x0b, 0x43, 0x39, 0x3e, 0x3d, 0x64, 0xca, 0xd4, 0x36, 0xab, 0x30, 0xa5, 0xfc, 0x94, 0x8a, 0x07, + 0x0d, 0xa7, 0xa9, 0xb4, 0xa0, 0x4f, 0x98, 0x8e, 0x62, 0xb5, 0xa0, 0x64, 0x9a, 0x34, 0x1a, 0x42, + 0xe2, 0x35, 0x5a, 0x8d, 0x82, 0x51, 0x0c, 0xbe, 0xed, 0x9e, 0x49, 0x0b, 0x44, 0x61, 0xfd, 0xcd, + 0x61, 0x58, 0xe0, 0x8b, 0x71, 0x96, 0x2b, 0x8e, 0x7e, 0x06, 0x13, 0xca, 0x1a, 0xf3, 0x49, 0xbf, + 0x2a, 0x1c, 0x64, 0xd2, 0xf6, 0x02, 0x93, 0xe8, 0xfa, 0xb4, 0xa0, 0x19, 0x5b, 0x6e, 0x22, 0xd1, + 0xa9, 0xdb, 0xa6, 0x03, 0xd3, 0xfa, 0x42, 0x73, 0xa1, 0xf6, 0xba, 0xb1, 0x11, 0x1d, 0x54, 0xc4, + 0x6f, 0x6a, 0x37, 0x8d, 0xcb, 0x4d, 0xf3, 0x5c, 0xe9, 0x9b, 0xe8, 0x6b, 0xb8, 0x90, 0x58, 0x65, + 0xae, 0xa4, 0xdd, 0x34, 0x36, 0x98, 0x80, 0x66, 0xd1, 0xcc, 0x7d, 0x5a, 0x9c, 0xda, 0x6c, 0xb2, + 0x11, 0xd4, 0x86, 0x49, 0x75, 0xe1, 0xb9, 0xd4, 0x7d, 0x2d, 0x63, 0x2a, 0x19, 0x20, 0x13, 0x8a, + 0xf8, 0x5c, 0xd2, 0xb5, 0xd7, 0x53, 0x43, 0x6a, 0x54, 0xab, 0x63, 0x70, 0x9e, 0xfd, 0x26, 0x2c, + 0x60, 0xdb, 0xc7, 0x01, 0xee, 0xb6, 0xb0, 0xea, 0xeb, 0xf4, 0x4d, 0x59, 0xc0, 0xbf, 0xca, 0x41, + 0xd1, 0x44, 0xb7, 0x8e, 0xbb, 0x6d, 0xb4, 0x0d, 0x85, 0x78, 0x43, 0x7c, 0x57, 0x5b, 0xe2, 0xab, + 0x90, 0xde, 0x25, 0x22, 0x85, 0x27, 0xba, 0xb9, 0x09, 0x17, 0x94, 0xb2, 0x53, 0x3a, 0x95, 0x25, + 0x51, 0x55, 0x45, 0x7a, 0x8d, 0xfa, 0xce, 0xad, 0x78, 0x87, 0x8e, 0xdb, 0x25, 0x02, 0xa2, 0x12, + 0x36, 0x02, 0xa2, 0x52, 0x3e, 0x37, 0x4c, 0xd9, 0xa4, 0xa5, 0xc2, 0xc1, 0x52, 0x82, 0x58, 0x9f, + 0x50, 0x0e, 0xce, 0x55, 0x14, 0xf6, 0xb4, 0x47, 0x12, 0xbb, 0x0a, 0x23, 0x3b, 0x1b, 0xf5, 0x5a, + 0x85, 0x3f, 0x14, 0x62, 0x4f, 0x49, 0x3b, 0x41, 0xb3, 0xe5, 0xd8, 0xac, 0xc2, 0xfa, 0x98, 0x46, + 0xd9, 0xe3, 0x31, 0xda, 0x24, 0xde, 0x0d, 0x18, 0xe5, 0x45, 0x1c, 0x93, 0x5e, 0x4d, 0x77, 0x38, + 0x94, 0xa8, 0xb3, 0xb6, 0x85, 0x7c, 0xdd, 0xc1, 0x4e, 0xa0, 0x7c, 0x98, 0x3f, 0x20, 0xa2, 0x38, + 0x2b, 0xe3, 0xdf, 0xe5, 0x69, 0x19, 0x02, 0x95, 0x16, 0x33, 0xe5, 0x5b, 0xc0, 0xd8, 0xf2, 0x2f, + 0xeb, 0x4f, 0xf3, 0x30, 0x2b, 0x02, 0xc6, 0x68, 0x86, 0x85, 0x81, 0xa1, 0x2e, 0x7f, 0xa4, 0xc7, + 0xe4, 0xa9, 0xc9, 0x98, 0x3c, 0xdf, 0x20, 0xf9, 0x06, 0x8f, 0xe6, 0x73, 0xc2, 0x67, 0x74, 0x4f, + 0xa4, 0xf4, 0x3d, 0xac, 0x49, 0xdf, 0xa6, 0xf1, 0x68, 0xd2, 0x37, 0x5d, 0x16, 0x26, 0x7d, 0x0b, + 0x99, 0xfb, 0x9b, 0x08, 0x4c, 0x1f, 0x90, 0xad, 0xa5, 0x35, 0x79, 0xd2, 0x17, 0x56, 0x1b, 0xf4, + 0xd1, 0xfd, 0xd6, 0xfa, 0x4a, 0x8d, 0xec, 0x69, 0xde, 0x55, 0xb1, 0x02, 0x77, 0xa9, 0xd7, 0x1c, + 0xa7, 0xa9, 0x6e, 0x4c, 0xca, 0x62, 0x79, 0xa8, 0x09, 0x05, 0xc4, 0x7a, 0x20, 0x9f, 0xf0, 0x1b, + 0xa8, 0xa5, 0xc5, 0x6d, 0xdd, 0xa4, 0xc1, 0x09, 0x1e, 0xd1, 0xf5, 0x3a, 0x8b, 0x4e, 0xfc, 0x61, + 0x8e, 0x45, 0x3b, 0xa8, 0x6f, 0x29, 0x21, 0xee, 0xbb, 0xcf, 0x3d, 0xc5, 0xae, 0xaa, 0x34, 0xf3, + 0xc4, 0xed, 0xb6, 0x55, 0xbb, 0x2a, 0x4d, 0x62, 0xc8, 0x1f, 0x2a, 0x36, 0x5f, 0xb8, 0xdd, 0xb6, + 0x1d, 0x87, 0x46, 0x1f, 0xc2, 0x94, 0x52, 0x24, 0x3f, 0xd2, 0x2c, 0x42, 0xa0, 0x8a, 0xee, 0xb6, + 0x6d, 0x1d, 0xd2, 0xfa, 0xed, 0x3c, 0x2c, 0x64, 0xa4, 0x60, 0xa1, 0x3a, 0x20, 0x35, 0x07, 0xc8, + 0x99, 0xe2, 0xb1, 0x95, 0xe9, 0xa3, 0x4c, 0x8d, 0x47, 0x4a, 0x40, 0xf4, 0x09, 0x4c, 0xa8, 0x19, + 0x61, 0xf2, 0x4a, 0x00, 0x6f, 0x73, 0x16, 0x18, 0x15, 0x1c, 0x05, 0x00, 0x51, 0x4f, 0xf8, 0x3b, + 0xe5, 0x3a, 0x91, 0x68, 0x94, 0x74, 0x32, 0x67, 0x92, 0xd7, 0x46, 0x69, 0xc6, 0xfa, 0x6b, 0x79, + 0x58, 0xca, 0x98, 0x87, 0x3a, 0x0e, 0xff, 0x4f, 0x4c, 0x45, 0x2c, 0xc9, 0xcf, 0xd0, 0xb7, 0x94, + 0xe4, 0xc7, 0xfa, 0xfd, 0x3c, 0x5c, 0xda, 0xed, 0x05, 0xd4, 0xb9, 0x75, 0xbd, 0xfb, 0x12, 0x77, + 0x43, 0xcf, 0x7f, 0x4d, 0x9d, 0xf3, 0xd0, 0xbb, 0x30, 0xb2, 0x86, 0x3b, 0x1d, 0x8f, 0x7f, 0xd6, + 0xae, 0x08, 0x53, 0x77, 0x1c, 0x9a, 0x02, 0xad, 0x9d, 0xb3, 0x19, 0x34, 0xfa, 0x10, 0xc6, 0xd7, + 0xb0, 0xe3, 0x87, 0x7b, 0xd8, 0x11, 0x92, 0xeb, 0x65, 0x8e, 0xaa, 0xa0, 0x70, 0x80, 0xb5, 0x73, + 0x76, 0x04, 0x8d, 0x96, 0x61, 0x78, 0xdb, 0xeb, 0xee, 0xcb, 0xd7, 0x6f, 0x29, 0x0d, 0x12, 0x98, + 0xb5, 0x73, 0x36, 0x85, 0x45, 0x4f, 0x61, 0xaa, 0xb2, 0x8f, 0xbb, 0xe1, 0x53, 0x1c, 0x3a, 0x6d, + 0x27, 0x74, 0xb8, 0x84, 0x73, 0x23, 0x0d, 0x59, 0x03, 0xa6, 0x89, 0x73, 0xd5, 0x82, 0xea, 0x08, + 0x0c, 0x3d, 0x0d, 0xf6, 0xad, 0xdf, 0xcd, 0x41, 0x71, 0xc5, 0x7b, 0xd5, 0x35, 0x4e, 0xcc, 0xfb, + 0xfa, 0xc4, 0x08, 0x17, 0x6c, 0x03, 0x7c, 0x6c, 0x6a, 0xde, 0x81, 0xe1, 0x6d, 0xb7, 0xbb, 0x1f, + 0xfb, 0xa8, 0x1b, 0xf0, 0x08, 0x14, 0x1d, 0xa1, 0xdb, 0xdd, 0x17, 0x5d, 0x7a, 0x0b, 0xe6, 0x53, + 0x20, 0xd1, 0xb4, 0x64, 0x6f, 0xc3, 0x94, 0xad, 0x7d, 0x17, 0xe6, 0x8c, 0x93, 0x96, 0x00, 0xfc, + 0xe7, 0x39, 0xc3, 0xea, 0xb3, 0xbe, 0x16, 0x61, 0x54, 0x04, 0xa8, 0x65, 0xdf, 0x01, 0xf1, 0x93, + 0x3a, 0x87, 0x8a, 0xd3, 0xc1, 0x43, 0x0b, 0xca, 0x43, 0xd0, 0x50, 0x1e, 0xfb, 0xb3, 0x3d, 0xfc, + 0xd1, 0x37, 0xd8, 0xa9, 0x92, 0x16, 0x69, 0x73, 0xcd, 0x0b, 0xc2, 0xae, 0xf4, 0x5d, 0xb0, 0xe5, + 0x6f, 0xeb, 0x3f, 0xe4, 0x69, 0x98, 0xc2, 0x8c, 0x65, 0x26, 0xe3, 0xde, 0xaa, 0xf3, 0x71, 0xe4, + 0xb7, 0xea, 0x68, 0x11, 0xc6, 0xb7, 0xea, 0x5a, 0xfc, 0x5d, 0x3b, 0x2a, 0x40, 0xb7, 0x59, 0x06, + 0xb7, 0x8a, 0xdf, 0x3a, 0x70, 0x43, 0xdc, 0x0a, 0xfb, 0x3e, 0x67, 0x4e, 0x76, 0xa2, 0x1c, 0x59, + 0x30, 0xf9, 0xa8, 0xe3, 0xee, 0xb5, 0x04, 0x31, 0xd6, 0x39, 0xad, 0x0c, 0xdd, 0x84, 0x69, 0x9e, + 0x25, 0x92, 0x85, 0x27, 0xe6, 0x29, 0xd0, 0xec, 0x58, 0x29, 0x69, 0xb7, 0xe6, 0x75, 0x43, 0xc7, + 0xed, 0x62, 0xdf, 0xee, 0x77, 0x43, 0x97, 0xe7, 0x0c, 0x1f, 0xb7, 0x13, 0xe5, 0xe8, 0x1d, 0x98, + 0x93, 0x65, 0x5b, 0x7e, 0xeb, 0x00, 0x07, 0xa1, 0x4f, 0x43, 0xb9, 0xd3, 0x27, 0xe4, 0xb6, 0xb9, + 0x92, 0xb6, 0xd0, 0xf1, 0xfa, 0xed, 0xd5, 0xee, 0x4b, 0xd7, 0xf7, 0x58, 0x7e, 0xc1, 0x31, 0xde, + 0x42, 0xac, 0xdc, 0xda, 0x36, 0x9e, 0x80, 0x6f, 0xb0, 0x39, 0xac, 0x1a, 0xa0, 0x24, 0x07, 0x40, + 0x6f, 0xc3, 0x78, 0xbd, 0xbe, 0xa6, 0xdd, 0x28, 0xc4, 0x8d, 0xfc, 0x76, 0x04, 0x61, 0xbd, 0x07, + 0x97, 0x24, 0x11, 0x16, 0x63, 0x53, 0x71, 0x41, 0xe7, 0x29, 0x66, 0xa4, 0xe7, 0x7b, 0x54, 0x60, + 0x7d, 0x99, 0xc0, 0xab, 0xf7, 0x0f, 0x0f, 0x1d, 0xff, 0x35, 0xaa, 0xe8, 0x78, 0x43, 0x03, 0x79, + 0x5d, 0x75, 0xf8, 0x17, 0x47, 0xe5, 0x73, 0x2a, 0x71, 0x1b, 0x66, 0xb5, 0x13, 0x29, 0xba, 0x54, + 0x8a, 0x7f, 0x48, 0x94, 0xa3, 0xb2, 0x04, 0xc0, 0x83, 0xf7, 0x6e, 0x78, 0xfb, 0xdc, 0x33, 0x59, + 0x29, 0xb1, 0x1e, 0xc2, 0x5c, 0x8c, 0x26, 0x17, 0xac, 0xde, 0x06, 0x29, 0x0a, 0x52, 0xa2, 0x43, + 0xd5, 0x0b, 0xbf, 0x3a, 0x2a, 0x4f, 0x91, 0x6d, 0x71, 0x27, 0x0a, 0xa5, 0x25, 0xfe, 0xb2, 0x9e, + 0xaa, 0x12, 0x7b, 0xa5, 0xa3, 0xbd, 0x29, 0xb9, 0x0f, 0xe7, 0x59, 0x49, 0x2c, 0x60, 0x8d, 0x0a, + 0xcd, 0x47, 0xcb, 0x01, 0xad, 0x39, 0xea, 0x37, 0x46, 0x7f, 0x54, 0x22, 0x0f, 0x65, 0x6b, 0x97, + 0x45, 0x4f, 0x8c, 0x8a, 0x65, 0x50, 0x9c, 0xe1, 0x4a, 0xe4, 0x49, 0x2d, 0xcc, 0x92, 0x02, 0xae, + 0xeb, 0xbd, 0xea, 0xe0, 0xf6, 0x3e, 0xcd, 0x66, 0x53, 0x9d, 0xe4, 0x66, 0xc9, 0x61, 0x87, 0x10, + 0xa0, 0x68, 0xd6, 0x67, 0x30, 0x57, 0xeb, 0x60, 0xc7, 0x8f, 0xb7, 0x87, 0x6e, 0xc2, 0x28, 0x2d, + 0xd3, 0x2f, 0xd8, 0x1c, 0x52, 0x44, 0x2f, 0xd8, 0x78, 0x25, 0x11, 0x32, 0x59, 0x1c, 0x11, 0x75, + 0x48, 0x91, 0x7c, 0x37, 0x42, 0x7f, 0xc7, 0xbc, 0x8e, 0x0c, 0xa3, 0x67, 0x70, 0xd6, 0xa7, 0xf4, + 0x5a, 0xdb, 0x94, 0xc8, 0xe8, 0x64, 0x7e, 0x70, 0xff, 0x1f, 0x2c, 0x56, 0x7a, 0x3d, 0xdc, 0x6d, + 0x47, 0x88, 0x44, 0x0d, 0x3e, 0x99, 0x7f, 0x31, 0xaa, 0xc0, 0x08, 0x85, 0x96, 0xa6, 0x09, 0xde, + 0x5d, 0x43, 0x77, 0x28, 0x1c, 0x97, 0xb9, 0x69, 0x03, 0x0c, 0xd3, 0x6a, 0xc3, 0x7c, 0xbd, 0xbf, + 0x77, 0xe8, 0xb2, 0x9c, 0x41, 0xd4, 0x47, 0x5f, 0xb4, 0xbd, 0x2e, 0x02, 0xde, 0xb2, 0xc9, 0xb8, + 0x15, 0x25, 0x28, 0xa2, 0x77, 0x85, 0xdc, 0x6f, 0xff, 0xe5, 0xfd, 0x3b, 0x11, 0x2a, 0xfd, 0x1c, + 0xb2, 0x56, 0x68, 0x35, 0x0f, 0x8a, 0x6b, 0x5d, 0x84, 0x0b, 0xaa, 0x9a, 0xc7, 0x76, 0xc8, 0x1c, + 0x5c, 0xd4, 0xd5, 0x37, 0x56, 0xfc, 0x15, 0xcc, 0x32, 0xbb, 0x24, 0x8b, 0x40, 0xb4, 0x1c, 0x05, + 0xdb, 0xc9, 0x37, 0x96, 0x63, 0x37, 0x8c, 0xd4, 0x49, 0x54, 0xc6, 0x96, 0x6b, 0x2c, 0x33, 0xd7, + 0xa4, 0x97, 0xcb, 0x9a, 0x91, 0x20, 0xdf, 0x58, 0xae, 0x8e, 0x72, 0xdd, 0x83, 0x50, 0x67, 0xcb, + 0xff, 0x6b, 0xa1, 0xbe, 0x4c, 0xbd, 0x61, 0xd7, 0xb0, 0x43, 0x6f, 0xae, 0xcd, 0x3e, 0x85, 0xd3, + 0x90, 0x77, 0xdb, 0xe2, 0xd3, 0xe3, 0xb6, 0xad, 0x3f, 0xc9, 0xc1, 0x2d, 0x66, 0xb6, 0x30, 0xe3, + 0x51, 0x6d, 0x22, 0x05, 0x19, 0x7d, 0x00, 0x2c, 0x89, 0x07, 0xb7, 0x3b, 0x5a, 0xbc, 0xe7, 0x59, + 0x94, 0x18, 0x02, 0xaa, 0xc0, 0xa4, 0x7a, 0xc5, 0x1d, 0x7b, 0xb3, 0x9c, 0x62, 0x57, 0xb0, 0x27, + 0x0e, 0x9f, 0x3b, 0xf2, 0xda, 0xfb, 0x05, 0x2c, 0xac, 0x7e, 0x4d, 0x36, 0x04, 0x0f, 0x88, 0xcd, + 0xef, 0x06, 0x22, 0x9f, 0xb5, 0x99, 0x1d, 0xbe, 0x63, 0xf4, 0x6f, 0x43, 0xbc, 0x98, 0x7c, 0x33, + 0x39, 0x09, 0x9f, 0xaa, 0x40, 0xec, 0x3b, 0xa1, 0x95, 0x59, 0xff, 0x3e, 0x07, 0x8b, 0xe6, 0xd6, + 0x38, 0x63, 0x59, 0x87, 0x0b, 0x35, 0xa7, 0xeb, 0x75, 0xdd, 0x96, 0xd3, 0xa9, 0xb7, 0x0e, 0x70, + 0xbb, 0xdf, 0x11, 0x37, 0xff, 0x92, 0xcb, 0x10, 0x19, 0x80, 0xa3, 0x0b, 0x10, 0x3b, 0x89, 0x85, + 0xde, 0x83, 0x4b, 0xf4, 0xde, 0x95, 0xf1, 0xde, 0x0e, 0xf6, 0x25, 0x3d, 0xd6, 0xb3, 0x94, 0x5a, + 0x74, 0x0f, 0x2e, 0x32, 0x61, 0xa5, 0xbd, 0xdb, 0x75, 0x43, 0x89, 0xc4, 0x44, 0x05, 0x53, 0x95, + 0xf5, 0x53, 0x98, 0xaf, 0x04, 0x81, 0x1b, 0x84, 0x0e, 0x11, 0x4e, 0x02, 0x72, 0x90, 0xc4, 0xf4, + 0x7d, 0x17, 0x66, 0x5a, 0x5e, 0xf7, 0x25, 0xf6, 0x03, 0x87, 0xab, 0x0a, 0x7c, 0xfa, 0xa6, 0xd5, + 0xe2, 0xf5, 0x36, 0xf9, 0xa6, 0xf4, 0x35, 0xef, 0x37, 0x5b, 0xfe, 0xb6, 0xfe, 0x6d, 0x0e, 0x0a, + 0xf1, 0x06, 0xce, 0x84, 0x32, 0x42, 0x40, 0x53, 0x89, 0x88, 0x90, 0xa4, 0xe4, 0x6f, 0xf4, 0x08, + 0x26, 0xb9, 0xb3, 0x52, 0x93, 0xca, 0x2a, 0xc3, 0xa7, 0x78, 0x80, 0x34, 0xc1, 0x31, 0x49, 0x1d, + 0x11, 0x27, 0x7a, 0xce, 0xeb, 0x8e, 0xe7, 0xf0, 0xb4, 0x10, 0xb6, 0xf8, 0x69, 0xd5, 0x69, 0x08, + 0xd7, 0xf8, 0x90, 0xa2, 0x5d, 0xf0, 0x00, 0xc6, 0x0e, 0x79, 0x99, 0x7c, 0x54, 0xc1, 0x9f, 0xe1, + 0xc7, 0xe7, 0x59, 0x02, 0x5a, 0x9f, 0xd2, 0x63, 0x2b, 0x01, 0x6a, 0xca, 0x2c, 0x04, 0xca, 0x97, + 0xbb, 0xaf, 0xf9, 0x22, 0x29, 0xb3, 0xfc, 0x9b, 0x39, 0x2a, 0xa8, 0x45, 0x53, 0xd7, 0x7d, 0xee, + 0x25, 0x8e, 0xea, 0x2c, 0x8c, 0x84, 0x6e, 0x28, 0xf7, 0x10, 0xfb, 0x91, 0x98, 0xb2, 0xa1, 0x37, + 0x9c, 0x32, 0x6b, 0x8f, 0x3e, 0xe5, 0x49, 0x1b, 0x83, 0xfc, 0xf8, 0x4e, 0xa9, 0x4b, 0x1c, 0x9f, + 0xa2, 0xf8, 0x18, 0x6c, 0x1d, 0xda, 0xfa, 0x2b, 0x39, 0xe9, 0x1c, 0x65, 0x6a, 0xe7, 0x04, 0x53, + 0x95, 0x18, 0x6f, 0xfe, 0x4d, 0xc7, 0xfb, 0x2e, 0x5c, 0xcf, 0xec, 0x0a, 0x1f, 0x71, 0x9c, 0xdb, + 0xfe, 0x56, 0x0e, 0x6e, 0x32, 0x6e, 0x6b, 0xc4, 0x53, 0x6d, 0x33, 0x67, 0x72, 0x4c, 0xe4, 0xaa, + 0x0f, 0x29, 0xab, 0x7e, 0xfb, 0x36, 0x8c, 0x6f, 0xf5, 0x30, 0x4f, 0x95, 0x3d, 0x06, 0xc3, 0xeb, + 0x9b, 0xeb, 0x3b, 0x2c, 0x51, 0xdf, 0xf6, 0xee, 0x4e, 0x21, 0x87, 0x00, 0xce, 0xaf, 0xac, 0x6e, + 0xac, 0xee, 0xac, 0x16, 0xf2, 0xb7, 0x9b, 0xaa, 0x47, 0x10, 0x5a, 0x80, 0xf9, 0x95, 0xd5, 0xc6, + 0x7a, 0x6d, 0xb5, 0xb9, 0xf3, 0xa3, 0xed, 0xd5, 0xa6, 0x1e, 0xea, 0x69, 0x16, 0x0a, 0x6a, 0xe5, + 0xce, 0xd6, 0xce, 0x36, 0xcb, 0xbe, 0xa7, 0x96, 0x3e, 0x5b, 0xad, 0x56, 0x76, 0x77, 0xd6, 0x36, + 0x0b, 0x43, 0xd6, 0xf0, 0x58, 0xbe, 0x90, 0xbf, 0xfd, 0x33, 0xcd, 0x5d, 0x08, 0x2d, 0x42, 0x91, + 0x83, 0xef, 0xd6, 0x2b, 0x8f, 0xd2, 0x9b, 0x60, 0xb5, 0x4f, 0x1f, 0x56, 0x0a, 0x39, 0x74, 0x05, + 0x2e, 0x6b, 0xa5, 0xdb, 0x95, 0x7a, 0xfd, 0xd9, 0x96, 0xbd, 0xb2, 0xb1, 0x5a, 0xaf, 0x17, 0xf2, + 0xb7, 0x1b, 0x5a, 0x78, 0x20, 0xd2, 0xc2, 0xd3, 0x87, 0x95, 0xa6, 0xbd, 0xfa, 0xf9, 0xee, 0xba, + 0xbd, 0xba, 0x92, 0x6c, 0x41, 0xab, 0xfd, 0xd1, 0x6a, 0xbd, 0x90, 0x43, 0x17, 0x61, 0x46, 0x2b, + 0xdd, 0xdc, 0x2a, 0xe4, 0x6f, 0xdf, 0xe4, 0x2f, 0x0f, 0xd1, 0x34, 0xc0, 0xca, 0x6a, 0xbd, 0xb6, + 0xba, 0xb9, 0xb2, 0xbe, 0xf9, 0xa8, 0x70, 0x0e, 0x4d, 0xc1, 0x78, 0x45, 0xfe, 0xcc, 0x2d, 0xff, + 0xc1, 0xef, 0xe5, 0x60, 0x82, 0x7c, 0xcf, 0x84, 0xeb, 0x47, 0x28, 0xee, 0x3e, 0x8d, 0x9b, 0x00, + 0xbd, 0xa5, 0xe5, 0x36, 0xc8, 0xda, 0xeb, 0xa5, 0xdb, 0x27, 0x01, 0xe5, 0x7b, 0xb1, 0x4b, 0x2d, + 0x92, 0xe6, 0x23, 0x8a, 0x22, 0x73, 0x6d, 0x36, 0x23, 0x2a, 0xdd, 0x1a, 0x0c, 0xc8, 0xdb, 0xfb, + 0x92, 0x89, 0xe0, 0x71, 0x5e, 0x89, 0x96, 0xd2, 0x38, 0x22, 0x6f, 0xe1, 0xba, 0xa1, 0x85, 0x04, + 0xa3, 0x5d, 0x87, 0x4b, 0xb1, 0x31, 0x8b, 0xcf, 0x4b, 0x1a, 0xc3, 0x2d, 0x5d, 0x4a, 0x9c, 0xf2, + 0x55, 0x22, 0x44, 0xa1, 0x03, 0x28, 0x0f, 0x38, 0x92, 0xe8, 0x6d, 0xa9, 0x7f, 0x9d, 0xe4, 0xe8, + 0xa6, 0xb6, 0xf4, 0x95, 0xa2, 0xf3, 0xf1, 0xef, 0x37, 0x4f, 0x9e, 0x90, 0xaa, 0xe0, 0x51, 0x91, + 0xb6, 0x94, 0x61, 0xd2, 0xa1, 0x00, 0xb7, 0x72, 0xf7, 0x72, 0xc8, 0xa6, 0x97, 0x19, 0x31, 0xa5, + 0x52, 0x52, 0x36, 0x2b, 0xa9, 0xa5, 0x94, 0x6a, 0xa1, 0x8b, 0x3e, 0x86, 0x29, 0xa2, 0xeb, 0xc9, + 0x5a, 0xb4, 0x10, 0x87, 0x57, 0xd4, 0xcb, 0xd2, 0xa2, 0xb9, 0x52, 0x46, 0x39, 0x9d, 0xa4, 0xfd, + 0x23, 0x53, 0xd7, 0xc2, 0x01, 0x9a, 0x93, 0x39, 0xfe, 0x59, 0x09, 0xf3, 0xe6, 0x28, 0x5d, 0x88, + 0x15, 0x37, 0xee, 0xdf, 0xcb, 0xa1, 0x3a, 0x7d, 0x15, 0xab, 0x29, 0x8d, 0x48, 0xb8, 0x81, 0x25, + 0xb5, 0x49, 0xd6, 0x9b, 0x72, 0xb4, 0x8f, 0xcc, 0xda, 0xe6, 0x26, 0xa0, 0xa4, 0x2e, 0x86, 0xae, + 0x46, 0x4b, 0x61, 0x56, 0xd3, 0x52, 0x97, 0x77, 0x15, 0xa6, 0xf9, 0x9e, 0xe4, 0xda, 0x21, 0xca, + 0xd2, 0x2f, 0x53, 0xc9, 0x3c, 0xa2, 0xf3, 0x24, 0x35, 0x4c, 0x54, 0x52, 0xce, 0x43, 0x4c, 0xed, + 0x2c, 0x2d, 0x18, 0xeb, 0xf8, 0xf8, 0x1e, 0xc2, 0xb4, 0xae, 0xac, 0x22, 0xb1, 0x40, 0x46, 0x1d, + 0x36, 0xb5, 0x43, 0x4d, 0x98, 0x7f, 0xea, 0xb8, 0xd4, 0x7e, 0xc3, 0x2f, 0x23, 0xc5, 0x55, 0x22, + 0x2a, 0x67, 0xdc, 0x2d, 0xd6, 0x71, 0xb7, 0x5d, 0x1a, 0x14, 0x0f, 0x82, 0xee, 0xdc, 0xba, 0xd0, + 0xb9, 0xf4, 0xab, 0x58, 0x64, 0xe9, 0x49, 0x5e, 0x4c, 0xb7, 0xeb, 0xa5, 0x34, 0x87, 0x10, 0xf4, + 0x94, 0x2a, 0x7d, 0x31, 0x8a, 0xca, 0x9e, 0x38, 0x35, 0xb9, 0x22, 0xf5, 0x20, 0x0f, 0xdd, 0xb8, + 0x67, 0x47, 0x80, 0x52, 0x26, 0x2e, 0x95, 0xd8, 0xbd, 0x1c, 0xfa, 0x0a, 0xac, 0x34, 0x72, 0xcf, + 0xdc, 0xf0, 0x80, 0x7b, 0x36, 0x2d, 0x18, 0x09, 0xf0, 0x83, 0x92, 0x41, 0xdd, 0x86, 0x59, 0x93, + 0x0f, 0x8a, 0x9c, 0xd0, 0x0c, 0x07, 0x95, 0xd4, 0x5d, 0x60, 0x13, 0xd5, 0xb5, 0x9d, 0xbe, 0x48, + 0x19, 0x2e, 0x10, 0xa9, 0x34, 0x3f, 0x81, 0x69, 0xb2, 0x4b, 0x9e, 0x60, 0xdc, 0xab, 0x74, 0xdc, + 0x97, 0x38, 0x40, 0x22, 0x56, 0x8a, 0x2c, 0x4a, 0xc3, 0xbd, 0x95, 0x43, 0xdf, 0x83, 0x89, 0x67, + 0x4e, 0xd8, 0x3a, 0xe0, 0x4f, 0xfb, 0xc5, 0xcb, 0x7f, 0x5a, 0x56, 0x12, 0xbf, 0x68, 0xe5, 0xbd, + 0x1c, 0xfa, 0x01, 0x8c, 0x3e, 0xc2, 0x21, 0x75, 0xc3, 0xbd, 0x26, 0xaf, 0x63, 0x99, 0xeb, 0xd3, + 0x7a, 0x57, 0x3a, 0x29, 0x8a, 0x0e, 0xc7, 0x2d, 0x7e, 0xe8, 0x2e, 0x00, 0x63, 0x08, 0x94, 0x42, + 0xbc, 0xba, 0x94, 0xe8, 0x36, 0x7a, 0x44, 0xe4, 0xa6, 0x0e, 0x0e, 0xf1, 0x49, 0x9b, 0x4c, 0x9b, + 0xa3, 0x0d, 0x98, 0x96, 0x81, 0x61, 0x37, 0xe9, 0x3b, 0x0e, 0x2b, 0x46, 0x2c, 0x38, 0x05, 0xb5, + 0x8f, 0xc8, 0xa9, 0x60, 0xd7, 0xa3, 0x32, 0x8e, 0x0c, 0x4a, 0x8b, 0x2c, 0x23, 0x27, 0x91, 0x81, + 0x29, 0xb8, 0x6b, 0x5e, 0x10, 0xea, 0xb8, 0xb2, 0xc4, 0x8c, 0x8b, 0xa1, 0xa4, 0xb6, 0xab, 0xc7, + 0x94, 0x89, 0x78, 0x6e, 0x5a, 0x28, 0x9c, 0xd2, 0xb5, 0x0c, 0x08, 0xc6, 0xee, 0x28, 0x27, 0x59, + 0x81, 0x8b, 0xa2, 0x99, 0xad, 0x1e, 0xee, 0xd6, 0xeb, 0x6b, 0x34, 0xa4, 0x88, 0xb8, 0xf0, 0x51, + 0xca, 0x04, 0x61, 0x94, 0xac, 0x22, 0x5f, 0x3d, 0x2d, 0x96, 0x49, 0xf4, 0xd5, 0x33, 0x04, 0x9b, + 0x89, 0xbe, 0x7a, 0xc6, 0xf0, 0x27, 0x4f, 0x98, 0x7d, 0x52, 0xcb, 0x61, 0xde, 0x58, 0x46, 0xc2, + 0x27, 0x5b, 0xab, 0xe0, 0x07, 0xfb, 0x92, 0xa9, 0xae, 0xf1, 0xe0, 0x5e, 0x0e, 0xad, 0xc2, 0x45, + 0xf9, 0xec, 0x26, 0xaa, 0x42, 0x29, 0x08, 0xa9, 0x9b, 0xe0, 0x33, 0xb8, 0xc8, 0xb7, 0x94, 0x46, + 0xa6, 0x20, 0xb9, 0x03, 0xbf, 0xa3, 0x4d, 0x25, 0xf0, 0x18, 0xe6, 0xea, 0xb1, 0x41, 0x31, 0x8f, + 0xa2, 0xcb, 0x3a, 0x09, 0x25, 0x5d, 0x6c, 0x2a, 0xad, 0x27, 0x80, 0x98, 0x09, 0x50, 0x90, 0x7b, + 0xe9, 0xe2, 0x57, 0xe8, 0x4a, 0x6c, 0x48, 0xa4, 0x90, 0x82, 0x51, 0xf6, 0x92, 0x36, 0x45, 0x68, + 0x87, 0xa5, 0xbb, 0x61, 0xa9, 0xe8, 0x9c, 0x9e, 0xb3, 0xe7, 0x76, 0xdc, 0xd0, 0xc5, 0x64, 0x87, + 0xa9, 0x08, 0x6a, 0x95, 0x58, 0xc6, 0xcb, 0xa9, 0x10, 0xe8, 0x53, 0x98, 0x7a, 0x84, 0xc3, 0x28, + 0x23, 0x2e, 0x9a, 0x4f, 0xe4, 0xd0, 0xe5, 0x4b, 0x27, 0x1e, 0x79, 0xea, 0x69, 0x78, 0xd7, 0xa1, + 0xc0, 0xb8, 0xa3, 0x42, 0xe2, 0x4a, 0x82, 0x04, 0x07, 0x71, 0x7c, 0xe7, 0x30, 0x48, 0x9d, 0xad, + 0xbb, 0xec, 0xca, 0x0e, 0x89, 0x6d, 0xab, 0x8a, 0x5f, 0x17, 0xb5, 0x32, 0x19, 0x94, 0x6b, 0xce, + 0x98, 0x0a, 0x16, 0x29, 0x62, 0x76, 0x6a, 0x7e, 0xd7, 0x12, 0x8a, 0x3f, 0xc1, 0x6c, 0x3c, 0x40, + 0x32, 0x3b, 0x88, 0x81, 0xe8, 0x4d, 0xed, 0x8b, 0x7d, 0x3a, 0xba, 0x9f, 0xc2, 0xb8, 0xcc, 0x29, + 0x2a, 0xd9, 0x4a, 0x3c, 0x23, 0x6b, 0xa9, 0x98, 0xac, 0xe0, 0x23, 0xfd, 0x84, 0x65, 0x10, 0xd6, + 0xf1, 0xe3, 0x69, 0x37, 0x53, 0x27, 0xf6, 0x43, 0x98, 0x50, 0x12, 0x6e, 0xca, 0x8d, 0x9c, 0x4c, + 0xc2, 0x59, 0x9a, 0x52, 0xfa, 0xde, 0x58, 0xbe, 0x97, 0x43, 0x77, 0xe9, 0xa7, 0x85, 0xbe, 0x41, + 0x9a, 0x8b, 0xd0, 0x94, 0x54, 0x7a, 0x31, 0x14, 0xf4, 0x3e, 0x0d, 0xd5, 0x52, 0xeb, 0xfb, 0x3e, + 0xee, 0x32, 0xbc, 0x34, 0x09, 0x22, 0x86, 0xf8, 0x29, 0x65, 0x26, 0x0a, 0x22, 0x73, 0xd1, 0x19, + 0x84, 0xcd, 0x42, 0xfd, 0xde, 0xcb, 0xa1, 0x07, 0x30, 0x26, 0xf2, 0x73, 0xa3, 0x4b, 0x7a, 0x57, + 0xd3, 0x87, 0xf7, 0x00, 0x80, 0x4d, 0x36, 0xed, 0xa9, 0x5e, 0x9d, 0x3a, 0x9d, 0x0f, 0xc8, 0xf7, + 0xb2, 0x7d, 0x4a, 0xa4, 0x4f, 0xc5, 0x37, 0x93, 0x22, 0x15, 0xb5, 0x25, 0x54, 0xa7, 0x33, 0x0d, + 0x9f, 0x08, 0xbc, 0x5a, 0xda, 0xf0, 0x48, 0xe0, 0x35, 0x65, 0x13, 0x4f, 0xa5, 0xb3, 0x0e, 0x85, + 0x4a, 0x8b, 0xf2, 0x71, 0x99, 0x9e, 0x50, 0x6a, 0x1b, 0xf1, 0x0a, 0x41, 0x6b, 0x2e, 0x9e, 0xed, + 0x70, 0x03, 0x3b, 0x34, 0x7a, 0xcd, 0xbc, 0x94, 0x09, 0x62, 0x55, 0x66, 0x8c, 0x0c, 0xed, 0x62, + 0xb6, 0x46, 0xf4, 0xa1, 0xce, 0x37, 0x23, 0xf3, 0x11, 0xe5, 0x65, 0x4a, 0xea, 0xc6, 0x4b, 0x71, + 0x7c, 0xa9, 0x87, 0x09, 0xf7, 0x48, 0x09, 0x5a, 0x81, 0x19, 0x1e, 0x2b, 0x43, 0x4e, 0x4b, 0x1a, + 0x76, 0x5a, 0xf3, 0xef, 0xc3, 0xf4, 0x2a, 0xe1, 0xf5, 0xfd, 0xb6, 0xcb, 0x22, 0x76, 0x21, 0x3d, + 0x04, 0x53, 0x2a, 0xe2, 0x9a, 0xc8, 0x38, 0xac, 0xe4, 0x34, 0x94, 0xa7, 0x34, 0x99, 0x36, 0xb2, + 0x34, 0x2b, 0xc8, 0xaa, 0xe9, 0x0f, 0xb9, 0x9e, 0x3c, 0x9f, 0x92, 0x45, 0x10, 0xdd, 0xd0, 0x74, + 0xbf, 0xb4, 0x54, 0x80, 0x06, 0x69, 0xef, 0x0b, 0x25, 0xaf, 0x4a, 0x0a, 0xcd, 0xec, 0xf4, 0x82, + 0xa9, 0xe3, 0x96, 0x31, 0x76, 0x8c, 0x69, 0x00, 0xa5, 0xad, 0x68, 0x70, 0xaa, 0xc0, 0xd4, 0x16, + 0xa8, 0x6e, 0xad, 0x67, 0xa9, 0x93, 0x36, 0x9a, 0x94, 0x64, 0x7a, 0x8a, 0x6e, 0x9d, 0x92, 0xde, + 0xee, 0x31, 0xdd, 0x66, 0x51, 0xf2, 0x15, 0xa4, 0x6a, 0xaa, 0xf1, 0xdc, 0x33, 0x52, 0x84, 0x32, + 0xa7, 0xaa, 0x7b, 0x44, 0xd9, 0xa5, 0x92, 0xc8, 0x25, 0x95, 0xe1, 0x5d, 0x31, 0xd1, 0x09, 0x94, + 0x6f, 0xe1, 0x4c, 0x2c, 0xe9, 0x9b, 0x34, 0x8f, 0x98, 0xd3, 0xce, 0x95, 0x96, 0xd2, 0xaa, 0x39, + 0xc5, 0xba, 0xc8, 0x19, 0xae, 0x8c, 0x74, 0x49, 0xb7, 0xc9, 0x25, 0x06, 0x5b, 0x4e, 0xad, 0x97, + 0x73, 0x57, 0x88, 0x27, 0xe9, 0x91, 0x44, 0x53, 0xb2, 0xf7, 0x64, 0xb0, 0xc4, 0x59, 0x75, 0x6b, + 0x0c, 0x9c, 0xc1, 0x34, 0x3a, 0x3b, 0x30, 0x67, 0xcc, 0xa9, 0x23, 0xc5, 0x88, 0xac, 0x8c, 0x3b, + 0xa9, 0x54, 0xb1, 0xb0, 0xe2, 0xc5, 0xb3, 0x08, 0xa1, 0xef, 0xe8, 0xaa, 0xbf, 0x39, 0xc9, 0x50, + 0xe9, 0xc6, 0x00, 0x28, 0x3e, 0xa1, 0x5f, 0xd1, 0xcf, 0x66, 0xa2, 0x8d, 0x6b, 0x8a, 0x31, 0x20, + 0xa5, 0x01, 0x2b, 0x0b, 0x44, 0xee, 0x81, 0x59, 0x53, 0x5a, 0xbf, 0xd4, 0x29, 0xbe, 0x9e, 0x4e, + 0x33, 0xda, 0x58, 0x0d, 0x11, 0xd9, 0x26, 0x75, 0x66, 0x32, 0xd3, 0x2f, 0x65, 0x68, 0x93, 0x25, + 0xb9, 0x1f, 0x4e, 0xde, 0xe5, 0x74, 0xcb, 0xd0, 0xac, 0x29, 0xe9, 0x57, 0xdc, 0x70, 0x63, 0xca, + 0xe9, 0x24, 0xa7, 0x21, 0x33, 0x6b, 0x58, 0x83, 0x19, 0x71, 0x74, 0xea, 0xaa, 0x11, 0xc7, 0x48, + 0xfa, 0x6a, 0x3a, 0x40, 0xb4, 0x23, 0x0c, 0xd9, 0x0b, 0xe5, 0x8e, 0x48, 0xcf, 0xa3, 0x28, 0x77, + 0x44, 0x56, 0xf2, 0x43, 0x5b, 0x1c, 0xba, 0x94, 0x69, 0xc9, 0x48, 0x75, 0x95, 0xa1, 0x72, 0x15, + 0xa3, 0x85, 0x8b, 0x75, 0xfb, 0xb4, 0xcb, 0xf6, 0x15, 0x5c, 0x4e, 0x4d, 0x6b, 0x25, 0x6f, 0x02, + 0x06, 0x25, 0xbe, 0xca, 0xe8, 0xe9, 0x94, 0x96, 0x91, 0x4a, 0x5a, 0xb1, 0x62, 0xc9, 0xaf, 0x12, + 0xac, 0xdf, 0x90, 0x19, 0x8b, 0xb1, 0x7e, 0x25, 0xbb, 0xd5, 0x49, 0x58, 0xbf, 0x29, 0x19, 0x96, + 0xe4, 0xa9, 0x4a, 0xbf, 0x84, 0x48, 0x17, 0xaf, 0x38, 0x0d, 0x4f, 0x3d, 0x49, 0xd7, 0xd2, 0xe8, + 0xac, 0x50, 0x95, 0x43, 0x24, 0xbb, 0x42, 0x97, 0xb5, 0x69, 0xd2, 0x3e, 0xb7, 0x25, 0x6d, 0x70, + 0xfa, 0x97, 0xb6, 0x46, 0xcd, 0xc5, 0x32, 0xb9, 0x56, 0x6a, 0x2f, 0x16, 0x92, 0x34, 0x34, 0x53, + 0xb1, 0x9c, 0x05, 0xd6, 0x9b, 0xc5, 0xf8, 0xe4, 0x68, 0x1d, 0x4a, 0x1f, 0x12, 0x52, 0xa7, 0x66, + 0x40, 0x97, 0xd2, 0x45, 0xdd, 0x8b, 0x4c, 0x79, 0x60, 0xa1, 0x27, 0xc5, 0x03, 0xf4, 0x4b, 0xd2, + 0xee, 0xa5, 0x94, 0x66, 0x98, 0x39, 0xb6, 0xa9, 0x33, 0xa9, 0x21, 0x4f, 0x98, 0xe4, 0xa1, 0x99, + 0x69, 0xc4, 0x0c, 0x62, 0x9e, 0xe4, 0xca, 0xa9, 0x14, 0x33, 0x13, 0x87, 0xa5, 0xf6, 0xf4, 0xa7, + 0x0a, 0x57, 0x4e, 0x64, 0x03, 0x43, 0xb7, 0xe2, 0x32, 0x5e, 0x5a, 0xc2, 0xb0, 0x0c, 0xae, 0x3f, + 0x6b, 0x4a, 0x24, 0xa6, 0xd8, 0x6e, 0x53, 0xb3, 0x8c, 0x19, 0x66, 0x41, 0xb2, 0xb7, 0x14, 0x6a, + 0x19, 0x69, 0xc5, 0x52, 0x7b, 0xf8, 0x63, 0x85, 0xbd, 0xc5, 0xd2, 0x7f, 0x49, 0xa3, 0xc2, 0x80, + 0xfc, 0x60, 0xa9, 0xb4, 0x37, 0xa9, 0xfb, 0x71, 0x32, 0x77, 0x97, 0x94, 0x5d, 0xb2, 0x32, 0x7b, + 0x19, 0x4d, 0xbb, 0x73, 0xc9, 0x21, 0x12, 0x7a, 0x97, 0x62, 0x86, 0xd9, 0xc1, 0xf7, 0x81, 0x97, + 0x53, 0x73, 0x7e, 0xc5, 0xf8, 0x70, 0x7a, 0x56, 0xb0, 0x0c, 0x8d, 0x69, 0xa6, 0xee, 0xee, 0x77, + 0x95, 0x34, 0x5e, 0x52, 0x5f, 0x4a, 0x66, 0x11, 0x93, 0x2c, 0xc6, 0x94, 0xf5, 0x6b, 0x2b, 0x7a, + 0x96, 0xa4, 0x26, 0x64, 0x42, 0xa5, 0xf4, 0x3c, 0x54, 0x92, 0xdd, 0x18, 0x33, 0x38, 0x29, 0x04, + 0xd5, 0x6c, 0x48, 0x92, 0xa0, 0x21, 0x31, 0x93, 0x24, 0x68, 0x4c, 0x9f, 0xc4, 0x4c, 0x30, 0xb6, + 0xd7, 0xc1, 0xaa, 0x09, 0x46, 0xc9, 0x65, 0x14, 0xb3, 0x85, 0xa0, 0x8f, 0xa9, 0x25, 0x24, 0xdb, + 0x7c, 0x32, 0xaf, 0x53, 0x52, 0xbd, 0x7c, 0xf8, 0x65, 0x00, 0x6d, 0x50, 0xa7, 0x3c, 0xd8, 0xb8, + 0x41, 0x91, 0x74, 0xe3, 0x86, 0xda, 0xd1, 0x74, 0x3b, 0xe9, 0xa4, 0x1a, 0x0b, 0x5f, 0xce, 0x95, + 0x21, 0x61, 0x87, 0x9c, 0x2b, 0x53, 0x1a, 0x0c, 0xaa, 0x03, 0xef, 0x08, 0x4d, 0x3e, 0xa2, 0x77, + 0x25, 0x33, 0x8f, 0x45, 0x69, 0x29, 0x3b, 0xf9, 0x03, 0xbf, 0xc7, 0x2b, 0xc4, 0xc3, 0xf5, 0x23, + 0x53, 0x1a, 0x12, 0x25, 0x0b, 0x82, 0xd4, 0x86, 0x52, 0xe3, 0xfc, 0x6f, 0x0b, 0x63, 0xb5, 0x4e, + 0x37, 0x25, 0x19, 0x85, 0x4a, 0x3a, 0x5b, 0x40, 0x89, 0x22, 0xf7, 0xab, 0xba, 0x69, 0x22, 0x33, + 0x80, 0x2a, 0xa0, 0x18, 0x82, 0xfd, 0xbb, 0xd2, 0x95, 0xc3, 0x98, 0x10, 0x2b, 0xe6, 0xca, 0x91, + 0x11, 0xd3, 0x69, 0xe0, 0x4d, 0x29, 0xfa, 0x89, 0x48, 0x7c, 0x9d, 0x4c, 0xfc, 0x72, 0x23, 0x66, + 0x76, 0x35, 0x47, 0x01, 0x2a, 0x65, 0xe5, 0x95, 0x41, 0x4f, 0xe9, 0x15, 0xfb, 0xd6, 0xfa, 0x4a, + 0x8d, 0x3b, 0xf0, 0x7a, 0x7e, 0xe2, 0xda, 0xea, 0x99, 0x1b, 0x1e, 0xb0, 0x4c, 0x48, 0x0a, 0xf7, + 0x61, 0x20, 0x1a, 0x62, 0xe3, 0x01, 0xaa, 0x53, 0xc9, 0x5d, 0x2b, 0x35, 0xdc, 0x5c, 0x19, 0x08, + 0x96, 0xcc, 0x04, 0x69, 0xee, 0x46, 0x2a, 0x18, 0x90, 0x83, 0xa7, 0x77, 0x33, 0xa5, 0x0f, 0x59, + 0xf2, 0x05, 0xdb, 0x36, 0x66, 0x32, 0x27, 0x65, 0xdf, 0x8f, 0x60, 0x8e, 0x4d, 0x78, 0xec, 0xcd, + 0xa0, 0xd6, 0x1f, 0xa5, 0xbc, 0x94, 0x52, 0x8e, 0x36, 0xa9, 0xe7, 0x46, 0xbc, 0x54, 0xd1, 0x62, + 0xcc, 0x8f, 0x12, 0x53, 0xe9, 0xb1, 0xa5, 0x24, 0x62, 0xfb, 0x1b, 0x2d, 0xa5, 0x86, 0xd8, 0x58, + 0xe6, 0x4b, 0xa9, 0x95, 0x9e, 0x6e, 0x29, 0x63, 0x04, 0xf5, 0xa5, 0xd4, 0xbb, 0x99, 0xd2, 0x87, + 0xc1, 0x4b, 0x69, 0x26, 0x73, 0xea, 0xa5, 0x8c, 0x3d, 0xd8, 0xd4, 0xfa, 0x63, 0x5a, 0xca, 0x38, + 0x3c, 0x5b, 0xca, 0x78, 0x69, 0x4c, 0x21, 0xcd, 0x58, 0xca, 0x38, 0xe6, 0xe7, 0x94, 0x1e, 0x7b, + 0x11, 0x7a, 0xaa, 0xc5, 0x14, 0xb1, 0x8a, 0x62, 0xa8, 0x8d, 0x07, 0xe8, 0x19, 0xb5, 0x86, 0xc4, + 0xca, 0x4f, 0xb6, 0xa0, 0x8b, 0x69, 0x44, 0xe9, 0x92, 0xae, 0x0b, 0x39, 0x2b, 0xde, 0xdd, 0xd4, + 0xbe, 0x64, 0xad, 0x07, 0x5b, 0xd6, 0x38, 0xa9, 0xd3, 0x2e, 0xec, 0x53, 0xc1, 0x34, 0x13, 0x8f, + 0x6a, 0x63, 0xbd, 0x52, 0x17, 0x37, 0xb5, 0x06, 0xed, 0x50, 0x5b, 0x4f, 0xb2, 0x5c, 0xb1, 0x13, + 0xa5, 0xbd, 0xde, 0x1d, 0x48, 0x35, 0xf1, 0x4a, 0x57, 0xa5, 0x9a, 0xf6, 0x84, 0x57, 0x52, 0x4d, + 0x62, 0xaf, 0xd0, 0x63, 0xbb, 0xe3, 0x13, 0x35, 0xa9, 0x9d, 0xd4, 0xa1, 0xf4, 0xf9, 0x13, 0x37, + 0x9a, 0x3a, 0x78, 0x63, 0x19, 0xad, 0xd3, 0x0d, 0xa8, 0x17, 0x67, 0x29, 0x99, 0x66, 0x32, 0x74, + 0x7f, 0xac, 0xc9, 0xc7, 0x0f, 0x7a, 0x9f, 0xd2, 0xda, 0x4e, 0xef, 0x94, 0xd4, 0xc0, 0x4f, 0x38, + 0xba, 0xb4, 0xdd, 0xc1, 0xa4, 0x40, 0xa6, 0xf0, 0x0e, 0x9a, 0x99, 0xf8, 0x73, 0x0c, 0xf4, 0x43, + 0x18, 0x17, 0xc8, 0x83, 0x27, 0x24, 0x8e, 0x4d, 0x27, 0xe4, 0x53, 0x98, 0x50, 0x5e, 0x83, 0xa0, + 0xb4, 0x96, 0x32, 0x44, 0xca, 0x09, 0xe5, 0xad, 0xca, 0xe9, 0xf1, 0x57, 0x60, 0x4a, 0x7b, 0xeb, + 0x22, 0x05, 0x21, 0xd3, 0x0b, 0x98, 0x2c, 0x2a, 0xda, 0x9b, 0x16, 0x49, 0xc5, 0xf4, 0xd2, 0x25, + 0x5b, 0x28, 0x53, 0xde, 0xed, 0x2b, 0x42, 0x59, 0x32, 0x80, 0x80, 0x22, 0x94, 0x99, 0x9e, 0xfa, + 0xff, 0x00, 0x26, 0xf8, 0xf6, 0xc8, 0x5c, 0xd9, 0x74, 0x6d, 0x79, 0x4e, 0xf1, 0x19, 0xec, 0xb7, + 0xdd, 0xb0, 0xe6, 0x75, 0x9f, 0xbb, 0xfb, 0x03, 0x17, 0x39, 0x89, 0xd2, 0x58, 0x46, 0x0d, 0x9a, + 0x85, 0x41, 0xe4, 0xc6, 0xc0, 0xe1, 0x2b, 0xcf, 0x7f, 0xe1, 0x76, 0xf7, 0x07, 0x90, 0xbc, 0xaa, + 0x93, 0x8c, 0xe3, 0x31, 0xba, 0xf5, 0x74, 0xba, 0x03, 0xf1, 0x33, 0xb4, 0xe5, 0x45, 0x7a, 0x6f, + 0x7f, 0xda, 0x1e, 0xa7, 0xdf, 0x1c, 0x5c, 0x8e, 0xbc, 0xed, 0x6c, 0xdc, 0xf2, 0xfc, 0xf6, 0x60, + 0x62, 0x65, 0xdd, 0xb7, 0x2d, 0x86, 0xd6, 0x58, 0x26, 0x54, 0xeb, 0xa9, 0x54, 0x07, 0x61, 0x67, + 0x7c, 0x2d, 0x16, 0xe8, 0xd8, 0x4f, 0xd9, 0xdb, 0xf4, 0x93, 0x41, 0x38, 0x30, 0xe1, 0xf4, 0xdb, + 0x3e, 0x7e, 0x8e, 0x7d, 0xea, 0x32, 0x39, 0xc8, 0x59, 0x50, 0x07, 0x6f, 0x2c, 0x13, 0x2a, 0xf5, + 0x04, 0x95, 0x34, 0xe8, 0x2c, 0x41, 0x89, 0x0e, 0xed, 0x84, 0xbd, 0x49, 0x23, 0xf3, 0x01, 0xb5, + 0x59, 0xee, 0xae, 0x0f, 0x98, 0x11, 0xe1, 0xc4, 0x2b, 0x00, 0x1b, 0xf7, 0x09, 0x66, 0x5d, 0xc1, + 0x4c, 0x42, 0xa4, 0xb6, 0xf9, 0x43, 0x61, 0x9c, 0x1c, 0xd8, 0x6c, 0xba, 0x37, 0xc2, 0xb8, 0xcc, + 0x10, 0x85, 0x14, 0xb5, 0x5e, 0xcb, 0x7f, 0x54, 0x9a, 0x52, 0x5d, 0x06, 0x03, 0x54, 0x61, 0x52, + 0xb4, 0x9a, 0x29, 0x49, 0xb9, 0x17, 0x35, 0xa6, 0x50, 0x8a, 0x93, 0x60, 0x66, 0x89, 0x0d, 0xaf, + 0xf5, 0x42, 0x35, 0x4b, 0x28, 0xa9, 0x77, 0x4a, 0x7a, 0x62, 0x1c, 0xfe, 0x41, 0xa2, 0xd9, 0x71, + 0x54, 0x07, 0x0d, 0x35, 0xf9, 0x8e, 0x6a, 0x96, 0xd0, 0xd3, 0x04, 0x49, 0xb3, 0x04, 0x6d, 0x50, + 0xa7, 0x3c, 0xd8, 0x2c, 0x41, 0x91, 0x74, 0xb3, 0x84, 0xda, 0xd1, 0x74, 0x76, 0x81, 0x92, 0x79, + 0x82, 0xa4, 0xc0, 0x9b, 0x9a, 0x42, 0x28, 0xc3, 0xf7, 0xe2, 0xa2, 0x21, 0xb5, 0x99, 0x54, 0xf7, + 0xd3, 0xd3, 0x9e, 0x95, 0x74, 0x47, 0x82, 0x7b, 0x39, 0xb4, 0x09, 0x97, 0x1e, 0xe1, 0x90, 0x33, + 0x30, 0x1b, 0x07, 0xa1, 0xef, 0xb6, 0xc2, 0x4c, 0x4b, 0xbd, 0x90, 0x6f, 0x0d, 0x38, 0x8d, 0x77, + 0x08, 0xbd, 0xba, 0x99, 0x5e, 0x26, 0x5e, 0x86, 0x45, 0x87, 0x9b, 0xff, 0x4e, 0xd3, 0xc5, 0xf4, + 0x2d, 0x3e, 0xca, 0x6e, 0xbd, 0xd3, 0x51, 0x0b, 0x51, 0x68, 0x5b, 0x2e, 0xb1, 0xdf, 0x81, 0xf3, + 0x0c, 0x29, 0xf5, 0x1b, 0x39, 0xa9, 0xe2, 0xa0, 0xfb, 0xc2, 0x45, 0x8b, 0xa0, 0x68, 0x55, 0xa9, + 0xfd, 0xba, 0x0f, 0xe3, 0xfc, 0xd5, 0xc4, 0x89, 0x51, 0x3e, 0x16, 0x8e, 0x5c, 0x59, 0x1d, 0x4b, + 0xf7, 0x6d, 0x9c, 0x52, 0x2f, 0xbc, 0x4f, 0x3f, 0x91, 0x3f, 0xa0, 0xf7, 0x29, 0xc2, 0x6c, 0x99, + 0x8e, 0x3f, 0x17, 0x0b, 0x06, 0xcb, 0xa7, 0x94, 0x31, 0x48, 0x99, 0x23, 0x30, 0xad, 0xfb, 0x17, + 0x12, 0xd8, 0xe8, 0x63, 0xf1, 0x7c, 0x40, 0x22, 0x27, 0x81, 0x32, 0xe6, 0x6c, 0x9a, 0x4d, 0xf3, + 0x9b, 0x20, 0x4b, 0x06, 0x3b, 0xb0, 0xdb, 0x27, 0xb9, 0xf7, 0x19, 0x3c, 0x75, 0x69, 0x54, 0xb6, + 0xa8, 0xe0, 0x95, 0x08, 0x53, 0x9c, 0x4e, 0x68, 0x29, 0x3d, 0xb2, 0x31, 0x5d, 0x8c, 0xc7, 0x54, + 0xb1, 0x4a, 0xe6, 0x7b, 0x4c, 0x1b, 0x5e, 0x46, 0xa4, 0xe4, 0x48, 0x93, 0x4c, 0x92, 0xcb, 0x40, + 0xcb, 0x52, 0x4c, 0xd9, 0x82, 0x9d, 0x0d, 0xb9, 0x75, 0xe1, 0x80, 0x74, 0xf2, 0xc1, 0x66, 0x08, + 0x41, 0x86, 0x9b, 0xa6, 0x81, 0x6b, 0x91, 0x46, 0xee, 0x27, 0x54, 0xfe, 0x33, 0x27, 0x79, 0x4b, + 0x25, 0xa6, 0xbc, 0x32, 0x1b, 0x90, 0x1e, 0xee, 0x05, 0x7d, 0x97, 0x61, 0x0e, 0xe4, 0x7c, 0x73, + 0x00, 0x15, 0x31, 0x13, 0xdf, 0x1d, 0x08, 0x27, 0xef, 0x2d, 0x16, 0xd8, 0x17, 0xd6, 0xdc, 0xde, + 0x80, 0xc0, 0xd4, 0x86, 0xab, 0xa4, 0x94, 0x0c, 0x6a, 0x82, 0xa0, 0xee, 0xdd, 0x95, 0x39, 0x86, + 0xb4, 0xe9, 0xff, 0x1c, 0xca, 0xd1, 0x8d, 0xec, 0xe9, 0x16, 0x21, 0x5d, 0xa2, 0x47, 0xc9, 0xbc, + 0x72, 0x28, 0x2b, 0xc4, 0x6f, 0xe9, 0x5a, 0xda, 0x0c, 0x07, 0xca, 0x55, 0x3f, 0xf7, 0x25, 0x89, + 0x85, 0x34, 0x4f, 0x0b, 0x8e, 0x9e, 0x61, 0x3b, 0xe2, 0x0f, 0x55, 0xce, 0x84, 0x50, 0x72, 0xb5, + 0x4f, 0x4f, 0x48, 0x5e, 0x98, 0xc6, 0x08, 0x59, 0x19, 0xcb, 0x7b, 0x1a, 0x7f, 0x90, 0xf8, 0x52, + 0x9c, 0x76, 0x41, 0x9d, 0xe8, 0x71, 0x46, 0x32, 0xf9, 0x9d, 0x94, 0xe5, 0x52, 0x13, 0xf1, 0xc9, + 0xd5, 0xcd, 0xc8, 0x9c, 0x57, 0x23, 0xc7, 0x94, 0x35, 0xa1, 0x65, 0xde, 0xaa, 0xd9, 0x1b, 0x91, + 0xd5, 0xc1, 0x90, 0x92, 0xab, 0x04, 0xa2, 0xd2, 0xde, 0x40, 0x75, 0x28, 0xb1, 0x2d, 0x62, 0x0a, + 0x31, 0x22, 0x3d, 0xea, 0x4d, 0x95, 0x19, 0xda, 0x45, 0x1d, 0x4a, 0x6c, 0xbb, 0x9c, 0x25, 0xd1, + 0x26, 0xcd, 0xb2, 0x6a, 0xa4, 0x78, 0x43, 0x79, 0x96, 0x98, 0x1e, 0xb8, 0xa5, 0x94, 0xdd, 0x30, + 0xfa, 0x12, 0xe6, 0x8c, 0x91, 0x5b, 0xe4, 0x9d, 0x76, 0x56, 0x5c, 0x97, 0x41, 0xc4, 0x5f, 0x40, + 0x31, 0x2d, 0x4d, 0x56, 0xe4, 0xe1, 0x9f, 0x9d, 0xbb, 0x4c, 0xf2, 0xd4, 0x81, 0xf9, 0xb6, 0x36, + 0x61, 0xd6, 0x94, 0x7a, 0x4a, 0x1e, 0x8e, 0x8c, 0xbc, 0x54, 0xc6, 0x67, 0x04, 0xdb, 0x30, 0x67, + 0x4c, 0xff, 0x24, 0x67, 0x26, 0x2b, 0x39, 0x94, 0x91, 0xe2, 0x17, 0x30, 0x9f, 0x92, 0xeb, 0x28, + 0xba, 0x78, 0xcb, 0xcc, 0x85, 0x94, 0xe1, 0x00, 0x50, 0x4a, 0x4f, 0xa3, 0x23, 0xfd, 0x3e, 0x06, + 0x66, 0xda, 0x29, 0x19, 0x73, 0x8b, 0xa1, 0x1d, 0xba, 0x09, 0x4d, 0x79, 0x75, 0xd4, 0x4d, 0x98, + 0x91, 0x77, 0x27, 0xe5, 0xf9, 0xc7, 0x7c, 0x4a, 0x2a, 0x9d, 0x0c, 0xaa, 0x27, 0xe8, 0xed, 0xa6, + 0xe0, 0xff, 0x7a, 0x6e, 0x95, 0x98, 0x2f, 0xa1, 0x31, 0xf1, 0x8a, 0xb1, 0x9f, 0xca, 0x73, 0xe3, + 0x4e, 0x27, 0x43, 0x0c, 0x42, 0xea, 0x7b, 0x63, 0x02, 0xd9, 0xb8, 0x4f, 0x94, 0x08, 0x15, 0x37, + 0x8b, 0xa3, 0x26, 0x90, 0xa9, 0xe0, 0xf9, 0x11, 0x4c, 0xd6, 0xd5, 0xc6, 0x0d, 0x8d, 0xa4, 0x6e, + 0x0a, 0xe9, 0x65, 0x3f, 0xb8, 0xef, 0x03, 0x6f, 0xc5, 0x2a, 0x9d, 0xce, 0x89, 0x46, 0x91, 0x6a, + 0x93, 0xd5, 0x62, 0xcf, 0x4b, 0x4e, 0x6d, 0x4a, 0xa9, 0x20, 0x6d, 0xb2, 0xe6, 0x70, 0xf5, 0xab, + 0x74, 0x4a, 0xa3, 0xc8, 0xbd, 0x19, 0x3a, 0xb8, 0xdc, 0x44, 0x86, 0x00, 0xc1, 0x4f, 0xd4, 0x87, + 0xe0, 0x2c, 0xde, 0x6f, 0x86, 0x11, 0x31, 0xfe, 0x00, 0x3c, 0x16, 0x20, 0xb8, 0x01, 0x45, 0x11, + 0x79, 0x93, 0xc5, 0xbe, 0x8c, 0x62, 0xfd, 0x45, 0xae, 0x51, 0xe9, 0xa1, 0x39, 0x33, 0xe6, 0xad, + 0x10, 0x8f, 0x6a, 0x25, 0x2d, 0x47, 0x29, 0xe1, 0xae, 0x32, 0x76, 0x03, 0x44, 0xb1, 0xab, 0xa4, + 0x7d, 0x26, 0x11, 0xce, 0xaa, 0x74, 0xd9, 0x50, 0x23, 0x25, 0xab, 0x49, 0x35, 0xd2, 0x95, 0xf4, + 0x1c, 0x31, 0x84, 0xbf, 0x2a, 0x2d, 0x18, 0xeb, 0x38, 0xa1, 0x10, 0x16, 0x32, 0xb2, 0xcc, 0x4a, + 0x69, 0x75, 0x70, 0x36, 0x5c, 0x19, 0xb7, 0xe2, 0x24, 0x49, 0x6b, 0xb1, 0x8c, 0xa4, 0x9b, 0x84, + 0x52, 0xe3, 0x56, 0x64, 0x26, 0x70, 0x2d, 0x0d, 0x4a, 0x70, 0x8b, 0x9e, 0xc1, 0x62, 0xcc, 0x15, + 0x59, 0x6f, 0x69, 0x10, 0x81, 0xd4, 0x15, 0x7c, 0x06, 0x8b, 0xfc, 0x6d, 0xf4, 0x19, 0x13, 0xde, + 0x83, 0xc5, 0xac, 0xd4, 0xb5, 0xe8, 0xb6, 0xd9, 0xdd, 0xd8, 0x38, 0x3d, 0xe9, 0xa2, 0xeb, 0xd5, + 0xa4, 0xdb, 0x71, 0x6c, 0xdd, 0x4f, 0xcb, 0x56, 0x9e, 0xc2, 0xb4, 0x9e, 0xb6, 0x16, 0xa9, 0xac, + 0x23, 0x91, 0x44, 0xb7, 0x74, 0x25, 0xa5, 0x96, 0xef, 0x8f, 0x4f, 0x29, 0xa3, 0x97, 0x15, 0x6a, + 0xbc, 0x84, 0x78, 0x5a, 0xd8, 0x92, 0x21, 0xc3, 0x0e, 0xfa, 0x01, 0xcc, 0x44, 0xef, 0xdb, 0x18, + 0x09, 0x03, 0x58, 0x86, 0xbd, 0x68, 0x26, 0x7a, 0xe9, 0x76, 0x7a, 0xf4, 0x35, 0xc1, 0xed, 0x23, + 0xf4, 0x2b, 0x09, 0x0f, 0x6c, 0x6d, 0x0c, 0x27, 0x61, 0xfa, 0xca, 0xdc, 0x9e, 0x76, 0x75, 0x5a, + 0xf4, 0xb8, 0x99, 0x43, 0xb8, 0xa9, 0xc7, 0x2d, 0x33, 0xcc, 0x9c, 0x94, 0x30, 0x53, 0xe8, 0x74, + 0xe0, 0xda, 0xc0, 0xa0, 0x73, 0xe8, 0xae, 0x16, 0x59, 0x60, 0x70, 0x78, 0xba, 0xac, 0x67, 0x0a, + 0xa6, 0xd8, 0x6d, 0x92, 0xc7, 0x67, 0x84, 0x91, 0x93, 0xcf, 0x14, 0x32, 0x83, 0xbf, 0x7d, 0x41, + 0xc3, 0x6c, 0xf3, 0x8f, 0x0c, 0x8d, 0x95, 0x81, 0xbb, 0x4e, 0xb7, 0x85, 0x07, 0x5c, 0x57, 0x5c, + 0xd3, 0x2f, 0xe9, 0x12, 0x88, 0x54, 0xce, 0x5f, 0xe2, 0xda, 0x49, 0x1a, 0xf1, 0xc1, 0x44, 0xd2, + 0xe6, 0xa5, 0xba, 0xf2, 0x8b, 0xbf, 0x58, 0xca, 0xfd, 0xe2, 0x97, 0x4b, 0xb9, 0x7f, 0xf7, 0xcb, + 0xa5, 0xdc, 0x7f, 0xf9, 0xe5, 0x52, 0xee, 0xc7, 0xcb, 0x27, 0x8b, 0x8c, 0xdb, 0xea, 0xb8, 0xb8, + 0x1b, 0xde, 0x65, 0xe4, 0xce, 0xd3, 0xff, 0x1e, 0xfc, 0xef, 0x00, 0x00, 0x00, 0xff, 0xff, 0xfd, + 0xc3, 0xeb, 0xce, 0xcc, 0xd5, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. @@ -15573,11 +15682,11 @@ type AuthServiceClient interface { // GetAssistantConversations returns all conversations for the connected user. GetAssistantConversations(ctx context.Context, in *GetAssistantConversationsRequest, opts ...grpc.CallOption) (*GetAssistantConversationsResponse, error) // GetAssistantMessages returns all messages associated with the given conversation ID. - GetAssistantMessages(ctx context.Context, in *AssistantRequest, opts ...grpc.CallOption) (*GetAssistantMessagesResponse, error) + GetAssistantMessages(ctx context.Context, in *AssistantMessageRequest, opts ...grpc.CallOption) (*GetAssistantMessagesResponse, error) // CreateAssistantMessage creates a new message in the given conversation. CreateAssistantMessage(ctx context.Context, in *AssistantMessage, opts ...grpc.CallOption) (*emptypb.Empty, error) - // SetAssistantConversationTitle sets the given conversation title. - SetAssistantConversationTitle(ctx context.Context, in *ConversationInfo, opts ...grpc.CallOption) (*emptypb.Empty, error) + // UpdateAssistantConversationInfo updates the conversation info. + UpdateAssistantConversationInfo(ctx context.Context, in *UpdateAssistantConversationInfoRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) // InventoryControlStream is the per-instance stream used to advertise teleport instance // presence/version/etc to the auth server. InventoryControlStream(ctx context.Context, opts ...grpc.CallOption) (AuthService_InventoryControlStreamClient, error) @@ -16172,7 +16281,7 @@ func (c *authServiceClient) GetAssistantConversations(ctx context.Context, in *G return out, nil } -func (c *authServiceClient) GetAssistantMessages(ctx context.Context, in *AssistantRequest, opts ...grpc.CallOption) (*GetAssistantMessagesResponse, error) { +func (c *authServiceClient) GetAssistantMessages(ctx context.Context, in *AssistantMessageRequest, opts ...grpc.CallOption) (*GetAssistantMessagesResponse, error) { out := new(GetAssistantMessagesResponse) err := c.cc.Invoke(ctx, "/proto.AuthService/GetAssistantMessages", in, out, opts...) if err != nil { @@ -16190,9 +16299,9 @@ func (c *authServiceClient) CreateAssistantMessage(ctx context.Context, in *Assi return out, nil } -func (c *authServiceClient) SetAssistantConversationTitle(ctx context.Context, in *ConversationInfo, opts ...grpc.CallOption) (*emptypb.Empty, error) { +func (c *authServiceClient) UpdateAssistantConversationInfo(ctx context.Context, in *UpdateAssistantConversationInfoRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) { out := new(emptypb.Empty) - err := c.cc.Invoke(ctx, "/proto.AuthService/SetAssistantConversationTitle", in, out, opts...) + err := c.cc.Invoke(ctx, "/proto.AuthService/UpdateAssistantConversationInfo", in, out, opts...) if err != nil { return nil, err } @@ -18703,11 +18812,11 @@ type AuthServiceServer interface { // GetAssistantConversations returns all conversations for the connected user. GetAssistantConversations(context.Context, *GetAssistantConversationsRequest) (*GetAssistantConversationsResponse, error) // GetAssistantMessages returns all messages associated with the given conversation ID. - GetAssistantMessages(context.Context, *AssistantRequest) (*GetAssistantMessagesResponse, error) + GetAssistantMessages(context.Context, *AssistantMessageRequest) (*GetAssistantMessagesResponse, error) // CreateAssistantMessage creates a new message in the given conversation. CreateAssistantMessage(context.Context, *AssistantMessage) (*emptypb.Empty, error) - // SetAssistantConversationTitle sets the given conversation title. - SetAssistantConversationTitle(context.Context, *ConversationInfo) (*emptypb.Empty, error) + // UpdateAssistantConversationInfo updates the conversation info. + UpdateAssistantConversationInfo(context.Context, *UpdateAssistantConversationInfoRequest) (*emptypb.Empty, error) // InventoryControlStream is the per-instance stream used to advertise teleport instance // presence/version/etc to the auth server. InventoryControlStream(AuthService_InventoryControlStreamServer) error @@ -19286,14 +19395,14 @@ func (*UnimplementedAuthServiceServer) CreateAssistantConversation(ctx context.C func (*UnimplementedAuthServiceServer) GetAssistantConversations(ctx context.Context, req *GetAssistantConversationsRequest) (*GetAssistantConversationsResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method GetAssistantConversations not implemented") } -func (*UnimplementedAuthServiceServer) GetAssistantMessages(ctx context.Context, req *AssistantRequest) (*GetAssistantMessagesResponse, error) { +func (*UnimplementedAuthServiceServer) GetAssistantMessages(ctx context.Context, req *AssistantMessageRequest) (*GetAssistantMessagesResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method GetAssistantMessages not implemented") } func (*UnimplementedAuthServiceServer) CreateAssistantMessage(ctx context.Context, req *AssistantMessage) (*emptypb.Empty, error) { return nil, status.Errorf(codes.Unimplemented, "method CreateAssistantMessage not implemented") } -func (*UnimplementedAuthServiceServer) SetAssistantConversationTitle(ctx context.Context, req *ConversationInfo) (*emptypb.Empty, error) { - return nil, status.Errorf(codes.Unimplemented, "method SetAssistantConversationTitle not implemented") +func (*UnimplementedAuthServiceServer) UpdateAssistantConversationInfo(ctx context.Context, req *UpdateAssistantConversationInfoRequest) (*emptypb.Empty, error) { + return nil, status.Errorf(codes.Unimplemented, "method UpdateAssistantConversationInfo not implemented") } func (*UnimplementedAuthServiceServer) InventoryControlStream(srv AuthService_InventoryControlStreamServer) error { return status.Errorf(codes.Unimplemented, "method InventoryControlStream not implemented") @@ -20048,7 +20157,7 @@ func _AuthService_GetAssistantConversations_Handler(srv interface{}, ctx context } func _AuthService_GetAssistantMessages_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(AssistantRequest) + in := new(AssistantMessageRequest) if err := dec(in); err != nil { return nil, err } @@ -20060,7 +20169,7 @@ func _AuthService_GetAssistantMessages_Handler(srv interface{}, ctx context.Cont FullMethod: "/proto.AuthService/GetAssistantMessages", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(AuthServiceServer).GetAssistantMessages(ctx, req.(*AssistantRequest)) + return srv.(AuthServiceServer).GetAssistantMessages(ctx, req.(*AssistantMessageRequest)) } return interceptor(ctx, in, info, handler) } @@ -20083,20 +20192,20 @@ func _AuthService_CreateAssistantMessage_Handler(srv interface{}, ctx context.Co return interceptor(ctx, in, info, handler) } -func _AuthService_SetAssistantConversationTitle_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ConversationInfo) +func _AuthService_UpdateAssistantConversationInfo_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(UpdateAssistantConversationInfoRequest) if err := dec(in); err != nil { return nil, err } if interceptor == nil { - return srv.(AuthServiceServer).SetAssistantConversationTitle(ctx, in) + return srv.(AuthServiceServer).UpdateAssistantConversationInfo(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/proto.AuthService/SetAssistantConversationTitle", + FullMethod: "/proto.AuthService/UpdateAssistantConversationInfo", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(AuthServiceServer).SetAssistantConversationTitle(ctx, req.(*ConversationInfo)) + return srv.(AuthServiceServer).UpdateAssistantConversationInfo(ctx, req.(*UpdateAssistantConversationInfoRequest)) } return interceptor(ctx, in, info, handler) } @@ -24471,8 +24580,8 @@ var _AuthService_serviceDesc = grpc.ServiceDesc{ Handler: _AuthService_CreateAssistantMessage_Handler, }, { - MethodName: "SetAssistantConversationTitle", - Handler: _AuthService_SetAssistantConversationTitle_Handler, + MethodName: "UpdateAssistantConversationInfo", + Handler: _AuthService_UpdateAssistantConversationInfo_Handler, }, { MethodName: "GetInventoryStatus", @@ -36566,7 +36675,7 @@ func (m *ExportUpgradeWindowsResponse) MarshalToSizedBuffer(dAtA []byte) (int, e return len(dAtA) - i, nil } -func (m *AssistantRequest) Marshal() (dAtA []byte, err error) { +func (m *AssistantMessageRequest) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) n, err := m.MarshalToSizedBuffer(dAtA[:size]) @@ -36576,12 +36685,12 @@ func (m *AssistantRequest) Marshal() (dAtA []byte, err error) { return dAtA[:n], nil } -func (m *AssistantRequest) MarshalTo(dAtA []byte) (int, error) { +func (m *AssistantMessageRequest) MarshalTo(dAtA []byte) (int, error) { size := m.Size() return m.MarshalToSizedBuffer(dAtA[:size]) } -func (m *AssistantRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { +func (m *AssistantMessageRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { i := len(dAtA) _ = i var l int @@ -36590,6 +36699,13 @@ func (m *AssistantRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { i -= len(m.XXX_unrecognized) copy(dAtA[i:], m.XXX_unrecognized) } + if len(m.Username) > 0 { + i -= len(m.Username) + copy(dAtA[i:], m.Username) + i = encodeVarintAuthservice(dAtA, i, uint64(len(m.Username))) + i-- + dAtA[i] = 0x12 + } if len(m.ConversationId) > 0 { i -= len(m.ConversationId) copy(dAtA[i:], m.ConversationId) @@ -36629,7 +36745,7 @@ func (m *AssistantMessage) MarshalToSizedBuffer(dAtA []byte) (int, error) { copy(dAtA[i:], m.Payload) i = encodeVarintAuthservice(dAtA, i, uint64(len(m.Payload))) i-- - dAtA[i] = 0x22 + dAtA[i] = 0x2a } n152, err152 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.CreatedTime, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.CreatedTime):]) if err152 != nil { @@ -36638,12 +36754,19 @@ func (m *AssistantMessage) MarshalToSizedBuffer(dAtA []byte) (int, error) { i -= n152 i = encodeVarintAuthservice(dAtA, i, uint64(n152)) i-- - dAtA[i] = 0x1a + dAtA[i] = 0x22 if len(m.Type) > 0 { i -= len(m.Type) copy(dAtA[i:], m.Type) i = encodeVarintAuthservice(dAtA, i, uint64(len(m.Type))) i-- + dAtA[i] = 0x1a + } + if len(m.Username) > 0 { + i -= len(m.Username) + copy(dAtA[i:], m.Username) + i = encodeVarintAuthservice(dAtA, i, uint64(len(m.Username))) + i-- dAtA[i] = 0x12 } if len(m.ConversationId) > 0 { @@ -36721,6 +36844,13 @@ func (m *GetAssistantConversationsRequest) MarshalToSizedBuffer(dAtA []byte) (in i -= len(m.XXX_unrecognized) copy(dAtA[i:], m.XXX_unrecognized) } + if len(m.Username) > 0 { + i -= len(m.Username) + copy(dAtA[i:], m.Username) + i = encodeVarintAuthservice(dAtA, i, uint64(len(m.Username))) + i-- + dAtA[i] = 0xa + } return len(dAtA) - i, nil } @@ -36845,7 +36975,14 @@ func (m *CreateAssistantConversationRequest) MarshalToSizedBuffer(dAtA []byte) ( i -= n154 i = encodeVarintAuthservice(dAtA, i, uint64(n154)) i-- - dAtA[i] = 0xa + dAtA[i] = 0x12 + if len(m.Username) > 0 { + i -= len(m.Username) + copy(dAtA[i:], m.Username) + i = encodeVarintAuthservice(dAtA, i, uint64(len(m.Username))) + i-- + dAtA[i] = 0xa + } return len(dAtA) - i, nil } @@ -36883,6 +37020,54 @@ func (m *CreateAssistantConversationResponse) MarshalToSizedBuffer(dAtA []byte) return len(dAtA) - i, nil } +func (m *UpdateAssistantConversationInfoRequest) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *UpdateAssistantConversationInfoRequest) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *UpdateAssistantConversationInfoRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.XXX_unrecognized != nil { + i -= len(m.XXX_unrecognized) + copy(dAtA[i:], m.XXX_unrecognized) + } + if len(m.Title) > 0 { + i -= len(m.Title) + copy(dAtA[i:], m.Title) + i = encodeVarintAuthservice(dAtA, i, uint64(len(m.Title))) + i-- + dAtA[i] = 0x1a + } + if len(m.Username) > 0 { + i -= len(m.Username) + copy(dAtA[i:], m.Username) + i = encodeVarintAuthservice(dAtA, i, uint64(len(m.Username))) + i-- + dAtA[i] = 0x12 + } + if len(m.ConversationId) > 0 { + i -= len(m.ConversationId) + copy(dAtA[i:], m.ConversationId) + i = encodeVarintAuthservice(dAtA, i, uint64(len(m.ConversationId))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + func encodeVarintAuthservice(dAtA []byte, offset int, v uint64) int { offset -= sovAuthservice(v) base := offset @@ -42198,7 +42383,7 @@ func (m *ExportUpgradeWindowsResponse) Size() (n int) { return n } -func (m *AssistantRequest) Size() (n int) { +func (m *AssistantMessageRequest) Size() (n int) { if m == nil { return 0 } @@ -42208,6 +42393,10 @@ func (m *AssistantRequest) Size() (n int) { if l > 0 { n += 1 + l + sovAuthservice(uint64(l)) } + l = len(m.Username) + if l > 0 { + n += 1 + l + sovAuthservice(uint64(l)) + } if m.XXX_unrecognized != nil { n += len(m.XXX_unrecognized) } @@ -42224,6 +42413,10 @@ func (m *AssistantMessage) Size() (n int) { if l > 0 { n += 1 + l + sovAuthservice(uint64(l)) } + l = len(m.Username) + if l > 0 { + n += 1 + l + sovAuthservice(uint64(l)) + } l = len(m.Type) if l > 0 { n += 1 + l + sovAuthservice(uint64(l)) @@ -42264,6 +42457,10 @@ func (m *GetAssistantConversationsRequest) Size() (n int) { } var l int _ = l + l = len(m.Username) + if l > 0 { + n += 1 + l + sovAuthservice(uint64(l)) + } if m.XXX_unrecognized != nil { n += len(m.XXX_unrecognized) } @@ -42316,6 +42513,10 @@ func (m *CreateAssistantConversationRequest) Size() (n int) { } var l int _ = l + l = len(m.Username) + if l > 0 { + n += 1 + l + sovAuthservice(uint64(l)) + } l = github_com_gogo_protobuf_types.SizeOfStdTime(m.CreatedTime) n += 1 + l + sovAuthservice(uint64(l)) if m.XXX_unrecognized != nil { @@ -42340,6 +42541,30 @@ func (m *CreateAssistantConversationResponse) Size() (n int) { return n } +func (m *UpdateAssistantConversationInfoRequest) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.ConversationId) + if l > 0 { + n += 1 + l + sovAuthservice(uint64(l)) + } + l = len(m.Username) + if l > 0 { + n += 1 + l + sovAuthservice(uint64(l)) + } + l = len(m.Title) + if l > 0 { + n += 1 + l + sovAuthservice(uint64(l)) + } + if m.XXX_unrecognized != nil { + n += len(m.XXX_unrecognized) + } + return n +} + func sovAuthservice(x uint64) (n int) { return (math_bits.Len64(x|1) + 6) / 7 } @@ -68347,7 +68572,7 @@ func (m *ExportUpgradeWindowsResponse) Unmarshal(dAtA []byte) error { } return nil } -func (m *AssistantRequest) Unmarshal(dAtA []byte) error { +func (m *AssistantMessageRequest) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -68370,10 +68595,10 @@ func (m *AssistantRequest) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: AssistantRequest: wiretype end group for non-group") + return fmt.Errorf("proto: AssistantMessageRequest: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: AssistantRequest: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: AssistantMessageRequest: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: @@ -68408,6 +68633,38 @@ func (m *AssistantRequest) Unmarshal(dAtA []byte) error { } m.ConversationId = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Username", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowAuthservice + } + 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 ErrInvalidLengthAuthservice + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthAuthservice + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Username = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipAuthservice(dAtA[iNdEx:]) @@ -68492,6 +68749,38 @@ func (m *AssistantMessage) Unmarshal(dAtA []byte) error { m.ConversationId = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Username", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowAuthservice + } + 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 ErrInvalidLengthAuthservice + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthAuthservice + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Username = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: if wireType != 2 { return fmt.Errorf("proto: wrong wireType = %d for field Type", wireType) } @@ -68523,7 +68812,7 @@ func (m *AssistantMessage) Unmarshal(dAtA []byte) error { } m.Type = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex - case 3: + case 4: if wireType != 2 { return fmt.Errorf("proto: wrong wireType = %d for field CreatedTime", wireType) } @@ -68556,7 +68845,7 @@ func (m *AssistantMessage) Unmarshal(dAtA []byte) error { return err } iNdEx = postIndex - case 4: + case 5: if wireType != 2 { return fmt.Errorf("proto: wrong wireType = %d for field Payload", wireType) } @@ -68724,6 +69013,38 @@ func (m *GetAssistantConversationsRequest) Unmarshal(dAtA []byte) error { return fmt.Errorf("proto: GetAssistantConversationsRequest: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Username", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowAuthservice + } + 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 ErrInvalidLengthAuthservice + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthAuthservice + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Username = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipAuthservice(dAtA[iNdEx:]) @@ -69009,6 +69330,38 @@ func (m *CreateAssistantConversationRequest) Unmarshal(dAtA []byte) error { } switch fieldNum { case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Username", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowAuthservice + } + 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 ErrInvalidLengthAuthservice + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthAuthservice + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Username = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: if wireType != 2 { return fmt.Errorf("proto: wrong wireType = %d for field CreatedTime", wireType) } @@ -69146,6 +69499,153 @@ func (m *CreateAssistantConversationResponse) Unmarshal(dAtA []byte) error { } return nil } +func (m *UpdateAssistantConversationInfoRequest) 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 ErrIntOverflowAuthservice + } + 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: UpdateAssistantConversationInfoRequest: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: UpdateAssistantConversationInfoRequest: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ConversationId", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowAuthservice + } + 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 ErrInvalidLengthAuthservice + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthAuthservice + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.ConversationId = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Username", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowAuthservice + } + 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 ErrInvalidLengthAuthservice + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthAuthservice + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Username = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Title", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowAuthservice + } + 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 ErrInvalidLengthAuthservice + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthAuthservice + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Title = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipAuthservice(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthAuthservice + } + 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 skipAuthservice(dAtA []byte) (n int, err error) { l := len(dAtA) iNdEx := 0 diff --git a/api/proto/teleport/legacy/client/proto/authservice.proto b/api/proto/teleport/legacy/client/proto/authservice.proto index b00e14f61ecee..0f48cf2b748b2 100644 --- a/api/proto/teleport/legacy/client/proto/authservice.proto +++ b/api/proto/teleport/legacy/client/proto/authservice.proto @@ -2296,11 +2296,14 @@ message ExportUpgradeWindowsResponse { string SystemdUnitSchedule = 3; } -// AssistantRequest is a request to the assistant service. -message AssistantRequest { +// AssistantMessageRequest is a request to the assistant service. +message AssistantMessageRequest { // conversationId it's the ID of a conversation. // It's used to tie all messages in a one conversation. string conversation_id = 1; + + // username is a username of the user who sent the message. + string username = 2; } // AssistantMessage is a message sent to the assistant service. The conversation @@ -2309,17 +2312,20 @@ message AssistantMessage { // conversationId used to tie all messages in a one conversation. string conversation_id = 1; + // username is a username of the user who sent the message. + string username = 2; + // type is a type of message. It can be Chat response/query or a command to run. - string type = 2; + string type = 3; // createdTime is the time when the even occurred. - google.protobuf.Timestamp created_time = 3 [ + google.protobuf.Timestamp created_time = 4 [ (gogoproto.stdtime) = true, (gogoproto.nullable) = false ]; // payload is a JSON message - string payload = 4; + string payload = 5; } // GetAssistantMessagesResponse is a response from the assistant service. @@ -2329,7 +2335,10 @@ message GetAssistantMessagesResponse { } // GetAssistantConversationsRequest is a request to get a list of conversations. -message GetAssistantConversationsRequest {} +message GetAssistantConversationsRequest { + // username is a username of the user who created the conversation. + string username = 1; +} // ConversationInfo is a conversation info. It contains a conversation // information like ID, title, created time. @@ -2353,8 +2362,10 @@ message GetAssistantConversationsResponse { // CreateAssistantConversationRequest is a request to create a new conversation. message CreateAssistantConversationRequest { + // username is a username of the user who created the conversation. + string username = 1; // createdTime is the time when the conversation was created. - google.protobuf.Timestamp created_time = 1 [ + google.protobuf.Timestamp created_time = 2 [ (gogoproto.stdtime) = true, (gogoproto.nullable) = false ]; @@ -2366,6 +2377,15 @@ message CreateAssistantConversationResponse { string id = 1; } +message UpdateAssistantConversationInfoRequest { + // conversationId is a unique conversation ID. + string conversation_id = 1; + // username is a username of the user who created the conversation. + string username = 2; + // title is a title of the conversation. + string title = 3; +} + // AuthService is authentication/authorization service implementation service AuthService { // CreateNewConversation creates a new conversation and returns the UUID of it. @@ -2375,13 +2395,13 @@ service AuthService { rpc GetAssistantConversations(GetAssistantConversationsRequest) returns (GetAssistantConversationsResponse); // GetAssistantMessages returns all messages associated with the given conversation ID. - rpc GetAssistantMessages(AssistantRequest) returns (GetAssistantMessagesResponse); + rpc GetAssistantMessages(AssistantMessageRequest) returns (GetAssistantMessagesResponse); // CreateAssistantMessage creates a new message in the given conversation. rpc CreateAssistantMessage(AssistantMessage) returns (google.protobuf.Empty); - // SetAssistantConversationTitle sets the given conversation title. - rpc SetAssistantConversationTitle(ConversationInfo) returns (google.protobuf.Empty); + // UpdateAssistantConversationInfo updates the conversation info. + rpc UpdateAssistantConversationInfo(UpdateAssistantConversationInfoRequest) returns (google.protobuf.Empty); // InventoryControlStream is the per-instance stream used to advertise teleport instance // presence/version/etc to the auth server. diff --git a/lib/auth/auth.go b/lib/auth/auth.go index 27109be68580f..6329f137a4e37 100644 --- a/lib/auth/auth.go +++ b/lib/auth/auth.go @@ -5203,55 +5203,30 @@ func (a *Server) GetHeadlessAuthentication(ctx context.Context, name string) (*t } // GetAssistantMessages returns all messages with given conversation ID. -func (a *Server) GetAssistantMessages(ctx context.Context, id string) (*proto.GetAssistantMessagesResponse, error) { - username, err := authz.GetClientUsername(ctx) - if err != nil { - return nil, trace.Wrap(err) - } - - resp, err := a.Services.GetAssistantMessages(ctx, username, id) +func (a *Server) GetAssistantMessages(ctx context.Context, req *proto.AssistantMessageRequest) (*proto.GetAssistantMessagesResponse, error) { + resp, err := a.Services.GetAssistantMessages(ctx, req) return resp, trace.Wrap(err) } // CreateAssistantMessage adds the message to the backend. func (a *Server) CreateAssistantMessage(ctx context.Context, msg *proto.AssistantMessage) error { - username, err := authz.GetClientUsername(ctx) - if err != nil { - return trace.Wrap(err) - } - - return trace.Wrap(a.Services.CreateAssistantMessage(ctx, username, msg)) + return trace.Wrap(a.Services.CreateAssistantMessage(ctx, msg)) } -// SetAssistantConversationTitle stores the given conversation title in the DB. -func (a *Server) SetAssistantConversationTitle(ctx context.Context, msg *proto.ConversationInfo) error { - username, err := authz.GetClientUsername(ctx) - if err != nil { - return trace.Wrap(err) - } - - return trace.Wrap(a.Services.SetAssistantConversationTitle(ctx, username, msg)) +// UpdateAssistantConversationInfo stores the given conversation title in the DB. +func (a *Server) UpdateAssistantConversationInfo(ctx context.Context, msg *proto.UpdateAssistantConversationInfoRequest) error { + return trace.Wrap(a.Services.UpdateAssistantConversationInfo(ctx, msg)) } // CreateAssistantConversation creates a new conversation entry in the backend. func (a *Server) CreateAssistantConversation(ctx context.Context, req *proto.CreateAssistantConversationRequest) (*proto.CreateAssistantConversationResponse, error) { - username, err := authz.GetClientUsername(ctx) - if err != nil { - return nil, trace.Wrap(err) - } - - resp, err := a.Services.CreateAssistantConversation(ctx, username, req) + resp, err := a.Services.CreateAssistantConversation(ctx, req) return resp, trace.Wrap(err) } // GetAssistantConversations returns all conversations started by a user. func (a *Server) GetAssistantConversations(ctx context.Context, request *proto.GetAssistantConversationsRequest) (*proto.GetAssistantConversationsResponse, error) { - username, err := authz.GetClientUsername(ctx) - if err != nil { - return nil, trace.Wrap(err) - } - - resp, err := a.Services.GetAssistantConversations(ctx, username, request) + resp, err := a.Services.GetAssistantConversations(ctx, request) return resp, trace.Wrap(err) } diff --git a/lib/auth/auth_with_roles.go b/lib/auth/auth_with_roles.go index 97f6db2305949..481bd2570997e 100644 --- a/lib/auth/auth_with_roles.go +++ b/lib/auth/auth_with_roles.go @@ -6097,12 +6097,12 @@ func (a *ServerWithRoles) GetAssistantConversations(ctx context.Context, request } // GetAssistantMessages returns all messages with given conversation ID. -func (a *ServerWithRoles) GetAssistantMessages(ctx context.Context, id string) (*proto.GetAssistantMessagesResponse, error) { +func (a *ServerWithRoles) GetAssistantMessages(ctx context.Context, req *proto.AssistantMessageRequest) (*proto.GetAssistantMessagesResponse, error) { if err := a.action(apidefaults.Namespace, types.KindAssistant, types.VerbRead); err != nil { return nil, trace.Wrap(err) } - return a.authServer.GetAssistantMessages(ctx, id) + return a.authServer.GetAssistantMessages(ctx, req) } // CreateAssistantMessage adds the message to the backend. @@ -6114,13 +6114,13 @@ func (a *ServerWithRoles) CreateAssistantMessage(ctx context.Context, msg *proto return &emptypb.Empty{}, a.authServer.CreateAssistantMessage(ctx, msg) } -// SetAssistantConversationTitle set the given title as the assistant conversation title. -func (a *ServerWithRoles) SetAssistantConversationTitle(ctx context.Context, msg *proto.ConversationInfo) error { +// UpdateAssistantConversationInfo updates the conversation info. +func (a *ServerWithRoles) UpdateAssistantConversationInfo(ctx context.Context, msg *proto.UpdateAssistantConversationInfoRequest) error { if err := a.action(apidefaults.Namespace, types.KindAssistant, types.VerbUpdate); err != nil { return trace.Wrap(err) } - return a.authServer.SetAssistantConversationTitle(ctx, msg) + return a.authServer.UpdateAssistantConversationInfo(ctx, msg) } // CloneHTTPClient creates a new HTTP client with the same configuration. diff --git a/lib/auth/clt.go b/lib/auth/clt.go index cfc71ac108d5c..d9a14c303363b 100644 --- a/lib/auth/clt.go +++ b/lib/auth/clt.go @@ -655,15 +655,15 @@ type IdentityService interface { GetHeadlessAuthentication(ctx context.Context, id string) (*types.HeadlessAuthentication, error) // GetAssistantMessages returns all messages with given conversation ID. - GetAssistantMessages(ctx context.Context, id string) (*proto.GetAssistantMessagesResponse, error) + GetAssistantMessages(ctx context.Context, req *proto.AssistantMessageRequest) (*proto.GetAssistantMessagesResponse, error) // GetAssistantConversations returns all conversations started by a user. GetAssistantConversations(ctx context.Context, request *proto.GetAssistantConversationsRequest) (*proto.GetAssistantConversationsResponse, error) // CreateAssistantConversation creates a new conversation entry in the backend. CreateAssistantConversation(ctx context.Context, req *proto.CreateAssistantConversationRequest) (*proto.CreateAssistantConversationResponse, error) // CreateAssistantMessage adds the message to the backend. CreateAssistantMessage(ctx context.Context, in *proto.AssistantMessage) (*emptypb.Empty, error) - // SetAssistantConversationTitle sets the given title as the conversation title. - SetAssistantConversationTitle(ctx context.Context, in *proto.ConversationInfo) error + // UpdateAssistantConversationInfo updates the conversation info. + UpdateAssistantConversationInfo(ctx context.Context, in *proto.UpdateAssistantConversationInfoRequest) error } // ProvisioningService is a service in control diff --git a/lib/auth/grpcserver.go b/lib/auth/grpcserver.go index 7ca05239fb7e8..4453f93404b2d 100644 --- a/lib/auth/grpcserver.go +++ b/lib/auth/grpcserver.go @@ -4999,14 +4999,14 @@ func (g *GRPCServer) GetAssistantConversations(ctx context.Context, request *pro return resp, nil } -// SetAssistantConversationTitle sets the given title as the assistant conversation title. -func (g *GRPCServer) SetAssistantConversationTitle(ctx context.Context, request *proto.ConversationInfo) (*emptypb.Empty, error) { +// UpdateAssistantConversationInfo updates the conversation info for a conversation. +func (g *GRPCServer) UpdateAssistantConversationInfo(ctx context.Context, request *proto.UpdateAssistantConversationInfoRequest) (*emptypb.Empty, error) { auth, err := g.authenticate(ctx) if err != nil { return nil, trace.Wrap(err) } - err = auth.SetAssistantConversationTitle(ctx, request) + err = auth.UpdateAssistantConversationInfo(ctx, request) if err != nil { return nil, trace.Wrap(err) } @@ -5025,12 +5025,12 @@ func (g *GRPCServer) CreateAssistantConversation(ctx context.Context, request *p } // GetAssistantMessages returns all messages with given conversation ID. -func (g *GRPCServer) GetAssistantMessages(ctx context.Context, request *proto.AssistantRequest) (*proto.GetAssistantMessagesResponse, error) { +func (g *GRPCServer) GetAssistantMessages(ctx context.Context, request *proto.AssistantMessageRequest) (*proto.GetAssistantMessagesResponse, error) { auth, err := g.authenticate(ctx) if err != nil { return nil, trace.Wrap(err) } - messages, err := auth.GetAssistantMessages(ctx, request.ConversationId) + messages, err := auth.GetAssistantMessages(ctx, request) return messages, trace.Wrap(err) } diff --git a/lib/services/identity.go b/lib/services/identity.go index 34dc63b0c4e61..91660128c4e58 100644 --- a/lib/services/identity.go +++ b/lib/services/identity.go @@ -268,19 +268,19 @@ type Identity interface { DeleteHeadlessAuthentication(ctx context.Context, name string) error // GetAssistantMessages returns all messages with given conversation ID. - GetAssistantMessages(ctx context.Context, username, id string) (*proto.GetAssistantMessagesResponse, error) + GetAssistantMessages(ctx context.Context, req *proto.AssistantMessageRequest) (*proto.GetAssistantMessagesResponse, error) // CreateAssistantMessage adds the message to the backend. - CreateAssistantMessage(ctx context.Context, username string, msg *proto.AssistantMessage) error + CreateAssistantMessage(ctx context.Context, msg *proto.AssistantMessage) error // CreateAssistantConversation creates a new conversation entry in the backend. - CreateAssistantConversation(ctx context.Context, username string, req *proto.CreateAssistantConversationRequest) (*proto.CreateAssistantConversationResponse, error) + CreateAssistantConversation(ctx context.Context, req *proto.CreateAssistantConversationRequest) (*proto.CreateAssistantConversationResponse, error) // GetAssistantConversations returns all conversations started by a user. - GetAssistantConversations(ctx context.Context, username string, request *proto.GetAssistantConversationsRequest) (*proto.GetAssistantConversationsResponse, error) + GetAssistantConversations(ctx context.Context, request *proto.GetAssistantConversationsRequest) (*proto.GetAssistantConversationsResponse, error) - // SetAssistantConversationTitle sets the given title as the assistant conversation title. - SetAssistantConversationTitle(ctx context.Context, username string, msg *proto.ConversationInfo) error + // UpdateAssistantConversationInfo updates conversation info. + UpdateAssistantConversationInfo(ctx context.Context, msg *proto.UpdateAssistantConversationInfoRequest) error types.WebSessionsGetter types.WebTokensGetter diff --git a/lib/services/local/assistant.go b/lib/services/local/assistant.go index 671211ecd4009..9f180560a8478 100644 --- a/lib/services/local/assistant.go +++ b/lib/services/local/assistant.go @@ -39,10 +39,10 @@ type Conversation struct { } // CreateAssistantConversation creates a new conversation entry in the backend. -func (s *IdentityService) CreateAssistantConversation(ctx context.Context, username string, +func (s *IdentityService) CreateAssistantConversation(ctx context.Context, req *proto.CreateAssistantConversationRequest, ) (*proto.CreateAssistantConversationResponse, error) { - if username == "" { + if req.Username == "" { return nil, trace.BadParameter("missing parameter username") } @@ -58,7 +58,7 @@ func (s *IdentityService) CreateAssistantConversation(ctx context.Context, usern } item := backend.Item{ - Key: backend.Key(assistantConversationPrefix, username, conversationID), + Key: backend.Key(assistantConversationPrefix, req.Username, conversationID), Value: value, } @@ -84,13 +84,19 @@ func (s *IdentityService) getConversation(ctx context.Context, username, convers return &conversation, nil } -// SetAssistantConversationTitle sets the given title as the assistant conversation title. -func (s *IdentityService) SetAssistantConversationTitle(ctx context.Context, username string, request *proto.ConversationInfo) error { - if request.Id == "" || request.Title == "" { - return trace.BadParameter("missing conversation ID or title") +// UpdateAssistantConversationInfo updates the conversation title. +func (s *IdentityService) UpdateAssistantConversationInfo(ctx context.Context, request *proto.UpdateAssistantConversationInfoRequest) error { + if request.ConversationId == "" { + return trace.BadParameter("missing conversation ID") + } + if request.Username == "" { + return trace.BadParameter("missing username") + } + if request.Title == "" { + return trace.BadParameter("missing title") } - msg, err := s.getConversation(ctx, username, request.Id) + msg, err := s.getConversation(ctx, request.Username, request.GetConversationId()) if err != nil { return trace.Wrap(err) } @@ -104,7 +110,7 @@ func (s *IdentityService) SetAssistantConversationTitle(ctx context.Context, use } item := backend.Item{ - Key: backend.Key(assistantConversationPrefix, username, request.Id), + Key: backend.Key(assistantConversationPrefix, request.GetUsername(), request.GetConversationId()), Value: payload, } @@ -116,8 +122,11 @@ func (s *IdentityService) SetAssistantConversationTitle(ctx context.Context, use } // GetAssistantConversations returns all conversations started by a user. -func (s *IdentityService) GetAssistantConversations(ctx context.Context, username string, _ *proto.GetAssistantConversationsRequest) (*proto.GetAssistantConversationsResponse, error) { - startKey := backend.Key(assistantConversationPrefix, username) +func (s *IdentityService) GetAssistantConversations(ctx context.Context, req *proto.GetAssistantConversationsRequest) (*proto.GetAssistantConversationsResponse, error) { + if req.Username == "" { + return nil, trace.BadParameter("missing username") + } + startKey := backend.Key(assistantConversationPrefix, req.Username) result, err := s.GetRange(ctx, startKey, backend.RangeEnd(startKey), backend.NoLimit) if err != nil { return nil, trace.Wrap(err) @@ -147,16 +156,16 @@ func (s *IdentityService) GetAssistantConversations(ctx context.Context, usernam } // GetAssistantMessages returns all messages with given conversation ID. -func (s *IdentityService) GetAssistantMessages(ctx context.Context, username, conversationId string) (*proto.GetAssistantMessagesResponse, error) { - if username == "" { +func (s *IdentityService) GetAssistantMessages(ctx context.Context, req *proto.AssistantMessageRequest) (*proto.GetAssistantMessagesResponse, error) { + if req.Username == "" { return nil, trace.BadParameter("missing username") } - if conversationId == "" { + if req.ConversationId == "" { return nil, trace.BadParameter("missing conversation ID") } - startKey := backend.Key(assistantMessagePrefix, username, conversationId) + startKey := backend.Key(assistantMessagePrefix, req.Username, req.ConversationId) result, err := s.GetRange(ctx, startKey, backend.RangeEnd(startKey), backend.NoLimit) if err != nil { return nil, trace.Wrap(err) @@ -182,8 +191,8 @@ func (s *IdentityService) GetAssistantMessages(ctx context.Context, username, co } // CreateAssistantMessage adds the message to the backend. -func (s *IdentityService) CreateAssistantMessage(ctx context.Context, username string, msg *proto.AssistantMessage) error { - if username == "" { +func (s *IdentityService) CreateAssistantMessage(ctx context.Context, msg *proto.AssistantMessage) error { + if msg.Username == "" { return trace.BadParameter("missing username") } @@ -195,7 +204,7 @@ func (s *IdentityService) CreateAssistantMessage(ctx context.Context, username s messageID := uuid.New().String() item := backend.Item{ - Key: backend.Key(assistantMessagePrefix, username, msg.ConversationId, messageID), + Key: backend.Key(assistantMessagePrefix, msg.Username, msg.ConversationId, messageID), Value: value, } diff --git a/lib/services/local/assistant_test.go b/lib/services/local/assistant_test.go index 54b0675425025..8c360d8b7def9 100644 --- a/lib/services/local/assistant_test.go +++ b/lib/services/local/assistant_test.go @@ -41,10 +41,11 @@ func TestAssistantCRUD(t *testing.T) { t.Run("create conversation", func(t *testing.T) { req := &proto.CreateAssistantConversationRequest{ + Username: username, CreatedTime: time.Now(), } - conversationResp, err := identity.CreateAssistantConversation(ctx, username, req) + conversationResp, err := identity.CreateAssistantConversation(ctx, req) require.NoError(t, err) require.NotEmpty(t, conversationResp.Id) @@ -52,7 +53,10 @@ func TestAssistantCRUD(t *testing.T) { }) t.Run("get conversation", func(t *testing.T) { - conversations, err := identity.GetAssistantConversations(ctx, username, nil) + req := &proto.GetAssistantConversationsRequest{ + Username: username, + } + conversations, err := identity.GetAssistantConversations(ctx, req) require.NoError(t, err) require.Len(t, conversations.Conversations, 1) require.Equal(t, conversationID, conversations.Conversations[0].Id) @@ -60,32 +64,42 @@ func TestAssistantCRUD(t *testing.T) { t.Run("create message", func(t *testing.T) { msg := &proto.AssistantMessage{ + Username: username, CreatedTime: time.Now(), ConversationId: conversationID, Payload: "foo", Type: "USER_MSG", } - err := identity.CreateAssistantMessage(ctx, username, msg) + err := identity.CreateAssistantMessage(ctx, msg) require.NoError(t, err) }) t.Run("get messages", func(t *testing.T) { - messages, err := identity.GetAssistantMessages(ctx, username, conversationID) + req := &proto.AssistantMessageRequest{ + Username: username, + ConversationId: conversationID, + } + messages, err := identity.GetAssistantMessages(ctx, req) require.NoError(t, err) require.Len(t, messages.Messages, 1) require.Equal(t, "foo", messages.Messages[0].Payload) }) t.Run("set conversation title", func(t *testing.T) { - titleReq := &proto.ConversationInfo{ - Title: "bar", - Id: conversationID, + titleReq := &proto.UpdateAssistantConversationInfoRequest{ + Title: "bar", + Username: username, + ConversationId: conversationID, } title := "bar" - err := identity.SetAssistantConversationTitle(ctx, username, titleReq) + err := identity.UpdateAssistantConversationInfo(ctx, titleReq) require.NoError(t, err) - conversations, err := identity.GetAssistantConversations(ctx, username, nil) + req := &proto.GetAssistantConversationsRequest{ + Username: username, + } + + conversations, err := identity.GetAssistantConversations(ctx, req) require.NoError(t, err) require.Len(t, conversations.Conversations, 1) require.Equal(t, title, conversations.Conversations[0].Title) @@ -93,14 +107,19 @@ func TestAssistantCRUD(t *testing.T) { t.Run("conversations are sorted by created_time", func(t *testing.T) { req := &proto.CreateAssistantConversationRequest{ + Username: username, CreatedTime: time.Now().Add(time.Hour), } - conversationResp, err := identity.CreateAssistantConversation(ctx, username, req) + conversationResp, err := identity.CreateAssistantConversation(ctx, req) require.NoError(t, err) require.NotEmpty(t, conversationResp.Id) - conversations, err := identity.GetAssistantConversations(ctx, username, nil) + reqConversations := &proto.GetAssistantConversationsRequest{ + Username: username, + } + + conversations, err := identity.GetAssistantConversations(ctx, reqConversations) require.NoError(t, err) require.Len(t, conversations.Conversations, 2) require.Equal(t, conversationID, conversations.Conversations[0].Id) From 00b4caa3b4693ff502f00022a5ee9434076567cf Mon Sep 17 00:00:00 2001 From: Jakub Nyckowski Date: Mon, 8 May 2023 21:57:38 -0400 Subject: [PATCH 07/10] Move assist API to a new GRPC service --- api/client/client.go | 30 +- api/client/proto/authservice.pb.go | 4087 ++++------------- api/gen/proto/go/assist/v1/assist.pb.go | 931 ++++ api/gen/proto/go/assist/v1/assist_grpc.pb.go | 268 ++ api/proto/teleport/assist/v1/assist.proto | 114 + .../legacy/client/proto/authservice.proto | 105 - lib/auth/assist/assistv1/service.go | 87 + lib/auth/auth.go | 18 +- lib/auth/auth_with_roles.go | 18 +- lib/auth/clt.go | 13 +- lib/auth/grpcserver.go | 71 +- lib/auth/init.go | 3 + lib/services/assist.go | 42 + lib/services/identity.go | 15 - lib/services/local/assistant.go | 60 +- lib/services/local/assistant_test.go | 51 +- lib/web/assistant.go | 1 - 17 files changed, 2413 insertions(+), 3501 deletions(-) create mode 100644 api/gen/proto/go/assist/v1/assist.pb.go create mode 100644 api/gen/proto/go/assist/v1/assist_grpc.pb.go create mode 100644 api/proto/teleport/assist/v1/assist.proto create mode 100644 lib/auth/assist/assistv1/service.go create mode 100644 lib/services/assist.go diff --git a/api/client/client.go b/api/client/client.go index d0cc138ef02f3..8a05807c9c015 100644 --- a/api/client/client.go +++ b/api/client/client.go @@ -46,6 +46,7 @@ import ( "github.com/gravitational/teleport/api/client/proto" "github.com/gravitational/teleport/api/constants" "github.com/gravitational/teleport/api/defaults" + "github.com/gravitational/teleport/api/gen/proto/go/assist/v1" devicepb "github.com/gravitational/teleport/api/gen/proto/go/teleport/devicetrust/v1" integrationpb "github.com/gravitational/teleport/api/gen/proto/go/teleport/integration/v1" kubeproto "github.com/gravitational/teleport/api/gen/proto/go/teleport/kube/v1" @@ -70,6 +71,12 @@ func init() { } } +// AuthServiceClient keeps the interfaces implemented by the auth service. +type AuthServiceClient struct { + proto.AuthServiceClient + assist.AssistServiceClient +} + // Client is a gRPC Client that connects to a Teleport Auth server either // locally or over ssh through a Teleport web proxy or tunnel proxy. // @@ -86,7 +93,7 @@ type Client struct { // conn is a grpc connection to the auth server. conn *grpc.ClientConn // grpc is the gRPC client specification for the auth server. - grpc proto.AuthServiceClient + grpc AuthServiceClient // JoinServiceClient is a client for the JoinService, which runs on both the // auth and proxy. *JoinServiceClient @@ -458,7 +465,10 @@ func (c *Client) dialGRPC(ctx context.Context, addr string) error { } c.conn = conn - c.grpc = proto.NewAuthServiceClient(c.conn) + c.grpc = AuthServiceClient{ + AuthServiceClient: proto.NewAuthServiceClient(c.conn), + AssistServiceClient: assist.NewAssistServiceClient(c.conn), + } c.JoinServiceClient = NewJoinServiceClient(proto.NewJoinServiceClient(c.conn)) return nil @@ -3653,7 +3663,7 @@ func (c *Client) GetHeadlessAuthentication(ctx context.Context, id string) (*typ } // CreateAssistantConversation creates a new conversation entry in the backend. -func (c *Client) CreateAssistantConversation(ctx context.Context, req *proto.CreateAssistantConversationRequest) (*proto.CreateAssistantConversationResponse, error) { +func (c *Client) CreateAssistantConversation(ctx context.Context, req *assist.CreateAssistantConversationRequest) (*assist.CreateAssistantConversationResponse, error) { resp, err := c.grpc.CreateAssistantConversation(ctx, req) if err != nil { return nil, trail.FromGRPC(err) @@ -3663,7 +3673,7 @@ func (c *Client) CreateAssistantConversation(ctx context.Context, req *proto.Cre } // GetAssistantMessages retrieves assistant messages with given conversation ID. -func (c *Client) GetAssistantMessages(ctx context.Context, req *proto.AssistantMessageRequest) (*proto.GetAssistantMessagesResponse, error) { +func (c *Client) GetAssistantMessages(ctx context.Context, req *assist.GetAssistantMessagesRequest) (*assist.GetAssistantMessagesResponse, error) { messages, err := c.grpc.GetAssistantMessages(ctx, req) if err != nil { return nil, trail.FromGRPC(err) @@ -3672,7 +3682,7 @@ func (c *Client) GetAssistantMessages(ctx context.Context, req *proto.AssistantM } // GetAssistantConversations returns all conversations started by a user. -func (c *Client) GetAssistantConversations(ctx context.Context, request *proto.GetAssistantConversationsRequest) (*proto.GetAssistantConversationsResponse, error) { +func (c *Client) GetAssistantConversations(ctx context.Context, request *assist.GetAssistantConversationsRequest) (*assist.GetAssistantConversationsResponse, error) { messages, err := c.grpc.GetAssistantConversations(ctx, request) if err != nil { return nil, trail.FromGRPC(err) @@ -3681,16 +3691,16 @@ func (c *Client) GetAssistantConversations(ctx context.Context, request *proto.G } // CreateAssistantMessage saves a new conversation message. -func (c *Client) CreateAssistantMessage(ctx context.Context, in *proto.AssistantMessage) (*emptypb.Empty, error) { - resp, err := c.grpc.CreateAssistantMessage(ctx, in) +func (c *Client) CreateAssistantMessage(ctx context.Context, in *assist.CreateAssistantMessageRequest) error { + _, err := c.grpc.CreateAssistantMessage(ctx, in) if err != nil { - return nil, trail.FromGRPC(err) + return trail.FromGRPC(err) } - return resp, nil + return nil } // UpdateAssistantConversationInfo updates conversation info. -func (c *Client) UpdateAssistantConversationInfo(ctx context.Context, in *proto.UpdateAssistantConversationInfoRequest) error { +func (c *Client) UpdateAssistantConversationInfo(ctx context.Context, in *assist.UpdateAssistantConversationInfoRequest) error { _, err := c.grpc.UpdateAssistantConversationInfo(ctx, in) if err != nil { return trail.FromGRPC(err) diff --git a/api/client/proto/authservice.pb.go b/api/client/proto/authservice.pb.go index 49fee6e7e4119..ec03f86716f01 100644 --- a/api/client/proto/authservice.pb.go +++ b/api/client/proto/authservice.pb.go @@ -14046,541 +14046,6 @@ func (m *ExportUpgradeWindowsResponse) GetSystemdUnitSchedule() string { return "" } -// AssistantMessageRequest is a request to the assistant service. -type AssistantMessageRequest struct { - // conversationId it's the ID of a conversation. - // It's used to tie all messages in a one conversation. - ConversationId string `protobuf:"bytes,1,opt,name=conversation_id,json=conversationId,proto3" json:"conversation_id,omitempty"` - // username is a username of the user who sent the message. - Username string `protobuf:"bytes,2,opt,name=username,proto3" json:"username,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *AssistantMessageRequest) Reset() { *m = AssistantMessageRequest{} } -func (m *AssistantMessageRequest) String() string { return proto.CompactTextString(m) } -func (*AssistantMessageRequest) ProtoMessage() {} -func (*AssistantMessageRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_0ffcffcda38ae159, []int{205} -} -func (m *AssistantMessageRequest) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *AssistantMessageRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_AssistantMessageRequest.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *AssistantMessageRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_AssistantMessageRequest.Merge(m, src) -} -func (m *AssistantMessageRequest) XXX_Size() int { - return m.Size() -} -func (m *AssistantMessageRequest) XXX_DiscardUnknown() { - xxx_messageInfo_AssistantMessageRequest.DiscardUnknown(m) -} - -var xxx_messageInfo_AssistantMessageRequest proto.InternalMessageInfo - -func (m *AssistantMessageRequest) GetConversationId() string { - if m != nil { - return m.ConversationId - } - return "" -} - -func (m *AssistantMessageRequest) GetUsername() string { - if m != nil { - return m.Username - } - return "" -} - -// AssistantMessage is a message sent to the assistant service. The conversation -// must be created first. -type AssistantMessage struct { - // conversationId used to tie all messages in a one conversation. - ConversationId string `protobuf:"bytes,1,opt,name=conversation_id,json=conversationId,proto3" json:"conversation_id,omitempty"` - // username is a username of the user who sent the message. - Username string `protobuf:"bytes,2,opt,name=username,proto3" json:"username,omitempty"` - // type is a type of message. It can be Chat response/query or a command to run. - Type string `protobuf:"bytes,3,opt,name=type,proto3" json:"type,omitempty"` - // createdTime is the time when the even occurred. - CreatedTime time.Time `protobuf:"bytes,4,opt,name=created_time,json=createdTime,proto3,stdtime" json:"created_time"` - // payload is a JSON message - Payload string `protobuf:"bytes,5,opt,name=payload,proto3" json:"payload,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *AssistantMessage) Reset() { *m = AssistantMessage{} } -func (m *AssistantMessage) String() string { return proto.CompactTextString(m) } -func (*AssistantMessage) ProtoMessage() {} -func (*AssistantMessage) Descriptor() ([]byte, []int) { - return fileDescriptor_0ffcffcda38ae159, []int{206} -} -func (m *AssistantMessage) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *AssistantMessage) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_AssistantMessage.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *AssistantMessage) XXX_Merge(src proto.Message) { - xxx_messageInfo_AssistantMessage.Merge(m, src) -} -func (m *AssistantMessage) XXX_Size() int { - return m.Size() -} -func (m *AssistantMessage) XXX_DiscardUnknown() { - xxx_messageInfo_AssistantMessage.DiscardUnknown(m) -} - -var xxx_messageInfo_AssistantMessage proto.InternalMessageInfo - -func (m *AssistantMessage) GetConversationId() string { - if m != nil { - return m.ConversationId - } - return "" -} - -func (m *AssistantMessage) GetUsername() string { - if m != nil { - return m.Username - } - return "" -} - -func (m *AssistantMessage) GetType() string { - if m != nil { - return m.Type - } - return "" -} - -func (m *AssistantMessage) GetCreatedTime() time.Time { - if m != nil { - return m.CreatedTime - } - return time.Time{} -} - -func (m *AssistantMessage) GetPayload() string { - if m != nil { - return m.Payload - } - return "" -} - -// GetAssistantMessagesResponse is a response from the assistant service. -type GetAssistantMessagesResponse struct { - // messages is a list of messages. - Messages []*AssistantMessage `protobuf:"bytes,1,rep,name=messages,proto3" json:"messages,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *GetAssistantMessagesResponse) Reset() { *m = GetAssistantMessagesResponse{} } -func (m *GetAssistantMessagesResponse) String() string { return proto.CompactTextString(m) } -func (*GetAssistantMessagesResponse) ProtoMessage() {} -func (*GetAssistantMessagesResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_0ffcffcda38ae159, []int{207} -} -func (m *GetAssistantMessagesResponse) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *GetAssistantMessagesResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_GetAssistantMessagesResponse.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *GetAssistantMessagesResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_GetAssistantMessagesResponse.Merge(m, src) -} -func (m *GetAssistantMessagesResponse) XXX_Size() int { - return m.Size() -} -func (m *GetAssistantMessagesResponse) XXX_DiscardUnknown() { - xxx_messageInfo_GetAssistantMessagesResponse.DiscardUnknown(m) -} - -var xxx_messageInfo_GetAssistantMessagesResponse proto.InternalMessageInfo - -func (m *GetAssistantMessagesResponse) GetMessages() []*AssistantMessage { - if m != nil { - return m.Messages - } - return nil -} - -// GetAssistantConversationsRequest is a request to get a list of conversations. -type GetAssistantConversationsRequest struct { - // username is a username of the user who created the conversation. - Username string `protobuf:"bytes,1,opt,name=username,proto3" json:"username,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *GetAssistantConversationsRequest) Reset() { *m = GetAssistantConversationsRequest{} } -func (m *GetAssistantConversationsRequest) String() string { return proto.CompactTextString(m) } -func (*GetAssistantConversationsRequest) ProtoMessage() {} -func (*GetAssistantConversationsRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_0ffcffcda38ae159, []int{208} -} -func (m *GetAssistantConversationsRequest) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *GetAssistantConversationsRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_GetAssistantConversationsRequest.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *GetAssistantConversationsRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_GetAssistantConversationsRequest.Merge(m, src) -} -func (m *GetAssistantConversationsRequest) XXX_Size() int { - return m.Size() -} -func (m *GetAssistantConversationsRequest) XXX_DiscardUnknown() { - xxx_messageInfo_GetAssistantConversationsRequest.DiscardUnknown(m) -} - -var xxx_messageInfo_GetAssistantConversationsRequest proto.InternalMessageInfo - -func (m *GetAssistantConversationsRequest) GetUsername() string { - if m != nil { - return m.Username - } - return "" -} - -// ConversationInfo is a conversation info. It contains a conversation -// information like ID, title, created time. -type ConversationInfo struct { - // id is a unique conversation ID. - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - // title is a title of the conversation. - Title string `protobuf:"bytes,2,opt,name=title,proto3" json:"title,omitempty"` - // createdTime is the time when the conversation was created. - CreatedTime time.Time `protobuf:"bytes,3,opt,name=created_time,json=createdTime,proto3,stdtime" json:"created_time"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *ConversationInfo) Reset() { *m = ConversationInfo{} } -func (m *ConversationInfo) String() string { return proto.CompactTextString(m) } -func (*ConversationInfo) ProtoMessage() {} -func (*ConversationInfo) Descriptor() ([]byte, []int) { - return fileDescriptor_0ffcffcda38ae159, []int{209} -} -func (m *ConversationInfo) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *ConversationInfo) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_ConversationInfo.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *ConversationInfo) XXX_Merge(src proto.Message) { - xxx_messageInfo_ConversationInfo.Merge(m, src) -} -func (m *ConversationInfo) XXX_Size() int { - return m.Size() -} -func (m *ConversationInfo) XXX_DiscardUnknown() { - xxx_messageInfo_ConversationInfo.DiscardUnknown(m) -} - -var xxx_messageInfo_ConversationInfo proto.InternalMessageInfo - -func (m *ConversationInfo) GetId() string { - if m != nil { - return m.Id - } - return "" -} - -func (m *ConversationInfo) GetTitle() string { - if m != nil { - return m.Title - } - return "" -} - -func (m *ConversationInfo) GetCreatedTime() time.Time { - if m != nil { - return m.CreatedTime - } - return time.Time{} -} - -// GetAssistantConversationsResponse is a response from the assistant service. -type GetAssistantConversationsResponse struct { - // conversations is a list of conversations. - Conversations []*ConversationInfo `protobuf:"bytes,1,rep,name=conversations,proto3" json:"conversations,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *GetAssistantConversationsResponse) Reset() { *m = GetAssistantConversationsResponse{} } -func (m *GetAssistantConversationsResponse) String() string { return proto.CompactTextString(m) } -func (*GetAssistantConversationsResponse) ProtoMessage() {} -func (*GetAssistantConversationsResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_0ffcffcda38ae159, []int{210} -} -func (m *GetAssistantConversationsResponse) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *GetAssistantConversationsResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_GetAssistantConversationsResponse.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *GetAssistantConversationsResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_GetAssistantConversationsResponse.Merge(m, src) -} -func (m *GetAssistantConversationsResponse) XXX_Size() int { - return m.Size() -} -func (m *GetAssistantConversationsResponse) XXX_DiscardUnknown() { - xxx_messageInfo_GetAssistantConversationsResponse.DiscardUnknown(m) -} - -var xxx_messageInfo_GetAssistantConversationsResponse proto.InternalMessageInfo - -func (m *GetAssistantConversationsResponse) GetConversations() []*ConversationInfo { - if m != nil { - return m.Conversations - } - return nil -} - -// CreateAssistantConversationRequest is a request to create a new conversation. -type CreateAssistantConversationRequest struct { - // username is a username of the user who created the conversation. - Username string `protobuf:"bytes,1,opt,name=username,proto3" json:"username,omitempty"` - // createdTime is the time when the conversation was created. - CreatedTime time.Time `protobuf:"bytes,2,opt,name=created_time,json=createdTime,proto3,stdtime" json:"created_time"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *CreateAssistantConversationRequest) Reset() { *m = CreateAssistantConversationRequest{} } -func (m *CreateAssistantConversationRequest) String() string { return proto.CompactTextString(m) } -func (*CreateAssistantConversationRequest) ProtoMessage() {} -func (*CreateAssistantConversationRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_0ffcffcda38ae159, []int{211} -} -func (m *CreateAssistantConversationRequest) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *CreateAssistantConversationRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_CreateAssistantConversationRequest.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *CreateAssistantConversationRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_CreateAssistantConversationRequest.Merge(m, src) -} -func (m *CreateAssistantConversationRequest) XXX_Size() int { - return m.Size() -} -func (m *CreateAssistantConversationRequest) XXX_DiscardUnknown() { - xxx_messageInfo_CreateAssistantConversationRequest.DiscardUnknown(m) -} - -var xxx_messageInfo_CreateAssistantConversationRequest proto.InternalMessageInfo - -func (m *CreateAssistantConversationRequest) GetUsername() string { - if m != nil { - return m.Username - } - return "" -} - -func (m *CreateAssistantConversationRequest) GetCreatedTime() time.Time { - if m != nil { - return m.CreatedTime - } - return time.Time{} -} - -// CreateAssistantConversationResponse is a response from the assistant service. -type CreateAssistantConversationResponse struct { - // id is a unique conversation ID. - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *CreateAssistantConversationResponse) Reset() { *m = CreateAssistantConversationResponse{} } -func (m *CreateAssistantConversationResponse) String() string { return proto.CompactTextString(m) } -func (*CreateAssistantConversationResponse) ProtoMessage() {} -func (*CreateAssistantConversationResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_0ffcffcda38ae159, []int{212} -} -func (m *CreateAssistantConversationResponse) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *CreateAssistantConversationResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_CreateAssistantConversationResponse.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *CreateAssistantConversationResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_CreateAssistantConversationResponse.Merge(m, src) -} -func (m *CreateAssistantConversationResponse) XXX_Size() int { - return m.Size() -} -func (m *CreateAssistantConversationResponse) XXX_DiscardUnknown() { - xxx_messageInfo_CreateAssistantConversationResponse.DiscardUnknown(m) -} - -var xxx_messageInfo_CreateAssistantConversationResponse proto.InternalMessageInfo - -func (m *CreateAssistantConversationResponse) GetId() string { - if m != nil { - return m.Id - } - return "" -} - -type UpdateAssistantConversationInfoRequest struct { - // conversationId is a unique conversation ID. - ConversationId string `protobuf:"bytes,1,opt,name=conversation_id,json=conversationId,proto3" json:"conversation_id,omitempty"` - // username is a username of the user who created the conversation. - Username string `protobuf:"bytes,2,opt,name=username,proto3" json:"username,omitempty"` - // title is a title of the conversation. - Title string `protobuf:"bytes,3,opt,name=title,proto3" json:"title,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *UpdateAssistantConversationInfoRequest) Reset() { - *m = UpdateAssistantConversationInfoRequest{} -} -func (m *UpdateAssistantConversationInfoRequest) String() string { return proto.CompactTextString(m) } -func (*UpdateAssistantConversationInfoRequest) ProtoMessage() {} -func (*UpdateAssistantConversationInfoRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_0ffcffcda38ae159, []int{213} -} -func (m *UpdateAssistantConversationInfoRequest) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *UpdateAssistantConversationInfoRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_UpdateAssistantConversationInfoRequest.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *UpdateAssistantConversationInfoRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_UpdateAssistantConversationInfoRequest.Merge(m, src) -} -func (m *UpdateAssistantConversationInfoRequest) XXX_Size() int { - return m.Size() -} -func (m *UpdateAssistantConversationInfoRequest) XXX_DiscardUnknown() { - xxx_messageInfo_UpdateAssistantConversationInfoRequest.DiscardUnknown(m) -} - -var xxx_messageInfo_UpdateAssistantConversationInfoRequest proto.InternalMessageInfo - -func (m *UpdateAssistantConversationInfoRequest) GetConversationId() string { - if m != nil { - return m.ConversationId - } - return "" -} - -func (m *UpdateAssistantConversationInfoRequest) GetUsername() string { - if m != nil { - return m.Username - } - return "" -} - -func (m *UpdateAssistantConversationInfoRequest) GetTitle() string { - if m != nil { - return m.Title - } - return "" -} - func init() { proto.RegisterEnum("proto.Operation", Operation_name, Operation_value) proto.RegisterEnum("proto.DeviceType", DeviceType_name, DeviceType_value) @@ -14799,15 +14264,6 @@ func init() { proto.RegisterType((*UpdateHeadlessAuthenticationStateRequest)(nil), "proto.UpdateHeadlessAuthenticationStateRequest") proto.RegisterType((*ExportUpgradeWindowsRequest)(nil), "proto.ExportUpgradeWindowsRequest") proto.RegisterType((*ExportUpgradeWindowsResponse)(nil), "proto.ExportUpgradeWindowsResponse") - proto.RegisterType((*AssistantMessageRequest)(nil), "proto.AssistantMessageRequest") - proto.RegisterType((*AssistantMessage)(nil), "proto.AssistantMessage") - proto.RegisterType((*GetAssistantMessagesResponse)(nil), "proto.GetAssistantMessagesResponse") - proto.RegisterType((*GetAssistantConversationsRequest)(nil), "proto.GetAssistantConversationsRequest") - proto.RegisterType((*ConversationInfo)(nil), "proto.ConversationInfo") - proto.RegisterType((*GetAssistantConversationsResponse)(nil), "proto.GetAssistantConversationsResponse") - proto.RegisterType((*CreateAssistantConversationRequest)(nil), "proto.CreateAssistantConversationRequest") - proto.RegisterType((*CreateAssistantConversationResponse)(nil), "proto.CreateAssistantConversationResponse") - proto.RegisterType((*UpdateAssistantConversationInfoRequest)(nil), "proto.UpdateAssistantConversationInfoRequest") } func init() { @@ -14815,149 +14271,149 @@ func init() { } var fileDescriptor_0ffcffcda38ae159 = []byte{ - // 13543 bytes of a gzipped FileDescriptorProto + // 13228 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xc4, 0xbd, 0x5d, 0x6c, 0x1c, 0x49, 0x92, 0x18, 0xac, 0x6e, 0x92, 0x22, 0x19, 0xfc, 0x6b, 0xa5, 0x48, 0xb1, 0xd5, 0xa4, 0xd8, 0x52, - 0x69, 0xa5, 0xd5, 0x68, 0x77, 0xf4, 0x43, 0xcd, 0xff, 0xcc, 0xce, 0x6c, 0x77, 0x93, 0x12, 0x29, - 0x51, 0x24, 0xa7, 0x9a, 0x6c, 0xcd, 0xee, 0xcc, 0x6e, 0x6f, 0xb1, 0x3b, 0x45, 0xd6, 0xa7, 0x66, - 0x57, 0x6f, 0x55, 0xb5, 0x34, 0xba, 0x0f, 0xdf, 0xcf, 0xf9, 0x7c, 0x07, 0xd8, 0x86, 0xed, 0x3b, - 0xf8, 0xce, 0xf0, 0xc1, 0x0f, 0x67, 0xc0, 0x7e, 0xb1, 0x01, 0x03, 0x86, 0x81, 0xc3, 0xbd, 0xf8, - 0xe5, 0x6c, 0x03, 0x5e, 0x1b, 0x38, 0xc3, 0x80, 0x7d, 0x30, 0xe0, 0x07, 0xda, 0xb7, 0x8f, 0x04, - 0xfc, 0x60, 0x18, 0xf6, 0xc3, 0x02, 0x06, 0x8c, 0xfc, 0xad, 0xcc, 0xaa, 0xac, 0x6a, 0x52, 0xc3, - 0x1d, 0xbf, 0x48, 0xec, 0xcc, 0x88, 0xc8, 0xff, 0xa8, 0x88, 0xc8, 0xc8, 0x08, 0xb8, 0x13, 0xe2, - 0x0e, 0xee, 0x79, 0x7e, 0x78, 0xb7, 0x83, 0xf7, 0x9d, 0xd6, 0xeb, 0xbb, 0xad, 0x8e, 0x8b, 0xbb, - 0xe1, 0xdd, 0x9e, 0xef, 0x85, 0xde, 0x5d, 0xa7, 0x1f, 0x1e, 0x04, 0xd8, 0x7f, 0xe9, 0xb6, 0xf0, - 0x1d, 0x5a, 0x82, 0x46, 0xe8, 0x7f, 0xa5, 0xd9, 0x7d, 0x6f, 0xdf, 0x63, 0x30, 0xe4, 0x2f, 0x56, - 0x59, 0x5a, 0xd8, 0xf7, 0xbc, 0xfd, 0x0e, 0x66, 0xc8, 0x7b, 0xfd, 0xe7, 0x77, 0xf1, 0x61, 0x2f, - 0x7c, 0xcd, 0x2b, 0xcb, 0xf1, 0xca, 0xd0, 0x3d, 0xc4, 0x41, 0xe8, 0x1c, 0xf6, 0x38, 0xc0, 0x5b, - 0xb2, 0x2b, 0x4e, 0x18, 0x92, 0x9a, 0xd0, 0xf5, 0xba, 0x77, 0x5f, 0xde, 0x57, 0x7f, 0x72, 0xd0, - 0x5b, 0x99, 0xbd, 0x6e, 0x61, 0x3f, 0x0c, 0x12, 0x44, 0x39, 0x64, 0xf8, 0xba, 0x87, 0x83, 0xbb, - 0xf8, 0x25, 0xee, 0x86, 0xe2, 0x3f, 0x0e, 0x7a, 0xcd, 0x0c, 0x4a, 0xff, 0xe5, 0x20, 0x6f, 0x9b, - 0x41, 0x5e, 0xe1, 0x3d, 0x32, 0x53, 0x5d, 0xf9, 0xc7, 0x00, 0x70, 0xdf, 0xe9, 0xf5, 0xb0, 0x1f, - 0xfd, 0x91, 0xe8, 0x6b, 0x3f, 0x70, 0xf6, 0x31, 0xef, 0xe3, 0xcb, 0xfb, 0xea, 0x4f, 0x06, 0x6a, - 0xfd, 0xce, 0x12, 0x8c, 0xac, 0x92, 0x02, 0xf4, 0x01, 0x0c, 0xef, 0xbc, 0xee, 0xe1, 0x62, 0xee, - 0x6a, 0xee, 0xd6, 0xf4, 0x72, 0x81, 0xd5, 0xdf, 0xd9, 0xea, 0x61, 0x9f, 0x4e, 0x58, 0x15, 0x1d, - 0x1f, 0x95, 0xa7, 0x49, 0xbb, 0xdf, 0xf7, 0x0e, 0xdd, 0x90, 0x2e, 0x88, 0x4d, 0x31, 0xd0, 0x33, - 0x98, 0xb6, 0x71, 0xe0, 0xf5, 0xfd, 0x16, 0x5e, 0xc3, 0x4e, 0x1b, 0xfb, 0xc5, 0xfc, 0xd5, 0xdc, - 0xad, 0x89, 0xe5, 0xb9, 0x3b, 0x6c, 0xc8, 0x7a, 0x65, 0xf5, 0xd2, 0xf1, 0x51, 0x19, 0xf9, 0xbc, - 0x2c, 0x22, 0xb6, 0x76, 0xce, 0x8e, 0x91, 0x41, 0x5f, 0xc1, 0x54, 0x0d, 0xfb, 0x61, 0xa5, 0x1f, - 0x1e, 0x78, 0xbe, 0x1b, 0xbe, 0x2e, 0x0e, 0x51, 0xba, 0x97, 0x38, 0x5d, 0xad, 0xae, 0xb1, 0x5c, - 0x5d, 0x3c, 0x3e, 0x2a, 0x17, 0xc9, 0x9a, 0x35, 0x1d, 0x51, 0xaa, 0x91, 0xd7, 0x89, 0xa1, 0x2f, - 0x60, 0xb2, 0x4e, 0x36, 0x43, 0x6b, 0xc7, 0x7b, 0x81, 0xbb, 0x41, 0x71, 0x58, 0xeb, 0xb4, 0x5a, - 0xd5, 0x58, 0xae, 0x2e, 0x1c, 0x1f, 0x95, 0xe7, 0xe9, 0xde, 0x69, 0x35, 0x43, 0x5a, 0xa8, 0x91, - 0xd6, 0x28, 0xa1, 0x9f, 0xc1, 0xf4, 0xb6, 0xef, 0xbd, 0x74, 0x03, 0xd7, 0xeb, 0xd2, 0xa2, 0xe2, - 0x08, 0xa5, 0x3d, 0xcf, 0x69, 0xeb, 0x95, 0x8d, 0xe5, 0xea, 0x95, 0xe3, 0xa3, 0xf2, 0xe5, 0x9e, - 0x28, 0x65, 0x0d, 0xe8, 0x33, 0xa3, 0xa3, 0xa0, 0x1d, 0x98, 0xa8, 0x75, 0xfa, 0x41, 0x88, 0xfd, - 0x4d, 0xe7, 0x10, 0x17, 0xcf, 0x53, 0xf2, 0xb3, 0x62, 0x5e, 0xa2, 0x9a, 0xc6, 0x72, 0xb5, 0x74, - 0x7c, 0x54, 0xbe, 0xd4, 0x62, 0x45, 0xcd, 0xae, 0x73, 0xa8, 0x4f, 0xb9, 0x4a, 0x06, 0xbd, 0x0f, - 0xc3, 0xbb, 0x01, 0xf6, 0x8b, 0x63, 0x94, 0xdc, 0x14, 0x27, 0x47, 0x8a, 0x1a, 0xcb, 0x6c, 0xfd, - 0xfb, 0x01, 0xf6, 0x35, 0x7c, 0x8a, 0x40, 0x10, 0x6d, 0xaf, 0x83, 0x8b, 0xe3, 0x1a, 0x22, 0x29, - 0x6a, 0xbc, 0xc7, 0x10, 0x7d, 0xaf, 0xa3, 0x37, 0x4c, 0x11, 0xd0, 0x3a, 0x8c, 0x93, 0x96, 0x83, - 0x9e, 0xd3, 0xc2, 0x45, 0xa0, 0xd8, 0x05, 0x8e, 0x2d, 0xcb, 0xab, 0xf3, 0xc7, 0x47, 0xe5, 0x8b, - 0x5d, 0xf1, 0x53, 0xa3, 0x12, 0x61, 0xa3, 0xcf, 0xe0, 0x7c, 0x1d, 0xfb, 0x2f, 0xb1, 0x5f, 0x9c, - 0xa0, 0x74, 0x66, 0xc4, 0x42, 0xd2, 0xc2, 0xc6, 0x72, 0x75, 0xf6, 0xf8, 0xa8, 0x5c, 0x08, 0xe8, - 0x2f, 0x8d, 0x06, 0x47, 0x23, 0xbb, 0xcd, 0xc6, 0x2f, 0xb1, 0x1f, 0xe0, 0x9d, 0x7e, 0xb7, 0x8b, - 0x3b, 0xc5, 0x49, 0x6d, 0xb7, 0x69, 0x75, 0x62, 0xb7, 0xf9, 0xac, 0xb0, 0x19, 0xd2, 0x52, 0x7d, - 0xb7, 0x69, 0x08, 0xe8, 0x00, 0x0a, 0xec, 0xaf, 0x9a, 0xd7, 0xed, 0xe2, 0x16, 0x39, 0x52, 0xc5, - 0x29, 0xda, 0xc0, 0x65, 0xde, 0x40, 0xbc, 0xba, 0xb1, 0x5c, 0x2d, 0x1f, 0x1f, 0x95, 0x17, 0x18, - 0xed, 0x66, 0x4b, 0x56, 0x68, 0xcd, 0x24, 0xa8, 0x92, 0x71, 0x54, 0x5a, 0x2d, 0x1c, 0x04, 0x36, - 0xfe, 0x79, 0x1f, 0x07, 0x61, 0x71, 0x5a, 0x1b, 0x87, 0x56, 0xd7, 0x78, 0xc0, 0xc6, 0xe1, 0xd0, - 0xc2, 0xa6, 0xcf, 0x4a, 0xf5, 0x71, 0x68, 0x08, 0x68, 0x1b, 0xa0, 0xd2, 0xeb, 0xd5, 0x71, 0x40, - 0x36, 0x63, 0x71, 0x86, 0x92, 0xbe, 0xc8, 0x49, 0x3f, 0xc3, 0x7b, 0xbc, 0xa2, 0xb1, 0x5c, 0xbd, - 0x7c, 0x7c, 0x54, 0x9e, 0x73, 0x7a, 0xbd, 0x66, 0xc0, 0x8a, 0x34, 0xa2, 0x0a, 0x0d, 0x36, 0xef, - 0x87, 0x5e, 0x88, 0xf9, 0x56, 0x2c, 0x16, 0x62, 0xf3, 0xae, 0xd4, 0x89, 0xfe, 0xfa, 0xb4, 0xb0, - 0xc9, 0xb7, 0x75, 0x7c, 0xde, 0x15, 0x04, 0x72, 0x16, 0x57, 0x9c, 0xd0, 0xd9, 0x73, 0x02, 0xcc, - 0xb7, 0xc7, 0x05, 0xed, 0x2c, 0xea, 0x95, 0x8d, 0x07, 0xec, 0x2c, 0xb6, 0x79, 0x69, 0xd3, 0xb0, - 0x5f, 0x62, 0xf4, 0xc8, 0x8c, 0x44, 0x03, 0x2f, 0xa2, 0x01, 0x33, 0xf2, 0x0a, 0xef, 0x99, 0x67, - 0x24, 0x02, 0x45, 0x6b, 0x30, 0xf6, 0x0c, 0xef, 0x31, 0xce, 0x71, 0x91, 0xd2, 0xbb, 0x10, 0xd1, - 0x63, 0x3c, 0xe3, 0x01, 0x3b, 0x15, 0x84, 0x5a, 0x92, 0x5b, 0x48, 0x6c, 0xf4, 0xdb, 0x39, 0x98, - 0x17, 0x27, 0x1c, 0x87, 0xaf, 0x3c, 0xff, 0x85, 0xdb, 0xdd, 0xaf, 0x79, 0xdd, 0xe7, 0xee, 0x7e, - 0x71, 0x96, 0x52, 0xbe, 0x1a, 0x63, 0x1a, 0x31, 0xa8, 0xc6, 0x72, 0xf5, 0xbb, 0xc7, 0x47, 0xe5, - 0xeb, 0x92, 0x81, 0xc8, 0x7a, 0xb2, 0x21, 0x9f, 0xbb, 0xfb, 0x5a, 0xc3, 0x69, 0x6d, 0xa1, 0xdf, - 0xcc, 0xc1, 0x25, 0x3e, 0x3a, 0x1b, 0xb7, 0x3c, 0xbf, 0x1d, 0x75, 0x63, 0x8e, 0x76, 0xa3, 0x2c, - 0x4f, 0xab, 0x09, 0xa8, 0xb1, 0x5c, 0xbd, 0x79, 0x7c, 0x54, 0xb6, 0xf8, 0xc4, 0x35, 0x7d, 0x51, - 0x6d, 0xea, 0x44, 0x4a, 0x43, 0x64, 0x27, 0x10, 0xe6, 0xbf, 0xed, 0xe3, 0xe7, 0xd8, 0xc7, 0xdd, - 0x16, 0x2e, 0x5e, 0xd2, 0x76, 0x82, 0x5e, 0x29, 0xb8, 0x32, 0xf9, 0x94, 0x34, 0x7b, 0xb2, 0x58, - 0xdf, 0x09, 0x3a, 0x0a, 0xfa, 0x39, 0x20, 0x3e, 0x01, 0x95, 0x7e, 0xdb, 0x0d, 0xf9, 0x00, 0xe7, - 0x69, 0x2b, 0x0b, 0xfa, 0x3c, 0x2b, 0x00, 0x8d, 0xe5, 0xaa, 0x75, 0x7c, 0x54, 0x5e, 0x12, 0x53, - 0xec, 0x90, 0x2a, 0xd3, 0xc0, 0x0c, 0xc4, 0x09, 0xe7, 0xdd, 0xf0, 0x5a, 0x2f, 0x8a, 0x45, 0x8d, - 0xf3, 0x92, 0x22, 0xc1, 0xb2, 0x3b, 0x5e, 0xeb, 0x85, 0xce, 0x79, 0x49, 0x2d, 0x0a, 0xe1, 0x22, - 0x5f, 0x25, 0x1b, 0x07, 0xa1, 0xef, 0x52, 0xde, 0x11, 0x14, 0x2f, 0x53, 0x3a, 0x8b, 0x82, 0x07, - 0x27, 0x21, 0x1a, 0xef, 0xb0, 0xde, 0xf2, 0x8d, 0xd0, 0xf4, 0x95, 0x3a, 0xad, 0x19, 0x13, 0x79, - 0xf4, 0xff, 0xc0, 0xdc, 0x33, 0xb7, 0xdb, 0xf6, 0x5e, 0x05, 0x2b, 0x38, 0x78, 0x11, 0x7a, 0xbd, - 0x3a, 0x13, 0x0a, 0x8b, 0x25, 0xda, 0xee, 0x92, 0xd8, 0xe6, 0x26, 0x98, 0xc6, 0x83, 0xea, 0x8d, - 0xe3, 0xa3, 0xf2, 0xb5, 0x57, 0xac, 0xb2, 0xd9, 0x66, 0xb5, 0x4d, 0x2e, 0x57, 0x6a, 0x8d, 0x9b, - 0x5b, 0x21, 0x5b, 0x40, 0xaf, 0x28, 0x2e, 0x68, 0x5b, 0x40, 0xaf, 0x14, 0xcc, 0x20, 0xd6, 0xa0, - 0xbe, 0x05, 0x74, 0x14, 0xf4, 0x08, 0xc6, 0x04, 0x7b, 0x28, 0x2e, 0x6a, 0x47, 0x57, 0x14, 0x37, - 0x1e, 0x30, 0x09, 0x48, 0xb0, 0x18, 0xfd, 0xe4, 0x0a, 0x28, 0xb4, 0x01, 0xe3, 0x94, 0x47, 0x52, - 0x96, 0x75, 0x85, 0x52, 0x42, 0x62, 0xa3, 0x8a, 0xf2, 0xc6, 0x83, 0x6a, 0xf1, 0xf8, 0xa8, 0x3c, - 0xcb, 0xb8, 0x6c, 0x82, 0x51, 0x45, 0x04, 0xd0, 0x03, 0x18, 0xaa, 0xf4, 0x7a, 0xc5, 0x25, 0x4a, - 0x67, 0x32, 0xa2, 0xd3, 0x78, 0x50, 0xbd, 0x70, 0x7c, 0x54, 0x9e, 0x72, 0x7a, 0xfa, 0xb0, 0x08, - 0x34, 0xda, 0x83, 0x42, 0xbd, 0xeb, 0xbd, 0x7a, 0xde, 0x71, 0x5e, 0x60, 0xc1, 0xde, 0xca, 0xe9, - 0xec, 0x8d, 0x7e, 0xac, 0x02, 0x81, 0x60, 0x64, 0x72, 0x09, 0x7a, 0xe4, 0xb3, 0xf8, 0xa4, 0xbf, - 0x87, 0xfd, 0x2e, 0x0e, 0x71, 0xc0, 0x47, 0x7b, 0x55, 0xfb, 0x2c, 0xc6, 0xab, 0x1b, 0x0f, 0x58, - 0x4b, 0x2f, 0x64, 0xb9, 0x69, 0xec, 0x09, 0xaa, 0xa8, 0x03, 0x17, 0xa2, 0x32, 0xf1, 0xa9, 0xb9, + 0x69, 0xa4, 0xd1, 0x68, 0x77, 0xf5, 0x43, 0xcd, 0xff, 0xcc, 0xce, 0x6c, 0x77, 0x93, 0x12, 0x29, + 0x51, 0x24, 0xa7, 0x9a, 0x6c, 0xcd, 0xee, 0xce, 0x6e, 0x6f, 0xb1, 0x3b, 0x45, 0xd5, 0xc7, 0x66, + 0x57, 0x6f, 0x55, 0xb5, 0x34, 0xba, 0x0f, 0xdf, 0x67, 0x9f, 0xcf, 0x77, 0x0f, 0x36, 0xce, 0x3e, + 0xc3, 0x77, 0x86, 0x0f, 0x86, 0x71, 0x06, 0xec, 0x17, 0x1b, 0x30, 0x60, 0x18, 0x38, 0xdc, 0x8b, + 0x5f, 0xce, 0x36, 0xe0, 0xb5, 0x81, 0x03, 0x0c, 0xd8, 0x07, 0x03, 0x7e, 0xa0, 0x7d, 0xfb, 0x48, + 0xc0, 0x0f, 0x86, 0x61, 0x3f, 0x2c, 0x60, 0xc0, 0xc8, 0xdf, 0xca, 0xac, 0xca, 0xaa, 0x26, 0x35, + 0xdc, 0xf1, 0x8b, 0xc4, 0xce, 0x8c, 0x88, 0xfc, 0x8f, 0x8a, 0x88, 0x8c, 0x8c, 0x80, 0x3b, 0x21, + 0xee, 0xe0, 0x9e, 0xe7, 0x87, 0x77, 0x3b, 0x78, 0xdf, 0x69, 0xbd, 0xbe, 0xdb, 0xea, 0xb8, 0xb8, + 0x1b, 0xde, 0xed, 0xf9, 0x5e, 0xe8, 0xdd, 0x75, 0xfa, 0xe1, 0x8b, 0x00, 0xfb, 0x2f, 0xdd, 0x16, + 0xbe, 0x43, 0x4b, 0xd0, 0x08, 0xfd, 0xaf, 0x34, 0xbb, 0xef, 0xed, 0x7b, 0x0c, 0x86, 0xfc, 0xc5, + 0x2a, 0x4b, 0x0b, 0xfb, 0x9e, 0xb7, 0xdf, 0xc1, 0x0c, 0x79, 0xaf, 0xff, 0xfc, 0x2e, 0x3e, 0xec, + 0x85, 0xaf, 0x79, 0x65, 0x39, 0x5e, 0x19, 0xba, 0x87, 0x38, 0x08, 0x9d, 0xc3, 0x1e, 0x07, 0x78, + 0x47, 0x76, 0xc5, 0x09, 0x43, 0x52, 0x13, 0xba, 0x5e, 0xf7, 0xee, 0xcb, 0xfb, 0xea, 0x4f, 0x0e, + 0x7a, 0x2b, 0xb3, 0xd7, 0x2d, 0xec, 0x87, 0x41, 0x82, 0x28, 0x87, 0x0c, 0x5f, 0xf7, 0x70, 0x70, + 0x17, 0xbf, 0xc4, 0xdd, 0x50, 0xfc, 0xc7, 0x41, 0xaf, 0x99, 0x41, 0xe9, 0xbf, 0x1c, 0xe4, 0x7b, + 0x66, 0x90, 0x57, 0x78, 0x8f, 0xcc, 0x54, 0x57, 0xfe, 0x31, 0x00, 0xdc, 0x77, 0x7a, 0x3d, 0xec, + 0x47, 0x7f, 0x24, 0xfa, 0xda, 0x0f, 0x9c, 0x7d, 0xcc, 0xfb, 0xf8, 0xf2, 0xbe, 0xfa, 0x93, 0x81, + 0x5a, 0xbf, 0xb3, 0x04, 0x23, 0xab, 0xa4, 0x00, 0x7d, 0x08, 0xc3, 0x3b, 0xaf, 0x7b, 0xb8, 0x98, + 0xbb, 0x9a, 0xbb, 0x35, 0xbd, 0x5c, 0x60, 0xf5, 0x77, 0xb6, 0x7a, 0xd8, 0xa7, 0x13, 0x56, 0x45, + 0xc7, 0x47, 0xe5, 0x69, 0xd2, 0xee, 0x77, 0xbd, 0x43, 0x37, 0xa4, 0x0b, 0x62, 0x53, 0x0c, 0xf4, + 0x0c, 0xa6, 0x6d, 0x1c, 0x78, 0x7d, 0xbf, 0x85, 0xd7, 0xb0, 0xd3, 0xc6, 0x7e, 0x31, 0x7f, 0x35, + 0x77, 0x6b, 0x62, 0x79, 0xee, 0x0e, 0x1b, 0xb2, 0x5e, 0x59, 0xbd, 0x74, 0x7c, 0x54, 0x46, 0x3e, + 0x2f, 0x8b, 0x88, 0xad, 0x9d, 0xb3, 0x63, 0x64, 0xd0, 0x57, 0x30, 0x55, 0xc3, 0x7e, 0x58, 0xe9, + 0x87, 0x2f, 0x3c, 0xdf, 0x0d, 0x5f, 0x17, 0x87, 0x28, 0xdd, 0x4b, 0x9c, 0xae, 0x56, 0xd7, 0x58, + 0xae, 0x2e, 0x1e, 0x1f, 0x95, 0x8b, 0x64, 0xcd, 0x9a, 0x8e, 0x28, 0xd5, 0xc8, 0xeb, 0xc4, 0xd0, + 0x97, 0x30, 0x59, 0x27, 0x9b, 0xa1, 0xb5, 0xe3, 0x1d, 0xe0, 0x6e, 0x50, 0x1c, 0xd6, 0x3a, 0xad, + 0x56, 0x35, 0x96, 0xab, 0x0b, 0xc7, 0x47, 0xe5, 0x79, 0xba, 0x77, 0x5a, 0xcd, 0x90, 0x16, 0x6a, + 0xa4, 0x35, 0x4a, 0xe8, 0x67, 0x30, 0xbd, 0xed, 0x7b, 0x2f, 0xdd, 0xc0, 0xf5, 0xba, 0xb4, 0xa8, + 0x38, 0x42, 0x69, 0xcf, 0x73, 0xda, 0x7a, 0x65, 0x63, 0xb9, 0x7a, 0xe5, 0xf8, 0xa8, 0x7c, 0xb9, + 0x27, 0x4a, 0x59, 0x03, 0xfa, 0xcc, 0xe8, 0x28, 0x68, 0x07, 0x26, 0x6a, 0x9d, 0x7e, 0x10, 0x62, + 0x7f, 0xd3, 0x39, 0xc4, 0xc5, 0xf3, 0x94, 0xfc, 0xac, 0x98, 0x97, 0xa8, 0xa6, 0xb1, 0x5c, 0x2d, + 0x1d, 0x1f, 0x95, 0x2f, 0xb5, 0x58, 0x51, 0xb3, 0xeb, 0x1c, 0xea, 0x53, 0xae, 0x92, 0x41, 0x1f, + 0xc0, 0xf0, 0x6e, 0x80, 0xfd, 0xe2, 0x18, 0x25, 0x37, 0xc5, 0xc9, 0x91, 0xa2, 0xc6, 0x32, 0x5b, + 0xff, 0x7e, 0x80, 0x7d, 0x0d, 0x9f, 0x22, 0x10, 0x44, 0xdb, 0xeb, 0xe0, 0xe2, 0xb8, 0x86, 0x48, + 0x8a, 0x1a, 0xef, 0x33, 0x44, 0xdf, 0xeb, 0xe8, 0x0d, 0x53, 0x04, 0xb4, 0x0e, 0xe3, 0xa4, 0xe5, + 0xa0, 0xe7, 0xb4, 0x70, 0x11, 0x28, 0x76, 0x81, 0x63, 0xcb, 0xf2, 0xea, 0xfc, 0xf1, 0x51, 0xf9, + 0x62, 0x57, 0xfc, 0xd4, 0xa8, 0x44, 0xd8, 0xe8, 0x73, 0x38, 0x5f, 0xc7, 0xfe, 0x4b, 0xec, 0x17, + 0x27, 0x28, 0x9d, 0x19, 0xb1, 0x90, 0xb4, 0xb0, 0xb1, 0x5c, 0x9d, 0x3d, 0x3e, 0x2a, 0x17, 0x02, + 0xfa, 0x4b, 0xa3, 0xc1, 0xd1, 0xc8, 0x6e, 0xb3, 0xf1, 0x4b, 0xec, 0x07, 0x78, 0xa7, 0xdf, 0xed, + 0xe2, 0x4e, 0x71, 0x52, 0xdb, 0x6d, 0x5a, 0x9d, 0xd8, 0x6d, 0x3e, 0x2b, 0x6c, 0x86, 0xb4, 0x54, + 0xdf, 0x6d, 0x1a, 0x02, 0x7a, 0x01, 0x05, 0xf6, 0x57, 0xcd, 0xeb, 0x76, 0x71, 0x8b, 0x1c, 0xa9, + 0xe2, 0x14, 0x6d, 0xe0, 0x32, 0x6f, 0x20, 0x5e, 0xdd, 0x58, 0xae, 0x96, 0x8f, 0x8f, 0xca, 0x0b, + 0x8c, 0x76, 0xb3, 0x25, 0x2b, 0xb4, 0x66, 0x12, 0x54, 0xc9, 0x38, 0x2a, 0xad, 0x16, 0x0e, 0x02, + 0x1b, 0xff, 0xbc, 0x8f, 0x83, 0xb0, 0x38, 0xad, 0x8d, 0x43, 0xab, 0x6b, 0x3c, 0x60, 0xe3, 0x70, + 0x68, 0x61, 0xd3, 0x67, 0xa5, 0xfa, 0x38, 0x34, 0x04, 0xb4, 0x0d, 0x50, 0xe9, 0xf5, 0xea, 0x38, + 0x20, 0x9b, 0xb1, 0x38, 0x43, 0x49, 0x5f, 0xe4, 0xa4, 0x9f, 0xe1, 0x3d, 0x5e, 0xd1, 0x58, 0xae, + 0x5e, 0x3e, 0x3e, 0x2a, 0xcf, 0x39, 0xbd, 0x5e, 0x33, 0x60, 0x45, 0x1a, 0x51, 0x85, 0x06, 0x9b, + 0xf7, 0x43, 0x2f, 0xc4, 0x7c, 0x2b, 0x16, 0x0b, 0xb1, 0x79, 0x57, 0xea, 0x44, 0x7f, 0x7d, 0x5a, + 0xd8, 0xe4, 0xdb, 0x3a, 0x3e, 0xef, 0x0a, 0x02, 0x39, 0x8b, 0x2b, 0x4e, 0xe8, 0xec, 0x39, 0x01, + 0xe6, 0xdb, 0xe3, 0x82, 0x76, 0x16, 0xf5, 0xca, 0xc6, 0x03, 0x76, 0x16, 0xdb, 0xbc, 0xb4, 0x69, + 0xd8, 0x2f, 0x31, 0x7a, 0x64, 0x46, 0xa2, 0x81, 0x17, 0xd1, 0x80, 0x19, 0x79, 0x85, 0xf7, 0xcc, + 0x33, 0x12, 0x81, 0xa2, 0x35, 0x18, 0x7b, 0x86, 0xf7, 0x18, 0xe7, 0xb8, 0x48, 0xe9, 0x5d, 0x88, + 0xe8, 0x31, 0x9e, 0xf1, 0x80, 0x9d, 0x0a, 0x42, 0x2d, 0xc9, 0x2d, 0x24, 0x36, 0xfa, 0xed, 0x1c, + 0xcc, 0x8b, 0x13, 0x8e, 0xc3, 0x57, 0x9e, 0x7f, 0xe0, 0x76, 0xf7, 0x6b, 0x5e, 0xf7, 0xb9, 0xbb, + 0x5f, 0x9c, 0xa5, 0x94, 0xaf, 0xc6, 0x98, 0x46, 0x0c, 0xaa, 0xb1, 0x5c, 0x7d, 0xfb, 0xf8, 0xa8, + 0x7c, 0x5d, 0x32, 0x10, 0x59, 0x4f, 0x36, 0xe4, 0x73, 0x77, 0x5f, 0x6b, 0x38, 0xad, 0x2d, 0xf4, + 0x9b, 0x39, 0xb8, 0xc4, 0x47, 0x67, 0xe3, 0x96, 0xe7, 0xb7, 0xa3, 0x6e, 0xcc, 0xd1, 0x6e, 0x94, + 0xe5, 0x69, 0x35, 0x01, 0x35, 0x96, 0xab, 0x37, 0x8f, 0x8f, 0xca, 0x16, 0x9f, 0xb8, 0xa6, 0x2f, + 0xaa, 0x4d, 0x9d, 0x48, 0x69, 0x88, 0xec, 0x04, 0xc2, 0xfc, 0xb7, 0x7d, 0xfc, 0x1c, 0xfb, 0xb8, + 0xdb, 0xc2, 0xc5, 0x4b, 0xda, 0x4e, 0xd0, 0x2b, 0x05, 0x57, 0x26, 0x9f, 0x92, 0x66, 0x4f, 0x16, + 0xeb, 0x3b, 0x41, 0x47, 0x41, 0x3f, 0x07, 0xc4, 0x27, 0xa0, 0xd2, 0x6f, 0xbb, 0x21, 0x1f, 0xe0, + 0x3c, 0x6d, 0x65, 0x41, 0x9f, 0x67, 0x05, 0xa0, 0xb1, 0x5c, 0xb5, 0x8e, 0x8f, 0xca, 0x4b, 0x62, + 0x8a, 0x1d, 0x52, 0x65, 0x1a, 0x98, 0x81, 0x38, 0xe1, 0xbc, 0x1b, 0x5e, 0xeb, 0xa0, 0x58, 0xd4, + 0x38, 0x2f, 0x29, 0x12, 0x2c, 0xbb, 0xe3, 0xb5, 0x0e, 0x74, 0xce, 0x4b, 0x6a, 0x51, 0x08, 0x17, + 0xf9, 0x2a, 0xd9, 0x38, 0x08, 0x7d, 0x97, 0xf2, 0x8e, 0xa0, 0x78, 0x99, 0xd2, 0x59, 0x14, 0x3c, + 0x38, 0x09, 0xd1, 0x78, 0x97, 0xf5, 0x96, 0x6f, 0x84, 0xa6, 0xaf, 0xd4, 0x69, 0xcd, 0x98, 0xc8, + 0xa3, 0xff, 0x0f, 0xe6, 0x9e, 0xb9, 0xdd, 0xb6, 0xf7, 0x2a, 0x58, 0xc1, 0xc1, 0x41, 0xe8, 0xf5, + 0xea, 0x4c, 0x28, 0x2c, 0x96, 0x68, 0xbb, 0x4b, 0x62, 0x9b, 0x9b, 0x60, 0x1a, 0x0f, 0xaa, 0x37, + 0x8e, 0x8f, 0xca, 0xd7, 0x5e, 0xb1, 0xca, 0x66, 0x9b, 0xd5, 0x36, 0xb9, 0x5c, 0xa9, 0x35, 0x6e, + 0x6e, 0x85, 0x6c, 0x01, 0xbd, 0xa2, 0xb8, 0xa0, 0x6d, 0x01, 0xbd, 0x52, 0x30, 0x83, 0x58, 0x83, + 0xfa, 0x16, 0xd0, 0x51, 0xd0, 0x23, 0x18, 0x13, 0xec, 0xa1, 0xb8, 0xa8, 0x1d, 0x5d, 0x51, 0xdc, + 0x78, 0xc0, 0x24, 0x20, 0xc1, 0x62, 0xf4, 0x93, 0x2b, 0xa0, 0xd0, 0x06, 0x8c, 0x53, 0x1e, 0x49, + 0x59, 0xd6, 0x15, 0x4a, 0x09, 0x89, 0x8d, 0x2a, 0xca, 0x1b, 0x0f, 0xaa, 0xc5, 0xe3, 0xa3, 0xf2, + 0x2c, 0xe3, 0xb2, 0x09, 0x46, 0x15, 0x11, 0x40, 0x0f, 0x60, 0xa8, 0xd2, 0xeb, 0x15, 0x97, 0x28, + 0x9d, 0xc9, 0x88, 0x4e, 0xe3, 0x41, 0xf5, 0xc2, 0xf1, 0x51, 0x79, 0xca, 0xe9, 0xe9, 0xc3, 0x22, + 0xd0, 0x68, 0x0f, 0x0a, 0xf5, 0xae, 0xf7, 0xea, 0x79, 0xc7, 0x39, 0xc0, 0x82, 0xbd, 0x95, 0xd3, + 0xd9, 0x1b, 0xfd, 0x58, 0x05, 0x02, 0xc1, 0xc8, 0xe4, 0x12, 0xf4, 0xc8, 0x67, 0xf1, 0x49, 0x7f, + 0x0f, 0xfb, 0x5d, 0x1c, 0xe2, 0x80, 0x8f, 0xf6, 0xaa, 0xf6, 0x59, 0x8c, 0x57, 0x37, 0x1e, 0xb0, + 0x96, 0x0e, 0x64, 0xb9, 0x69, 0xec, 0x09, 0xaa, 0xa8, 0x03, 0x17, 0xa2, 0x32, 0xf1, 0xa9, 0xb9, 0x46, 0x9b, 0x2a, 0x25, 0x9a, 0x8a, 0x3e, 0x37, 0x57, 0x8f, 0x8f, 0xca, 0x8b, 0x4a, 0x5b, 0xa6, 0x4f, 0x4e, 0x92, 0x30, 0x7a, 0x02, 0xe3, 0xeb, 0xdd, 0x20, 0x74, 0x3a, 0x1d, 0xec, 0x17, 0x2d, 0x6d, 0xf9, 0x64, 0x79, 0xe3, 0x3e, 0x63, 0xe2, 0xae, 0x28, 0xd0, 0x57, 0x4f, 0xc2, 0xa1, 0x36, 0xcc, 0xa8, 0xdf, 0x1c, 0x72, 0x5e, 0xae, 0x53, 0x92, 0x45, 0xc3, 0x47, 0x8c, 0x9c, 0x94, 0xfb, - 0xd5, 0xa5, 0xe3, 0xa3, 0x72, 0x49, 0xfb, 0x8a, 0xc5, 0x8f, 0x48, 0x9c, 0x24, 0xfa, 0x4b, 0x84, - 0x47, 0x57, 0x9e, 0x6e, 0xac, 0xb7, 0xb7, 0x79, 0x11, 0x15, 0x3a, 0x89, 0x3c, 0xff, 0x1d, 0x9d, - 0x47, 0x1b, 0x81, 0x1a, 0xf7, 0xd9, 0x97, 0x22, 0x70, 0x0e, 0x3b, 0x4d, 0xb7, 0x2d, 0xcf, 0x65, - 0xb3, 0xc7, 0x01, 0x62, 0x4c, 0xda, 0x48, 0x04, 0xfd, 0x04, 0xa6, 0x65, 0x0d, 0xdb, 0x71, 0x37, - 0xd2, 0x77, 0x1c, 0x1d, 0xa4, 0xd2, 0x5e, 0x72, 0xc3, 0xc5, 0x88, 0x91, 0x53, 0x45, 0x04, 0xd6, - 0x47, 0xbe, 0xd7, 0xef, 0x15, 0x6f, 0x6a, 0xcb, 0x22, 0xcb, 0x1b, 0xf7, 0xd9, 0xa9, 0x22, 0xb2, - 0x6e, 0x73, 0x9f, 0x94, 0xe8, 0xeb, 0x22, 0x01, 0xc9, 0x77, 0x7a, 0x77, 0x9d, 0x73, 0xf9, 0xef, - 0x6a, 0x87, 0x5d, 0x14, 0x8b, 0x25, 0xee, 0xbb, 0x26, 0x86, 0x2e, 0xb1, 0x91, 0x03, 0xd3, 0x5b, - 0x2f, 0x42, 0x67, 0xfd, 0x90, 0x68, 0x6d, 0x76, 0xbf, 0x83, 0x8b, 0xb7, 0x34, 0xc6, 0xa4, 0x57, - 0x8a, 0xf5, 0xf5, 0x5e, 0x84, 0x4e, 0xd3, 0xa5, 0xc5, 0x4d, 0xbf, 0x1f, 0x13, 0xb0, 0x63, 0x04, - 0x09, 0xef, 0x23, 0x25, 0x95, 0x20, 0x70, 0xf7, 0xbb, 0x87, 0xb8, 0x1b, 0x16, 0xdf, 0x4a, 0x34, - 0x11, 0x55, 0x36, 0xee, 0x33, 0xde, 0x47, 0x9b, 0x70, 0x64, 0x71, 0xb2, 0x85, 0x08, 0x05, 0xd5, - 0x61, 0x62, 0xbd, 0x1b, 0xe2, 0x7d, 0xa6, 0x30, 0x16, 0x6f, 0x6b, 0x4a, 0x89, 0x52, 0xd3, 0xb8, - 0xcf, 0x44, 0x21, 0x37, 0x2a, 0xd2, 0x75, 0x12, 0x05, 0x96, 0x68, 0x3a, 0xcf, 0x9c, 0xb0, 0x75, - 0x40, 0x14, 0xac, 0x7e, 0x50, 0xfc, 0x9e, 0x46, 0x54, 0xa9, 0x69, 0xdc, 0x67, 0x9a, 0xce, 0x2b, - 0x52, 0xd4, 0x0c, 0x68, 0x99, 0x4e, 0x55, 0x01, 0xae, 0x02, 0x8c, 0x09, 0x5d, 0xf3, 0xf1, 0xf0, - 0xd8, 0x68, 0x61, 0xcc, 0xfa, 0xa3, 0x1c, 0x8c, 0x50, 0x08, 0xf4, 0x19, 0x8c, 0x3c, 0x71, 0xbb, - 0xed, 0xa0, 0x98, 0xbb, 0x3a, 0xa4, 0xe8, 0x23, 0xb4, 0x92, 0x54, 0x54, 0xe7, 0x7f, 0x71, 0x54, - 0x3e, 0x77, 0x7c, 0x54, 0x9e, 0x79, 0x41, 0xc0, 0x14, 0x75, 0x98, 0xe1, 0xa1, 0x5d, 0xb8, 0x58, - 0xe9, 0x74, 0xbc, 0x57, 0xdb, 0x8e, 0x1f, 0xba, 0x4e, 0xa7, 0xde, 0xa7, 0x02, 0x34, 0x55, 0x8a, - 0xc7, 0xaa, 0xd7, 0x8f, 0x8f, 0xca, 0x65, 0x87, 0x54, 0x37, 0x7b, 0xac, 0xbe, 0x19, 0x30, 0x00, - 0x85, 0x90, 0x09, 0xdf, 0xfa, 0xe3, 0xf3, 0x50, 0x58, 0xf3, 0x82, 0x90, 0x68, 0xb1, 0x52, 0x1c, - 0xbf, 0x0e, 0xe7, 0x49, 0xd9, 0xfa, 0x0a, 0xd5, 0xdb, 0xc7, 0xab, 0x13, 0xc7, 0x47, 0xe5, 0xd1, - 0x03, 0x2f, 0x08, 0x9b, 0x6e, 0xdb, 0xe6, 0x55, 0xe8, 0x2d, 0x18, 0xdb, 0xf4, 0xda, 0x98, 0xaa, - 0x8a, 0x79, 0x0a, 0x36, 0x75, 0x7c, 0x54, 0x1e, 0xef, 0x7a, 0x6d, 0x4c, 0x35, 0x42, 0x5b, 0x56, - 0xa3, 0x06, 0xd7, 0xe4, 0x86, 0x28, 0x58, 0xf5, 0xf8, 0xa8, 0x3c, 0x4c, 0x54, 0xb7, 0x5f, 0x1d, - 0x95, 0xdf, 0xdb, 0x77, 0xc3, 0x83, 0xfe, 0xde, 0x9d, 0x96, 0x77, 0x78, 0x77, 0xdf, 0x77, 0x5e, - 0xba, 0xcc, 0x90, 0xe2, 0x74, 0xee, 0x46, 0xe6, 0x96, 0x9e, 0xcb, 0xad, 0x1c, 0xf5, 0xd7, 0x41, - 0x88, 0x0f, 0x09, 0x25, 0xae, 0xe8, 0x3d, 0x83, 0xd9, 0x4a, 0xbb, 0xed, 0x32, 0x8c, 0x6d, 0xdf, - 0xed, 0xb6, 0xdc, 0x9e, 0xd3, 0x21, 0x4a, 0xf7, 0xd0, 0xad, 0x71, 0x3e, 0x29, 0xb2, 0xbe, 0xd9, - 0x93, 0x00, 0xca, 0xa4, 0x18, 0x09, 0xa0, 0x07, 0x30, 0xb6, 0xb2, 0x59, 0xa7, 0x6a, 0x60, 0x71, - 0x84, 0x12, 0xa3, 0x07, 0xae, 0xdd, 0x0d, 0xe8, 0xd0, 0x54, 0x02, 0x12, 0x10, 0xbd, 0x07, 0x93, - 0xdb, 0xfd, 0xbd, 0x8e, 0xdb, 0xda, 0xd9, 0xa8, 0x3f, 0xc1, 0xaf, 0xa9, 0xfe, 0x3c, 0xc9, 0xc4, - 0xa5, 0x1e, 0x2d, 0x6f, 0x86, 0x9d, 0xa0, 0xf9, 0x02, 0xbf, 0xb6, 0x35, 0xb8, 0x08, 0xaf, 0x5e, - 0x5f, 0x23, 0x78, 0xa3, 0x09, 0xbc, 0x20, 0x38, 0x50, 0xf1, 0x18, 0x1c, 0xba, 0x0b, 0xc0, 0xb4, - 0x92, 0x4a, 0xbb, 0xcd, 0xd4, 0xeb, 0xf1, 0xea, 0xcc, 0xf1, 0x51, 0x79, 0x82, 0xeb, 0x31, 0x4e, - 0xbb, 0xed, 0xdb, 0x0a, 0x08, 0xaa, 0xc1, 0x98, 0xed, 0xb1, 0x09, 0xe6, 0x4a, 0xf5, 0x8c, 0x54, - 0xaa, 0x59, 0x31, 0x37, 0xa3, 0xf0, 0x5f, 0xea, 0x28, 0x05, 0x04, 0x2a, 0xc3, 0xe8, 0xa6, 0x57, - 0x73, 0x5a, 0x07, 0x4c, 0xb5, 0x1e, 0xab, 0x8e, 0x1c, 0x1f, 0x95, 0x73, 0x6f, 0xdb, 0xa2, 0x14, + 0xd5, 0xa5, 0xe3, 0xa3, 0x72, 0x49, 0xfb, 0x8a, 0xc5, 0x8f, 0x48, 0x9c, 0x24, 0xfa, 0x2b, 0x84, + 0x47, 0x57, 0x9e, 0x6e, 0xac, 0xb7, 0xb7, 0x79, 0x11, 0x15, 0x3a, 0x89, 0x3c, 0xff, 0x96, 0xce, + 0xa3, 0x8d, 0x40, 0x8d, 0xfb, 0xec, 0x4b, 0x11, 0x38, 0x87, 0x9d, 0xa6, 0xdb, 0x96, 0xe7, 0xb2, + 0xd9, 0xe3, 0x00, 0x31, 0x26, 0x6d, 0x24, 0x82, 0x7e, 0x02, 0xd3, 0xb2, 0x86, 0xed, 0xb8, 0x1b, + 0xe9, 0x3b, 0x8e, 0x0e, 0x52, 0x69, 0x2f, 0xb9, 0xe1, 0x62, 0xc4, 0xc8, 0xa9, 0x22, 0x02, 0xeb, + 0x23, 0xdf, 0xeb, 0xf7, 0x8a, 0x37, 0xb5, 0x65, 0x91, 0xe5, 0x8d, 0xfb, 0xec, 0x54, 0x11, 0x59, + 0xb7, 0xb9, 0x4f, 0x4a, 0xf4, 0x75, 0x91, 0x80, 0xe4, 0x3b, 0xbd, 0xbb, 0xce, 0xb9, 0xfc, 0xdb, + 0xda, 0x61, 0x17, 0xc5, 0x62, 0x89, 0xfb, 0xae, 0x89, 0xa1, 0x4b, 0x6c, 0xe4, 0xc0, 0xf4, 0xd6, + 0x41, 0xe8, 0xac, 0x1f, 0x12, 0xad, 0xcd, 0xee, 0x77, 0x70, 0xf1, 0x96, 0xc6, 0x98, 0xf4, 0x4a, + 0xb1, 0xbe, 0xde, 0x41, 0xe8, 0x34, 0x5d, 0x5a, 0xdc, 0xf4, 0xfb, 0x31, 0x01, 0x3b, 0x46, 0x90, + 0xf0, 0x3e, 0x52, 0x52, 0x09, 0x02, 0x77, 0xbf, 0x7b, 0x88, 0xbb, 0x61, 0xf1, 0x9d, 0x44, 0x13, + 0x51, 0x65, 0xe3, 0x3e, 0xe3, 0x7d, 0xb4, 0x09, 0x47, 0x16, 0x27, 0x5b, 0x88, 0x50, 0x50, 0x1d, + 0x26, 0xd6, 0xbb, 0x21, 0xde, 0x67, 0x0a, 0x63, 0xf1, 0xb6, 0xa6, 0x94, 0x28, 0x35, 0x8d, 0xfb, + 0x4c, 0x14, 0x72, 0xa3, 0x22, 0x5d, 0x27, 0x51, 0x60, 0x89, 0xa6, 0xf3, 0xcc, 0x09, 0x5b, 0x2f, + 0x88, 0x82, 0xd5, 0x0f, 0x8a, 0xdf, 0xd1, 0x88, 0x2a, 0x35, 0x8d, 0xfb, 0x4c, 0xd3, 0x79, 0x45, + 0x8a, 0x9a, 0x01, 0x2d, 0xd3, 0xa9, 0x2a, 0xc0, 0x55, 0x80, 0x31, 0xa1, 0x6b, 0x3e, 0x1e, 0x1e, + 0x1b, 0x2d, 0x8c, 0x59, 0x7f, 0x94, 0x83, 0x11, 0x0a, 0x81, 0x3e, 0x87, 0x91, 0x27, 0x6e, 0xb7, + 0x1d, 0x14, 0x73, 0x57, 0x87, 0x14, 0x7d, 0x84, 0x56, 0x92, 0x8a, 0xea, 0xfc, 0x2f, 0x8e, 0xca, + 0xe7, 0x8e, 0x8f, 0xca, 0x33, 0x07, 0x04, 0x4c, 0x51, 0x87, 0x19, 0x1e, 0xda, 0x85, 0x8b, 0x95, + 0x4e, 0xc7, 0x7b, 0xb5, 0xed, 0xf8, 0xa1, 0xeb, 0x74, 0xea, 0x7d, 0x2a, 0x40, 0x53, 0xa5, 0x78, + 0xac, 0x7a, 0xfd, 0xf8, 0xa8, 0x5c, 0x76, 0x48, 0x75, 0xb3, 0xc7, 0xea, 0x9b, 0x01, 0x03, 0x50, + 0x08, 0x99, 0xf0, 0xad, 0x3f, 0x3e, 0x0f, 0x85, 0x35, 0x2f, 0x08, 0x89, 0x16, 0x2b, 0xc5, 0xf1, + 0xeb, 0x70, 0x9e, 0x94, 0xad, 0xaf, 0x50, 0xbd, 0x7d, 0xbc, 0x3a, 0x71, 0x7c, 0x54, 0x1e, 0x7d, + 0xe1, 0x05, 0x61, 0xd3, 0x6d, 0xdb, 0xbc, 0x0a, 0xbd, 0x03, 0x63, 0x9b, 0x5e, 0x1b, 0x53, 0x55, + 0x31, 0x4f, 0xc1, 0xa6, 0x8e, 0x8f, 0xca, 0xe3, 0x5d, 0xaf, 0x8d, 0xa9, 0x46, 0x68, 0xcb, 0x6a, + 0xd4, 0xe0, 0x9a, 0xdc, 0x10, 0x05, 0xab, 0x1e, 0x1f, 0x95, 0x87, 0x89, 0xea, 0xf6, 0xab, 0xa3, + 0xf2, 0xfb, 0xfb, 0x6e, 0xf8, 0xa2, 0xbf, 0x77, 0xa7, 0xe5, 0x1d, 0xde, 0xdd, 0xf7, 0x9d, 0x97, + 0x2e, 0x33, 0xa4, 0x38, 0x9d, 0xbb, 0x91, 0xb9, 0xa5, 0xe7, 0x72, 0x2b, 0x47, 0xfd, 0x75, 0x10, + 0xe2, 0x43, 0x42, 0x89, 0x2b, 0x7a, 0xcf, 0x60, 0xb6, 0xd2, 0x6e, 0xbb, 0x0c, 0x63, 0xdb, 0x77, + 0xbb, 0x2d, 0xb7, 0xe7, 0x74, 0x88, 0xd2, 0x3d, 0x74, 0x6b, 0x9c, 0x4f, 0x8a, 0xac, 0x6f, 0xf6, + 0x24, 0x80, 0x32, 0x29, 0x46, 0x02, 0xe8, 0x01, 0x8c, 0xad, 0x6c, 0xd6, 0xa9, 0x1a, 0x58, 0x1c, + 0xa1, 0xc4, 0xe8, 0x81, 0x6b, 0x77, 0x03, 0x3a, 0x34, 0x95, 0x80, 0x04, 0x44, 0xef, 0xc3, 0xe4, + 0x76, 0x7f, 0xaf, 0xe3, 0xb6, 0x76, 0x36, 0xea, 0x4f, 0xf0, 0x6b, 0xaa, 0x3f, 0x4f, 0x32, 0x71, + 0xa9, 0x47, 0xcb, 0x9b, 0x61, 0x27, 0x68, 0x1e, 0xe0, 0xd7, 0xb6, 0x06, 0x17, 0xe1, 0xd5, 0xeb, + 0x6b, 0x04, 0x6f, 0x34, 0x81, 0x17, 0x04, 0x2f, 0x54, 0x3c, 0x06, 0x87, 0xee, 0x02, 0x30, 0xad, + 0xa4, 0xd2, 0x6e, 0x33, 0xf5, 0x7a, 0xbc, 0x3a, 0x73, 0x7c, 0x54, 0x9e, 0xe0, 0x7a, 0x8c, 0xd3, + 0x6e, 0xfb, 0xb6, 0x02, 0x82, 0x6a, 0x30, 0x66, 0x7b, 0x6c, 0x82, 0xb9, 0x52, 0x3d, 0x23, 0x95, + 0x6a, 0x56, 0xcc, 0xcd, 0x28, 0xfc, 0x97, 0x3a, 0x4a, 0x01, 0x81, 0xca, 0x30, 0xba, 0xe9, 0xd5, + 0x9c, 0xd6, 0x0b, 0xa6, 0x5a, 0x8f, 0x55, 0x47, 0x8e, 0x8f, 0xca, 0xb9, 0xef, 0xd9, 0xa2, 0x14, 0xbd, 0x84, 0x89, 0x68, 0xa1, 0x82, 0xe2, 0x04, 0x9d, 0xbe, 0x1d, 0x72, 0x8a, 0x02, 0x5a, 0xdc, 0x24, 0x4b, 0xaf, 0xcc, 0xe0, 0x37, 0xd8, 0x05, 0x6a, 0x43, 0xa8, 0x03, 0x57, 0x76, 0xc9, 0xc7, 0x6d, 0xaf, 0x83, 0xa3, 0xe2, 0x4a, 0x10, 0x60, 0x9f, 0xd0, 0x5a, 0x5f, 0xa1, 0x9a, 0xf7, 0x38, 0x17, 0xf9, 0xa3, 0x9e, 0x10, 0x3e, 0xc4, 0x40, 0x9a, 0x6e, 0x5b, 0x19, 0x71, 0x36, 0x31, 0xeb, - 0x7f, 0xe5, 0x00, 0x6d, 0xf5, 0x70, 0xb7, 0x5e, 0x5f, 0x23, 0x47, 0x47, 0x9c, 0x9c, 0xef, 0xc3, + 0x7f, 0xe7, 0x00, 0x6d, 0xf5, 0x70, 0xb7, 0x5e, 0x5f, 0x23, 0x47, 0x47, 0x9c, 0x9c, 0xef, 0xc2, 0x38, 0x5b, 0x23, 0xb2, 0x90, 0x79, 0xba, 0x90, 0xd3, 0xc7, 0x47, 0x65, 0xe0, 0x0b, 0x49, 0x16, 0x31, 0x02, 0x40, 0x37, 0x60, 0x68, 0x67, 0x67, 0x83, 0x1e, 0x8b, 0xa1, 0xea, 0xc5, 0xe3, 0xa3, 0xf2, 0x50, 0x18, 0x76, 0x7e, 0x75, 0x54, 0x1e, 0x5b, 0xe9, 0x33, 0x46, 0x65, 0x93, 0x7a, 0x74, - 0x03, 0x46, 0x85, 0x68, 0x31, 0x1c, 0x9d, 0x47, 0x2e, 0x33, 0xd8, 0xa2, 0x0e, 0x7d, 0x8f, 0x1b, + 0x03, 0x46, 0x85, 0x68, 0x31, 0x1c, 0x9d, 0x47, 0x2e, 0x33, 0xd8, 0xa2, 0x0e, 0x7d, 0x87, 0x1b, 0x5a, 0x46, 0x4c, 0x86, 0x96, 0x31, 0x72, 0xe8, 0xc8, 0xc7, 0x87, 0x1b, 0x57, 0xee, 0xc0, 0x08, 0x5b, 0x9f, 0xf3, 0x94, 0x1f, 0xc5, 0xac, 0x2b, 0xe3, 0xc7, 0x47, 0xe5, 0x11, 0xba, 0x4e, 0x36, - 0x03, 0x7b, 0x3c, 0x3c, 0x96, 0x2b, 0xe4, 0xed, 0x31, 0x82, 0x4b, 0x4e, 0x80, 0xf5, 0x3d, 0x98, + 0x03, 0x7b, 0x3c, 0x3c, 0x96, 0x2b, 0xe4, 0xed, 0x31, 0x82, 0x4b, 0x4e, 0x80, 0xf5, 0x1d, 0x98, 0x50, 0x86, 0x8f, 0x16, 0x61, 0x98, 0xfc, 0x4f, 0xf9, 0xc5, 0x24, 0x6b, 0xac, 0x45, 0xa6, 0x85, 0x96, 0x5a, 0x7f, 0x3c, 0x05, 0x05, 0x82, 0xa9, 0x31, 0x19, 0x6d, 0xaa, 0x72, 0x83, 0xa6, 0xea, 0x16, 0xc8, 0xb6, 0x39, 0xb7, 0x99, 0x3c, 0x3e, 0x2a, 0x8f, 0xf5, 0x79, 0x59, 0xd4, 0x33, 0x54, 0x87, 0xd1, 0xd5, 0xaf, 0x7b, 0xae, 0x8f, 0x03, 0x6e, 0xd9, 0x2b, 0xdd, 0x61, 0xb6, 0xdd, 0x3b, 0xc2, 0xb6, 0x7b, 0x67, 0x47, 0xd8, 0x76, 0xab, 0x57, 0x38, 0xd7, 0xbd, 0x80, 0x19, 0x4a, 0xb4, - 0x01, 0x7e, 0xf7, 0x3f, 0x97, 0x73, 0xb6, 0xa0, 0x84, 0xbe, 0x0f, 0xe7, 0x1f, 0x7a, 0xfe, 0xa1, + 0x01, 0x7e, 0xef, 0xbf, 0x94, 0x73, 0xb6, 0xa0, 0x84, 0xbe, 0x0b, 0xe7, 0x1f, 0x7a, 0xfe, 0xa1, 0x13, 0xf2, 0x15, 0xa0, 0x66, 0x9f, 0xe7, 0xb4, 0x44, 0xd9, 0x33, 0x1c, 0x06, 0x3d, 0x84, 0x69, 0xdb, 0xeb, 0x87, 0x78, 0xc7, 0x13, 0xeb, 0x36, 0x42, 0xb1, 0xe8, 0xf7, 0xd5, 0x27, 0x35, 0xcd, 0xd0, 0x4b, 0x0a, 0x7d, 0x76, 0x0c, 0x0b, 0xad, 0xc2, 0xb4, 0x66, 0x27, 0x61, 0xab, 0x35, 0xce, @@ -14967,702 +14423,682 @@ var fileDescriptor_0ffcffcda38ae159 = []byte{ 0x24, 0x4c, 0x58, 0x7e, 0x60, 0xc6, 0x69, 0x6f, 0x99, 0xcd, 0x4e, 0x7c, 0x60, 0x54, 0xf6, 0x24, 0x3f, 0x35, 0x1b, 0x30, 0xb2, 0x1b, 0x38, 0xfb, 0x8c, 0x39, 0x4d, 0x2f, 0x5f, 0xe3, 0x3d, 0x8a, 0xef, 0x3e, 0x6a, 0xe6, 0xa5, 0x80, 0xf4, 0xdc, 0xcd, 0x50, 0x1b, 0xb6, 0xfa, 0xd1, 0xa5, 0x75, - 0xe8, 0x73, 0x00, 0xde, 0x2b, 0xa2, 0xe8, 0x4c, 0x70, 0x69, 0x4c, 0x1b, 0x64, 0xa5, 0xd7, 0xab, - 0x2e, 0xf1, 0xf1, 0x5d, 0x92, 0xe3, 0xd3, 0x54, 0x1f, 0x5b, 0x21, 0x82, 0x3e, 0x83, 0x49, 0xca, + 0xe8, 0x0b, 0x00, 0xde, 0x2b, 0xa2, 0xe8, 0x4c, 0x70, 0x69, 0x4c, 0x1b, 0x64, 0xa5, 0xd7, 0xab, + 0x2e, 0xf1, 0xf1, 0x5d, 0x92, 0xe3, 0xd3, 0x54, 0x1f, 0x5b, 0x21, 0x82, 0x3e, 0x87, 0x49, 0xca, 0xbb, 0xc4, 0x8a, 0x4e, 0xd2, 0x15, 0xa5, 0x96, 0x60, 0xca, 0x8e, 0x0c, 0xeb, 0xa9, 0x21, 0xa0, - 0xff, 0x17, 0xe6, 0x38, 0xb9, 0x98, 0xd6, 0x39, 0xc5, 0xb5, 0x6c, 0xad, 0x7b, 0x3a, 0x4c, 0xf5, + 0xff, 0x1f, 0xe6, 0x38, 0xb9, 0x98, 0xd6, 0x39, 0xc5, 0xb5, 0x6c, 0xad, 0x7b, 0x3a, 0x4c, 0xf5, 0x36, 0xef, 0xa9, 0x25, 0x7b, 0x9a, 0xaa, 0x87, 0xda, 0xe6, 0x66, 0xd0, 0x3a, 0xcc, 0xec, 0x06, 0x58, 0x1b, 0xc3, 0x34, 0xfd, 0x10, 0x50, 0x05, 0xaa, 0x1f, 0xe0, 0x66, 0xda, 0x38, 0xe2, 0x78, 0xc8, 0x06, 0xb4, 0xe2, 0x7b, 0xbd, 0xd8, 0x1e, 0x9f, 0xa1, 0x33, 0x42, 0xed, 0x01, 0x6d, 0xdf, 0xeb, 0x35, 0xd3, 0x37, 0xba, 0x01, 0x1b, 0xfd, 0x14, 0x2e, 0x45, 0x66, 0xcb, 0x15, 0xd7, 0xd9, 0xef, 0x7a, 0x41, 0xe8, 0xb6, 0xd6, 0x57, 0xa8, 0x05, 0x90, 0xf3, 0xff, 0xc8, 0xec, 0xd9, 0x6c, - 0x4b, 0x10, 0x9d, 0xff, 0xa7, 0x50, 0x41, 0x5f, 0xc2, 0x14, 0x6f, 0x8b, 0x9b, 0xc9, 0x2f, 0x64, - 0x6f, 0x34, 0x09, 0xcc, 0x4d, 0xd6, 0xe2, 0x27, 0x93, 0x91, 0x74, 0x5a, 0xe8, 0x2b, 0x98, 0x78, - 0xfa, 0xb0, 0x62, 0xe3, 0xa0, 0xe7, 0x75, 0x03, 0xcc, 0xcd, 0x7e, 0x4b, 0x9c, 0xf4, 0xd3, 0x87, - 0x95, 0x4a, 0x3f, 0x3c, 0xc0, 0xdd, 0xd0, 0x6d, 0x39, 0x21, 0x16, 0x50, 0x4c, 0x42, 0x3d, 0x7c, - 0xee, 0x34, 0x7d, 0x5e, 0xa2, 0x8c, 0x42, 0x25, 0x87, 0x4a, 0x30, 0x56, 0xaf, 0xaf, 0x6d, 0x78, - 0xfb, 0x2e, 0xb3, 0x00, 0x8e, 0xdb, 0xf2, 0x37, 0xda, 0x83, 0x39, 0xe5, 0x22, 0x8b, 0x8a, 0xba, - 0x98, 0xca, 0xf3, 0xcc, 0xa0, 0xf7, 0xb6, 0xbc, 0x89, 0xbb, 0xa3, 0xde, 0x77, 0xbd, 0xbc, 0x7f, - 0xa7, 0x12, 0xfd, 0xac, 0x0b, 0x24, 0x7b, 0xd6, 0x31, 0x94, 0x5a, 0x5f, 0xc0, 0xb8, 0x3c, 0x76, - 0x68, 0x14, 0x86, 0x2a, 0x9d, 0x4e, 0xe1, 0x1c, 0xf9, 0xa3, 0x5e, 0x5f, 0x2b, 0xe4, 0xd0, 0x34, - 0x40, 0xc4, 0x6b, 0x0a, 0x79, 0x34, 0x19, 0x59, 0x3d, 0x0a, 0x43, 0x14, 0xbe, 0xd7, 0x2b, 0x0c, - 0x23, 0x14, 0x37, 0xb7, 0x14, 0x46, 0xac, 0x5d, 0x18, 0x97, 0x13, 0x89, 0x66, 0x60, 0x62, 0x77, - 0xb3, 0xbe, 0xbd, 0x5a, 0x5b, 0x7f, 0xb8, 0xbe, 0xba, 0x52, 0x38, 0x87, 0xae, 0xc0, 0xe5, 0x9d, - 0xfa, 0x5a, 0x73, 0xa5, 0xda, 0xdc, 0xd8, 0xaa, 0x55, 0x36, 0x9a, 0xdb, 0xf6, 0xd6, 0x17, 0x3f, - 0x6a, 0xee, 0xec, 0x6e, 0x6e, 0xae, 0x6e, 0x14, 0x72, 0xa8, 0x08, 0xb3, 0xa4, 0xfa, 0xc9, 0x6e, - 0x75, 0x55, 0x05, 0x28, 0xe4, 0xad, 0xff, 0x98, 0x4b, 0x70, 0x3a, 0xb4, 0x0c, 0x13, 0x5c, 0xbd, - 0xa4, 0xab, 0xcf, 0x04, 0xe4, 0xc2, 0xf1, 0x51, 0x79, 0x52, 0xa8, 0xa6, 0x74, 0x61, 0x55, 0x20, - 0xf2, 0xf1, 0xda, 0x26, 0x4b, 0xd8, 0xf2, 0x3a, 0xea, 0xc7, 0xab, 0xc7, 0xcb, 0x6c, 0x59, 0x8b, - 0x96, 0x95, 0xcf, 0x1c, 0x93, 0x96, 0xa9, 0x44, 0x26, 0x3e, 0x73, 0x2a, 0xcb, 0x93, 0x1f, 0xbc, - 0x65, 0xc5, 0x3a, 0x34, 0x1c, 0xe1, 0x18, 0x58, 0xac, 0x84, 0xb3, 0xfa, 0x29, 0x4c, 0x04, 0x7d, - 0x9c, 0x30, 0x66, 0xb1, 0x11, 0x52, 0x2e, 0x19, 0xe3, 0x15, 0x09, 0x3b, 0x55, 0x19, 0x46, 0xd8, - 0xee, 0x62, 0x83, 0xa4, 0x52, 0x44, 0x87, 0x14, 0xd8, 0xac, 0xdc, 0xfa, 0x1b, 0x43, 0x2a, 0x43, - 0x25, 0x52, 0x83, 0x32, 0x89, 0x54, 0x6a, 0xa0, 0x93, 0x47, 0x4b, 0x89, 0x80, 0xc0, 0x35, 0xec, - 0xf5, 0x15, 0x4e, 0x91, 0x0a, 0x08, 0xc2, 0x5e, 0xeb, 0xb6, 0xed, 0x08, 0x80, 0x48, 0xc3, 0x4c, - 0x5a, 0xa0, 0xd2, 0xf0, 0x50, 0x24, 0x0d, 0x73, 0x79, 0x82, 0x49, 0xc3, 0x11, 0x08, 0x59, 0x48, - 0xf5, 0xb6, 0x6b, 0x38, 0x5a, 0x48, 0xf5, 0x5e, 0x4b, 0xbf, 0xcb, 0xfa, 0x08, 0xa0, 0xf2, 0xac, - 0x4e, 0x65, 0x41, 0x7b, 0x93, 0x7f, 0xd4, 0xe9, 0xf1, 0x73, 0x5e, 0x05, 0x5c, 0x9a, 0xf4, 0x55, - 0xb1, 0x59, 0x81, 0x46, 0x55, 0x98, 0xaa, 0xfc, 0x46, 0xdf, 0xc7, 0xeb, 0x6d, 0x72, 0x82, 0x43, - 0xa6, 0x1f, 0x8c, 0xf3, 0x9b, 0x12, 0x52, 0xd1, 0x74, 0x79, 0x8d, 0x42, 0x40, 0x47, 0x41, 0x5b, - 0x70, 0xe1, 0x51, 0x4d, 0x98, 0x37, 0x2a, 0xad, 0x96, 0xd7, 0xef, 0x86, 0xfc, 0x4b, 0x7e, 0xed, - 0xf8, 0xa8, 0x7c, 0x65, 0xbf, 0x15, 0x59, 0x48, 0x1c, 0x56, 0xad, 0x7e, 0xca, 0x13, 0xb8, 0x56, - 0x07, 0xa6, 0x1f, 0xe1, 0x90, 0x6c, 0x25, 0x21, 0x96, 0x65, 0xaf, 0xc9, 0x27, 0x30, 0xf1, 0xcc, - 0x0d, 0x0f, 0xea, 0xb8, 0xe5, 0xe3, 0x50, 0x68, 0x9f, 0x4c, 0x45, 0x76, 0xc3, 0x83, 0x66, 0xc0, - 0xca, 0x55, 0x06, 0xa4, 0x80, 0x5b, 0xab, 0x30, 0xc3, 0x5b, 0x93, 0x52, 0xe0, 0xb2, 0x4e, 0x30, - 0x47, 0x09, 0xd2, 0x55, 0x50, 0x09, 0xea, 0x64, 0xfe, 0x38, 0x0f, 0x73, 0xb5, 0x03, 0xa7, 0xbb, - 0x8f, 0xb7, 0x9d, 0x20, 0x78, 0xe5, 0xf9, 0x6d, 0xa5, 0xf3, 0x54, 0x04, 0x4e, 0x74, 0x9e, 0xca, - 0xbc, 0xcb, 0x30, 0xb1, 0xd5, 0x69, 0x0b, 0x1c, 0x2e, 0x9e, 0xd3, 0xb6, 0xbc, 0x4e, 0xbb, 0xd9, - 0x13, 0xb4, 0x54, 0x20, 0x82, 0xb3, 0x89, 0x5f, 0x49, 0x9c, 0xa1, 0x08, 0xa7, 0x8b, 0x5f, 0x29, - 0x38, 0x0a, 0x10, 0x5a, 0x85, 0x0b, 0x75, 0xdc, 0xf2, 0xba, 0xed, 0x87, 0x4e, 0x2b, 0xf4, 0x7c, - 0x76, 0xe5, 0x32, 0x1c, 0x49, 0x30, 0x01, 0xad, 0x6c, 0x3e, 0xa7, 0xb5, 0xec, 0xa6, 0xc5, 0x4e, - 0x62, 0xa0, 0x2d, 0x7a, 0x61, 0x43, 0x6f, 0xec, 0xb9, 0x4c, 0x7f, 0xe3, 0x8e, 0xbc, 0xc2, 0xaf, - 0xf9, 0x98, 0x6e, 0x0a, 0xa7, 0x23, 0xb5, 0x12, 0xf9, 0x41, 0xa0, 0xcc, 0x45, 0x40, 0xda, 0x92, - 0x88, 0xb5, 0x0b, 0x53, 0xdb, 0x9d, 0xfe, 0xbe, 0xdb, 0x25, 0x6c, 0xa0, 0x8e, 0x7f, 0x8e, 0x56, - 0x00, 0xa2, 0x02, 0x6e, 0x99, 0x10, 0x36, 0xb1, 0xa8, 0xa2, 0xf1, 0x80, 0x1f, 0x24, 0x5a, 0x42, - 0x45, 0x37, 0x5b, 0xc1, 0xb3, 0xfe, 0xea, 0x10, 0x20, 0xbe, 0x00, 0x94, 0xd7, 0xd7, 0x71, 0x48, - 0xd8, 0xf0, 0x25, 0xc8, 0x4b, 0x03, 0xc2, 0xf9, 0xe3, 0xa3, 0x72, 0xde, 0x6d, 0xdb, 0xf9, 0xf5, - 0x15, 0xf4, 0x0e, 0x8c, 0x50, 0x30, 0x3a, 0xff, 0xd3, 0xb2, 0x3d, 0x95, 0x02, 0xe3, 0x1c, 0xf4, - 0x1b, 0x64, 0x33, 0x60, 0xf4, 0x2e, 0x8c, 0xaf, 0xe0, 0x0e, 0xde, 0x77, 0x42, 0x4f, 0x9c, 0x6e, - 0xa6, 0x92, 0x8b, 0x42, 0x65, 0xcf, 0x45, 0x90, 0x44, 0x6e, 0xb7, 0xb1, 0x13, 0x78, 0x5d, 0x55, - 0x6e, 0xf7, 0x69, 0x89, 0x2a, 0xb7, 0x33, 0x18, 0xf4, 0x07, 0x39, 0x98, 0xa8, 0x74, 0xbb, 0x5c, - 0xd5, 0x0d, 0xf8, 0xac, 0xcf, 0xdd, 0x91, 0x9e, 0x10, 0x1b, 0xce, 0x1e, 0xee, 0x34, 0x9c, 0x4e, - 0x1f, 0x07, 0xd5, 0xaf, 0x88, 0x28, 0xf5, 0x9f, 0x8e, 0xca, 0x1f, 0x9f, 0x42, 0x79, 0x8d, 0x7c, - 0x2a, 0x76, 0x7c, 0xc7, 0x0d, 0x03, 0x7a, 0x9b, 0x19, 0x35, 0xa8, 0x9e, 0x1b, 0xa5, 0x1f, 0xe8, - 0x2d, 0x55, 0x59, 0xe3, 0xbc, 0x38, 0xa6, 0x45, 0x73, 0x3d, 0xcd, 0xba, 0x2e, 0xbf, 0x84, 0xeb, - 0x2b, 0x69, 0x4b, 0x60, 0xd5, 0x60, 0xf1, 0x11, 0x0e, 0x6d, 0x1c, 0xe0, 0x50, 0x6c, 0x5a, 0xba, - 0xe5, 0x22, 0xfb, 0xcf, 0x28, 0xfd, 0x2d, 0x91, 0xe9, 0x7a, 0xb0, 0x8d, 0x2a, 0x6a, 0xac, 0xbf, - 0x9c, 0x83, 0x72, 0xcd, 0xc7, 0x4c, 0x12, 0x49, 0x21, 0x94, 0xcd, 0x4c, 0x16, 0xb9, 0x73, 0x48, - 0x3e, 0xaa, 0x25, 0xb3, 0xc4, 0x1d, 0x40, 0x4e, 0xa6, 0x1c, 0x5b, 0xcf, 0x61, 0xce, 0xc6, 0x5d, - 0xfc, 0x8a, 0xa8, 0xea, 0x9a, 0x7e, 0x59, 0x86, 0x11, 0x76, 0xf2, 0x12, 0x43, 0x60, 0xe5, 0xa7, - 0xd3, 0xd5, 0xad, 0x7f, 0x98, 0x87, 0x02, 0x1b, 0x6e, 0xd5, 0x0b, 0x4f, 0x36, 0x3e, 0x3e, 0x82, - 0xfc, 0x00, 0xf5, 0xfe, 0x66, 0x34, 0xdb, 0x43, 0x91, 0x70, 0x40, 0xbb, 0x4a, 0xbe, 0x71, 0xa2, - 0x92, 0x0c, 0x88, 0xed, 0x02, 0x66, 0xde, 0x4a, 0xe8, 0xe8, 0xe8, 0x77, 0x72, 0x70, 0x9e, 0xed, - 0xab, 0xec, 0x9d, 0xfb, 0xec, 0x6c, 0x76, 0x6e, 0x21, 0xa4, 0x7f, 0xa9, 0xe7, 0x88, 0xd5, 0x59, - 0xff, 0x38, 0x0f, 0x17, 0x94, 0xb9, 0xe2, 0xe2, 0xe7, 0x5b, 0x4c, 0xb6, 0x51, 0x26, 0x8c, 0x1a, - 0x0c, 0xa9, 0x45, 0x3c, 0xd2, 0xe1, 0xe9, 0xcc, 0xbd, 0x05, 0x63, 0x64, 0x48, 0x71, 0xdb, 0x22, - 0xfd, 0xc2, 0x32, 0x50, 0x51, 0x7d, 0xe2, 0xd9, 0xbb, 0x0b, 0x63, 0xf4, 0x4f, 0xb2, 0x22, 0xc3, - 0xe9, 0x2b, 0x22, 0x81, 0x90, 0x0b, 0xf0, 0xd8, 0x73, 0xbb, 0x4f, 0x71, 0x78, 0xe0, 0xb5, 0xf9, - 0xb7, 0x7e, 0x9d, 0xf0, 0xc1, 0xff, 0xcb, 0x73, 0xbb, 0xcd, 0x43, 0x5a, 0x7c, 0x5a, 0xdb, 0x55, - 0x44, 0xd0, 0x56, 0x88, 0x5b, 0xf7, 0xa0, 0x40, 0x58, 0xd6, 0xc9, 0xb7, 0x96, 0x35, 0x0b, 0xe8, - 0x11, 0x0e, 0xab, 0x9e, 0xf6, 0x31, 0xb5, 0xa6, 0x60, 0x62, 0xdb, 0xed, 0xee, 0x8b, 0x9f, 0xff, - 0x64, 0x08, 0x26, 0xd9, 0x6f, 0xbe, 0x02, 0x31, 0x91, 0x27, 0x77, 0x12, 0x91, 0xe7, 0x03, 0x98, - 0xe2, 0x57, 0x64, 0xd8, 0xa7, 0x57, 0x27, 0x6c, 0x3d, 0xa8, 0x32, 0xc3, 0xae, 0xc8, 0x9a, 0x2f, - 0x59, 0x8d, 0xad, 0x03, 0xa2, 0x0d, 0x98, 0x66, 0x05, 0x0f, 0xb1, 0x13, 0xf6, 0x23, 0x7b, 0xcc, - 0x0c, 0xd7, 0x67, 0x44, 0x31, 0xe3, 0x67, 0x9c, 0xd6, 0x73, 0x5e, 0x68, 0xc7, 0x70, 0xd1, 0x67, - 0x30, 0xb3, 0xed, 0x7b, 0x5f, 0xbf, 0x56, 0x84, 0x3c, 0xc6, 0xd2, 0xe7, 0x8e, 0x8f, 0xca, 0x17, - 0x7a, 0xa4, 0xaa, 0xa9, 0x8a, 0x7a, 0x71, 0x68, 0xb2, 0xa7, 0xd6, 0x83, 0xaa, 0xe7, 0xbb, 0xdd, - 0x7d, 0xba, 0x9a, 0x63, 0x6c, 0x4f, 0xb9, 0x41, 0x73, 0x8f, 0x16, 0xda, 0xb2, 0x3a, 0x66, 0x59, - 0x1d, 0x1d, 0x6c, 0x59, 0xbd, 0x07, 0xb0, 0xe1, 0x39, 0xed, 0x4a, 0xa7, 0x53, 0xab, 0x04, 0xd4, - 0x18, 0xc2, 0x85, 0x98, 0x8e, 0xe7, 0xb4, 0x9b, 0x4e, 0xa7, 0xd3, 0x6c, 0x39, 0x81, 0xad, 0xc0, - 0x3c, 0x1e, 0x1e, 0x3b, 0x5f, 0x18, 0xb5, 0x67, 0x36, 0xdc, 0x16, 0xee, 0x06, 0xf8, 0x99, 0xe3, - 0x77, 0xdd, 0xee, 0x7e, 0x60, 0xfd, 0xad, 0x11, 0x18, 0x93, 0x43, 0xbe, 0xa3, 0x2a, 0x44, 0x5c, - 0x34, 0xa2, 0x1c, 0x2a, 0x32, 0xd8, 0xd8, 0x0a, 0x04, 0xba, 0xcc, 0xee, 0x63, 0x99, 0x50, 0x36, - 0x4a, 0x76, 0xb7, 0xd3, 0xeb, 0xb1, 0x5b, 0xd7, 0x4b, 0x90, 0x5f, 0xa9, 0xd2, 0xf9, 0x1f, 0x63, - 0x5f, 0x82, 0xf6, 0x9e, 0x9d, 0x5f, 0xa9, 0x92, 0x5d, 0xb6, 0xb5, 0xbe, 0x52, 0xa3, 0x53, 0x39, - 0xc6, 0x76, 0x99, 0xe7, 0xb6, 0x5b, 0x36, 0x2d, 0x25, 0xb5, 0xf5, 0xca, 0xd3, 0x0d, 0x3e, 0x5d, - 0xb4, 0x36, 0x70, 0x0e, 0x3b, 0x36, 0x2d, 0x25, 0xaa, 0x02, 0xd3, 0xbd, 0x6b, 0x5e, 0x37, 0xf4, - 0xbd, 0x4e, 0x40, 0x25, 0xda, 0x31, 0xb6, 0x9c, 0x5c, 0x69, 0x6f, 0xf1, 0x2a, 0x3b, 0x06, 0x8a, - 0x9e, 0xc1, 0x7c, 0xa5, 0xfd, 0xd2, 0xe9, 0xb6, 0x70, 0x9b, 0xd5, 0x3c, 0xf3, 0xfc, 0x17, 0xcf, - 0x3b, 0xde, 0xab, 0x80, 0xce, 0xf7, 0x18, 0xb7, 0x71, 0x71, 0x10, 0x61, 0x03, 0x78, 0x25, 0x80, - 0xec, 0x34, 0x6c, 0xc2, 0x25, 0x6b, 0x1d, 0xaf, 0xdf, 0xe6, 0xab, 0x40, 0xb9, 0x64, 0x8b, 0x14, - 0xd8, 0xac, 0x9c, 0xcc, 0xd2, 0x5a, 0xfd, 0x29, 0xb5, 0x28, 0xf1, 0x59, 0x3a, 0x08, 0x0e, 0x6d, - 0x52, 0x86, 0x6e, 0xc0, 0xa8, 0xd0, 0x7a, 0x98, 0x6d, 0x9b, 0x1a, 0x5a, 0x85, 0xb6, 0x23, 0xea, - 0xc8, 0x91, 0xb0, 0x71, 0xcb, 0x7b, 0x89, 0xfd, 0xd7, 0x35, 0xaf, 0x8d, 0x85, 0xfd, 0x83, 0xeb, - 0xf7, 0xac, 0xa2, 0xd9, 0x22, 0x35, 0xb6, 0x0e, 0x48, 0x1a, 0x60, 0x82, 0x53, 0x40, 0x9d, 0x9c, - 0x78, 0x03, 0x4c, 0xb0, 0x0a, 0x6c, 0x51, 0x87, 0x56, 0xe0, 0x42, 0xa5, 0x1f, 0x7a, 0x87, 0x4e, - 0xe8, 0xb6, 0x76, 0x7b, 0xfb, 0xbe, 0x43, 0x1a, 0x29, 0x50, 0x04, 0xaa, 0xda, 0x39, 0xa2, 0xb2, - 0xd9, 0xe7, 0xb5, 0x76, 0x12, 0x01, 0xbd, 0x07, 0x93, 0xeb, 0x01, 0xb3, 0x71, 0x39, 0x01, 0x6e, - 0x53, 0x43, 0x05, 0xef, 0xa5, 0x1b, 0x34, 0xa9, 0xc5, 0xab, 0x49, 0x94, 0xc1, 0xb6, 0xad, 0xc1, - 0x3d, 0x1e, 0x1e, 0x9b, 0x28, 0x4c, 0x3e, 0x1e, 0x1e, 0x9b, 0x2c, 0x4c, 0x3d, 0x1e, 0x1e, 0x9b, - 0x2a, 0x4c, 0x5b, 0xf7, 0xe1, 0x02, 0xe3, 0x4f, 0x27, 0x56, 0x14, 0xac, 0x6d, 0x80, 0x3a, 0x3e, - 0x74, 0x7a, 0x07, 0x1e, 0xd9, 0xc9, 0x55, 0xf5, 0x17, 0x17, 0x34, 0x91, 0x74, 0xce, 0xe1, 0x15, - 0x8d, 0x07, 0x42, 0xbf, 0x13, 0x90, 0xb6, 0x82, 0x65, 0xfd, 0x59, 0x1e, 0x10, 0x75, 0x52, 0xa9, - 0x87, 0x3e, 0x76, 0x0e, 0x45, 0x37, 0x3e, 0x84, 0x49, 0xf6, 0xa9, 0x61, 0xc5, 0xb4, 0x3b, 0x44, - 0x8a, 0x65, 0x3c, 0x46, 0xad, 0x5a, 0x3b, 0x67, 0x6b, 0xa0, 0x04, 0xd5, 0xc6, 0x41, 0xff, 0x50, - 0xa0, 0xe6, 0x35, 0x54, 0xb5, 0x8a, 0xa0, 0xaa, 0xbf, 0xd1, 0x67, 0x30, 0x5d, 0xf3, 0x0e, 0x7b, - 0x64, 0x4e, 0x38, 0xf2, 0x10, 0xff, 0xe2, 0xf2, 0x76, 0xb5, 0xca, 0xb5, 0x73, 0x76, 0x0c, 0x1c, - 0x6d, 0xc2, 0xc5, 0x87, 0x9d, 0x7e, 0x70, 0x50, 0xe9, 0xb6, 0x6b, 0x1d, 0x2f, 0x10, 0x54, 0x86, - 0xb9, 0xc5, 0x9a, 0x73, 0xc8, 0x24, 0xc4, 0xda, 0x39, 0xdb, 0x84, 0x88, 0x6e, 0x70, 0x8f, 0x5b, - 0x69, 0xfd, 0xe7, 0x0e, 0xb9, 0x5b, 0x5d, 0xbc, 0xf5, 0x7c, 0xed, 0x9c, 0xcd, 0x6a, 0xab, 0xe3, - 0x30, 0x2a, 0xbe, 0x0e, 0x77, 0xc9, 0x26, 0x93, 0xd3, 0xc9, 0xae, 0x30, 0x51, 0x09, 0xc6, 0x76, - 0x7b, 0x84, 0x69, 0x09, 0xd1, 0xcf, 0x96, 0xbf, 0xad, 0xef, 0xeb, 0x33, 0x8d, 0x16, 0x55, 0xfd, - 0x9c, 0x01, 0x47, 0x05, 0xd6, 0x9a, 0x3e, 0xb9, 0xd9, 0xd0, 0x5a, 0xbb, 0xf9, 0x58, 0xbb, 0x85, - 0xf8, 0x5c, 0x5b, 0x73, 0xc6, 0xc9, 0xb3, 0xbe, 0x80, 0xa5, 0xdd, 0x1e, 0x51, 0x86, 0x2a, 0xbd, - 0x5e, 0xc7, 0x6d, 0x31, 0xeb, 0x13, 0xfd, 0x8a, 0x88, 0xcd, 0xf2, 0x9e, 0x74, 0xe7, 0xcc, 0xa5, - 0x3a, 0xbf, 0xc0, 0xf1, 0x51, 0xf9, 0x3c, 0xfb, 0x1a, 0x09, 0x2f, 0x4e, 0xeb, 0x77, 0x73, 0xb0, - 0xc4, 0x4e, 0x40, 0x2a, 0xe9, 0xef, 0xa9, 0x4e, 0xa7, 0x8a, 0x78, 0x23, 0x5d, 0x4c, 0x55, 0xb7, - 0xd2, 0xe8, 0x82, 0x35, 0x9f, 0x7e, 0xc1, 0x2a, 0x0e, 0xd8, 0x90, 0xf1, 0x80, 0x7d, 0x0e, 0x16, - 0xef, 0x51, 0xa7, 0x93, 0xe8, 0x54, 0xf0, 0x26, 0xbd, 0xb2, 0xfe, 0x6b, 0x1e, 0xe6, 0x1f, 0xe1, - 0x2e, 0xf6, 0x1d, 0x3a, 0x4e, 0x4d, 0x92, 0x57, 0xef, 0x5f, 0x72, 0x99, 0xf7, 0x2f, 0x52, 0x4c, - 0xcd, 0xa7, 0x88, 0xa9, 0x97, 0x61, 0x68, 0xd7, 0x5e, 0xe7, 0xc3, 0xa2, 0x0c, 0xb8, 0xef, 0xbb, - 0x36, 0x29, 0x43, 0xeb, 0xd1, 0xdd, 0xcd, 0xf0, 0xc0, 0xbb, 0x9b, 0x8b, 0xdc, 0x96, 0x3d, 0xca, - 0xef, 0x6e, 0xf4, 0x1b, 0x9b, 0x4d, 0x45, 0x16, 0x26, 0xec, 0xe6, 0x36, 0x3f, 0x53, 0x29, 0x03, - 0xe4, 0x62, 0xed, 0x6a, 0x37, 0xf4, 0x5f, 0xb3, 0x2d, 0xc0, 0xa4, 0x5b, 0x21, 0xd3, 0x96, 0x3e, - 0x87, 0x09, 0x05, 0x04, 0x15, 0x60, 0xe8, 0x05, 0xbf, 0xb7, 0x1a, 0xb7, 0xc9, 0x9f, 0xe8, 0xfb, - 0x30, 0xf2, 0x92, 0xc8, 0xd7, 0x9c, 0x8d, 0x5c, 0x8a, 0x64, 0xef, 0x7a, 0x48, 0xa4, 0x0a, 0x26, - 0x7c, 0xdb, 0x0c, 0xe8, 0xa3, 0xfc, 0x07, 0x39, 0xeb, 0x63, 0x28, 0x26, 0x7b, 0xc3, 0x45, 0xb5, - 0x41, 0xda, 0x8b, 0xb5, 0x02, 0xb3, 0x8f, 0x70, 0x18, 0x79, 0xbc, 0x2a, 0xd7, 0x6a, 0xb1, 0x73, - 0x96, 0x61, 0x35, 0xb3, 0xea, 0x30, 0x17, 0xa3, 0xc2, 0xdb, 0xff, 0x08, 0x46, 0x85, 0xaf, 0x4c, - 0x2e, 0xdd, 0x57, 0x86, 0xee, 0x5b, 0x4e, 0xd9, 0x16, 0x08, 0xd6, 0x33, 0xb8, 0xa4, 0x11, 0x0d, - 0x24, 0xd5, 0x1f, 0xc0, 0x98, 0x28, 0x8b, 0x99, 0x1b, 0x34, 0xb2, 0x74, 0x6b, 0x05, 0x02, 0x59, - 0xa2, 0x58, 0x07, 0x70, 0x69, 0xc3, 0x0d, 0x74, 0xca, 0x6c, 0xd4, 0x0b, 0x30, 0xde, 0x23, 0xdf, - 0xb3, 0xc0, 0xfd, 0x0d, 0xb6, 0x3f, 0x47, 0xec, 0x31, 0x52, 0x50, 0x77, 0x7f, 0x03, 0xa3, 0x2b, - 0x00, 0xb4, 0x92, 0xce, 0x1f, 0x67, 0x2f, 0x14, 0x9c, 0xe9, 0x81, 0x08, 0xe8, 0xc5, 0x28, 0xdb, - 0x90, 0x36, 0xfd, 0xdb, 0xf2, 0x61, 0x3e, 0xd1, 0x12, 0x1f, 0xc3, 0x5d, 0x90, 0x5d, 0xcb, 0x18, - 0x83, 0x2d, 0x81, 0xd0, 0x4d, 0x98, 0xe9, 0xe2, 0xaf, 0xc3, 0x66, 0xa2, 0x0f, 0x53, 0xa4, 0x78, - 0x5b, 0xf4, 0xc3, 0xfa, 0x09, 0xd5, 0xca, 0xe3, 0xce, 0x6c, 0x67, 0x36, 0x79, 0x1d, 0x28, 0x91, - 0x21, 0xe9, 0xbe, 0x4b, 0xbf, 0xb6, 0x09, 0x7c, 0x09, 0x0b, 0xc6, 0xd6, 0x7e, 0xdd, 0x93, 0xf8, - 0x17, 0x79, 0x98, 0x67, 0x5f, 0xa9, 0xe4, 0xd1, 0x38, 0x39, 0x0f, 0xfb, 0x56, 0x8c, 0xc9, 0xf7, - 0x0c, 0xc6, 0x64, 0x8a, 0xa2, 0x1a, 0x93, 0x35, 0x13, 0xf2, 0x07, 0x66, 0x13, 0x32, 0x15, 0xe9, - 0x74, 0x13, 0x72, 0xdc, 0x70, 0xbc, 0x9a, 0x6e, 0x38, 0xa6, 0x66, 0x34, 0x83, 0xe1, 0xd8, 0x60, - 0x2e, 0x7e, 0x3c, 0x3c, 0x96, 0x2f, 0x0c, 0x59, 0x0d, 0x28, 0x26, 0xa7, 0xf8, 0x0c, 0xf8, 0xc6, - 0x9f, 0xe4, 0xe0, 0x0a, 0x97, 0x30, 0x62, 0x87, 0xe0, 0xf4, 0x2b, 0xf8, 0x2e, 0x4c, 0x72, 0xdc, - 0x9d, 0x68, 0xb3, 0x30, 0xb7, 0x54, 0xc1, 0x09, 0x19, 0x3b, 0xd5, 0xc0, 0xd0, 0xbb, 0x8a, 0x95, - 0x80, 0x59, 0x9e, 0x2e, 0x93, 0xcf, 0x25, 0x33, 0x27, 0xa4, 0xda, 0x0a, 0xac, 0xaf, 0x60, 0x29, - 0xad, 0xe3, 0x67, 0x30, 0x2f, 0x7f, 0x9a, 0x83, 0x05, 0x4e, 0x5e, 0x3b, 0x4e, 0x6f, 0xc4, 0xf2, - 0x4f, 0xe1, 0x49, 0xf1, 0x18, 0x26, 0x48, 0x83, 0xa2, 0xdf, 0xfa, 0x3b, 0x29, 0xa5, 0x66, 0xc5, - 0x09, 0x1d, 0x7e, 0x05, 0xe6, 0x1c, 0x76, 0x84, 0xcb, 0xa4, 0xad, 0x22, 0x5b, 0x3f, 0x86, 0x45, - 0xf3, 0x10, 0xce, 0x60, 0x7e, 0x1e, 0x43, 0xc9, 0xc0, 0x38, 0xdf, 0xec, 0x83, 0xf8, 0x23, 0x58, - 0x30, 0xd2, 0x3a, 0x83, 0x6e, 0xae, 0x91, 0xcf, 0x7d, 0x78, 0x06, 0x4b, 0x68, 0x3d, 0x83, 0xcb, - 0x06, 0x4a, 0x67, 0xd0, 0xc5, 0x47, 0x30, 0x2f, 0xc5, 0xdc, 0x6f, 0xd4, 0xc3, 0xa7, 0x70, 0x85, - 0x11, 0x3a, 0x9b, 0x55, 0x79, 0x02, 0x0b, 0x9c, 0xdc, 0x19, 0xcc, 0xde, 0x1a, 0x2c, 0x46, 0xda, - 0xac, 0x41, 0x96, 0x38, 0x31, 0x93, 0xb1, 0x36, 0xe0, 0x6a, 0x44, 0x29, 0xe5, 0xc3, 0x7a, 0x72, - 0x6a, 0x4c, 0x16, 0x8b, 0x56, 0xe9, 0x0c, 0x65, 0xb1, 0x08, 0xf0, 0xcc, 0xc4, 0x89, 0x75, 0xb8, - 0xc8, 0x08, 0xeb, 0x72, 0xeb, 0xb2, 0x2a, 0xb7, 0x1a, 0x9f, 0x18, 0x25, 0x45, 0xd9, 0xa7, 0x54, - 0x94, 0x15, 0x20, 0x51, 0x0f, 0xdf, 0x85, 0xf3, 0xfc, 0x15, 0x25, 0xeb, 0x9f, 0x81, 0x18, 0x93, - 0xd4, 0x19, 0x1a, 0x07, 0xb6, 0x7e, 0x0a, 0x57, 0x98, 0x1a, 0x18, 0xf7, 0xd6, 0x17, 0x4b, 0xf2, - 0x83, 0x98, 0x16, 0x98, 0xf1, 0x28, 0xc0, 0xa4, 0x0c, 0xee, 0x89, 0xbd, 0x9d, 0x46, 0xff, 0x44, - 0xee, 0xb3, 0x42, 0xbb, 0xcb, 0x1b, 0xb5, 0xbb, 0xeb, 0x70, 0x4d, 0x6a, 0x77, 0xf1, 0x66, 0xa4, - 0xb9, 0xf7, 0xc7, 0xb0, 0xc0, 0x06, 0xaa, 0xbf, 0x1d, 0x13, 0xdd, 0xf8, 0x38, 0x36, 0xcc, 0xd4, - 0xc7, 0x69, 0xa6, 0x41, 0xfe, 0xf5, 0x9c, 0x38, 0x72, 0x66, 0xe2, 0xdf, 0xb6, 0xba, 0xbb, 0x09, - 0x65, 0x39, 0x21, 0x7a, 0x8f, 0xde, 0x4c, 0xd7, 0x7d, 0x0a, 0x73, 0x89, 0xf7, 0x0d, 0x44, 0x60, - 0x45, 0xef, 0x90, 0x63, 0x41, 0x0b, 0xc4, 0xb6, 0x4b, 0x7d, 0x0f, 0x61, 0x4b, 0x48, 0xab, 0x09, - 0x8b, 0xc9, 0xa5, 0x70, 0x5b, 0xc2, 0xd5, 0x09, 0x7d, 0x46, 0x8e, 0x30, 0x7b, 0x64, 0x91, 0x1b, - 0xf0, 0xc8, 0x82, 0x9f, 0x63, 0x86, 0x2e, 0xb0, 0x2c, 0x4b, 0xb0, 0x9a, 0xd8, 0xf8, 0x49, 0xeb, - 0x62, 0x3f, 0xb8, 0x80, 0x44, 0x55, 0xad, 0x6e, 0x8b, 0xa6, 0x2f, 0xc3, 0x50, 0xad, 0x6e, 0x73, - 0x0f, 0x4b, 0xaa, 0x6e, 0xb7, 0x02, 0xdf, 0x26, 0x65, 0x71, 0xa9, 0x35, 0x7f, 0x02, 0xa9, 0xf5, - 0xf1, 0xf0, 0xd8, 0x50, 0x61, 0xd8, 0xfa, 0x12, 0x2e, 0x6a, 0x4d, 0xf1, 0x13, 0x9b, 0xe9, 0x06, - 0x8a, 0x6e, 0xc2, 0x68, 0xad, 0x42, 0xef, 0xe8, 0xa8, 0x6d, 0x60, 0x92, 0xf1, 0x96, 0x96, 0xd3, - 0xa4, 0x4f, 0xe2, 0x6d, 0x51, 0x69, 0xfd, 0x83, 0x61, 0x85, 0xba, 0xe2, 0x5c, 0x9b, 0x31, 0x92, - 0xfb, 0x00, 0x6c, 0x37, 0x28, 0x03, 0x21, 0xc2, 0xde, 0x04, 0xbf, 0x56, 0x60, 0xec, 0xd7, 0x56, - 0x80, 0x4e, 0xea, 0x7c, 0xcb, 0xfd, 0x7d, 0x18, 0x92, 0xb8, 0x7b, 0x93, 0xfe, 0x3e, 0x9c, 0x74, - 0x60, 0xab, 0x40, 0xe8, 0xa7, 0x71, 0x1f, 0xb1, 0x11, 0x7a, 0xd5, 0xfd, 0x1d, 0x6e, 0x82, 0x30, - 0x8c, 0xed, 0x74, 0x6e, 0x62, 0xaf, 0x60, 0x8e, 0xe0, 0xba, 0xcf, 0xa9, 0x23, 0xd8, 0xea, 0xd7, - 0x21, 0xee, 0x32, 0x3e, 0x7e, 0x9e, 0xb6, 0x73, 0x23, 0xa3, 0x9d, 0x08, 0x98, 0xbf, 0xe1, 0x8e, - 0xe8, 0x34, 0xb1, 0xac, 0xb3, 0xcd, 0xf4, 0xe9, 0x86, 0xb1, 0x37, 0x56, 0xbb, 0xed, 0x9e, 0xe7, - 0x4a, 0x05, 0x82, 0x6d, 0x18, 0xbf, 0xd3, 0xc4, 0xbc, 0xdc, 0x56, 0x81, 0xac, 0x9b, 0x99, 0xbe, - 0x59, 0x63, 0x30, 0xbc, 0x53, 0xdb, 0xd9, 0x28, 0xe4, 0xac, 0xbb, 0x00, 0x4a, 0x4b, 0x00, 0xe7, - 0x37, 0xb7, 0xec, 0xa7, 0x95, 0x8d, 0xc2, 0x39, 0x34, 0x07, 0x17, 0x9e, 0xad, 0x6f, 0xae, 0x6c, - 0x3d, 0xab, 0x37, 0xeb, 0x4f, 0x2b, 0xf6, 0x4e, 0xad, 0x62, 0xaf, 0x14, 0x72, 0xd6, 0x57, 0x30, - 0xab, 0x8f, 0xf0, 0x4c, 0x37, 0x61, 0x08, 0x17, 0xa5, 0xec, 0xf2, 0xf8, 0xd9, 0x8e, 0xe2, 0xaf, - 0xc2, 0x95, 0xa1, 0xf8, 0x15, 0x1a, 0x57, 0x9b, 0xf8, 0x91, 0x51, 0x80, 0xb4, 0x8b, 0xcf, 0x7c, - 0xe6, 0xc5, 0xa7, 0xf5, 0x3e, 0xcc, 0xea, 0xad, 0x9e, 0xd4, 0x1c, 0xf4, 0x1d, 0xea, 0xc8, 0xa3, - 0x78, 0x57, 0x12, 0xad, 0x3c, 0xea, 0x22, 0xe7, 0xa2, 0xef, 0x43, 0x81, 0x43, 0x45, 0x5f, 0xd9, - 0xeb, 0xc2, 0x5e, 0x97, 0x33, 0x78, 0x82, 0x0b, 0xb7, 0x82, 0xef, 0x8a, 0x1b, 0x80, 0x41, 0x2d, - 0xfc, 0x59, 0x0e, 0x8a, 0x31, 0x47, 0xc5, 0xda, 0x81, 0xd3, 0xe9, 0xe0, 0xee, 0x3e, 0x46, 0xb7, - 0x60, 0x78, 0x67, 0x6b, 0x67, 0x9b, 0x5b, 0xc8, 0x66, 0xf9, 0x36, 0x25, 0x45, 0x12, 0xc6, 0xa6, - 0x10, 0xe8, 0x09, 0x5c, 0x10, 0x6e, 0x2b, 0xb2, 0x8a, 0x2b, 0x20, 0x57, 0xb2, 0x9d, 0x60, 0x92, - 0x78, 0xe8, 0x1d, 0xee, 0x55, 0xf9, 0xf3, 0xbe, 0xeb, 0xe3, 0x36, 0x55, 0xce, 0xa7, 0x97, 0x51, - 0xe4, 0x55, 0x29, 0x6a, 0x6c, 0x15, 0x8c, 0x79, 0xbc, 0x5b, 0x7f, 0x90, 0x83, 0xf9, 0x14, 0xc7, - 0x4b, 0xf4, 0x96, 0x36, 0x9c, 0x8b, 0xca, 0x70, 0x04, 0xc8, 0xda, 0x39, 0x3e, 0x9e, 0x9a, 0xe2, - 0xcb, 0x33, 0x74, 0x0a, 0x5f, 0x1e, 0xfe, 0xee, 0x9a, 0xc2, 0xf1, 0xf7, 0x45, 0xb4, 0xdc, 0x9a, - 0x81, 0x29, 0x6d, 0xde, 0x2c, 0x0b, 0x26, 0xd5, 0x96, 0xc9, 0xe2, 0xd4, 0xbc, 0xb6, 0x5c, 0x1c, - 0xf2, 0xb7, 0xf5, 0x7b, 0x39, 0x98, 0xa5, 0x43, 0xdc, 0x77, 0xc9, 0x69, 0x8c, 0x66, 0x68, 0x59, - 0x1b, 0xc9, 0xa2, 0x36, 0x92, 0x18, 0xac, 0x1c, 0xd2, 0x47, 0x89, 0x21, 0x2d, 0x9a, 0x86, 0x44, - 0xb5, 0x3e, 0xd7, 0xeb, 0x6a, 0x23, 0x51, 0xae, 0x21, 0xfe, 0x4e, 0x0e, 0x2e, 0x2a, 0x7d, 0x92, - 0xfd, 0xbf, 0xaf, 0x75, 0x69, 0xc1, 0xd0, 0xa5, 0xc4, 0x24, 0x57, 0x13, 0x3d, 0xfa, 0x4e, 0x56, - 0x8f, 0x06, 0xce, 0xf1, 0x9f, 0xe7, 0x60, 0xce, 0x38, 0x07, 0xe8, 0x12, 0x11, 0xad, 0x5a, 0x3e, - 0x0e, 0xf9, 0xf4, 0xf2, 0x5f, 0xa4, 0x7c, 0x3d, 0x08, 0xfa, 0x3c, 0x58, 0xc9, 0xb8, 0xcd, 0x7f, - 0xa1, 0xef, 0xc0, 0xd4, 0x36, 0xf6, 0x5d, 0xaf, 0xcd, 0xbc, 0xbc, 0xd8, 0x4d, 0xf8, 0x94, 0xad, - 0x17, 0xa2, 0x45, 0x18, 0xaf, 0x74, 0xf6, 0x3d, 0xdf, 0x0d, 0x0f, 0xd8, 0x4d, 0xd0, 0xb8, 0x1d, - 0x15, 0x10, 0xda, 0x2b, 0xee, 0xbe, 0x70, 0xee, 0x98, 0xb2, 0xf9, 0x2f, 0x54, 0x84, 0x51, 0x61, - 0xd0, 0xa1, 0xe6, 0x20, 0x5b, 0xfc, 0x24, 0x18, 0x9f, 0xdb, 0x74, 0x13, 0xd0, 0x27, 0x45, 0x36, - 0xff, 0x65, 0xdd, 0x86, 0x59, 0xd3, 0x3c, 0x1a, 0xb7, 0xcc, 0xff, 0x9f, 0x87, 0x8b, 0x95, 0x76, - 0xfb, 0xe9, 0xc3, 0xca, 0x0a, 0x56, 0x05, 0x9a, 0x77, 0x60, 0x78, 0xbd, 0xeb, 0x86, 0x5c, 0x9a, - 0x11, 0x2e, 0xca, 0x06, 0x48, 0x02, 0x45, 0x56, 0x88, 0xfc, 0x8f, 0x6c, 0xb8, 0xb8, 0xfa, 0xb5, - 0x1b, 0x84, 0x6e, 0x77, 0x5f, 0xf5, 0x73, 0xce, 0x9f, 0xc4, 0xcf, 0x79, 0xed, 0x9c, 0x6d, 0x42, - 0x46, 0x3b, 0x70, 0x69, 0x13, 0xbf, 0x32, 0x6c, 0x21, 0xf9, 0xfc, 0x43, 0x39, 0xe8, 0x89, 0x9d, - 0x93, 0x82, 0xab, 0xee, 0xd0, 0xdf, 0xc9, 0xd3, 0x67, 0x66, 0xca, 0xc0, 0x78, 0xcb, 0xbb, 0x30, - 0xab, 0x74, 0x28, 0xe2, 0x53, 0x39, 0xfe, 0xb0, 0xd5, 0x38, 0x1c, 0xf5, 0x20, 0x19, 0xd1, 0xd1, - 0x33, 0x98, 0xd7, 0x3b, 0x15, 0x51, 0xd6, 0x0f, 0x83, 0x09, 0x64, 0xed, 0x9c, 0x9d, 0x86, 0x8d, - 0x96, 0x61, 0xa8, 0xd2, 0x7a, 0xc1, 0xa7, 0xc5, 0xbc, 0x64, 0x6c, 0x64, 0x95, 0xd6, 0x0b, 0xfa, - 0x5c, 0xbb, 0xf5, 0x42, 0x3b, 0x0f, 0xff, 0x32, 0x07, 0xf3, 0x29, 0x2b, 0x8c, 0x96, 0x00, 0x58, - 0xa1, 0xf2, 0x45, 0x50, 0x4a, 0x88, 0x80, 0xc6, 0x7e, 0x51, 0x8f, 0xaf, 0x21, 0xca, 0x82, 0xc5, - 0x4b, 0x8a, 0xa8, 0xc2, 0x56, 0x80, 0xd0, 0x36, 0x4c, 0xb0, 0x5f, 0xec, 0x41, 0x87, 0xce, 0xb6, - 0x95, 0x1a, 0x26, 0xc8, 0xb4, 0x69, 0x41, 0x33, 0xfe, 0x90, 0x43, 0x25, 0xc1, 0xcd, 0x97, 0xb5, - 0xf8, 0x28, 0xe4, 0xa0, 0xd1, 0x2d, 0x38, 0xcf, 0x0a, 0xf9, 0x1a, 0x8a, 0x67, 0x9a, 0x11, 0x30, - 0xaf, 0xb7, 0xfe, 0x5e, 0x0e, 0x2e, 0xb1, 0x2f, 0x62, 0xe2, 0x68, 0xbc, 0xaf, 0x1d, 0x8d, 0x6b, - 0xb2, 0xc3, 0x26, 0x60, 0xed, 0x74, 0x54, 0x75, 0xef, 0xff, 0x93, 0x9e, 0x0a, 0x15, 0x49, 0xdd, - 0xb7, 0x7f, 0x3f, 0x27, 0xac, 0x39, 0xc9, 0xad, 0xbb, 0x0a, 0x93, 0x6f, 0xb6, 0x65, 0x35, 0x34, - 0xf4, 0x2e, 0xdb, 0x51, 0xf9, 0xec, 0x91, 0x66, 0x6e, 0xaa, 0x4f, 0xa0, 0x94, 0x3e, 0x35, 0x83, - 0xb6, 0x95, 0xf5, 0xd0, 0x80, 0xfd, 0x26, 0xcb, 0xd9, 0x4f, 0xd0, 0xa9, 0xbf, 0xee, 0xb6, 0xc4, - 0x8a, 0xde, 0x8c, 0xfb, 0x43, 0xa6, 0xfa, 0x98, 0xa9, 0xbd, 0xcd, 0x47, 0xd7, 0x06, 0x7c, 0x73, - 0x52, 0x61, 0x4f, 0xed, 0xfe, 0x3f, 0xcb, 0xeb, 0x7b, 0xf1, 0x4d, 0x1a, 0xad, 0xc1, 0xd4, 0x26, - 0x7e, 0x95, 0x68, 0x97, 0xfa, 0xcf, 0x74, 0xf1, 0xab, 0xa6, 0xd2, 0xb6, 0xea, 0x58, 0xae, 0xe1, - 0xa0, 0x3d, 0x98, 0x16, 0x5c, 0xe3, 0xa4, 0xcc, 0x93, 0xbd, 0x66, 0x23, 0x2d, 0xa4, 0xbc, 0x3d, - 0x89, 0x51, 0x3c, 0xfb, 0xf3, 0x6c, 0x6d, 0x43, 0x31, 0x39, 0x7b, 0xbc, 0xb5, 0x77, 0x06, 0xad, - 0x3d, 0x33, 0x7b, 0xb4, 0xf5, 0x7d, 0xb0, 0x46, 0x4d, 0x51, 0x12, 0x46, 0xda, 0x16, 0xee, 0xc5, - 0x17, 0x83, 0xfa, 0xe1, 0x88, 0xc5, 0x50, 0xfa, 0x27, 0xdd, 0x63, 0x6b, 0xd4, 0x9a, 0xa7, 0x52, - 0xe2, 0x1d, 0xbb, 0x0d, 0xa3, 0xbc, 0x28, 0xf6, 0x16, 0x3c, 0xda, 0x95, 0x02, 0xc0, 0xfa, 0xc3, - 0x1c, 0x5c, 0xa6, 0xb6, 0x45, 0xb7, 0xbb, 0xdf, 0xc1, 0xbb, 0x81, 0xee, 0xe1, 0xfa, 0xb6, 0xc6, - 0x68, 0xe6, 0x53, 0x5e, 0x20, 0xfd, 0xba, 0xd8, 0xcb, 0x1f, 0xe5, 0xa0, 0x64, 0xea, 0xdb, 0xd9, - 0x72, 0x98, 0x3b, 0x5c, 0x99, 0xcb, 0x73, 0xab, 0x09, 0x43, 0x97, 0x6d, 0x8a, 0xc1, 0x92, 0x41, - 0x92, 0xff, 0x35, 0xd6, 0xf2, 0x3f, 0x73, 0x30, 0xbb, 0x1e, 0xa8, 0x02, 0x3e, 0x9f, 0xb8, 0x3b, - 0xa6, 0x07, 0x91, 0x74, 0x5d, 0xcd, 0x71, 0x37, 0xde, 0x51, 0x5e, 0xd8, 0xe4, 0xb3, 0x5e, 0x3a, - 0x6a, 0xc1, 0x56, 0x6e, 0xc2, 0xf0, 0x26, 0x11, 0xa7, 0x86, 0xf8, 0xfe, 0x63, 0x18, 0xa4, 0x88, - 0x3e, 0x86, 0x21, 0x5d, 0x26, 0x3f, 0xd0, 0xc3, 0xc4, 0x93, 0x9b, 0xe1, 0xc1, 0x2f, 0xf9, 0x92, - 0x51, 0x62, 0xaa, 0x63, 0x70, 0x7e, 0xc7, 0xf1, 0xf7, 0x71, 0x68, 0xfd, 0x18, 0x4a, 0xdc, 0xab, - 0x87, 0x59, 0x6b, 0xa9, 0xef, 0x4f, 0x10, 0x39, 0x6e, 0x65, 0x79, 0xe2, 0x2c, 0x01, 0xd4, 0x43, - 0xc7, 0x0f, 0xd7, 0xbb, 0x6d, 0xfc, 0x35, 0x1d, 0xed, 0x88, 0xad, 0x94, 0x58, 0xef, 0xc2, 0xb8, - 0x1c, 0x02, 0xd5, 0x00, 0x15, 0x89, 0x91, 0x0e, 0x67, 0x56, 0x7b, 0x04, 0x24, 0x5e, 0xfe, 0x3c, - 0x80, 0xb9, 0xd8, 0x52, 0x44, 0x8f, 0xd2, 0xa4, 0x66, 0x46, 0x5d, 0x1c, 0x6d, 0xf9, 0xdb, 0xaa, - 0xc1, 0x85, 0xc4, 0x4a, 0x23, 0x44, 0xdf, 0x8b, 0x31, 0xed, 0x9e, 0x7c, 0x50, 0xea, 0xf5, 0x35, - 0x52, 0xb6, 0xb3, 0x51, 0x67, 0x4e, 0xdc, 0xa4, 0x6c, 0x67, 0xa3, 0x5e, 0x3d, 0xcf, 0x76, 0x8e, - 0xf5, 0x8f, 0xf2, 0x54, 0xe9, 0x4d, 0xcc, 0x41, 0xcc, 0x56, 0xa8, 0xda, 0x2b, 0xab, 0x30, 0x4e, - 0x47, 0xbc, 0x22, 0x9e, 0x29, 0x64, 0x3b, 0xa2, 0x8c, 0xfd, 0xe2, 0xa8, 0x7c, 0x8e, 0x7a, 0x9f, - 0x44, 0x68, 0xe8, 0x53, 0x18, 0x5d, 0xed, 0xb6, 0x29, 0x85, 0xa1, 0x53, 0x50, 0x10, 0x48, 0x64, - 0x1d, 0x68, 0x97, 0x89, 0x28, 0xc4, 0xcd, 0x4e, 0xb6, 0x52, 0x42, 0xa7, 0xd9, 0x3d, 0x74, 0x99, - 0xc3, 0xd7, 0x88, 0xcd, 0x7e, 0xd0, 0x27, 0x7e, 0xa4, 0x0b, 0x22, 0xfe, 0xc0, 0xb8, 0x2d, 0x7f, - 0x23, 0x0b, 0x46, 0xb6, 0xfc, 0x36, 0x7f, 0xfa, 0x3b, 0xbd, 0x3c, 0x29, 0x82, 0x31, 0x92, 0x32, - 0x9b, 0x55, 0x59, 0xff, 0x3d, 0x07, 0xf3, 0x8f, 0x70, 0x68, 0xdc, 0x37, 0xda, 0xac, 0xe4, 0xbe, - 0xf1, 0xac, 0xe4, 0xdf, 0x64, 0x56, 0xe4, 0xa8, 0x87, 0xd2, 0x46, 0x3d, 0x9c, 0x36, 0xea, 0x91, - 0xf4, 0x51, 0x3f, 0x82, 0xf3, 0x6c, 0xa8, 0xe8, 0x3a, 0x8c, 0xac, 0x87, 0xf8, 0x30, 0x32, 0x86, - 0xa8, 0x6e, 0x74, 0x36, 0xab, 0x23, 0x1a, 0xd7, 0x86, 0x13, 0x84, 0xe2, 0xd9, 0xc0, 0xb8, 0x2d, - 0x7e, 0x5a, 0x3f, 0xa3, 0x0f, 0x9c, 0x36, 0xbc, 0xd6, 0x0b, 0xc5, 0x2a, 0x3d, 0xca, 0x4e, 0x65, - 0xfc, 0x16, 0x83, 0x40, 0xb1, 0x1a, 0x5b, 0x40, 0xa0, 0xab, 0x30, 0xb1, 0xde, 0x7d, 0xe8, 0xf9, - 0x2d, 0xbc, 0xd5, 0xed, 0x30, 0xea, 0x63, 0xb6, 0x5a, 0xc4, 0x2d, 0x38, 0xbc, 0x85, 0xc8, 0x82, - 0x43, 0x0b, 0x62, 0x16, 0x1c, 0x16, 0xaf, 0xcb, 0x66, 0x75, 0xdc, 0x40, 0x44, 0xfe, 0xce, 0x32, - 0xdf, 0x48, 0x3b, 0xcf, 0x20, 0xc0, 0x3d, 0xb8, 0x6c, 0xe3, 0x5e, 0xc7, 0x21, 0x02, 0xd7, 0xa1, - 0xc7, 0xe0, 0xe5, 0x98, 0xaf, 0x1a, 0xfc, 0xcc, 0x75, 0xdf, 0x07, 0xd9, 0xe5, 0x7c, 0x46, 0x97, - 0x0f, 0xe1, 0xda, 0x23, 0x1c, 0x1a, 0x83, 0x6e, 0x45, 0x83, 0x5f, 0x83, 0xb1, 0x40, 0xb7, 0xd7, - 0x0f, 0x8a, 0xf7, 0xc5, 0x6f, 0xb4, 0x38, 0x1d, 0xf9, 0x97, 0xf5, 0x19, 0x94, 0xd3, 0x9a, 0x3b, - 0x99, 0xcf, 0xab, 0x0b, 0x57, 0xd3, 0x09, 0xc8, 0xcf, 0xa2, 0xb0, 0xed, 0x4b, 0xd5, 0x39, 0xbb, - 0xb7, 0xfa, 0x75, 0x00, 0xff, 0xc3, 0xaa, 0x0a, 0xef, 0xbf, 0x6f, 0xd0, 0xdd, 0x26, 0xbd, 0x36, - 0xd7, 0x09, 0x44, 0xf3, 0x5a, 0x81, 0x31, 0x51, 0xc6, 0xe7, 0x35, 0x35, 0x9e, 0x19, 0x9d, 0xd0, - 0xb6, 0x20, 0x20, 0xd1, 0xac, 0x9f, 0x89, 0x2b, 0x24, 0x1d, 0xe3, 0x64, 0x8f, 0x67, 0x4e, 0x72, - 0x67, 0x64, 0x79, 0x70, 0x59, 0xa7, 0xad, 0x5e, 0x17, 0x14, 0x94, 0xeb, 0x02, 0x76, 0x4b, 0x70, - 0x55, 0x37, 0x5f, 0xe7, 0xf9, 0xbe, 0x8c, 0x8a, 0xd0, 0x92, 0x7a, 0x29, 0x30, 0x99, 0x7c, 0x6d, - 0x74, 0x0f, 0x4a, 0xa6, 0x06, 0x15, 0x03, 0x8a, 0xb4, 0x3c, 0xf3, 0xd8, 0x17, 0xbf, 0x99, 0x03, - 0x4b, 0xf3, 0x84, 0xd2, 0x42, 0x53, 0xc9, 0x23, 0xf3, 0x96, 0x60, 0x6c, 0xd4, 0xf7, 0x8a, 0xf9, - 0xd0, 0x77, 0x48, 0x81, 0xfa, 0xc4, 0x8b, 0x71, 0xbb, 0x7b, 0x30, 0xba, 0x89, 0xbf, 0x8e, 0xd8, - 0x0f, 0x93, 0x45, 0xa9, 0x77, 0xd4, 0x0b, 0xac, 0x3e, 0x1e, 0x15, 0x60, 0x44, 0x10, 0xba, 0x9e, - 0xd9, 0x07, 0xde, 0xff, 0x3d, 0x28, 0xc4, 0xeb, 0xf8, 0xda, 0x0f, 0x8c, 0xd2, 0x45, 0x5f, 0x61, - 0xc4, 0x83, 0x73, 0x05, 0x76, 0x82, 0xde, 0xe9, 0x7b, 0x8f, 0x3e, 0x04, 0xd8, 0xf1, 0x42, 0xa7, - 0x53, 0xa3, 0x36, 0x2e, 0xca, 0xf8, 0x59, 0xa8, 0xa7, 0x90, 0x94, 0x36, 0xe3, 0xaf, 0x5c, 0x15, - 0x60, 0xeb, 0x87, 0xf4, 0x44, 0x9a, 0x3b, 0x7d, 0xb2, 0x43, 0x52, 0x83, 0xeb, 0x31, 0xcf, 0x83, - 0x37, 0x20, 0x12, 0xc2, 0x1c, 0x99, 0x7e, 0x19, 0xe3, 0xeb, 0xdb, 0x59, 0xf5, 0x7f, 0x93, 0x63, - 0xee, 0x92, 0x6a, 0xb3, 0x7c, 0xa1, 0x6b, 0x00, 0x51, 0x69, 0xcc, 0x1f, 0x5f, 0x0d, 0x59, 0x46, - 0x95, 0xd7, 0x28, 0x64, 0x59, 0x60, 0x2b, 0x68, 0xdf, 0xee, 0x4a, 0x3e, 0xa0, 0xee, 0x06, 0xb2, - 0xf5, 0x93, 0xcd, 0xfb, 0x7b, 0xc2, 0x46, 0x73, 0x4a, 0xbc, 0x03, 0x98, 0xd5, 0xa2, 0x3a, 0x47, - 0x61, 0x6a, 0xa3, 0x68, 0xd6, 0xe3, 0xd5, 0x4f, 0x7e, 0x75, 0x54, 0xfe, 0xe0, 0x34, 0xaf, 0xbf, - 0x04, 0xcd, 0x1d, 0xf9, 0xc8, 0xd1, 0x9a, 0x87, 0xa1, 0x9a, 0xbd, 0x41, 0x59, 0x95, 0xbd, 0x21, - 0x59, 0x95, 0xbd, 0x61, 0xfd, 0xb7, 0x3c, 0x94, 0xd9, 0x1b, 0x67, 0xea, 0xa5, 0x12, 0xe9, 0x4a, - 0x8a, 0xdb, 0xcb, 0x49, 0x2d, 0x04, 0xb1, 0x37, 0xcc, 0xf9, 0x93, 0xbc, 0x61, 0xfe, 0xbf, 0xdf, - 0xdc, 0xaa, 0xca, 0x22, 0xf6, 0x45, 0x86, 0x01, 0x56, 0x6b, 0xb2, 0x10, 0xa4, 0x34, 0x91, 0x34, - 0x69, 0x0c, 0xbf, 0x81, 0x49, 0xe3, 0x1e, 0x8c, 0x52, 0xd5, 0x63, 0x7d, 0x9b, 0xfb, 0x56, 0xd2, - 0xed, 0x49, 0xc3, 0x11, 0x34, 0x5d, 0x35, 0xce, 0x89, 0x00, 0xb3, 0xfe, 0x76, 0x1e, 0xae, 0xa6, - 0xcf, 0x39, 0xef, 0xdb, 0x8a, 0x16, 0x98, 0x37, 0xc3, 0x1f, 0x87, 0x9e, 0x1d, 0x25, 0x30, 0x6f, - 0x3c, 0x18, 0xaf, 0x78, 0x19, 0x14, 0xbb, 0x0d, 0xd3, 0x1e, 0x0c, 0x89, 0xb0, 0xe6, 0xac, 0x48, - 0x8b, 0xc7, 0xc5, 0xcb, 0xd0, 0x1e, 0xcc, 0x6f, 0xfb, 0xee, 0x4b, 0x27, 0xc4, 0x4f, 0xf0, 0xeb, - 0x6d, 0xaf, 0xe3, 0xb6, 0x5e, 0xaf, 0x76, 0x9d, 0xbd, 0x0e, 0x6e, 0xf3, 0xe7, 0x5e, 0xb7, 0x8e, - 0x8f, 0xca, 0xdf, 0xe9, 0x31, 0x10, 0x72, 0x30, 0x9b, 0x3d, 0x0a, 0xd4, 0xc4, 0x0c, 0x4a, 0x21, - 0x9a, 0x46, 0xc8, 0xfa, 0xd7, 0x39, 0x58, 0xa0, 0x02, 0x35, 0xbf, 0x59, 0x10, 0x8d, 0xbf, 0x91, - 0x5b, 0xa6, 0x3a, 0x40, 0xbe, 0x17, 0xa9, 0x5b, 0xa6, 0xf6, 0x72, 0xca, 0xd6, 0xc0, 0xd0, 0x3a, - 0x4c, 0xf0, 0xdf, 0x8a, 0xf9, 0x78, 0x4e, 0x61, 0x58, 0x74, 0xab, 0x33, 0xeb, 0x11, 0xdd, 0xd8, - 0x9c, 0x58, 0x93, 0xbe, 0x27, 0x56, 0x71, 0xad, 0x5f, 0xe6, 0x61, 0xb1, 0x81, 0x7d, 0xf7, 0xf9, - 0xeb, 0x94, 0xc1, 0x6c, 0xc1, 0xac, 0x28, 0xa2, 0x63, 0xd6, 0x8f, 0x18, 0x0b, 0xd4, 0x23, 0xba, - 0x1a, 0x10, 0x80, 0xa6, 0x3c, 0x71, 0x46, 0xc4, 0x53, 0x38, 0x5c, 0xbe, 0x03, 0x63, 0xb1, 0x48, - 0x03, 0x74, 0xfd, 0xc5, 0x09, 0xd5, 0xc3, 0x3c, 0xca, 0xa3, 0xfa, 0x5b, 0xe9, 0x57, 0x94, 0xdc, - 0x92, 0x30, 0x28, 0x82, 0x0c, 0x3d, 0xb0, 0xe4, 0xb0, 0x3a, 0x4a, 0xad, 0xe1, 0xc0, 0xae, 0x9d, - 0xb3, 0xd3, 0x5a, 0xaa, 0x4e, 0xc0, 0x78, 0x85, 0x5e, 0xbb, 0x12, 0xc5, 0xfd, 0x7f, 0xe4, 0x61, - 0x49, 0xbc, 0xd9, 0x49, 0x99, 0xe6, 0x2f, 0x60, 0x5e, 0x14, 0x55, 0x7a, 0x44, 0x60, 0xc0, 0x6d, - 0x7d, 0xa6, 0x59, 0xb0, 0x2c, 0x31, 0xd3, 0x0e, 0x87, 0x89, 0x26, 0x3b, 0x0d, 0xfd, 0x6c, 0x0c, - 0xa2, 0x9f, 0x9a, 0xe2, 0x3e, 0x50, 0xc3, 0xa4, 0xca, 0x33, 0xf5, 0x58, 0x90, 0x2a, 0xff, 0x6c, - 0x27, 0x0c, 0xaa, 0xc3, 0xdf, 0xd4, 0xa0, 0xba, 0x76, 0x2e, 0x6e, 0x52, 0xad, 0x4e, 0xc3, 0xe4, - 0x26, 0x7e, 0x15, 0xcd, 0xfb, 0x6f, 0xe7, 0x62, 0x4f, 0x13, 0x89, 0x84, 0xc1, 0xde, 0x28, 0xe6, - 0xa2, 0xd0, 0x01, 0xf4, 0x69, 0xa2, 0x2a, 0x61, 0x30, 0xd0, 0x75, 0x18, 0x65, 0x2e, 0xba, 0xed, - 0x13, 0xe8, 0xe6, 0xf2, 0xf1, 0x4d, 0x8b, 0xa1, 0x30, 0x35, 0x9d, 0xe3, 0x5b, 0x4f, 0xe0, 0x1a, - 0xf7, 0x10, 0xd7, 0x17, 0x9f, 0x36, 0x74, 0xca, 0xcf, 0x97, 0xe5, 0xc0, 0xd2, 0x23, 0x1c, 0x67, - 0x3d, 0xda, 0xe3, 0xa4, 0xcf, 0x60, 0x46, 0x2b, 0x97, 0x14, 0xa9, 0x54, 0x2a, 0xf7, 0x90, 0x24, - 0x1d, 0x87, 0xb6, 0xae, 0x9a, 0x9a, 0x50, 0x3b, 0x6b, 0x61, 0x1a, 0xf5, 0xca, 0x8f, 0x6e, 0x91, - 0x83, 0x53, 0x70, 0xbd, 0x5b, 0xca, 0xb9, 0x66, 0x1c, 0x8f, 0xc5, 0xff, 0x11, 0x5f, 0x5e, 0x59, - 0x6b, 0x4d, 0xc1, 0x44, 0xcd, 0xeb, 0x86, 0xf8, 0x6b, 0x2a, 0xea, 0x58, 0xd3, 0x30, 0x29, 0xaa, - 0x3a, 0x38, 0x08, 0xac, 0xbf, 0x3b, 0x04, 0x16, 0x9f, 0x58, 0x93, 0xf5, 0x54, 0xcc, 0xc7, 0x5e, - 0xa2, 0xb3, 0xfc, 0x43, 0x75, 0x49, 0xb5, 0x11, 0x47, 0xb5, 0x6c, 0xe7, 0x51, 0x39, 0xaf, 0x15, - 0x95, 0xea, 0x81, 0x7d, 0xe3, 0xa3, 0xff, 0x32, 0x85, 0x4d, 0xb2, 0xc3, 0x46, 0x63, 0x6a, 0xa7, - 0xb0, 0x49, 0x8d, 0xae, 0x99, 0x65, 0xda, 0xda, 0x34, 0x70, 0x91, 0x03, 0xc9, 0xb7, 0x95, 0xb2, - 0x86, 0xfb, 0x30, 0xb1, 0x82, 0x66, 0x22, 0x8f, 0x84, 0x4a, 0x04, 0xed, 0xea, 0x73, 0xc9, 0xcf, - 0xa3, 0xf0, 0xda, 0x50, 0xab, 0x18, 0xd5, 0x9e, 0x52, 0xa2, 0xa7, 0xe5, 0xd0, 0x60, 0x15, 0x8b, - 0xf8, 0xef, 0x4b, 0x3f, 0x7d, 0xf2, 0x21, 0x75, 0x3b, 0x98, 0x3f, 0x4a, 0x11, 0xcb, 0xd2, 0x37, - 0xdf, 0x7e, 0xe7, 0x4e, 0xc4, 0xa3, 0x69, 0x34, 0x53, 0xcc, 0xd1, 0xd3, 0xae, 0x5c, 0x4c, 0xf4, - 0xad, 0xa3, 0x9c, 0x78, 0x9d, 0x90, 0xb8, 0x12, 0x3e, 0xad, 0x24, 0x59, 0xd5, 0x6e, 0x71, 0xf3, - 0x29, 0xb7, 0xb8, 0xda, 0x9d, 0x57, 0x38, 0xe0, 0x5a, 0x77, 0xe8, 0x9b, 0x5f, 0x03, 0xfd, 0xd3, - 0xf3, 0x70, 0x61, 0xdb, 0xd9, 0x77, 0xbb, 0x84, 0xf7, 0x88, 0x08, 0xbc, 0xa8, 0x92, 0xc8, 0xd1, - 0x90, 0xed, 0x06, 0x6b, 0x48, 0xc2, 0xb0, 0xac, 0x86, 0x4b, 0xcf, 0xa7, 0xbd, 0x18, 0xd5, 0x83, - 0xa2, 0x7f, 0xa8, 0x59, 0xfd, 0x13, 0xf9, 0x42, 0xa8, 0x77, 0x5f, 0xd7, 0x6b, 0xc7, 0xf2, 0x96, - 0x50, 0xcb, 0x79, 0x32, 0x90, 0xfc, 0xc8, 0x19, 0x07, 0x92, 0xff, 0x31, 0x4c, 0x3c, 0xe9, 0xef, - 0xc9, 0x9c, 0x18, 0xe7, 0x07, 0x06, 0x2a, 0xa7, 0x6b, 0xf0, 0xa2, 0xbf, 0x67, 0xce, 0x8a, 0xa1, - 0x12, 0x33, 0x06, 0x5d, 0x1f, 0xfd, 0xb5, 0x04, 0x5d, 0x4f, 0x8d, 0xf7, 0x3f, 0xf6, 0xad, 0xc4, - 0xfb, 0x37, 0x04, 0x4e, 0x1f, 0x3f, 0xfb, 0xc0, 0xe9, 0x5a, 0x50, 0x71, 0xf8, 0x86, 0x41, 0xc5, - 0xab, 0x00, 0x63, 0x7e, 0x14, 0x9a, 0x7a, 0xb8, 0x30, 0x62, 0xfd, 0x8b, 0x51, 0x98, 0xdd, 0x70, - 0x83, 0x50, 0x9c, 0x97, 0x20, 0xfa, 0x98, 0x4e, 0x8a, 0x32, 0x45, 0xd9, 0xe5, 0x72, 0x2f, 0x2b, - 0x6f, 0xc6, 0x32, 0x36, 0x69, 0x08, 0xe8, 0x5d, 0xf5, 0x6e, 0x25, 0xaf, 0x04, 0xee, 0x4c, 0x26, - 0xdb, 0x51, 0x2f, 0x5d, 0xde, 0xd2, 0x4c, 0xfb, 0x99, 0xb6, 0x90, 0x07, 0x71, 0x7b, 0x3f, 0x8f, - 0xab, 0x45, 0x3f, 0x33, 0xba, 0xed, 0x21, 0xba, 0x08, 0xd8, 0x85, 0xf3, 0x34, 0x08, 0x8e, 0x78, - 0x10, 0xfc, 0x5d, 0xce, 0x72, 0x4c, 0x93, 0xc0, 0xc2, 0xe5, 0xf0, 0xd7, 0xc0, 0x34, 0x66, 0x54, - 0x87, 0x16, 0xa8, 0xb1, 0x6e, 0x18, 0x08, 0xda, 0x81, 0x8b, 0xdb, 0x3e, 0x6e, 0x73, 0x4f, 0xd9, - 0x9e, 0xcf, 0x15, 0x43, 0xf6, 0x32, 0x8f, 0x06, 0xb1, 0xec, 0x89, 0xea, 0x26, 0x96, 0xf5, 0x2a, - 0xcf, 0x36, 0xa0, 0xa3, 0x55, 0x98, 0xae, 0x63, 0xc7, 0x6f, 0x1d, 0x3c, 0xc1, 0xaf, 0xc9, 0xa7, - 0x26, 0x28, 0x8e, 0x46, 0x91, 0x5f, 0x03, 0x5a, 0x43, 0x06, 0x4a, 0xab, 0xd4, 0x2b, 0x77, 0x1d, - 0x09, 0xfd, 0x10, 0xce, 0xd7, 0x3d, 0x3f, 0xac, 0xbe, 0x8e, 0x65, 0x5f, 0x62, 0x85, 0xd5, 0xcb, - 0x22, 0xfa, 0x6d, 0xe0, 0xf9, 0x61, 0x73, 0x4f, 0x9d, 0x37, 0x8e, 0x87, 0x1e, 0x12, 0x39, 0x96, - 0xc8, 0xd6, 0xd2, 0x6c, 0xc3, 0x02, 0x67, 0x70, 0x59, 0x95, 0x0a, 0xe4, 0x26, 0xdb, 0x4d, 0x0c, - 0x0b, 0xbd, 0x86, 0x59, 0xfd, 0x34, 0x3d, 0x74, 0x3b, 0x84, 0x05, 0x81, 0x96, 0xc7, 0xc4, 0x04, - 0x52, 0xbd, 0xc5, 0x7b, 0x79, 0x35, 0x7e, 0x66, 0x9f, 0xd3, 0x7a, 0x35, 0x98, 0xb7, 0x09, 0x1f, - 0x3d, 0xa5, 0xc1, 0x87, 0xd9, 0xcc, 0x54, 0x02, 0x11, 0x95, 0x9a, 0x0c, 0x82, 0xc6, 0xcc, 0xeb, - 0xd3, 0x13, 0x49, 0x67, 0xd4, 0x09, 0xe2, 0xc1, 0xa9, 0xed, 0x04, 0x2a, 0xda, 0x86, 0x0b, 0xbb, - 0x01, 0xde, 0xf6, 0xf1, 0x4b, 0x17, 0xbf, 0x12, 0xf4, 0x26, 0x29, 0x3d, 0xba, 0xdc, 0x84, 0x5e, - 0x8f, 0xd5, 0x9a, 0x08, 0x26, 0x91, 0x4b, 0x1f, 0xc2, 0x84, 0xb2, 0xdf, 0x0c, 0x4f, 0xcb, 0x67, - 0xd5, 0xa7, 0xe5, 0xe3, 0xea, 0x13, 0xf2, 0x3f, 0xcf, 0x31, 0xd3, 0xa2, 0xb2, 0x81, 0xb9, 0x9d, - 0x62, 0x0b, 0xc6, 0x65, 0xa1, 0x7c, 0xc8, 0x20, 0x64, 0x9d, 0xd8, 0xb7, 0x92, 0x1d, 0x1f, 0x71, - 0xba, 0xd5, 0xde, 0x46, 0x34, 0xbe, 0x5d, 0x73, 0xdf, 0x6f, 0x45, 0x4f, 0x1e, 0xf9, 0xf3, 0x4c, - 0xdf, 0x69, 0xbd, 0x88, 0xec, 0xad, 0x3f, 0x25, 0xe7, 0x43, 0xad, 0xe0, 0x49, 0xa3, 0xe6, 0xf5, - 0x8c, 0x3f, 0xbc, 0x52, 0xe4, 0x1d, 0x90, 0x2f, 0x3f, 0x59, 0xb1, 0x7e, 0x70, 0x54, 0x04, 0xea, - 0xfc, 0x3b, 0x63, 0xd9, 0xec, 0xc5, 0x9e, 0xb1, 0x07, 0xef, 0x25, 0xdf, 0x9c, 0x51, 0x5e, 0x1c, - 0xbd, 0x39, 0x53, 0xa7, 0x31, 0x7a, 0x7d, 0xb6, 0x0b, 0x0b, 0x36, 0x3e, 0xf4, 0x5e, 0xe2, 0xb3, - 0x25, 0xfb, 0x25, 0x5c, 0xd6, 0x09, 0xee, 0xf6, 0xda, 0x34, 0x54, 0x07, 0xbb, 0x75, 0x35, 0x86, - 0xdc, 0xe3, 0x08, 0x2c, 0xe4, 0x1e, 0x0b, 0xc2, 0x44, 0xfe, 0x54, 0xf9, 0x2d, 0xad, 0xb3, 0x3c, - 0x58, 0xd4, 0x89, 0x57, 0xda, 0x6d, 0x9a, 0x47, 0xa0, 0xe5, 0xf6, 0x9c, 0x6e, 0x88, 0xb6, 0x60, - 0x42, 0xf9, 0x19, 0x93, 0x94, 0x94, 0x1a, 0xb6, 0xfa, 0xbd, 0xa8, 0x40, 0x95, 0xe8, 0x14, 0x38, - 0x0b, 0x43, 0x39, 0x3e, 0x3d, 0x64, 0xca, 0xd4, 0x36, 0xab, 0x30, 0xa5, 0xfc, 0x94, 0x8a, 0x07, - 0x0d, 0xa7, 0xa9, 0xb4, 0xa0, 0x4f, 0x98, 0x8e, 0x62, 0xb5, 0xa0, 0x64, 0x9a, 0x34, 0x1a, 0x42, - 0xe2, 0x35, 0x5a, 0x8d, 0x82, 0x51, 0x0c, 0xbe, 0xed, 0x9e, 0x49, 0x0b, 0x44, 0x61, 0xfd, 0xcd, - 0x61, 0x58, 0xe0, 0x8b, 0x71, 0x96, 0x2b, 0x8e, 0x7e, 0x06, 0x13, 0xca, 0x1a, 0xf3, 0x49, 0xbf, - 0x2a, 0x1c, 0x64, 0xd2, 0xf6, 0x02, 0x93, 0xe8, 0xfa, 0xb4, 0xa0, 0x19, 0x5b, 0x6e, 0x22, 0xd1, - 0xa9, 0xdb, 0xa6, 0x03, 0xd3, 0xfa, 0x42, 0x73, 0xa1, 0xf6, 0xba, 0xb1, 0x11, 0x1d, 0x54, 0xc4, - 0x6f, 0x6a, 0x37, 0x8d, 0xcb, 0x4d, 0xf3, 0x5c, 0xe9, 0x9b, 0xe8, 0x6b, 0xb8, 0x90, 0x58, 0x65, - 0xae, 0xa4, 0xdd, 0x34, 0x36, 0x98, 0x80, 0x66, 0xd1, 0xcc, 0x7d, 0x5a, 0x9c, 0xda, 0x6c, 0xb2, - 0x11, 0xd4, 0x86, 0x49, 0x75, 0xe1, 0xb9, 0xd4, 0x7d, 0x2d, 0x63, 0x2a, 0x19, 0x20, 0x13, 0x8a, - 0xf8, 0x5c, 0xd2, 0xb5, 0xd7, 0x53, 0x43, 0x6a, 0x54, 0xab, 0x63, 0x70, 0x9e, 0xfd, 0x26, 0x2c, - 0x60, 0xdb, 0xc7, 0x01, 0xee, 0xb6, 0xb0, 0xea, 0xeb, 0xf4, 0x4d, 0x59, 0xc0, 0xbf, 0xca, 0x41, - 0xd1, 0x44, 0xb7, 0x8e, 0xbb, 0x6d, 0xb4, 0x0d, 0x85, 0x78, 0x43, 0x7c, 0x57, 0x5b, 0xe2, 0xab, - 0x90, 0xde, 0x25, 0x22, 0x85, 0x27, 0xba, 0xb9, 0x09, 0x17, 0x94, 0xb2, 0x53, 0x3a, 0x95, 0x25, - 0x51, 0x55, 0x45, 0x7a, 0x8d, 0xfa, 0xce, 0xad, 0x78, 0x87, 0x8e, 0xdb, 0x25, 0x02, 0xa2, 0x12, - 0x36, 0x02, 0xa2, 0x52, 0x3e, 0x37, 0x4c, 0xd9, 0xa4, 0xa5, 0xc2, 0xc1, 0x52, 0x82, 0x58, 0x9f, - 0x50, 0x0e, 0xce, 0x55, 0x14, 0xf6, 0xb4, 0x47, 0x12, 0xbb, 0x0a, 0x23, 0x3b, 0x1b, 0xf5, 0x5a, - 0x85, 0x3f, 0x14, 0x62, 0x4f, 0x49, 0x3b, 0x41, 0xb3, 0xe5, 0xd8, 0xac, 0xc2, 0xfa, 0x98, 0x46, - 0xd9, 0xe3, 0x31, 0xda, 0x24, 0xde, 0x0d, 0x18, 0xe5, 0x45, 0x1c, 0x93, 0x5e, 0x4d, 0x77, 0x38, - 0x94, 0xa8, 0xb3, 0xb6, 0x85, 0x7c, 0xdd, 0xc1, 0x4e, 0xa0, 0x7c, 0x98, 0x3f, 0x20, 0xa2, 0x38, - 0x2b, 0xe3, 0xdf, 0xe5, 0x69, 0x19, 0x02, 0x95, 0x16, 0x33, 0xe5, 0x5b, 0xc0, 0xd8, 0xf2, 0x2f, - 0xeb, 0x4f, 0xf3, 0x30, 0x2b, 0x02, 0xc6, 0x68, 0x86, 0x85, 0x81, 0xa1, 0x2e, 0x7f, 0xa4, 0xc7, - 0xe4, 0xa9, 0xc9, 0x98, 0x3c, 0xdf, 0x20, 0xf9, 0x06, 0x8f, 0xe6, 0x73, 0xc2, 0x67, 0x74, 0x4f, - 0xa4, 0xf4, 0x3d, 0xac, 0x49, 0xdf, 0xa6, 0xf1, 0x68, 0xd2, 0x37, 0x5d, 0x16, 0x26, 0x7d, 0x0b, - 0x99, 0xfb, 0x9b, 0x08, 0x4c, 0x1f, 0x90, 0xad, 0xa5, 0x35, 0x79, 0xd2, 0x17, 0x56, 0x1b, 0xf4, - 0xd1, 0xfd, 0xd6, 0xfa, 0x4a, 0x8d, 0xec, 0x69, 0xde, 0x55, 0xb1, 0x02, 0x77, 0xa9, 0xd7, 0x1c, - 0xa7, 0xa9, 0x6e, 0x4c, 0xca, 0x62, 0x79, 0xa8, 0x09, 0x05, 0xc4, 0x7a, 0x20, 0x9f, 0xf0, 0x1b, - 0xa8, 0xa5, 0xc5, 0x6d, 0xdd, 0xa4, 0xc1, 0x09, 0x1e, 0xd1, 0xf5, 0x3a, 0x8b, 0x4e, 0xfc, 0x61, - 0x8e, 0x45, 0x3b, 0xa8, 0x6f, 0x29, 0x21, 0xee, 0xbb, 0xcf, 0x3d, 0xc5, 0xae, 0xaa, 0x34, 0xf3, - 0xc4, 0xed, 0xb6, 0x55, 0xbb, 0x2a, 0x4d, 0x62, 0xc8, 0x1f, 0x2a, 0x36, 0x5f, 0xb8, 0xdd, 0xb6, - 0x1d, 0x87, 0x46, 0x1f, 0xc2, 0x94, 0x52, 0x24, 0x3f, 0xd2, 0x2c, 0x42, 0xa0, 0x8a, 0xee, 0xb6, - 0x6d, 0x1d, 0xd2, 0xfa, 0xed, 0x3c, 0x2c, 0x64, 0xa4, 0x60, 0xa1, 0x3a, 0x20, 0x35, 0x07, 0xc8, - 0x99, 0xe2, 0xb1, 0x95, 0xe9, 0xa3, 0x4c, 0x8d, 0x47, 0x4a, 0x40, 0xf4, 0x09, 0x4c, 0xa8, 0x19, - 0x61, 0xf2, 0x4a, 0x00, 0x6f, 0x73, 0x16, 0x18, 0x15, 0x1c, 0x05, 0x00, 0x51, 0x4f, 0xf8, 0x3b, - 0xe5, 0x3a, 0x91, 0x68, 0x94, 0x74, 0x32, 0x67, 0x92, 0xd7, 0x46, 0x69, 0xc6, 0xfa, 0x6b, 0x79, - 0x58, 0xca, 0x98, 0x87, 0x3a, 0x0e, 0xff, 0x4f, 0x4c, 0x45, 0x2c, 0xc9, 0xcf, 0xd0, 0xb7, 0x94, - 0xe4, 0xc7, 0xfa, 0xfd, 0x3c, 0x5c, 0xda, 0xed, 0x05, 0xd4, 0xb9, 0x75, 0xbd, 0xfb, 0x12, 0x77, - 0x43, 0xcf, 0x7f, 0x4d, 0x9d, 0xf3, 0xd0, 0xbb, 0x30, 0xb2, 0x86, 0x3b, 0x1d, 0x8f, 0x7f, 0xd6, - 0xae, 0x08, 0x53, 0x77, 0x1c, 0x9a, 0x02, 0xad, 0x9d, 0xb3, 0x19, 0x34, 0xfa, 0x10, 0xc6, 0xd7, - 0xb0, 0xe3, 0x87, 0x7b, 0xd8, 0x11, 0x92, 0xeb, 0x65, 0x8e, 0xaa, 0xa0, 0x70, 0x80, 0xb5, 0x73, - 0x76, 0x04, 0x8d, 0x96, 0x61, 0x78, 0xdb, 0xeb, 0xee, 0xcb, 0xd7, 0x6f, 0x29, 0x0d, 0x12, 0x98, - 0xb5, 0x73, 0x36, 0x85, 0x45, 0x4f, 0x61, 0xaa, 0xb2, 0x8f, 0xbb, 0xe1, 0x53, 0x1c, 0x3a, 0x6d, - 0x27, 0x74, 0xb8, 0x84, 0x73, 0x23, 0x0d, 0x59, 0x03, 0xa6, 0x89, 0x73, 0xd5, 0x82, 0xea, 0x08, - 0x0c, 0x3d, 0x0d, 0xf6, 0xad, 0xdf, 0xcd, 0x41, 0x71, 0xc5, 0x7b, 0xd5, 0x35, 0x4e, 0xcc, 0xfb, - 0xfa, 0xc4, 0x08, 0x17, 0x6c, 0x03, 0x7c, 0x6c, 0x6a, 0xde, 0x81, 0xe1, 0x6d, 0xb7, 0xbb, 0x1f, - 0xfb, 0xa8, 0x1b, 0xf0, 0x08, 0x14, 0x1d, 0xa1, 0xdb, 0xdd, 0x17, 0x5d, 0x7a, 0x0b, 0xe6, 0x53, - 0x20, 0xd1, 0xb4, 0x64, 0x6f, 0xc3, 0x94, 0xad, 0x7d, 0x17, 0xe6, 0x8c, 0x93, 0x96, 0x00, 0xfc, - 0xe7, 0x39, 0xc3, 0xea, 0xb3, 0xbe, 0x16, 0x61, 0x54, 0x04, 0xa8, 0x65, 0xdf, 0x01, 0xf1, 0x93, + 0x4b, 0x10, 0x9d, 0xff, 0xa7, 0x50, 0x41, 0x3f, 0x86, 0x29, 0xde, 0x16, 0x37, 0x93, 0x5f, 0xc8, + 0xde, 0x68, 0x12, 0x98, 0x9b, 0xac, 0xc5, 0x4f, 0x26, 0x23, 0xe9, 0xb4, 0xd0, 0x57, 0x30, 0xf1, + 0xf4, 0x61, 0xc5, 0xc6, 0x41, 0xcf, 0xeb, 0x06, 0x98, 0x9b, 0xfd, 0x96, 0x38, 0xe9, 0xa7, 0x0f, + 0x2b, 0x95, 0x7e, 0xf8, 0x02, 0x77, 0x43, 0xb7, 0xe5, 0x84, 0x58, 0x40, 0x31, 0x09, 0xf5, 0xf0, + 0xb9, 0xd3, 0xf4, 0x79, 0x89, 0x32, 0x0a, 0x95, 0x1c, 0x2a, 0xc1, 0x58, 0xbd, 0xbe, 0xb6, 0xe1, + 0xed, 0xbb, 0xcc, 0x02, 0x38, 0x6e, 0xcb, 0xdf, 0x68, 0x0f, 0xe6, 0x94, 0x8b, 0x2c, 0x2a, 0xea, + 0x62, 0x2a, 0xcf, 0x33, 0x83, 0xde, 0xf7, 0xe4, 0x4d, 0xdc, 0x1d, 0xf5, 0xbe, 0xeb, 0xe5, 0xfd, + 0x3b, 0x95, 0xe8, 0x67, 0x5d, 0x20, 0xd9, 0xb3, 0x8e, 0xa1, 0xd4, 0xfa, 0x12, 0xc6, 0xe5, 0xb1, + 0x43, 0xa3, 0x30, 0x54, 0xe9, 0x74, 0x0a, 0xe7, 0xc8, 0x1f, 0xf5, 0xfa, 0x5a, 0x21, 0x87, 0xa6, + 0x01, 0x22, 0x5e, 0x53, 0xc8, 0xa3, 0xc9, 0xc8, 0xea, 0x51, 0x18, 0xa2, 0xf0, 0xbd, 0x5e, 0x61, + 0x18, 0xa1, 0xb8, 0xb9, 0xa5, 0x30, 0x62, 0xed, 0xc2, 0xb8, 0x9c, 0x48, 0x34, 0x03, 0x13, 0xbb, + 0x9b, 0xf5, 0xed, 0xd5, 0xda, 0xfa, 0xc3, 0xf5, 0xd5, 0x95, 0xc2, 0x39, 0x74, 0x05, 0x2e, 0xef, + 0xd4, 0xd7, 0x9a, 0x2b, 0xd5, 0xe6, 0xc6, 0x56, 0xad, 0xb2, 0xd1, 0xdc, 0xb6, 0xb7, 0xbe, 0xfc, + 0x61, 0x73, 0x67, 0x77, 0x73, 0x73, 0x75, 0xa3, 0x90, 0x43, 0x45, 0x98, 0x25, 0xd5, 0x4f, 0x76, + 0xab, 0xab, 0x2a, 0x40, 0x21, 0x6f, 0xfd, 0xa7, 0x5c, 0x82, 0xd3, 0xa1, 0x65, 0x98, 0xe0, 0xea, + 0x25, 0x5d, 0x7d, 0x26, 0x20, 0x17, 0x8e, 0x8f, 0xca, 0x93, 0x42, 0x35, 0xa5, 0x0b, 0xab, 0x02, + 0x91, 0x8f, 0xd7, 0x36, 0x59, 0xc2, 0x96, 0xd7, 0x51, 0x3f, 0x5e, 0x3d, 0x5e, 0x66, 0xcb, 0x5a, + 0xb4, 0xac, 0x7c, 0xe6, 0x98, 0xb4, 0x4c, 0x25, 0x32, 0xf1, 0x99, 0x53, 0x59, 0x9e, 0xfc, 0xe0, + 0x2d, 0x2b, 0xd6, 0xa1, 0xe1, 0x08, 0xc7, 0xc0, 0x62, 0x25, 0x9c, 0xd5, 0x4f, 0x61, 0x22, 0xe8, + 0x93, 0x84, 0x31, 0x8b, 0x8d, 0x90, 0x72, 0xc9, 0x18, 0xaf, 0x48, 0xd8, 0xa9, 0xca, 0x30, 0xc2, + 0x76, 0x17, 0x1b, 0x24, 0x95, 0x22, 0x3a, 0xa4, 0xc0, 0x66, 0xe5, 0xd6, 0xdf, 0x18, 0x52, 0x19, + 0x2a, 0x91, 0x1a, 0x94, 0x49, 0xa4, 0x52, 0x03, 0x9d, 0x3c, 0x5a, 0x4a, 0x04, 0x04, 0xae, 0x61, + 0xaf, 0xaf, 0x70, 0x8a, 0x54, 0x40, 0x10, 0xf6, 0x5a, 0xb7, 0x6d, 0x47, 0x00, 0x44, 0x1a, 0x66, + 0xd2, 0x02, 0x95, 0x86, 0x87, 0x22, 0x69, 0x98, 0xcb, 0x13, 0x4c, 0x1a, 0x8e, 0x40, 0xc8, 0x42, + 0xaa, 0xb7, 0x5d, 0xc3, 0xd1, 0x42, 0xaa, 0xf7, 0x5a, 0xfa, 0x5d, 0xd6, 0xc7, 0x00, 0x95, 0x67, + 0x75, 0x2a, 0x0b, 0xda, 0x9b, 0xfc, 0xa3, 0x4e, 0x8f, 0x9f, 0xf3, 0x2a, 0xe0, 0xd2, 0xa4, 0xaf, + 0x8a, 0xcd, 0x0a, 0x34, 0xaa, 0xc2, 0x54, 0xe5, 0x37, 0xfa, 0x3e, 0x5e, 0x6f, 0x93, 0x13, 0x1c, + 0x32, 0xfd, 0x60, 0x9c, 0xdf, 0x94, 0x90, 0x8a, 0xa6, 0xcb, 0x6b, 0x14, 0x02, 0x3a, 0x0a, 0xda, + 0x82, 0x0b, 0x8f, 0x6a, 0xc2, 0xbc, 0x51, 0x69, 0xb5, 0xbc, 0x7e, 0x37, 0xe4, 0x5f, 0xf2, 0x6b, + 0xc7, 0x47, 0xe5, 0x2b, 0xfb, 0xad, 0xc8, 0x42, 0xe2, 0xb0, 0x6a, 0xf5, 0x53, 0x9e, 0xc0, 0xb5, + 0x3a, 0x30, 0xfd, 0x08, 0x87, 0x64, 0x2b, 0x09, 0xb1, 0x2c, 0x7b, 0x4d, 0x3e, 0x85, 0x89, 0x67, + 0x6e, 0xf8, 0xa2, 0x8e, 0x5b, 0x3e, 0x0e, 0x85, 0xf6, 0xc9, 0x54, 0x64, 0x37, 0x7c, 0xd1, 0x0c, + 0x58, 0xb9, 0xca, 0x80, 0x14, 0x70, 0x6b, 0x15, 0x66, 0x78, 0x6b, 0x52, 0x0a, 0x5c, 0xd6, 0x09, + 0xe6, 0x28, 0x41, 0xba, 0x0a, 0x2a, 0x41, 0x9d, 0xcc, 0x1f, 0xe7, 0x61, 0xae, 0xf6, 0xc2, 0xe9, + 0xee, 0xe3, 0x6d, 0x27, 0x08, 0x5e, 0x79, 0x7e, 0x5b, 0xe9, 0x3c, 0x15, 0x81, 0x13, 0x9d, 0xa7, + 0x32, 0xef, 0x32, 0x4c, 0x6c, 0x75, 0xda, 0x02, 0x87, 0x8b, 0xe7, 0xb4, 0x2d, 0xaf, 0xd3, 0x6e, + 0xf6, 0x04, 0x2d, 0x15, 0x88, 0xe0, 0x6c, 0xe2, 0x57, 0x12, 0x67, 0x28, 0xc2, 0xe9, 0xe2, 0x57, + 0x0a, 0x8e, 0x02, 0x84, 0x56, 0xe1, 0x42, 0x1d, 0xb7, 0xbc, 0x6e, 0xfb, 0xa1, 0xd3, 0x0a, 0x3d, + 0x9f, 0x5d, 0xb9, 0x0c, 0x47, 0x12, 0x4c, 0x40, 0x2b, 0x9b, 0xcf, 0x69, 0x2d, 0xbb, 0x69, 0xb1, + 0x93, 0x18, 0x68, 0x8b, 0x5e, 0xd8, 0xd0, 0x1b, 0x7b, 0x2e, 0xd3, 0xdf, 0xb8, 0x23, 0xaf, 0xf0, + 0x6b, 0x3e, 0xa6, 0x9b, 0xc2, 0xe9, 0x48, 0xad, 0x44, 0x7e, 0x10, 0x28, 0x73, 0x11, 0x90, 0xb6, + 0x24, 0x62, 0xed, 0xc2, 0xd4, 0x76, 0xa7, 0xbf, 0xef, 0x76, 0x09, 0x1b, 0xa8, 0xe3, 0x9f, 0xa3, + 0x15, 0x80, 0xa8, 0x80, 0x5b, 0x26, 0x84, 0x4d, 0x2c, 0xaa, 0x68, 0x3c, 0xe0, 0x07, 0x89, 0x96, + 0x50, 0xd1, 0xcd, 0x56, 0xf0, 0xac, 0xbf, 0x36, 0x04, 0x88, 0x2f, 0x00, 0xe5, 0xf5, 0x75, 0x1c, + 0x12, 0x36, 0x7c, 0x09, 0xf2, 0xd2, 0x80, 0x70, 0xfe, 0xf8, 0xa8, 0x9c, 0x77, 0xdb, 0x76, 0x7e, + 0x7d, 0x05, 0xbd, 0x0b, 0x23, 0x14, 0x8c, 0xce, 0xff, 0xb4, 0x6c, 0x4f, 0xa5, 0xc0, 0x38, 0x07, + 0xfd, 0x06, 0xd9, 0x0c, 0x18, 0xbd, 0x07, 0xe3, 0x2b, 0xb8, 0x83, 0xf7, 0x9d, 0xd0, 0x13, 0xa7, + 0x9b, 0xa9, 0xe4, 0xa2, 0x50, 0xd9, 0x73, 0x11, 0x24, 0x91, 0xdb, 0x6d, 0xec, 0x04, 0x5e, 0x57, + 0x95, 0xdb, 0x7d, 0x5a, 0xa2, 0xca, 0xed, 0x0c, 0x06, 0xfd, 0x41, 0x0e, 0x26, 0x2a, 0xdd, 0x2e, + 0x57, 0x75, 0x03, 0x3e, 0xeb, 0x73, 0x77, 0xa4, 0x27, 0xc4, 0x86, 0xb3, 0x87, 0x3b, 0x0d, 0xa7, + 0xd3, 0xc7, 0x41, 0xf5, 0x2b, 0x22, 0x4a, 0xfd, 0xe7, 0xa3, 0xf2, 0x27, 0xa7, 0x50, 0x5e, 0x23, + 0x9f, 0x8a, 0x1d, 0xdf, 0x71, 0xc3, 0x80, 0xde, 0x66, 0x46, 0x0d, 0xaa, 0xe7, 0x46, 0xe9, 0x07, + 0x7a, 0x47, 0x55, 0xd6, 0x38, 0x2f, 0x8e, 0x69, 0xd1, 0x5c, 0x4f, 0xb3, 0xae, 0xcb, 0x2f, 0xe1, + 0xfa, 0x4a, 0xda, 0x12, 0x58, 0x35, 0x58, 0x7c, 0x84, 0x43, 0x1b, 0x07, 0x38, 0x14, 0x9b, 0x96, + 0x6e, 0xb9, 0xc8, 0xfe, 0x33, 0x4a, 0x7f, 0x4b, 0x64, 0xba, 0x1e, 0x6c, 0xa3, 0x8a, 0x1a, 0xeb, + 0xaf, 0xe6, 0xa0, 0x5c, 0xf3, 0x31, 0x93, 0x44, 0x52, 0x08, 0x65, 0x33, 0x93, 0x45, 0xee, 0x1c, + 0x92, 0x8f, 0x6a, 0xc9, 0x2c, 0x71, 0x07, 0x90, 0x93, 0x29, 0xc7, 0xd6, 0x73, 0x98, 0xb3, 0x71, + 0x17, 0xbf, 0x22, 0xaa, 0xba, 0xa6, 0x5f, 0x96, 0x61, 0x84, 0x9d, 0xbc, 0xc4, 0x10, 0x58, 0xf9, + 0xe9, 0x74, 0x75, 0xeb, 0x1f, 0xe7, 0xa1, 0xc0, 0x86, 0x5b, 0xf5, 0xc2, 0x93, 0x8d, 0x8f, 0x8f, + 0x20, 0x3f, 0x40, 0xbd, 0xbf, 0x19, 0xcd, 0xf6, 0x50, 0x24, 0x1c, 0xd0, 0xae, 0x92, 0x6f, 0x9c, + 0xa8, 0x24, 0x03, 0x62, 0xbb, 0x80, 0x99, 0xb7, 0x12, 0x3a, 0x3a, 0xfa, 0x9d, 0x1c, 0x9c, 0x67, + 0xfb, 0x2a, 0x7b, 0xe7, 0x3e, 0x3b, 0x9b, 0x9d, 0x5b, 0x08, 0xe9, 0x5f, 0xea, 0x39, 0x62, 0x75, + 0xd6, 0x3f, 0xcd, 0xc3, 0x05, 0x65, 0xae, 0xb8, 0xf8, 0xf9, 0x0e, 0x93, 0x6d, 0x94, 0x09, 0xa3, + 0x06, 0x43, 0x6a, 0x11, 0x8f, 0x74, 0x78, 0x3a, 0x73, 0xef, 0xc0, 0x18, 0x19, 0x52, 0xdc, 0xb6, + 0x48, 0xbf, 0xb0, 0x0c, 0x54, 0x54, 0x9f, 0x78, 0xf6, 0xee, 0xc2, 0x18, 0xfd, 0x93, 0xac, 0xc8, + 0x70, 0xfa, 0x8a, 0x48, 0x20, 0xe4, 0x02, 0x3c, 0xf6, 0xdc, 0xee, 0x53, 0x1c, 0xbe, 0xf0, 0xda, + 0xfc, 0x5b, 0xbf, 0x4e, 0xf8, 0xe0, 0xff, 0xe3, 0xb9, 0xdd, 0xe6, 0x21, 0x2d, 0x3e, 0xad, 0xed, + 0x2a, 0x22, 0x68, 0x2b, 0xc4, 0xad, 0x7b, 0x50, 0x20, 0x2c, 0xeb, 0xe4, 0x5b, 0xcb, 0x9a, 0x05, + 0xf4, 0x08, 0x87, 0x55, 0x4f, 0xfb, 0x98, 0x5a, 0x53, 0x30, 0xb1, 0xed, 0x76, 0xf7, 0xc5, 0xcf, + 0x7f, 0x36, 0x04, 0x93, 0xec, 0x37, 0x5f, 0x81, 0x98, 0xc8, 0x93, 0x3b, 0x89, 0xc8, 0xf3, 0x21, + 0x4c, 0xf1, 0x2b, 0x32, 0xec, 0xd3, 0xab, 0x13, 0xb6, 0x1e, 0x54, 0x99, 0x61, 0x57, 0x64, 0xcd, + 0x97, 0xac, 0xc6, 0xd6, 0x01, 0xd1, 0x06, 0x4c, 0xb3, 0x82, 0x87, 0xd8, 0x09, 0xfb, 0x91, 0x3d, + 0x66, 0x86, 0xeb, 0x33, 0xa2, 0x98, 0xf1, 0x33, 0x4e, 0xeb, 0x39, 0x2f, 0xb4, 0x63, 0xb8, 0xe8, + 0x73, 0x98, 0xd9, 0xf6, 0xbd, 0xaf, 0x5f, 0x2b, 0x42, 0x1e, 0x63, 0xe9, 0x73, 0xc7, 0x47, 0xe5, + 0x0b, 0x3d, 0x52, 0xd5, 0x54, 0x45, 0xbd, 0x38, 0x34, 0xd9, 0x53, 0xeb, 0x41, 0xd5, 0xf3, 0xdd, + 0xee, 0x3e, 0x5d, 0xcd, 0x31, 0xb6, 0xa7, 0xdc, 0xa0, 0xb9, 0x47, 0x0b, 0x6d, 0x59, 0x1d, 0xb3, + 0xac, 0x8e, 0x0e, 0xb6, 0xac, 0xde, 0x03, 0xd8, 0xf0, 0x9c, 0x76, 0xa5, 0xd3, 0xa9, 0x55, 0x02, + 0x6a, 0x0c, 0xe1, 0x42, 0x4c, 0xc7, 0x73, 0xda, 0x4d, 0xa7, 0xd3, 0x69, 0xb6, 0x9c, 0xc0, 0x56, + 0x60, 0x1e, 0x0f, 0x8f, 0x9d, 0x2f, 0x8c, 0xda, 0x33, 0x1b, 0x6e, 0x0b, 0x77, 0x03, 0xfc, 0xcc, + 0xf1, 0xbb, 0x6e, 0x77, 0x3f, 0xb0, 0xfe, 0xf6, 0x08, 0x8c, 0xc9, 0x21, 0xdf, 0x51, 0x15, 0x22, + 0x2e, 0x1a, 0x51, 0x0e, 0x15, 0x19, 0x6c, 0x6c, 0x05, 0x02, 0x5d, 0x66, 0xf7, 0xb1, 0x4c, 0x28, + 0x1b, 0x25, 0xbb, 0xdb, 0xe9, 0xf5, 0xd8, 0xad, 0xeb, 0x25, 0xc8, 0xaf, 0x54, 0xe9, 0xfc, 0x8f, + 0xb1, 0x2f, 0x41, 0x7b, 0xcf, 0xce, 0xaf, 0x54, 0xc9, 0x2e, 0xdb, 0x5a, 0x5f, 0xa9, 0xd1, 0xa9, + 0x1c, 0x63, 0xbb, 0xcc, 0x73, 0xdb, 0x2d, 0x9b, 0x96, 0x92, 0xda, 0x7a, 0xe5, 0xe9, 0x06, 0x9f, + 0x2e, 0x5a, 0x1b, 0x38, 0x87, 0x1d, 0x9b, 0x96, 0x12, 0x55, 0x81, 0xe9, 0xde, 0x35, 0xaf, 0x1b, + 0xfa, 0x5e, 0x27, 0xa0, 0x12, 0xed, 0x18, 0x5b, 0x4e, 0xae, 0xb4, 0xb7, 0x78, 0x95, 0x1d, 0x03, + 0x45, 0xcf, 0x60, 0xbe, 0xd2, 0x7e, 0xe9, 0x74, 0x5b, 0xb8, 0xcd, 0x6a, 0x9e, 0x79, 0xfe, 0xc1, + 0xf3, 0x8e, 0xf7, 0x2a, 0xa0, 0xf3, 0x3d, 0xc6, 0x6d, 0x5c, 0x1c, 0x44, 0xd8, 0x00, 0x5e, 0x09, + 0x20, 0x3b, 0x0d, 0x9b, 0x70, 0xc9, 0x5a, 0xc7, 0xeb, 0xb7, 0xf9, 0x2a, 0x50, 0x2e, 0xd9, 0x22, + 0x05, 0x36, 0x2b, 0x27, 0xb3, 0xb4, 0x56, 0x7f, 0x4a, 0x2d, 0x4a, 0x7c, 0x96, 0x5e, 0x04, 0x87, + 0x36, 0x29, 0x43, 0x37, 0x60, 0x54, 0x68, 0x3d, 0xcc, 0xb6, 0x4d, 0x0d, 0xad, 0x42, 0xdb, 0x11, + 0x75, 0xe4, 0x48, 0xd8, 0xb8, 0xe5, 0xbd, 0xc4, 0xfe, 0xeb, 0x9a, 0xd7, 0xc6, 0xc2, 0xfe, 0xc1, + 0xf5, 0x7b, 0x56, 0xd1, 0x6c, 0x91, 0x1a, 0x5b, 0x07, 0x24, 0x0d, 0x30, 0xc1, 0x29, 0xa0, 0x4e, + 0x4e, 0xbc, 0x01, 0x26, 0x58, 0x05, 0xb6, 0xa8, 0x43, 0x2b, 0x70, 0xa1, 0xd2, 0x0f, 0xbd, 0x43, + 0x27, 0x74, 0x5b, 0xbb, 0xbd, 0x7d, 0xdf, 0x21, 0x8d, 0x14, 0x28, 0x02, 0x55, 0xed, 0x1c, 0x51, + 0xd9, 0xec, 0xf3, 0x5a, 0x3b, 0x89, 0x80, 0xde, 0x87, 0xc9, 0xf5, 0x80, 0xd9, 0xb8, 0x9c, 0x00, + 0xb7, 0xa9, 0xa1, 0x82, 0xf7, 0xd2, 0x0d, 0x9a, 0xd4, 0xe2, 0xd5, 0x24, 0xca, 0x60, 0xdb, 0xd6, + 0xe0, 0x1e, 0x0f, 0x8f, 0x4d, 0x14, 0x26, 0x1f, 0x0f, 0x8f, 0x4d, 0x16, 0xa6, 0x1e, 0x0f, 0x8f, + 0x4d, 0x15, 0xa6, 0xad, 0xfb, 0x70, 0x81, 0xf1, 0xa7, 0x13, 0x2b, 0x0a, 0xd6, 0x36, 0x40, 0x1d, + 0x1f, 0x3a, 0xbd, 0x17, 0x1e, 0xd9, 0xc9, 0x55, 0xf5, 0x17, 0x17, 0x34, 0x91, 0x74, 0xce, 0xe1, + 0x15, 0x8d, 0x07, 0x42, 0xbf, 0x13, 0x90, 0xb6, 0x82, 0x65, 0xfd, 0x59, 0x1e, 0x10, 0x75, 0x52, + 0xa9, 0x87, 0x3e, 0x76, 0x0e, 0x45, 0x37, 0x3e, 0x82, 0x49, 0xf6, 0xa9, 0x61, 0xc5, 0xb4, 0x3b, + 0x44, 0x8a, 0x65, 0x3c, 0x46, 0xad, 0x5a, 0x3b, 0x67, 0x6b, 0xa0, 0x04, 0xd5, 0xc6, 0x41, 0xff, + 0x50, 0xa0, 0xe6, 0x35, 0x54, 0xb5, 0x8a, 0xa0, 0xaa, 0xbf, 0xd1, 0xe7, 0x30, 0x5d, 0xf3, 0x0e, + 0x7b, 0x64, 0x4e, 0x38, 0xf2, 0x10, 0xff, 0xe2, 0xf2, 0x76, 0xb5, 0xca, 0xb5, 0x73, 0x76, 0x0c, + 0x1c, 0x6d, 0xc2, 0xc5, 0x87, 0x9d, 0x7e, 0xf0, 0xa2, 0xd2, 0x6d, 0xd7, 0x3a, 0x5e, 0x20, 0xa8, + 0x0c, 0x73, 0x8b, 0x35, 0xe7, 0x90, 0x49, 0x88, 0xb5, 0x73, 0xb6, 0x09, 0x11, 0xdd, 0xe0, 0x1e, + 0xb7, 0xd2, 0xfa, 0xcf, 0x1d, 0x72, 0xb7, 0xba, 0x78, 0xeb, 0xf9, 0xda, 0x39, 0x9b, 0xd5, 0x56, + 0xc7, 0x61, 0x54, 0x7c, 0x1d, 0xee, 0x92, 0x4d, 0x26, 0xa7, 0x93, 0x5d, 0x61, 0xa2, 0x12, 0x8c, + 0xed, 0xf6, 0x08, 0xd3, 0x12, 0xa2, 0x9f, 0x2d, 0x7f, 0x5b, 0xdf, 0xd5, 0x67, 0x1a, 0x2d, 0xaa, + 0xfa, 0x39, 0x03, 0x8e, 0x0a, 0xac, 0x35, 0x7d, 0x72, 0xb3, 0xa1, 0xb5, 0x76, 0xf3, 0xb1, 0x76, + 0x0b, 0xf1, 0xb9, 0xb6, 0xe6, 0x8c, 0x93, 0x67, 0x7d, 0x09, 0x4b, 0xbb, 0x3d, 0xa2, 0x0c, 0x55, + 0x7a, 0xbd, 0x8e, 0xdb, 0x62, 0xd6, 0x27, 0xfa, 0x15, 0x11, 0x9b, 0xe5, 0x7d, 0xe9, 0xce, 0x99, + 0x4b, 0x75, 0x7e, 0x81, 0xe3, 0xa3, 0xf2, 0x79, 0xf6, 0x35, 0x12, 0x5e, 0x9c, 0xd6, 0xef, 0xe5, + 0x60, 0x89, 0x9d, 0x80, 0x54, 0xd2, 0xdf, 0x51, 0x9d, 0x4e, 0x15, 0xf1, 0x46, 0xba, 0x98, 0xaa, + 0x6e, 0xa5, 0xd1, 0x05, 0x6b, 0x3e, 0xfd, 0x82, 0x55, 0x1c, 0xb0, 0x21, 0xe3, 0x01, 0xfb, 0x02, + 0x2c, 0xde, 0xa3, 0x4e, 0x27, 0xd1, 0xa9, 0xe0, 0x4d, 0x7a, 0x65, 0xfd, 0xb7, 0x3c, 0xcc, 0x3f, + 0xc2, 0x5d, 0xec, 0x3b, 0x74, 0x9c, 0x9a, 0x24, 0xaf, 0xde, 0xbf, 0xe4, 0x32, 0xef, 0x5f, 0xa4, + 0x98, 0x9a, 0x4f, 0x11, 0x53, 0x2f, 0xc3, 0xd0, 0xae, 0xbd, 0xce, 0x87, 0x45, 0x19, 0x70, 0xdf, + 0x77, 0x6d, 0x52, 0x86, 0xd6, 0xa3, 0xbb, 0x9b, 0xe1, 0x81, 0x77, 0x37, 0x17, 0xb9, 0x2d, 0x7b, + 0x94, 0xdf, 0xdd, 0xe8, 0x37, 0x36, 0x9b, 0x8a, 0x2c, 0x4c, 0xd8, 0xcd, 0x6d, 0x7e, 0xa6, 0x52, + 0x06, 0xc8, 0xc5, 0xda, 0xd5, 0x6e, 0xe8, 0xbf, 0x66, 0x5b, 0x80, 0x49, 0xb7, 0x42, 0xa6, 0x2d, + 0x7d, 0x01, 0x13, 0x0a, 0x08, 0x2a, 0xc0, 0xd0, 0x01, 0xbf, 0xb7, 0x1a, 0xb7, 0xc9, 0x9f, 0xe8, + 0xbb, 0x30, 0xf2, 0x92, 0xc8, 0xd7, 0x9c, 0x8d, 0x5c, 0x8a, 0x64, 0xef, 0x7a, 0x48, 0xa4, 0x0a, + 0x26, 0x7c, 0xdb, 0x0c, 0xe8, 0xe3, 0xfc, 0x87, 0x39, 0xeb, 0x13, 0x28, 0x26, 0x7b, 0xc3, 0x45, + 0xb5, 0x41, 0xda, 0x8b, 0xb5, 0x02, 0xb3, 0x8f, 0x70, 0x18, 0x79, 0xbc, 0x2a, 0xd7, 0x6a, 0xb1, + 0x73, 0x96, 0x61, 0x35, 0xb3, 0xea, 0x30, 0x17, 0xa3, 0xc2, 0xdb, 0xff, 0x18, 0x46, 0x85, 0xaf, + 0x4c, 0x2e, 0xdd, 0x57, 0x86, 0xee, 0x5b, 0x4e, 0xd9, 0x16, 0x08, 0xd6, 0x33, 0xb8, 0xa4, 0x11, + 0x0d, 0x24, 0xd5, 0xef, 0xc3, 0x98, 0x28, 0x8b, 0x99, 0x1b, 0x34, 0xb2, 0x74, 0x6b, 0x05, 0x02, + 0x59, 0xa2, 0x58, 0x2f, 0xe0, 0xd2, 0x86, 0x1b, 0xe8, 0x94, 0xd9, 0xa8, 0x17, 0x60, 0xbc, 0x47, + 0xbe, 0x67, 0x81, 0xfb, 0x1b, 0x6c, 0x7f, 0x8e, 0xd8, 0x63, 0xa4, 0xa0, 0xee, 0xfe, 0x06, 0x46, + 0x57, 0x00, 0x68, 0x25, 0x9d, 0x3f, 0xce, 0x5e, 0x28, 0x38, 0xd3, 0x03, 0x11, 0xd0, 0x8b, 0x51, + 0xb6, 0x21, 0x6d, 0xfa, 0xb7, 0xe5, 0xc3, 0x7c, 0xa2, 0x25, 0x3e, 0x86, 0xbb, 0x20, 0xbb, 0x96, + 0x31, 0x06, 0x5b, 0x02, 0xa1, 0x9b, 0x30, 0xd3, 0xc5, 0x5f, 0x87, 0xcd, 0x44, 0x1f, 0xa6, 0x48, + 0xf1, 0xb6, 0xe8, 0x87, 0xf5, 0x13, 0xaa, 0x95, 0xc7, 0x9d, 0xd9, 0xce, 0x6c, 0xf2, 0x3a, 0x50, + 0x22, 0x43, 0xd2, 0x7d, 0x97, 0x7e, 0x6d, 0x13, 0xf8, 0x12, 0x16, 0x8c, 0xad, 0xfd, 0xba, 0x27, + 0xf1, 0x2f, 0xf2, 0x30, 0xcf, 0xbe, 0x52, 0xc9, 0xa3, 0x71, 0x72, 0x1e, 0xf6, 0xad, 0x18, 0x93, + 0xef, 0x19, 0x8c, 0xc9, 0x14, 0x45, 0x35, 0x26, 0x6b, 0x26, 0xe4, 0x0f, 0xcd, 0x26, 0x64, 0x2a, + 0xd2, 0xe9, 0x26, 0xe4, 0xb8, 0xe1, 0x78, 0x35, 0xdd, 0x70, 0x4c, 0xcd, 0x68, 0x06, 0xc3, 0xb1, + 0xc1, 0x5c, 0xfc, 0x78, 0x78, 0x2c, 0x5f, 0x18, 0xb2, 0x1a, 0x50, 0x4c, 0x4e, 0xf1, 0x19, 0xf0, + 0x8d, 0x3f, 0xc9, 0xc1, 0x15, 0x2e, 0x61, 0xc4, 0x0e, 0xc1, 0xe9, 0x57, 0xf0, 0x3d, 0x98, 0xe4, + 0xb8, 0x3b, 0xd1, 0x66, 0x61, 0x6e, 0xa9, 0x82, 0x13, 0x32, 0x76, 0xaa, 0x81, 0xa1, 0xf7, 0x14, + 0x2b, 0x01, 0xb3, 0x3c, 0x5d, 0x26, 0x9f, 0x4b, 0x66, 0x4e, 0x48, 0xb5, 0x15, 0x58, 0x5f, 0xc1, + 0x52, 0x5a, 0xc7, 0xcf, 0x60, 0x5e, 0xfe, 0x34, 0x07, 0x0b, 0x9c, 0xbc, 0x76, 0x9c, 0xde, 0x88, + 0xe5, 0x9f, 0xc2, 0x93, 0xe2, 0x31, 0x4c, 0x90, 0x06, 0x45, 0xbf, 0xf5, 0x77, 0x52, 0x4a, 0xcd, + 0x8a, 0x13, 0x3a, 0xfc, 0x0a, 0xcc, 0x39, 0xec, 0x08, 0x97, 0x49, 0x5b, 0x45, 0xb6, 0x7e, 0x04, + 0x8b, 0xe6, 0x21, 0x9c, 0xc1, 0xfc, 0x3c, 0x86, 0x92, 0x81, 0x71, 0xbe, 0xd9, 0x07, 0xf1, 0x87, + 0xb0, 0x60, 0xa4, 0x75, 0x06, 0xdd, 0x5c, 0x23, 0x9f, 0xfb, 0xf0, 0x0c, 0x96, 0xd0, 0x7a, 0x06, + 0x97, 0x0d, 0x94, 0xce, 0xa0, 0x8b, 0x8f, 0x60, 0x5e, 0x8a, 0xb9, 0xdf, 0xa8, 0x87, 0x4f, 0xe1, + 0x0a, 0x23, 0x74, 0x36, 0xab, 0xf2, 0x04, 0x16, 0x38, 0xb9, 0x33, 0x98, 0xbd, 0x35, 0x58, 0x8c, + 0xb4, 0x59, 0x83, 0x2c, 0x71, 0x62, 0x26, 0x63, 0x6d, 0xc0, 0xd5, 0x88, 0x52, 0xca, 0x87, 0xf5, + 0xe4, 0xd4, 0x98, 0x2c, 0x16, 0xad, 0xd2, 0x19, 0xca, 0x62, 0x11, 0xe0, 0x99, 0x89, 0x13, 0xeb, + 0x70, 0x91, 0x11, 0xd6, 0xe5, 0xd6, 0x65, 0x55, 0x6e, 0x35, 0x3e, 0x31, 0x4a, 0x8a, 0xb2, 0x4f, + 0xa9, 0x28, 0x2b, 0x40, 0xa2, 0x1e, 0xbe, 0x07, 0xe7, 0xf9, 0x2b, 0x4a, 0xd6, 0x3f, 0x03, 0x31, + 0x26, 0xa9, 0x33, 0x34, 0x0e, 0x6c, 0xfd, 0x14, 0xae, 0x30, 0x35, 0x30, 0xee, 0xad, 0x2f, 0x96, + 0xe4, 0xfb, 0x31, 0x2d, 0x30, 0xe3, 0x51, 0x80, 0x49, 0x19, 0xdc, 0x13, 0x7b, 0x3b, 0x8d, 0xfe, + 0x89, 0xdc, 0x67, 0x85, 0x76, 0x97, 0x37, 0x6a, 0x77, 0xd7, 0xe1, 0x9a, 0xd4, 0xee, 0xe2, 0xcd, + 0x48, 0x73, 0xef, 0x8f, 0x60, 0x81, 0x0d, 0x54, 0x7f, 0x3b, 0x26, 0xba, 0xf1, 0x49, 0x6c, 0x98, + 0xa9, 0x8f, 0xd3, 0x4c, 0x83, 0xfc, 0xdd, 0x9c, 0x38, 0x72, 0x66, 0xe2, 0xdf, 0xb6, 0xba, 0xbb, + 0x09, 0x65, 0x39, 0x21, 0x7a, 0x8f, 0xde, 0x4c, 0xd7, 0x7d, 0x0a, 0x73, 0x89, 0xf7, 0x0d, 0x44, + 0x60, 0x45, 0xef, 0x92, 0x63, 0x41, 0x0b, 0xc4, 0xb6, 0x4b, 0x7d, 0x0f, 0x61, 0x4b, 0x48, 0xab, + 0x09, 0x8b, 0xc9, 0xa5, 0x70, 0x5b, 0xc2, 0xd5, 0x09, 0x7d, 0x4e, 0x8e, 0x30, 0x7b, 0x64, 0x91, + 0x1b, 0xf0, 0xc8, 0x82, 0x9f, 0x63, 0x86, 0x2e, 0xb0, 0x2c, 0x4b, 0xb0, 0x9a, 0xd8, 0xf8, 0x49, + 0xeb, 0x62, 0x3f, 0xb8, 0x80, 0x44, 0x55, 0xad, 0x6e, 0x8b, 0xa6, 0x2f, 0xc3, 0x50, 0xad, 0x6e, + 0x73, 0x0f, 0x4b, 0xaa, 0x6e, 0xb7, 0x02, 0xdf, 0x26, 0x65, 0x71, 0xa9, 0x35, 0x7f, 0x02, 0xa9, + 0xf5, 0xf1, 0xf0, 0xd8, 0x50, 0x61, 0xd8, 0xfa, 0x31, 0x5c, 0xd4, 0x9a, 0xe2, 0x27, 0x36, 0xd3, + 0x0d, 0x14, 0xdd, 0x84, 0xd1, 0x5a, 0x85, 0xde, 0xd1, 0x51, 0xdb, 0xc0, 0x24, 0xe3, 0x2d, 0x2d, + 0xa7, 0x49, 0x9f, 0xc4, 0xdb, 0xa2, 0xd2, 0xfa, 0x47, 0xc3, 0x0a, 0x75, 0xc5, 0xb9, 0x36, 0x63, + 0x24, 0xf7, 0x01, 0xd8, 0x6e, 0x50, 0x06, 0x42, 0x84, 0xbd, 0x09, 0x7e, 0xad, 0xc0, 0xd8, 0xaf, + 0xad, 0x00, 0x9d, 0xd4, 0xf9, 0x96, 0xfb, 0xfb, 0x30, 0x24, 0x71, 0xf7, 0x26, 0xfd, 0x7d, 0x38, + 0xe9, 0xc0, 0x56, 0x81, 0xd0, 0x4f, 0xe3, 0x3e, 0x62, 0x23, 0xf4, 0xaa, 0xfb, 0x2d, 0x6e, 0x82, + 0x30, 0x8c, 0xed, 0x74, 0x6e, 0x62, 0xaf, 0x60, 0x8e, 0xe0, 0xba, 0xcf, 0xa9, 0x23, 0xd8, 0xea, + 0xd7, 0x21, 0xee, 0x32, 0x3e, 0x7e, 0x9e, 0xb6, 0x73, 0x23, 0xa3, 0x9d, 0x08, 0x98, 0xbf, 0xe1, + 0x8e, 0xe8, 0x34, 0xb1, 0xac, 0xb3, 0xcd, 0xf4, 0xe9, 0x86, 0xb1, 0x37, 0x56, 0xbb, 0xed, 0x9e, + 0xe7, 0x4a, 0x05, 0x82, 0x6d, 0x18, 0xbf, 0xd3, 0xc4, 0xbc, 0xdc, 0x56, 0x81, 0xac, 0x9b, 0x99, + 0xbe, 0x59, 0x63, 0x30, 0xbc, 0x53, 0xdb, 0xd9, 0x28, 0xe4, 0xac, 0xbb, 0x00, 0x4a, 0x4b, 0x00, + 0xe7, 0x37, 0xb7, 0xec, 0xa7, 0x95, 0x8d, 0xc2, 0x39, 0x34, 0x07, 0x17, 0x9e, 0xad, 0x6f, 0xae, + 0x6c, 0x3d, 0xab, 0x37, 0xeb, 0x4f, 0x2b, 0xf6, 0x4e, 0xad, 0x62, 0xaf, 0x14, 0x72, 0xd6, 0x57, + 0x30, 0xab, 0x8f, 0xf0, 0x4c, 0x37, 0x61, 0x08, 0x17, 0xa5, 0xec, 0xf2, 0xf8, 0xd9, 0x8e, 0xe2, + 0xaf, 0xc2, 0x95, 0xa1, 0xf8, 0x15, 0x1a, 0x57, 0x9b, 0xf8, 0x91, 0x51, 0x80, 0xb4, 0x8b, 0xcf, + 0x7c, 0xe6, 0xc5, 0xa7, 0xf5, 0x01, 0xcc, 0xea, 0xad, 0x9e, 0xd4, 0x1c, 0xf4, 0x16, 0x75, 0xe4, + 0x51, 0xbc, 0x2b, 0x89, 0x56, 0x1e, 0x75, 0x91, 0x73, 0xd1, 0x0f, 0xa0, 0xc0, 0xa1, 0xa2, 0xaf, + 0xec, 0x75, 0x61, 0xaf, 0xcb, 0x19, 0x3c, 0xc1, 0x85, 0x5b, 0xc1, 0xdb, 0xe2, 0x06, 0x60, 0x50, + 0x0b, 0x7f, 0x96, 0x83, 0x62, 0xcc, 0x51, 0xb1, 0xf6, 0xc2, 0xe9, 0x74, 0x70, 0x77, 0x1f, 0xa3, + 0x5b, 0x30, 0xbc, 0xb3, 0xb5, 0xb3, 0xcd, 0x2d, 0x64, 0xb3, 0x7c, 0x9b, 0x92, 0x22, 0x09, 0x63, + 0x53, 0x08, 0xf4, 0x04, 0x2e, 0x08, 0xb7, 0x15, 0x59, 0xc5, 0x15, 0x90, 0x2b, 0xd9, 0x4e, 0x30, + 0x49, 0x3c, 0xf4, 0x2e, 0xf7, 0xaa, 0xfc, 0x79, 0xdf, 0xf5, 0x71, 0x9b, 0x2a, 0xe7, 0xd3, 0xcb, + 0x28, 0xf2, 0xaa, 0x14, 0x35, 0xb6, 0x0a, 0xc6, 0x3c, 0xde, 0xad, 0x3f, 0xc8, 0xc1, 0x7c, 0x8a, + 0xe3, 0x25, 0x7a, 0x47, 0x1b, 0xce, 0x45, 0x65, 0x38, 0x02, 0x64, 0xed, 0x1c, 0x1f, 0x4f, 0x4d, + 0xf1, 0xe5, 0x19, 0x3a, 0x85, 0x2f, 0x0f, 0x7f, 0x77, 0x4d, 0xe1, 0xf8, 0xfb, 0x22, 0x5a, 0x6e, + 0xcd, 0xc0, 0x94, 0x36, 0x6f, 0x96, 0x05, 0x93, 0x6a, 0xcb, 0x64, 0x71, 0x6a, 0x5e, 0x5b, 0x2e, + 0x0e, 0xf9, 0xdb, 0xfa, 0x5b, 0x39, 0x98, 0xa5, 0x43, 0xdc, 0x77, 0xc9, 0x69, 0x8c, 0x66, 0x68, + 0x59, 0x1b, 0xc9, 0xa2, 0x36, 0x92, 0x18, 0xac, 0x1c, 0xd2, 0xc7, 0x89, 0x21, 0x2d, 0x9a, 0x86, + 0x44, 0xb5, 0x3e, 0xd7, 0xeb, 0x6a, 0x23, 0x51, 0xae, 0x21, 0xfe, 0x6e, 0x0e, 0x2e, 0x2a, 0x7d, + 0x92, 0xfd, 0xbf, 0xaf, 0x75, 0x69, 0xc1, 0xd0, 0xa5, 0xc4, 0x24, 0x57, 0x13, 0x3d, 0x7a, 0x2b, + 0xab, 0x47, 0x03, 0xe7, 0xf8, 0xcf, 0x73, 0x30, 0x67, 0x9c, 0x03, 0x74, 0x89, 0x88, 0x56, 0x2d, + 0x1f, 0x87, 0x7c, 0x7a, 0xf9, 0x2f, 0x52, 0xbe, 0x1e, 0x04, 0x7d, 0x1e, 0xac, 0x64, 0xdc, 0xe6, + 0xbf, 0xd0, 0x5b, 0x30, 0xb5, 0x8d, 0x7d, 0xd7, 0x6b, 0x33, 0x2f, 0x2f, 0x76, 0x13, 0x3e, 0x65, + 0xeb, 0x85, 0x68, 0x11, 0xc6, 0x2b, 0x9d, 0x7d, 0xcf, 0x77, 0xc3, 0x17, 0xec, 0x26, 0x68, 0xdc, + 0x8e, 0x0a, 0x08, 0xed, 0x15, 0x77, 0x5f, 0x38, 0x77, 0x4c, 0xd9, 0xfc, 0x17, 0x2a, 0xc2, 0xa8, + 0x30, 0xe8, 0x50, 0x73, 0x90, 0x2d, 0x7e, 0x12, 0x8c, 0x2f, 0x6c, 0xba, 0x09, 0xe8, 0x93, 0x22, + 0x9b, 0xff, 0xb2, 0x6e, 0xc3, 0xac, 0x69, 0x1e, 0x8d, 0x5b, 0xe6, 0x2f, 0xe7, 0xe1, 0x62, 0xa5, + 0xdd, 0x7e, 0xfa, 0xb0, 0xb2, 0x82, 0x55, 0x81, 0xe6, 0x5d, 0x18, 0x5e, 0xef, 0xba, 0x21, 0x97, + 0x66, 0x84, 0x8b, 0xb2, 0x01, 0x92, 0x40, 0x91, 0x15, 0x22, 0xff, 0x23, 0x1b, 0x2e, 0xae, 0x7e, + 0xed, 0x06, 0xa1, 0xdb, 0xdd, 0x57, 0xfd, 0x9c, 0xf3, 0x27, 0xf1, 0x73, 0x5e, 0x3b, 0x67, 0x9b, + 0x90, 0xd1, 0x0e, 0x5c, 0xda, 0xc4, 0xaf, 0x0c, 0x5b, 0x48, 0x3e, 0xff, 0x50, 0x0e, 0x7a, 0x62, + 0xe7, 0xa4, 0xe0, 0xaa, 0x3b, 0xf4, 0x77, 0xf2, 0xf4, 0x99, 0x99, 0x32, 0x30, 0xde, 0xf2, 0x2e, + 0xcc, 0x2a, 0x1d, 0x8a, 0xf8, 0x54, 0x8e, 0x3f, 0x6c, 0x35, 0x0e, 0x47, 0x3d, 0x48, 0x46, 0x74, + 0xf4, 0x0c, 0xe6, 0xf5, 0x4e, 0x45, 0x94, 0xf5, 0xc3, 0x60, 0x02, 0x59, 0x3b, 0x67, 0xa7, 0x61, + 0xa3, 0x65, 0x18, 0xaa, 0xb4, 0x0e, 0xf8, 0xb4, 0x98, 0x97, 0x8c, 0x8d, 0xac, 0xd2, 0x3a, 0xa0, + 0xcf, 0xb5, 0x5b, 0x07, 0xda, 0x79, 0xf8, 0xd7, 0x39, 0x98, 0x4f, 0x59, 0x61, 0xb4, 0x04, 0xc0, + 0x0a, 0x95, 0x2f, 0x82, 0x52, 0x42, 0x04, 0x34, 0xf6, 0x8b, 0x7a, 0x7c, 0x0d, 0x51, 0x16, 0x2c, + 0x5e, 0x52, 0x44, 0x15, 0xb6, 0x02, 0x84, 0xb6, 0x61, 0x82, 0xfd, 0x62, 0x0f, 0x3a, 0x74, 0xb6, + 0xad, 0xd4, 0x30, 0x41, 0xa6, 0x4d, 0x0b, 0x9a, 0xf1, 0x87, 0x1c, 0x2a, 0x09, 0x6e, 0xbe, 0xac, + 0xc5, 0x47, 0x21, 0x07, 0x8d, 0x6e, 0xc1, 0x79, 0x56, 0xc8, 0xd7, 0x50, 0x3c, 0xd3, 0x8c, 0x80, + 0x79, 0xbd, 0xf5, 0x0f, 0x72, 0x70, 0x89, 0x7d, 0x11, 0x13, 0x47, 0xe3, 0x03, 0xed, 0x68, 0x5c, + 0x93, 0x1d, 0x36, 0x01, 0x6b, 0xa7, 0xa3, 0xaa, 0x7b, 0xff, 0x9f, 0xf4, 0x54, 0xa8, 0x48, 0xea, + 0xbe, 0xfd, 0x87, 0x39, 0x61, 0xcd, 0x49, 0x6e, 0xdd, 0x55, 0x98, 0x7c, 0xb3, 0x2d, 0xab, 0xa1, + 0xa1, 0xf7, 0xd8, 0x8e, 0xca, 0x67, 0x8f, 0x34, 0x73, 0x53, 0x7d, 0x0a, 0xa5, 0xf4, 0xa9, 0x19, + 0xb4, 0xad, 0xac, 0x87, 0x06, 0xec, 0x37, 0x59, 0xce, 0x7e, 0x82, 0x4e, 0xfd, 0x75, 0xb7, 0x25, + 0x56, 0xf4, 0x66, 0xdc, 0x1f, 0x32, 0xd5, 0xc7, 0x4c, 0xed, 0x6d, 0x3e, 0xba, 0x36, 0xe0, 0x9b, + 0x93, 0x0a, 0x7b, 0x6a, 0xf7, 0xff, 0x45, 0x5e, 0xdf, 0x8b, 0x6f, 0xd2, 0x68, 0x0d, 0xa6, 0x36, + 0xf1, 0xab, 0x44, 0xbb, 0xd4, 0x7f, 0xa6, 0x8b, 0x5f, 0x35, 0x95, 0xb6, 0x55, 0xc7, 0x72, 0x0d, + 0x07, 0xed, 0xc1, 0xb4, 0xe0, 0x1a, 0x27, 0x65, 0x9e, 0xec, 0x35, 0x1b, 0x69, 0x21, 0xe5, 0xed, + 0x49, 0x8c, 0xe2, 0xd9, 0x9f, 0x67, 0x6b, 0x1b, 0x8a, 0xc9, 0xd9, 0xe3, 0xad, 0xbd, 0x3b, 0x68, + 0xed, 0x99, 0xd9, 0xa3, 0xad, 0xef, 0x83, 0x35, 0x6a, 0x8a, 0x92, 0x30, 0xd2, 0xb6, 0x70, 0x2f, + 0xbe, 0x18, 0xd4, 0x0f, 0x47, 0x2c, 0x86, 0xd2, 0x3f, 0xe9, 0x1e, 0x5b, 0xa3, 0xd6, 0x3c, 0x95, + 0x12, 0xef, 0xd8, 0x6d, 0x18, 0xe5, 0x45, 0xb1, 0xb7, 0xe0, 0xd1, 0xae, 0x14, 0x00, 0xd6, 0x1f, + 0xe6, 0xe0, 0x32, 0xb5, 0x2d, 0xba, 0xdd, 0xfd, 0x0e, 0xde, 0x0d, 0x74, 0x0f, 0xd7, 0xef, 0x69, + 0x8c, 0x66, 0x3e, 0xe5, 0x05, 0xd2, 0xaf, 0x8b, 0xbd, 0xfc, 0x51, 0x0e, 0x4a, 0xa6, 0xbe, 0x9d, + 0x2d, 0x87, 0xb9, 0xc3, 0x95, 0xb9, 0x3c, 0xb7, 0x9a, 0x30, 0x74, 0xd9, 0xa6, 0x18, 0x2c, 0x19, + 0x24, 0xf9, 0x5f, 0x63, 0x2d, 0xff, 0x2b, 0x07, 0xb3, 0xeb, 0x81, 0x2a, 0xe0, 0xf3, 0x89, 0xbb, + 0x63, 0x7a, 0x10, 0x49, 0xd7, 0xd5, 0x1c, 0x77, 0xe3, 0x5d, 0xe5, 0x85, 0x4d, 0x3e, 0xeb, 0xa5, + 0xa3, 0x16, 0x6c, 0xe5, 0x26, 0x0c, 0x6f, 0x12, 0x71, 0x6a, 0x88, 0xef, 0x3f, 0x86, 0x41, 0x8a, + 0xe8, 0x63, 0x18, 0xd2, 0x65, 0xf2, 0x03, 0x3d, 0x4c, 0x3c, 0xb9, 0x19, 0x1e, 0xfc, 0x92, 0x2f, + 0x19, 0x25, 0xa6, 0x3a, 0x06, 0xe7, 0x77, 0x1c, 0x7f, 0x1f, 0x87, 0xd6, 0x8f, 0xa0, 0xc4, 0xbd, + 0x7a, 0x98, 0xb5, 0x96, 0xfa, 0xfe, 0x04, 0x91, 0xe3, 0x56, 0x96, 0x27, 0xce, 0x12, 0x40, 0x3d, + 0x74, 0xfc, 0x70, 0xbd, 0xdb, 0xc6, 0x5f, 0xd3, 0xd1, 0x8e, 0xd8, 0x4a, 0x89, 0xf5, 0x1e, 0x8c, + 0xcb, 0x21, 0x50, 0x0d, 0x50, 0x91, 0x18, 0xe9, 0x70, 0x66, 0xb5, 0x47, 0x40, 0xe2, 0xe5, 0xcf, + 0x03, 0x98, 0x8b, 0x2d, 0x45, 0xf4, 0x28, 0x4d, 0x6a, 0x66, 0xd4, 0xc5, 0xd1, 0x96, 0xbf, 0xad, + 0x1a, 0x5c, 0x48, 0xac, 0x34, 0x42, 0xf4, 0xbd, 0x18, 0xd3, 0xee, 0xc9, 0x07, 0xa5, 0x5e, 0x5f, + 0x23, 0x65, 0x3b, 0x1b, 0x75, 0xe6, 0xc4, 0x4d, 0xca, 0x76, 0x36, 0xea, 0xd5, 0xf3, 0x6c, 0xe7, + 0x58, 0xff, 0x24, 0x4f, 0x95, 0xde, 0xc4, 0x1c, 0xc4, 0x6c, 0x85, 0xaa, 0xbd, 0xb2, 0x0a, 0xe3, + 0x74, 0xc4, 0x2b, 0xe2, 0x99, 0x42, 0xb6, 0x23, 0xca, 0xd8, 0x2f, 0x8e, 0xca, 0xe7, 0xa8, 0xf7, + 0x49, 0x84, 0x86, 0x3e, 0x83, 0xd1, 0xd5, 0x6e, 0x9b, 0x52, 0x18, 0x3a, 0x05, 0x05, 0x81, 0x44, + 0xd6, 0x81, 0x76, 0x99, 0x88, 0x42, 0xdc, 0xec, 0x64, 0x2b, 0x25, 0x74, 0x9a, 0xdd, 0x43, 0x97, + 0x39, 0x7c, 0x8d, 0xd8, 0xec, 0x07, 0x7d, 0xe2, 0x47, 0xba, 0x20, 0xe2, 0x0f, 0x8c, 0xdb, 0xf2, + 0x37, 0xb2, 0x60, 0x64, 0xcb, 0x6f, 0xf3, 0xa7, 0xbf, 0xd3, 0xcb, 0x93, 0x22, 0x18, 0x23, 0x29, + 0xb3, 0x59, 0x95, 0xf5, 0x3f, 0x72, 0x30, 0xff, 0x08, 0x87, 0xc6, 0x7d, 0xa3, 0xcd, 0x4a, 0xee, + 0x1b, 0xcf, 0x4a, 0xfe, 0x4d, 0x66, 0x45, 0x8e, 0x7a, 0x28, 0x6d, 0xd4, 0xc3, 0x69, 0xa3, 0x1e, + 0x49, 0x1f, 0xf5, 0x23, 0x38, 0xcf, 0x86, 0x8a, 0xae, 0xc3, 0xc8, 0x7a, 0x88, 0x0f, 0x23, 0x63, + 0x88, 0xea, 0x46, 0x67, 0xb3, 0x3a, 0xa2, 0x71, 0x6d, 0x38, 0x41, 0x28, 0x9e, 0x0d, 0x8c, 0xdb, + 0xe2, 0xa7, 0xf5, 0x33, 0xfa, 0xc0, 0x69, 0xc3, 0x6b, 0x1d, 0x28, 0x56, 0xe9, 0x51, 0x76, 0x2a, + 0xe3, 0xb7, 0x18, 0x04, 0x8a, 0xd5, 0xd8, 0x02, 0x02, 0x5d, 0x85, 0x89, 0xf5, 0xee, 0x43, 0xcf, + 0x6f, 0xe1, 0xad, 0x6e, 0x87, 0x51, 0x1f, 0xb3, 0xd5, 0x22, 0x6e, 0xc1, 0xe1, 0x2d, 0x44, 0x16, + 0x1c, 0x5a, 0x10, 0xb3, 0xe0, 0xb0, 0x78, 0x5d, 0x36, 0xab, 0xe3, 0x06, 0x22, 0xf2, 0x77, 0x96, + 0xf9, 0x46, 0xda, 0x79, 0x06, 0x01, 0xee, 0xc1, 0x65, 0x1b, 0xf7, 0x3a, 0x0e, 0x11, 0xb8, 0x0e, + 0x3d, 0x06, 0x2f, 0xc7, 0x7c, 0xd5, 0xe0, 0x67, 0xae, 0xfb, 0x3e, 0xc8, 0x2e, 0xe7, 0x33, 0xba, + 0x7c, 0x08, 0xd7, 0x1e, 0xe1, 0xd0, 0x18, 0x74, 0x2b, 0x1a, 0xfc, 0x1a, 0x8c, 0x05, 0xba, 0xbd, + 0x7e, 0x50, 0xbc, 0x2f, 0x7e, 0xa3, 0xc5, 0xe9, 0xc8, 0xbf, 0xac, 0xcf, 0xa1, 0x9c, 0xd6, 0xdc, + 0xc9, 0x7c, 0x5e, 0x5d, 0xb8, 0x9a, 0x4e, 0x40, 0x7e, 0x16, 0x85, 0x6d, 0x5f, 0xaa, 0xce, 0xd9, + 0xbd, 0xd5, 0xaf, 0x03, 0xf8, 0x1f, 0x56, 0x55, 0x78, 0xff, 0x7d, 0x83, 0xee, 0x36, 0xe9, 0xb5, + 0xb9, 0x4e, 0x20, 0x9a, 0xd7, 0x0a, 0x8c, 0x89, 0x32, 0x3e, 0xaf, 0xa9, 0xf1, 0xcc, 0xe8, 0x84, + 0xb6, 0x05, 0x01, 0x89, 0x66, 0xfd, 0x4c, 0x5c, 0x21, 0xe9, 0x18, 0x27, 0x7b, 0x3c, 0x73, 0x92, + 0x3b, 0x23, 0xcb, 0x83, 0xcb, 0x3a, 0x6d, 0xf5, 0xba, 0xa0, 0xa0, 0x5c, 0x17, 0xb0, 0x5b, 0x82, + 0xab, 0xba, 0xf9, 0x3a, 0xcf, 0xf7, 0x65, 0x54, 0x84, 0x96, 0xd4, 0x4b, 0x81, 0xc9, 0xe4, 0x6b, + 0xa3, 0x7b, 0x50, 0x32, 0x35, 0xa8, 0x18, 0x50, 0xa4, 0xe5, 0x99, 0xc7, 0xbe, 0xf8, 0xcd, 0x1c, + 0x58, 0x9a, 0x27, 0x94, 0x16, 0x9a, 0x4a, 0x1e, 0x99, 0x77, 0x04, 0x63, 0xa3, 0xbe, 0x57, 0xcc, + 0x87, 0xbe, 0x43, 0x0a, 0xd4, 0x27, 0x5e, 0x8c, 0xdb, 0xdd, 0x83, 0xd1, 0x4d, 0xfc, 0x75, 0xc4, + 0x7e, 0x98, 0x2c, 0x4a, 0xbd, 0xa3, 0x0e, 0xb0, 0xfa, 0x78, 0x54, 0x80, 0x11, 0x41, 0xe8, 0x7a, + 0x66, 0x1f, 0x78, 0xff, 0xf7, 0xa0, 0x10, 0xaf, 0xe3, 0x6b, 0x3f, 0x30, 0x4a, 0x17, 0x7d, 0x85, + 0x11, 0x0f, 0xce, 0x15, 0xd8, 0x09, 0x7a, 0xa7, 0xef, 0x3d, 0xfa, 0x08, 0x60, 0xc7, 0x0b, 0x9d, + 0x4e, 0x8d, 0xda, 0xb8, 0x28, 0xe3, 0x67, 0xa1, 0x9e, 0x42, 0x52, 0xda, 0x8c, 0xbf, 0x72, 0x55, + 0x80, 0xad, 0x1f, 0xd0, 0x13, 0x69, 0xee, 0xf4, 0xc9, 0x0e, 0x49, 0x0d, 0xae, 0xc7, 0x3c, 0x0f, + 0xde, 0x80, 0x48, 0x08, 0x73, 0x64, 0xfa, 0x65, 0x8c, 0xaf, 0x6f, 0x67, 0xd5, 0xff, 0x5d, 0x8e, + 0xb9, 0x4b, 0xaa, 0xcd, 0xf2, 0x85, 0xae, 0x01, 0x44, 0xa5, 0x31, 0x7f, 0x7c, 0x35, 0x64, 0x19, + 0x55, 0x5e, 0xa3, 0x90, 0x65, 0x81, 0xad, 0xa0, 0x7d, 0xbb, 0x2b, 0xf9, 0x80, 0xba, 0x1b, 0xc8, + 0xd6, 0x4f, 0x36, 0xef, 0xef, 0x0b, 0x1b, 0xcd, 0x29, 0xf1, 0x5e, 0xc0, 0xac, 0x16, 0xd5, 0x39, + 0x0a, 0x53, 0x1b, 0x45, 0xb3, 0x1e, 0xaf, 0x7e, 0xfa, 0xab, 0xa3, 0xf2, 0x87, 0xa7, 0x79, 0xfd, + 0x25, 0x68, 0xee, 0xc8, 0x47, 0x8e, 0xd6, 0x3c, 0x0c, 0xd5, 0xec, 0x0d, 0xca, 0xaa, 0xec, 0x0d, + 0xc9, 0xaa, 0xec, 0x0d, 0xeb, 0xbf, 0xe7, 0xa1, 0xcc, 0xde, 0x38, 0x53, 0x2f, 0x95, 0x48, 0x57, + 0x52, 0xdc, 0x5e, 0x4e, 0x6a, 0x21, 0x88, 0xbd, 0x61, 0xce, 0x9f, 0xe4, 0x0d, 0xf3, 0xff, 0xfb, + 0xe6, 0x56, 0x55, 0x16, 0xb1, 0x2f, 0x32, 0x0c, 0xb0, 0x5a, 0x93, 0x85, 0x20, 0xa5, 0x89, 0xa4, + 0x49, 0x63, 0xf8, 0x0d, 0x4c, 0x1a, 0xf7, 0x60, 0x94, 0xaa, 0x1e, 0xeb, 0xdb, 0xdc, 0xb7, 0x92, + 0x6e, 0x4f, 0x1a, 0x8e, 0xa0, 0xe9, 0xaa, 0x71, 0x4e, 0x04, 0x98, 0xf5, 0x77, 0xf2, 0x70, 0x35, + 0x7d, 0xce, 0x79, 0xdf, 0x56, 0xb4, 0xc0, 0xbc, 0x19, 0xfe, 0x38, 0xf4, 0xec, 0x28, 0x81, 0x79, + 0xe3, 0xc1, 0x78, 0xc5, 0xcb, 0xa0, 0xd8, 0x6d, 0x98, 0xf6, 0x60, 0x48, 0x84, 0x35, 0x67, 0x45, + 0x5a, 0x3c, 0x2e, 0x5e, 0x86, 0xf6, 0x60, 0x7e, 0xdb, 0x77, 0x5f, 0x3a, 0x21, 0x7e, 0x82, 0x5f, + 0x6f, 0x7b, 0x1d, 0xb7, 0xf5, 0x7a, 0xb5, 0xeb, 0xec, 0x75, 0x70, 0x9b, 0x3f, 0xf7, 0xba, 0x75, + 0x7c, 0x54, 0x7e, 0xab, 0xc7, 0x40, 0xc8, 0xc1, 0x6c, 0xf6, 0x28, 0x50, 0x13, 0x33, 0x28, 0x85, + 0x68, 0x1a, 0x21, 0xeb, 0xdf, 0xe6, 0x60, 0x81, 0x0a, 0xd4, 0xfc, 0x66, 0x41, 0x34, 0xfe, 0x46, + 0x6e, 0x99, 0xea, 0x00, 0xf9, 0x5e, 0xa4, 0x6e, 0x99, 0xda, 0xcb, 0x29, 0x5b, 0x03, 0x43, 0xeb, + 0x30, 0xc1, 0x7f, 0x2b, 0xe6, 0xe3, 0x39, 0x85, 0x61, 0xd1, 0xad, 0xce, 0xac, 0x47, 0x74, 0x63, + 0x73, 0x62, 0x4d, 0xfa, 0x9e, 0x58, 0xc5, 0xb5, 0x7e, 0x99, 0x87, 0xc5, 0x06, 0xf6, 0xdd, 0xe7, + 0xaf, 0x53, 0x06, 0xb3, 0x05, 0xb3, 0xa2, 0x88, 0x8e, 0x59, 0x3f, 0x62, 0x2c, 0x50, 0x8f, 0xe8, + 0x6a, 0x40, 0x00, 0x9a, 0xf2, 0xc4, 0x19, 0x11, 0x4f, 0xe1, 0x70, 0xf9, 0x2e, 0x8c, 0xc5, 0x22, + 0x0d, 0xd0, 0xf5, 0x17, 0x27, 0x54, 0x0f, 0xf3, 0x28, 0x8f, 0xea, 0x6f, 0xa5, 0x5f, 0x51, 0x72, + 0x4b, 0xc2, 0xa0, 0x08, 0x32, 0xf4, 0xc0, 0x92, 0xc3, 0xea, 0x28, 0xb5, 0x86, 0x03, 0xbb, 0x76, + 0xce, 0x4e, 0x6b, 0xa9, 0x3a, 0x01, 0xe3, 0x15, 0x7a, 0xed, 0x4a, 0x14, 0xf7, 0xff, 0x99, 0x87, + 0x25, 0xf1, 0x66, 0x27, 0x65, 0x9a, 0xbf, 0x84, 0x79, 0x51, 0x54, 0xe9, 0x11, 0x81, 0x01, 0xb7, + 0xf5, 0x99, 0x66, 0xc1, 0xb2, 0xc4, 0x4c, 0x3b, 0x1c, 0x26, 0x9a, 0xec, 0x34, 0xf4, 0xb3, 0x31, + 0x88, 0x7e, 0x66, 0x8a, 0xfb, 0x40, 0x0d, 0x93, 0x2a, 0xcf, 0xd4, 0x63, 0x41, 0xaa, 0xfc, 0xb3, + 0x9d, 0x30, 0xa8, 0x0e, 0x7f, 0x53, 0x83, 0xea, 0xda, 0xb9, 0xb8, 0x49, 0xb5, 0x3a, 0x0d, 0x93, + 0x9b, 0xf8, 0x55, 0x34, 0xef, 0xbf, 0x9d, 0x8b, 0x3d, 0x4d, 0x24, 0x12, 0x06, 0x7b, 0xa3, 0x98, + 0x8b, 0x42, 0x07, 0xd0, 0xa7, 0x89, 0xaa, 0x84, 0xc1, 0x40, 0xd7, 0x61, 0x94, 0xb9, 0xe8, 0xb6, + 0x4f, 0xa0, 0x9b, 0xcb, 0xc7, 0x37, 0x2d, 0x86, 0xc2, 0xd4, 0x74, 0x8e, 0x6f, 0x3d, 0x81, 0x6b, + 0xdc, 0x43, 0x5c, 0x5f, 0x7c, 0xda, 0xd0, 0x29, 0x3f, 0x5f, 0x96, 0x03, 0x4b, 0x8f, 0x70, 0x9c, + 0xf5, 0x68, 0x8f, 0x93, 0x3e, 0x87, 0x19, 0xad, 0x5c, 0x52, 0xa4, 0x52, 0xa9, 0xdc, 0x43, 0x92, + 0x74, 0x1c, 0xda, 0xba, 0x6a, 0x6a, 0x42, 0xed, 0xac, 0x85, 0x69, 0xd4, 0x2b, 0x3f, 0xba, 0x45, + 0x0e, 0x4e, 0xc1, 0xf5, 0x6e, 0x29, 0xe7, 0x9a, 0x71, 0x3c, 0x16, 0xff, 0x47, 0x7c, 0x79, 0x65, + 0xad, 0x35, 0x05, 0x13, 0x35, 0xaf, 0x1b, 0xe2, 0xaf, 0xa9, 0xa8, 0x63, 0x4d, 0xc3, 0xa4, 0xa8, + 0xea, 0xe0, 0x20, 0xb0, 0xfe, 0xde, 0x10, 0x58, 0x7c, 0x62, 0x4d, 0xd6, 0x53, 0x31, 0x1f, 0x7b, + 0x89, 0xce, 0xf2, 0x0f, 0xd5, 0x25, 0xd5, 0x46, 0x1c, 0xd5, 0xb2, 0x9d, 0x47, 0xe5, 0xbc, 0x56, + 0x54, 0xaa, 0x07, 0xf6, 0x8d, 0x8f, 0xfe, 0xc7, 0x29, 0x6c, 0x92, 0x1d, 0x36, 0x1a, 0x53, 0x3b, + 0x85, 0x4d, 0x6a, 0x74, 0xcd, 0x2c, 0xd3, 0xd6, 0xa6, 0x81, 0x8b, 0x1c, 0x48, 0xbe, 0xad, 0x94, + 0x35, 0xdc, 0x87, 0x89, 0x15, 0x34, 0x13, 0x79, 0x24, 0x54, 0x22, 0x68, 0x57, 0x9f, 0x4b, 0x7e, + 0x1e, 0x85, 0xd7, 0x86, 0x5a, 0xc5, 0xa8, 0xf6, 0x94, 0x12, 0x3d, 0x2d, 0x87, 0x06, 0xab, 0x58, + 0xc4, 0x7f, 0x5f, 0xfa, 0xe9, 0x93, 0x0f, 0xa9, 0xdb, 0xc1, 0xfc, 0x51, 0x8a, 0x58, 0x96, 0xbe, + 0xf9, 0xf6, 0x3b, 0x77, 0x22, 0x1e, 0x4d, 0xa3, 0x99, 0x62, 0x8e, 0x9e, 0x76, 0xe5, 0x62, 0xa2, + 0x6f, 0x1d, 0xe5, 0xc4, 0xeb, 0x84, 0xc4, 0x95, 0xf0, 0x69, 0x25, 0xc9, 0xaa, 0x76, 0x8b, 0x9b, + 0x4f, 0xb9, 0xc5, 0xd5, 0xee, 0xbc, 0xc2, 0x01, 0xd7, 0xba, 0x43, 0xdf, 0xfc, 0x1a, 0xe8, 0x9f, + 0x9f, 0x87, 0x0b, 0xdb, 0xce, 0xbe, 0xdb, 0x25, 0xbc, 0x47, 0x44, 0xe0, 0x45, 0x95, 0x44, 0x8e, + 0x86, 0x6c, 0x37, 0x58, 0x43, 0x12, 0x86, 0x65, 0x35, 0x5c, 0x7a, 0x3e, 0xed, 0xc5, 0xa8, 0x1e, + 0x14, 0xfd, 0x23, 0xcd, 0xea, 0x9f, 0xc8, 0x17, 0x42, 0xbd, 0xfb, 0xba, 0x5e, 0x3b, 0x96, 0xb7, + 0x84, 0x5a, 0xce, 0x93, 0x81, 0xe4, 0x47, 0xce, 0x38, 0x90, 0xfc, 0x8f, 0x60, 0xe2, 0x49, 0x7f, + 0x4f, 0xe6, 0xc4, 0x38, 0x3f, 0x30, 0x50, 0x39, 0x5d, 0x83, 0x83, 0xfe, 0x9e, 0x39, 0x2b, 0x86, + 0x4a, 0xcc, 0x18, 0x74, 0x7d, 0xf4, 0xd7, 0x12, 0x74, 0x3d, 0x35, 0xde, 0xff, 0xd8, 0xb7, 0x12, + 0xef, 0xdf, 0x10, 0x38, 0x7d, 0xfc, 0xec, 0x03, 0xa7, 0x6b, 0x41, 0xc5, 0xe1, 0x1b, 0x06, 0x15, + 0xaf, 0x02, 0x8c, 0xf9, 0x51, 0x68, 0xea, 0xe1, 0xc2, 0x88, 0xf5, 0xaf, 0x46, 0x61, 0x76, 0xc3, + 0x0d, 0x42, 0x71, 0x5e, 0x82, 0xe8, 0x63, 0x3a, 0x29, 0xca, 0x14, 0x65, 0x97, 0xcb, 0xbd, 0xac, + 0xbc, 0x19, 0xcb, 0xd8, 0xa4, 0x21, 0xa0, 0xf7, 0xd4, 0xbb, 0x95, 0xbc, 0x12, 0xb8, 0x33, 0x99, + 0x6c, 0x47, 0xbd, 0x74, 0x79, 0x47, 0x33, 0xed, 0x67, 0xda, 0x42, 0x1e, 0xc4, 0xed, 0xfd, 0x3c, + 0xae, 0x16, 0xfd, 0xcc, 0xe8, 0xb6, 0x87, 0xe8, 0x22, 0x60, 0x17, 0xce, 0xd3, 0x20, 0x38, 0xe2, + 0x41, 0xf0, 0xdb, 0x9c, 0xe5, 0x98, 0x26, 0x81, 0x85, 0xcb, 0xe1, 0xaf, 0x81, 0x69, 0xcc, 0xa8, + 0x0e, 0x2d, 0x50, 0x63, 0xdd, 0x30, 0x10, 0xb4, 0x03, 0x17, 0xb7, 0x7d, 0xdc, 0xe6, 0x9e, 0xb2, + 0x3d, 0x9f, 0x2b, 0x86, 0xec, 0x65, 0x1e, 0x0d, 0x62, 0xd9, 0x13, 0xd5, 0x4d, 0x2c, 0xeb, 0x55, + 0x9e, 0x6d, 0x40, 0x47, 0xab, 0x30, 0x5d, 0xc7, 0x8e, 0xdf, 0x7a, 0xf1, 0x04, 0xbf, 0x26, 0x9f, + 0x9a, 0xa0, 0x38, 0x1a, 0x45, 0x7e, 0x0d, 0x68, 0x0d, 0x19, 0x28, 0xad, 0x52, 0xaf, 0xdc, 0x75, + 0x24, 0xf4, 0x03, 0x38, 0x5f, 0xf7, 0xfc, 0xb0, 0xfa, 0x3a, 0x96, 0x7d, 0x89, 0x15, 0x56, 0x2f, + 0x8b, 0xe8, 0xb7, 0x81, 0xe7, 0x87, 0xcd, 0x3d, 0x75, 0xde, 0x38, 0x1e, 0x7a, 0x48, 0xe4, 0x58, + 0x22, 0x5b, 0x4b, 0xb3, 0x0d, 0x0b, 0x9c, 0xc1, 0x65, 0x55, 0x2a, 0x90, 0x9b, 0x6c, 0x37, 0x31, + 0x2c, 0xf4, 0x1a, 0x66, 0xf5, 0xd3, 0xf4, 0xd0, 0xed, 0x10, 0x16, 0x04, 0x5a, 0x1e, 0x13, 0x13, + 0x48, 0xf5, 0x16, 0xef, 0xe5, 0xd5, 0xf8, 0x99, 0x7d, 0x4e, 0xeb, 0xd5, 0x60, 0xde, 0x26, 0x7c, + 0xf4, 0x94, 0x06, 0x1f, 0x66, 0x33, 0x53, 0x09, 0x44, 0x54, 0x6a, 0x32, 0x08, 0x1a, 0x33, 0xaf, + 0x4f, 0x4f, 0x24, 0x9d, 0x51, 0x27, 0x88, 0x07, 0xa7, 0xb6, 0x13, 0xa8, 0x68, 0x1b, 0x2e, 0xec, + 0x06, 0x78, 0xdb, 0xc7, 0x2f, 0x5d, 0xfc, 0x4a, 0xd0, 0x9b, 0xa4, 0xf4, 0xe8, 0x72, 0x13, 0x7a, + 0x3d, 0x56, 0x6b, 0x22, 0x98, 0x44, 0x2e, 0x7d, 0x04, 0x13, 0xca, 0x7e, 0x33, 0x3c, 0x2d, 0x9f, + 0x55, 0x9f, 0x96, 0x8f, 0xab, 0x4f, 0xc8, 0xff, 0x3c, 0xc7, 0x4c, 0x8b, 0xca, 0x06, 0xe6, 0x76, + 0x8a, 0x2d, 0x18, 0x97, 0x85, 0xf2, 0x21, 0x83, 0x90, 0x75, 0x62, 0xdf, 0x4a, 0x76, 0x7c, 0xc4, + 0xe9, 0x56, 0x7b, 0x1b, 0xd1, 0xf8, 0x76, 0xcd, 0x7d, 0xbf, 0x15, 0x3d, 0x79, 0xe4, 0xcf, 0x33, + 0x7d, 0xa7, 0x75, 0x10, 0xd9, 0x5b, 0x7f, 0x4a, 0xce, 0x87, 0x5a, 0xc1, 0x93, 0x46, 0xcd, 0xeb, + 0x19, 0x7f, 0x78, 0xa5, 0xc8, 0x3b, 0x20, 0x5f, 0x7e, 0xb2, 0x62, 0xfd, 0xe0, 0xa8, 0x08, 0xd4, + 0xf9, 0x77, 0xc6, 0xb2, 0xd9, 0x8b, 0x3d, 0x63, 0x0f, 0xde, 0x4f, 0xbe, 0x39, 0xa3, 0xbc, 0x38, + 0x7a, 0x73, 0xa6, 0x4e, 0x63, 0xf4, 0xfa, 0x6c, 0x17, 0x16, 0x6c, 0x7c, 0xe8, 0xbd, 0xc4, 0x67, + 0x4b, 0xf6, 0xc7, 0x70, 0x59, 0x27, 0xb8, 0xdb, 0x6b, 0xd3, 0x50, 0x1d, 0xec, 0xd6, 0xd5, 0x18, + 0x72, 0x8f, 0x23, 0xb0, 0x90, 0x7b, 0x2c, 0x08, 0x13, 0xf9, 0x53, 0xe5, 0xb7, 0xb4, 0xce, 0xf2, + 0x60, 0x51, 0x27, 0x5e, 0x69, 0xb7, 0x69, 0x1e, 0x81, 0x96, 0xdb, 0x73, 0xba, 0x21, 0xda, 0x82, + 0x09, 0xe5, 0x67, 0x4c, 0x52, 0x52, 0x6a, 0xd8, 0xea, 0xf7, 0xa2, 0x02, 0x55, 0xa2, 0x53, 0xe0, + 0x2c, 0x0c, 0xe5, 0xf8, 0xf4, 0x90, 0x29, 0x53, 0xdb, 0xac, 0xc2, 0x94, 0xf2, 0x53, 0x2a, 0x1e, + 0x34, 0x9c, 0xa6, 0xd2, 0x82, 0x3e, 0x61, 0x3a, 0x8a, 0xd5, 0x82, 0x92, 0x69, 0xd2, 0x68, 0x08, + 0x89, 0xd7, 0x68, 0x35, 0x0a, 0x46, 0x31, 0xf8, 0xb6, 0x7b, 0x26, 0x2d, 0x10, 0x85, 0xf5, 0x37, + 0x87, 0x61, 0x81, 0x2f, 0xc6, 0x59, 0xae, 0x38, 0xfa, 0x19, 0x4c, 0x28, 0x6b, 0xcc, 0x27, 0xfd, + 0xaa, 0x70, 0x90, 0x49, 0xdb, 0x0b, 0x4c, 0xa2, 0xeb, 0xd3, 0x82, 0x66, 0x6c, 0xb9, 0x89, 0x44, + 0xa7, 0x6e, 0x9b, 0x0e, 0x4c, 0xeb, 0x0b, 0xcd, 0x85, 0xda, 0xeb, 0xc6, 0x46, 0x74, 0x50, 0x11, + 0xbf, 0xa9, 0xdd, 0x34, 0x2e, 0x37, 0xcd, 0x73, 0xa5, 0x6f, 0xa2, 0xaf, 0xe1, 0x42, 0x62, 0x95, + 0xb9, 0x92, 0x76, 0xd3, 0xd8, 0x60, 0x02, 0x9a, 0x45, 0x33, 0xf7, 0x69, 0x71, 0x6a, 0xb3, 0xc9, + 0x46, 0x50, 0x1b, 0x26, 0xd5, 0x85, 0xe7, 0x52, 0xf7, 0xb5, 0x8c, 0xa9, 0x64, 0x80, 0x4c, 0x28, + 0xe2, 0x73, 0x49, 0xd7, 0x5e, 0x4f, 0x0d, 0xa9, 0x51, 0xad, 0x8e, 0xc1, 0x79, 0xf6, 0x9b, 0xb0, + 0x80, 0x6d, 0x1f, 0x07, 0xb8, 0xdb, 0xc2, 0xaa, 0xaf, 0xd3, 0x37, 0x65, 0x01, 0xff, 0x26, 0x07, + 0x45, 0x13, 0xdd, 0x3a, 0xee, 0xb6, 0xd1, 0x36, 0x14, 0xe2, 0x0d, 0xf1, 0x5d, 0x6d, 0x89, 0xaf, + 0x42, 0x7a, 0x97, 0x88, 0x14, 0x9e, 0xe8, 0xe6, 0x26, 0x5c, 0x50, 0xca, 0x4e, 0xe9, 0x54, 0x96, + 0x44, 0x55, 0x15, 0xe9, 0x35, 0xea, 0x3b, 0xb7, 0xe2, 0x1d, 0x3a, 0x6e, 0x97, 0x08, 0x88, 0x4a, + 0xd8, 0x08, 0x88, 0x4a, 0xf9, 0xdc, 0x30, 0x65, 0x93, 0x96, 0x0a, 0x07, 0x4b, 0x09, 0x62, 0x7d, + 0x4a, 0x39, 0x38, 0x57, 0x51, 0xd8, 0xd3, 0x1e, 0x49, 0xec, 0x2a, 0x8c, 0xec, 0x6c, 0xd4, 0x6b, + 0x15, 0xfe, 0x50, 0x88, 0x3d, 0x25, 0xed, 0x04, 0xcd, 0x96, 0x63, 0xb3, 0x0a, 0xeb, 0x13, 0x1a, + 0x65, 0x8f, 0xc7, 0x68, 0x93, 0x78, 0x37, 0x60, 0x94, 0x17, 0x71, 0x4c, 0x7a, 0x35, 0xdd, 0xe1, + 0x50, 0xa2, 0xce, 0xda, 0x16, 0xf2, 0x75, 0x07, 0x3b, 0x81, 0xf2, 0x61, 0xfe, 0x90, 0x88, 0xe2, + 0xac, 0x8c, 0x7f, 0x97, 0xa7, 0x65, 0x08, 0x54, 0x5a, 0xcc, 0x94, 0x6f, 0x01, 0x63, 0xcb, 0xbf, + 0xac, 0x3f, 0xcd, 0xc3, 0xac, 0x08, 0x18, 0xa3, 0x19, 0x16, 0x06, 0x86, 0xba, 0xfc, 0xa1, 0x1e, + 0x93, 0xa7, 0x26, 0x63, 0xf2, 0x7c, 0x83, 0xe4, 0x1b, 0x3c, 0x9a, 0xcf, 0x09, 0x9f, 0xd1, 0x3d, + 0x91, 0xd2, 0xf7, 0xb0, 0x26, 0x7d, 0x9b, 0xc6, 0xa3, 0x49, 0xdf, 0x74, 0x59, 0x98, 0xf4, 0x2d, + 0x64, 0xee, 0x6f, 0x22, 0x30, 0x7d, 0x48, 0xb6, 0x96, 0xd6, 0xe4, 0x49, 0x5f, 0x58, 0x6d, 0xd0, + 0x47, 0xf7, 0x5b, 0xeb, 0x2b, 0x35, 0xb2, 0xa7, 0x79, 0x57, 0xc5, 0x0a, 0xdc, 0xa5, 0x5e, 0x73, + 0x9c, 0xa6, 0xba, 0x31, 0x29, 0x8b, 0xe5, 0xa1, 0x26, 0x14, 0x10, 0xeb, 0x81, 0x7c, 0xc2, 0x6f, + 0xa0, 0x96, 0x16, 0xb7, 0x75, 0x93, 0x06, 0x27, 0x78, 0x44, 0xd7, 0xeb, 0x2c, 0x3a, 0xf1, 0x87, + 0x39, 0x16, 0xed, 0xa0, 0xbe, 0xa5, 0x84, 0xb8, 0xef, 0x3e, 0xf7, 0x14, 0xbb, 0xaa, 0xd2, 0xcc, + 0x13, 0xb7, 0xdb, 0x56, 0xed, 0xaa, 0x34, 0x89, 0x21, 0x7f, 0xa8, 0xd8, 0x3c, 0x70, 0xbb, 0x6d, + 0x3b, 0x0e, 0x8d, 0x3e, 0x82, 0x29, 0xa5, 0x48, 0x7e, 0xa4, 0x59, 0x84, 0x40, 0x15, 0xdd, 0x6d, + 0xdb, 0x3a, 0xa4, 0xf5, 0xdb, 0x79, 0x58, 0xc8, 0x48, 0xc1, 0x42, 0x75, 0x40, 0x6a, 0x0e, 0x90, + 0x33, 0xc5, 0x63, 0x2b, 0xd3, 0x47, 0x99, 0x1a, 0x8f, 0x94, 0x80, 0xe8, 0x53, 0x98, 0x50, 0x33, + 0xc2, 0xe4, 0x95, 0x00, 0xde, 0xe6, 0x2c, 0x30, 0x2a, 0x38, 0x0a, 0x00, 0xa2, 0x9e, 0xf0, 0x77, + 0xca, 0x75, 0x22, 0xd1, 0x28, 0xe9, 0x64, 0xce, 0x24, 0xaf, 0x8d, 0xd2, 0x8c, 0xf5, 0xd7, 0xf3, + 0xb0, 0x94, 0x31, 0x0f, 0x75, 0x1c, 0xfe, 0xdf, 0x98, 0x8a, 0x58, 0x92, 0x9f, 0xa1, 0x6f, 0x29, + 0xc9, 0x8f, 0xf5, 0xfb, 0x79, 0xb8, 0xb4, 0xdb, 0x0b, 0xa8, 0x73, 0xeb, 0x7a, 0xf7, 0x25, 0xee, + 0x86, 0x9e, 0xff, 0x9a, 0x3a, 0xe7, 0xa1, 0xf7, 0x60, 0x64, 0x0d, 0x77, 0x3a, 0x1e, 0xff, 0xac, + 0x5d, 0x11, 0xa6, 0xee, 0x38, 0x34, 0x05, 0x5a, 0x3b, 0x67, 0x33, 0x68, 0xf4, 0x11, 0x8c, 0xaf, + 0x61, 0xc7, 0x0f, 0xf7, 0xb0, 0x23, 0x24, 0xd7, 0xcb, 0x1c, 0x55, 0x41, 0xe1, 0x00, 0x6b, 0xe7, + 0xec, 0x08, 0x1a, 0x2d, 0xc3, 0xf0, 0xb6, 0xd7, 0xdd, 0x97, 0xaf, 0xdf, 0x52, 0x1a, 0x24, 0x30, + 0x6b, 0xe7, 0x6c, 0x0a, 0x8b, 0x9e, 0xc2, 0x54, 0x65, 0x1f, 0x77, 0xc3, 0xa7, 0x38, 0x74, 0xda, + 0x4e, 0xe8, 0x70, 0x09, 0xe7, 0x46, 0x1a, 0xb2, 0x06, 0x4c, 0x13, 0xe7, 0xaa, 0x05, 0xd5, 0x11, + 0x18, 0x7a, 0x1a, 0xec, 0x5b, 0xbf, 0x97, 0x83, 0xe2, 0x8a, 0xf7, 0xaa, 0x6b, 0x9c, 0x98, 0x0f, + 0xf4, 0x89, 0x11, 0x2e, 0xd8, 0x06, 0xf8, 0xd8, 0xd4, 0xbc, 0x0b, 0xc3, 0xdb, 0x6e, 0x77, 0x3f, + 0xf6, 0x51, 0x37, 0xe0, 0x11, 0x28, 0x3a, 0x42, 0xb7, 0xbb, 0x2f, 0xba, 0xf4, 0x0e, 0xcc, 0xa7, + 0x40, 0xa2, 0x69, 0xc9, 0xde, 0x86, 0x29, 0x5b, 0x7b, 0x1b, 0xe6, 0x8c, 0x93, 0x96, 0x00, 0xfc, + 0x97, 0x39, 0xc3, 0xea, 0xb3, 0xbe, 0x16, 0x61, 0x54, 0x04, 0xa8, 0x65, 0xdf, 0x01, 0xf1, 0x93, 0x3a, 0x87, 0x8a, 0xd3, 0xc1, 0x43, 0x0b, 0xca, 0x43, 0xd0, 0x50, 0x1e, 0xfb, 0xb3, 0x3d, 0xfc, - 0xd1, 0x37, 0xd8, 0xa9, 0x92, 0x16, 0x69, 0x73, 0xcd, 0x0b, 0xc2, 0xae, 0xf4, 0x5d, 0xb0, 0xe5, - 0x6f, 0xeb, 0x3f, 0xe4, 0x69, 0x98, 0xc2, 0x8c, 0x65, 0x26, 0xe3, 0xde, 0xaa, 0xf3, 0x71, 0xe4, + 0xf1, 0x37, 0xd8, 0xa9, 0x92, 0x16, 0x69, 0x73, 0xcd, 0x0b, 0xc2, 0xae, 0xf4, 0x5d, 0xb0, 0xe5, + 0x6f, 0xeb, 0x3f, 0xe6, 0x69, 0x98, 0xc2, 0x8c, 0x65, 0x26, 0xe3, 0xde, 0xaa, 0xf3, 0x71, 0xe4, 0xb7, 0xea, 0x68, 0x11, 0xc6, 0xb7, 0xea, 0x5a, 0xfc, 0x5d, 0x3b, 0x2a, 0x40, 0xb7, 0x59, 0x06, - 0xb7, 0x8a, 0xdf, 0x3a, 0x70, 0x43, 0xdc, 0x0a, 0xfb, 0x3e, 0x67, 0x4e, 0x76, 0xa2, 0x1c, 0x59, - 0x30, 0xf9, 0xa8, 0xe3, 0xee, 0xb5, 0x04, 0x31, 0xd6, 0x39, 0xad, 0x0c, 0xdd, 0x84, 0x69, 0x9e, - 0x25, 0x92, 0x85, 0x27, 0xe6, 0x29, 0xd0, 0xec, 0x58, 0x29, 0x69, 0xb7, 0xe6, 0x75, 0x43, 0xc7, - 0xed, 0x62, 0xdf, 0xee, 0x77, 0x43, 0x97, 0xe7, 0x0c, 0x1f, 0xb7, 0x13, 0xe5, 0xe8, 0x1d, 0x98, - 0x93, 0x65, 0x5b, 0x7e, 0xeb, 0x00, 0x07, 0xa1, 0x4f, 0x43, 0xb9, 0xd3, 0x27, 0xe4, 0xb6, 0xb9, - 0x92, 0xb6, 0xd0, 0xf1, 0xfa, 0xed, 0xd5, 0xee, 0x4b, 0xd7, 0xf7, 0x58, 0x7e, 0xc1, 0x31, 0xde, - 0x42, 0xac, 0xdc, 0xda, 0x36, 0x9e, 0x80, 0x6f, 0xb0, 0x39, 0xac, 0x1a, 0xa0, 0x24, 0x07, 0x40, - 0x6f, 0xc3, 0x78, 0xbd, 0xbe, 0xa6, 0xdd, 0x28, 0xc4, 0x8d, 0xfc, 0x76, 0x04, 0x61, 0xbd, 0x07, - 0x97, 0x24, 0x11, 0x16, 0x63, 0x53, 0x71, 0x41, 0xe7, 0x29, 0x66, 0xa4, 0xe7, 0x7b, 0x54, 0x60, - 0x7d, 0x99, 0xc0, 0xab, 0xf7, 0x0f, 0x0f, 0x1d, 0xff, 0x35, 0xaa, 0xe8, 0x78, 0x43, 0x03, 0x79, - 0x5d, 0x75, 0xf8, 0x17, 0x47, 0xe5, 0x73, 0x2a, 0x71, 0x1b, 0x66, 0xb5, 0x13, 0x29, 0xba, 0x54, - 0x8a, 0x7f, 0x48, 0x94, 0xa3, 0xb2, 0x04, 0xc0, 0x83, 0xf7, 0x6e, 0x78, 0xfb, 0xdc, 0x33, 0x59, - 0x29, 0xb1, 0x1e, 0xc2, 0x5c, 0x8c, 0x26, 0x17, 0xac, 0xde, 0x06, 0x29, 0x0a, 0x52, 0xa2, 0x43, - 0xd5, 0x0b, 0xbf, 0x3a, 0x2a, 0x4f, 0x91, 0x6d, 0x71, 0x27, 0x0a, 0xa5, 0x25, 0xfe, 0xb2, 0x9e, - 0xaa, 0x12, 0x7b, 0xa5, 0xa3, 0xbd, 0x29, 0xb9, 0x0f, 0xe7, 0x59, 0x49, 0x2c, 0x60, 0x8d, 0x0a, - 0xcd, 0x47, 0xcb, 0x01, 0xad, 0x39, 0xea, 0x37, 0x46, 0x7f, 0x54, 0x22, 0x0f, 0x65, 0x6b, 0x97, - 0x45, 0x4f, 0x8c, 0x8a, 0x65, 0x50, 0x9c, 0xe1, 0x4a, 0xe4, 0x49, 0x2d, 0xcc, 0x92, 0x02, 0xae, - 0xeb, 0xbd, 0xea, 0xe0, 0xf6, 0x3e, 0xcd, 0x66, 0x53, 0x9d, 0xe4, 0x66, 0xc9, 0x61, 0x87, 0x10, - 0xa0, 0x68, 0xd6, 0x67, 0x30, 0x57, 0xeb, 0x60, 0xc7, 0x8f, 0xb7, 0x87, 0x6e, 0xc2, 0x28, 0x2d, - 0xd3, 0x2f, 0xd8, 0x1c, 0x52, 0x44, 0x2f, 0xd8, 0x78, 0x25, 0x11, 0x32, 0x59, 0x1c, 0x11, 0x75, - 0x48, 0x91, 0x7c, 0x37, 0x42, 0x7f, 0xc7, 0xbc, 0x8e, 0x0c, 0xa3, 0x67, 0x70, 0xd6, 0xa7, 0xf4, - 0x5a, 0xdb, 0x94, 0xc8, 0xe8, 0x64, 0x7e, 0x70, 0xff, 0x1f, 0x2c, 0x56, 0x7a, 0x3d, 0xdc, 0x6d, - 0x47, 0x88, 0x44, 0x0d, 0x3e, 0x99, 0x7f, 0x31, 0xaa, 0xc0, 0x08, 0x85, 0x96, 0xa6, 0x09, 0xde, - 0x5d, 0x43, 0x77, 0x28, 0x1c, 0x97, 0xb9, 0x69, 0x03, 0x0c, 0xd3, 0x6a, 0xc3, 0x7c, 0xbd, 0xbf, - 0x77, 0xe8, 0xb2, 0x9c, 0x41, 0xd4, 0x47, 0x5f, 0xb4, 0xbd, 0x2e, 0x02, 0xde, 0xb2, 0xc9, 0xb8, - 0x15, 0x25, 0x28, 0xa2, 0x77, 0x85, 0xdc, 0x6f, 0xff, 0xe5, 0xfd, 0x3b, 0x11, 0x2a, 0xfd, 0x1c, - 0xb2, 0x56, 0x68, 0x35, 0x0f, 0x8a, 0x6b, 0x5d, 0x84, 0x0b, 0xaa, 0x9a, 0xc7, 0x76, 0xc8, 0x1c, - 0x5c, 0xd4, 0xd5, 0x37, 0x56, 0xfc, 0x15, 0xcc, 0x32, 0xbb, 0x24, 0x8b, 0x40, 0xb4, 0x1c, 0x05, - 0xdb, 0xc9, 0x37, 0x96, 0x63, 0x37, 0x8c, 0xd4, 0x49, 0x54, 0xc6, 0x96, 0x6b, 0x2c, 0x33, 0xd7, - 0xa4, 0x97, 0xcb, 0x9a, 0x91, 0x20, 0xdf, 0x58, 0xae, 0x8e, 0x72, 0xdd, 0x83, 0x50, 0x67, 0xcb, - 0xff, 0x6b, 0xa1, 0xbe, 0x4c, 0xbd, 0x61, 0xd7, 0xb0, 0x43, 0x6f, 0xae, 0xcd, 0x3e, 0x85, 0xd3, - 0x90, 0x77, 0xdb, 0xe2, 0xd3, 0xe3, 0xb6, 0xad, 0x3f, 0xc9, 0xc1, 0x2d, 0x66, 0xb6, 0x30, 0xe3, - 0x51, 0x6d, 0x22, 0x05, 0x19, 0x7d, 0x00, 0x2c, 0x89, 0x07, 0xb7, 0x3b, 0x5a, 0xbc, 0xe7, 0x59, - 0x94, 0x18, 0x02, 0xaa, 0xc0, 0xa4, 0x7a, 0xc5, 0x1d, 0x7b, 0xb3, 0x9c, 0x62, 0x57, 0xb0, 0x27, - 0x0e, 0x9f, 0x3b, 0xf2, 0xda, 0xfb, 0x05, 0x2c, 0xac, 0x7e, 0x4d, 0x36, 0x04, 0x0f, 0x88, 0xcd, - 0xef, 0x06, 0x22, 0x9f, 0xb5, 0x99, 0x1d, 0xbe, 0x63, 0xf4, 0x6f, 0x43, 0xbc, 0x98, 0x7c, 0x33, - 0x39, 0x09, 0x9f, 0xaa, 0x40, 0xec, 0x3b, 0xa1, 0x95, 0x59, 0xff, 0x3e, 0x07, 0x8b, 0xe6, 0xd6, - 0x38, 0x63, 0x59, 0x87, 0x0b, 0x35, 0xa7, 0xeb, 0x75, 0xdd, 0x96, 0xd3, 0xa9, 0xb7, 0x0e, 0x70, - 0xbb, 0xdf, 0x11, 0x37, 0xff, 0x92, 0xcb, 0x10, 0x19, 0x80, 0xa3, 0x0b, 0x10, 0x3b, 0x89, 0x85, - 0xde, 0x83, 0x4b, 0xf4, 0xde, 0x95, 0xf1, 0xde, 0x0e, 0xf6, 0x25, 0x3d, 0xd6, 0xb3, 0x94, 0x5a, - 0x74, 0x0f, 0x2e, 0x32, 0x61, 0xa5, 0xbd, 0xdb, 0x75, 0x43, 0x89, 0xc4, 0x44, 0x05, 0x53, 0x95, - 0xf5, 0x53, 0x98, 0xaf, 0x04, 0x81, 0x1b, 0x84, 0x0e, 0x11, 0x4e, 0x02, 0x72, 0x90, 0xc4, 0xf4, - 0x7d, 0x17, 0x66, 0x5a, 0x5e, 0xf7, 0x25, 0xf6, 0x03, 0x87, 0xab, 0x0a, 0x7c, 0xfa, 0xa6, 0xd5, - 0xe2, 0xf5, 0x36, 0xf9, 0xa6, 0xf4, 0x35, 0xef, 0x37, 0x5b, 0xfe, 0xb6, 0xfe, 0x6d, 0x0e, 0x0a, - 0xf1, 0x06, 0xce, 0x84, 0x32, 0x42, 0x40, 0x53, 0x89, 0x88, 0x90, 0xa4, 0xe4, 0x6f, 0xf4, 0x08, - 0x26, 0xb9, 0xb3, 0x52, 0x93, 0xca, 0x2a, 0xc3, 0xa7, 0x78, 0x80, 0x34, 0xc1, 0x31, 0x49, 0x1d, - 0x11, 0x27, 0x7a, 0xce, 0xeb, 0x8e, 0xe7, 0xf0, 0xb4, 0x10, 0xb6, 0xf8, 0x69, 0xd5, 0x69, 0x08, - 0xd7, 0xf8, 0x90, 0xa2, 0x5d, 0xf0, 0x00, 0xc6, 0x0e, 0x79, 0x99, 0x7c, 0x54, 0xc1, 0x9f, 0xe1, - 0xc7, 0xe7, 0x59, 0x02, 0x5a, 0x9f, 0xd2, 0x63, 0x2b, 0x01, 0x6a, 0xca, 0x2c, 0x04, 0xca, 0x97, - 0xbb, 0xaf, 0xf9, 0x22, 0x29, 0xb3, 0xfc, 0x9b, 0x39, 0x2a, 0xa8, 0x45, 0x53, 0xd7, 0x7d, 0xee, - 0x25, 0x8e, 0xea, 0x2c, 0x8c, 0x84, 0x6e, 0x28, 0xf7, 0x10, 0xfb, 0x91, 0x98, 0xb2, 0xa1, 0x37, - 0x9c, 0x32, 0x6b, 0x8f, 0x3e, 0xe5, 0x49, 0x1b, 0x83, 0xfc, 0xf8, 0x4e, 0xa9, 0x4b, 0x1c, 0x9f, - 0xa2, 0xf8, 0x18, 0x6c, 0x1d, 0xda, 0xfa, 0x2b, 0x39, 0xe9, 0x1c, 0x65, 0x6a, 0xe7, 0x04, 0x53, - 0x95, 0x18, 0x6f, 0xfe, 0x4d, 0xc7, 0xfb, 0x2e, 0x5c, 0xcf, 0xec, 0x0a, 0x1f, 0x71, 0x9c, 0xdb, - 0xfe, 0x56, 0x0e, 0x6e, 0x32, 0x6e, 0x6b, 0xc4, 0x53, 0x6d, 0x33, 0x67, 0x72, 0x4c, 0xe4, 0xaa, - 0x0f, 0x29, 0xab, 0x7e, 0xfb, 0x36, 0x8c, 0x6f, 0xf5, 0x30, 0x4f, 0x95, 0x3d, 0x06, 0xc3, 0xeb, - 0x9b, 0xeb, 0x3b, 0x2c, 0x51, 0xdf, 0xf6, 0xee, 0x4e, 0x21, 0x87, 0x00, 0xce, 0xaf, 0xac, 0x6e, - 0xac, 0xee, 0xac, 0x16, 0xf2, 0xb7, 0x9b, 0xaa, 0x47, 0x10, 0x5a, 0x80, 0xf9, 0x95, 0xd5, 0xc6, - 0x7a, 0x6d, 0xb5, 0xb9, 0xf3, 0xa3, 0xed, 0xd5, 0xa6, 0x1e, 0xea, 0x69, 0x16, 0x0a, 0x6a, 0xe5, - 0xce, 0xd6, 0xce, 0x36, 0xcb, 0xbe, 0xa7, 0x96, 0x3e, 0x5b, 0xad, 0x56, 0x76, 0x77, 0xd6, 0x36, - 0x0b, 0x43, 0xd6, 0xf0, 0x58, 0xbe, 0x90, 0xbf, 0xfd, 0x33, 0xcd, 0x5d, 0x08, 0x2d, 0x42, 0x91, - 0x83, 0xef, 0xd6, 0x2b, 0x8f, 0xd2, 0x9b, 0x60, 0xb5, 0x4f, 0x1f, 0x56, 0x0a, 0x39, 0x74, 0x05, - 0x2e, 0x6b, 0xa5, 0xdb, 0x95, 0x7a, 0xfd, 0xd9, 0x96, 0xbd, 0xb2, 0xb1, 0x5a, 0xaf, 0x17, 0xf2, - 0xb7, 0x1b, 0x5a, 0x78, 0x20, 0xd2, 0xc2, 0xd3, 0x87, 0x95, 0xa6, 0xbd, 0xfa, 0xf9, 0xee, 0xba, - 0xbd, 0xba, 0x92, 0x6c, 0x41, 0xab, 0xfd, 0xd1, 0x6a, 0xbd, 0x90, 0x43, 0x17, 0x61, 0x46, 0x2b, - 0xdd, 0xdc, 0x2a, 0xe4, 0x6f, 0xdf, 0xe4, 0x2f, 0x0f, 0xd1, 0x34, 0xc0, 0xca, 0x6a, 0xbd, 0xb6, - 0xba, 0xb9, 0xb2, 0xbe, 0xf9, 0xa8, 0x70, 0x0e, 0x4d, 0xc1, 0x78, 0x45, 0xfe, 0xcc, 0x2d, 0xff, - 0xc1, 0xef, 0xe5, 0x60, 0x82, 0x7c, 0xcf, 0x84, 0xeb, 0x47, 0x28, 0xee, 0x3e, 0x8d, 0x9b, 0x00, - 0xbd, 0xa5, 0xe5, 0x36, 0xc8, 0xda, 0xeb, 0xa5, 0xdb, 0x27, 0x01, 0xe5, 0x7b, 0xb1, 0x4b, 0x2d, - 0x92, 0xe6, 0x23, 0x8a, 0x22, 0x73, 0x6d, 0x36, 0x23, 0x2a, 0xdd, 0x1a, 0x0c, 0xc8, 0xdb, 0xfb, - 0x92, 0x89, 0xe0, 0x71, 0x5e, 0x89, 0x96, 0xd2, 0x38, 0x22, 0x6f, 0xe1, 0xba, 0xa1, 0x85, 0x04, - 0xa3, 0x5d, 0x87, 0x4b, 0xb1, 0x31, 0x8b, 0xcf, 0x4b, 0x1a, 0xc3, 0x2d, 0x5d, 0x4a, 0x9c, 0xf2, - 0x55, 0x22, 0x44, 0xa1, 0x03, 0x28, 0x0f, 0x38, 0x92, 0xe8, 0x6d, 0xa9, 0x7f, 0x9d, 0xe4, 0xe8, - 0xa6, 0xb6, 0xf4, 0x95, 0xa2, 0xf3, 0xf1, 0xef, 0x37, 0x4f, 0x9e, 0x90, 0xaa, 0xe0, 0x51, 0x91, - 0xb6, 0x94, 0x61, 0xd2, 0xa1, 0x00, 0xb7, 0x72, 0xf7, 0x72, 0xc8, 0xa6, 0x97, 0x19, 0x31, 0xa5, - 0x52, 0x52, 0x36, 0x2b, 0xa9, 0xa5, 0x94, 0x6a, 0xa1, 0x8b, 0x3e, 0x86, 0x29, 0xa2, 0xeb, 0xc9, - 0x5a, 0xb4, 0x10, 0x87, 0x57, 0xd4, 0xcb, 0xd2, 0xa2, 0xb9, 0x52, 0x46, 0x39, 0x9d, 0xa4, 0xfd, - 0x23, 0x53, 0xd7, 0xc2, 0x01, 0x9a, 0x93, 0x39, 0xfe, 0x59, 0x09, 0xf3, 0xe6, 0x28, 0x5d, 0x88, - 0x15, 0x37, 0xee, 0xdf, 0xcb, 0xa1, 0x3a, 0x7d, 0x15, 0xab, 0x29, 0x8d, 0x48, 0xb8, 0x81, 0x25, - 0xb5, 0x49, 0xd6, 0x9b, 0x72, 0xb4, 0x8f, 0xcc, 0xda, 0xe6, 0x26, 0xa0, 0xa4, 0x2e, 0x86, 0xae, - 0x46, 0x4b, 0x61, 0x56, 0xd3, 0x52, 0x97, 0x77, 0x15, 0xa6, 0xf9, 0x9e, 0xe4, 0xda, 0x21, 0xca, - 0xd2, 0x2f, 0x53, 0xc9, 0x3c, 0xa2, 0xf3, 0x24, 0x35, 0x4c, 0x54, 0x52, 0xce, 0x43, 0x4c, 0xed, - 0x2c, 0x2d, 0x18, 0xeb, 0xf8, 0xf8, 0x1e, 0xc2, 0xb4, 0xae, 0xac, 0x22, 0xb1, 0x40, 0x46, 0x1d, - 0x36, 0xb5, 0x43, 0x4d, 0x98, 0x7f, 0xea, 0xb8, 0xd4, 0x7e, 0xc3, 0x2f, 0x23, 0xc5, 0x55, 0x22, - 0x2a, 0x67, 0xdc, 0x2d, 0xd6, 0x71, 0xb7, 0x5d, 0x1a, 0x14, 0x0f, 0x82, 0xee, 0xdc, 0xba, 0xd0, - 0xb9, 0xf4, 0xab, 0x58, 0x64, 0xe9, 0x49, 0x5e, 0x4c, 0xb7, 0xeb, 0xa5, 0x34, 0x87, 0x10, 0xf4, - 0x94, 0x2a, 0x7d, 0x31, 0x8a, 0xca, 0x9e, 0x38, 0x35, 0xb9, 0x22, 0xf5, 0x20, 0x0f, 0xdd, 0xb8, - 0x67, 0x47, 0x80, 0x52, 0x26, 0x2e, 0x95, 0xd8, 0xbd, 0x1c, 0xfa, 0x0a, 0xac, 0x34, 0x72, 0xcf, - 0xdc, 0xf0, 0x80, 0x7b, 0x36, 0x2d, 0x18, 0x09, 0xf0, 0x83, 0x92, 0x41, 0xdd, 0x86, 0x59, 0x93, - 0x0f, 0x8a, 0x9c, 0xd0, 0x0c, 0x07, 0x95, 0xd4, 0x5d, 0x60, 0x13, 0xd5, 0xb5, 0x9d, 0xbe, 0x48, - 0x19, 0x2e, 0x10, 0xa9, 0x34, 0x3f, 0x81, 0x69, 0xb2, 0x4b, 0x9e, 0x60, 0xdc, 0xab, 0x74, 0xdc, - 0x97, 0x38, 0x40, 0x22, 0x56, 0x8a, 0x2c, 0x4a, 0xc3, 0xbd, 0x95, 0x43, 0xdf, 0x83, 0x89, 0x67, - 0x4e, 0xd8, 0x3a, 0xe0, 0x4f, 0xfb, 0xc5, 0xcb, 0x7f, 0x5a, 0x56, 0x12, 0xbf, 0x68, 0xe5, 0xbd, - 0x1c, 0xfa, 0x01, 0x8c, 0x3e, 0xc2, 0x21, 0x75, 0xc3, 0xbd, 0x26, 0xaf, 0x63, 0x99, 0xeb, 0xd3, - 0x7a, 0x57, 0x3a, 0x29, 0x8a, 0x0e, 0xc7, 0x2d, 0x7e, 0xe8, 0x2e, 0x00, 0x63, 0x08, 0x94, 0x42, - 0xbc, 0xba, 0x94, 0xe8, 0x36, 0x7a, 0x44, 0xe4, 0xa6, 0x0e, 0x0e, 0xf1, 0x49, 0x9b, 0x4c, 0x9b, - 0xa3, 0x0d, 0x98, 0x96, 0x81, 0x61, 0x37, 0xe9, 0x3b, 0x0e, 0x2b, 0x46, 0x2c, 0x38, 0x05, 0xb5, - 0x8f, 0xc8, 0xa9, 0x60, 0xd7, 0xa3, 0x32, 0x8e, 0x0c, 0x4a, 0x8b, 0x2c, 0x23, 0x27, 0x91, 0x81, - 0x29, 0xb8, 0x6b, 0x5e, 0x10, 0xea, 0xb8, 0xb2, 0xc4, 0x8c, 0x8b, 0xa1, 0xa4, 0xb6, 0xab, 0xc7, - 0x94, 0x89, 0x78, 0x6e, 0x5a, 0x28, 0x9c, 0xd2, 0xb5, 0x0c, 0x08, 0xc6, 0xee, 0x28, 0x27, 0x59, - 0x81, 0x8b, 0xa2, 0x99, 0xad, 0x1e, 0xee, 0xd6, 0xeb, 0x6b, 0x34, 0xa4, 0x88, 0xb8, 0xf0, 0x51, - 0xca, 0x04, 0x61, 0x94, 0xac, 0x22, 0x5f, 0x3d, 0x2d, 0x96, 0x49, 0xf4, 0xd5, 0x33, 0x04, 0x9b, - 0x89, 0xbe, 0x7a, 0xc6, 0xf0, 0x27, 0x4f, 0x98, 0x7d, 0x52, 0xcb, 0x61, 0xde, 0x58, 0x46, 0xc2, - 0x27, 0x5b, 0xab, 0xe0, 0x07, 0xfb, 0x92, 0xa9, 0xae, 0xf1, 0xe0, 0x5e, 0x0e, 0xad, 0xc2, 0x45, - 0xf9, 0xec, 0x26, 0xaa, 0x42, 0x29, 0x08, 0xa9, 0x9b, 0xe0, 0x33, 0xb8, 0xc8, 0xb7, 0x94, 0x46, - 0xa6, 0x20, 0xb9, 0x03, 0xbf, 0xa3, 0x4d, 0x25, 0xf0, 0x18, 0xe6, 0xea, 0xb1, 0x41, 0x31, 0x8f, - 0xa2, 0xcb, 0x3a, 0x09, 0x25, 0x5d, 0x6c, 0x2a, 0xad, 0x27, 0x80, 0x98, 0x09, 0x50, 0x90, 0x7b, - 0xe9, 0xe2, 0x57, 0xe8, 0x4a, 0x6c, 0x48, 0xa4, 0x90, 0x82, 0x51, 0xf6, 0x92, 0x36, 0x45, 0x68, - 0x87, 0xa5, 0xbb, 0x61, 0xa9, 0xe8, 0x9c, 0x9e, 0xb3, 0xe7, 0x76, 0xdc, 0xd0, 0xc5, 0x64, 0x87, - 0xa9, 0x08, 0x6a, 0x95, 0x58, 0xc6, 0xcb, 0xa9, 0x10, 0xe8, 0x53, 0x98, 0x7a, 0x84, 0xc3, 0x28, - 0x23, 0x2e, 0x9a, 0x4f, 0xe4, 0xd0, 0xe5, 0x4b, 0x27, 0x1e, 0x79, 0xea, 0x69, 0x78, 0xd7, 0xa1, - 0xc0, 0xb8, 0xa3, 0x42, 0xe2, 0x4a, 0x82, 0x04, 0x07, 0x71, 0x7c, 0xe7, 0x30, 0x48, 0x9d, 0xad, - 0xbb, 0xec, 0xca, 0x0e, 0x89, 0x6d, 0xab, 0x8a, 0x5f, 0x17, 0xb5, 0x32, 0x19, 0x94, 0x6b, 0xce, - 0x98, 0x0a, 0x16, 0x29, 0x62, 0x76, 0x6a, 0x7e, 0xd7, 0x12, 0x8a, 0x3f, 0xc1, 0x6c, 0x3c, 0x40, - 0x32, 0x3b, 0x88, 0x81, 0xe8, 0x4d, 0xed, 0x8b, 0x7d, 0x3a, 0xba, 0x9f, 0xc2, 0xb8, 0xcc, 0x29, - 0x2a, 0xd9, 0x4a, 0x3c, 0x23, 0x6b, 0xa9, 0x98, 0xac, 0xe0, 0x23, 0xfd, 0x84, 0x65, 0x10, 0xd6, - 0xf1, 0xe3, 0x69, 0x37, 0x53, 0x27, 0xf6, 0x43, 0x98, 0x50, 0x12, 0x6e, 0xca, 0x8d, 0x9c, 0x4c, - 0xc2, 0x59, 0x9a, 0x52, 0xfa, 0xde, 0x58, 0xbe, 0x97, 0x43, 0x77, 0xe9, 0xa7, 0x85, 0xbe, 0x41, - 0x9a, 0x8b, 0xd0, 0x94, 0x54, 0x7a, 0x31, 0x14, 0xf4, 0x3e, 0x0d, 0xd5, 0x52, 0xeb, 0xfb, 0x3e, - 0xee, 0x32, 0xbc, 0x34, 0x09, 0x22, 0x86, 0xf8, 0x29, 0x65, 0x26, 0x0a, 0x22, 0x73, 0xd1, 0x19, - 0x84, 0xcd, 0x42, 0xfd, 0xde, 0xcb, 0xa1, 0x07, 0x30, 0x26, 0xf2, 0x73, 0xa3, 0x4b, 0x7a, 0x57, - 0xd3, 0x87, 0xf7, 0x00, 0x80, 0x4d, 0x36, 0xed, 0xa9, 0x5e, 0x9d, 0x3a, 0x9d, 0x0f, 0xc8, 0xf7, - 0xb2, 0x7d, 0x4a, 0xa4, 0x4f, 0xc5, 0x37, 0x93, 0x22, 0x15, 0xb5, 0x25, 0x54, 0xa7, 0x33, 0x0d, - 0x9f, 0x08, 0xbc, 0x5a, 0xda, 0xf0, 0x48, 0xe0, 0x35, 0x65, 0x13, 0x4f, 0xa5, 0xb3, 0x0e, 0x85, - 0x4a, 0x8b, 0xf2, 0x71, 0x99, 0x9e, 0x50, 0x6a, 0x1b, 0xf1, 0x0a, 0x41, 0x6b, 0x2e, 0x9e, 0xed, - 0x70, 0x03, 0x3b, 0x34, 0x7a, 0xcd, 0xbc, 0x94, 0x09, 0x62, 0x55, 0x66, 0x8c, 0x0c, 0xed, 0x62, - 0xb6, 0x46, 0xf4, 0xa1, 0xce, 0x37, 0x23, 0xf3, 0x11, 0xe5, 0x65, 0x4a, 0xea, 0xc6, 0x4b, 0x71, - 0x7c, 0xa9, 0x87, 0x09, 0xf7, 0x48, 0x09, 0x5a, 0x81, 0x19, 0x1e, 0x2b, 0x43, 0x4e, 0x4b, 0x1a, - 0x76, 0x5a, 0xf3, 0xef, 0xc3, 0xf4, 0x2a, 0xe1, 0xf5, 0xfd, 0xb6, 0xcb, 0x22, 0x76, 0x21, 0x3d, - 0x04, 0x53, 0x2a, 0xe2, 0x9a, 0xc8, 0x38, 0xac, 0xe4, 0x34, 0x94, 0xa7, 0x34, 0x99, 0x36, 0xb2, - 0x34, 0x2b, 0xc8, 0xaa, 0xe9, 0x0f, 0xb9, 0x9e, 0x3c, 0x9f, 0x92, 0x45, 0x10, 0xdd, 0xd0, 0x74, - 0xbf, 0xb4, 0x54, 0x80, 0x06, 0x69, 0xef, 0x0b, 0x25, 0xaf, 0x4a, 0x0a, 0xcd, 0xec, 0xf4, 0x82, - 0xa9, 0xe3, 0x96, 0x31, 0x76, 0x8c, 0x69, 0x00, 0xa5, 0xad, 0x68, 0x70, 0xaa, 0xc0, 0xd4, 0x16, - 0xa8, 0x6e, 0xad, 0x67, 0xa9, 0x93, 0x36, 0x9a, 0x94, 0x64, 0x7a, 0x8a, 0x6e, 0x9d, 0x92, 0xde, - 0xee, 0x31, 0xdd, 0x66, 0x51, 0xf2, 0x15, 0xa4, 0x6a, 0xaa, 0xf1, 0xdc, 0x33, 0x52, 0x84, 0x32, - 0xa7, 0xaa, 0x7b, 0x44, 0xd9, 0xa5, 0x92, 0xc8, 0x25, 0x95, 0xe1, 0x5d, 0x31, 0xd1, 0x09, 0x94, - 0x6f, 0xe1, 0x4c, 0x2c, 0xe9, 0x9b, 0x34, 0x8f, 0x98, 0xd3, 0xce, 0x95, 0x96, 0xd2, 0xaa, 0x39, - 0xc5, 0xba, 0xc8, 0x19, 0xae, 0x8c, 0x74, 0x49, 0xb7, 0xc9, 0x25, 0x06, 0x5b, 0x4e, 0xad, 0x97, - 0x73, 0x57, 0x88, 0x27, 0xe9, 0x91, 0x44, 0x53, 0xb2, 0xf7, 0x64, 0xb0, 0xc4, 0x59, 0x75, 0x6b, - 0x0c, 0x9c, 0xc1, 0x34, 0x3a, 0x3b, 0x30, 0x67, 0xcc, 0xa9, 0x23, 0xc5, 0x88, 0xac, 0x8c, 0x3b, - 0xa9, 0x54, 0xb1, 0xb0, 0xe2, 0xc5, 0xb3, 0x08, 0xa1, 0xef, 0xe8, 0xaa, 0xbf, 0x39, 0xc9, 0x50, - 0xe9, 0xc6, 0x00, 0x28, 0x3e, 0xa1, 0x5f, 0xd1, 0xcf, 0x66, 0xa2, 0x8d, 0x6b, 0x8a, 0x31, 0x20, - 0xa5, 0x01, 0x2b, 0x0b, 0x44, 0xee, 0x81, 0x59, 0x53, 0x5a, 0xbf, 0xd4, 0x29, 0xbe, 0x9e, 0x4e, - 0x33, 0xda, 0x58, 0x0d, 0x11, 0xd9, 0x26, 0x75, 0x66, 0x32, 0xd3, 0x2f, 0x65, 0x68, 0x93, 0x25, - 0xb9, 0x1f, 0x4e, 0xde, 0xe5, 0x74, 0xcb, 0xd0, 0xac, 0x29, 0xe9, 0x57, 0xdc, 0x70, 0x63, 0xca, - 0xe9, 0x24, 0xa7, 0x21, 0x33, 0x6b, 0x58, 0x83, 0x19, 0x71, 0x74, 0xea, 0xaa, 0x11, 0xc7, 0x48, - 0xfa, 0x6a, 0x3a, 0x40, 0xb4, 0x23, 0x0c, 0xd9, 0x0b, 0xe5, 0x8e, 0x48, 0xcf, 0xa3, 0x28, 0x77, - 0x44, 0x56, 0xf2, 0x43, 0x5b, 0x1c, 0xba, 0x94, 0x69, 0xc9, 0x48, 0x75, 0x95, 0xa1, 0x72, 0x15, - 0xa3, 0x85, 0x8b, 0x75, 0xfb, 0xb4, 0xcb, 0xf6, 0x15, 0x5c, 0x4e, 0x4d, 0x6b, 0x25, 0x6f, 0x02, - 0x06, 0x25, 0xbe, 0xca, 0xe8, 0xe9, 0x94, 0x96, 0x91, 0x4a, 0x5a, 0xb1, 0x62, 0xc9, 0xaf, 0x12, - 0xac, 0xdf, 0x90, 0x19, 0x8b, 0xb1, 0x7e, 0x25, 0xbb, 0xd5, 0x49, 0x58, 0xbf, 0x29, 0x19, 0x96, - 0xe4, 0xa9, 0x4a, 0xbf, 0x84, 0x48, 0x17, 0xaf, 0x38, 0x0d, 0x4f, 0x3d, 0x49, 0xd7, 0xd2, 0xe8, - 0xac, 0x50, 0x95, 0x43, 0x24, 0xbb, 0x42, 0x97, 0xb5, 0x69, 0xd2, 0x3e, 0xb7, 0x25, 0x6d, 0x70, - 0xfa, 0x97, 0xb6, 0x46, 0xcd, 0xc5, 0x32, 0xb9, 0x56, 0x6a, 0x2f, 0x16, 0x92, 0x34, 0x34, 0x53, - 0xb1, 0x9c, 0x05, 0xd6, 0x9b, 0xc5, 0xf8, 0xe4, 0x68, 0x1d, 0x4a, 0x1f, 0x12, 0x52, 0xa7, 0x66, - 0x40, 0x97, 0xd2, 0x45, 0xdd, 0x8b, 0x4c, 0x79, 0x60, 0xa1, 0x27, 0xc5, 0x03, 0xf4, 0x4b, 0xd2, - 0xee, 0xa5, 0x94, 0x66, 0x98, 0x39, 0xb6, 0xa9, 0x33, 0xa9, 0x21, 0x4f, 0x98, 0xe4, 0xa1, 0x99, - 0x69, 0xc4, 0x0c, 0x62, 0x9e, 0xe4, 0xca, 0xa9, 0x14, 0x33, 0x13, 0x87, 0xa5, 0xf6, 0xf4, 0xa7, - 0x0a, 0x57, 0x4e, 0x64, 0x03, 0x43, 0xb7, 0xe2, 0x32, 0x5e, 0x5a, 0xc2, 0xb0, 0x0c, 0xae, 0x3f, - 0x6b, 0x4a, 0x24, 0xa6, 0xd8, 0x6e, 0x53, 0xb3, 0x8c, 0x19, 0x66, 0x41, 0xb2, 0xb7, 0x14, 0x6a, - 0x19, 0x69, 0xc5, 0x52, 0x7b, 0xf8, 0x63, 0x85, 0xbd, 0xc5, 0xd2, 0x7f, 0x49, 0xa3, 0xc2, 0x80, - 0xfc, 0x60, 0xa9, 0xb4, 0x37, 0xa9, 0xfb, 0x71, 0x32, 0x77, 0x97, 0x94, 0x5d, 0xb2, 0x32, 0x7b, - 0x19, 0x4d, 0xbb, 0x73, 0xc9, 0x21, 0x12, 0x7a, 0x97, 0x62, 0x86, 0xd9, 0xc1, 0xf7, 0x81, 0x97, - 0x53, 0x73, 0x7e, 0xc5, 0xf8, 0x70, 0x7a, 0x56, 0xb0, 0x0c, 0x8d, 0x69, 0xa6, 0xee, 0xee, 0x77, - 0x95, 0x34, 0x5e, 0x52, 0x5f, 0x4a, 0x66, 0x11, 0x93, 0x2c, 0xc6, 0x94, 0xf5, 0x6b, 0x2b, 0x7a, - 0x96, 0xa4, 0x26, 0x64, 0x42, 0xa5, 0xf4, 0x3c, 0x54, 0x92, 0xdd, 0x18, 0x33, 0x38, 0x29, 0x04, - 0xd5, 0x6c, 0x48, 0x92, 0xa0, 0x21, 0x31, 0x93, 0x24, 0x68, 0x4c, 0x9f, 0xc4, 0x4c, 0x30, 0xb6, - 0xd7, 0xc1, 0xaa, 0x09, 0x46, 0xc9, 0x65, 0x14, 0xb3, 0x85, 0xa0, 0x8f, 0xa9, 0x25, 0x24, 0xdb, - 0x7c, 0x32, 0xaf, 0x53, 0x52, 0xbd, 0x7c, 0xf8, 0x65, 0x00, 0x6d, 0x50, 0xa7, 0x3c, 0xd8, 0xb8, - 0x41, 0x91, 0x74, 0xe3, 0x86, 0xda, 0xd1, 0x74, 0x3b, 0xe9, 0xa4, 0x1a, 0x0b, 0x5f, 0xce, 0x95, - 0x21, 0x61, 0x87, 0x9c, 0x2b, 0x53, 0x1a, 0x0c, 0xaa, 0x03, 0xef, 0x08, 0x4d, 0x3e, 0xa2, 0x77, - 0x25, 0x33, 0x8f, 0x45, 0x69, 0x29, 0x3b, 0xf9, 0x03, 0xbf, 0xc7, 0x2b, 0xc4, 0xc3, 0xf5, 0x23, - 0x53, 0x1a, 0x12, 0x25, 0x0b, 0x82, 0xd4, 0x86, 0x52, 0xe3, 0xfc, 0x6f, 0x0b, 0x63, 0xb5, 0x4e, - 0x37, 0x25, 0x19, 0x85, 0x4a, 0x3a, 0x5b, 0x40, 0x89, 0x22, 0xf7, 0xab, 0xba, 0x69, 0x22, 0x33, - 0x80, 0x2a, 0xa0, 0x18, 0x82, 0xfd, 0xbb, 0xd2, 0x95, 0xc3, 0x98, 0x10, 0x2b, 0xe6, 0xca, 0x91, - 0x11, 0xd3, 0x69, 0xe0, 0x4d, 0x29, 0xfa, 0x89, 0x48, 0x7c, 0x9d, 0x4c, 0xfc, 0x72, 0x23, 0x66, - 0x76, 0x35, 0x47, 0x01, 0x2a, 0x65, 0xe5, 0x95, 0x41, 0x4f, 0xe9, 0x15, 0xfb, 0xd6, 0xfa, 0x4a, - 0x8d, 0x3b, 0xf0, 0x7a, 0x7e, 0xe2, 0xda, 0xea, 0x99, 0x1b, 0x1e, 0xb0, 0x4c, 0x48, 0x0a, 0xf7, - 0x61, 0x20, 0x1a, 0x62, 0xe3, 0x01, 0xaa, 0x53, 0xc9, 0x5d, 0x2b, 0x35, 0xdc, 0x5c, 0x19, 0x08, - 0x96, 0xcc, 0x04, 0x69, 0xee, 0x46, 0x2a, 0x18, 0x90, 0x83, 0xa7, 0x77, 0x33, 0xa5, 0x0f, 0x59, - 0xf2, 0x05, 0xdb, 0x36, 0x66, 0x32, 0x27, 0x65, 0xdf, 0x8f, 0x60, 0x8e, 0x4d, 0x78, 0xec, 0xcd, - 0xa0, 0xd6, 0x1f, 0xa5, 0xbc, 0x94, 0x52, 0x8e, 0x36, 0xa9, 0xe7, 0x46, 0xbc, 0x54, 0xd1, 0x62, - 0xcc, 0x8f, 0x12, 0x53, 0xe9, 0xb1, 0xa5, 0x24, 0x62, 0xfb, 0x1b, 0x2d, 0xa5, 0x86, 0xd8, 0x58, - 0xe6, 0x4b, 0xa9, 0x95, 0x9e, 0x6e, 0x29, 0x63, 0x04, 0xf5, 0xa5, 0xd4, 0xbb, 0x99, 0xd2, 0x87, - 0xc1, 0x4b, 0x69, 0x26, 0x73, 0xea, 0xa5, 0x8c, 0x3d, 0xd8, 0xd4, 0xfa, 0x63, 0x5a, 0xca, 0x38, - 0x3c, 0x5b, 0xca, 0x78, 0x69, 0x4c, 0x21, 0xcd, 0x58, 0xca, 0x38, 0xe6, 0xe7, 0x94, 0x1e, 0x7b, - 0x11, 0x7a, 0xaa, 0xc5, 0x14, 0xb1, 0x8a, 0x62, 0xa8, 0x8d, 0x07, 0xe8, 0x19, 0xb5, 0x86, 0xc4, - 0xca, 0x4f, 0xb6, 0xa0, 0x8b, 0x69, 0x44, 0xe9, 0x92, 0xae, 0x0b, 0x39, 0x2b, 0xde, 0xdd, 0xd4, - 0xbe, 0x64, 0xad, 0x07, 0x5b, 0xd6, 0x38, 0xa9, 0xd3, 0x2e, 0xec, 0x53, 0xc1, 0x34, 0x13, 0x8f, - 0x6a, 0x63, 0xbd, 0x52, 0x17, 0x37, 0xb5, 0x06, 0xed, 0x50, 0x5b, 0x4f, 0xb2, 0x5c, 0xb1, 0x13, - 0xa5, 0xbd, 0xde, 0x1d, 0x48, 0x35, 0xf1, 0x4a, 0x57, 0xa5, 0x9a, 0xf6, 0x84, 0x57, 0x52, 0x4d, - 0x62, 0xaf, 0xd0, 0x63, 0xbb, 0xe3, 0x13, 0x35, 0xa9, 0x9d, 0xd4, 0xa1, 0xf4, 0xf9, 0x13, 0x37, - 0x9a, 0x3a, 0x78, 0x63, 0x19, 0xad, 0xd3, 0x0d, 0xa8, 0x17, 0x67, 0x29, 0x99, 0x66, 0x32, 0x74, - 0x7f, 0xac, 0xc9, 0xc7, 0x0f, 0x7a, 0x9f, 0xd2, 0xda, 0x4e, 0xef, 0x94, 0xd4, 0xc0, 0x4f, 0x38, - 0xba, 0xb4, 0xdd, 0xc1, 0xa4, 0x40, 0xa6, 0xf0, 0x0e, 0x9a, 0x99, 0xf8, 0x73, 0x0c, 0xf4, 0x43, - 0x18, 0x17, 0xc8, 0x83, 0x27, 0x24, 0x8e, 0x4d, 0x27, 0xe4, 0x53, 0x98, 0x50, 0x5e, 0x83, 0xa0, - 0xb4, 0x96, 0x32, 0x44, 0xca, 0x09, 0xe5, 0xad, 0xca, 0xe9, 0xf1, 0x57, 0x60, 0x4a, 0x7b, 0xeb, - 0x22, 0x05, 0x21, 0xd3, 0x0b, 0x98, 0x2c, 0x2a, 0xda, 0x9b, 0x16, 0x49, 0xc5, 0xf4, 0xd2, 0x25, - 0x5b, 0x28, 0x53, 0xde, 0xed, 0x2b, 0x42, 0x59, 0x32, 0x80, 0x80, 0x22, 0x94, 0x99, 0x9e, 0xfa, - 0xff, 0x00, 0x26, 0xf8, 0xf6, 0xc8, 0x5c, 0xd9, 0x74, 0x6d, 0x79, 0x4e, 0xf1, 0x19, 0xec, 0xb7, - 0xdd, 0xb0, 0xe6, 0x75, 0x9f, 0xbb, 0xfb, 0x03, 0x17, 0x39, 0x89, 0xd2, 0x58, 0x46, 0x0d, 0x9a, - 0x85, 0x41, 0xe4, 0xc6, 0xc0, 0xe1, 0x2b, 0xcf, 0x7f, 0xe1, 0x76, 0xf7, 0x07, 0x90, 0xbc, 0xaa, - 0x93, 0x8c, 0xe3, 0x31, 0xba, 0xf5, 0x74, 0xba, 0x03, 0xf1, 0x33, 0xb4, 0xe5, 0x45, 0x7a, 0x6f, - 0x7f, 0xda, 0x1e, 0xa7, 0xdf, 0x1c, 0x5c, 0x8e, 0xbc, 0xed, 0x6c, 0xdc, 0xf2, 0xfc, 0xf6, 0x60, - 0x62, 0x65, 0xdd, 0xb7, 0x2d, 0x86, 0xd6, 0x58, 0x26, 0x54, 0xeb, 0xa9, 0x54, 0x07, 0x61, 0x67, - 0x7c, 0x2d, 0x16, 0xe8, 0xd8, 0x4f, 0xd9, 0xdb, 0xf4, 0x93, 0x41, 0x38, 0x30, 0xe1, 0xf4, 0xdb, - 0x3e, 0x7e, 0x8e, 0x7d, 0xea, 0x32, 0x39, 0xc8, 0x59, 0x50, 0x07, 0x6f, 0x2c, 0x13, 0x2a, 0xf5, - 0x04, 0x95, 0x34, 0xe8, 0x2c, 0x41, 0x89, 0x0e, 0xed, 0x84, 0xbd, 0x49, 0x23, 0xf3, 0x01, 0xb5, - 0x59, 0xee, 0xae, 0x0f, 0x98, 0x11, 0xe1, 0xc4, 0x2b, 0x00, 0x1b, 0xf7, 0x09, 0x66, 0x5d, 0xc1, - 0x4c, 0x42, 0xa4, 0xb6, 0xf9, 0x43, 0x61, 0x9c, 0x1c, 0xd8, 0x6c, 0xba, 0x37, 0xc2, 0xb8, 0xcc, - 0x10, 0x85, 0x14, 0xb5, 0x5e, 0xcb, 0x7f, 0x54, 0x9a, 0x52, 0x5d, 0x06, 0x03, 0x54, 0x61, 0x52, - 0xb4, 0x9a, 0x29, 0x49, 0xb9, 0x17, 0x35, 0xa6, 0x50, 0x8a, 0x93, 0x60, 0x66, 0x89, 0x0d, 0xaf, - 0xf5, 0x42, 0x35, 0x4b, 0x28, 0xa9, 0x77, 0x4a, 0x7a, 0x62, 0x1c, 0xfe, 0x41, 0xa2, 0xd9, 0x71, - 0x54, 0x07, 0x0d, 0x35, 0xf9, 0x8e, 0x6a, 0x96, 0xd0, 0xd3, 0x04, 0x49, 0xb3, 0x04, 0x6d, 0x50, - 0xa7, 0x3c, 0xd8, 0x2c, 0x41, 0x91, 0x74, 0xb3, 0x84, 0xda, 0xd1, 0x74, 0x76, 0x81, 0x92, 0x79, - 0x82, 0xa4, 0xc0, 0x9b, 0x9a, 0x42, 0x28, 0xc3, 0xf7, 0xe2, 0xa2, 0x21, 0xb5, 0x99, 0x54, 0xf7, - 0xd3, 0xd3, 0x9e, 0x95, 0x74, 0x47, 0x82, 0x7b, 0x39, 0xb4, 0x09, 0x97, 0x1e, 0xe1, 0x90, 0x33, - 0x30, 0x1b, 0x07, 0xa1, 0xef, 0xb6, 0xc2, 0x4c, 0x4b, 0xbd, 0x90, 0x6f, 0x0d, 0x38, 0x8d, 0x77, - 0x08, 0xbd, 0xba, 0x99, 0x5e, 0x26, 0x5e, 0x86, 0x45, 0x87, 0x9b, 0xff, 0x4e, 0xd3, 0xc5, 0xf4, - 0x2d, 0x3e, 0xca, 0x6e, 0xbd, 0xd3, 0x51, 0x0b, 0x51, 0x68, 0x5b, 0x2e, 0xb1, 0xdf, 0x81, 0xf3, - 0x0c, 0x29, 0xf5, 0x1b, 0x39, 0xa9, 0xe2, 0xa0, 0xfb, 0xc2, 0x45, 0x8b, 0xa0, 0x68, 0x55, 0xa9, - 0xfd, 0xba, 0x0f, 0xe3, 0xfc, 0xd5, 0xc4, 0x89, 0x51, 0x3e, 0x16, 0x8e, 0x5c, 0x59, 0x1d, 0x4b, - 0xf7, 0x6d, 0x9c, 0x52, 0x2f, 0xbc, 0x4f, 0x3f, 0x91, 0x3f, 0xa0, 0xf7, 0x29, 0xc2, 0x6c, 0x99, - 0x8e, 0x3f, 0x17, 0x0b, 0x06, 0xcb, 0xa7, 0x94, 0x31, 0x48, 0x99, 0x23, 0x30, 0xad, 0xfb, 0x17, - 0x12, 0xd8, 0xe8, 0x63, 0xf1, 0x7c, 0x40, 0x22, 0x27, 0x81, 0x32, 0xe6, 0x6c, 0x9a, 0x4d, 0xf3, - 0x9b, 0x20, 0x4b, 0x06, 0x3b, 0xb0, 0xdb, 0x27, 0xb9, 0xf7, 0x19, 0x3c, 0x75, 0x69, 0x54, 0xb6, - 0xa8, 0xe0, 0x95, 0x08, 0x53, 0x9c, 0x4e, 0x68, 0x29, 0x3d, 0xb2, 0x31, 0x5d, 0x8c, 0xc7, 0x54, - 0xb1, 0x4a, 0xe6, 0x7b, 0x4c, 0x1b, 0x5e, 0x46, 0xa4, 0xe4, 0x48, 0x93, 0x4c, 0x92, 0xcb, 0x40, - 0xcb, 0x52, 0x4c, 0xd9, 0x82, 0x9d, 0x0d, 0xb9, 0x75, 0xe1, 0x80, 0x74, 0xf2, 0xc1, 0x66, 0x08, - 0x41, 0x86, 0x9b, 0xa6, 0x81, 0x6b, 0x91, 0x46, 0xee, 0x27, 0x54, 0xfe, 0x33, 0x27, 0x79, 0x4b, - 0x25, 0xa6, 0xbc, 0x32, 0x1b, 0x90, 0x1e, 0xee, 0x05, 0x7d, 0x97, 0x61, 0x0e, 0xe4, 0x7c, 0x73, - 0x00, 0x15, 0x31, 0x13, 0xdf, 0x1d, 0x08, 0x27, 0xef, 0x2d, 0x16, 0xd8, 0x17, 0xd6, 0xdc, 0xde, - 0x80, 0xc0, 0xd4, 0x86, 0xab, 0xa4, 0x94, 0x0c, 0x6a, 0x82, 0xa0, 0xee, 0xdd, 0x95, 0x39, 0x86, - 0xb4, 0xe9, 0xff, 0x1c, 0xca, 0xd1, 0x8d, 0xec, 0xe9, 0x16, 0x21, 0x5d, 0xa2, 0x47, 0xc9, 0xbc, - 0x72, 0x28, 0x2b, 0xc4, 0x6f, 0xe9, 0x5a, 0xda, 0x0c, 0x07, 0xca, 0x55, 0x3f, 0xf7, 0x25, 0x89, - 0x85, 0x34, 0x4f, 0x0b, 0x8e, 0x9e, 0x61, 0x3b, 0xe2, 0x0f, 0x55, 0xce, 0x84, 0x50, 0x72, 0xb5, - 0x4f, 0x4f, 0x48, 0x5e, 0x98, 0xc6, 0x08, 0x59, 0x19, 0xcb, 0x7b, 0x1a, 0x7f, 0x90, 0xf8, 0x52, - 0x9c, 0x76, 0x41, 0x9d, 0xe8, 0x71, 0x46, 0x32, 0xf9, 0x9d, 0x94, 0xe5, 0x52, 0x13, 0xf1, 0xc9, - 0xd5, 0xcd, 0xc8, 0x9c, 0x57, 0x23, 0xc7, 0x94, 0x35, 0xa1, 0x65, 0xde, 0xaa, 0xd9, 0x1b, 0x91, - 0xd5, 0xc1, 0x90, 0x92, 0xab, 0x04, 0xa2, 0xd2, 0xde, 0x40, 0x75, 0x28, 0xb1, 0x2d, 0x62, 0x0a, - 0x31, 0x22, 0x3d, 0xea, 0x4d, 0x95, 0x19, 0xda, 0x45, 0x1d, 0x4a, 0x6c, 0xbb, 0x9c, 0x25, 0xd1, - 0x26, 0xcd, 0xb2, 0x6a, 0xa4, 0x78, 0x43, 0x79, 0x96, 0x98, 0x1e, 0xb8, 0xa5, 0x94, 0xdd, 0x30, - 0xfa, 0x12, 0xe6, 0x8c, 0x91, 0x5b, 0xe4, 0x9d, 0x76, 0x56, 0x5c, 0x97, 0x41, 0xc4, 0x5f, 0x40, - 0x31, 0x2d, 0x4d, 0x56, 0xe4, 0xe1, 0x9f, 0x9d, 0xbb, 0x4c, 0xf2, 0xd4, 0x81, 0xf9, 0xb6, 0x36, - 0x61, 0xd6, 0x94, 0x7a, 0x4a, 0x1e, 0x8e, 0x8c, 0xbc, 0x54, 0xc6, 0x67, 0x04, 0xdb, 0x30, 0x67, - 0x4c, 0xff, 0x24, 0x67, 0x26, 0x2b, 0x39, 0x94, 0x91, 0xe2, 0x17, 0x30, 0x9f, 0x92, 0xeb, 0x28, - 0xba, 0x78, 0xcb, 0xcc, 0x85, 0x94, 0xe1, 0x00, 0x50, 0x4a, 0x4f, 0xa3, 0x23, 0xfd, 0x3e, 0x06, - 0x66, 0xda, 0x29, 0x19, 0x73, 0x8b, 0xa1, 0x1d, 0xba, 0x09, 0x4d, 0x79, 0x75, 0xd4, 0x4d, 0x98, - 0x91, 0x77, 0x27, 0xe5, 0xf9, 0xc7, 0x7c, 0x4a, 0x2a, 0x9d, 0x0c, 0xaa, 0x27, 0xe8, 0xed, 0xa6, - 0xe0, 0xff, 0x7a, 0x6e, 0x95, 0x98, 0x2f, 0xa1, 0x31, 0xf1, 0x8a, 0xb1, 0x9f, 0xca, 0x73, 0xe3, - 0x4e, 0x27, 0x43, 0x0c, 0x42, 0xea, 0x7b, 0x63, 0x02, 0xd9, 0xb8, 0x4f, 0x94, 0x08, 0x15, 0x37, - 0x8b, 0xa3, 0x26, 0x90, 0xa9, 0xe0, 0xf9, 0x11, 0x4c, 0xd6, 0xd5, 0xc6, 0x0d, 0x8d, 0xa4, 0x6e, - 0x0a, 0xe9, 0x65, 0x3f, 0xb8, 0xef, 0x03, 0x6f, 0xc5, 0x2a, 0x9d, 0xce, 0x89, 0x46, 0x91, 0x6a, - 0x93, 0xd5, 0x62, 0xcf, 0x4b, 0x4e, 0x6d, 0x4a, 0xa9, 0x20, 0x6d, 0xb2, 0xe6, 0x70, 0xf5, 0xab, - 0x74, 0x4a, 0xa3, 0xc8, 0xbd, 0x19, 0x3a, 0xb8, 0xdc, 0x44, 0x86, 0x00, 0xc1, 0x4f, 0xd4, 0x87, - 0xe0, 0x2c, 0xde, 0x6f, 0x86, 0x11, 0x31, 0xfe, 0x00, 0x3c, 0x16, 0x20, 0xb8, 0x01, 0x45, 0x11, - 0x79, 0x93, 0xc5, 0xbe, 0x8c, 0x62, 0xfd, 0x45, 0xae, 0x51, 0xe9, 0xa1, 0x39, 0x33, 0xe6, 0xad, - 0x10, 0x8f, 0x6a, 0x25, 0x2d, 0x47, 0x29, 0xe1, 0xae, 0x32, 0x76, 0x03, 0x44, 0xb1, 0xab, 0xa4, - 0x7d, 0x26, 0x11, 0xce, 0xaa, 0x74, 0xd9, 0x50, 0x23, 0x25, 0xab, 0x49, 0x35, 0xd2, 0x95, 0xf4, - 0x1c, 0x31, 0x84, 0xbf, 0x2a, 0x2d, 0x18, 0xeb, 0x38, 0xa1, 0x10, 0x16, 0x32, 0xb2, 0xcc, 0x4a, - 0x69, 0x75, 0x70, 0x36, 0x5c, 0x19, 0xb7, 0xe2, 0x24, 0x49, 0x6b, 0xb1, 0x8c, 0xa4, 0x9b, 0x84, - 0x52, 0xe3, 0x56, 0x64, 0x26, 0x70, 0x2d, 0x0d, 0x4a, 0x70, 0x8b, 0x9e, 0xc1, 0x62, 0xcc, 0x15, - 0x59, 0x6f, 0x69, 0x10, 0x81, 0xd4, 0x15, 0x7c, 0x06, 0x8b, 0xfc, 0x6d, 0xf4, 0x19, 0x13, 0xde, - 0x83, 0xc5, 0xac, 0xd4, 0xb5, 0xe8, 0xb6, 0xd9, 0xdd, 0xd8, 0x38, 0x3d, 0xe9, 0xa2, 0xeb, 0xd5, - 0xa4, 0xdb, 0x71, 0x6c, 0xdd, 0x4f, 0xcb, 0x56, 0x9e, 0xc2, 0xb4, 0x9e, 0xb6, 0x16, 0xa9, 0xac, - 0x23, 0x91, 0x44, 0xb7, 0x74, 0x25, 0xa5, 0x96, 0xef, 0x8f, 0x4f, 0x29, 0xa3, 0x97, 0x15, 0x6a, - 0xbc, 0x84, 0x78, 0x5a, 0xd8, 0x92, 0x21, 0xc3, 0x0e, 0xfa, 0x01, 0xcc, 0x44, 0xef, 0xdb, 0x18, - 0x09, 0x03, 0x58, 0x86, 0xbd, 0x68, 0x26, 0x7a, 0xe9, 0x76, 0x7a, 0xf4, 0x35, 0xc1, 0xed, 0x23, - 0xf4, 0x2b, 0x09, 0x0f, 0x6c, 0x6d, 0x0c, 0x27, 0x61, 0xfa, 0xca, 0xdc, 0x9e, 0x76, 0x75, 0x5a, - 0xf4, 0xb8, 0x99, 0x43, 0xb8, 0xa9, 0xc7, 0x2d, 0x33, 0xcc, 0x9c, 0x94, 0x30, 0x53, 0xe8, 0x74, - 0xe0, 0xda, 0xc0, 0xa0, 0x73, 0xe8, 0xae, 0x16, 0x59, 0x60, 0x70, 0x78, 0xba, 0xac, 0x67, 0x0a, - 0xa6, 0xd8, 0x6d, 0x92, 0xc7, 0x67, 0x84, 0x91, 0x93, 0xcf, 0x14, 0x32, 0x83, 0xbf, 0x7d, 0x41, - 0xc3, 0x6c, 0xf3, 0x8f, 0x0c, 0x8d, 0x95, 0x81, 0xbb, 0x4e, 0xb7, 0x85, 0x07, 0x5c, 0x57, 0x5c, - 0xd3, 0x2f, 0xe9, 0x12, 0x88, 0x54, 0xce, 0x5f, 0xe2, 0xda, 0x49, 0x1a, 0xf1, 0xc1, 0x44, 0xd2, - 0xe6, 0xa5, 0xba, 0xf2, 0x8b, 0xbf, 0x58, 0xca, 0xfd, 0xe2, 0x97, 0x4b, 0xb9, 0x7f, 0xf7, 0xcb, - 0xa5, 0xdc, 0x7f, 0xf9, 0xe5, 0x52, 0xee, 0xc7, 0xcb, 0x27, 0x8b, 0x8c, 0xdb, 0xea, 0xb8, 0xb8, - 0x1b, 0xde, 0x65, 0xe4, 0xce, 0xd3, 0xff, 0x1e, 0xfc, 0xef, 0x00, 0x00, 0x00, 0xff, 0xff, 0xfd, - 0xc3, 0xeb, 0xce, 0xcc, 0xd5, 0x00, 0x00, + 0xb7, 0x8a, 0xdf, 0x7a, 0xe1, 0x86, 0xb8, 0x15, 0xf6, 0x7d, 0xce, 0x9c, 0xec, 0x44, 0x39, 0xb2, + 0x60, 0xf2, 0x51, 0xc7, 0xdd, 0x6b, 0x09, 0x62, 0xac, 0x73, 0x5a, 0x19, 0xba, 0x09, 0xd3, 0x3c, + 0x4b, 0x24, 0x0b, 0x4f, 0xcc, 0x53, 0xa0, 0xd9, 0xb1, 0x52, 0xd2, 0x6e, 0xcd, 0xeb, 0x86, 0x8e, + 0xdb, 0xc5, 0xbe, 0xdd, 0xef, 0x86, 0x2e, 0xcf, 0x19, 0x3e, 0x6e, 0x27, 0xca, 0xd1, 0xbb, 0x30, + 0x27, 0xcb, 0xb6, 0xfc, 0xd6, 0x0b, 0x1c, 0x84, 0x3e, 0x0d, 0xe5, 0x4e, 0x9f, 0x90, 0xdb, 0xe6, + 0x4a, 0xda, 0x42, 0xc7, 0xeb, 0xb7, 0x57, 0xbb, 0x2f, 0x5d, 0xdf, 0x63, 0xf9, 0x05, 0xc7, 0x78, + 0x0b, 0xb1, 0x72, 0x6b, 0xdb, 0x78, 0x02, 0xbe, 0xc1, 0xe6, 0xb0, 0x6a, 0x80, 0x92, 0x1c, 0x00, + 0x7d, 0x0f, 0xc6, 0xeb, 0xf5, 0x35, 0xed, 0x46, 0x21, 0x6e, 0xe4, 0xb7, 0x23, 0x08, 0xeb, 0x7d, + 0xb8, 0x24, 0x89, 0xb0, 0x18, 0x9b, 0x8a, 0x0b, 0x3a, 0x4f, 0x31, 0x23, 0x3d, 0xdf, 0xa3, 0x02, + 0xeb, 0xc7, 0x09, 0xbc, 0x7a, 0xff, 0xf0, 0xd0, 0xf1, 0x5f, 0xa3, 0x8a, 0x8e, 0x37, 0x34, 0x90, + 0xd7, 0x55, 0x87, 0x7f, 0x71, 0x54, 0x3e, 0xa7, 0x12, 0xb7, 0x61, 0x56, 0x3b, 0x91, 0xa2, 0x4b, + 0xa5, 0xf8, 0x87, 0x44, 0x39, 0x2a, 0x4b, 0x00, 0x3c, 0x78, 0xef, 0x86, 0xb7, 0xcf, 0x3d, 0x93, + 0x95, 0x12, 0xeb, 0x21, 0xcc, 0xc5, 0x68, 0x72, 0xc1, 0xea, 0x7b, 0x20, 0x45, 0x41, 0x4a, 0x74, + 0xa8, 0x7a, 0xe1, 0x57, 0x47, 0xe5, 0x29, 0xb2, 0x2d, 0xee, 0x44, 0xa1, 0xb4, 0xc4, 0x5f, 0xd6, + 0x53, 0x55, 0x62, 0xaf, 0x74, 0xb4, 0x37, 0x25, 0xf7, 0xe1, 0x3c, 0x2b, 0x89, 0x05, 0xac, 0x51, + 0xa1, 0xf9, 0x68, 0x39, 0xa0, 0x35, 0x47, 0xfd, 0xc6, 0xe8, 0x8f, 0x4a, 0xe4, 0xa1, 0x6c, 0xed, + 0xb2, 0xe8, 0x89, 0x51, 0xb1, 0x0c, 0x8a, 0x33, 0x5c, 0x89, 0x3c, 0xa9, 0x85, 0x59, 0x52, 0xc0, + 0x75, 0xbd, 0x57, 0x1d, 0xdc, 0xde, 0xa7, 0xd9, 0x6c, 0xaa, 0x93, 0xdc, 0x2c, 0x39, 0xec, 0x10, + 0x02, 0x14, 0xcd, 0xfa, 0x1c, 0xe6, 0x6a, 0x1d, 0xec, 0xf8, 0xf1, 0xf6, 0xd0, 0x4d, 0x18, 0xa5, + 0x65, 0xfa, 0x05, 0x9b, 0x43, 0x8a, 0xe8, 0x05, 0x1b, 0xaf, 0x24, 0x42, 0x26, 0x8b, 0x23, 0xa2, + 0x0e, 0x29, 0x92, 0xef, 0x46, 0xe8, 0xef, 0x98, 0xd7, 0x91, 0x61, 0xf4, 0x0c, 0xce, 0xfa, 0x8c, + 0x5e, 0x6b, 0x9b, 0x12, 0x19, 0x9d, 0xcc, 0x0f, 0xee, 0x2f, 0xc1, 0x62, 0xa5, 0xd7, 0xc3, 0xdd, + 0x76, 0x84, 0x48, 0xd4, 0xe0, 0x93, 0xf9, 0x17, 0xa3, 0x0a, 0x8c, 0x50, 0x68, 0x69, 0x9a, 0xe0, + 0xdd, 0x35, 0x74, 0x87, 0xc2, 0x71, 0x99, 0x9b, 0x36, 0xc0, 0x30, 0xad, 0x36, 0xcc, 0xd7, 0xfb, + 0x7b, 0x87, 0x2e, 0xcb, 0x19, 0x44, 0x7d, 0xf4, 0x45, 0xdb, 0xeb, 0x22, 0xe0, 0x2d, 0x9b, 0x8c, + 0x5b, 0x51, 0x82, 0x22, 0x7a, 0x57, 0xc8, 0xfd, 0xf6, 0x5f, 0xde, 0xbf, 0x13, 0xa1, 0xd2, 0xcf, + 0x21, 0x6b, 0x85, 0x56, 0xf3, 0xa0, 0xb8, 0xd6, 0x45, 0xb8, 0xa0, 0xaa, 0x79, 0x6c, 0x87, 0xcc, + 0xc1, 0x45, 0x5d, 0x7d, 0x63, 0xc5, 0x5f, 0xc1, 0x2c, 0xb3, 0x4b, 0xb2, 0x08, 0x44, 0xcb, 0x51, + 0xb0, 0x9d, 0x7c, 0x63, 0x39, 0x76, 0xc3, 0x48, 0x9d, 0x44, 0x65, 0x6c, 0xb9, 0xc6, 0x32, 0x73, + 0x4d, 0x7a, 0xb9, 0xac, 0x19, 0x09, 0xf2, 0x8d, 0xe5, 0xea, 0x28, 0xd7, 0x3d, 0x08, 0x75, 0xb6, + 0xfc, 0xbf, 0x16, 0xea, 0xcb, 0xd4, 0x1b, 0x76, 0x0d, 0x3b, 0xf4, 0xe6, 0xda, 0xec, 0x53, 0x38, + 0x0d, 0x79, 0xb7, 0x2d, 0x3e, 0x3d, 0x6e, 0xdb, 0xfa, 0x93, 0x1c, 0xdc, 0x62, 0x66, 0x0b, 0x33, + 0x1e, 0xd5, 0x26, 0x52, 0x90, 0xd1, 0x87, 0xc0, 0x92, 0x78, 0x70, 0xbb, 0xa3, 0xc5, 0x7b, 0x9e, + 0x45, 0x89, 0x21, 0xa0, 0x0a, 0x4c, 0xaa, 0x57, 0xdc, 0xb1, 0x37, 0xcb, 0x29, 0x76, 0x05, 0x7b, + 0xe2, 0xf0, 0xb9, 0x23, 0xaf, 0xbd, 0x0f, 0x60, 0x61, 0xf5, 0x6b, 0xb2, 0x21, 0x78, 0x40, 0x6c, + 0x7e, 0x37, 0x10, 0xf9, 0xac, 0xcd, 0xec, 0xf0, 0x1d, 0xa3, 0x7f, 0x1b, 0xe2, 0xc5, 0xe4, 0x9b, + 0xc9, 0x49, 0xf8, 0x54, 0x05, 0x62, 0xdf, 0x09, 0xad, 0xcc, 0xfa, 0x0f, 0x39, 0x58, 0x34, 0xb7, + 0xc6, 0x19, 0xcb, 0x3a, 0x5c, 0xa8, 0x39, 0x5d, 0xaf, 0xeb, 0xb6, 0x9c, 0x4e, 0xbd, 0xf5, 0x02, + 0xb7, 0xfb, 0x1d, 0x71, 0xf3, 0x2f, 0xb9, 0x0c, 0x91, 0x01, 0x38, 0xba, 0x00, 0xb1, 0x93, 0x58, + 0xe8, 0x7d, 0xb8, 0x44, 0xef, 0x5d, 0x19, 0xef, 0xed, 0x60, 0x5f, 0xd2, 0x63, 0x3d, 0x4b, 0xa9, + 0x45, 0xf7, 0xe0, 0x22, 0x13, 0x56, 0xda, 0xbb, 0x5d, 0x37, 0x94, 0x48, 0x4c, 0x54, 0x30, 0x55, + 0xdd, 0xbe, 0x0d, 0xe3, 0x5b, 0x3d, 0xcc, 0x73, 0xe6, 0x8e, 0xc1, 0xf0, 0xfa, 0xe6, 0xfa, 0x0e, + 0xcb, 0xd8, 0xb5, 0xbd, 0xbb, 0x53, 0xc8, 0x21, 0x80, 0xf3, 0x2b, 0xab, 0x1b, 0xab, 0x3b, 0xab, + 0x85, 0xfc, 0xed, 0xa6, 0xea, 0x1a, 0x80, 0x16, 0x60, 0x7e, 0x65, 0xb5, 0xb1, 0x5e, 0x5b, 0x6d, + 0xee, 0xfc, 0x70, 0x7b, 0xb5, 0xa9, 0xc7, 0x7c, 0x99, 0x85, 0x82, 0x5a, 0xb9, 0xb3, 0xb5, 0xb3, + 0xcd, 0xd2, 0x70, 0xa9, 0xa5, 0xcf, 0x56, 0xab, 0x95, 0xdd, 0x9d, 0xb5, 0xcd, 0xc2, 0x90, 0x35, + 0x3c, 0x96, 0x2f, 0xe4, 0x6f, 0xff, 0x4c, 0xf3, 0x1b, 0x40, 0x8b, 0x50, 0xe4, 0xe0, 0xbb, 0xf5, + 0xca, 0xa3, 0xf4, 0x26, 0x58, 0xed, 0xd3, 0x87, 0x95, 0x42, 0x0e, 0x5d, 0x81, 0xcb, 0x5a, 0xe9, + 0x76, 0xa5, 0x5e, 0x7f, 0xb6, 0x65, 0xaf, 0x6c, 0xac, 0xd6, 0xeb, 0x85, 0xfc, 0xed, 0x86, 0x16, + 0x27, 0x84, 0xb4, 0xf0, 0xf4, 0x61, 0xa5, 0x69, 0xaf, 0x7e, 0xb1, 0xbb, 0x6e, 0xaf, 0xae, 0x24, + 0x5b, 0xd0, 0x6a, 0x7f, 0xb8, 0x5a, 0x2f, 0xe4, 0xd0, 0x45, 0x98, 0xd1, 0x4a, 0x37, 0xb7, 0x0a, + 0xf9, 0xdb, 0x37, 0xf9, 0x13, 0x24, 0x34, 0x0d, 0xb0, 0xb2, 0x5a, 0xaf, 0xad, 0x6e, 0xae, 0xac, + 0x6f, 0x3e, 0x2a, 0x9c, 0x43, 0x53, 0x30, 0x5e, 0x91, 0x3f, 0x73, 0xcb, 0x7f, 0xff, 0x77, 0x73, + 0x30, 0x41, 0x36, 0xb6, 0xb8, 0x03, 0xfe, 0x4a, 0x11, 0x02, 0xf8, 0x82, 0xf2, 0x68, 0xda, 0xa9, + 0x5f, 0x7c, 0xca, 0xe3, 0x4a, 0x19, 0x32, 0x3e, 0x05, 0xb8, 0x95, 0xbb, 0x97, 0x43, 0x36, 0xb5, + 0x6e, 0xc5, 0xa4, 0x0c, 0x49, 0xd9, 0x2c, 0xb5, 0x94, 0x52, 0xaa, 0x85, 0x70, 0xf2, 0x18, 0xa6, + 0xc8, 0xc7, 0x5f, 0xd6, 0xa2, 0x85, 0x38, 0xbc, 0x22, 0x6f, 0x94, 0x16, 0xcd, 0x95, 0x32, 0xec, + 0xdd, 0x24, 0xed, 0x5f, 0x10, 0x3a, 0x5d, 0x22, 0x54, 0xcf, 0xa9, 0xa9, 0xce, 0xbb, 0x2d, 0xcc, + 0xae, 0xf7, 0x4a, 0x17, 0x62, 0xc5, 0x8d, 0xfb, 0xf7, 0x72, 0xa8, 0x4e, 0x9f, 0x49, 0x69, 0x52, + 0x04, 0x12, 0x7e, 0x01, 0x49, 0xf1, 0x82, 0xf5, 0xa6, 0x2c, 0x4d, 0x52, 0x29, 0xe2, 0xc7, 0x26, + 0xa0, 0xe4, 0xc7, 0x19, 0x5d, 0x8d, 0x96, 0xc2, 0xfc, 0xdd, 0x2e, 0x5d, 0x4a, 0xdc, 0x1b, 0xac, + 0x12, 0xf6, 0x8c, 0x56, 0x61, 0x9a, 0x3b, 0x73, 0x71, 0x71, 0x01, 0x65, 0x09, 0x1c, 0xa9, 0x64, + 0x1e, 0xd1, 0x79, 0x92, 0x22, 0x07, 0x2a, 0x45, 0xe3, 0x88, 0xcb, 0x21, 0xa5, 0x05, 0x63, 0x1d, + 0x1f, 0xdf, 0x43, 0x98, 0xd6, 0xa5, 0x17, 0x24, 0x16, 0xc8, 0x28, 0xd4, 0xa4, 0x76, 0xa8, 0x09, + 0xf3, 0x4f, 0x1d, 0x97, 0x0a, 0xf4, 0xdc, 0x3a, 0x2d, 0x6c, 0xcb, 0xa8, 0x9c, 0x61, 0x6c, 0xae, + 0xe3, 0x6e, 0xbb, 0x34, 0xe8, 0x81, 0x30, 0xdd, 0xb9, 0x75, 0xf1, 0x11, 0xd6, 0x6d, 0xf3, 0xc8, + 0xd2, 0xa3, 0xfe, 0x9b, 0xae, 0x5b, 0x4a, 0x69, 0x37, 0x84, 0xe8, 0x29, 0x95, 0x02, 0x62, 0x14, + 0x95, 0x3d, 0x71, 0x6a, 0x72, 0x45, 0xea, 0x52, 0x18, 0xba, 0xf1, 0xab, 0xbe, 0x00, 0xa5, 0x4c, + 0x5c, 0x2a, 0xb1, 0x7b, 0x39, 0xf4, 0x15, 0x58, 0x69, 0xe4, 0x9e, 0xb9, 0xe1, 0x0b, 0x7e, 0xd5, + 0xbd, 0x60, 0x24, 0xc0, 0x0f, 0x4a, 0x06, 0x75, 0x1b, 0x66, 0x4d, 0x97, 0x92, 0x72, 0x42, 0x33, + 0x6e, 0x2c, 0x53, 0x77, 0x81, 0x4d, 0x64, 0x99, 0x76, 0xfa, 0x22, 0x65, 0xdc, 0x89, 0xa5, 0xd2, + 0xfc, 0x14, 0xa6, 0xc9, 0x2e, 0x79, 0x82, 0x71, 0xaf, 0xd2, 0x71, 0x5f, 0xe2, 0x00, 0x89, 0xc7, + 0xf3, 0xb2, 0x28, 0x0d, 0xf7, 0x56, 0x0e, 0x7d, 0x87, 0x67, 0x7d, 0xe7, 0x6f, 0x3d, 0xc5, 0x53, + 0x50, 0x5a, 0x56, 0x12, 0xbf, 0x68, 0xe5, 0xbd, 0x1c, 0xfa, 0x3e, 0x8c, 0x3e, 0xc2, 0x21, 0xf5, + 0xcb, 0xba, 0x26, 0xed, 0xf3, 0xec, 0x2e, 0x7c, 0xbd, 0x2b, 0xbd, 0x56, 0x44, 0x87, 0xe3, 0x2a, + 0x20, 0xba, 0x0b, 0xc0, 0x18, 0x02, 0xa5, 0x10, 0xaf, 0x2e, 0x25, 0xba, 0x8d, 0x1e, 0x91, 0xef, + 0x67, 0x07, 0x87, 0xf8, 0xa4, 0x4d, 0xa6, 0xcd, 0xd1, 0x06, 0x4c, 0xcb, 0x48, 0x81, 0x9b, 0xd4, + 0xb1, 0xd7, 0x8a, 0x11, 0x0b, 0x4e, 0x41, 0xed, 0x63, 0x72, 0x2a, 0x98, 0xbd, 0x5c, 0x06, 0x16, + 0x40, 0x69, 0xa1, 0x06, 0xe4, 0x24, 0x32, 0x30, 0x05, 0x57, 0xa6, 0x98, 0x97, 0xb8, 0xf1, 0xa4, + 0xf3, 0x31, 0x5c, 0x0c, 0x25, 0xb5, 0x5d, 0x3d, 0xc8, 0x40, 0xc4, 0x73, 0xd3, 0x62, 0x23, 0x94, + 0xae, 0x65, 0x40, 0x30, 0x76, 0x47, 0x39, 0xc9, 0x0a, 0x51, 0x0f, 0x59, 0x33, 0x6a, 0x3a, 0x6b, + 0x61, 0x01, 0x4c, 0x66, 0xf8, 0x2e, 0xa1, 0x64, 0x15, 0xf9, 0xea, 0x69, 0x8f, 0xdb, 0xa3, 0xaf, + 0x9e, 0x21, 0xfa, 0x40, 0xf4, 0xd5, 0x33, 0xbe, 0x87, 0x7f, 0xc2, 0x14, 0x56, 0x2d, 0xa9, 0x6d, + 0x63, 0x19, 0x09, 0x27, 0x3d, 0xad, 0x82, 0x1f, 0xec, 0x4b, 0xa6, 0xba, 0xc6, 0x83, 0x7b, 0x39, + 0xb4, 0x0a, 0x17, 0xa5, 0x1f, 0x76, 0x54, 0x85, 0x52, 0x10, 0x52, 0x37, 0xc1, 0xe7, 0x70, 0x91, + 0x6f, 0x29, 0x8d, 0x4c, 0x41, 0x72, 0x07, 0x6e, 0xb4, 0x4f, 0x25, 0xf0, 0x18, 0xe6, 0xea, 0xb1, + 0x41, 0xb1, 0x2b, 0xe6, 0xcb, 0x3a, 0x09, 0x25, 0x7f, 0x60, 0x2a, 0xad, 0x27, 0x80, 0x98, 0x4e, + 0x28, 0xc8, 0xbd, 0x74, 0xf1, 0x2b, 0x74, 0x25, 0x36, 0x24, 0x52, 0x48, 0xc1, 0x28, 0x7b, 0x49, + 0x9b, 0x22, 0xb4, 0xc3, 0xf2, 0x1f, 0xb0, 0xdc, 0x44, 0x4e, 0xcf, 0xd9, 0x73, 0x3b, 0x6e, 0xe8, + 0x62, 0xb2, 0xc3, 0x54, 0x04, 0xb5, 0x4a, 0x2c, 0xe3, 0xe5, 0x54, 0x08, 0xf4, 0x19, 0x4c, 0x3d, + 0xc2, 0x61, 0x94, 0x22, 0x11, 0xcd, 0x27, 0x92, 0x2a, 0xf2, 0xa5, 0x13, 0xaf, 0x7e, 0xf4, 0xbc, + 0x8c, 0xeb, 0x50, 0x60, 0xdc, 0x51, 0x21, 0x71, 0x25, 0x41, 0x82, 0x83, 0x38, 0xbe, 0x73, 0x18, + 0xa4, 0xce, 0xd6, 0x5d, 0x66, 0xc3, 0x45, 0x62, 0xdb, 0xaa, 0xe2, 0xd7, 0x45, 0xad, 0x4c, 0x46, + 0x69, 0x99, 0x33, 0xe6, 0x06, 0x44, 0xd7, 0xa3, 0x4f, 0x61, 0x6a, 0xc2, 0xbf, 0x12, 0x8a, 0xbf, + 0xc9, 0x69, 0x3c, 0x40, 0x32, 0x5c, 0xbc, 0x81, 0xe8, 0x4d, 0xed, 0x8b, 0x7d, 0x3a, 0xba, 0x9f, + 0xc1, 0xb8, 0x4c, 0x32, 0x27, 0xd9, 0x4a, 0x3c, 0x45, 0x5f, 0xa9, 0x98, 0xac, 0xe0, 0x23, 0xfd, + 0x94, 0xa5, 0x94, 0xd4, 0xf1, 0xe3, 0x79, 0xd8, 0x52, 0x27, 0xf6, 0x23, 0x98, 0x50, 0x32, 0xb0, + 0xc9, 0x8d, 0x9c, 0xcc, 0xca, 0x56, 0xd2, 0x33, 0xf1, 0xdf, 0xcb, 0xa1, 0xbb, 0xf4, 0xd3, 0x42, + 0x9d, 0xd2, 0xe7, 0x22, 0x34, 0x25, 0xb7, 0x52, 0x0c, 0x05, 0x7d, 0x40, 0xdf, 0xee, 0xd7, 0xfa, + 0xbe, 0x4f, 0x34, 0x44, 0x82, 0x97, 0x26, 0x41, 0xc4, 0x10, 0x3f, 0xa3, 0xcc, 0x44, 0x41, 0x64, + 0x77, 0xb6, 0x83, 0xb0, 0x59, 0xec, 0xc7, 0x7b, 0x39, 0xf4, 0x00, 0xc6, 0x44, 0xc2, 0x56, 0x74, + 0x49, 0xef, 0x6a, 0xfa, 0xf0, 0x1e, 0x00, 0xb0, 0xc9, 0xa6, 0x3d, 0xd5, 0xab, 0x53, 0xa7, 0xf3, + 0x01, 0xf9, 0x5e, 0xb6, 0x4f, 0x89, 0xf4, 0x99, 0xf8, 0x66, 0x52, 0xa4, 0xa2, 0xb6, 0x84, 0xea, + 0x74, 0xa6, 0xe1, 0x13, 0x81, 0x57, 0xcb, 0x23, 0x1b, 0x09, 0xbc, 0xa6, 0xf4, 0xb2, 0xa9, 0x74, + 0xd6, 0xa1, 0x50, 0x69, 0x51, 0x3e, 0x2e, 0xf3, 0x55, 0x49, 0x6d, 0x23, 0x5e, 0x21, 0x68, 0xcd, + 0xc5, 0xd3, 0x5f, 0x6d, 0x60, 0x87, 0x86, 0x33, 0x98, 0x97, 0x32, 0x41, 0xac, 0xca, 0x8c, 0x91, + 0xa1, 0x5d, 0xcc, 0xd6, 0x88, 0x3e, 0xd4, 0xf9, 0x66, 0x64, 0x3e, 0xa6, 0xbc, 0x4c, 0xc9, 0xe5, + 0x75, 0x29, 0x8e, 0x2f, 0xf5, 0x30, 0xe1, 0x2f, 0x23, 0x41, 0x2b, 0x30, 0xc3, 0x1f, 0x4f, 0xcb, + 0x69, 0x49, 0xc3, 0x4e, 0x6b, 0xfe, 0x03, 0x98, 0x5e, 0x25, 0xbc, 0xbe, 0xdf, 0x76, 0x59, 0x08, + 0x17, 0xa4, 0xc7, 0xe4, 0x48, 0x45, 0x5c, 0x13, 0x29, 0x28, 0x95, 0x24, 0x57, 0xf2, 0x94, 0x26, + 0xf3, 0x88, 0x95, 0x66, 0x05, 0x59, 0x35, 0x1f, 0x16, 0xd7, 0x93, 0xe7, 0x53, 0xd2, 0x4a, 0xa1, + 0x1b, 0x9a, 0xee, 0x97, 0x96, 0x1b, 0xca, 0x20, 0xed, 0x7d, 0xa9, 0x04, 0xda, 0x4f, 0xa1, 0x99, + 0x9d, 0x6f, 0x2a, 0x75, 0xdc, 0x32, 0xe8, 0x82, 0x31, 0x2f, 0x14, 0x7a, 0x47, 0xa7, 0x9e, 0x91, + 0x3b, 0x2a, 0xb5, 0x05, 0xaa, 0x5b, 0xeb, 0x69, 0x8b, 0xd0, 0x52, 0x76, 0x76, 0x25, 0x45, 0xb7, + 0x4e, 0xc9, 0x77, 0xf4, 0x98, 0x6e, 0xb3, 0x28, 0x1a, 0x3f, 0x52, 0x35, 0xd5, 0x78, 0x32, 0x02, + 0x29, 0x42, 0x99, 0x73, 0x17, 0x3d, 0xa2, 0xec, 0x52, 0x89, 0xec, 0x9f, 0xca, 0xf0, 0xae, 0x98, + 0xe8, 0x04, 0xca, 0xb7, 0x70, 0x26, 0x96, 0x05, 0x48, 0x9a, 0x47, 0xcc, 0x79, 0x88, 0x4a, 0x4b, + 0x69, 0xd5, 0x9c, 0x62, 0x5d, 0x24, 0x91, 0x55, 0x46, 0xba, 0xa4, 0x7d, 0xa1, 0x92, 0x83, 0x2d, + 0xa7, 0xd6, 0xcb, 0xb9, 0x2b, 0xc4, 0xb3, 0x36, 0x48, 0xa2, 0x29, 0xe9, 0x1c, 0x32, 0x58, 0xe2, + 0xac, 0xba, 0x35, 0x06, 0xce, 0x60, 0x1a, 0x9d, 0x1d, 0x98, 0x33, 0x26, 0x59, 0x90, 0x62, 0x44, + 0x56, 0x0a, 0x86, 0x54, 0xaa, 0x18, 0x2e, 0x99, 0xf3, 0xac, 0xa0, 0xb7, 0x74, 0xd5, 0xdf, 0x9c, + 0x75, 0xa2, 0x74, 0x63, 0x00, 0x14, 0x9f, 0xd0, 0xaf, 0xe8, 0x67, 0x33, 0xd1, 0xc6, 0x35, 0xc5, + 0x18, 0x90, 0xd2, 0x80, 0x95, 0x05, 0x22, 0xf7, 0xc0, 0xac, 0x29, 0xcf, 0x53, 0xea, 0x14, 0x5f, + 0x4f, 0xa7, 0x19, 0x6d, 0xac, 0x86, 0x08, 0x75, 0x90, 0x3a, 0x33, 0x99, 0xf9, 0x38, 0x32, 0xb4, + 0xc9, 0x92, 0xdc, 0x0f, 0x27, 0xef, 0x72, 0xba, 0x65, 0x68, 0xd6, 0x94, 0x05, 0x26, 0x6e, 0xb8, + 0x31, 0x25, 0xf9, 0x90, 0xd3, 0x90, 0x99, 0x46, 0xa6, 0xc1, 0x8c, 0x38, 0x3a, 0x75, 0xd5, 0x88, + 0x63, 0x24, 0x7d, 0x35, 0x1d, 0x20, 0xda, 0x11, 0x86, 0x74, 0x56, 0x72, 0x47, 0xa4, 0x27, 0xd6, + 0x92, 0x3b, 0x22, 0x2b, 0x1b, 0x96, 0x2d, 0x0e, 0x5d, 0xca, 0xb4, 0x64, 0xe4, 0x3e, 0xc9, 0x50, + 0xb9, 0x8a, 0xd1, 0xc2, 0xc5, 0xba, 0x7d, 0xda, 0x65, 0xfb, 0x0a, 0x2e, 0xa7, 0xe6, 0x39, 0x41, + 0x6f, 0x27, 0x0e, 0x74, 0xca, 0x4c, 0xa4, 0xf7, 0x74, 0x4a, 0x4b, 0x51, 0x22, 0xad, 0x58, 0xb1, + 0x6c, 0x28, 0x09, 0xd6, 0x6f, 0x48, 0x95, 0xc2, 0x58, 0xbf, 0x92, 0xee, 0xe4, 0x24, 0xac, 0xdf, + 0x94, 0x1d, 0x45, 0xf2, 0x54, 0xa5, 0x5f, 0x42, 0xa4, 0x8b, 0x57, 0x9c, 0x86, 0xa7, 0x9e, 0xa4, + 0x6b, 0x69, 0x74, 0x56, 0xa8, 0xca, 0x21, 0xb2, 0x9f, 0xa0, 0xcb, 0xda, 0x34, 0x69, 0x9f, 0xdb, + 0x92, 0x36, 0x38, 0xfd, 0x4b, 0x5b, 0xa3, 0xe6, 0x62, 0x99, 0x6d, 0x25, 0xb5, 0x17, 0x0b, 0x49, + 0x1a, 0x9a, 0xa9, 0x58, 0xce, 0x02, 0xeb, 0xcd, 0x62, 0x7c, 0x72, 0xb4, 0x0e, 0xa5, 0x0f, 0x09, + 0xa9, 0x53, 0x33, 0xa0, 0x4b, 0xe9, 0xa2, 0xee, 0x45, 0xa6, 0x3c, 0xb0, 0x58, 0x64, 0xe2, 0x45, + 0xe2, 0x25, 0x69, 0xf7, 0x52, 0x4a, 0x33, 0xcc, 0x1c, 0xdb, 0xd4, 0xbb, 0xc8, 0x90, 0x38, 0x46, + 0xf2, 0xd0, 0xcc, 0xbc, 0x32, 0x06, 0x31, 0x4f, 0x72, 0xe5, 0x54, 0x8a, 0x99, 0x99, 0x64, 0x52, + 0x7b, 0xfa, 0x53, 0x85, 0x2b, 0x27, 0xd2, 0xc3, 0xa0, 0x5b, 0x71, 0x19, 0x2f, 0x2d, 0x83, 0x4c, + 0x06, 0xd7, 0x9f, 0x35, 0x65, 0x96, 0x51, 0x6c, 0xb7, 0xa9, 0x69, 0x67, 0x0c, 0xb3, 0x20, 0xd9, + 0x5b, 0x0a, 0xb5, 0x8c, 0x3c, 0x33, 0xa9, 0x3d, 0xfc, 0x91, 0xc2, 0xde, 0x62, 0xf9, 0x60, 0xa4, + 0x51, 0x61, 0x40, 0xc2, 0x98, 0x54, 0xda, 0x9b, 0xd4, 0x1f, 0x2d, 0x99, 0xcc, 0x45, 0xca, 0x2e, + 0x59, 0xa9, 0x5e, 0x8c, 0xa6, 0xdd, 0xb9, 0xe4, 0x10, 0x09, 0xbd, 0x4b, 0x31, 0xc3, 0xec, 0xa0, + 0x8e, 0x49, 0x3e, 0x6c, 0x48, 0x02, 0x13, 0xe3, 0xc3, 0xe9, 0x69, 0x62, 0x32, 0x34, 0xa6, 0x99, + 0xba, 0xbb, 0xdf, 0x55, 0xf2, 0xba, 0x48, 0x7d, 0x29, 0x99, 0x56, 0x46, 0xb2, 0x18, 0x53, 0x1a, + 0x98, 0xad, 0xc8, 0x4f, 0x5d, 0xcd, 0xd0, 0x81, 0x4a, 0xe9, 0x89, 0x49, 0x24, 0xbb, 0x31, 0xa6, + 0xf4, 0x50, 0x08, 0xaa, 0xe9, 0x31, 0x24, 0x41, 0x43, 0xa6, 0x0e, 0x49, 0xd0, 0x98, 0x4f, 0x83, + 0x99, 0x60, 0x6c, 0xaf, 0x83, 0x55, 0x13, 0x8c, 0x92, 0xdc, 0x22, 0x66, 0x0b, 0x41, 0x9f, 0x50, + 0x4b, 0x48, 0xb6, 0xf9, 0x64, 0x5e, 0xa7, 0x14, 0x71, 0xcb, 0x07, 0xe2, 0x32, 0x80, 0x36, 0xa8, + 0x53, 0x1e, 0x6c, 0xdc, 0xa0, 0x48, 0xba, 0x71, 0x43, 0xed, 0x68, 0xba, 0x9d, 0x74, 0x52, 0x0d, + 0x8e, 0x2c, 0xe7, 0xca, 0x10, 0xc1, 0x5d, 0xce, 0x95, 0x29, 0x2e, 0x3a, 0xd5, 0x81, 0x77, 0x84, + 0x26, 0x1f, 0xd1, 0xbb, 0x92, 0x19, 0xd8, 0xbc, 0xb4, 0x94, 0x1d, 0x0d, 0x9c, 0xdf, 0xe3, 0x15, + 0xe2, 0xf1, 0x9b, 0x91, 0x29, 0x2e, 0xbd, 0x12, 0x16, 0x5b, 0x6a, 0x43, 0xa9, 0x81, 0x9f, 0xb7, + 0x85, 0xb1, 0x5a, 0xa7, 0x9b, 0x12, 0x9d, 0x5c, 0x25, 0x9d, 0x2d, 0xa0, 0x44, 0xa1, 0x9c, 0x55, + 0xdd, 0x34, 0x11, 0x2a, 0x5a, 0x15, 0x50, 0x0c, 0xd1, 0x9f, 0x5d, 0xf1, 0xae, 0xd1, 0x9c, 0x21, + 0xe5, 0x1d, 0x5d, 0xd7, 0xcb, 0x08, 0xf2, 0x31, 0xf0, 0xa6, 0x14, 0xfd, 0x44, 0x64, 0x42, 0x4d, + 0x66, 0x02, 0xb8, 0x11, 0x33, 0xbb, 0x9a, 0xc3, 0x42, 0x94, 0xb2, 0x12, 0x0d, 0xa0, 0xa7, 0xf4, + 0x8a, 0x7d, 0x6b, 0x7d, 0xa5, 0xc6, 0x3d, 0xba, 0x3c, 0x3f, 0x71, 0x6d, 0xf5, 0xcc, 0x0d, 0x5f, + 0xb0, 0xd4, 0x18, 0x0a, 0xf7, 0x61, 0x20, 0x1a, 0x62, 0xe3, 0x01, 0xaa, 0x53, 0xc9, 0x5d, 0x2b, + 0x35, 0xdc, 0x5c, 0x19, 0x08, 0x96, 0xcc, 0x04, 0x69, 0x32, 0x2f, 0x2a, 0x18, 0x90, 0x83, 0xa7, + 0x77, 0x33, 0xa5, 0x0f, 0x59, 0xf2, 0x05, 0xdb, 0x36, 0x66, 0x32, 0x27, 0x65, 0xdf, 0x8f, 0x60, + 0x8e, 0x4d, 0x78, 0xec, 0x11, 0x89, 0xd6, 0x1f, 0xa5, 0xbc, 0x94, 0x52, 0x8e, 0x36, 0xa9, 0xe7, + 0x46, 0xbc, 0x54, 0xd1, 0x62, 0xcc, 0xaf, 0x54, 0x52, 0xe9, 0xb1, 0xa5, 0x24, 0x62, 0xfb, 0x1b, + 0x2d, 0xa5, 0x86, 0xd8, 0x58, 0xe6, 0x4b, 0xa9, 0x95, 0x9e, 0x6e, 0x29, 0x63, 0x04, 0xf5, 0xa5, + 0xd4, 0xbb, 0x99, 0xd2, 0x87, 0xc1, 0x4b, 0x69, 0x26, 0x73, 0xea, 0xa5, 0x8c, 0xbd, 0xe0, 0xd1, + 0xfa, 0x63, 0x5a, 0xca, 0x38, 0x3c, 0x5b, 0xca, 0x78, 0x69, 0x4c, 0x21, 0xcd, 0x58, 0xca, 0x38, + 0xe6, 0x17, 0x94, 0x1e, 0x7b, 0x22, 0x74, 0xaa, 0xc5, 0x14, 0xc1, 0x2b, 0x62, 0xa8, 0x8d, 0x07, + 0xe8, 0x19, 0xb5, 0x86, 0xc4, 0xca, 0x4f, 0xb6, 0xa0, 0x8b, 0x69, 0x44, 0xe9, 0x92, 0xae, 0x0b, + 0x39, 0x2b, 0xde, 0xdd, 0xd4, 0xbe, 0x64, 0xad, 0x07, 0x5b, 0xd6, 0x38, 0xa9, 0xd3, 0x2e, 0xec, + 0x53, 0xc1, 0x34, 0x13, 0xaf, 0xac, 0x62, 0xbd, 0x52, 0x17, 0x37, 0xb5, 0x06, 0xed, 0x50, 0x5b, + 0x4f, 0xb2, 0x5c, 0xb1, 0x13, 0xa5, 0x3d, 0xe7, 0x1a, 0x48, 0x35, 0xf1, 0x6c, 0x4b, 0xa5, 0x9a, + 0xf6, 0xa6, 0x4b, 0x52, 0x4d, 0x62, 0xaf, 0xd0, 0x63, 0xbb, 0xe3, 0x13, 0x35, 0xa9, 0x9d, 0xd4, + 0xa1, 0xf4, 0xf9, 0x13, 0x37, 0x9a, 0x3a, 0x78, 0x63, 0x19, 0xad, 0xd3, 0x0d, 0xa8, 0x17, 0x67, + 0x29, 0x99, 0x66, 0x32, 0x74, 0x7f, 0xac, 0x49, 0x6f, 0x58, 0xbd, 0x4f, 0x69, 0x6d, 0xa7, 0x77, + 0x4a, 0x6a, 0xe0, 0x27, 0x1c, 0x5d, 0xda, 0xee, 0x60, 0x52, 0x20, 0x53, 0x78, 0x07, 0xcd, 0x4c, + 0xdc, 0x3f, 0x17, 0xfd, 0x00, 0xc6, 0x05, 0xf2, 0xe0, 0x09, 0x89, 0x63, 0xd3, 0x09, 0xf9, 0x0c, + 0x26, 0x14, 0xf7, 0x60, 0x94, 0xd6, 0x52, 0x86, 0x48, 0x39, 0xa1, 0x38, 0x2f, 0x9f, 0x1e, 0x7f, + 0x05, 0xa6, 0x34, 0xe7, 0x67, 0x29, 0x08, 0x99, 0x5c, 0xa2, 0xb3, 0xa8, 0x68, 0x4e, 0xce, 0x92, + 0x8a, 0xc9, 0xf5, 0x39, 0x5b, 0x28, 0x53, 0x1e, 0x72, 0x2a, 0x42, 0x59, 0xf2, 0x45, 0xa9, 0x22, + 0x94, 0x99, 0xde, 0x7e, 0x7e, 0x1f, 0x26, 0xf8, 0xf6, 0xc8, 0x5c, 0xd9, 0x74, 0x6d, 0x79, 0x4e, + 0xf1, 0x19, 0xec, 0xb7, 0xdd, 0xb0, 0xe6, 0x75, 0x9f, 0xbb, 0xfb, 0x03, 0x17, 0x39, 0x89, 0xd2, + 0x58, 0x46, 0x0d, 0x1a, 0x96, 0x5b, 0x04, 0x4b, 0xc7, 0xe1, 0x2b, 0xcf, 0x3f, 0x70, 0xbb, 0xfb, + 0x03, 0x48, 0x5e, 0xd5, 0x49, 0xc6, 0xf1, 0x18, 0xdd, 0x7a, 0x3a, 0xdd, 0x81, 0xf8, 0x19, 0xda, + 0xf2, 0x22, 0xbd, 0xb7, 0x3f, 0x6d, 0x8f, 0xd3, 0x6f, 0x0e, 0x2e, 0x47, 0xde, 0x76, 0x36, 0x6e, + 0x79, 0x7e, 0x7b, 0x30, 0xb1, 0xb2, 0xee, 0xdb, 0x16, 0x43, 0x6b, 0x2c, 0x13, 0xaa, 0xf5, 0x54, + 0xaa, 0x83, 0xb0, 0x33, 0xbe, 0x16, 0x0b, 0x74, 0xec, 0xa7, 0xec, 0x6d, 0xfa, 0xc9, 0x20, 0x1c, + 0x98, 0x70, 0xfa, 0x6d, 0x1f, 0x3f, 0xc7, 0x3e, 0x75, 0x99, 0x1c, 0xe4, 0x2c, 0xa8, 0x83, 0x37, + 0x96, 0x09, 0x95, 0x7a, 0x82, 0x4a, 0x1a, 0x74, 0x96, 0xa0, 0x44, 0x87, 0x76, 0xc2, 0xde, 0xa4, + 0x91, 0xf9, 0x90, 0xda, 0x2c, 0x77, 0xd7, 0x07, 0xcc, 0x88, 0x70, 0xe2, 0x15, 0x80, 0x8d, 0xfb, + 0x04, 0xb3, 0xae, 0x60, 0x26, 0x21, 0x52, 0xdb, 0xfc, 0x81, 0x30, 0x4e, 0x0e, 0x6c, 0x36, 0xdd, + 0x1b, 0x61, 0x5c, 0xa6, 0x0c, 0x41, 0x8a, 0x5a, 0xaf, 0x25, 0xc4, 0x28, 0x4d, 0xa9, 0x2e, 0x83, + 0x01, 0xaa, 0x30, 0x29, 0x5a, 0x4d, 0x9d, 0xa1, 0xdc, 0x8b, 0x1a, 0x73, 0x6a, 0xc4, 0x49, 0x30, + 0xb3, 0xc4, 0x86, 0xd7, 0x3a, 0x50, 0xcd, 0x12, 0x4a, 0x2e, 0x86, 0x92, 0x9e, 0x29, 0x81, 0x7f, + 0x90, 0x68, 0xba, 0x04, 0xd5, 0x41, 0x43, 0xcd, 0xc6, 0xa0, 0x9a, 0x25, 0xf4, 0xbc, 0x11, 0xd2, + 0x2c, 0x41, 0x1b, 0xd4, 0x29, 0x0f, 0x36, 0x4b, 0x50, 0x24, 0xdd, 0x2c, 0xa1, 0x76, 0x34, 0x9d, + 0x5d, 0xa0, 0x64, 0xe2, 0x08, 0x29, 0xf0, 0xa6, 0xe6, 0x94, 0xc8, 0xf0, 0xbd, 0xb8, 0x68, 0xc8, + 0x75, 0x23, 0xd5, 0xfd, 0xf4, 0x3c, 0x38, 0x25, 0xdd, 0x91, 0xe0, 0x5e, 0x0e, 0x6d, 0xd2, 0x5c, + 0xe9, 0x9c, 0x81, 0xd9, 0x38, 0x08, 0x7d, 0x97, 0xbe, 0x53, 0x4a, 0xff, 0x5a, 0x0b, 0xf9, 0xd6, + 0x80, 0xd3, 0x78, 0x97, 0xd0, 0xab, 0x9b, 0xe9, 0x65, 0xe2, 0x65, 0x58, 0x74, 0xb8, 0xf9, 0xef, + 0x34, 0x5d, 0x4c, 0xdf, 0xe2, 0xa3, 0xec, 0xd6, 0x3b, 0x1d, 0xb5, 0x10, 0xc5, 0x3a, 0xe4, 0x12, + 0xfb, 0x1d, 0x38, 0xcf, 0x90, 0x52, 0xbf, 0x91, 0x93, 0x2a, 0x0e, 0xba, 0x2f, 0x5c, 0xb4, 0x08, + 0x8a, 0x56, 0x95, 0xda, 0xaf, 0xfb, 0x30, 0xce, 0x6c, 0xf9, 0x27, 0x47, 0xf9, 0x44, 0x38, 0x72, + 0x65, 0x75, 0x2c, 0xdd, 0xb7, 0x71, 0x4a, 0xbd, 0xf0, 0x3e, 0xfd, 0x44, 0x7e, 0x9f, 0xde, 0xa7, + 0x08, 0xb3, 0x65, 0x3a, 0xfe, 0x5c, 0x2c, 0x3a, 0x20, 0x9f, 0x52, 0xc6, 0x20, 0x65, 0xd2, 0xa8, + 0xb4, 0xee, 0x5f, 0x48, 0x60, 0xa3, 0x4f, 0xc4, 0xf3, 0x01, 0x89, 0x9c, 0x04, 0xca, 0x98, 0xb3, + 0x69, 0x36, 0xcd, 0x6f, 0x82, 0x2c, 0x19, 0xec, 0xc0, 0x6e, 0x9f, 0xe4, 0xde, 0x67, 0xf0, 0xd4, + 0xa5, 0x51, 0xd9, 0xa2, 0x82, 0x57, 0x22, 0x6e, 0x65, 0x3a, 0xa1, 0xa5, 0xf4, 0x50, 0x97, 0x74, + 0x31, 0x1e, 0x53, 0xc5, 0x2a, 0x99, 0x00, 0x2c, 0x6d, 0x78, 0x19, 0xa1, 0x33, 0x23, 0x4d, 0x32, + 0x49, 0x2e, 0x03, 0x2d, 0x4b, 0x31, 0x65, 0x0b, 0x76, 0x36, 0xe4, 0xd6, 0x85, 0x03, 0xd2, 0xc9, + 0x07, 0x9b, 0x21, 0x04, 0x19, 0x6e, 0x9a, 0x06, 0xae, 0x45, 0x1a, 0xb9, 0x9f, 0x50, 0xf9, 0xcf, + 0x9c, 0xf5, 0x27, 0x95, 0xd8, 0x2d, 0xe5, 0xb2, 0x32, 0x3b, 0x5f, 0xd0, 0x01, 0x7d, 0x97, 0x61, + 0x8e, 0xec, 0x79, 0x73, 0x00, 0x15, 0x31, 0x13, 0x6f, 0x0f, 0x84, 0x93, 0xf7, 0x16, 0x0b, 0xec, + 0x0b, 0x6b, 0x6e, 0x6f, 0x40, 0xa4, 0x52, 0xc3, 0x55, 0x52, 0x4a, 0x4a, 0x1d, 0x41, 0x50, 0xf7, + 0xee, 0xca, 0x1c, 0x43, 0xda, 0xf4, 0x7f, 0x01, 0xe5, 0xe8, 0x46, 0xf6, 0x74, 0x8b, 0x90, 0x2e, + 0xd1, 0xa3, 0x64, 0xa2, 0x21, 0x94, 0x15, 0xf3, 0xb1, 0x74, 0x2d, 0x6d, 0x86, 0x03, 0xe5, 0xaa, + 0x9f, 0xfb, 0x92, 0xc4, 0x62, 0xdc, 0xa6, 0x45, 0xcb, 0xcd, 0xb0, 0x1d, 0xf1, 0x87, 0x2a, 0x67, + 0x42, 0x28, 0xb9, 0xda, 0xa7, 0x27, 0x24, 0x2f, 0x4c, 0x63, 0x84, 0xac, 0x8c, 0xe5, 0x3d, 0x8d, + 0x3f, 0x48, 0x7c, 0x29, 0x4e, 0xbb, 0xa0, 0x4e, 0xf4, 0x38, 0x23, 0x99, 0x0d, 0x49, 0xca, 0x72, + 0xa9, 0x99, 0x99, 0xe4, 0xea, 0x66, 0xa4, 0x52, 0xaa, 0x91, 0x63, 0xca, 0x9a, 0xd0, 0x52, 0xb1, + 0xd4, 0xec, 0x8d, 0xc8, 0xea, 0x60, 0xc8, 0xd1, 0x52, 0x02, 0x51, 0x69, 0x6f, 0xa0, 0x3a, 0x94, + 0xd8, 0x16, 0x31, 0xbd, 0x39, 0x97, 0x1e, 0xf5, 0xa6, 0xca, 0x0c, 0xed, 0xa2, 0x0e, 0x25, 0xb6, + 0x5d, 0xce, 0x92, 0x68, 0x93, 0xa6, 0xdd, 0x33, 0x52, 0xbc, 0xa1, 0x3c, 0x4b, 0x4c, 0x7f, 0xc9, + 0x5f, 0xca, 0x6e, 0x18, 0xfd, 0x18, 0xe6, 0x8c, 0x4f, 0xf9, 0xe5, 0x9d, 0x76, 0xd6, 0x43, 0xff, + 0x41, 0xc4, 0x0f, 0xa0, 0x98, 0x96, 0x37, 0x25, 0xf2, 0xf0, 0xcf, 0x4e, 0x66, 0x23, 0x79, 0xea, + 0xc0, 0x04, 0x2c, 0x9b, 0x30, 0x6b, 0xca, 0x45, 0x22, 0x0f, 0x47, 0x46, 0xa2, 0x12, 0xe3, 0x33, + 0x82, 0x6d, 0x98, 0x33, 0xe6, 0x03, 0x91, 0x33, 0x93, 0x95, 0x2d, 0xc4, 0x48, 0xf1, 0x4b, 0x98, + 0x4f, 0x49, 0x7e, 0x11, 0x5d, 0xbc, 0x65, 0x26, 0xc7, 0xc8, 0x70, 0x00, 0x28, 0xa5, 0xe7, 0x55, + 0x90, 0x7e, 0x1f, 0x03, 0x53, 0x2f, 0x94, 0x8c, 0xc9, 0x66, 0xd0, 0x0e, 0xdd, 0x84, 0xa6, 0x44, + 0x0b, 0xea, 0x26, 0xcc, 0x48, 0xc4, 0x90, 0xf2, 0xfc, 0x63, 0x3e, 0x25, 0xb7, 0x42, 0x06, 0xd5, + 0x13, 0xf4, 0x76, 0x53, 0xf0, 0x7f, 0x3d, 0xd8, 0x7e, 0xcc, 0x97, 0xd0, 0x18, 0x89, 0xdf, 0xd8, + 0x4f, 0xe5, 0xb9, 0x71, 0xa7, 0x93, 0x21, 0x06, 0x21, 0xf5, 0xbd, 0x31, 0x81, 0x6c, 0xdc, 0x27, + 0x4a, 0x84, 0x8a, 0x9b, 0xc5, 0x51, 0x13, 0xc8, 0x54, 0xf0, 0xfc, 0x18, 0x26, 0xeb, 0x6a, 0xe3, + 0x86, 0x46, 0x52, 0x37, 0x85, 0xf4, 0xb2, 0x1f, 0xdc, 0xf7, 0x81, 0xb7, 0x62, 0x95, 0x4e, 0xe7, + 0x44, 0xa3, 0x48, 0xb5, 0xc9, 0x6a, 0xc1, 0x88, 0x25, 0xa7, 0x36, 0xc5, 0xd8, 0x96, 0x36, 0x59, + 0x73, 0xfc, 0xe2, 0x55, 0x3a, 0xa5, 0x51, 0x28, 0xc7, 0x0c, 0x1d, 0x5c, 0x6e, 0x22, 0x43, 0xc4, + 0xc8, 0x27, 0xea, 0x43, 0x70, 0x16, 0x00, 0x32, 0xc3, 0x88, 0x18, 0x7f, 0x00, 0x1e, 0x8b, 0x18, + 0xd9, 0x80, 0xa2, 0x08, 0xc5, 0xc6, 0x82, 0xa1, 0x45, 0xc1, 0x9f, 0x22, 0xd7, 0xa8, 0xf4, 0x58, + 0x6d, 0x19, 0xf3, 0x56, 0x88, 0x87, 0x39, 0x91, 0x96, 0xa3, 0x94, 0xf8, 0x27, 0x19, 0xbb, 0x01, + 0xa2, 0x60, 0x26, 0xd2, 0x3e, 0x93, 0x88, 0x6f, 0x52, 0xba, 0x6c, 0xa8, 0x91, 0x92, 0xd5, 0xa4, + 0x1a, 0xfa, 0x44, 0x7a, 0x8e, 0x18, 0xe2, 0xa1, 0x94, 0x16, 0x8c, 0x75, 0x9c, 0x50, 0x08, 0x0b, + 0x19, 0x69, 0x07, 0xa5, 0xb4, 0x3a, 0x38, 0x3d, 0x62, 0xe9, 0xf6, 0x49, 0x40, 0x79, 0xab, 0x58, + 0x86, 0x56, 0x4c, 0x42, 0xa1, 0xb7, 0x0d, 0xae, 0xbe, 0xa6, 0x8c, 0x7e, 0xa5, 0x41, 0x19, 0x0f, + 0xd1, 0x33, 0x58, 0x8c, 0xb9, 0x22, 0xeb, 0x2d, 0x0d, 0x22, 0x90, 0xba, 0x82, 0xcf, 0x60, 0x91, + 0xbf, 0x8d, 0x3e, 0x63, 0xc2, 0x7b, 0xb0, 0x98, 0x95, 0xcb, 0x10, 0xdd, 0x36, 0xbb, 0x1b, 0x1b, + 0xa7, 0x27, 0x5d, 0x74, 0xbd, 0x9a, 0x74, 0x3b, 0x8e, 0xad, 0xfb, 0x69, 0xd9, 0xca, 0x53, 0x98, + 0xd6, 0xf3, 0x18, 0x22, 0x95, 0x75, 0x24, 0xb2, 0x2a, 0x96, 0xae, 0xa4, 0xd4, 0xf2, 0xfd, 0xf1, + 0x19, 0x65, 0xf4, 0xb2, 0x42, 0x8d, 0x97, 0x10, 0xcf, 0x13, 0x58, 0x32, 0xa4, 0x5c, 0x40, 0xdf, + 0x87, 0x99, 0xe8, 0x7d, 0x1b, 0x23, 0x61, 0x00, 0xcb, 0xb0, 0x17, 0xcd, 0x44, 0x2f, 0xdd, 0x4e, + 0x8f, 0xbe, 0x26, 0xb8, 0x7d, 0x84, 0x7e, 0x25, 0xe1, 0x81, 0xad, 0x8d, 0xe1, 0x24, 0x4c, 0x5f, + 0x99, 0xdb, 0xd3, 0xae, 0x4e, 0x8b, 0x1e, 0x37, 0x73, 0x4c, 0x1f, 0xf5, 0xb8, 0x65, 0xc6, 0x1d, + 0x92, 0x12, 0x66, 0x0a, 0x9d, 0x0e, 0x5c, 0x1b, 0x18, 0x85, 0x08, 0xdd, 0xd5, 0x22, 0x0b, 0x0c, + 0x8e, 0x57, 0x94, 0xf5, 0x4c, 0xc1, 0x14, 0xcc, 0x47, 0xf2, 0xf8, 0x8c, 0xb8, 0x42, 0xf2, 0x99, + 0x42, 0x66, 0x34, 0xa0, 0x2f, 0x69, 0xdc, 0x55, 0xfe, 0x91, 0xa1, 0xb1, 0x32, 0x70, 0xd7, 0xe9, + 0xb6, 0xf0, 0x80, 0xeb, 0x8a, 0x6b, 0xfa, 0x25, 0x5d, 0x02, 0x91, 0xca, 0xf9, 0x4b, 0x5c, 0x3b, + 0x49, 0x23, 0x3e, 0x98, 0x48, 0xda, 0xbc, 0x54, 0x57, 0x7e, 0xf1, 0x17, 0x4b, 0xb9, 0x5f, 0xfc, + 0x72, 0x29, 0xf7, 0xef, 0x7f, 0xb9, 0x94, 0xfb, 0xaf, 0xbf, 0x5c, 0xca, 0xfd, 0x68, 0xf9, 0x64, + 0xa1, 0x12, 0x5b, 0x1d, 0x17, 0x77, 0xc3, 0xbb, 0x8c, 0xdc, 0x79, 0xfa, 0xdf, 0x83, 0xff, 0x13, + 0x00, 0x00, 0xff, 0xff, 0xe4, 0x80, 0xee, 0x9d, 0xdd, 0xcf, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. @@ -15677,16 +15113,6 @@ const _ = grpc.SupportPackageIsVersion4 // // For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream. type AuthServiceClient interface { - // CreateNewConversation creates a new conversation and returns the UUID of it. - CreateAssistantConversation(ctx context.Context, in *CreateAssistantConversationRequest, opts ...grpc.CallOption) (*CreateAssistantConversationResponse, error) - // GetAssistantConversations returns all conversations for the connected user. - GetAssistantConversations(ctx context.Context, in *GetAssistantConversationsRequest, opts ...grpc.CallOption) (*GetAssistantConversationsResponse, error) - // GetAssistantMessages returns all messages associated with the given conversation ID. - GetAssistantMessages(ctx context.Context, in *AssistantMessageRequest, opts ...grpc.CallOption) (*GetAssistantMessagesResponse, error) - // CreateAssistantMessage creates a new message in the given conversation. - CreateAssistantMessage(ctx context.Context, in *AssistantMessage, opts ...grpc.CallOption) (*emptypb.Empty, error) - // UpdateAssistantConversationInfo updates the conversation info. - UpdateAssistantConversationInfo(ctx context.Context, in *UpdateAssistantConversationInfoRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) // InventoryControlStream is the per-instance stream used to advertise teleport instance // presence/version/etc to the auth server. InventoryControlStream(ctx context.Context, opts ...grpc.CallOption) (AuthService_InventoryControlStreamClient, error) @@ -16263,51 +15689,6 @@ func NewAuthServiceClient(cc *grpc.ClientConn) AuthServiceClient { return &authServiceClient{cc} } -func (c *authServiceClient) CreateAssistantConversation(ctx context.Context, in *CreateAssistantConversationRequest, opts ...grpc.CallOption) (*CreateAssistantConversationResponse, error) { - out := new(CreateAssistantConversationResponse) - err := c.cc.Invoke(ctx, "/proto.AuthService/CreateAssistantConversation", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *authServiceClient) GetAssistantConversations(ctx context.Context, in *GetAssistantConversationsRequest, opts ...grpc.CallOption) (*GetAssistantConversationsResponse, error) { - out := new(GetAssistantConversationsResponse) - err := c.cc.Invoke(ctx, "/proto.AuthService/GetAssistantConversations", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *authServiceClient) GetAssistantMessages(ctx context.Context, in *AssistantMessageRequest, opts ...grpc.CallOption) (*GetAssistantMessagesResponse, error) { - out := new(GetAssistantMessagesResponse) - err := c.cc.Invoke(ctx, "/proto.AuthService/GetAssistantMessages", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *authServiceClient) CreateAssistantMessage(ctx context.Context, in *AssistantMessage, opts ...grpc.CallOption) (*emptypb.Empty, error) { - out := new(emptypb.Empty) - err := c.cc.Invoke(ctx, "/proto.AuthService/CreateAssistantMessage", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *authServiceClient) UpdateAssistantConversationInfo(ctx context.Context, in *UpdateAssistantConversationInfoRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) { - out := new(emptypb.Empty) - err := c.cc.Invoke(ctx, "/proto.AuthService/UpdateAssistantConversationInfo", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - func (c *authServiceClient) InventoryControlStream(ctx context.Context, opts ...grpc.CallOption) (AuthService_InventoryControlStreamClient, error) { stream, err := c.cc.NewStream(ctx, &_AuthService_serviceDesc.Streams[0], "/proto.AuthService/InventoryControlStream", opts...) if err != nil { @@ -18807,16 +18188,6 @@ func (c *authServiceClient) UpdateClusterMaintenanceConfig(ctx context.Context, // AuthServiceServer is the server API for AuthService service. type AuthServiceServer interface { - // CreateNewConversation creates a new conversation and returns the UUID of it. - CreateAssistantConversation(context.Context, *CreateAssistantConversationRequest) (*CreateAssistantConversationResponse, error) - // GetAssistantConversations returns all conversations for the connected user. - GetAssistantConversations(context.Context, *GetAssistantConversationsRequest) (*GetAssistantConversationsResponse, error) - // GetAssistantMessages returns all messages associated with the given conversation ID. - GetAssistantMessages(context.Context, *AssistantMessageRequest) (*GetAssistantMessagesResponse, error) - // CreateAssistantMessage creates a new message in the given conversation. - CreateAssistantMessage(context.Context, *AssistantMessage) (*emptypb.Empty, error) - // UpdateAssistantConversationInfo updates the conversation info. - UpdateAssistantConversationInfo(context.Context, *UpdateAssistantConversationInfoRequest) (*emptypb.Empty, error) // InventoryControlStream is the per-instance stream used to advertise teleport instance // presence/version/etc to the auth server. InventoryControlStream(AuthService_InventoryControlStreamServer) error @@ -19389,21 +18760,6 @@ type AuthServiceServer interface { type UnimplementedAuthServiceServer struct { } -func (*UnimplementedAuthServiceServer) CreateAssistantConversation(ctx context.Context, req *CreateAssistantConversationRequest) (*CreateAssistantConversationResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method CreateAssistantConversation not implemented") -} -func (*UnimplementedAuthServiceServer) GetAssistantConversations(ctx context.Context, req *GetAssistantConversationsRequest) (*GetAssistantConversationsResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method GetAssistantConversations not implemented") -} -func (*UnimplementedAuthServiceServer) GetAssistantMessages(ctx context.Context, req *AssistantMessageRequest) (*GetAssistantMessagesResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method GetAssistantMessages not implemented") -} -func (*UnimplementedAuthServiceServer) CreateAssistantMessage(ctx context.Context, req *AssistantMessage) (*emptypb.Empty, error) { - return nil, status.Errorf(codes.Unimplemented, "method CreateAssistantMessage not implemented") -} -func (*UnimplementedAuthServiceServer) UpdateAssistantConversationInfo(ctx context.Context, req *UpdateAssistantConversationInfoRequest) (*emptypb.Empty, error) { - return nil, status.Errorf(codes.Unimplemented, "method UpdateAssistantConversationInfo not implemented") -} func (*UnimplementedAuthServiceServer) InventoryControlStream(srv AuthService_InventoryControlStreamServer) error { return status.Errorf(codes.Unimplemented, "method InventoryControlStream not implemented") } @@ -20120,96 +19476,6 @@ func RegisterAuthServiceServer(s *grpc.Server, srv AuthServiceServer) { s.RegisterService(&_AuthService_serviceDesc, srv) } -func _AuthService_CreateAssistantConversation_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(CreateAssistantConversationRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(AuthServiceServer).CreateAssistantConversation(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/proto.AuthService/CreateAssistantConversation", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(AuthServiceServer).CreateAssistantConversation(ctx, req.(*CreateAssistantConversationRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _AuthService_GetAssistantConversations_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(GetAssistantConversationsRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(AuthServiceServer).GetAssistantConversations(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/proto.AuthService/GetAssistantConversations", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(AuthServiceServer).GetAssistantConversations(ctx, req.(*GetAssistantConversationsRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _AuthService_GetAssistantMessages_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(AssistantMessageRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(AuthServiceServer).GetAssistantMessages(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/proto.AuthService/GetAssistantMessages", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(AuthServiceServer).GetAssistantMessages(ctx, req.(*AssistantMessageRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _AuthService_CreateAssistantMessage_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(AssistantMessage) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(AuthServiceServer).CreateAssistantMessage(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/proto.AuthService/CreateAssistantMessage", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(AuthServiceServer).CreateAssistantMessage(ctx, req.(*AssistantMessage)) - } - return interceptor(ctx, in, info, handler) -} - -func _AuthService_UpdateAssistantConversationInfo_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(UpdateAssistantConversationInfoRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(AuthServiceServer).UpdateAssistantConversationInfo(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/proto.AuthService/UpdateAssistantConversationInfo", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(AuthServiceServer).UpdateAssistantConversationInfo(ctx, req.(*UpdateAssistantConversationInfoRequest)) - } - return interceptor(ctx, in, info, handler) -} - func _AuthService_InventoryControlStream_Handler(srv interface{}, stream grpc.ServerStream) error { return srv.(AuthServiceServer).InventoryControlStream(&authServiceInventoryControlStreamServer{stream}) } @@ -24563,26 +23829,6 @@ var _AuthService_serviceDesc = grpc.ServiceDesc{ ServiceName: "proto.AuthService", HandlerType: (*AuthServiceServer)(nil), Methods: []grpc.MethodDesc{ - { - MethodName: "CreateAssistantConversation", - Handler: _AuthService_CreateAssistantConversation_Handler, - }, - { - MethodName: "GetAssistantConversations", - Handler: _AuthService_GetAssistantConversations_Handler, - }, - { - MethodName: "GetAssistantMessages", - Handler: _AuthService_GetAssistantMessages_Handler, - }, - { - MethodName: "CreateAssistantMessage", - Handler: _AuthService_CreateAssistantMessage_Handler, - }, - { - MethodName: "UpdateAssistantConversationInfo", - Handler: _AuthService_UpdateAssistantConversationInfo_Handler, - }, { MethodName: "GetInventoryStatus", Handler: _AuthService_GetInventoryStatus_Handler, @@ -36675,399 +35921,6 @@ func (m *ExportUpgradeWindowsResponse) MarshalToSizedBuffer(dAtA []byte) (int, e return len(dAtA) - i, nil } -func (m *AssistantMessageRequest) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *AssistantMessageRequest) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *AssistantMessageRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if m.XXX_unrecognized != nil { - i -= len(m.XXX_unrecognized) - copy(dAtA[i:], m.XXX_unrecognized) - } - if len(m.Username) > 0 { - i -= len(m.Username) - copy(dAtA[i:], m.Username) - i = encodeVarintAuthservice(dAtA, i, uint64(len(m.Username))) - i-- - dAtA[i] = 0x12 - } - if len(m.ConversationId) > 0 { - i -= len(m.ConversationId) - copy(dAtA[i:], m.ConversationId) - i = encodeVarintAuthservice(dAtA, i, uint64(len(m.ConversationId))) - i-- - dAtA[i] = 0xa - } - return len(dAtA) - i, nil -} - -func (m *AssistantMessage) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *AssistantMessage) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *AssistantMessage) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if m.XXX_unrecognized != nil { - i -= len(m.XXX_unrecognized) - copy(dAtA[i:], m.XXX_unrecognized) - } - if len(m.Payload) > 0 { - i -= len(m.Payload) - copy(dAtA[i:], m.Payload) - i = encodeVarintAuthservice(dAtA, i, uint64(len(m.Payload))) - i-- - dAtA[i] = 0x2a - } - n152, err152 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.CreatedTime, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.CreatedTime):]) - if err152 != nil { - return 0, err152 - } - i -= n152 - i = encodeVarintAuthservice(dAtA, i, uint64(n152)) - i-- - dAtA[i] = 0x22 - if len(m.Type) > 0 { - i -= len(m.Type) - copy(dAtA[i:], m.Type) - i = encodeVarintAuthservice(dAtA, i, uint64(len(m.Type))) - i-- - dAtA[i] = 0x1a - } - if len(m.Username) > 0 { - i -= len(m.Username) - copy(dAtA[i:], m.Username) - i = encodeVarintAuthservice(dAtA, i, uint64(len(m.Username))) - i-- - dAtA[i] = 0x12 - } - if len(m.ConversationId) > 0 { - i -= len(m.ConversationId) - copy(dAtA[i:], m.ConversationId) - i = encodeVarintAuthservice(dAtA, i, uint64(len(m.ConversationId))) - i-- - dAtA[i] = 0xa - } - return len(dAtA) - i, nil -} - -func (m *GetAssistantMessagesResponse) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *GetAssistantMessagesResponse) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *GetAssistantMessagesResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if m.XXX_unrecognized != nil { - i -= len(m.XXX_unrecognized) - copy(dAtA[i:], m.XXX_unrecognized) - } - if len(m.Messages) > 0 { - for iNdEx := len(m.Messages) - 1; iNdEx >= 0; iNdEx-- { - { - size, err := m.Messages[iNdEx].MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintAuthservice(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0xa - } - } - return len(dAtA) - i, nil -} - -func (m *GetAssistantConversationsRequest) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *GetAssistantConversationsRequest) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *GetAssistantConversationsRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if m.XXX_unrecognized != nil { - i -= len(m.XXX_unrecognized) - copy(dAtA[i:], m.XXX_unrecognized) - } - if len(m.Username) > 0 { - i -= len(m.Username) - copy(dAtA[i:], m.Username) - i = encodeVarintAuthservice(dAtA, i, uint64(len(m.Username))) - i-- - dAtA[i] = 0xa - } - return len(dAtA) - i, nil -} - -func (m *ConversationInfo) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *ConversationInfo) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *ConversationInfo) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if m.XXX_unrecognized != nil { - i -= len(m.XXX_unrecognized) - copy(dAtA[i:], m.XXX_unrecognized) - } - n153, err153 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.CreatedTime, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.CreatedTime):]) - if err153 != nil { - return 0, err153 - } - i -= n153 - i = encodeVarintAuthservice(dAtA, i, uint64(n153)) - i-- - dAtA[i] = 0x1a - if len(m.Title) > 0 { - i -= len(m.Title) - copy(dAtA[i:], m.Title) - i = encodeVarintAuthservice(dAtA, i, uint64(len(m.Title))) - i-- - dAtA[i] = 0x12 - } - if len(m.Id) > 0 { - i -= len(m.Id) - copy(dAtA[i:], m.Id) - i = encodeVarintAuthservice(dAtA, i, uint64(len(m.Id))) - i-- - dAtA[i] = 0xa - } - return len(dAtA) - i, nil -} - -func (m *GetAssistantConversationsResponse) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *GetAssistantConversationsResponse) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *GetAssistantConversationsResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if m.XXX_unrecognized != nil { - i -= len(m.XXX_unrecognized) - copy(dAtA[i:], m.XXX_unrecognized) - } - if len(m.Conversations) > 0 { - for iNdEx := len(m.Conversations) - 1; iNdEx >= 0; iNdEx-- { - { - size, err := m.Conversations[iNdEx].MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintAuthservice(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0xa - } - } - return len(dAtA) - i, nil -} - -func (m *CreateAssistantConversationRequest) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *CreateAssistantConversationRequest) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *CreateAssistantConversationRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if m.XXX_unrecognized != nil { - i -= len(m.XXX_unrecognized) - copy(dAtA[i:], m.XXX_unrecognized) - } - n154, err154 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.CreatedTime, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.CreatedTime):]) - if err154 != nil { - return 0, err154 - } - i -= n154 - i = encodeVarintAuthservice(dAtA, i, uint64(n154)) - i-- - dAtA[i] = 0x12 - if len(m.Username) > 0 { - i -= len(m.Username) - copy(dAtA[i:], m.Username) - i = encodeVarintAuthservice(dAtA, i, uint64(len(m.Username))) - i-- - dAtA[i] = 0xa - } - return len(dAtA) - i, nil -} - -func (m *CreateAssistantConversationResponse) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *CreateAssistantConversationResponse) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *CreateAssistantConversationResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if m.XXX_unrecognized != nil { - i -= len(m.XXX_unrecognized) - copy(dAtA[i:], m.XXX_unrecognized) - } - if len(m.Id) > 0 { - i -= len(m.Id) - copy(dAtA[i:], m.Id) - i = encodeVarintAuthservice(dAtA, i, uint64(len(m.Id))) - i-- - dAtA[i] = 0xa - } - return len(dAtA) - i, nil -} - -func (m *UpdateAssistantConversationInfoRequest) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *UpdateAssistantConversationInfoRequest) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *UpdateAssistantConversationInfoRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if m.XXX_unrecognized != nil { - i -= len(m.XXX_unrecognized) - copy(dAtA[i:], m.XXX_unrecognized) - } - if len(m.Title) > 0 { - i -= len(m.Title) - copy(dAtA[i:], m.Title) - i = encodeVarintAuthservice(dAtA, i, uint64(len(m.Title))) - i-- - dAtA[i] = 0x1a - } - if len(m.Username) > 0 { - i -= len(m.Username) - copy(dAtA[i:], m.Username) - i = encodeVarintAuthservice(dAtA, i, uint64(len(m.Username))) - i-- - dAtA[i] = 0x12 - } - if len(m.ConversationId) > 0 { - i -= len(m.ConversationId) - copy(dAtA[i:], m.ConversationId) - i = encodeVarintAuthservice(dAtA, i, uint64(len(m.ConversationId))) - i-- - dAtA[i] = 0xa - } - return len(dAtA) - i, nil -} - func encodeVarintAuthservice(dAtA []byte, offset int, v uint64) int { offset -= sovAuthservice(v) base := offset @@ -42383,188 +41236,6 @@ func (m *ExportUpgradeWindowsResponse) Size() (n int) { return n } -func (m *AssistantMessageRequest) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - l = len(m.ConversationId) - if l > 0 { - n += 1 + l + sovAuthservice(uint64(l)) - } - l = len(m.Username) - if l > 0 { - n += 1 + l + sovAuthservice(uint64(l)) - } - if m.XXX_unrecognized != nil { - n += len(m.XXX_unrecognized) - } - return n -} - -func (m *AssistantMessage) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - l = len(m.ConversationId) - if l > 0 { - n += 1 + l + sovAuthservice(uint64(l)) - } - l = len(m.Username) - if l > 0 { - n += 1 + l + sovAuthservice(uint64(l)) - } - l = len(m.Type) - if l > 0 { - n += 1 + l + sovAuthservice(uint64(l)) - } - l = github_com_gogo_protobuf_types.SizeOfStdTime(m.CreatedTime) - n += 1 + l + sovAuthservice(uint64(l)) - l = len(m.Payload) - if l > 0 { - n += 1 + l + sovAuthservice(uint64(l)) - } - if m.XXX_unrecognized != nil { - n += len(m.XXX_unrecognized) - } - return n -} - -func (m *GetAssistantMessagesResponse) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - if len(m.Messages) > 0 { - for _, e := range m.Messages { - l = e.Size() - n += 1 + l + sovAuthservice(uint64(l)) - } - } - if m.XXX_unrecognized != nil { - n += len(m.XXX_unrecognized) - } - return n -} - -func (m *GetAssistantConversationsRequest) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - l = len(m.Username) - if l > 0 { - n += 1 + l + sovAuthservice(uint64(l)) - } - if m.XXX_unrecognized != nil { - n += len(m.XXX_unrecognized) - } - return n -} - -func (m *ConversationInfo) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - l = len(m.Id) - if l > 0 { - n += 1 + l + sovAuthservice(uint64(l)) - } - l = len(m.Title) - if l > 0 { - n += 1 + l + sovAuthservice(uint64(l)) - } - l = github_com_gogo_protobuf_types.SizeOfStdTime(m.CreatedTime) - n += 1 + l + sovAuthservice(uint64(l)) - if m.XXX_unrecognized != nil { - n += len(m.XXX_unrecognized) - } - return n -} - -func (m *GetAssistantConversationsResponse) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - if len(m.Conversations) > 0 { - for _, e := range m.Conversations { - l = e.Size() - n += 1 + l + sovAuthservice(uint64(l)) - } - } - if m.XXX_unrecognized != nil { - n += len(m.XXX_unrecognized) - } - return n -} - -func (m *CreateAssistantConversationRequest) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - l = len(m.Username) - if l > 0 { - n += 1 + l + sovAuthservice(uint64(l)) - } - l = github_com_gogo_protobuf_types.SizeOfStdTime(m.CreatedTime) - n += 1 + l + sovAuthservice(uint64(l)) - if m.XXX_unrecognized != nil { - n += len(m.XXX_unrecognized) - } - return n -} - -func (m *CreateAssistantConversationResponse) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - l = len(m.Id) - if l > 0 { - n += 1 + l + sovAuthservice(uint64(l)) - } - if m.XXX_unrecognized != nil { - n += len(m.XXX_unrecognized) - } - return n -} - -func (m *UpdateAssistantConversationInfoRequest) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - l = len(m.ConversationId) - if l > 0 { - n += 1 + l + sovAuthservice(uint64(l)) - } - l = len(m.Username) - if l > 0 { - n += 1 + l + sovAuthservice(uint64(l)) - } - l = len(m.Title) - if l > 0 { - n += 1 + l + sovAuthservice(uint64(l)) - } - if m.XXX_unrecognized != nil { - n += len(m.XXX_unrecognized) - } - return n -} - func sovAuthservice(x uint64) (n int) { return (math_bits.Len64(x|1) + 6) / 7 } @@ -67971,911 +66642,11 @@ func (m *CreateTokenV2Request) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - v := &types.ProvisionTokenV2{} - if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - m.Token = &CreateTokenV2Request_V2{v} - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipAuthservice(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthAuthservice - } - 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 *UpsertTokenV2Request) 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 ErrIntOverflowAuthservice - } - 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: UpsertTokenV2Request: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: UpsertTokenV2Request: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field V2", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowAuthservice - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthAuthservice - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthAuthservice - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - v := &types.ProvisionTokenV2{} - if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - m.Token = &UpsertTokenV2Request_V2{v} - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipAuthservice(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthAuthservice - } - 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 *GetHeadlessAuthenticationRequest) 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 ErrIntOverflowAuthservice - } - 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: GetHeadlessAuthenticationRequest: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: GetHeadlessAuthenticationRequest: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Id", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowAuthservice - } - 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 ErrInvalidLengthAuthservice - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthAuthservice - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Id = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipAuthservice(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthAuthservice - } - 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 *UpdateHeadlessAuthenticationStateRequest) 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 ErrIntOverflowAuthservice - } - 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: UpdateHeadlessAuthenticationStateRequest: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: UpdateHeadlessAuthenticationStateRequest: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Id", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowAuthservice - } - 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 ErrInvalidLengthAuthservice - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthAuthservice - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Id = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 2: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field State", wireType) - } - m.State = 0 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowAuthservice - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - m.State |= types.HeadlessAuthenticationState(b&0x7F) << shift - if b < 0x80 { - break - } - } - case 3: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field MfaResponse", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowAuthservice - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthAuthservice - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthAuthservice - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if m.MfaResponse == nil { - m.MfaResponse = &MFAAuthenticateResponse{} - } - if err := m.MfaResponse.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipAuthservice(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthAuthservice - } - 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 *ExportUpgradeWindowsRequest) 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 ErrIntOverflowAuthservice - } - 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: ExportUpgradeWindowsRequest: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: ExportUpgradeWindowsRequest: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field TeleportVersion", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowAuthservice - } - 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 ErrInvalidLengthAuthservice - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthAuthservice - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.TeleportVersion = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 2: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field UpgraderKind", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowAuthservice - } - 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 ErrInvalidLengthAuthservice - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthAuthservice - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.UpgraderKind = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipAuthservice(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthAuthservice - } - 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 *ExportUpgradeWindowsResponse) 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 ErrIntOverflowAuthservice - } - 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: ExportUpgradeWindowsResponse: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: ExportUpgradeWindowsResponse: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field CanonicalSchedule", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowAuthservice - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthAuthservice - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthAuthservice - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if m.CanonicalSchedule == nil { - m.CanonicalSchedule = &types.AgentUpgradeSchedule{} - } - if err := m.CanonicalSchedule.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - case 2: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field KubeControllerSchedule", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowAuthservice - } - 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 ErrInvalidLengthAuthservice - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthAuthservice - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.KubeControllerSchedule = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 3: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field SystemdUnitSchedule", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowAuthservice - } - 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 ErrInvalidLengthAuthservice - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthAuthservice - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.SystemdUnitSchedule = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipAuthservice(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthAuthservice - } - 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 *AssistantMessageRequest) 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 ErrIntOverflowAuthservice - } - 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: AssistantMessageRequest: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: AssistantMessageRequest: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field ConversationId", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowAuthservice - } - 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 ErrInvalidLengthAuthservice - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthAuthservice - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.ConversationId = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 2: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Username", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowAuthservice - } - 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 ErrInvalidLengthAuthservice - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthAuthservice - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Username = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipAuthservice(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthAuthservice - } - 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 *AssistantMessage) 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 ErrIntOverflowAuthservice - } - 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: AssistantMessage: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: AssistantMessage: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field ConversationId", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowAuthservice - } - 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 ErrInvalidLengthAuthservice - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthAuthservice - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.ConversationId = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 2: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Username", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowAuthservice - } - 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 ErrInvalidLengthAuthservice - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthAuthservice - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Username = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 3: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Type", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowAuthservice - } - 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 ErrInvalidLengthAuthservice - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthAuthservice - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Type = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 4: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field CreatedTime", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowAuthservice - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthAuthservice - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthAuthservice - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if err := github_com_gogo_protobuf_types.StdTimeUnmarshal(&m.CreatedTime, dAtA[iNdEx:postIndex]); err != nil { + v := &types.ProvisionTokenV2{} + if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } - iNdEx = postIndex - case 5: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Payload", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowAuthservice - } - 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 ErrInvalidLengthAuthservice - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthAuthservice - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Payload = string(dAtA[iNdEx:postIndex]) + m.Token = &CreateTokenV2Request_V2{v} iNdEx = postIndex default: iNdEx = preIndex @@ -68899,7 +66670,7 @@ func (m *AssistantMessage) Unmarshal(dAtA []byte) error { } return nil } -func (m *GetAssistantMessagesResponse) Unmarshal(dAtA []byte) error { +func (m *UpsertTokenV2Request) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -68922,15 +66693,15 @@ func (m *GetAssistantMessagesResponse) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: GetAssistantMessagesResponse: wiretype end group for non-group") + return fmt.Errorf("proto: UpsertTokenV2Request: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: GetAssistantMessagesResponse: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: UpsertTokenV2Request: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Messages", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field V2", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -68957,10 +66728,11 @@ func (m *GetAssistantMessagesResponse) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.Messages = append(m.Messages, &AssistantMessage{}) - if err := m.Messages[len(m.Messages)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + v := &types.ProvisionTokenV2{} + if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } + m.Token = &UpsertTokenV2Request_V2{v} iNdEx = postIndex default: iNdEx = preIndex @@ -68984,7 +66756,7 @@ func (m *GetAssistantMessagesResponse) Unmarshal(dAtA []byte) error { } return nil } -func (m *GetAssistantConversationsRequest) Unmarshal(dAtA []byte) error { +func (m *GetHeadlessAuthenticationRequest) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -69007,15 +66779,15 @@ func (m *GetAssistantConversationsRequest) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: GetAssistantConversationsRequest: wiretype end group for non-group") + return fmt.Errorf("proto: GetHeadlessAuthenticationRequest: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: GetAssistantConversationsRequest: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: GetHeadlessAuthenticationRequest: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Username", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Id", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -69043,7 +66815,7 @@ func (m *GetAssistantConversationsRequest) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.Username = string(dAtA[iNdEx:postIndex]) + m.Id = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex default: iNdEx = preIndex @@ -69067,7 +66839,7 @@ func (m *GetAssistantConversationsRequest) Unmarshal(dAtA []byte) error { } return nil } -func (m *ConversationInfo) Unmarshal(dAtA []byte) error { +func (m *UpdateHeadlessAuthenticationStateRequest) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -69090,10 +66862,10 @@ func (m *ConversationInfo) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: ConversationInfo: wiretype end group for non-group") + return fmt.Errorf("proto: UpdateHeadlessAuthenticationStateRequest: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: ConversationInfo: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: UpdateHeadlessAuthenticationStateRequest: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: @@ -69129,10 +66901,10 @@ func (m *ConversationInfo) Unmarshal(dAtA []byte) error { m.Id = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex case 2: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Title", wireType) + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field State", wireType) } - var stringLen uint64 + m.State = 0 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowAuthservice @@ -69142,27 +66914,14 @@ func (m *ConversationInfo) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= uint64(b&0x7F) << shift + m.State |= types.HeadlessAuthenticationState(b&0x7F) << shift if b < 0x80 { break } } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthAuthservice - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthAuthservice - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Title = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex case 3: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field CreatedTime", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field MfaResponse", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -69189,92 +66948,10 @@ func (m *ConversationInfo) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if err := github_com_gogo_protobuf_types.StdTimeUnmarshal(&m.CreatedTime, dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipAuthservice(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthAuthservice - } - 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 *GetAssistantConversationsResponse) 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 ErrIntOverflowAuthservice - } - 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: GetAssistantConversationsResponse: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: GetAssistantConversationsResponse: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Conversations", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowAuthservice - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthAuthservice - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthAuthservice - } - if postIndex > l { - return io.ErrUnexpectedEOF + if m.MfaResponse == nil { + m.MfaResponse = &MFAAuthenticateResponse{} } - m.Conversations = append(m.Conversations, &ConversationInfo{}) - if err := m.Conversations[len(m.Conversations)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if err := m.MfaResponse.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex @@ -69300,7 +66977,7 @@ func (m *GetAssistantConversationsResponse) Unmarshal(dAtA []byte) error { } return nil } -func (m *CreateAssistantConversationRequest) Unmarshal(dAtA []byte) error { +func (m *ExportUpgradeWindowsRequest) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -69323,15 +67000,15 @@ func (m *CreateAssistantConversationRequest) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: CreateAssistantConversationRequest: wiretype end group for non-group") + return fmt.Errorf("proto: ExportUpgradeWindowsRequest: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: CreateAssistantConversationRequest: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: ExportUpgradeWindowsRequest: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Username", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field TeleportVersion", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -69359,95 +67036,11 @@ func (m *CreateAssistantConversationRequest) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.Username = string(dAtA[iNdEx:postIndex]) + m.TeleportVersion = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex case 2: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field CreatedTime", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowAuthservice - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthAuthservice - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthAuthservice - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if err := github_com_gogo_protobuf_types.StdTimeUnmarshal(&m.CreatedTime, dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipAuthservice(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthAuthservice - } - 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 *CreateAssistantConversationResponse) 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 ErrIntOverflowAuthservice - } - 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: CreateAssistantConversationResponse: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: CreateAssistantConversationResponse: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Id", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field UpgraderKind", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -69475,7 +67068,7 @@ func (m *CreateAssistantConversationResponse) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.Id = string(dAtA[iNdEx:postIndex]) + m.UpgraderKind = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex default: iNdEx = preIndex @@ -69499,7 +67092,7 @@ func (m *CreateAssistantConversationResponse) Unmarshal(dAtA []byte) error { } return nil } -func (m *UpdateAssistantConversationInfoRequest) Unmarshal(dAtA []byte) error { +func (m *ExportUpgradeWindowsResponse) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -69522,17 +67115,17 @@ func (m *UpdateAssistantConversationInfoRequest) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: UpdateAssistantConversationInfoRequest: wiretype end group for non-group") + return fmt.Errorf("proto: ExportUpgradeWindowsResponse: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: UpdateAssistantConversationInfoRequest: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: ExportUpgradeWindowsResponse: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field ConversationId", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field CanonicalSchedule", wireType) } - var stringLen uint64 + var msglen int for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowAuthservice @@ -69542,27 +67135,31 @@ func (m *UpdateAssistantConversationInfoRequest) 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 ErrInvalidLengthAuthservice } - postIndex := iNdEx + intStringLen + postIndex := iNdEx + msglen if postIndex < 0 { return ErrInvalidLengthAuthservice } if postIndex > l { return io.ErrUnexpectedEOF } - m.ConversationId = string(dAtA[iNdEx:postIndex]) + if m.CanonicalSchedule == nil { + m.CanonicalSchedule = &types.AgentUpgradeSchedule{} + } + if err := m.CanonicalSchedule.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } iNdEx = postIndex case 2: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Username", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field KubeControllerSchedule", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -69590,11 +67187,11 @@ func (m *UpdateAssistantConversationInfoRequest) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.Username = string(dAtA[iNdEx:postIndex]) + m.KubeControllerSchedule = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex case 3: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Title", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field SystemdUnitSchedule", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -69622,7 +67219,7 @@ func (m *UpdateAssistantConversationInfoRequest) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.Title = string(dAtA[iNdEx:postIndex]) + m.SystemdUnitSchedule = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex default: iNdEx = preIndex diff --git a/api/gen/proto/go/assist/v1/assist.pb.go b/api/gen/proto/go/assist/v1/assist.pb.go new file mode 100644 index 0000000000000..325e2bbf0eb3f --- /dev/null +++ b/api/gen/proto/go/assist/v1/assist.pb.go @@ -0,0 +1,931 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.30.0 +// protoc (unknown) +// source: teleport/assist/v1/assist.proto + +package assist + +import ( + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + emptypb "google.golang.org/protobuf/types/known/emptypb" + timestamppb "google.golang.org/protobuf/types/known/timestamppb" + reflect "reflect" + sync "sync" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +// GetAssistantMessagesRequest is a request to the assistant service. +type GetAssistantMessagesRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // ConversationId identifies a conversation. + // It's used to tie all messages in a one conversation. + ConversationId string `protobuf:"bytes,1,opt,name=conversation_id,json=conversationId,proto3" json:"conversation_id,omitempty"` + // username is a username of the user who sent the message. + Username string `protobuf:"bytes,2,opt,name=username,proto3" json:"username,omitempty"` +} + +func (x *GetAssistantMessagesRequest) Reset() { + *x = GetAssistantMessagesRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_teleport_assist_v1_assist_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetAssistantMessagesRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetAssistantMessagesRequest) ProtoMessage() {} + +func (x *GetAssistantMessagesRequest) ProtoReflect() protoreflect.Message { + mi := &file_teleport_assist_v1_assist_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetAssistantMessagesRequest.ProtoReflect.Descriptor instead. +func (*GetAssistantMessagesRequest) Descriptor() ([]byte, []int) { + return file_teleport_assist_v1_assist_proto_rawDescGZIP(), []int{0} +} + +func (x *GetAssistantMessagesRequest) GetConversationId() string { + if x != nil { + return x.ConversationId + } + return "" +} + +func (x *GetAssistantMessagesRequest) GetUsername() string { + if x != nil { + return x.Username + } + return "" +} + +// AssistantMessage is a message sent to the assistant service. The conversation +// must be created first. +type AssistantMessage struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // ConversationId is used to tie all messages into a conversation. + ConversationId string `protobuf:"bytes,1,opt,name=conversation_id,json=conversationId,proto3" json:"conversation_id,omitempty"` + // username is a username of the user who sent the message. + Username string `protobuf:"bytes,2,opt,name=username,proto3" json:"username,omitempty"` + // type is a type of message. It can be Chat response/query or a command to run. + Type string `protobuf:"bytes,3,opt,name=type,proto3" json:"type,omitempty"` + // CreatedTime is the time when the event occurred. + CreatedTime *timestamppb.Timestamp `protobuf:"bytes,4,opt,name=created_time,json=createdTime,proto3" json:"created_time,omitempty"` + // payload is a JSON message + Payload string `protobuf:"bytes,5,opt,name=payload,proto3" json:"payload,omitempty"` +} + +func (x *AssistantMessage) Reset() { + *x = AssistantMessage{} + if protoimpl.UnsafeEnabled { + mi := &file_teleport_assist_v1_assist_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *AssistantMessage) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AssistantMessage) ProtoMessage() {} + +func (x *AssistantMessage) ProtoReflect() protoreflect.Message { + mi := &file_teleport_assist_v1_assist_proto_msgTypes[1] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use AssistantMessage.ProtoReflect.Descriptor instead. +func (*AssistantMessage) Descriptor() ([]byte, []int) { + return file_teleport_assist_v1_assist_proto_rawDescGZIP(), []int{1} +} + +func (x *AssistantMessage) GetConversationId() string { + if x != nil { + return x.ConversationId + } + return "" +} + +func (x *AssistantMessage) GetUsername() string { + if x != nil { + return x.Username + } + return "" +} + +func (x *AssistantMessage) GetType() string { + if x != nil { + return x.Type + } + return "" +} + +func (x *AssistantMessage) GetCreatedTime() *timestamppb.Timestamp { + if x != nil { + return x.CreatedTime + } + return nil +} + +func (x *AssistantMessage) GetPayload() string { + if x != nil { + return x.Payload + } + return "" +} + +// CreateAssistantMessageRequest is a request to the assistant service. +type CreateAssistantMessageRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // message is a message sent to the assistant service. + Message *AssistantMessage `protobuf:"bytes,1,opt,name=message,proto3" json:"message,omitempty"` +} + +func (x *CreateAssistantMessageRequest) Reset() { + *x = CreateAssistantMessageRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_teleport_assist_v1_assist_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CreateAssistantMessageRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CreateAssistantMessageRequest) ProtoMessage() {} + +func (x *CreateAssistantMessageRequest) ProtoReflect() protoreflect.Message { + mi := &file_teleport_assist_v1_assist_proto_msgTypes[2] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CreateAssistantMessageRequest.ProtoReflect.Descriptor instead. +func (*CreateAssistantMessageRequest) Descriptor() ([]byte, []int) { + return file_teleport_assist_v1_assist_proto_rawDescGZIP(), []int{2} +} + +func (x *CreateAssistantMessageRequest) GetMessage() *AssistantMessage { + if x != nil { + return x.Message + } + return nil +} + +// GetAssistantMessagesResponse is a response from the assistant service. +type GetAssistantMessagesResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // messages is a list of messages. + Messages []*AssistantMessage `protobuf:"bytes,1,rep,name=messages,proto3" json:"messages,omitempty"` +} + +func (x *GetAssistantMessagesResponse) Reset() { + *x = GetAssistantMessagesResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_teleport_assist_v1_assist_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetAssistantMessagesResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetAssistantMessagesResponse) ProtoMessage() {} + +func (x *GetAssistantMessagesResponse) ProtoReflect() protoreflect.Message { + mi := &file_teleport_assist_v1_assist_proto_msgTypes[3] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetAssistantMessagesResponse.ProtoReflect.Descriptor instead. +func (*GetAssistantMessagesResponse) Descriptor() ([]byte, []int) { + return file_teleport_assist_v1_assist_proto_rawDescGZIP(), []int{3} +} + +func (x *GetAssistantMessagesResponse) GetMessages() []*AssistantMessage { + if x != nil { + return x.Messages + } + return nil +} + +// GetAssistantConversationsRequest is a request to get a list of conversations. +type GetAssistantConversationsRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // username is a username of the user who created the conversation. + Username string `protobuf:"bytes,1,opt,name=username,proto3" json:"username,omitempty"` +} + +func (x *GetAssistantConversationsRequest) Reset() { + *x = GetAssistantConversationsRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_teleport_assist_v1_assist_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetAssistantConversationsRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetAssistantConversationsRequest) ProtoMessage() {} + +func (x *GetAssistantConversationsRequest) ProtoReflect() protoreflect.Message { + mi := &file_teleport_assist_v1_assist_proto_msgTypes[4] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetAssistantConversationsRequest.ProtoReflect.Descriptor instead. +func (*GetAssistantConversationsRequest) Descriptor() ([]byte, []int) { + return file_teleport_assist_v1_assist_proto_rawDescGZIP(), []int{4} +} + +func (x *GetAssistantConversationsRequest) GetUsername() string { + if x != nil { + return x.Username + } + return "" +} + +// ConversationInfo is a conversation info. It contains a conversation +// information like ID, title, created time. +type ConversationInfo struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // id is a unique conversation ID. + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + // title is a title of the conversation. + Title string `protobuf:"bytes,2,opt,name=title,proto3" json:"title,omitempty"` + // createdTime is the time when the conversation was created. + CreatedTime *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=created_time,json=createdTime,proto3" json:"created_time,omitempty"` +} + +func (x *ConversationInfo) Reset() { + *x = ConversationInfo{} + if protoimpl.UnsafeEnabled { + mi := &file_teleport_assist_v1_assist_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ConversationInfo) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ConversationInfo) ProtoMessage() {} + +func (x *ConversationInfo) ProtoReflect() protoreflect.Message { + mi := &file_teleport_assist_v1_assist_proto_msgTypes[5] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ConversationInfo.ProtoReflect.Descriptor instead. +func (*ConversationInfo) Descriptor() ([]byte, []int) { + return file_teleport_assist_v1_assist_proto_rawDescGZIP(), []int{5} +} + +func (x *ConversationInfo) GetId() string { + if x != nil { + return x.Id + } + return "" +} + +func (x *ConversationInfo) GetTitle() string { + if x != nil { + return x.Title + } + return "" +} + +func (x *ConversationInfo) GetCreatedTime() *timestamppb.Timestamp { + if x != nil { + return x.CreatedTime + } + return nil +} + +// GetAssistantConversationsResponse is a response from the assistant service. +type GetAssistantConversationsResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // conversations is a list of conversations. + Conversations []*ConversationInfo `protobuf:"bytes,1,rep,name=conversations,proto3" json:"conversations,omitempty"` +} + +func (x *GetAssistantConversationsResponse) Reset() { + *x = GetAssistantConversationsResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_teleport_assist_v1_assist_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetAssistantConversationsResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetAssistantConversationsResponse) ProtoMessage() {} + +func (x *GetAssistantConversationsResponse) ProtoReflect() protoreflect.Message { + mi := &file_teleport_assist_v1_assist_proto_msgTypes[6] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetAssistantConversationsResponse.ProtoReflect.Descriptor instead. +func (*GetAssistantConversationsResponse) Descriptor() ([]byte, []int) { + return file_teleport_assist_v1_assist_proto_rawDescGZIP(), []int{6} +} + +func (x *GetAssistantConversationsResponse) GetConversations() []*ConversationInfo { + if x != nil { + return x.Conversations + } + return nil +} + +// CreateAssistantConversationRequest is a request to create a new conversation. +type CreateAssistantConversationRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // username is a username of the user who created the conversation. + Username string `protobuf:"bytes,1,opt,name=username,proto3" json:"username,omitempty"` + // createdTime is the time when the conversation was created. + CreatedTime *timestamppb.Timestamp `protobuf:"bytes,2,opt,name=created_time,json=createdTime,proto3" json:"created_time,omitempty"` +} + +func (x *CreateAssistantConversationRequest) Reset() { + *x = CreateAssistantConversationRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_teleport_assist_v1_assist_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CreateAssistantConversationRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CreateAssistantConversationRequest) ProtoMessage() {} + +func (x *CreateAssistantConversationRequest) ProtoReflect() protoreflect.Message { + mi := &file_teleport_assist_v1_assist_proto_msgTypes[7] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CreateAssistantConversationRequest.ProtoReflect.Descriptor instead. +func (*CreateAssistantConversationRequest) Descriptor() ([]byte, []int) { + return file_teleport_assist_v1_assist_proto_rawDescGZIP(), []int{7} +} + +func (x *CreateAssistantConversationRequest) GetUsername() string { + if x != nil { + return x.Username + } + return "" +} + +func (x *CreateAssistantConversationRequest) GetCreatedTime() *timestamppb.Timestamp { + if x != nil { + return x.CreatedTime + } + return nil +} + +// CreateAssistantConversationResponse is a response from the assistant service. +type CreateAssistantConversationResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // id is a unique conversation ID. + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` +} + +func (x *CreateAssistantConversationResponse) Reset() { + *x = CreateAssistantConversationResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_teleport_assist_v1_assist_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CreateAssistantConversationResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CreateAssistantConversationResponse) ProtoMessage() {} + +func (x *CreateAssistantConversationResponse) ProtoReflect() protoreflect.Message { + mi := &file_teleport_assist_v1_assist_proto_msgTypes[8] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CreateAssistantConversationResponse.ProtoReflect.Descriptor instead. +func (*CreateAssistantConversationResponse) Descriptor() ([]byte, []int) { + return file_teleport_assist_v1_assist_proto_rawDescGZIP(), []int{8} +} + +func (x *CreateAssistantConversationResponse) GetId() string { + if x != nil { + return x.Id + } + return "" +} + +// UpdateAssistantConversationInfoRequest is a request to update the conversation info. +type UpdateAssistantConversationInfoRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // conversationId is a unique conversation ID. + ConversationId string `protobuf:"bytes,1,opt,name=conversation_id,json=conversationId,proto3" json:"conversation_id,omitempty"` + // username is a username of the user who created the conversation. + Username string `protobuf:"bytes,2,opt,name=username,proto3" json:"username,omitempty"` + // title is a title of the conversation. + Title string `protobuf:"bytes,3,opt,name=title,proto3" json:"title,omitempty"` +} + +func (x *UpdateAssistantConversationInfoRequest) Reset() { + *x = UpdateAssistantConversationInfoRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_teleport_assist_v1_assist_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *UpdateAssistantConversationInfoRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*UpdateAssistantConversationInfoRequest) ProtoMessage() {} + +func (x *UpdateAssistantConversationInfoRequest) ProtoReflect() protoreflect.Message { + mi := &file_teleport_assist_v1_assist_proto_msgTypes[9] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use UpdateAssistantConversationInfoRequest.ProtoReflect.Descriptor instead. +func (*UpdateAssistantConversationInfoRequest) Descriptor() ([]byte, []int) { + return file_teleport_assist_v1_assist_proto_rawDescGZIP(), []int{9} +} + +func (x *UpdateAssistantConversationInfoRequest) GetConversationId() string { + if x != nil { + return x.ConversationId + } + return "" +} + +func (x *UpdateAssistantConversationInfoRequest) GetUsername() string { + if x != nil { + return x.Username + } + return "" +} + +func (x *UpdateAssistantConversationInfoRequest) GetTitle() string { + if x != nil { + return x.Title + } + return "" +} + +var File_teleport_assist_v1_assist_proto protoreflect.FileDescriptor + +var file_teleport_assist_v1_assist_proto_rawDesc = []byte{ + 0x0a, 0x1f, 0x74, 0x65, 0x6c, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x2f, 0x61, 0x73, 0x73, 0x69, 0x73, + 0x74, 0x2f, 0x76, 0x31, 0x2f, 0x61, 0x73, 0x73, 0x69, 0x73, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x12, 0x12, 0x74, 0x65, 0x6c, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x61, 0x73, 0x73, 0x69, + 0x73, 0x74, 0x2e, 0x76, 0x31, 0x1a, 0x1b, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x22, 0x62, 0x0a, 0x1b, 0x47, 0x65, 0x74, 0x41, 0x73, 0x73, 0x69, 0x73, 0x74, + 0x61, 0x6e, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x12, 0x27, 0x0a, 0x0f, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x63, 0x6f, 0x6e, + 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x75, + 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, + 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0xc4, 0x01, 0x0a, 0x10, 0x41, 0x73, 0x73, 0x69, + 0x73, 0x74, 0x61, 0x6e, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x27, 0x0a, 0x0f, + 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, + 0x65, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x3d, 0x0a, 0x0c, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, + 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, + 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0b, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, + 0x54, 0x69, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x22, 0x5f, + 0x0a, 0x1d, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x73, 0x73, 0x69, 0x73, 0x74, 0x61, 0x6e, + 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x3e, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x24, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x61, 0x73, 0x73, 0x69, + 0x73, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x73, 0x73, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x4d, + 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, + 0x60, 0x0a, 0x1c, 0x47, 0x65, 0x74, 0x41, 0x73, 0x73, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x4d, + 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, + 0x40, 0x0a, 0x08, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x24, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x61, 0x73, 0x73, + 0x69, 0x73, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x73, 0x73, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x74, + 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x08, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, + 0x73, 0x22, 0x3e, 0x0a, 0x20, 0x47, 0x65, 0x74, 0x41, 0x73, 0x73, 0x69, 0x73, 0x74, 0x61, 0x6e, + 0x74, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, + 0x65, 0x22, 0x77, 0x0a, 0x10, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x3d, 0x0a, 0x0c, 0x63, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0b, 0x63, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x22, 0x6f, 0x0a, 0x21, 0x47, 0x65, + 0x74, 0x41, 0x73, 0x73, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, + 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, + 0x4a, 0x0a, 0x0d, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x70, 0x6f, 0x72, + 0x74, 0x2e, 0x61, 0x73, 0x73, 0x69, 0x73, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x76, + 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0d, 0x63, 0x6f, + 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x7f, 0x0a, 0x22, 0x43, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x73, 0x73, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x43, 0x6f, + 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x3d, 0x0a, + 0x0c, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, + 0x0b, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x22, 0x35, 0x0a, 0x23, + 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x73, 0x73, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x43, + 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x02, 0x69, 0x64, 0x22, 0x83, 0x01, 0x0a, 0x26, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x73, + 0x73, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x27, + 0x0a, 0x0f, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, + 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, + 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, + 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x32, 0x82, 0x05, 0x0a, 0x0d, 0x41, 0x73, + 0x73, 0x69, 0x73, 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x8e, 0x01, 0x0a, 0x1b, + 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x73, 0x73, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x43, + 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x36, 0x2e, 0x74, 0x65, + 0x6c, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x61, 0x73, 0x73, 0x69, 0x73, 0x74, 0x2e, 0x76, 0x31, + 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x73, 0x73, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x74, + 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x37, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x61, + 0x73, 0x73, 0x69, 0x73, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, + 0x73, 0x73, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x88, 0x01, 0x0a, + 0x19, 0x47, 0x65, 0x74, 0x41, 0x73, 0x73, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x43, 0x6f, 0x6e, + 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x34, 0x2e, 0x74, 0x65, 0x6c, + 0x65, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x61, 0x73, 0x73, 0x69, 0x73, 0x74, 0x2e, 0x76, 0x31, 0x2e, + 0x47, 0x65, 0x74, 0x41, 0x73, 0x73, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x76, + 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x35, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x61, 0x73, 0x73, 0x69, + 0x73, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x73, 0x73, 0x69, 0x73, 0x74, 0x61, + 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x79, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x41, 0x73, + 0x73, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x12, + 0x2f, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x61, 0x73, 0x73, 0x69, 0x73, + 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x73, 0x73, 0x69, 0x73, 0x74, 0x61, 0x6e, + 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x30, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x61, 0x73, 0x73, 0x69, + 0x73, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x73, 0x73, 0x69, 0x73, 0x74, 0x61, + 0x6e, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x12, 0x63, 0x0a, 0x16, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x73, 0x73, 0x69, + 0x73, 0x74, 0x61, 0x6e, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x31, 0x2e, 0x74, + 0x65, 0x6c, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x61, 0x73, 0x73, 0x69, 0x73, 0x74, 0x2e, 0x76, + 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x73, 0x73, 0x69, 0x73, 0x74, 0x61, 0x6e, + 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x75, 0x0a, 0x1f, 0x55, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x41, 0x73, 0x73, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, + 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x3a, 0x2e, 0x74, 0x65, 0x6c, + 0x65, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x61, 0x73, 0x73, 0x69, 0x73, 0x74, 0x2e, 0x76, 0x31, 0x2e, + 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x73, 0x73, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x43, + 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x42, 0x45, + 0x5a, 0x43, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x72, 0x61, + 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x74, 0x65, 0x6c, 0x65, 0x70, + 0x6f, 0x72, 0x74, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x65, 0x6e, 0x2f, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x2f, 0x67, 0x6f, 0x2f, 0x61, 0x73, 0x73, 0x69, 0x73, 0x74, 0x2f, 0x76, 0x31, 0x3b, 0x61, + 0x73, 0x73, 0x69, 0x73, 0x74, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +} + +var ( + file_teleport_assist_v1_assist_proto_rawDescOnce sync.Once + file_teleport_assist_v1_assist_proto_rawDescData = file_teleport_assist_v1_assist_proto_rawDesc +) + +func file_teleport_assist_v1_assist_proto_rawDescGZIP() []byte { + file_teleport_assist_v1_assist_proto_rawDescOnce.Do(func() { + file_teleport_assist_v1_assist_proto_rawDescData = protoimpl.X.CompressGZIP(file_teleport_assist_v1_assist_proto_rawDescData) + }) + return file_teleport_assist_v1_assist_proto_rawDescData +} + +var file_teleport_assist_v1_assist_proto_msgTypes = make([]protoimpl.MessageInfo, 10) +var file_teleport_assist_v1_assist_proto_goTypes = []interface{}{ + (*GetAssistantMessagesRequest)(nil), // 0: teleport.assist.v1.GetAssistantMessagesRequest + (*AssistantMessage)(nil), // 1: teleport.assist.v1.AssistantMessage + (*CreateAssistantMessageRequest)(nil), // 2: teleport.assist.v1.CreateAssistantMessageRequest + (*GetAssistantMessagesResponse)(nil), // 3: teleport.assist.v1.GetAssistantMessagesResponse + (*GetAssistantConversationsRequest)(nil), // 4: teleport.assist.v1.GetAssistantConversationsRequest + (*ConversationInfo)(nil), // 5: teleport.assist.v1.ConversationInfo + (*GetAssistantConversationsResponse)(nil), // 6: teleport.assist.v1.GetAssistantConversationsResponse + (*CreateAssistantConversationRequest)(nil), // 7: teleport.assist.v1.CreateAssistantConversationRequest + (*CreateAssistantConversationResponse)(nil), // 8: teleport.assist.v1.CreateAssistantConversationResponse + (*UpdateAssistantConversationInfoRequest)(nil), // 9: teleport.assist.v1.UpdateAssistantConversationInfoRequest + (*timestamppb.Timestamp)(nil), // 10: google.protobuf.Timestamp + (*emptypb.Empty)(nil), // 11: google.protobuf.Empty +} +var file_teleport_assist_v1_assist_proto_depIdxs = []int32{ + 10, // 0: teleport.assist.v1.AssistantMessage.created_time:type_name -> google.protobuf.Timestamp + 1, // 1: teleport.assist.v1.CreateAssistantMessageRequest.message:type_name -> teleport.assist.v1.AssistantMessage + 1, // 2: teleport.assist.v1.GetAssistantMessagesResponse.messages:type_name -> teleport.assist.v1.AssistantMessage + 10, // 3: teleport.assist.v1.ConversationInfo.created_time:type_name -> google.protobuf.Timestamp + 5, // 4: teleport.assist.v1.GetAssistantConversationsResponse.conversations:type_name -> teleport.assist.v1.ConversationInfo + 10, // 5: teleport.assist.v1.CreateAssistantConversationRequest.created_time:type_name -> google.protobuf.Timestamp + 7, // 6: teleport.assist.v1.AssistService.CreateAssistantConversation:input_type -> teleport.assist.v1.CreateAssistantConversationRequest + 4, // 7: teleport.assist.v1.AssistService.GetAssistantConversations:input_type -> teleport.assist.v1.GetAssistantConversationsRequest + 0, // 8: teleport.assist.v1.AssistService.GetAssistantMessages:input_type -> teleport.assist.v1.GetAssistantMessagesRequest + 2, // 9: teleport.assist.v1.AssistService.CreateAssistantMessage:input_type -> teleport.assist.v1.CreateAssistantMessageRequest + 9, // 10: teleport.assist.v1.AssistService.UpdateAssistantConversationInfo:input_type -> teleport.assist.v1.UpdateAssistantConversationInfoRequest + 8, // 11: teleport.assist.v1.AssistService.CreateAssistantConversation:output_type -> teleport.assist.v1.CreateAssistantConversationResponse + 6, // 12: teleport.assist.v1.AssistService.GetAssistantConversations:output_type -> teleport.assist.v1.GetAssistantConversationsResponse + 3, // 13: teleport.assist.v1.AssistService.GetAssistantMessages:output_type -> teleport.assist.v1.GetAssistantMessagesResponse + 11, // 14: teleport.assist.v1.AssistService.CreateAssistantMessage:output_type -> google.protobuf.Empty + 11, // 15: teleport.assist.v1.AssistService.UpdateAssistantConversationInfo:output_type -> google.protobuf.Empty + 11, // [11:16] is the sub-list for method output_type + 6, // [6:11] is the sub-list for method input_type + 6, // [6:6] is the sub-list for extension type_name + 6, // [6:6] is the sub-list for extension extendee + 0, // [0:6] is the sub-list for field type_name +} + +func init() { file_teleport_assist_v1_assist_proto_init() } +func file_teleport_assist_v1_assist_proto_init() { + if File_teleport_assist_v1_assist_proto != nil { + return + } + if !protoimpl.UnsafeEnabled { + file_teleport_assist_v1_assist_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetAssistantMessagesRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_teleport_assist_v1_assist_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*AssistantMessage); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_teleport_assist_v1_assist_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CreateAssistantMessageRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_teleport_assist_v1_assist_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetAssistantMessagesResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_teleport_assist_v1_assist_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetAssistantConversationsRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_teleport_assist_v1_assist_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ConversationInfo); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_teleport_assist_v1_assist_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetAssistantConversationsResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_teleport_assist_v1_assist_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CreateAssistantConversationRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_teleport_assist_v1_assist_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CreateAssistantConversationResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_teleport_assist_v1_assist_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*UpdateAssistantConversationInfoRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_teleport_assist_v1_assist_proto_rawDesc, + NumEnums: 0, + NumMessages: 10, + NumExtensions: 0, + NumServices: 1, + }, + GoTypes: file_teleport_assist_v1_assist_proto_goTypes, + DependencyIndexes: file_teleport_assist_v1_assist_proto_depIdxs, + MessageInfos: file_teleport_assist_v1_assist_proto_msgTypes, + }.Build() + File_teleport_assist_v1_assist_proto = out.File + file_teleport_assist_v1_assist_proto_rawDesc = nil + file_teleport_assist_v1_assist_proto_goTypes = nil + file_teleport_assist_v1_assist_proto_depIdxs = nil +} diff --git a/api/gen/proto/go/assist/v1/assist_grpc.pb.go b/api/gen/proto/go/assist/v1/assist_grpc.pb.go new file mode 100644 index 0000000000000..6876b4a33abdd --- /dev/null +++ b/api/gen/proto/go/assist/v1/assist_grpc.pb.go @@ -0,0 +1,268 @@ +// Code generated by protoc-gen-go-grpc. DO NOT EDIT. +// versions: +// - protoc-gen-go-grpc v1.3.0 +// - protoc (unknown) +// source: teleport/assist/v1/assist.proto + +package assist + +import ( + context "context" + grpc "google.golang.org/grpc" + codes "google.golang.org/grpc/codes" + status "google.golang.org/grpc/status" + emptypb "google.golang.org/protobuf/types/known/emptypb" +) + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the grpc package it is being compiled against. +// Requires gRPC-Go v1.32.0 or later. +const _ = grpc.SupportPackageIsVersion7 + +const ( + AssistService_CreateAssistantConversation_FullMethodName = "/teleport.assist.v1.AssistService/CreateAssistantConversation" + AssistService_GetAssistantConversations_FullMethodName = "/teleport.assist.v1.AssistService/GetAssistantConversations" + AssistService_GetAssistantMessages_FullMethodName = "/teleport.assist.v1.AssistService/GetAssistantMessages" + AssistService_CreateAssistantMessage_FullMethodName = "/teleport.assist.v1.AssistService/CreateAssistantMessage" + AssistService_UpdateAssistantConversationInfo_FullMethodName = "/teleport.assist.v1.AssistService/UpdateAssistantConversationInfo" +) + +// AssistServiceClient is the client API for AssistService service. +// +// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. +type AssistServiceClient interface { + // CreateNewConversation creates a new conversation and returns the UUID of it. + CreateAssistantConversation(ctx context.Context, in *CreateAssistantConversationRequest, opts ...grpc.CallOption) (*CreateAssistantConversationResponse, error) + // GetAssistantConversations returns all conversations for the connected user. + GetAssistantConversations(ctx context.Context, in *GetAssistantConversationsRequest, opts ...grpc.CallOption) (*GetAssistantConversationsResponse, error) + // GetAssistantMessages returns all messages associated with the given conversation ID. + GetAssistantMessages(ctx context.Context, in *GetAssistantMessagesRequest, opts ...grpc.CallOption) (*GetAssistantMessagesResponse, error) + // CreateAssistantMessage creates a new message in the given conversation. + CreateAssistantMessage(ctx context.Context, in *CreateAssistantMessageRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) + // UpdateAssistantConversationInfo updates the conversation info. + UpdateAssistantConversationInfo(ctx context.Context, in *UpdateAssistantConversationInfoRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) +} + +type assistServiceClient struct { + cc grpc.ClientConnInterface +} + +func NewAssistServiceClient(cc grpc.ClientConnInterface) AssistServiceClient { + return &assistServiceClient{cc} +} + +func (c *assistServiceClient) CreateAssistantConversation(ctx context.Context, in *CreateAssistantConversationRequest, opts ...grpc.CallOption) (*CreateAssistantConversationResponse, error) { + out := new(CreateAssistantConversationResponse) + err := c.cc.Invoke(ctx, AssistService_CreateAssistantConversation_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *assistServiceClient) GetAssistantConversations(ctx context.Context, in *GetAssistantConversationsRequest, opts ...grpc.CallOption) (*GetAssistantConversationsResponse, error) { + out := new(GetAssistantConversationsResponse) + err := c.cc.Invoke(ctx, AssistService_GetAssistantConversations_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *assistServiceClient) GetAssistantMessages(ctx context.Context, in *GetAssistantMessagesRequest, opts ...grpc.CallOption) (*GetAssistantMessagesResponse, error) { + out := new(GetAssistantMessagesResponse) + err := c.cc.Invoke(ctx, AssistService_GetAssistantMessages_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *assistServiceClient) CreateAssistantMessage(ctx context.Context, in *CreateAssistantMessageRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) { + out := new(emptypb.Empty) + err := c.cc.Invoke(ctx, AssistService_CreateAssistantMessage_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *assistServiceClient) UpdateAssistantConversationInfo(ctx context.Context, in *UpdateAssistantConversationInfoRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) { + out := new(emptypb.Empty) + err := c.cc.Invoke(ctx, AssistService_UpdateAssistantConversationInfo_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +// AssistServiceServer is the server API for AssistService service. +// All implementations must embed UnimplementedAssistServiceServer +// for forward compatibility +type AssistServiceServer interface { + // CreateNewConversation creates a new conversation and returns the UUID of it. + CreateAssistantConversation(context.Context, *CreateAssistantConversationRequest) (*CreateAssistantConversationResponse, error) + // GetAssistantConversations returns all conversations for the connected user. + GetAssistantConversations(context.Context, *GetAssistantConversationsRequest) (*GetAssistantConversationsResponse, error) + // GetAssistantMessages returns all messages associated with the given conversation ID. + GetAssistantMessages(context.Context, *GetAssistantMessagesRequest) (*GetAssistantMessagesResponse, error) + // CreateAssistantMessage creates a new message in the given conversation. + CreateAssistantMessage(context.Context, *CreateAssistantMessageRequest) (*emptypb.Empty, error) + // UpdateAssistantConversationInfo updates the conversation info. + UpdateAssistantConversationInfo(context.Context, *UpdateAssistantConversationInfoRequest) (*emptypb.Empty, error) + mustEmbedUnimplementedAssistServiceServer() +} + +// UnimplementedAssistServiceServer must be embedded to have forward compatible implementations. +type UnimplementedAssistServiceServer struct { +} + +func (UnimplementedAssistServiceServer) CreateAssistantConversation(context.Context, *CreateAssistantConversationRequest) (*CreateAssistantConversationResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method CreateAssistantConversation not implemented") +} +func (UnimplementedAssistServiceServer) GetAssistantConversations(context.Context, *GetAssistantConversationsRequest) (*GetAssistantConversationsResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetAssistantConversations not implemented") +} +func (UnimplementedAssistServiceServer) GetAssistantMessages(context.Context, *GetAssistantMessagesRequest) (*GetAssistantMessagesResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetAssistantMessages not implemented") +} +func (UnimplementedAssistServiceServer) CreateAssistantMessage(context.Context, *CreateAssistantMessageRequest) (*emptypb.Empty, error) { + return nil, status.Errorf(codes.Unimplemented, "method CreateAssistantMessage not implemented") +} +func (UnimplementedAssistServiceServer) UpdateAssistantConversationInfo(context.Context, *UpdateAssistantConversationInfoRequest) (*emptypb.Empty, error) { + return nil, status.Errorf(codes.Unimplemented, "method UpdateAssistantConversationInfo not implemented") +} +func (UnimplementedAssistServiceServer) mustEmbedUnimplementedAssistServiceServer() {} + +// UnsafeAssistServiceServer may be embedded to opt out of forward compatibility for this service. +// Use of this interface is not recommended, as added methods to AssistServiceServer will +// result in compilation errors. +type UnsafeAssistServiceServer interface { + mustEmbedUnimplementedAssistServiceServer() +} + +func RegisterAssistServiceServer(s grpc.ServiceRegistrar, srv AssistServiceServer) { + s.RegisterService(&AssistService_ServiceDesc, srv) +} + +func _AssistService_CreateAssistantConversation_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(CreateAssistantConversationRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(AssistServiceServer).CreateAssistantConversation(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: AssistService_CreateAssistantConversation_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(AssistServiceServer).CreateAssistantConversation(ctx, req.(*CreateAssistantConversationRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _AssistService_GetAssistantConversations_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetAssistantConversationsRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(AssistServiceServer).GetAssistantConversations(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: AssistService_GetAssistantConversations_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(AssistServiceServer).GetAssistantConversations(ctx, req.(*GetAssistantConversationsRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _AssistService_GetAssistantMessages_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetAssistantMessagesRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(AssistServiceServer).GetAssistantMessages(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: AssistService_GetAssistantMessages_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(AssistServiceServer).GetAssistantMessages(ctx, req.(*GetAssistantMessagesRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _AssistService_CreateAssistantMessage_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(CreateAssistantMessageRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(AssistServiceServer).CreateAssistantMessage(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: AssistService_CreateAssistantMessage_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(AssistServiceServer).CreateAssistantMessage(ctx, req.(*CreateAssistantMessageRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _AssistService_UpdateAssistantConversationInfo_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(UpdateAssistantConversationInfoRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(AssistServiceServer).UpdateAssistantConversationInfo(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: AssistService_UpdateAssistantConversationInfo_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(AssistServiceServer).UpdateAssistantConversationInfo(ctx, req.(*UpdateAssistantConversationInfoRequest)) + } + return interceptor(ctx, in, info, handler) +} + +// AssistService_ServiceDesc is the grpc.ServiceDesc for AssistService service. +// It's only intended for direct use with grpc.RegisterService, +// and not to be introspected or modified (even as a copy) +var AssistService_ServiceDesc = grpc.ServiceDesc{ + ServiceName: "teleport.assist.v1.AssistService", + HandlerType: (*AssistServiceServer)(nil), + Methods: []grpc.MethodDesc{ + { + MethodName: "CreateAssistantConversation", + Handler: _AssistService_CreateAssistantConversation_Handler, + }, + { + MethodName: "GetAssistantConversations", + Handler: _AssistService_GetAssistantConversations_Handler, + }, + { + MethodName: "GetAssistantMessages", + Handler: _AssistService_GetAssistantMessages_Handler, + }, + { + MethodName: "CreateAssistantMessage", + Handler: _AssistService_CreateAssistantMessage_Handler, + }, + { + MethodName: "UpdateAssistantConversationInfo", + Handler: _AssistService_UpdateAssistantConversationInfo_Handler, + }, + }, + Streams: []grpc.StreamDesc{}, + Metadata: "teleport/assist/v1/assist.proto", +} diff --git a/api/proto/teleport/assist/v1/assist.proto b/api/proto/teleport/assist/v1/assist.proto new file mode 100644 index 0000000000000..401e552e12565 --- /dev/null +++ b/api/proto/teleport/assist/v1/assist.proto @@ -0,0 +1,114 @@ +syntax = "proto3"; + +package teleport.assist.v1; + +import "google/protobuf/empty.proto"; +import "google/protobuf/timestamp.proto"; + +option go_package = "github.com/gravitational/teleport/api/gen/proto/go/assist/v1;assist"; + +// GetAssistantMessagesRequest is a request to the assistant service. +message GetAssistantMessagesRequest { + // ConversationId identifies a conversation. + // It's used to tie all messages in a one conversation. + string conversation_id = 1; + + // username is a username of the user who sent the message. + string username = 2; +} + +// AssistantMessage is a message sent to the assistant service. The conversation +// must be created first. +message AssistantMessage { + // ConversationId is used to tie all messages into a conversation. + string conversation_id = 1; + + // username is a username of the user who sent the message. + string username = 2; + + // type is a type of message. It can be Chat response/query or a command to run. + string type = 3; + + // CreatedTime is the time when the event occurred. + google.protobuf.Timestamp created_time = 4; + + // payload is a JSON message + string payload = 5; +} + +// CreateAssistantMessageRequest is a request to the assistant service. +message CreateAssistantMessageRequest { + // message is a message sent to the assistant service. + AssistantMessage message = 1; +} + +// GetAssistantMessagesResponse is a response from the assistant service. +message GetAssistantMessagesResponse { + // messages is a list of messages. + repeated AssistantMessage messages = 1; +} + +// GetAssistantConversationsRequest is a request to get a list of conversations. +message GetAssistantConversationsRequest { + // username is a username of the user who created the conversation. + string username = 1; +} + +// ConversationInfo is a conversation info. It contains a conversation +// information like ID, title, created time. +message ConversationInfo { + // id is a unique conversation ID. + string id = 1; + // title is a title of the conversation. + string title = 2; + // createdTime is the time when the conversation was created. + google.protobuf.Timestamp created_time = 3; +} + +// GetAssistantConversationsResponse is a response from the assistant service. +message GetAssistantConversationsResponse { + // conversations is a list of conversations. + repeated ConversationInfo conversations = 1; +} + +// CreateAssistantConversationRequest is a request to create a new conversation. +message CreateAssistantConversationRequest { + // username is a username of the user who created the conversation. + string username = 1; + // createdTime is the time when the conversation was created. + google.protobuf.Timestamp created_time = 2; +} + +// CreateAssistantConversationResponse is a response from the assistant service. +message CreateAssistantConversationResponse { + // id is a unique conversation ID. + string id = 1; +} + +// UpdateAssistantConversationInfoRequest is a request to update the conversation info. +message UpdateAssistantConversationInfoRequest { + // conversationId is a unique conversation ID. + string conversation_id = 1; + // username is a username of the user who created the conversation. + string username = 2; + // title is a title of the conversation. + string title = 3; +} + +// AssistService is a service that provides an ability to communicate with the Teleport Assist. +service AssistService { + // CreateNewConversation creates a new conversation and returns the UUID of it. + rpc CreateAssistantConversation(CreateAssistantConversationRequest) returns (CreateAssistantConversationResponse); + + // GetAssistantConversations returns all conversations for the connected user. + rpc GetAssistantConversations(GetAssistantConversationsRequest) returns (GetAssistantConversationsResponse); + + // GetAssistantMessages returns all messages associated with the given conversation ID. + rpc GetAssistantMessages(GetAssistantMessagesRequest) returns (GetAssistantMessagesResponse); + + // CreateAssistantMessage creates a new message in the given conversation. + rpc CreateAssistantMessage(CreateAssistantMessageRequest) returns (google.protobuf.Empty); + + // UpdateAssistantConversationInfo updates the conversation info. + rpc UpdateAssistantConversationInfo(UpdateAssistantConversationInfoRequest) returns (google.protobuf.Empty); +} diff --git a/api/proto/teleport/legacy/client/proto/authservice.proto b/api/proto/teleport/legacy/client/proto/authservice.proto index 0f48cf2b748b2..c3fd3a1191def 100644 --- a/api/proto/teleport/legacy/client/proto/authservice.proto +++ b/api/proto/teleport/legacy/client/proto/authservice.proto @@ -2296,113 +2296,8 @@ message ExportUpgradeWindowsResponse { string SystemdUnitSchedule = 3; } -// AssistantMessageRequest is a request to the assistant service. -message AssistantMessageRequest { - // conversationId it's the ID of a conversation. - // It's used to tie all messages in a one conversation. - string conversation_id = 1; - - // username is a username of the user who sent the message. - string username = 2; -} - -// AssistantMessage is a message sent to the assistant service. The conversation -// must be created first. -message AssistantMessage { - // conversationId used to tie all messages in a one conversation. - string conversation_id = 1; - - // username is a username of the user who sent the message. - string username = 2; - - // type is a type of message. It can be Chat response/query or a command to run. - string type = 3; - - // createdTime is the time when the even occurred. - google.protobuf.Timestamp created_time = 4 [ - (gogoproto.stdtime) = true, - (gogoproto.nullable) = false - ]; - - // payload is a JSON message - string payload = 5; -} - -// GetAssistantMessagesResponse is a response from the assistant service. -message GetAssistantMessagesResponse { - // messages is a list of messages. - repeated AssistantMessage messages = 1; -} - -// GetAssistantConversationsRequest is a request to get a list of conversations. -message GetAssistantConversationsRequest { - // username is a username of the user who created the conversation. - string username = 1; -} - -// ConversationInfo is a conversation info. It contains a conversation -// information like ID, title, created time. -message ConversationInfo { - // id is a unique conversation ID. - string id = 1; - // title is a title of the conversation. - string title = 2; - // createdTime is the time when the conversation was created. - google.protobuf.Timestamp created_time = 3 [ - (gogoproto.stdtime) = true, - (gogoproto.nullable) = false - ]; -} - -// GetAssistantConversationsResponse is a response from the assistant service. -message GetAssistantConversationsResponse { - // conversations is a list of conversations. - repeated ConversationInfo conversations = 1; -} - -// CreateAssistantConversationRequest is a request to create a new conversation. -message CreateAssistantConversationRequest { - // username is a username of the user who created the conversation. - string username = 1; - // createdTime is the time when the conversation was created. - google.protobuf.Timestamp created_time = 2 [ - (gogoproto.stdtime) = true, - (gogoproto.nullable) = false - ]; -} - -// CreateAssistantConversationResponse is a response from the assistant service. -message CreateAssistantConversationResponse { - // id is a unique conversation ID. - string id = 1; -} - -message UpdateAssistantConversationInfoRequest { - // conversationId is a unique conversation ID. - string conversation_id = 1; - // username is a username of the user who created the conversation. - string username = 2; - // title is a title of the conversation. - string title = 3; -} - // AuthService is authentication/authorization service implementation service AuthService { - // CreateNewConversation creates a new conversation and returns the UUID of it. - rpc CreateAssistantConversation(CreateAssistantConversationRequest) returns (CreateAssistantConversationResponse); - - // GetAssistantConversations returns all conversations for the connected user. - rpc GetAssistantConversations(GetAssistantConversationsRequest) returns (GetAssistantConversationsResponse); - - // GetAssistantMessages returns all messages associated with the given conversation ID. - rpc GetAssistantMessages(AssistantMessageRequest) returns (GetAssistantMessagesResponse); - - // CreateAssistantMessage creates a new message in the given conversation. - rpc CreateAssistantMessage(AssistantMessage) returns (google.protobuf.Empty); - - // UpdateAssistantConversationInfo updates the conversation info. - rpc UpdateAssistantConversationInfo(UpdateAssistantConversationInfoRequest) returns (google.protobuf.Empty); - // InventoryControlStream is the per-instance stream used to advertise teleport instance // presence/version/etc to the auth server. rpc InventoryControlStream(stream UpstreamInventoryOneOf) returns (stream DownstreamInventoryOneOf); diff --git a/lib/auth/assist/assistv1/service.go b/lib/auth/assist/assistv1/service.go new file mode 100644 index 0000000000000..4f4e606c31764 --- /dev/null +++ b/lib/auth/assist/assistv1/service.go @@ -0,0 +1,87 @@ +/* + * + * Copyright 2023 Gravitational, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +package assistv1 + +import ( + "context" + + "github.com/gravitational/trace" + "google.golang.org/protobuf/types/known/emptypb" + + "github.com/gravitational/teleport/api/gen/proto/go/assist/v1" + "github.com/gravitational/teleport/lib/services" +) + +// ServiceConfig holds configuration options for +// the assist gRPC service. +type ServiceConfig struct { + Backend services.Assistant +} + +// Service implements the teleport.assist.v1.AssistService RPC service. +type Service struct { + assist.UnimplementedAssistServiceServer + + backend services.Assistant +} + +// NewService returns a new assist gRPC service. +func NewService(cfg *ServiceConfig) (*Service, error) { + switch { + case cfg.Backend == nil: + return nil, trace.BadParameter("backend is required") + } + + return &Service{ + backend: cfg.Backend, + }, nil +} + +// CreateAssistantConversation creates a new conversation entry in the backend. +func (a *Service) CreateAssistantConversation(ctx context.Context, req *assist.CreateAssistantConversationRequest) (*assist.CreateAssistantConversationResponse, error) { + resp, err := a.backend.CreateAssistantConversation(ctx, req) + return resp, trace.Wrap(err) +} + +// UpdateAssistantConversationInfo updates the conversation info for a conversation. +func (a *Service) UpdateAssistantConversationInfo(ctx context.Context, request *assist.UpdateAssistantConversationInfoRequest) (*emptypb.Empty, error) { + err := a.backend.UpdateAssistantConversationInfo(ctx, request) + if err != nil { + return &emptypb.Empty{}, trace.Wrap(err) + } + + return &emptypb.Empty{}, nil +} + +// GetAssistantConversations returns all conversations started by a user. +func (a *Service) GetAssistantConversations(ctx context.Context, req *assist.GetAssistantConversationsRequest) (*assist.GetAssistantConversationsResponse, error) { + resp, err := a.backend.GetAssistantConversations(ctx, req) + return resp, trace.Wrap(err) +} + +// GetAssistantMessages returns all messages with given conversation ID. +func (a *Service) GetAssistantMessages(ctx context.Context, req *assist.GetAssistantMessagesRequest) (*assist.GetAssistantMessagesResponse, error) { + resp, err := a.backend.GetAssistantMessages(ctx, req) + return resp, trace.Wrap(err) +} + +// CreateAssistantMessage adds the message to the backend. +func (a *Service) CreateAssistantMessage(ctx context.Context, req *assist.CreateAssistantMessageRequest) (*emptypb.Empty, error) { + return nil, trace.Wrap(a.backend.CreateAssistantMessage(ctx, req)) +} diff --git a/lib/auth/auth.go b/lib/auth/auth.go index 6329f137a4e37..7c411d511a065 100644 --- a/lib/auth/auth.go +++ b/lib/auth/auth.go @@ -57,6 +57,7 @@ import ( "github.com/gravitational/teleport/api/client/proto" "github.com/gravitational/teleport/api/constants" apidefaults "github.com/gravitational/teleport/api/defaults" + "github.com/gravitational/teleport/api/gen/proto/go/assist/v1" "github.com/gravitational/teleport/api/types" apievents "github.com/gravitational/teleport/api/types/events" "github.com/gravitational/teleport/api/types/wrappers" @@ -168,6 +169,9 @@ func NewServer(cfg *InitConfig, opts ...ServerOption) (*Server, error) { if cfg.Status == nil { cfg.Status = local.NewStatusService(cfg.Backend) } + if cfg.Assist == nil { + cfg.Assist = local.NewAssistService(cfg.Backend) + } if cfg.Events == nil { cfg.Events = local.NewEventsService(cfg.Backend) } @@ -277,6 +281,7 @@ func NewServer(cfg *InitConfig, opts ...ServerOption) (*Server, error) { Okta: cfg.Okta, StatusInternal: cfg.Status, UsageReporter: cfg.UsageReporter, + Assistant: cfg.Assist, } closeCtx, cancelFunc := context.WithCancel(context.TODO()) @@ -379,6 +384,7 @@ type Services struct { services.StatusInternal services.Integrations services.Okta + services.Assistant usagereporter.UsageReporter types.Events events.AuditLogSessionStreamer @@ -5203,29 +5209,29 @@ func (a *Server) GetHeadlessAuthentication(ctx context.Context, name string) (*t } // GetAssistantMessages returns all messages with given conversation ID. -func (a *Server) GetAssistantMessages(ctx context.Context, req *proto.AssistantMessageRequest) (*proto.GetAssistantMessagesResponse, error) { +func (a *Server) GetAssistantMessages(ctx context.Context, req *assist.GetAssistantMessagesRequest) (*assist.GetAssistantMessagesResponse, error) { resp, err := a.Services.GetAssistantMessages(ctx, req) return resp, trace.Wrap(err) } // CreateAssistantMessage adds the message to the backend. -func (a *Server) CreateAssistantMessage(ctx context.Context, msg *proto.AssistantMessage) error { +func (a *Server) CreateAssistantMessage(ctx context.Context, msg *assist.CreateAssistantMessageRequest) error { return trace.Wrap(a.Services.CreateAssistantMessage(ctx, msg)) } -// UpdateAssistantConversationInfo stores the given conversation title in the DB. -func (a *Server) UpdateAssistantConversationInfo(ctx context.Context, msg *proto.UpdateAssistantConversationInfoRequest) error { +// UpdateAssistantConversationInfo stores the given conversation title in the backend. +func (a *Server) UpdateAssistantConversationInfo(ctx context.Context, msg *assist.UpdateAssistantConversationInfoRequest) error { return trace.Wrap(a.Services.UpdateAssistantConversationInfo(ctx, msg)) } // CreateAssistantConversation creates a new conversation entry in the backend. -func (a *Server) CreateAssistantConversation(ctx context.Context, req *proto.CreateAssistantConversationRequest) (*proto.CreateAssistantConversationResponse, error) { +func (a *Server) CreateAssistantConversation(ctx context.Context, req *assist.CreateAssistantConversationRequest) (*assist.CreateAssistantConversationResponse, error) { resp, err := a.Services.CreateAssistantConversation(ctx, req) return resp, trace.Wrap(err) } // GetAssistantConversations returns all conversations started by a user. -func (a *Server) GetAssistantConversations(ctx context.Context, request *proto.GetAssistantConversationsRequest) (*proto.GetAssistantConversationsResponse, error) { +func (a *Server) GetAssistantConversations(ctx context.Context, request *assist.GetAssistantConversationsRequest) (*assist.GetAssistantConversationsResponse, error) { resp, err := a.Services.GetAssistantConversations(ctx, request) return resp, trace.Wrap(err) } diff --git a/lib/auth/auth_with_roles.go b/lib/auth/auth_with_roles.go index 481bd2570997e..e6a74fe6b58f0 100644 --- a/lib/auth/auth_with_roles.go +++ b/lib/auth/auth_with_roles.go @@ -29,7 +29,6 @@ import ( collectortracev1 "go.opentelemetry.io/proto/otlp/collector/trace/v1" otlpcommonv1 "go.opentelemetry.io/proto/otlp/common/v1" "golang.org/x/exp/slices" - "google.golang.org/protobuf/types/known/emptypb" "github.com/gravitational/teleport" "github.com/gravitational/teleport/api/client" @@ -37,6 +36,7 @@ import ( "github.com/gravitational/teleport/api/client/proto" "github.com/gravitational/teleport/api/constants" apidefaults "github.com/gravitational/teleport/api/defaults" + "github.com/gravitational/teleport/api/gen/proto/go/assist/v1" devicepb "github.com/gravitational/teleport/api/gen/proto/go/teleport/devicetrust/v1" integrationpb "github.com/gravitational/teleport/api/gen/proto/go/teleport/integration/v1" loginrulepb "github.com/gravitational/teleport/api/gen/proto/go/teleport/loginrule/v1" @@ -6079,7 +6079,7 @@ func (a *ServerWithRoles) UpdateHeadlessAuthenticationState(ctx context.Context, } // CreateAssistantConversation creates a new conversation entry in the backend. -func (a *ServerWithRoles) CreateAssistantConversation(ctx context.Context, req *proto.CreateAssistantConversationRequest) (*proto.CreateAssistantConversationResponse, error) { +func (a *ServerWithRoles) CreateAssistantConversation(ctx context.Context, req *assist.CreateAssistantConversationRequest) (*assist.CreateAssistantConversationResponse, error) { if err := a.action(apidefaults.Namespace, types.KindAssistant, types.VerbCreate); err != nil { return nil, trace.Wrap(err) } @@ -6088,7 +6088,7 @@ func (a *ServerWithRoles) CreateAssistantConversation(ctx context.Context, req * } // GetAssistantConversations returns all conversations started by a user. -func (a *ServerWithRoles) GetAssistantConversations(ctx context.Context, request *proto.GetAssistantConversationsRequest) (*proto.GetAssistantConversationsResponse, error) { +func (a *ServerWithRoles) GetAssistantConversations(ctx context.Context, request *assist.GetAssistantConversationsRequest) (*assist.GetAssistantConversationsResponse, error) { if err := a.action(apidefaults.Namespace, types.KindAssistant, types.VerbList); err != nil { return nil, trace.Wrap(err) } @@ -6097,7 +6097,7 @@ func (a *ServerWithRoles) GetAssistantConversations(ctx context.Context, request } // GetAssistantMessages returns all messages with given conversation ID. -func (a *ServerWithRoles) GetAssistantMessages(ctx context.Context, req *proto.AssistantMessageRequest) (*proto.GetAssistantMessagesResponse, error) { +func (a *ServerWithRoles) GetAssistantMessages(ctx context.Context, req *assist.GetAssistantMessagesRequest) (*assist.GetAssistantMessagesResponse, error) { if err := a.action(apidefaults.Namespace, types.KindAssistant, types.VerbRead); err != nil { return nil, trace.Wrap(err) } @@ -6106,16 +6106,16 @@ func (a *ServerWithRoles) GetAssistantMessages(ctx context.Context, req *proto.A } // CreateAssistantMessage adds the message to the backend. -func (a *ServerWithRoles) CreateAssistantMessage(ctx context.Context, msg *proto.AssistantMessage) (*emptypb.Empty, error) { +func (a *ServerWithRoles) CreateAssistantMessage(ctx context.Context, msg *assist.CreateAssistantMessageRequest) error { if err := a.action(apidefaults.Namespace, types.KindAssistant, types.VerbUpdate); err != nil { - return nil, trace.Wrap(err) + return trace.Wrap(err) } - return &emptypb.Empty{}, a.authServer.CreateAssistantMessage(ctx, msg) + return a.authServer.CreateAssistantMessage(ctx, msg) } // UpdateAssistantConversationInfo updates the conversation info. -func (a *ServerWithRoles) UpdateAssistantConversationInfo(ctx context.Context, msg *proto.UpdateAssistantConversationInfoRequest) error { +func (a *ServerWithRoles) UpdateAssistantConversationInfo(ctx context.Context, msg *assist.UpdateAssistantConversationInfoRequest) error { if err := a.action(apidefaults.Namespace, types.KindAssistant, types.VerbUpdate); err != nil { return trace.Wrap(err) } @@ -6158,7 +6158,7 @@ func (a *ServerWithRoles) UpdateClusterMaintenanceConfig(ctx context.Context, cm if modules.GetModules().Features().Cloud { // maintenance configuration in cloud is derived from values stored in // an external cloud-specific database. - return trace.NotImplemented("cloud clusters not support custom cluster maintenance resources") + return trace.NotImplemented("cloud clusters do not support custom cluster maintenance resources") } return a.authServer.UpdateClusterMaintenanceConfig(ctx, cmc) diff --git a/lib/auth/clt.go b/lib/auth/clt.go index d9a14c303363b..bc5f2f5cab431 100644 --- a/lib/auth/clt.go +++ b/lib/auth/clt.go @@ -24,7 +24,6 @@ import ( "github.com/gravitational/roundtrip" "github.com/gravitational/trace" - "google.golang.org/protobuf/types/known/emptypb" "github.com/gravitational/teleport/api/client" "github.com/gravitational/teleport/api/client/proto" @@ -653,17 +652,6 @@ type IdentityService interface { UpdateHeadlessAuthenticationState(ctx context.Context, id string, state types.HeadlessAuthenticationState, mfaResponse *proto.MFAAuthenticateResponse) error // GetHeadlessAuthentication retrieves a headless authentication by id. GetHeadlessAuthentication(ctx context.Context, id string) (*types.HeadlessAuthentication, error) - - // GetAssistantMessages returns all messages with given conversation ID. - GetAssistantMessages(ctx context.Context, req *proto.AssistantMessageRequest) (*proto.GetAssistantMessagesResponse, error) - // GetAssistantConversations returns all conversations started by a user. - GetAssistantConversations(ctx context.Context, request *proto.GetAssistantConversationsRequest) (*proto.GetAssistantConversationsResponse, error) - // CreateAssistantConversation creates a new conversation entry in the backend. - CreateAssistantConversation(ctx context.Context, req *proto.CreateAssistantConversationRequest) (*proto.CreateAssistantConversationResponse, error) - // CreateAssistantMessage adds the message to the backend. - CreateAssistantMessage(ctx context.Context, in *proto.AssistantMessage) (*emptypb.Empty, error) - // UpdateAssistantConversationInfo updates the conversation info. - UpdateAssistantConversationInfo(ctx context.Context, in *proto.UpdateAssistantConversationInfoRequest) error } // ProvisioningService is a service in control @@ -713,6 +701,7 @@ type ClientI interface { services.WindowsDesktops services.SAMLIdPServiceProviders services.UserGroups + services.Assistant WebService services.Status services.ClusterConfiguration diff --git a/lib/auth/grpcserver.go b/lib/auth/grpcserver.go index 4453f93404b2d..f9cc4976c3908 100644 --- a/lib/auth/grpcserver.go +++ b/lib/auth/grpcserver.go @@ -44,6 +44,7 @@ import ( "github.com/gravitational/teleport/api/client" "github.com/gravitational/teleport/api/client/proto" "github.com/gravitational/teleport/api/constants" + "github.com/gravitational/teleport/api/gen/proto/go/assist/v1" integrationpb "github.com/gravitational/teleport/api/gen/proto/go/teleport/integration/v1" oktapb "github.com/gravitational/teleport/api/gen/proto/go/teleport/okta/v1" trustpb "github.com/gravitational/teleport/api/gen/proto/go/teleport/trust/v1" @@ -52,6 +53,7 @@ import ( apievents "github.com/gravitational/teleport/api/types/events" "github.com/gravitational/teleport/api/types/installers" "github.com/gravitational/teleport/api/types/wrappers" + "github.com/gravitational/teleport/lib/auth/assist/assistv1" integrationService "github.com/gravitational/teleport/lib/auth/integration/integrationv1" "github.com/gravitational/teleport/lib/auth/okta" "github.com/gravitational/teleport/lib/auth/trust/trustv1" @@ -4984,66 +4986,6 @@ func (g *GRPCServer) UpdateClusterMaintenanceConfig(ctx context.Context, cmc *ty return &emptypb.Empty{}, nil } -// GetAssistantConversations returns all conversations started by a user. -func (g *GRPCServer) GetAssistantConversations(ctx context.Context, request *proto.GetAssistantConversationsRequest) (*proto.GetAssistantConversationsResponse, error) { - auth, err := g.authenticate(ctx) - if err != nil { - return nil, trace.Wrap(err) - } - - resp, err := auth.GetAssistantConversations(ctx, request) - if err != nil { - return nil, trace.Wrap(err) - } - - return resp, nil -} - -// UpdateAssistantConversationInfo updates the conversation info for a conversation. -func (g *GRPCServer) UpdateAssistantConversationInfo(ctx context.Context, request *proto.UpdateAssistantConversationInfoRequest) (*emptypb.Empty, error) { - auth, err := g.authenticate(ctx) - if err != nil { - return nil, trace.Wrap(err) - } - - err = auth.UpdateAssistantConversationInfo(ctx, request) - if err != nil { - return nil, trace.Wrap(err) - } - - return &emptypb.Empty{}, nil -} - -// CreateAssistantConversation creates a new conversation entry in the backend. -func (g *GRPCServer) CreateAssistantConversation(ctx context.Context, request *proto.CreateAssistantConversationRequest) (*proto.CreateAssistantConversationResponse, error) { - auth, err := g.authenticate(ctx) - if err != nil { - return nil, trace.Wrap(err) - } - resp, err := auth.CreateAssistantConversation(ctx, request) - return resp, trace.Wrap(err) -} - -// GetAssistantMessages returns all messages with given conversation ID. -func (g *GRPCServer) GetAssistantMessages(ctx context.Context, request *proto.AssistantMessageRequest) (*proto.GetAssistantMessagesResponse, error) { - auth, err := g.authenticate(ctx) - if err != nil { - return nil, trace.Wrap(err) - } - messages, err := auth.GetAssistantMessages(ctx, request) - return messages, trace.Wrap(err) -} - -// CreateAssistantMessage adds the message to the backend. -func (g *GRPCServer) CreateAssistantMessage(ctx context.Context, assistantMessage *proto.AssistantMessage) (*emptypb.Empty, error) { - auth, err := g.authenticate(ctx) - if err != nil { - return &emptypb.Empty{}, trace.Wrap(err) - } - resp, err := auth.CreateAssistantMessage(ctx, assistantMessage) - return resp, trace.Wrap(err) -} - // GetBackend returns the backend from the underlying auth server. func (g *GRPCServer) GetBackend() backend.Backend { return g.AuthServer.bk @@ -5146,6 +5088,15 @@ func NewGRPCServer(cfg GRPCServerConfig) (*GRPCServer, error) { } trustpb.RegisterTrustServiceServer(server, trust) + // Initialize and register the assist service. + assistSrv, err := assistv1.NewService(&assistv1.ServiceConfig{ + Backend: cfg.AuthServer.Services, + }) + if err != nil { + return nil, trace.Wrap(err) + } + assist.RegisterAssistServiceServer(server, assistSrv) + // create server with no-op role to pass to JoinService server serverWithNopRole, err := serverWithNopRole(cfg) if err != nil { diff --git a/lib/auth/init.go b/lib/auth/init.go index a400c20ddf294..11a3d539936c6 100644 --- a/lib/auth/init.go +++ b/lib/auth/init.go @@ -143,6 +143,9 @@ type InitConfig struct { // Status is a service that manages cluster status info. Status services.StatusInternal + // Assist is a service that implements the Teleport Assist functionality. + Assist services.Assistant + // Roles is a set of roles to create Roles []types.Role diff --git a/lib/services/assist.go b/lib/services/assist.go new file mode 100644 index 0000000000000..2475133fe4d1b --- /dev/null +++ b/lib/services/assist.go @@ -0,0 +1,42 @@ +/* + * + * Copyright 2023 Gravitational, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * / + */ + +package services + +import ( + "context" + + "github.com/gravitational/teleport/api/gen/proto/go/assist/v1" +) + +type Assistant interface { + // GetAssistantMessages returns all messages with given conversation ID. + GetAssistantMessages(ctx context.Context, req *assist.GetAssistantMessagesRequest) (*assist.GetAssistantMessagesResponse, error) + + // CreateAssistantMessage adds the message to the backend. + CreateAssistantMessage(ctx context.Context, msg *assist.CreateAssistantMessageRequest) error + + // CreateAssistantConversation creates a new conversation entry in the backend. + CreateAssistantConversation(ctx context.Context, req *assist.CreateAssistantConversationRequest) (*assist.CreateAssistantConversationResponse, error) + + // GetAssistantConversations returns all conversations started by a user. + GetAssistantConversations(ctx context.Context, request *assist.GetAssistantConversationsRequest) (*assist.GetAssistantConversationsResponse, error) + + // UpdateAssistantConversationInfo updates conversation info. + UpdateAssistantConversationInfo(ctx context.Context, msg *assist.UpdateAssistantConversationInfoRequest) error +} diff --git a/lib/services/identity.go b/lib/services/identity.go index 91660128c4e58..ceb280c0d3b75 100644 --- a/lib/services/identity.go +++ b/lib/services/identity.go @@ -267,21 +267,6 @@ type Identity interface { // DeleteHeadlessAuthentication deletes a headless authentication from the backend by name. DeleteHeadlessAuthentication(ctx context.Context, name string) error - // GetAssistantMessages returns all messages with given conversation ID. - GetAssistantMessages(ctx context.Context, req *proto.AssistantMessageRequest) (*proto.GetAssistantMessagesResponse, error) - - // CreateAssistantMessage adds the message to the backend. - CreateAssistantMessage(ctx context.Context, msg *proto.AssistantMessage) error - - // CreateAssistantConversation creates a new conversation entry in the backend. - CreateAssistantConversation(ctx context.Context, req *proto.CreateAssistantConversationRequest) (*proto.CreateAssistantConversationResponse, error) - - // GetAssistantConversations returns all conversations started by a user. - GetAssistantConversations(ctx context.Context, request *proto.GetAssistantConversationsRequest) (*proto.GetAssistantConversationsResponse, error) - - // UpdateAssistantConversationInfo updates conversation info. - UpdateAssistantConversationInfo(ctx context.Context, msg *proto.UpdateAssistantConversationInfoRequest) error - types.WebSessionsGetter types.WebTokensGetter diff --git a/lib/services/local/assistant.go b/lib/services/local/assistant.go index 9f180560a8478..4318015e930e1 100644 --- a/lib/services/local/assistant.go +++ b/lib/services/local/assistant.go @@ -26,8 +26,10 @@ import ( "github.com/google/uuid" "github.com/gravitational/trace" + "github.com/sirupsen/logrus" + "google.golang.org/protobuf/types/known/timestamppb" - "github.com/gravitational/teleport/api/client/proto" + "github.com/gravitational/teleport/api/gen/proto/go/assist/v1" "github.com/gravitational/teleport/lib/backend" ) @@ -38,18 +40,35 @@ type Conversation struct { CreatedTime time.Time `json:"created_time"` } +// AssistService is responsible for managing assist conversations. +type AssistService struct { + backend.Backend + log logrus.FieldLogger +} + +// NewAssistService returns a new instance of AssistService. +func NewAssistService(backend backend.Backend) *AssistService { + return &AssistService{ + Backend: backend, + log: logrus.WithField(trace.Component, "assist"), + } +} + // CreateAssistantConversation creates a new conversation entry in the backend. -func (s *IdentityService) CreateAssistantConversation(ctx context.Context, - req *proto.CreateAssistantConversationRequest, -) (*proto.CreateAssistantConversationResponse, error) { +func (s *AssistService) CreateAssistantConversation(ctx context.Context, + req *assist.CreateAssistantConversationRequest, +) (*assist.CreateAssistantConversationResponse, error) { if req.Username == "" { return nil, trace.BadParameter("missing parameter username") } + if req.CreatedTime == nil { + return nil, trace.BadParameter("missing parameter created time") + } conversationID := uuid.New().String() payload := &Conversation{ ConversationID: conversationID, - CreatedTime: req.CreatedTime, + CreatedTime: req.GetCreatedTime().AsTime(), } value, err := json.Marshal(payload) @@ -67,10 +86,10 @@ func (s *IdentityService) CreateAssistantConversation(ctx context.Context, return nil, trace.Wrap(err) } - return &proto.CreateAssistantConversationResponse{Id: conversationID}, nil + return &assist.CreateAssistantConversationResponse{Id: conversationID}, nil } -func (s *IdentityService) getConversation(ctx context.Context, username, conversationID string) (*Conversation, error) { +func (s *AssistService) getConversation(ctx context.Context, username, conversationID string) (*Conversation, error) { item, err := s.Get(ctx, backend.Key(assistantConversationPrefix, username, conversationID)) if err != nil { return nil, trace.Wrap(err) @@ -85,7 +104,7 @@ func (s *IdentityService) getConversation(ctx context.Context, username, convers } // UpdateAssistantConversationInfo updates the conversation title. -func (s *IdentityService) UpdateAssistantConversationInfo(ctx context.Context, request *proto.UpdateAssistantConversationInfoRequest) error { +func (s *AssistService) UpdateAssistantConversationInfo(ctx context.Context, request *assist.UpdateAssistantConversationInfoRequest) error { if request.ConversationId == "" { return trace.BadParameter("missing conversation ID") } @@ -122,7 +141,7 @@ func (s *IdentityService) UpdateAssistantConversationInfo(ctx context.Context, r } // GetAssistantConversations returns all conversations started by a user. -func (s *IdentityService) GetAssistantConversations(ctx context.Context, req *proto.GetAssistantConversationsRequest) (*proto.GetAssistantConversationsResponse, error) { +func (s *AssistService) GetAssistantConversations(ctx context.Context, req *assist.GetAssistantConversationsRequest) (*assist.GetAssistantConversationsResponse, error) { if req.Username == "" { return nil, trace.BadParameter("missing username") } @@ -132,31 +151,31 @@ func (s *IdentityService) GetAssistantConversations(ctx context.Context, req *pr return nil, trace.Wrap(err) } - conversationsIDs := make([]*proto.ConversationInfo, 0, len(result.Items)) + conversationsIDs := make([]*assist.ConversationInfo, 0, len(result.Items)) for _, item := range result.Items { payload := &Conversation{} if err := json.Unmarshal(item.Value, payload); err != nil { return nil, trace.Wrap(err) } - conversationsIDs = append(conversationsIDs, &proto.ConversationInfo{ + conversationsIDs = append(conversationsIDs, &assist.ConversationInfo{ Id: payload.ConversationID, Title: payload.Title, - CreatedTime: payload.CreatedTime, + CreatedTime: timestamppb.New(payload.CreatedTime), }) } sort.Slice(conversationsIDs, func(i, j int) bool { - return conversationsIDs[i].CreatedTime.Before(conversationsIDs[j].GetCreatedTime()) + return conversationsIDs[i].CreatedTime.AsTime().Before(conversationsIDs[j].GetCreatedTime().AsTime()) }) - return &proto.GetAssistantConversationsResponse{ + return &assist.GetAssistantConversationsResponse{ Conversations: conversationsIDs, }, nil } // GetAssistantMessages returns all messages with given conversation ID. -func (s *IdentityService) GetAssistantMessages(ctx context.Context, req *proto.AssistantMessageRequest) (*proto.GetAssistantMessagesResponse, error) { +func (s *AssistService) GetAssistantMessages(ctx context.Context, req *assist.GetAssistantMessagesRequest) (*assist.GetAssistantMessagesResponse, error) { if req.Username == "" { return nil, trace.BadParameter("missing username") } @@ -171,9 +190,9 @@ func (s *IdentityService) GetAssistantMessages(ctx context.Context, req *proto.A return nil, trace.Wrap(err) } - out := make([]*proto.AssistantMessage, len(result.Items)) + out := make([]*assist.AssistantMessage, len(result.Items)) for i, item := range result.Items { - var a proto.AssistantMessage + var a assist.AssistantMessage if err := json.Unmarshal(item.Value, &a); err != nil { return nil, trace.Wrap(err) } @@ -182,16 +201,17 @@ func (s *IdentityService) GetAssistantMessages(ctx context.Context, req *proto.A sort.Slice(out, func(i, j int) bool { // Sort by created time. - return out[i].CreatedTime.Before(out[j].GetCreatedTime()) + return out[i].CreatedTime.AsTime().Before(out[j].GetCreatedTime().AsTime()) }) - return &proto.GetAssistantMessagesResponse{ + return &assist.GetAssistantMessagesResponse{ Messages: out, }, nil } // CreateAssistantMessage adds the message to the backend. -func (s *IdentityService) CreateAssistantMessage(ctx context.Context, msg *proto.AssistantMessage) error { +func (s *AssistService) CreateAssistantMessage(ctx context.Context, req *assist.CreateAssistantMessageRequest) error { + msg := req.GetMessage() if msg.Username == "" { return trace.BadParameter("missing username") } diff --git a/lib/services/local/assistant_test.go b/lib/services/local/assistant_test.go index 8c360d8b7def9..56fa5a8b203df 100644 --- a/lib/services/local/assistant_test.go +++ b/lib/services/local/assistant_test.go @@ -13,7 +13,7 @@ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. - * / + * */ package local_test @@ -25,24 +25,37 @@ import ( "github.com/jonboulle/clockwork" "github.com/stretchr/testify/require" + "google.golang.org/protobuf/types/known/timestamppb" - "github.com/gravitational/teleport/api/client/proto" + "github.com/gravitational/teleport/api/gen/proto/go/assist/v1" + "github.com/gravitational/teleport/lib/backend/memory" + "github.com/gravitational/teleport/lib/services/local" ) +func newAssistService(t *testing.T) *local.AssistService { + t.Helper() + backend, err := memory.New(memory.Config{ + Context: context.Background(), + Clock: clockwork.NewFakeClock(), + }) + require.NoError(t, err) + return local.NewAssistService(backend) +} + // TestAssistantCRUD tests the assistant CRUD operations. func TestAssistantCRUD(t *testing.T) { t.Parallel() - identity := newIdentityService(t, clockwork.NewFakeClock()) + identity := newAssistService(t) ctx := context.Background() const username = "foo" var conversationID string t.Run("create conversation", func(t *testing.T) { - req := &proto.CreateAssistantConversationRequest{ + req := &assist.CreateAssistantConversationRequest{ Username: username, - CreatedTime: time.Now(), + CreatedTime: timestamppb.New(time.Now()), } conversationResp, err := identity.CreateAssistantConversation(ctx, req) @@ -53,7 +66,7 @@ func TestAssistantCRUD(t *testing.T) { }) t.Run("get conversation", func(t *testing.T) { - req := &proto.GetAssistantConversationsRequest{ + req := &assist.GetAssistantConversationsRequest{ Username: username, } conversations, err := identity.GetAssistantConversations(ctx, req) @@ -63,19 +76,21 @@ func TestAssistantCRUD(t *testing.T) { }) t.Run("create message", func(t *testing.T) { - msg := &proto.AssistantMessage{ - Username: username, - CreatedTime: time.Now(), - ConversationId: conversationID, - Payload: "foo", - Type: "USER_MSG", + msg := &assist.CreateAssistantMessageRequest{ + Message: &assist.AssistantMessage{ + Username: username, + CreatedTime: timestamppb.New(time.Now()), + ConversationId: conversationID, + Payload: "foo", + Type: "USER_MSG", + }, } err := identity.CreateAssistantMessage(ctx, msg) require.NoError(t, err) }) t.Run("get messages", func(t *testing.T) { - req := &proto.AssistantMessageRequest{ + req := &assist.GetAssistantMessagesRequest{ Username: username, ConversationId: conversationID, } @@ -86,7 +101,7 @@ func TestAssistantCRUD(t *testing.T) { }) t.Run("set conversation title", func(t *testing.T) { - titleReq := &proto.UpdateAssistantConversationInfoRequest{ + titleReq := &assist.UpdateAssistantConversationInfoRequest{ Title: "bar", Username: username, ConversationId: conversationID, @@ -95,7 +110,7 @@ func TestAssistantCRUD(t *testing.T) { err := identity.UpdateAssistantConversationInfo(ctx, titleReq) require.NoError(t, err) - req := &proto.GetAssistantConversationsRequest{ + req := &assist.GetAssistantConversationsRequest{ Username: username, } @@ -106,16 +121,16 @@ func TestAssistantCRUD(t *testing.T) { }) t.Run("conversations are sorted by created_time", func(t *testing.T) { - req := &proto.CreateAssistantConversationRequest{ + req := &assist.CreateAssistantConversationRequest{ Username: username, - CreatedTime: time.Now().Add(time.Hour), + CreatedTime: timestamppb.New(time.Now().Add(time.Hour)), } conversationResp, err := identity.CreateAssistantConversation(ctx, req) require.NoError(t, err) require.NotEmpty(t, conversationResp.Id) - reqConversations := &proto.GetAssistantConversationsRequest{ + reqConversations := &assist.GetAssistantConversationsRequest{ Username: username, } diff --git a/lib/web/assistant.go b/lib/web/assistant.go index c90b1f1a19e34..3de566138bed7 100644 --- a/lib/web/assistant.go +++ b/lib/web/assistant.go @@ -14,7 +14,6 @@ See the License for the specific language governing permissions and limitations under the License. - */ package web From c036b184d8b3defbeaf09b95cb5f97a83e3d525d Mon Sep 17 00:00:00 2001 From: Jakub Nyckowski Date: Mon, 8 May 2023 22:22:35 -0400 Subject: [PATCH 08/10] Add Assistant RBAC rules to this backport. --- api/types/constants.go | 3 +-- lib/services/presets.go | 2 ++ 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/api/types/constants.go b/api/types/constants.go index be8d732cf57ac..36823756e5d3c 100644 --- a/api/types/constants.go +++ b/api/types/constants.go @@ -341,8 +341,7 @@ const ( // KindHeadlessAuthentication is a headless authentication resource. KindHeadlessAuthentication = "headless_authentication" - // KindAssistant is a Teleport Assist resource kind. It's used by - // Teleport Assist to store its objects as messages and conversations. + // KindAssistant is a Teleport Assist role. KindAssistant = "assistant" // KindIntegration is a connection to a 3rd party system API. diff --git a/lib/services/presets.go b/lib/services/presets.go index 0bc4fec00b818..98b98896e5928 100644 --- a/lib/services/presets.go +++ b/lib/services/presets.go @@ -84,6 +84,7 @@ func NewPresetEditorRole() types.Role { types.NewRule(types.KindPlugin, RW()), types.NewRule(types.KindOktaImportRule, RW()), types.NewRule(types.KindOktaAssignment, RW()), + types.NewRule(types.KindAssistant, append(RW(), types.VerbUse)), types.NewRule(types.KindLock, RW()), types.NewRule(types.KindIntegration, append(RW(), types.VerbUse)), types.NewRule(types.KindBilling, RW()), @@ -213,6 +214,7 @@ func defaultAllowRules() map[string][]types.Rule { types.NewRule(types.KindLock, RW()), types.NewRule(types.KindIntegration, append(RW(), types.VerbUse)), types.NewRule(types.KindBilling, RW()), + types.NewRule(types.KindAssistant, append(RW(), types.VerbUse)), }, } } From aea37a3331de52aa109d106be90872df4e7ecd13 Mon Sep 17 00:00:00 2001 From: Jakub Nyckowski Date: Mon, 8 May 2023 22:31:13 -0400 Subject: [PATCH 09/10] Add missing license --- api/gen/proto/go/assist/v1/assist.pb.go | 14 ++++++++++++++ api/gen/proto/go/assist/v1/assist_grpc.pb.go | 14 ++++++++++++++ api/proto/teleport/assist/v1/assist.proto | 14 ++++++++++++++ 3 files changed, 42 insertions(+) diff --git a/api/gen/proto/go/assist/v1/assist.pb.go b/api/gen/proto/go/assist/v1/assist.pb.go index 325e2bbf0eb3f..ed0332e8dd268 100644 --- a/api/gen/proto/go/assist/v1/assist.pb.go +++ b/api/gen/proto/go/assist/v1/assist.pb.go @@ -1,3 +1,17 @@ +// Copyright 2023 Gravitational, Inc +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + // Code generated by protoc-gen-go. DO NOT EDIT. // versions: // protoc-gen-go v1.30.0 diff --git a/api/gen/proto/go/assist/v1/assist_grpc.pb.go b/api/gen/proto/go/assist/v1/assist_grpc.pb.go index 6876b4a33abdd..8fe439e09400c 100644 --- a/api/gen/proto/go/assist/v1/assist_grpc.pb.go +++ b/api/gen/proto/go/assist/v1/assist_grpc.pb.go @@ -1,3 +1,17 @@ +// Copyright 2023 Gravitational, Inc +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + // Code generated by protoc-gen-go-grpc. DO NOT EDIT. // versions: // - protoc-gen-go-grpc v1.3.0 diff --git a/api/proto/teleport/assist/v1/assist.proto b/api/proto/teleport/assist/v1/assist.proto index 401e552e12565..d99fc037c6755 100644 --- a/api/proto/teleport/assist/v1/assist.proto +++ b/api/proto/teleport/assist/v1/assist.proto @@ -1,3 +1,17 @@ +// Copyright 2023 Gravitational, Inc +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + syntax = "proto3"; package teleport.assist.v1; From 6c8c768a07ecfa61d2d4b95079f7a19e1369c523 Mon Sep 17 00:00:00 2001 From: Jakub Nyckowski Date: Tue, 9 May 2023 13:07:30 -0400 Subject: [PATCH 10/10] Update comment. --- api/types/constants.go | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/api/types/constants.go b/api/types/constants.go index 36823756e5d3c..07c5293858520 100644 --- a/api/types/constants.go +++ b/api/types/constants.go @@ -341,7 +341,8 @@ const ( // KindHeadlessAuthentication is a headless authentication resource. KindHeadlessAuthentication = "headless_authentication" - // KindAssistant is a Teleport Assist role. + // KindAssistant is used to program RBAC for + // Teleport Assist resources. KindAssistant = "assistant" // KindIntegration is a connection to a 3rd party system API.