From 77ef008cab0878a926fe8fdfae027f518a8c9daa Mon Sep 17 00:00:00 2001 From: David Date: Tue, 8 Feb 2022 12:05:08 -0700 Subject: [PATCH 01/30] Initial pass on adding proxy peer server and configuration --- Makefile | 3 +- api/client/proto/proxyservice.pb.go | 1382 ++++++++++++++++++++++++++ api/client/proto/proxyservice.proto | 57 ++ api/metadata/metadata.go | 10 + api/types/networking.go | 43 + api/types/networking_test.go | 70 ++ api/types/types.pb.go | 1425 ++++++++++++++------------- api/types/types.proto | 11 + lib/config/configuration.go | 8 + lib/config/configuration_test.go | 2 + lib/config/fileconf.go | 5 + lib/config/testdata_test.go | 2 + lib/defaults/defaults.go | 8 + lib/proxy/auth.go | 91 ++ lib/proxy/conn.go | 224 +++++ lib/proxy/middleware.go | 43 + lib/proxy/server.go | 134 +++ lib/proxy/server_test.go | 162 +++ lib/proxy/service.go | 126 +++ lib/proxy/service_test.go | 109 ++ lib/service/cfg.go | 3 + lib/service/listeners.go | 6 + lib/service/service.go | 90 +- 23 files changed, 3326 insertions(+), 688 deletions(-) create mode 100644 api/client/proto/proxyservice.pb.go create mode 100644 api/client/proto/proxyservice.proto create mode 100644 lib/proxy/auth.go create mode 100644 lib/proxy/conn.go create mode 100644 lib/proxy/middleware.go create mode 100644 lib/proxy/server.go create mode 100644 lib/proxy/server_test.go create mode 100644 lib/proxy/service.go create mode 100644 lib/proxy/service_test.go diff --git a/Makefile b/Makefile index 2bf9cf201023..184996ca48f1 100644 --- a/Makefile +++ b/Makefile @@ -803,6 +803,7 @@ buildbox-grpc: echo $$PROTO_INCLUDE $(CLANG_FORMAT) -i -style='{ColumnLimit: 100, IndentWidth: 4, Language: Proto}' \ api/client/proto/authservice.proto \ + api/client/proto/proxyservice.proto \ api/types/events/events.proto \ api/types/types.proto \ api/types/webauthn/webauthn.proto \ @@ -817,7 +818,7 @@ buildbox-grpc: cd api/client/proto && protoc -I=.:$$PROTO_INCLUDE \ --gogofast_out=plugins=grpc,$(GOGOPROTO_IMPORTMAP):. \ - authservice.proto + authservice.proto proxyservice.proto cd api/types/events && protoc -I=.:$$PROTO_INCLUDE \ --gogofast_out=plugins=grpc,$(GOGOPROTO_IMPORTMAP):. \ diff --git a/api/client/proto/proxyservice.pb.go b/api/client/proto/proxyservice.pb.go new file mode 100644 index 000000000000..813d0d7e3514 --- /dev/null +++ b/api/client/proto/proxyservice.pb.go @@ -0,0 +1,1382 @@ +// Code generated by protoc-gen-gogo. DO NOT EDIT. +// source: proxyservice.proto + +package proto + +import ( + context "context" + fmt "fmt" + _ "github.com/gogo/protobuf/gogoproto" + proto "github.com/gogo/protobuf/proto" + github_com_gravitational_teleport_api_types "github.com/gravitational/teleport/api/types" + grpc "google.golang.org/grpc" + codes "google.golang.org/grpc/codes" + status "google.golang.org/grpc/status" + io "io" + math "math" + math_bits "math/bits" +) + +// Reference imports to suppress errors if they are not otherwise used. +var _ = proto.Marshal +var _ = fmt.Errorf +var _ = math.Inf + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the proto package it is being compiled against. +// A compilation error at this line likely means your copy of the +// proto package needs to be updated. +const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package + +// Frame wraps different message types to be sent over a stream. +type Frame struct { + // Types that are valid to be assigned to Message: + // *Frame_DialRequest + // *Frame_Data + Message isFrame_Message `protobuf_oneof:"Message"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *Frame) Reset() { *m = Frame{} } +func (m *Frame) String() string { return proto.CompactTextString(m) } +func (*Frame) ProtoMessage() {} +func (*Frame) Descriptor() ([]byte, []int) { + return fileDescriptor_05583632bd3d8a58, []int{0} +} +func (m *Frame) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *Frame) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_Frame.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 *Frame) XXX_Merge(src proto.Message) { + xxx_messageInfo_Frame.Merge(m, src) +} +func (m *Frame) XXX_Size() int { + return m.Size() +} +func (m *Frame) XXX_DiscardUnknown() { + xxx_messageInfo_Frame.DiscardUnknown(m) +} + +var xxx_messageInfo_Frame proto.InternalMessageInfo + +type isFrame_Message interface { + isFrame_Message() + MarshalTo([]byte) (int, error) + Size() int +} + +type Frame_DialRequest struct { + DialRequest *DialRequest `protobuf:"bytes,1,opt,name=DialRequest,proto3,oneof" json:"DialRequest,omitempty"` +} +type Frame_Data struct { + Data *Data `protobuf:"bytes,2,opt,name=Data,proto3,oneof" json:"Data,omitempty"` +} + +func (*Frame_DialRequest) isFrame_Message() {} +func (*Frame_Data) isFrame_Message() {} + +func (m *Frame) GetMessage() isFrame_Message { + if m != nil { + return m.Message + } + return nil +} + +func (m *Frame) GetDialRequest() *DialRequest { + if x, ok := m.GetMessage().(*Frame_DialRequest); ok { + return x.DialRequest + } + return nil +} + +func (m *Frame) GetData() *Data { + if x, ok := m.GetMessage().(*Frame_Data); ok { + return x.Data + } + return nil +} + +// XXX_OneofWrappers is for the internal use of the proto package. +func (*Frame) XXX_OneofWrappers() []interface{} { + return []interface{}{ + (*Frame_DialRequest)(nil), + (*Frame_Data)(nil), + } +} + +// DialRequest contains details for connecting to a node. +type DialRequest struct { + // NodeID is the {UUID}.{ClusterName} of the node to connect to. + NodeID string `protobuf:"bytes,1,opt,name=NodeID,proto3" json:"NodeID,omitempty"` + // TunnelType is the type of service being accessed. This differentiates agents that + // create multiple reverse tunnels for different services. + TunnelType github_com_gravitational_teleport_api_types.TunnelType `protobuf:"bytes,2,opt,name=TunnelType,proto3,casttype=github.com/gravitational/teleport/api/types.TunnelType" json:"TunnelType,omitempty"` + // Source is the original source address of the client. + Source *NetAddr `protobuf:"bytes,3,opt,name=Source,proto3" json:"Source,omitempty"` + // Destination is the destination address to connect to over the reverse tunnel. + Destination *NetAddr `protobuf:"bytes,4,opt,name=Destination,proto3" json:"Destination,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *DialRequest) Reset() { *m = DialRequest{} } +func (m *DialRequest) String() string { return proto.CompactTextString(m) } +func (*DialRequest) ProtoMessage() {} +func (*DialRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_05583632bd3d8a58, []int{1} +} +func (m *DialRequest) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *DialRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_DialRequest.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 *DialRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_DialRequest.Merge(m, src) +} +func (m *DialRequest) XXX_Size() int { + return m.Size() +} +func (m *DialRequest) XXX_DiscardUnknown() { + xxx_messageInfo_DialRequest.DiscardUnknown(m) +} + +var xxx_messageInfo_DialRequest proto.InternalMessageInfo + +func (m *DialRequest) GetNodeID() string { + if m != nil { + return m.NodeID + } + return "" +} + +func (m *DialRequest) GetTunnelType() github_com_gravitational_teleport_api_types.TunnelType { + if m != nil { + return m.TunnelType + } + return "" +} + +func (m *DialRequest) GetSource() *NetAddr { + if m != nil { + return m.Source + } + return nil +} + +func (m *DialRequest) GetDestination() *NetAddr { + if m != nil { + return m.Destination + } + return nil +} + +// Addr is a network address. +type NetAddr struct { + // Network is the type of network socket. For example tcp or udp. + Network string `protobuf:"bytes,1,opt,name=Network,proto3" json:"Network,omitempty"` + // Addr is the host:port address. For example 'localhost:22' + Addr string `protobuf:"bytes,2,opt,name=Addr,proto3" json:"Addr,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *NetAddr) Reset() { *m = NetAddr{} } +func (m *NetAddr) String() string { return proto.CompactTextString(m) } +func (*NetAddr) ProtoMessage() {} +func (*NetAddr) Descriptor() ([]byte, []int) { + return fileDescriptor_05583632bd3d8a58, []int{2} +} +func (m *NetAddr) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *NetAddr) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_NetAddr.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 *NetAddr) XXX_Merge(src proto.Message) { + xxx_messageInfo_NetAddr.Merge(m, src) +} +func (m *NetAddr) XXX_Size() int { + return m.Size() +} +func (m *NetAddr) XXX_DiscardUnknown() { + xxx_messageInfo_NetAddr.DiscardUnknown(m) +} + +var xxx_messageInfo_NetAddr proto.InternalMessageInfo + +func (m *NetAddr) GetNetwork() string { + if m != nil { + return m.Network + } + return "" +} + +func (m *NetAddr) GetAddr() string { + if m != nil { + return m.Addr + } + return "" +} + +// Data contains the raw bytes of a connection. +type Data struct { + Bytes []byte `protobuf:"bytes,1,opt,name=Bytes,proto3" json:"Bytes,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *Data) Reset() { *m = Data{} } +func (m *Data) String() string { return proto.CompactTextString(m) } +func (*Data) ProtoMessage() {} +func (*Data) Descriptor() ([]byte, []int) { + return fileDescriptor_05583632bd3d8a58, []int{3} +} +func (m *Data) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *Data) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_Data.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 *Data) XXX_Merge(src proto.Message) { + xxx_messageInfo_Data.Merge(m, src) +} +func (m *Data) XXX_Size() int { + return m.Size() +} +func (m *Data) XXX_DiscardUnknown() { + xxx_messageInfo_Data.DiscardUnknown(m) +} + +var xxx_messageInfo_Data proto.InternalMessageInfo + +func (m *Data) GetBytes() []byte { + if m != nil { + return m.Bytes + } + return nil +} + +func init() { + proto.RegisterType((*Frame)(nil), "proto.Frame") + proto.RegisterType((*DialRequest)(nil), "proto.DialRequest") + proto.RegisterType((*NetAddr)(nil), "proto.NetAddr") + proto.RegisterType((*Data)(nil), "proto.Data") +} + +func init() { proto.RegisterFile("proxyservice.proto", fileDescriptor_05583632bd3d8a58) } + +var fileDescriptor_05583632bd3d8a58 = []byte{ + // 360 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x6c, 0x51, 0xcf, 0x4b, 0xe3, 0x40, + 0x18, 0xed, 0xec, 0xf6, 0xc7, 0x76, 0x12, 0xf6, 0xf0, 0x51, 0x96, 0x50, 0x96, 0xee, 0x6e, 0x0e, + 0x4b, 0xf1, 0x90, 0x94, 0x0a, 0x15, 0x7a, 0x33, 0x04, 0xa9, 0x07, 0x8b, 0x4c, 0x7b, 0xf2, 0x36, + 0x6d, 0x3f, 0x62, 0x30, 0xcd, 0xc4, 0xc9, 0xa4, 0x9a, 0xff, 0xd0, 0xa3, 0x77, 0x41, 0xa4, 0x7f, + 0x86, 0x27, 0xc9, 0x24, 0xc5, 0x14, 0x3c, 0xcd, 0x7b, 0xf3, 0xde, 0xf7, 0x9b, 0x42, 0x22, 0xc5, + 0x63, 0x9e, 0xa2, 0xdc, 0x85, 0x6b, 0x74, 0x12, 0x29, 0x94, 0x80, 0x96, 0x7e, 0xfa, 0xbd, 0x40, + 0x04, 0x42, 0x43, 0xb7, 0x40, 0xa5, 0x68, 0x6f, 0x69, 0xeb, 0x42, 0xf2, 0x2d, 0xc2, 0x84, 0x1a, + 0x7e, 0xc8, 0x23, 0x86, 0xf7, 0x19, 0xa6, 0xca, 0x22, 0x7f, 0xc9, 0xd0, 0x18, 0x43, 0xe9, 0x72, + 0x6a, 0xca, 0xac, 0xc1, 0xea, 0x46, 0xf8, 0x47, 0x9b, 0x3e, 0x57, 0xdc, 0xfa, 0xa6, 0x03, 0x8c, + 0x43, 0x00, 0x57, 0x7c, 0xd6, 0x60, 0x5a, 0xf2, 0xba, 0xb4, 0x73, 0x85, 0x69, 0xca, 0x03, 0xb4, + 0x5f, 0xc8, 0x51, 0x19, 0xf8, 0x45, 0xdb, 0x73, 0xb1, 0xc1, 0x4b, 0x5f, 0x17, 0xec, 0xb2, 0x8a, + 0xc1, 0x0d, 0xa5, 0xcb, 0x2c, 0x8e, 0x31, 0x5a, 0xe6, 0x09, 0xea, 0xdc, 0x5d, 0x6f, 0xfa, 0xfe, + 0xfa, 0x67, 0x12, 0x84, 0xea, 0x36, 0x5b, 0x39, 0x6b, 0xb1, 0x75, 0x03, 0xc9, 0x77, 0xa1, 0xe2, + 0x2a, 0x14, 0x31, 0x8f, 0x5c, 0x85, 0x11, 0x26, 0x42, 0x2a, 0x97, 0x27, 0xa1, 0xab, 0xf2, 0x04, + 0x53, 0xe7, 0x33, 0x03, 0xab, 0x65, 0x83, 0xff, 0xb4, 0xbd, 0x10, 0x99, 0x5c, 0xa3, 0xf5, 0x5d, + 0xf7, 0xfc, 0xb3, 0xea, 0x79, 0x8e, 0xea, 0x7c, 0xb3, 0x91, 0xac, 0x52, 0x61, 0x44, 0x0d, 0x1f, + 0x53, 0x15, 0xc6, 0xba, 0x84, 0xd5, 0xfc, 0xd2, 0x5c, 0xb7, 0xd8, 0x67, 0xb4, 0x53, 0xfd, 0x83, + 0xa5, 0xe1, 0x83, 0x90, 0x77, 0xd5, 0x64, 0x07, 0x0a, 0x40, 0x9b, 0x85, 0xa3, 0x1c, 0x8a, 0x69, + 0x6c, 0xff, 0x2e, 0x97, 0x08, 0x3d, 0xda, 0xf2, 0x72, 0x85, 0xa9, 0x8e, 0x31, 0x59, 0x49, 0xc6, + 0x53, 0x6a, 0x5e, 0x17, 0x67, 0x5d, 0x94, 0x67, 0x85, 0x13, 0xfa, 0xa3, 0xd8, 0x61, 0xb1, 0x2a, + 0x30, 0xab, 0x7e, 0xf4, 0x11, 0xfb, 0x47, 0x6c, 0x48, 0x46, 0xc4, 0x33, 0x9f, 0xf6, 0x03, 0xf2, + 0xbc, 0x1f, 0x90, 0xb7, 0xfd, 0x80, 0xac, 0xda, 0x5a, 0x3e, 0xfd, 0x08, 0x00, 0x00, 0xff, 0xff, + 0xa4, 0xe7, 0xe1, 0x7b, 0x27, 0x02, 0x00, 0x00, +} + +// Reference imports to suppress errors if they are not otherwise used. +var _ context.Context +var _ grpc.ClientConn + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the grpc package it is being compiled against. +const _ = grpc.SupportPackageIsVersion4 + +// ProxyServiceClient is the client API for ProxyService service. +// +// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream. +type ProxyServiceClient interface { + // DialNode opens a bidrectional stream to the requested node. + DialNode(ctx context.Context, opts ...grpc.CallOption) (ProxyService_DialNodeClient, error) +} + +type proxyServiceClient struct { + cc *grpc.ClientConn +} + +func NewProxyServiceClient(cc *grpc.ClientConn) ProxyServiceClient { + return &proxyServiceClient{cc} +} + +func (c *proxyServiceClient) DialNode(ctx context.Context, opts ...grpc.CallOption) (ProxyService_DialNodeClient, error) { + stream, err := c.cc.NewStream(ctx, &_ProxyService_serviceDesc.Streams[0], "/proto.ProxyService/DialNode", opts...) + if err != nil { + return nil, err + } + x := &proxyServiceDialNodeClient{stream} + return x, nil +} + +type ProxyService_DialNodeClient interface { + Send(*Frame) error + Recv() (*Frame, error) + grpc.ClientStream +} + +type proxyServiceDialNodeClient struct { + grpc.ClientStream +} + +func (x *proxyServiceDialNodeClient) Send(m *Frame) error { + return x.ClientStream.SendMsg(m) +} + +func (x *proxyServiceDialNodeClient) Recv() (*Frame, error) { + m := new(Frame) + if err := x.ClientStream.RecvMsg(m); err != nil { + return nil, err + } + return m, nil +} + +// ProxyServiceServer is the server API for ProxyService service. +type ProxyServiceServer interface { + // DialNode opens a bidrectional stream to the requested node. + DialNode(ProxyService_DialNodeServer) error +} + +// UnimplementedProxyServiceServer can be embedded to have forward compatible implementations. +type UnimplementedProxyServiceServer struct { +} + +func (*UnimplementedProxyServiceServer) DialNode(srv ProxyService_DialNodeServer) error { + return status.Errorf(codes.Unimplemented, "method DialNode not implemented") +} + +func RegisterProxyServiceServer(s *grpc.Server, srv ProxyServiceServer) { + s.RegisterService(&_ProxyService_serviceDesc, srv) +} + +func _ProxyService_DialNode_Handler(srv interface{}, stream grpc.ServerStream) error { + return srv.(ProxyServiceServer).DialNode(&proxyServiceDialNodeServer{stream}) +} + +type ProxyService_DialNodeServer interface { + Send(*Frame) error + Recv() (*Frame, error) + grpc.ServerStream +} + +type proxyServiceDialNodeServer struct { + grpc.ServerStream +} + +func (x *proxyServiceDialNodeServer) Send(m *Frame) error { + return x.ServerStream.SendMsg(m) +} + +func (x *proxyServiceDialNodeServer) Recv() (*Frame, error) { + m := new(Frame) + if err := x.ServerStream.RecvMsg(m); err != nil { + return nil, err + } + return m, nil +} + +var _ProxyService_serviceDesc = grpc.ServiceDesc{ + ServiceName: "proto.ProxyService", + HandlerType: (*ProxyServiceServer)(nil), + Methods: []grpc.MethodDesc{}, + Streams: []grpc.StreamDesc{ + { + StreamName: "DialNode", + Handler: _ProxyService_DialNode_Handler, + ServerStreams: true, + ClientStreams: true, + }, + }, + Metadata: "proxyservice.proto", +} + +func (m *Frame) 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 *Frame) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *Frame) 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 m.Message != nil { + { + size := m.Message.Size() + i -= size + if _, err := m.Message.MarshalTo(dAtA[i:]); err != nil { + return 0, err + } + } + } + return len(dAtA) - i, nil +} + +func (m *Frame_DialRequest) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *Frame_DialRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + if m.DialRequest != nil { + { + size, err := m.DialRequest.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintProxyservice(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} +func (m *Frame_Data) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *Frame_Data) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + if m.Data != nil { + { + size, err := m.Data.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintProxyservice(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + } + return len(dAtA) - i, nil +} +func (m *DialRequest) 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 *DialRequest) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *DialRequest) 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 m.Destination != nil { + { + size, err := m.Destination.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintProxyservice(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x22 + } + if m.Source != nil { + { + size, err := m.Source.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintProxyservice(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x1a + } + if len(m.TunnelType) > 0 { + i -= len(m.TunnelType) + copy(dAtA[i:], m.TunnelType) + i = encodeVarintProxyservice(dAtA, i, uint64(len(m.TunnelType))) + i-- + dAtA[i] = 0x12 + } + if len(m.NodeID) > 0 { + i -= len(m.NodeID) + copy(dAtA[i:], m.NodeID) + i = encodeVarintProxyservice(dAtA, i, uint64(len(m.NodeID))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *NetAddr) 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 *NetAddr) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *NetAddr) 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.Addr) > 0 { + i -= len(m.Addr) + copy(dAtA[i:], m.Addr) + i = encodeVarintProxyservice(dAtA, i, uint64(len(m.Addr))) + i-- + dAtA[i] = 0x12 + } + if len(m.Network) > 0 { + i -= len(m.Network) + copy(dAtA[i:], m.Network) + i = encodeVarintProxyservice(dAtA, i, uint64(len(m.Network))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *Data) 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 *Data) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *Data) 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.Bytes) > 0 { + i -= len(m.Bytes) + copy(dAtA[i:], m.Bytes) + i = encodeVarintProxyservice(dAtA, i, uint64(len(m.Bytes))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func encodeVarintProxyservice(dAtA []byte, offset int, v uint64) int { + offset -= sovProxyservice(v) + base := offset + for v >= 1<<7 { + dAtA[offset] = uint8(v&0x7f | 0x80) + v >>= 7 + offset++ + } + dAtA[offset] = uint8(v) + return base +} +func (m *Frame) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.Message != nil { + n += m.Message.Size() + } + if m.XXX_unrecognized != nil { + n += len(m.XXX_unrecognized) + } + return n +} + +func (m *Frame_DialRequest) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.DialRequest != nil { + l = m.DialRequest.Size() + n += 1 + l + sovProxyservice(uint64(l)) + } + return n +} +func (m *Frame_Data) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.Data != nil { + l = m.Data.Size() + n += 1 + l + sovProxyservice(uint64(l)) + } + return n +} +func (m *DialRequest) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.NodeID) + if l > 0 { + n += 1 + l + sovProxyservice(uint64(l)) + } + l = len(m.TunnelType) + if l > 0 { + n += 1 + l + sovProxyservice(uint64(l)) + } + if m.Source != nil { + l = m.Source.Size() + n += 1 + l + sovProxyservice(uint64(l)) + } + if m.Destination != nil { + l = m.Destination.Size() + n += 1 + l + sovProxyservice(uint64(l)) + } + if m.XXX_unrecognized != nil { + n += len(m.XXX_unrecognized) + } + return n +} + +func (m *NetAddr) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Network) + if l > 0 { + n += 1 + l + sovProxyservice(uint64(l)) + } + l = len(m.Addr) + if l > 0 { + n += 1 + l + sovProxyservice(uint64(l)) + } + if m.XXX_unrecognized != nil { + n += len(m.XXX_unrecognized) + } + return n +} + +func (m *Data) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Bytes) + if l > 0 { + n += 1 + l + sovProxyservice(uint64(l)) + } + if m.XXX_unrecognized != nil { + n += len(m.XXX_unrecognized) + } + return n +} + +func sovProxyservice(x uint64) (n int) { + return (math_bits.Len64(x|1) + 6) / 7 +} +func sozProxyservice(x uint64) (n int) { + return sovProxyservice(uint64((x << 1) ^ uint64((int64(x) >> 63)))) +} +func (m *Frame) 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 ErrIntOverflowProxyservice + } + 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: Frame: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: Frame: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field DialRequest", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowProxyservice + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthProxyservice + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthProxyservice + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + v := &DialRequest{} + if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + m.Message = &Frame_DialRequest{v} + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Data", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowProxyservice + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthProxyservice + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthProxyservice + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + v := &Data{} + if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + m.Message = &Frame_Data{v} + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipProxyservice(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthProxyservice + } + 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 *DialRequest) 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 ErrIntOverflowProxyservice + } + 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: DialRequest: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: DialRequest: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field NodeID", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowProxyservice + } + 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 ErrInvalidLengthProxyservice + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthProxyservice + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.NodeID = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field TunnelType", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowProxyservice + } + 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 ErrInvalidLengthProxyservice + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthProxyservice + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.TunnelType = github_com_gravitational_teleport_api_types.TunnelType(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Source", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowProxyservice + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthProxyservice + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthProxyservice + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Source == nil { + m.Source = &NetAddr{} + } + if err := m.Source.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Destination", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowProxyservice + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthProxyservice + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthProxyservice + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Destination == nil { + m.Destination = &NetAddr{} + } + if err := m.Destination.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipProxyservice(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthProxyservice + } + 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 *NetAddr) 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 ErrIntOverflowProxyservice + } + 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: NetAddr: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: NetAddr: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Network", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowProxyservice + } + 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 ErrInvalidLengthProxyservice + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthProxyservice + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Network = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Addr", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowProxyservice + } + 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 ErrInvalidLengthProxyservice + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthProxyservice + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Addr = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipProxyservice(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthProxyservice + } + 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 *Data) 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 ErrIntOverflowProxyservice + } + 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: Data: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: Data: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Bytes", wireType) + } + var byteLen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowProxyservice + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + byteLen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if byteLen < 0 { + return ErrInvalidLengthProxyservice + } + postIndex := iNdEx + byteLen + if postIndex < 0 { + return ErrInvalidLengthProxyservice + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Bytes = append(m.Bytes[:0], dAtA[iNdEx:postIndex]...) + if m.Bytes == nil { + m.Bytes = []byte{} + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipProxyservice(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthProxyservice + } + 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 skipProxyservice(dAtA []byte) (n int, err error) { + l := len(dAtA) + iNdEx := 0 + depth := 0 + for iNdEx < l { + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowProxyservice + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + wireType := int(wire & 0x7) + switch wireType { + case 0: + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowProxyservice + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + iNdEx++ + if dAtA[iNdEx-1] < 0x80 { + break + } + } + case 1: + iNdEx += 8 + case 2: + var length int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowProxyservice + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + length |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if length < 0 { + return 0, ErrInvalidLengthProxyservice + } + iNdEx += length + case 3: + depth++ + case 4: + if depth == 0 { + return 0, ErrUnexpectedEndOfGroupProxyservice + } + depth-- + case 5: + iNdEx += 4 + default: + return 0, fmt.Errorf("proto: illegal wireType %d", wireType) + } + if iNdEx < 0 { + return 0, ErrInvalidLengthProxyservice + } + if depth == 0 { + return iNdEx, nil + } + } + return 0, io.ErrUnexpectedEOF +} + +var ( + ErrInvalidLengthProxyservice = fmt.Errorf("proto: negative length found during unmarshaling") + ErrIntOverflowProxyservice = fmt.Errorf("proto: integer overflow") + ErrUnexpectedEndOfGroupProxyservice = fmt.Errorf("proto: unexpected end of group") +) diff --git a/api/client/proto/proxyservice.proto b/api/client/proto/proxyservice.proto new file mode 100644 index 000000000000..ecd74fe2d7c5 --- /dev/null +++ b/api/client/proto/proxyservice.proto @@ -0,0 +1,57 @@ +// Copyright 2022 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 proto; + +import "gogoproto/gogo.proto"; + +// ProxyPeerService is a proxy to proxy api. +service ProxyService { + // DialNode opens a bidrectional stream to the requested node. + rpc DialNode(stream Frame) returns (stream Frame); +} + +// Frame wraps different message types to be sent over a stream. +message Frame { + oneof Message { + DialRequest DialRequest = 1; + Data Data = 2; + } +} + +// DialRequest contains details for connecting to a node. +message DialRequest { + // NodeID is the {UUID}.{ClusterName} of the node to connect to. + string NodeID = 1; + // TunnelType is the type of service being accessed. This differentiates agents that + // create multiple reverse tunnels for different services. + string TunnelType = 2 + [ (gogoproto.casttype) = "github.com/gravitational/teleport/api/types.TunnelType" ]; + // Source is the original source address of the client. + NetAddr Source = 3; + // Destination is the destination address to connect to over the reverse tunnel. + NetAddr Destination = 4; +} + +// Addr is a network address. +message NetAddr { + // Network is the type of network socket. For example tcp or udp. + string Network = 1; + // Addr is the host:port address. For example 'localhost:22' + string Addr = 2; +} + +// Data contains the raw bytes of a connection. +message Data { bytes Bytes = 1; } diff --git a/api/metadata/metadata.go b/api/metadata/metadata.go index 103bd04c8a6e..ac246b37d571 100644 --- a/api/metadata/metadata.go +++ b/api/metadata/metadata.go @@ -52,6 +52,16 @@ func AddMetadataToContext(ctx context.Context, raw map[string]string) context.Co // to stop the client interceptors from adding any metadata to the context (useful for testing). type DisableInterceptors struct{} +// StreamServerInterceptor intercepts a GRPC client stream call and adds +// default metadata to the context. +func StreamServerInterceptor(srv interface{}, stream grpc.ServerStream, info *grpc.StreamServerInfo, handler grpc.StreamHandler) error { + if disable := stream.Context().Value(DisableInterceptors{}); disable == nil { + header := metadata.New(defaultMetadata()) + grpc.SendHeader(stream.Context(), header) + } + return handler(srv, stream) +} + // StreamClientInterceptor intercepts a GRPC client stream call and adds // default metadata to the context. func StreamClientInterceptor(ctx context.Context, desc *grpc.StreamDesc, cc *grpc.ClientConn, method string, streamer grpc.Streamer, opts ...grpc.CallOption) (grpc.ClientStream, error) { diff --git a/api/types/networking.go b/api/types/networking.go index e76478ffb9f9..a23cacd2d728 100644 --- a/api/types/networking.go +++ b/api/types/networking.go @@ -88,6 +88,12 @@ type ClusterNetworkingConfig interface { // SetRoutingStrategy sets the routing strategy setting. SetRoutingStrategy(strategy RoutingStrategy) + + // GetProxyPeering gets the proxy peering setting. + GetProxyPeering() ProxyPeering + + // SetProxyPeering sets the proxy peering setting. + SetProxyPeering(peering ProxyPeering) } // NewClusterNetworkingConfigFromConfigFile is a convenience method to create @@ -278,6 +284,16 @@ func (c *ClusterNetworkingConfigV2) SetRoutingStrategy(strategy RoutingStrategy) c.Spec.RoutingStrategy = strategy } +// GetProxyPeering gets the proxy peering setting. +func (c *ClusterNetworkingConfigV2) GetProxyPeering() ProxyPeering { + return c.Spec.ProxyPeering +} + +// SetProxyPeering sets the proxy peering setting. +func (c *ClusterNetworkingConfigV2) SetProxyPeering(peering ProxyPeering) { + c.Spec.ProxyPeering = peering +} + // CheckAndSetDefaults verifies the constraints for ClusterNetworkingConfig. func (c *ClusterNetworkingConfigV2) CheckAndSetDefaults() error { c.setStaticFields() @@ -353,3 +369,30 @@ func (s *RoutingStrategy) UnmarshalYAML(unmarshal func(interface{}) error) error return trace.BadParameter( "routing strategy must be one of %s; got %q", strings.Join(available, ","), stringVar) } + +// MarshalYAML defines how proxy peering should be marshalled to a string +func (s ProxyPeering) MarshalYAML() (interface{}, error) { + return strings.ToLower(s.String()), nil +} + +// UnmarshalYAML unmarshalls proxy peering from YAML value. +func (s *ProxyPeering) UnmarshalYAML(unmarshal func(interface{}) error) error { + var stringVar string + if err := unmarshal(&stringVar); err != nil { + return trace.Wrap(err) + } + + for k, v := range ProxyPeering_value { + if strings.EqualFold(k, stringVar) { + *s = ProxyPeering(v) + return nil + } + } + + available := make([]string, 0, len(ProxyPeering_value)) + for k := range ProxyPeering_value { + available = append(available, strings.ToLower(k)) + } + return trace.BadParameter( + "routing strategy must be one of %s; got %q", strings.Join(available, ","), stringVar) +} diff --git a/api/types/networking_test.go b/api/types/networking_test.go index dc149a129108..5f31b8cf8e87 100644 --- a/api/types/networking_test.go +++ b/api/types/networking_test.go @@ -89,3 +89,73 @@ func TestProxyListenerModeUnmarshalYAML(t *testing.T) { }) } } + +func TestProxyPeeringMarshalYAML(t *testing.T) { + tt := []struct { + name string + in ProxyPeering + want string + }{ + { + name: "default value", + want: "disabled", + }, + { + name: "multiplex mode", + in: ProxyPeering_Enabled, + want: "enabled", + }, + } + + for _, tc := range tt { + t.Run(tc.name, func(t *testing.T) { + buff, err := yaml.Marshal(&tc.in) + require.NoError(t, err) + require.Equal(t, tc.want, strings.TrimRight(string(buff), "\n")) + }) + } +} + +func TestProxyPeeringUnmarshalYAML(t *testing.T) { + tt := []struct { + name string + in string + want ProxyPeering + wantErr func(*testing.T, error) + }{ + { + name: "default value", + in: "", + want: ProxyPeering_Disabled, + }, + { + name: "enabled", + in: "enabled", + want: ProxyPeering_Enabled, + }, + { + name: "disabled", + in: "disabled", + want: ProxyPeering_Disabled, + }, + { + name: "invalid value", + in: "unknown value", + wantErr: func(t *testing.T, err error) { + require.IsType(t, &trace.BadParameterError{}, err.(*trace.TraceErr).OrigError()) + }, + }, + } + + for _, tc := range tt { + t.Run(tc.name, func(t *testing.T) { + var got ProxyPeering + err := yaml.Unmarshal([]byte(tc.in), &got) + if tc.wantErr != nil { + tc.wantErr(t, err) + return + } + require.Equal(t, tc.want, got) + }) + } +} diff --git a/api/types/types.pb.go b/api/types/types.pb.go index 93419b19bbe0..a813391f7176 100644 --- a/api/types/types.pb.go +++ b/api/types/types.pb.go @@ -92,6 +92,34 @@ func (PrivateKeyType) EnumDescriptor() ([]byte, []int) { return fileDescriptor_d938547f84707355, []int{1} } +// ProxyPeeringMode represents the cluster proxy peering mode. +type ProxyPeering int32 + +const ( + // Disabled is set if proxy peering is disabled. + ProxyPeering_Disabled ProxyPeering = 0 + // Enabled is set if proxy peering is enabled. + ProxyPeering_Enabled ProxyPeering = 1 +) + +var ProxyPeering_name = map[int32]string{ + 0: "Disabled", + 1: "Enabled", +} + +var ProxyPeering_value = map[string]int32{ + "Disabled": 0, + "Enabled": 1, +} + +func (x ProxyPeering) String() string { + return proto.EnumName(ProxyPeering_name, int32(x)) +} + +func (ProxyPeering) EnumDescriptor() ([]byte, []int) { + return fileDescriptor_d938547f84707355, []int{2} +} + // ProxyListenerMode represents the cluster proxy listener mode. type ProxyListenerMode int32 @@ -119,7 +147,7 @@ func (x ProxyListenerMode) String() string { } func (ProxyListenerMode) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_d938547f84707355, []int{2} + return fileDescriptor_d938547f84707355, []int{3} } // RoutingStrategy determines the strategy used to route to nodes. @@ -147,7 +175,7 @@ func (x RoutingStrategy) String() string { } func (RoutingStrategy) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_d938547f84707355, []int{3} + return fileDescriptor_d938547f84707355, []int{4} } // UserTokenUsage contains additional information about the intended usage of a user token. @@ -179,7 +207,7 @@ func (x UserTokenUsage) String() string { } func (UserTokenUsage) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_d938547f84707355, []int{4} + return fileDescriptor_d938547f84707355, []int{5} } // RequestState represents the state of a request for escalated privilege. @@ -218,7 +246,7 @@ func (x RequestState) String() string { } func (RequestState) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_d938547f84707355, []int{5} + return fileDescriptor_d938547f84707355, []int{6} } // Type is the type of keep alive, used by servers. At the moment only @@ -2720,10 +2748,12 @@ type ClusterNetworkingConfigSpecV2 struct { // ProxyListenerMode is proxy listener mode used by Teleport Proxies. ProxyListenerMode ProxyListenerMode `protobuf:"varint,7,opt,name=ProxyListenerMode,proto3,enum=types.ProxyListenerMode" json:"proxy_listener_mode,omitempty"` // RoutingStrategy determines the strategy used to route to nodes. - RoutingStrategy RoutingStrategy `protobuf:"varint,8,opt,name=RoutingStrategy,proto3,enum=types.RoutingStrategy" json:"routing_strategy,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + RoutingStrategy RoutingStrategy `protobuf:"varint,8,opt,name=RoutingStrategy,proto3,enum=types.RoutingStrategy" json:"routing_strategy,omitempty"` + // ProxyPeeringMode determines if proxy peering is enabled in the cluster. + ProxyPeering ProxyPeering `protobuf:"varint,9,opt,name=ProxyPeering,proto3,enum=types.ProxyPeering" json:"proxy_peering,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } func (m *ClusterNetworkingConfigSpecV2) Reset() { *m = ClusterNetworkingConfigSpecV2{} } @@ -8241,6 +8271,7 @@ var xxx_messageInfo_RecoveryCode proto.InternalMessageInfo func init() { proto.RegisterEnum("types.DatabaseTLSMode", DatabaseTLSMode_name, DatabaseTLSMode_value) proto.RegisterEnum("types.PrivateKeyType", PrivateKeyType_name, PrivateKeyType_value) + proto.RegisterEnum("types.ProxyPeering", ProxyPeering_name, ProxyPeering_value) proto.RegisterEnum("types.ProxyListenerMode", ProxyListenerMode_name, ProxyListenerMode_value) proto.RegisterEnum("types.RoutingStrategy", RoutingStrategy_name, RoutingStrategy_value) proto.RegisterEnum("types.UserTokenUsage", UserTokenUsage_name, UserTokenUsage_value) @@ -8426,680 +8457,683 @@ func init() { func init() { proto.RegisterFile("types.proto", fileDescriptor_d938547f84707355) } var fileDescriptor_d938547f84707355 = []byte{ - // 10767 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xdc, 0xbd, 0x5d, 0x6c, 0x24, 0xd9, - 0x75, 0x18, 0x3c, 0xd5, 0xdd, 0x24, 0xbb, 0x0f, 0xff, 0x9a, 0x97, 0xc3, 0x19, 0xce, 0xec, 0xec, - 0xf6, 0xa8, 0xf6, 0x6f, 0x66, 0xb4, 0x3b, 0xb3, 0xc3, 0xd9, 0x5d, 0x69, 0xb5, 0x7f, 0xea, 0x26, - 0x39, 0x33, 0xdc, 0xe1, 0x90, 0xdc, 0x6a, 0xfe, 0xe8, 0xd7, 0xe5, 0x62, 0xd7, 0x1d, 0xb2, 0xc4, - 0xee, 0xae, 0x56, 0x55, 0xf5, 0xcc, 0xd0, 0xfa, 0x0c, 0xfb, 0x4b, 0x20, 0x0b, 0x86, 0x61, 0x29, - 0x0a, 0x64, 0x48, 0x0e, 0x9c, 0xc4, 0x10, 0x12, 0xe4, 0xc7, 0x50, 0x1e, 0xec, 0x00, 0x41, 0x80, - 0xe4, 0xc1, 0x80, 0xe1, 0xe8, 0x21, 0x46, 0xf4, 0x16, 0xd8, 0x09, 0x98, 0x48, 0xce, 0x8b, 0x09, - 0xe4, 0x29, 0x4f, 0x56, 0x22, 0x24, 0xb8, 0xe7, 0xde, 0x5b, 0x75, 0x6f, 0x75, 0x35, 0xd9, 0xdc, - 0x99, 0x05, 0xc4, 0x7d, 0x22, 0xfb, 0xdc, 0x73, 0xce, 0xfd, 0x3f, 0xf7, 0x9c, 0x7b, 0xcf, 0x39, - 0x05, 0xa3, 0xd1, 0x7e, 0x87, 0x86, 0xd7, 0x3b, 0x81, 0x1f, 0xf9, 0x64, 0x08, 0x7f, 0x5c, 0x3c, - 0xbb, 0xe3, 0xef, 0xf8, 0x08, 0xb9, 0xc1, 0xfe, 0xe3, 0x85, 0x17, 0x2b, 0x3b, 0xbe, 0xbf, 0xd3, - 0xa4, 0x37, 0xf0, 0xd7, 0x76, 0xf7, 0xc1, 0x8d, 0xc8, 0x6b, 0xd1, 0x30, 0x72, 0x5a, 0x1d, 0x81, - 0x30, 0xbf, 0xe3, 0x45, 0xbb, 0xdd, 0xed, 0xeb, 0x0d, 0xbf, 0x75, 0x63, 0x27, 0x70, 0x1e, 0x7a, - 0x91, 0x13, 0x79, 0x7e, 0xdb, 0x69, 0xde, 0x88, 0x68, 0x93, 0x76, 0xfc, 0x20, 0xba, 0xe1, 0x74, - 0xbc, 0x1b, 0x58, 0xc7, 0x8d, 0x47, 0x81, 0xd3, 0xe9, 0xd0, 0x20, 0xf9, 0x87, 0x33, 0x31, 0xbf, - 0x9b, 0x87, 0xd2, 0x3d, 0x4a, 0x3b, 0xd5, 0xa6, 0xf7, 0x90, 0x92, 0xe7, 0xa1, 0xb0, 0xe2, 0xb4, - 0xe8, 0xac, 0x71, 0xd9, 0xb8, 0x52, 0xaa, 0x4d, 0x1e, 0x1e, 0x54, 0x46, 0x43, 0x1a, 0x3c, 0xa4, - 0x81, 0xdd, 0x76, 0x5a, 0xd4, 0xc2, 0x42, 0xf2, 0x69, 0x28, 0xb1, 0xbf, 0x61, 0xc7, 0x69, 0xd0, - 0xd9, 0x1c, 0x62, 0x8e, 0x1f, 0x1e, 0x54, 0x4a, 0x6d, 0x09, 0xb4, 0x92, 0x72, 0xf2, 0x12, 0x8c, - 0x2c, 0x53, 0x27, 0xa4, 0x4b, 0x0b, 0xb3, 0xf9, 0xcb, 0xc6, 0x95, 0x7c, 0x6d, 0xec, 0xf0, 0xa0, - 0x52, 0x6c, 0x32, 0x90, 0xed, 0xb9, 0x96, 0x2c, 0x24, 0x4b, 0x30, 0xb2, 0xf8, 0xb8, 0xe3, 0x05, - 0x34, 0x9c, 0x2d, 0x5c, 0x36, 0xae, 0x8c, 0xce, 0x5d, 0xbc, 0xce, 0xfb, 0x7f, 0x5d, 0xf6, 0xff, - 0xfa, 0xba, 0xec, 0x7f, 0x6d, 0xfa, 0xc7, 0x07, 0x95, 0x33, 0x87, 0x07, 0x95, 0x11, 0xca, 0x49, - 0xfe, 0xde, 0x7f, 0xab, 0x18, 0x96, 0xa4, 0x27, 0xef, 0x40, 0x61, 0x7d, 0xbf, 0x43, 0x67, 0x4b, - 0x97, 0x8d, 0x2b, 0x13, 0x73, 0xcf, 0x5d, 0xe7, 0x23, 0x1e, 0x77, 0x32, 0xf9, 0x8f, 0x61, 0xd5, - 0x8a, 0x87, 0x07, 0x95, 0x02, 0x43, 0xb1, 0x90, 0x8a, 0xbc, 0x0a, 0xc3, 0x77, 0xfd, 0x30, 0x5a, - 0x5a, 0x98, 0x05, 0xec, 0xda, 0xcc, 0xe1, 0x41, 0x65, 0x6a, 0xd7, 0x0f, 0x23, 0xdb, 0x73, 0x5f, - 0xf1, 0x5b, 0x5e, 0x44, 0x5b, 0x9d, 0x68, 0xdf, 0x12, 0x48, 0xa6, 0x05, 0xe3, 0x1a, 0x3f, 0x32, - 0x0a, 0x23, 0x1b, 0x2b, 0xf7, 0x56, 0x56, 0xb7, 0x56, 0xca, 0x67, 0x48, 0x11, 0x0a, 0x2b, 0xab, - 0x0b, 0x8b, 0x65, 0x83, 0x8c, 0x40, 0xbe, 0xba, 0xb6, 0x56, 0xce, 0x91, 0x31, 0x28, 0x2e, 0x54, - 0xd7, 0xab, 0xb5, 0x6a, 0x7d, 0xb1, 0x9c, 0x27, 0xd3, 0x30, 0xb9, 0xb5, 0xb4, 0xb2, 0xb0, 0xba, - 0x55, 0xb7, 0x17, 0x16, 0xeb, 0xf7, 0xd6, 0x57, 0xd7, 0xca, 0x05, 0xf3, 0x5b, 0x79, 0x28, 0xde, - 0xa7, 0x91, 0xe3, 0x3a, 0x91, 0x43, 0x2e, 0x69, 0x53, 0x82, 0xad, 0x55, 0xe6, 0xe2, 0xf9, 0xde, - 0xb9, 0x18, 0x3a, 0x3c, 0xa8, 0x18, 0xaf, 0xaa, 0x73, 0xf0, 0x36, 0x8c, 0x2e, 0xd0, 0xb0, 0x11, - 0x78, 0x1d, 0xb6, 0x3e, 0x70, 0x1e, 0x4a, 0xb5, 0x0b, 0x87, 0x07, 0x95, 0x19, 0x37, 0x01, 0x2b, - 0x7d, 0x53, 0xb1, 0xc9, 0x12, 0x0c, 0x2f, 0x3b, 0xdb, 0xb4, 0x19, 0xce, 0x0e, 0x5d, 0xce, 0x5f, - 0x19, 0x9d, 0x7b, 0x46, 0x8c, 0xa7, 0x6c, 0xe0, 0x75, 0x5e, 0xba, 0xd8, 0x8e, 0x82, 0xfd, 0xda, - 0xd9, 0xc3, 0x83, 0x4a, 0xb9, 0x89, 0x00, 0x75, 0xac, 0x38, 0x0a, 0xa9, 0x27, 0x73, 0x3c, 0x7c, - 0xec, 0x1c, 0x3f, 0xfb, 0xe3, 0x83, 0x8a, 0xc1, 0xc6, 0x5e, 0xcc, 0x71, 0xc2, 0x4f, 0x9f, 0xed, - 0xcb, 0x90, 0x5b, 0x5a, 0x98, 0x1d, 0xc1, 0xb5, 0x55, 0x3e, 0x3c, 0xa8, 0x8c, 0x69, 0xd3, 0x94, - 0x5b, 0x5a, 0xb8, 0xf8, 0x16, 0x8c, 0x2a, 0x6d, 0x24, 0x65, 0xc8, 0xef, 0xd1, 0x7d, 0x3e, 0x9e, - 0x16, 0xfb, 0x97, 0x9c, 0x85, 0xa1, 0x87, 0x4e, 0xb3, 0x2b, 0x06, 0xd0, 0xe2, 0x3f, 0x3e, 0x97, - 0xfb, 0xac, 0x61, 0xfe, 0xfd, 0x02, 0x14, 0x2d, 0x9f, 0xef, 0x2b, 0x72, 0x15, 0x86, 0xea, 0x91, - 0x13, 0xc9, 0xa9, 0x98, 0x3e, 0x3c, 0xa8, 0x4c, 0x86, 0x0c, 0xa0, 0xd4, 0xc7, 0x31, 0x18, 0xea, - 0xda, 0xae, 0x13, 0xca, 0x29, 0x41, 0xd4, 0x0e, 0x03, 0xa8, 0xa8, 0x88, 0x41, 0x5e, 0x82, 0xc2, - 0x7d, 0xdf, 0xa5, 0x62, 0x56, 0xc8, 0xe1, 0x41, 0x65, 0xa2, 0xe5, 0xbb, 0x2a, 0x22, 0x96, 0x93, - 0x57, 0xa0, 0x34, 0xdf, 0x0d, 0x02, 0xda, 0x66, 0x4b, 0xb3, 0x80, 0xc8, 0x13, 0x87, 0x07, 0x15, - 0x68, 0x70, 0x20, 0xdb, 0x4c, 0x09, 0x02, 0x1b, 0xea, 0x7a, 0xe4, 0x04, 0x11, 0x75, 0x67, 0x87, - 0x06, 0x1a, 0x6a, 0xb6, 0x9d, 0xa6, 0x42, 0x4e, 0x92, 0x1e, 0x6a, 0xc1, 0x89, 0xdc, 0x85, 0xd1, - 0x3b, 0x81, 0xd3, 0xa0, 0x6b, 0x34, 0xf0, 0x7c, 0x17, 0xe7, 0x30, 0x5f, 0x7b, 0xe9, 0xf0, 0xa0, - 0x72, 0x6e, 0x87, 0x81, 0xed, 0x0e, 0xc2, 0x13, 0xea, 0x9f, 0x1f, 0x54, 0x8a, 0x0b, 0xdd, 0x00, - 0x47, 0xcf, 0x52, 0x49, 0xc9, 0xaf, 0xb2, 0x29, 0x09, 0x23, 0x1c, 0x5a, 0xea, 0xe2, 0xec, 0x1d, - 0xdd, 0x44, 0x53, 0x34, 0xf1, 0x5c, 0xd3, 0x09, 0x23, 0x3b, 0xe0, 0x74, 0xa9, 0x76, 0xaa, 0x2c, - 0xc9, 0x2a, 0x14, 0xeb, 0x8d, 0x5d, 0xea, 0x76, 0x9b, 0x74, 0xb6, 0x88, 0xec, 0xcf, 0x8b, 0x85, - 0x2b, 0xe7, 0x53, 0x16, 0xd7, 0x2e, 0x0a, 0xde, 0x24, 0x14, 0x10, 0x65, 0xec, 0x63, 0x26, 0x9f, - 0x2b, 0xfe, 0xe0, 0x0f, 0x2b, 0x67, 0x7e, 0xf3, 0xbf, 0x5e, 0x3e, 0x63, 0xfe, 0x9b, 0x1c, 0x94, - 0xd3, 0x4c, 0xc8, 0x03, 0x18, 0xdf, 0xe8, 0xb8, 0x4e, 0x44, 0xe7, 0x9b, 0x1e, 0x6d, 0x47, 0x21, - 0x2e, 0x92, 0xa3, 0xfb, 0xf4, 0x82, 0xa8, 0x77, 0xb6, 0x8b, 0x84, 0x76, 0x83, 0x53, 0xa6, 0x7a, - 0xa5, 0xb3, 0x4d, 0xea, 0xa9, 0xa3, 0x5c, 0x0e, 0x71, 0x85, 0x9d, 0xac, 0x1e, 0x2e, 0xd1, 0xfb, - 0xd4, 0x23, 0xd8, 0x8a, 0x05, 0xd4, 0x76, 0xb7, 0xf7, 0x71, 0x65, 0x0e, 0xbe, 0x80, 0x18, 0x49, - 0xc6, 0x02, 0x62, 0x60, 0xf3, 0x7f, 0x18, 0x30, 0x61, 0xd1, 0xd0, 0xef, 0x06, 0x0d, 0x7a, 0x97, - 0x3a, 0x2e, 0x0d, 0xd8, 0xf2, 0xbf, 0xe7, 0xb5, 0x5d, 0xb1, 0xa7, 0x70, 0xf9, 0xef, 0x79, 0x6d, - 0x75, 0x0b, 0x63, 0x39, 0x79, 0x0d, 0x46, 0xea, 0xdd, 0x6d, 0x44, 0xe5, 0x7b, 0xea, 0x1c, 0xce, - 0x58, 0x77, 0xdb, 0x4e, 0xa1, 0x4b, 0x34, 0x72, 0x03, 0x46, 0x36, 0x69, 0x10, 0x26, 0x12, 0x0f, - 0x25, 0xf9, 0x43, 0x0e, 0x52, 0x09, 0x04, 0x16, 0xb9, 0x93, 0x48, 0x5d, 0x71, 0x06, 0x4d, 0xa6, - 0x64, 0x5d, 0xb2, 0x54, 0x5a, 0x02, 0xa2, 0x2e, 0x15, 0x89, 0x65, 0x7e, 0x37, 0x07, 0xe5, 0x05, - 0x27, 0x72, 0xb6, 0x9d, 0x50, 0x8c, 0xe7, 0xe6, 0x2d, 0x26, 0xc7, 0x95, 0x8e, 0xa2, 0x1c, 0x67, - 0x2d, 0xff, 0xc8, 0xdd, 0x7b, 0x31, 0xdd, 0xbd, 0x51, 0x76, 0x20, 0x8a, 0xee, 0x25, 0x9d, 0x7a, - 0xf7, 0xf8, 0x4e, 0x95, 0x45, 0xa7, 0x8a, 0xb2, 0x53, 0x49, 0x57, 0xc8, 0xbb, 0x50, 0xa8, 0x77, - 0x68, 0x43, 0x08, 0x11, 0x29, 0xfb, 0xf5, 0xce, 0x31, 0x84, 0xcd, 0x5b, 0xb5, 0x31, 0xc1, 0xa6, - 0x10, 0x76, 0x68, 0xc3, 0x42, 0x32, 0x65, 0xd3, 0x7c, 0x6f, 0x18, 0xce, 0x66, 0x91, 0x91, 0x77, - 0xf5, 0xc3, 0x89, 0x0f, 0xcf, 0x33, 0x7d, 0x0f, 0xa7, 0x59, 0x43, 0x3f, 0x9e, 0xae, 0x41, 0x71, - 0x8d, 0x2d, 0xc8, 0x86, 0xdf, 0x14, 0x23, 0xc7, 0xa4, 0x62, 0xb1, 0x23, 0x61, 0x86, 0x15, 0x97, - 0x93, 0x67, 0x20, 0xbf, 0x61, 0x2d, 0x89, 0xe1, 0x2a, 0x1d, 0x1e, 0x54, 0xf2, 0xdd, 0xc0, 0x9b, - 0x35, 0x2c, 0x06, 0x25, 0x37, 0x60, 0x78, 0xbe, 0x3a, 0x4f, 0x83, 0x08, 0x87, 0x69, 0xac, 0x76, - 0x9e, 0xad, 0x96, 0x86, 0x63, 0x37, 0x68, 0x10, 0x69, 0xd5, 0x0b, 0x34, 0xf2, 0x69, 0xc8, 0x57, - 0xb7, 0xea, 0x62, 0x64, 0x40, 0x8c, 0x4c, 0x75, 0xab, 0x5e, 0x1b, 0x17, 0x03, 0x91, 0x77, 0x1e, - 0x85, 0x8c, 0x7b, 0x75, 0xab, 0xae, 0xce, 0xd6, 0xf0, 0x11, 0xb3, 0x75, 0x05, 0x8a, 0x4c, 0xaf, - 0x60, 0x07, 0x3c, 0x0a, 0xc5, 0x12, 0x57, 0x97, 0x76, 0x05, 0xcc, 0x8a, 0x4b, 0xc9, 0xf3, 0xb1, - 0x9a, 0x52, 0x4c, 0xf8, 0x09, 0x35, 0x45, 0x2a, 0x27, 0xe4, 0x31, 0x8c, 0x2f, 0xec, 0xb7, 0x9d, - 0x96, 0xd7, 0x10, 0x47, 0x78, 0x09, 0x8f, 0xf0, 0xeb, 0x47, 0x4c, 0xe3, 0x75, 0x8d, 0x80, 0x9f, - 0xea, 0x52, 0xf8, 0xce, 0xba, 0xbc, 0xcc, 0x4e, 0x9f, 0xf0, 0xb3, 0x86, 0xa5, 0x57, 0xc4, 0xf6, - 0x92, 0x14, 0x91, 0xa8, 0x47, 0x25, 0xcb, 0x4e, 0x82, 0x93, 0xbd, 0x14, 0x08, 0x88, 0xba, 0x97, - 0xe2, 0x43, 0xf7, 0x5d, 0xc8, 0xdf, 0x99, 0x5f, 0x9b, 0x1d, 0x45, 0x1e, 0x44, 0xf0, 0xb8, 0x33, - 0xbf, 0x36, 0xdf, 0xf4, 0xbb, 0x6e, 0xfd, 0xc3, 0xe5, 0xda, 0x79, 0xc1, 0x66, 0x7c, 0xa7, 0xd1, - 0xd1, 0x5a, 0xc4, 0xe8, 0xc8, 0x22, 0x14, 0x65, 0x2f, 0x67, 0xc7, 0x90, 0xc7, 0x54, 0xaa, 0xf3, - 0x9b, 0xb7, 0xf8, 0x5e, 0x73, 0xc5, 0x6f, 0xb5, 0x15, 0x12, 0xe7, 0xe2, 0x16, 0x90, 0xde, 0x71, - 0xc9, 0xd0, 0x24, 0x3e, 0xad, 0x6a, 0x12, 0xa3, 0x73, 0x33, 0xa2, 0xae, 0x79, 0xbf, 0xd5, 0x72, - 0xda, 0x2e, 0xd2, 0x6e, 0xce, 0xa9, 0x0a, 0x46, 0x15, 0x26, 0x92, 0x86, 0x2c, 0x7b, 0x61, 0x44, - 0x6e, 0x40, 0x49, 0x42, 0xd8, 0x21, 0x92, 0xcf, 0x6c, 0xb2, 0x95, 0xe0, 0x98, 0x7f, 0x9e, 0x03, - 0x48, 0x4a, 0x4e, 0xa9, 0x9c, 0xf9, 0x8c, 0x26, 0x67, 0x66, 0xd2, 0x0b, 0xb4, 0xaf, 0x84, 0x21, - 0xef, 0xc3, 0x30, 0x53, 0xb9, 0xba, 0x52, 0xa5, 0x3c, 0x9f, 0x26, 0xc5, 0xc2, 0xcd, 0x5b, 0xb5, - 0x09, 0x41, 0x3c, 0x1c, 0x22, 0xc4, 0x12, 0x64, 0x8a, 0x88, 0xfa, 0xf7, 0x85, 0x64, 0x32, 0x84, - 0x70, 0xba, 0xa2, 0x48, 0x17, 0x23, 0xd9, 0x8f, 0x52, 0xba, 0x28, 0xb2, 0xe5, 0x02, 0x97, 0x2d, - 0x7c, 0x50, 0x47, 0x84, 0x6c, 0x49, 0x4b, 0x16, 0x3e, 0x80, 0xc7, 0x4a, 0x96, 0x4e, 0x7a, 0xdb, - 0x16, 0x70, 0x19, 0x5c, 0xc9, 0x1c, 0x95, 0xac, 0x0d, 0x7b, 0xf9, 0xb8, 0x0d, 0x9b, 0xde, 0xae, - 0xb7, 0xfa, 0xc9, 0xb2, 0x19, 0xb9, 0xbb, 0x9c, 0x47, 0x2a, 0x39, 0xca, 0xb4, 0xb7, 0xf9, 0xd6, - 0x1c, 0xee, 0xbb, 0x35, 0x67, 0x32, 0xb7, 0x26, 0xdf, 0x98, 0x6f, 0xc3, 0x50, 0xf5, 0xd7, 0xba, - 0x01, 0x15, 0xba, 0xdf, 0x98, 0xac, 0x93, 0xc1, 0xe2, 0x3d, 0x3d, 0xe9, 0xb0, 0x9f, 0xaa, 0xce, - 0x8c, 0xe5, 0xac, 0xe6, 0xf5, 0xe5, 0xba, 0xd0, 0xeb, 0x48, 0x6a, 0x58, 0xd6, 0x97, 0x95, 0x66, - 0x47, 0x5a, 0xaf, 0x19, 0xd5, 0xc7, 0xb7, 0x97, 0x9b, 0xca, 0xa9, 0x2f, 0x56, 0x1d, 0xb3, 0x26, - 0xc5, 0xdc, 0x1b, 0x89, 0x0e, 0xd2, 0x33, 0xf7, 0xf1, 0xcc, 0x5f, 0xe5, 0xf3, 0x90, 0xeb, 0x99, - 0x87, 0x51, 0xe5, 0x4c, 0xc1, 0xd1, 0x37, 0xff, 0xc6, 0x40, 0x5c, 0xf2, 0x0a, 0x0c, 0x5b, 0x74, - 0x27, 0x39, 0x3a, 0xd1, 0x04, 0x0b, 0x10, 0xa2, 0x56, 0xc0, 0x71, 0x50, 0x2e, 0x53, 0x37, 0xdc, - 0xf5, 0x1e, 0x44, 0xa2, 0x96, 0x58, 0x2e, 0x0b, 0xb0, 0x22, 0x97, 0x05, 0x44, 0x93, 0xcb, 0x02, - 0xc6, 0x56, 0x8c, 0xb5, 0x50, 0x17, 0xba, 0xa1, 0x6c, 0xa9, 0xb5, 0xa0, 0x0c, 0x7d, 0xe0, 0x6a, - 0x43, 0x6f, 0x2d, 0xd4, 0xc9, 0x9b, 0x50, 0xaa, 0x36, 0x1a, 0x7e, 0x57, 0xb1, 0x61, 0x66, 0x0f, - 0x0f, 0x2a, 0x67, 0x1d, 0x0e, 0xd4, 0x2d, 0xec, 0x04, 0xd5, 0xac, 0x25, 0xad, 0x66, 0x3c, 0xe6, - 0x9b, 0xdd, 0x30, 0xa2, 0xc1, 0xd2, 0x82, 0xe8, 0x32, 0xf2, 0x68, 0x70, 0x60, 0x8a, 0x47, 0x8c, - 0x6a, 0xfe, 0x17, 0x03, 0x5b, 0x4c, 0xde, 0x02, 0x58, 0x6a, 0x33, 0x3d, 0xb5, 0x41, 0x63, 0x06, - 0x68, 0x0b, 0x7b, 0x02, 0xaa, 0x73, 0x50, 0x90, 0xf5, 0xaa, 0x73, 0x03, 0x57, 0xcd, 0xaa, 0x94, - 0x5a, 0xaf, 0xb8, 0x06, 0x11, 0x55, 0x06, 0x02, 0x9a, 0xaa, 0x32, 0x41, 0x26, 0x2f, 0xc1, 0xc8, - 0x52, 0xf5, 0x7e, 0xb5, 0x1b, 0xed, 0xe2, 0x78, 0x15, 0xb9, 0xfc, 0xf1, 0x9c, 0x96, 0xed, 0x74, - 0xa3, 0x5d, 0x4b, 0x16, 0x9a, 0xbf, 0x69, 0xc0, 0xa8, 0xb2, 0xf5, 0x58, 0x53, 0xd7, 0x02, 0xff, - 0x6b, 0xb4, 0x11, 0xe9, 0xa3, 0xd4, 0xe1, 0xc0, 0x54, 0x53, 0x63, 0xd4, 0xd4, 0xe8, 0xe4, 0x4e, - 0x30, 0x3a, 0xe6, 0x0d, 0xb1, 0xa3, 0x99, 0x4a, 0xaf, 0xdc, 0x58, 0xa0, 0x4a, 0xcf, 0x54, 0x16, - 0x55, 0xa5, 0x67, 0xe5, 0xe6, 0x8f, 0x0c, 0x18, 0x55, 0x36, 0x2d, 0x79, 0x5d, 0x58, 0xc2, 0x06, - 0xde, 0xdb, 0x9c, 0xeb, 0xdd, 0xd6, 0xac, 0x94, 0x9f, 0x68, 0xcc, 0x42, 0x16, 0x76, 0x71, 0xb2, - 0xc3, 0x72, 0x83, 0xec, 0xb0, 0xb7, 0x00, 0xb8, 0xba, 0x83, 0x4d, 0x54, 0xe6, 0x42, 0xb9, 0xe7, - 0x52, 0x3b, 0x98, 0x20, 0x9b, 0xff, 0x7f, 0x0e, 0x8a, 0x42, 0x9d, 0x9f, 0x3b, 0xa5, 0xc7, 0xec, - 0x1b, 0xda, 0x31, 0x3b, 0x2d, 0x48, 0x15, 0xfd, 0x6f, 0xee, 0x18, 0x35, 0xfe, 0x2d, 0x18, 0x93, - 0x43, 0x80, 0xda, 0xca, 0x55, 0x18, 0x91, 0x86, 0x28, 0xd7, 0x55, 0x26, 0x35, 0x9e, 0x9b, 0x73, - 0x96, 0x2c, 0x37, 0xbf, 0x3b, 0x24, 0x69, 0x79, 0x4d, 0x6c, 0x08, 0xab, 0xae, 0x1b, 0xa8, 0x43, - 0xe8, 0xb8, 0x6e, 0x60, 0x21, 0x94, 0x4d, 0xd4, 0x5a, 0x77, 0xbb, 0xe9, 0x35, 0x10, 0x47, 0x59, - 0x89, 0x1d, 0x84, 0xda, 0x0c, 0x55, 0x9d, 0xa8, 0x04, 0x59, 0xd3, 0xa2, 0xf3, 0x47, 0x6a, 0xd1, - 0xbf, 0x02, 0xa5, 0xf9, 0x96, 0xab, 0x9d, 0xb2, 0x66, 0xc6, 0xa0, 0x5c, 0x8f, 0x91, 0xf8, 0xf9, - 0x7a, 0x49, 0x8c, 0xd1, 0xd9, 0x46, 0xcb, 0xed, 0x3d, 0x5b, 0x13, 0x96, 0x9a, 0x1a, 0x3c, 0xf4, - 0x24, 0x6a, 0xf0, 0x9b, 0x50, 0xda, 0x08, 0xe9, 0x7a, 0xb7, 0xdd, 0xa6, 0x4d, 0x3c, 0x71, 0x8b, - 0x7c, 0x3f, 0x77, 0x43, 0x6a, 0x47, 0x08, 0x55, 0x1b, 0x10, 0xa3, 0xaa, 0xcb, 0x6a, 0xe4, 0x88, - 0x65, 0xf5, 0x3a, 0x14, 0xaa, 0x9d, 0x8e, 0xb4, 0x0f, 0xe2, 0x83, 0xa7, 0xd3, 0xc1, 0xe3, 0x64, - 0xc2, 0xe9, 0x74, 0x74, 0x6d, 0x1f, 0xb1, 0x09, 0x05, 0x72, 0xaf, 0xbb, 0x4d, 0x83, 0x36, 0x8d, - 0x68, 0x28, 0xc4, 0x5d, 0x38, 0x0b, 0xc8, 0x63, 0x56, 0x5e, 0xbb, 0xa6, 0x11, 0xd0, 0xb6, 0x3b, - 0xbf, 0xd7, 0xdd, 0xa6, 0xb6, 0x90, 0x9b, 0xea, 0xd8, 0x65, 0x30, 0xbc, 0x58, 0x87, 0x09, 0x7d, - 0xfc, 0x9f, 0xc2, 0x61, 0xfd, 0x41, 0xa1, 0x58, 0x2c, 0x97, 0xcc, 0x6f, 0xe5, 0x60, 0xb4, 0xda, - 0xe9, 0x9c, 0x72, 0x23, 0xfd, 0xb3, 0xda, 0xae, 0x3e, 0x97, 0xcc, 0xde, 0x09, 0xec, 0xf3, 0xbf, - 0x35, 0x60, 0x32, 0x45, 0xa1, 0xb6, 0xde, 0x18, 0xd0, 0x68, 0xcd, 0x0d, 0x68, 0xb4, 0xe6, 0xfb, - 0x1b, 0xad, 0xea, 0x9e, 0x29, 0x3c, 0xc9, 0x9e, 0x79, 0x19, 0xf2, 0xd5, 0x4e, 0x47, 0x8c, 0xca, - 0x58, 0x32, 0x2a, 0x9b, 0xb7, 0xb8, 0x82, 0xee, 0x74, 0x3a, 0x16, 0xc3, 0x30, 0x5f, 0x85, 0x12, - 0x82, 0x51, 0xa2, 0x5d, 0x16, 0x5b, 0x81, 0x8b, 0x33, 0x8d, 0x8c, 0x2f, 0x7b, 0xf3, 0x7f, 0x1b, - 0x30, 0x84, 0xbf, 0x4f, 0xe9, 0x72, 0x99, 0xd3, 0x96, 0x4b, 0x59, 0x59, 0x2e, 0x83, 0x2c, 0x94, - 0x3f, 0xce, 0xe3, 0x68, 0x89, 0x25, 0x22, 0xcc, 0x1e, 0x23, 0xc3, 0xec, 0x79, 0x02, 0x01, 0xbe, - 0x97, 0x36, 0x80, 0xf2, 0x38, 0x19, 0xcf, 0xa7, 0x9b, 0xfa, 0x54, 0x6c, 0x9f, 0xbb, 0x40, 0x96, - 0xda, 0x21, 0x6d, 0x74, 0x03, 0x5a, 0xdf, 0xf3, 0x3a, 0x9b, 0x34, 0xf0, 0x1e, 0xec, 0x0b, 0x6d, - 0x0b, 0x65, 0xac, 0x27, 0x4a, 0xed, 0x70, 0xcf, 0xeb, 0xd8, 0x0f, 0xb1, 0xdc, 0xca, 0xa0, 0x21, - 0xef, 0xc3, 0x88, 0x45, 0x1f, 0x05, 0x5e, 0x44, 0xc5, 0xd8, 0x4e, 0xc4, 0xba, 0x35, 0x42, 0xb9, - 0x6e, 0x12, 0xf0, 0x1f, 0xea, 0xfc, 0x8b, 0xf2, 0x8f, 0xcf, 0x34, 0xf9, 0xde, 0x10, 0xee, 0x85, - 0x63, 0x1e, 0x93, 0x8e, 0xb0, 0x61, 0xf5, 0xc9, 0xcc, 0x9f, 0x64, 0x32, 0x37, 0x61, 0x8c, 0x99, - 0x43, 0x29, 0x63, 0xf6, 0x52, 0x32, 0x97, 0xd7, 0xd5, 0xe2, 0xa3, 0xde, 0x91, 0x34, 0x3e, 0xc4, - 0x4e, 0x2f, 0x12, 0xfe, 0x3e, 0xf5, 0xac, 0xc2, 0x38, 0x63, 0x79, 0xc4, 0xa2, 0xa3, 0xc1, 0x07, - 0xeb, 0xc4, 0x0b, 0x63, 0xf8, 0xc9, 0x16, 0xc6, 0xc8, 0x47, 0x59, 0x18, 0xe9, 0x17, 0xbc, 0xe2, - 0x49, 0x5e, 0xf0, 0x2e, 0xbe, 0x0f, 0x53, 0x3d, 0x23, 0x7c, 0x92, 0x57, 0xb0, 0x8f, 0x6f, 0x59, - 0xfe, 0x7a, 0x3c, 0x2e, 0x64, 0x0e, 0x4d, 0x3c, 0x2f, 0xa0, 0x8d, 0x08, 0x45, 0xaf, 0x90, 0x96, - 0x81, 0x80, 0xa5, 0x6c, 0x50, 0x84, 0x91, 0xf7, 0x60, 0x84, 0xbf, 0x22, 0x84, 0xb3, 0x39, 0x9c, - 0xfb, 0x71, 0x51, 0x23, 0x87, 0x8a, 0xa7, 0x5b, 0x8e, 0xa1, 0x8e, 0xaa, 0x20, 0x32, 0xef, 0xc0, - 0xb0, 0x78, 0x85, 0x38, 0x7a, 0x5f, 0x54, 0x60, 0x68, 0x33, 0x19, 0x19, 0xbc, 0x39, 0xe6, 0x9d, - 0xb0, 0x38, 0xdc, 0xfc, 0x1d, 0x03, 0x26, 0xf4, 0x5e, 0x92, 0xeb, 0x30, 0x2c, 0x9e, 0xc9, 0x0c, - 0x7c, 0x26, 0x63, 0xbd, 0x19, 0xe6, 0x0f, 0x64, 0xda, 0xb3, 0x98, 0xc0, 0x62, 0xa2, 0x5f, 0x70, - 0xc0, 0xbe, 0x08, 0xd1, 0x2f, 0x16, 0xa9, 0x25, 0xcb, 0x88, 0xc9, 0xac, 0xfd, 0xb0, 0xdb, 0x94, - 0x77, 0x49, 0xc0, 0xd8, 0x06, 0x08, 0xb1, 0x44, 0x89, 0x79, 0x60, 0x00, 0xd4, 0xeb, 0x77, 0xef, - 0xd1, 0xfd, 0x35, 0xc7, 0x0b, 0xd0, 0x14, 0xc4, 0xdd, 0x78, 0x4f, 0xcc, 0xd6, 0x98, 0x30, 0x05, - 0xf9, 0xce, 0xdd, 0xa3, 0xfb, 0x9a, 0x29, 0x28, 0x51, 0x71, 0xcb, 0x07, 0xde, 0x43, 0x27, 0xa2, - 0x8c, 0x30, 0x87, 0x84, 0x7c, 0xcb, 0x73, 0x68, 0x8a, 0x52, 0x41, 0x26, 0x5f, 0x85, 0x89, 0xe4, - 0x17, 0xbe, 0xc5, 0xe7, 0xd1, 0xa6, 0x93, 0x2b, 0x42, 0x2f, 0xac, 0x3d, 0x77, 0x78, 0x50, 0xb9, - 0xa8, 0x70, 0xb5, 0x19, 0x96, 0xc2, 0x3a, 0xc5, 0xcc, 0xfc, 0xa1, 0x01, 0xb0, 0xbe, 0x5c, 0x97, - 0x1d, 0x7c, 0x09, 0x0a, 0xf1, 0x0d, 0xcb, 0x18, 0xb7, 0x37, 0x53, 0xc6, 0x1f, 0x96, 0x93, 0xe7, - 0x21, 0x9f, 0xf4, 0x64, 0xea, 0xf0, 0xa0, 0x32, 0xae, 0xf7, 0x80, 0x95, 0x92, 0x3b, 0x30, 0x32, - 0x50, 0x9b, 0x71, 0x75, 0x66, 0xb4, 0x55, 0x52, 0xe3, 0x2c, 0x7c, 0xb0, 0xb5, 0xfe, 0xc9, 0x9d, - 0x85, 0xef, 0xe4, 0x60, 0x92, 0x8d, 0x6b, 0xb5, 0x1b, 0xed, 0xfa, 0x81, 0x17, 0xed, 0x9f, 0x5a, - 0xab, 0xf8, 0x1d, 0x4d, 0x21, 0xba, 0x28, 0xc5, 0x96, 0xda, 0xb7, 0x81, 0x8c, 0xe3, 0x9f, 0x8e, - 0xc0, 0x74, 0x06, 0x15, 0x79, 0x45, 0x38, 0xa4, 0x24, 0xf7, 0x30, 0xe8, 0x70, 0xf2, 0xf3, 0x83, - 0xca, 0x98, 0x44, 0x5f, 0x4f, 0x1c, 0x50, 0xe6, 0x60, 0x54, 0x98, 0x3e, 0x2b, 0x89, 0x46, 0x8d, - 0x9e, 0x0d, 0xf2, 0x9e, 0x09, 0x45, 0x93, 0x8a, 0x44, 0xaa, 0x30, 0x36, 0xbf, 0x4b, 0x1b, 0x7b, - 0x5e, 0x7b, 0xe7, 0x1e, 0xdd, 0xe7, 0xfa, 0xd2, 0x58, 0xed, 0x59, 0x66, 0x69, 0x35, 0x04, 0x9c, - 0x4d, 0xa9, 0x6e, 0xc4, 0x69, 0x24, 0xe4, 0x3d, 0x18, 0xad, 0x7b, 0x3b, 0x6d, 0xc9, 0xa1, 0x80, - 0x1c, 0x2e, 0x1d, 0x1e, 0x54, 0xce, 0x85, 0x1c, 0xdc, 0xcb, 0x40, 0x25, 0x20, 0x57, 0x61, 0xc8, - 0xf2, 0x9b, 0x94, 0x1f, 0xc3, 0xc2, 0xe5, 0x21, 0x60, 0x00, 0xf5, 0xfa, 0x16, 0x31, 0xc8, 0x5d, - 0x18, 0x61, 0xff, 0xdc, 0x77, 0x3a, 0xb3, 0xc3, 0x28, 0xb7, 0x49, 0xac, 0xe0, 0x23, 0xb4, 0xe3, - 0xb5, 0x77, 0x54, 0x1d, 0xbf, 0x49, 0xed, 0x96, 0xd3, 0xd1, 0xce, 0x45, 0x8e, 0x48, 0x36, 0x61, - 0x34, 0x11, 0x04, 0xe1, 0xec, 0x88, 0xf6, 0x5c, 0x92, 0x94, 0xd4, 0x3e, 0x25, 0x98, 0x9d, 0x8f, - 0x9a, 0x21, 0xae, 0xed, 0x0e, 0xc3, 0xd7, 0x3b, 0xa3, 0x30, 0xd2, 0x6c, 0x90, 0x62, 0x7f, 0x1b, - 0xc4, 0x38, 0xd6, 0x06, 0x71, 0x01, 0xc4, 0x20, 0x55, 0x9b, 0x3b, 0xc2, 0x23, 0xe9, 0x6a, 0xff, - 0x05, 0x76, 0x3d, 0x41, 0xc6, 0x3d, 0xc9, 0x6f, 0xa6, 0xc4, 0xf8, 0x3b, 0xcd, 0x1d, 0xed, 0x66, - 0x2a, 0x46, 0x65, 0xc3, 0x90, 0x88, 0x1a, 0x69, 0x81, 0xcb, 0x61, 0x48, 0x4a, 0x92, 0x61, 0xf8, - 0xda, 0xa3, 0xa8, 0xdf, 0x30, 0x28, 0x8c, 0xc8, 0x0a, 0x40, 0xb5, 0x11, 0x79, 0x0f, 0x29, 0x2e, - 0x89, 0x51, 0x6d, 0x20, 0xe6, 0xab, 0xf7, 0xe8, 0x7e, 0x9d, 0x46, 0xf1, 0xe3, 0xff, 0x8c, 0x83, - 0xa8, 0xa9, 0x65, 0x62, 0x29, 0x1c, 0x48, 0x07, 0x66, 0xaa, 0xae, 0xeb, 0x71, 0x2f, 0xb5, 0xf5, - 0x80, 0xad, 0x5f, 0x17, 0x59, 0x8f, 0x65, 0xb3, 0xbe, 0x2a, 0x58, 0x7f, 0xca, 0x89, 0xa9, 0xec, - 0x88, 0x93, 0xa5, 0xab, 0xc9, 0x66, 0x6c, 0xae, 0xc2, 0x84, 0x3e, 0xa4, 0xba, 0x7f, 0xd6, 0x18, - 0x14, 0xad, 0x7a, 0xd5, 0xae, 0xdf, 0xad, 0xde, 0x2c, 0x1b, 0xa4, 0x0c, 0x63, 0xe2, 0xd7, 0x9c, - 0x3d, 0xf7, 0xc6, 0x9b, 0xe5, 0x9c, 0x06, 0x79, 0xe3, 0xe6, 0x5c, 0x39, 0x6f, 0xfe, 0xb1, 0x01, - 0x45, 0xd9, 0x3e, 0xf2, 0x26, 0xe4, 0xeb, 0xf5, 0xbb, 0xa9, 0x57, 0xba, 0xe4, 0xe8, 0xe5, 0x87, - 0x4c, 0x18, 0xee, 0xaa, 0x87, 0x4c, 0xbd, 0x7e, 0x97, 0xd1, 0xad, 0x2f, 0xd7, 0x85, 0xd2, 0x92, - 0xb1, 0x5c, 0xa7, 0xb2, 0x9f, 0x2e, 0x18, 0xdd, 0x07, 0x5b, 0xeb, 0xc2, 0x1a, 0xca, 0x98, 0x5f, - 0xa4, 0xfb, 0xda, 0x23, 0xf5, 0xe8, 0x63, 0x04, 0xa6, 0x05, 0xa3, 0xca, 0xd6, 0xe2, 0x4a, 0x44, - 0xcb, 0x8f, 0x3d, 0x99, 0x84, 0x12, 0xc1, 0x20, 0x96, 0x28, 0x61, 0x3a, 0xcf, 0xb2, 0xdf, 0x70, - 0x9a, 0x42, 0x1b, 0x41, 0x9d, 0xa7, 0xc9, 0x00, 0x16, 0x87, 0x9b, 0x7f, 0x6a, 0x40, 0x79, 0x2d, - 0xf0, 0x1f, 0x7a, 0x4c, 0x02, 0xaf, 0xfb, 0x7b, 0xb4, 0xbd, 0x79, 0x93, 0xbc, 0x2a, 0x85, 0x00, - 0x57, 0xe1, 0xce, 0x33, 0x2a, 0x14, 0x02, 0x3f, 0x3f, 0xa8, 0x40, 0x7d, 0x3f, 0x8c, 0x68, 0x8b, - 0x95, 0x4b, 0x41, 0xa0, 0x38, 0x84, 0xe5, 0x06, 0x77, 0x32, 0x39, 0xc6, 0x21, 0xac, 0x02, 0x43, - 0xd8, 0x1c, 0xe5, 0x9d, 0x7f, 0x28, 0x62, 0x00, 0x8b, 0xc3, 0x15, 0x81, 0xfd, 0xdd, 0x5c, 0x4f, - 0x1f, 0xe6, 0x3e, 0x51, 0x8e, 0x1a, 0x7a, 0xe7, 0x06, 0x3a, 0xc4, 0xbe, 0x08, 0x67, 0xd3, 0x43, - 0x82, 0xf7, 0x22, 0x55, 0x98, 0xd4, 0xe1, 0xf2, 0x8a, 0xe4, 0x7c, 0x66, 0x5d, 0x9b, 0x73, 0x56, - 0x1a, 0xdf, 0xfc, 0x99, 0x01, 0x25, 0xfc, 0xd7, 0xea, 0x36, 0x29, 0xd3, 0x6c, 0xaa, 0x5b, 0x75, - 0xf1, 0xc8, 0xa3, 0x3e, 0xc4, 0x38, 0x8f, 0x42, 0x5b, 0xbc, 0x08, 0x69, 0x72, 0x24, 0x46, 0x16, - 0xa4, 0xfc, 0x49, 0x2b, 0x14, 0x2b, 0x34, 0x26, 0xe5, 0x6f, 0x5f, 0x61, 0x8a, 0x54, 0x20, 0xb3, - 0xf9, 0x63, 0xbf, 0xfc, 0xa6, 0xbc, 0x1a, 0xc6, 0xf9, 0x43, 0x3a, 0x5f, 0xf3, 0xfc, 0x92, 0x68, - 0xe4, 0x55, 0x18, 0x66, 0x55, 0x5b, 0x2b, 0xe2, 0xc5, 0x0a, 0xad, 0x0a, 0x6c, 0x63, 0xa0, 0xbd, - 0xb0, 0x71, 0x24, 0xf3, 0xb7, 0x72, 0xe9, 0x01, 0x14, 0x5a, 0xc0, 0x09, 0xf7, 0xc6, 0xdb, 0x30, - 0x54, 0x6d, 0x36, 0xfd, 0x47, 0x42, 0x4a, 0xc8, 0x6b, 0x9a, 0x78, 0xfc, 0xf8, 0x09, 0xeb, 0x30, - 0x14, 0xed, 0x81, 0x94, 0x01, 0xc8, 0x3c, 0x94, 0xaa, 0x5b, 0xf5, 0xa5, 0xa5, 0x85, 0xf5, 0xf5, - 0x65, 0xe1, 0x77, 0xfb, 0xa2, 0x1c, 0x1f, 0xcf, 0x73, 0xed, 0x28, 0x6a, 0xf6, 0x71, 0xd3, 0x4b, - 0xe8, 0xc8, 0xbb, 0x00, 0x1f, 0xf8, 0x5e, 0xfb, 0x3e, 0x8d, 0x76, 0x7d, 0x57, 0x74, 0x9e, 0xa9, - 0x14, 0xa3, 0x5f, 0xf3, 0xbd, 0xb6, 0xdd, 0x42, 0x30, 0x6b, 0x7b, 0x82, 0x64, 0x29, 0xff, 0x9b, - 0xbf, 0x9b, 0x83, 0x09, 0x6e, 0x77, 0xf2, 0xe9, 0x3f, 0xb5, 0x5b, 0xeb, 0x6d, 0x6d, 0x6b, 0x5d, - 0x90, 0x62, 0x5e, 0xe9, 0xda, 0x40, 0x1b, 0x6b, 0x17, 0x48, 0x2f, 0x0d, 0xb1, 0xe4, 0xed, 0xc8, - 0x20, 0x7b, 0xea, 0x66, 0xf2, 0xba, 0x1a, 0x22, 0x91, 0x8d, 0x82, 0x2d, 0xb4, 0x34, 0x1e, 0xe6, - 0xef, 0xe4, 0x60, 0x5c, 0xd1, 0x0e, 0x4f, 0xed, 0xc0, 0x7f, 0x4e, 0x1b, 0x78, 0xf9, 0xa2, 0xa0, - 0xf4, 0x6c, 0xa0, 0x71, 0xef, 0xc2, 0x54, 0x0f, 0x49, 0x5a, 0xc9, 0x36, 0x06, 0x51, 0xb2, 0x5f, - 0xe9, 0x7d, 0xfe, 0xe5, 0x1e, 0xb8, 0xf1, 0xf3, 0xaf, 0xfa, 0xde, 0xfc, 0x9d, 0x1c, 0x9c, 0x15, - 0xbf, 0xaa, 0x5d, 0xd7, 0x8b, 0xe6, 0xfd, 0xf6, 0x03, 0x6f, 0xe7, 0xd4, 0xce, 0x45, 0x55, 0x9b, - 0x8b, 0x8a, 0x3e, 0x17, 0x4a, 0x07, 0xfb, 0x4f, 0x89, 0xf9, 0xef, 0x8a, 0x30, 0xdb, 0x8f, 0x80, - 0x19, 0xf1, 0x8a, 0x8d, 0x84, 0x46, 0x7c, 0xca, 0xfe, 0xe4, 0xd6, 0x51, 0xe2, 0xee, 0x90, 0x1b, - 0xc0, 0xdd, 0x61, 0x19, 0xca, 0x58, 0x55, 0x9d, 0x86, 0x6c, 0x10, 0xc2, 0xc4, 0xfd, 0xef, 0xf2, - 0xe1, 0x41, 0xe5, 0x92, 0xc3, 0xca, 0xec, 0x50, 0x14, 0xda, 0xdd, 0xc0, 0x53, 0x78, 0xf4, 0x50, - 0x92, 0x1f, 0x1a, 0x30, 0x81, 0xc0, 0xc5, 0x87, 0xb4, 0x1d, 0x21, 0xb3, 0x82, 0x78, 0x72, 0x89, - 0xa3, 0x2a, 0xea, 0x51, 0xe0, 0xb5, 0x77, 0xf0, 0x5a, 0x28, 0xac, 0x6d, 0xb3, 0x51, 0xf8, 0xab, - 0x83, 0xca, 0x3b, 0x1f, 0x25, 0x52, 0x43, 0xb0, 0x0a, 0x99, 0x59, 0xce, 0x1b, 0x4a, 0xb1, 0xda, - 0x54, 0x33, 0x53, 0x2d, 0x22, 0x5f, 0x82, 0xf3, 0x8b, 0x6d, 0x67, 0xbb, 0x49, 0xe7, 0xfd, 0x76, - 0xe4, 0xb5, 0xbb, 0x7e, 0x37, 0xac, 0x39, 0x8d, 0xbd, 0x6e, 0x27, 0x14, 0x57, 0x97, 0xd8, 0xf3, - 0x46, 0x5c, 0x68, 0x6f, 0xf3, 0x52, 0x85, 0x65, 0x3f, 0x06, 0xe4, 0x2e, 0x4c, 0xf1, 0xa2, 0x6a, - 0x37, 0xf2, 0xeb, 0x0d, 0xa7, 0xe9, 0xb5, 0x77, 0xf0, 0x46, 0xb3, 0x58, 0xbb, 0xc8, 0x2c, 0x45, - 0xa7, 0x1b, 0xf9, 0x76, 0xc8, 0xe1, 0x0a, 0xbf, 0x5e, 0x22, 0xb2, 0x04, 0x93, 0x16, 0x75, 0xdc, - 0xfb, 0xce, 0xe3, 0x79, 0xa7, 0xe3, 0x34, 0xbc, 0x68, 0x1f, 0xed, 0xac, 0x7c, 0xad, 0x72, 0x78, - 0x50, 0x79, 0x26, 0xa0, 0x8e, 0x6b, 0xb7, 0x9c, 0xc7, 0x76, 0x43, 0x14, 0x2a, 0xcc, 0xd2, 0x74, - 0x31, 0x2b, 0xaf, 0x1d, 0xb3, 0x2a, 0xa5, 0x59, 0x79, 0xed, 0xfe, 0xac, 0x12, 0x3a, 0xc9, 0x6a, - 0xdd, 0x09, 0x76, 0x68, 0xc4, 0xaf, 0xfc, 0xe0, 0xb2, 0x71, 0xc5, 0x50, 0x58, 0x45, 0x58, 0x66, - 0xe3, 0xf5, 0x5f, 0x9a, 0x95, 0x42, 0xc7, 0x56, 0xde, 0x56, 0xe0, 0x45, 0x54, 0xed, 0xe1, 0x28, - 0x36, 0x0b, 0xc7, 0x1f, 0x2f, 0x3d, 0xfb, 0x75, 0xb1, 0x87, 0x32, 0xe1, 0xa6, 0x74, 0x72, 0xac, - 0x87, 0x5b, 0x76, 0x2f, 0x7b, 0x28, 0x63, 0x6e, 0x6a, 0x3f, 0xc7, 0xb1, 0x9f, 0x0a, 0xb7, 0x3e, - 0x1d, 0xed, 0xa1, 0x24, 0x2b, 0x6c, 0xd0, 0x22, 0xda, 0x66, 0x2b, 0x5a, 0x5c, 0x79, 0x4e, 0x60, - 0xd3, 0x5e, 0x10, 0x16, 0x72, 0x39, 0x90, 0xc5, 0x76, 0xc6, 0x05, 0x68, 0x9a, 0xf8, 0x83, 0x42, - 0x71, 0xa8, 0x3c, 0x6c, 0x95, 0xf9, 0x92, 0x8f, 0xd8, 0xc2, 0x41, 0x59, 0x6c, 0xfe, 0x7e, 0x0e, - 0x2e, 0x48, 0x71, 0x4c, 0xa3, 0x47, 0x7e, 0xb0, 0xe7, 0xb5, 0x77, 0x4e, 0xb9, 0x54, 0xbd, 0xad, - 0x49, 0xd5, 0x17, 0x52, 0x27, 0x5c, 0xaa, 0x97, 0x47, 0x88, 0xd6, 0xbf, 0x1c, 0x82, 0x67, 0x8f, - 0xa4, 0x22, 0x1f, 0xb2, 0x53, 0xd0, 0xa3, 0xed, 0x68, 0xc9, 0x6d, 0x52, 0x66, 0x54, 0xf9, 0xdd, - 0x48, 0x5c, 0x4d, 0x3f, 0x7f, 0x78, 0x50, 0x99, 0xe6, 0xc1, 0x07, 0xb6, 0xe7, 0x36, 0xa9, 0x1d, - 0xf1, 0x62, 0x6d, 0x9a, 0x7a, 0xa9, 0x19, 0xcb, 0x38, 0xf4, 0x69, 0xa9, 0x1d, 0xd1, 0xe0, 0xa1, - 0xc3, 0x7d, 0xb0, 0x05, 0xcb, 0x3d, 0x4a, 0x3b, 0xb6, 0xc3, 0x4a, 0x6d, 0x4f, 0x14, 0xeb, 0x2c, - 0x7b, 0xa8, 0xc9, 0x6d, 0x85, 0xe5, 0x3c, 0x53, 0xf5, 0xef, 0x3b, 0x8f, 0x85, 0xfe, 0x8a, 0xb7, - 0xa5, 0x0a, 0x4b, 0xee, 0x31, 0xd6, 0x72, 0x1e, 0x5b, 0xbd, 0x24, 0xe4, 0xab, 0x30, 0x23, 0x04, - 0x37, 0x13, 0x62, 0x81, 0xdf, 0x94, 0x3d, 0x2e, 0x20, 0xaf, 0x97, 0x0f, 0x0f, 0x2a, 0xe7, 0x85, - 0xd8, 0xb7, 0x1b, 0x1c, 0x23, 0xb3, 0xd7, 0xd9, 0x5c, 0xc8, 0x3a, 0x3b, 0xc8, 0x52, 0xc3, 0x71, - 0x9f, 0x86, 0xa1, 0xb3, 0xc3, 0x5f, 0xfe, 0x84, 0xb3, 0x95, 0x3a, 0x98, 0x76, 0x8b, 0x97, 0x5b, - 0x7d, 0x29, 0xc9, 0x5d, 0x98, 0xd8, 0xa2, 0xdb, 0xea, 0xfc, 0x0c, 0xc7, 0x5b, 0xbc, 0xfc, 0x88, - 0x6e, 0xf7, 0x9f, 0x9c, 0x14, 0x1d, 0xf1, 0x60, 0x6a, 0x2d, 0xf0, 0x1f, 0xef, 0x33, 0xc3, 0x8d, - 0xb6, 0x69, 0x80, 0x6e, 0x55, 0x23, 0x78, 0xf9, 0x34, 0x9b, 0x68, 0x96, 0x7a, 0x79, 0xed, 0x53, - 0x87, 0x07, 0x95, 0x67, 0x3b, 0x0c, 0x6c, 0x37, 0x05, 0xdc, 0x4e, 0x45, 0x22, 0xf5, 0x72, 0x25, - 0xbf, 0x0a, 0x93, 0x96, 0xdf, 0x8d, 0xbc, 0xf6, 0x4e, 0x3d, 0x0a, 0x9c, 0x88, 0xee, 0x70, 0x41, - 0x9e, 0xf8, 0x6f, 0xa5, 0x4a, 0xf9, 0x35, 0x73, 0xc0, 0x81, 0x76, 0x28, 0xa0, 0x9a, 0x24, 0xd5, - 0x09, 0xcc, 0xef, 0xe7, 0x60, 0x56, 0x4c, 0x83, 0x45, 0x1b, 0x7e, 0xe0, 0x9e, 0xfe, 0x6d, 0xbf, - 0xa8, 0x6d, 0xfb, 0xe7, 0x63, 0x8f, 0xa3, 0xac, 0x4e, 0x1e, 0xb1, 0xeb, 0xff, 0x95, 0x01, 0x97, - 0x8e, 0x22, 0x62, 0xa3, 0x13, 0x7b, 0xd4, 0x95, 0x7a, 0x3c, 0xe7, 0x3a, 0x30, 0x8d, 0xf3, 0x89, - 0xd7, 0xc0, 0xe1, 0x5d, 0x3f, 0x8c, 0xf0, 0x2e, 0x2e, 0xa7, 0xb9, 0x05, 0xd4, 0x7c, 0xbf, 0x89, - 0x72, 0xbe, 0xf6, 0x0a, 0x13, 0xe7, 0x7f, 0x75, 0x50, 0x01, 0x06, 0x5a, 0xc5, 0xa7, 0x45, 0x76, - 0xe6, 0xf3, 0x15, 0x83, 0xb7, 0xcc, 0xa1, 0x8d, 0xbe, 0x1c, 0x7b, 0x74, 0x3f, 0xb4, 0xb2, 0x58, - 0xe3, 0x7d, 0x4b, 0xb5, 0x1b, 0xed, 0xae, 0x05, 0xf4, 0x01, 0x0d, 0x68, 0xbb, 0x41, 0x3f, 0x61, - 0xf7, 0x2d, 0x7a, 0xe7, 0x06, 0x32, 0x4f, 0xfe, 0xef, 0x30, 0x9c, 0xcd, 0x22, 0x63, 0xe3, 0xa2, - 0x68, 0xc4, 0xe9, 0x30, 0xd5, 0xbf, 0x6b, 0xc0, 0x58, 0x9d, 0x36, 0xfc, 0xb6, 0x7b, 0xdb, 0x69, - 0x44, 0xbe, 0x74, 0xb0, 0xb0, 0xb9, 0x64, 0x63, 0x70, 0xfb, 0x01, 0x16, 0x68, 0x76, 0xfe, 0xe7, - 0x07, 0x53, 0x44, 0x1b, 0x3e, 0xba, 0x75, 0x46, 0x6c, 0x4d, 0x26, 0x55, 0xe0, 0x1b, 0x85, 0x56, - 0x29, 0xa9, 0xc1, 0xf8, 0xbc, 0xdf, 0x6e, 0x53, 0xf6, 0x43, 0x71, 0xa8, 0xbc, 0x74, 0x78, 0x50, - 0x99, 0x6d, 0xc8, 0x82, 0xb4, 0x4f, 0xa5, 0x4e, 0x42, 0x6e, 0x41, 0x7e, 0x63, 0xee, 0xb6, 0x98, - 0x03, 0xe9, 0x7a, 0xb6, 0x31, 0x77, 0x1b, 0x6d, 0x5d, 0xa6, 0x3f, 0x8c, 0x77, 0xe7, 0x1e, 0xa8, - 0x37, 0x9a, 0x1b, 0x73, 0xb7, 0xc9, 0x2a, 0x4c, 0x59, 0xf4, 0xeb, 0x5d, 0x2f, 0xa0, 0x62, 0x03, - 0xdc, 0xbf, 0x5d, 0xc5, 0xb9, 0x28, 0x72, 0x39, 0x16, 0xf0, 0x42, 0xa9, 0xdb, 0xdb, 0xad, 0x07, - 0x6a, 0xa8, 0x56, 0x2f, 0x2d, 0xf9, 0x0d, 0x98, 0x59, 0xf0, 0x42, 0xd1, 0x66, 0x7e, 0x95, 0xe8, - 0xe2, 0xab, 0xe2, 0x70, 0x9f, 0xed, 0xf0, 0x99, 0xcc, 0xed, 0xf0, 0x29, 0x37, 0x66, 0x62, 0xf3, - 0x7b, 0x4a, 0x37, 0xed, 0x89, 0x9a, 0x5d, 0x0f, 0xf9, 0x1a, 0x4c, 0xe0, 0xdd, 0x0d, 0xde, 0xae, - 0xa2, 0xc3, 0xef, 0x48, 0x9f, 0x9a, 0x5f, 0xcb, 0xac, 0xf9, 0x22, 0x5e, 0x05, 0xd9, 0x78, 0x47, - 0x8b, 0xce, 0xc1, 0x9a, 0x8d, 0xa0, 0x71, 0x26, 0x1f, 0xc0, 0xa4, 0x38, 0x74, 0x56, 0x1f, 0xac, - 0xef, 0xd2, 0x05, 0x67, 0x5f, 0xb8, 0x14, 0xa0, 0xfe, 0x27, 0x4e, 0x2a, 0xdb, 0x7f, 0x60, 0x47, - 0xbb, 0xd4, 0x76, 0x1d, 0x4d, 0x3c, 0xa7, 0x08, 0xc9, 0x37, 0x60, 0x74, 0xd9, 0xc7, 0x67, 0x24, - 0x14, 0x35, 0x25, 0xe4, 0xf3, 0x45, 0x0c, 0xd5, 0xe4, 0xe0, 0xd4, 0x21, 0xf2, 0xf3, 0x83, 0xca, - 0xdb, 0x27, 0x5d, 0x85, 0x4a, 0x05, 0x96, 0x5a, 0x1b, 0x99, 0x87, 0xe2, 0x16, 0xdd, 0x66, 0xbd, - 0x4d, 0x87, 0x19, 0x49, 0x30, 0x97, 0x17, 0x8f, 0xc4, 0x2f, 0xf5, 0x8d, 0x46, 0x62, 0x98, 0xff, - 0xd6, 0xc0, 0x15, 0x48, 0xae, 0xa1, 0x5b, 0x57, 0xec, 0x2f, 0x8d, 0x96, 0xa5, 0xd3, 0xe9, 0xe8, - 0x1e, 0xcf, 0x1c, 0x85, 0x99, 0xa1, 0xb7, 0x9d, 0x06, 0x8d, 0xe4, 0xed, 0x23, 0x22, 0x3f, 0x40, - 0x88, 0x6a, 0x86, 0x72, 0x1c, 0xf2, 0x05, 0x38, 0xbb, 0x40, 0x1f, 0x7a, 0x0d, 0x5a, 0x8d, 0x22, - 0x1a, 0xf2, 0xde, 0xce, 0x57, 0xf9, 0x33, 0x5d, 0xa9, 0xf6, 0xc2, 0xe1, 0x41, 0xe5, 0xb2, 0x8b, - 0xe5, 0xb6, 0x93, 0x20, 0xd8, 0x0d, 0x47, 0xe5, 0x95, 0xc9, 0xc1, 0xfc, 0x47, 0xb9, 0x64, 0x04, - 0xc8, 0xcb, 0x50, 0xb0, 0xd6, 0xe2, 0xf6, 0xf3, 0x17, 0xb8, 0x54, 0xf3, 0x11, 0x81, 0x7c, 0x19, - 0x66, 0x14, 0x3e, 0xb8, 0x38, 0xa8, 0xcb, 0x1a, 0xc4, 0x3b, 0xf3, 0x22, 0x3e, 0xb9, 0x28, 0x2d, - 0x71, 0x38, 0x46, 0xaa, 0x45, 0xd9, 0x3c, 0x58, 0x67, 0x95, 0x82, 0x05, 0xda, 0xf6, 0x38, 0x6f, - 0xa5, 0xb3, 0x2a, 0x6f, 0x17, 0x11, 0xd2, 0x9d, 0xcd, 0xe2, 0x40, 0xe6, 0xa0, 0xb8, 0xe0, 0x85, - 0xcc, 0x22, 0x70, 0x85, 0x7f, 0x16, 0x8f, 0xdc, 0x12, 0x30, 0x2d, 0x72, 0x4b, 0xc0, 0xcc, 0xbf, - 0x35, 0x94, 0x08, 0xf9, 0x53, 0x7a, 0xd6, 0xbc, 0xa9, 0x9d, 0x35, 0x67, 0x05, 0x69, 0xdc, 0x2b, - 0x56, 0x96, 0xa9, 0x1f, 0x4c, 0xc2, 0xb8, 0x86, 0x84, 0xee, 0xae, 0x1b, 0x21, 0x0d, 0xf8, 0x6d, - 0xe2, 0x27, 0xcb, 0xdd, 0x35, 0xee, 0xd7, 0x40, 0x5e, 0x8c, 0x3f, 0x35, 0x60, 0x32, 0x45, 0xc1, - 0x46, 0x83, 0x81, 0xd4, 0xd1, 0xe8, 0x86, 0x34, 0xb0, 0x10, 0xca, 0x9d, 0xe3, 0x96, 0x75, 0xe7, - 0xb8, 0xa6, 0xc5, 0x60, 0xe4, 0xf3, 0x30, 0xb4, 0x81, 0xba, 0xbf, 0xee, 0x5f, 0x11, 0xf3, 0xc7, - 0x42, 0xbe, 0x1f, 0xbb, 0xec, 0x5f, 0x55, 0x9c, 0x60, 0x19, 0xa9, 0xc3, 0xc8, 0x7c, 0x40, 0x31, - 0x16, 0xbe, 0x30, 0xf8, 0x43, 0x58, 0x83, 0x93, 0xa4, 0x1f, 0xc2, 0x04, 0x27, 0xf3, 0xf7, 0x72, - 0x40, 0x92, 0x3e, 0xd2, 0x46, 0x40, 0xa3, 0xf0, 0xd4, 0x4e, 0xfa, 0xfb, 0xda, 0xa4, 0x3f, 0xdb, - 0x33, 0xe9, 0xbc, 0x7b, 0x03, 0xcd, 0xfd, 0x9f, 0x1a, 0x70, 0x2e, 0x9b, 0x90, 0x3c, 0x0f, 0xc3, - 0xab, 0xeb, 0x6b, 0xd2, 0x45, 0x47, 0x74, 0xc5, 0xef, 0xa0, 0x4e, 0x6b, 0x89, 0x22, 0xf2, 0x2a, - 0x0c, 0x7f, 0x68, 0xcd, 0xb3, 0xc3, 0x4e, 0x89, 0x38, 0xf9, 0x7a, 0x60, 0x37, 0x74, 0x63, 0x49, - 0x20, 0xa9, 0x73, 0x9b, 0x7f, 0x6a, 0x73, 0xfb, 0x9d, 0x1c, 0x4c, 0x56, 0x1b, 0x0d, 0x1a, 0x86, - 0x4c, 0x95, 0xa1, 0x61, 0x74, 0x6a, 0x27, 0x36, 0xdb, 0xf9, 0x46, 0xeb, 0xdb, 0x40, 0xb3, 0xfa, - 0xe7, 0x06, 0xcc, 0x48, 0xaa, 0x87, 0x1e, 0x7d, 0xb4, 0xbe, 0x1b, 0xd0, 0x70, 0xd7, 0x6f, 0xba, - 0x83, 0xc6, 0x23, 0xe1, 0x99, 0xee, 0x35, 0x23, 0x1a, 0xa8, 0x57, 0xcb, 0x0f, 0x10, 0xa2, 0x9d, - 0xe9, 0x08, 0x21, 0x37, 0x60, 0xa4, 0xda, 0xe9, 0x04, 0xfe, 0x43, 0xbe, 0xed, 0xc7, 0xc5, 0xbb, - 0x20, 0x07, 0x69, 0xef, 0x88, 0x1c, 0xc4, 0x9a, 0xb1, 0x40, 0xdb, 0xdc, 0xb3, 0x78, 0x9c, 0x37, - 0xc3, 0xa5, 0x6d, 0x55, 0xb7, 0xc2, 0x72, 0xf3, 0xdb, 0x05, 0x18, 0x53, 0x3b, 0x42, 0x4c, 0x18, - 0xe6, 0x6e, 0x22, 0xea, 0x73, 0xbd, 0x83, 0x10, 0x4b, 0x94, 0x24, 0xde, 0x37, 0xb9, 0x63, 0xbd, - 0x6f, 0xb6, 0x60, 0x7c, 0x2d, 0xf0, 0x3b, 0x7e, 0x48, 0x5d, 0x9e, 0xce, 0x84, 0x4b, 0xad, 0xe9, - 0xd8, 0x25, 0x95, 0x8f, 0x39, 0x2b, 0xe2, 0x8a, 0x7c, 0x47, 0x60, 0xdb, 0xe9, 0x64, 0x27, 0x3a, - 0x1f, 0x7e, 0x35, 0xef, 0x84, 0xc2, 0x6d, 0x3f, 0xbe, 0x9a, 0x67, 0x10, 0xfd, 0x6a, 0x9e, 0x41, - 0xd4, 0x6d, 0x31, 0xf4, 0xb4, 0xb6, 0x05, 0xf9, 0x3d, 0x03, 0x46, 0xab, 0xed, 0xb6, 0xf0, 0xbe, - 0x91, 0x31, 0xc1, 0x33, 0xc9, 0xf5, 0x3c, 0x77, 0xcf, 0xe4, 0xb7, 0xf3, 0x5f, 0x11, 0xb7, 0xf3, - 0x6f, 0x7f, 0xa4, 0xdb, 0xf9, 0xf5, 0xc0, 0xf1, 0xa2, 0x10, 0x1f, 0x55, 0x93, 0x0a, 0x55, 0x17, - 0x5c, 0xa5, 0x1d, 0xe4, 0x6d, 0x28, 0xc7, 0xeb, 0x71, 0xa9, 0xed, 0xd2, 0xc7, 0x94, 0x3b, 0x2b, - 0x8d, 0xf3, 0x1c, 0x4b, 0xda, 0xb3, 0x43, 0x1a, 0xd1, 0xfc, 0x8e, 0x01, 0xe7, 0xd4, 0x05, 0x51, - 0xef, 0x6e, 0xb7, 0x3c, 0x34, 0x5c, 0xc8, 0x75, 0x28, 0x89, 0xf9, 0x8a, 0xd5, 0xbe, 0xde, 0x1c, - 0x38, 0x09, 0x0a, 0x59, 0x64, 0x53, 0xc4, 0x78, 0x08, 0x2b, 0x7f, 0x3a, 0xb5, 0xdd, 0x58, 0x51, - 0x6d, 0x56, 0x0c, 0x76, 0x39, 0xc0, 0xdf, 0xfa, 0xdc, 0x31, 0x88, 0xf9, 0x1e, 0x4c, 0xe9, 0xad, - 0xac, 0x53, 0x0c, 0x05, 0x93, 0x5d, 0x33, 0xb2, 0xbb, 0x26, 0xcb, 0xcd, 0x2d, 0x20, 0x3d, 0xf4, - 0x21, 0x3e, 0x31, 0xd1, 0x48, 0x3e, 0x81, 0xca, 0x8b, 0xaa, 0x1e, 0xc4, 0x38, 0xfb, 0xd3, 0xa8, - 0x3a, 0xdc, 0x48, 0x6a, 0xfe, 0xa2, 0x04, 0xd3, 0x19, 0xa2, 0xe3, 0x98, 0xa3, 0xbd, 0xa2, 0x6f, - 0x9e, 0x52, 0xfc, 0x32, 0x2f, 0xb7, 0xcc, 0x7b, 0x32, 0xf3, 0xcf, 0x11, 0x5b, 0xe5, 0xa8, 0x74, - 0x40, 0x1f, 0xc7, 0xf1, 0xae, 0x3a, 0xcf, 0x0c, 0x3d, 0x35, 0xe7, 0x99, 0x1a, 0x8c, 0x8b, 0x5e, - 0x89, 0xad, 0x3c, 0x9c, 0x18, 0xf4, 0x01, 0x2f, 0xb0, 0x7b, 0xb6, 0xb4, 0x4e, 0xc2, 0x79, 0x84, - 0x7e, 0xf3, 0x21, 0x15, 0x3c, 0x46, 0x54, 0x1e, 0x58, 0x90, 0xc9, 0x43, 0x21, 0x21, 0x7f, 0x64, - 0x00, 0x11, 0x10, 0x75, 0x3f, 0x17, 0x8f, 0xda, 0xcf, 0xee, 0xd3, 0xd9, 0xcf, 0xcf, 0xca, 0x36, - 0x66, 0xef, 0xeb, 0x8c, 0x66, 0x91, 0x7f, 0x6e, 0xc0, 0x14, 0xf7, 0xe0, 0x50, 0x1b, 0x5b, 0x3a, - 0xaa, 0xb1, 0x8d, 0xa7, 0xd3, 0xd8, 0x4b, 0x21, 0x56, 0xdb, 0xa7, 0xad, 0xbd, 0x8d, 0x22, 0x5f, - 0x02, 0x88, 0x77, 0x94, 0xf4, 0x14, 0xbc, 0x94, 0x21, 0x05, 0x62, 0xa4, 0x24, 0xd8, 0x31, 0x8a, - 0xe9, 0x54, 0xdf, 0x9a, 0x84, 0x1b, 0xf9, 0x0d, 0x38, 0xcb, 0xf6, 0x4b, 0x0c, 0x11, 0xfe, 0x66, - 0xb3, 0xa3, 0x58, 0xcb, 0xeb, 0xfd, 0x8f, 0xf6, 0xeb, 0x59, 0x64, 0x3c, 0x5e, 0x23, 0x09, 0x27, - 0x8f, 0x5a, 0xaa, 0x81, 0x98, 0x45, 0x81, 0x8e, 0xa5, 0xd8, 0xfa, 0x70, 0x76, 0x0c, 0xeb, 0xcc, - 0x94, 0x6f, 0x17, 0xe4, 0x5e, 0xe0, 0xf2, 0x2d, 0xd4, 0x03, 0x2e, 0x10, 0x44, 0x3e, 0x04, 0x52, - 0xef, 0xee, 0xec, 0xd0, 0x30, 0xa2, 0x2e, 0x87, 0xd1, 0x20, 0x9c, 0x1d, 0x47, 0xf9, 0x80, 0x17, - 0x4c, 0xa1, 0x2c, 0xb5, 0x03, 0x59, 0xac, 0x2e, 0x92, 0x5e, 0xe2, 0x8b, 0xdb, 0x70, 0xa1, 0x6f, - 0x37, 0x33, 0x82, 0x29, 0x6e, 0xe8, 0xc1, 0x14, 0x17, 0xfa, 0x89, 0xc3, 0x50, 0x0d, 0xa8, 0xf8, - 0xc7, 0x46, 0x4a, 0xfe, 0x09, 0x65, 0x85, 0x27, 0x49, 0xeb, 0x77, 0x40, 0xe4, 0x30, 0xd0, 0x9c, - 0x4b, 0xc8, 0x5c, 0xa2, 0x24, 0x31, 0x09, 0xa9, 0x4a, 0x58, 0x94, 0x95, 0x4f, 0x28, 0x0a, 0xcd, - 0x7f, 0x6d, 0x00, 0xe1, 0x2d, 0x9c, 0x77, 0x3a, 0xce, 0xb6, 0xd7, 0xf4, 0x22, 0x8f, 0x86, 0xe4, - 0x1e, 0x94, 0x05, 0x0b, 0x66, 0xb6, 0xab, 0x7e, 0x52, 0xe2, 0xe9, 0x35, 0x2e, 0xb3, 0xd3, 0x6a, - 0x4d, 0x0f, 0x61, 0x9f, 0xc9, 0xcb, 0x3d, 0xc1, 0xe4, 0x99, 0x7f, 0x6d, 0xc0, 0x85, 0xde, 0x66, - 0x8b, 0x9a, 0xe3, 0xc1, 0x33, 0x8e, 0x19, 0xbc, 0xac, 0x5e, 0xe6, 0xf0, 0x22, 0xe3, 0xa9, 0xf5, - 0x32, 0x9f, 0xdc, 0x81, 0x9e, 0xbc, 0x97, 0xbf, 0x9d, 0x83, 0xb1, 0xb5, 0x66, 0x77, 0xc7, 0x6b, - 0x2f, 0x38, 0x91, 0x73, 0x6a, 0x4d, 0x8a, 0xb7, 0x34, 0x93, 0x22, 0xf6, 0xa5, 0x8a, 0x3b, 0x36, - 0x58, 0xc2, 0x2a, 0x03, 0x26, 0x13, 0x12, 0xbe, 0x4b, 0xef, 0x42, 0x81, 0xfd, 0x10, 0x1a, 0xca, - 0xe5, 0x1e, 0xc6, 0x88, 0x75, 0x3d, 0xfe, 0x4f, 0x28, 0xf9, 0x7a, 0x9a, 0x30, 0xe4, 0x70, 0xf1, - 0x33, 0x3c, 0xcb, 0xcf, 0xc9, 0x33, 0x12, 0xfe, 0x89, 0x01, 0xe5, 0x74, 0x4f, 0xc8, 0x3d, 0x18, - 0x61, 0x9c, 0xbc, 0x38, 0x63, 0xd0, 0x0b, 0x7d, 0xfa, 0x7c, 0x5d, 0xa0, 0xf1, 0xe6, 0xe1, 0xe0, - 0x53, 0x0e, 0xb1, 0x24, 0x87, 0x8b, 0x16, 0x8c, 0xa9, 0x58, 0x19, 0xad, 0x7b, 0x45, 0x17, 0x4d, - 0xe7, 0xb2, 0xc7, 0x41, 0x6d, 0xf5, 0x1f, 0x68, 0xad, 0x16, 0x42, 0x69, 0xd0, 0xd4, 0x6f, 0x18, - 0x1a, 0xc6, 0x33, 0x62, 0xa8, 0xeb, 0x4c, 0x26, 0xcf, 0xd0, 0x43, 0xc3, 0x38, 0x8c, 0xd9, 0x22, - 0xbc, 0x3e, 0xb1, 0xce, 0xd0, 0x16, 0xe9, 0x20, 0x44, 0xd5, 0x67, 0x39, 0x8e, 0xf9, 0x0f, 0xf3, - 0x70, 0x2e, 0x69, 0x1e, 0x4f, 0x84, 0xb7, 0xe6, 0x04, 0x4e, 0x2b, 0x3c, 0x66, 0x07, 0x5c, 0xe9, - 0x69, 0x1a, 0x86, 0x3e, 0xcb, 0xa6, 0x29, 0x0d, 0x32, 0x53, 0x0d, 0x42, 0x23, 0x8e, 0x37, 0x48, - 0x36, 0x83, 0xdc, 0x83, 0x7c, 0x9d, 0x46, 0x22, 0x40, 0xf2, 0xa5, 0x9e, 0x51, 0x55, 0xdb, 0x75, - 0xbd, 0x4e, 0x23, 0x3e, 0x89, 0xdc, 0xc7, 0x9c, 0x6a, 0x3e, 0xdf, 0x4c, 0x1d, 0xdf, 0x82, 0xe1, - 0xc5, 0xc7, 0x1d, 0xda, 0x88, 0x44, 0x5c, 0xe4, 0xd5, 0xa3, 0xf9, 0x71, 0x5c, 0x25, 0xfa, 0x92, - 0x22, 0x40, 0x1d, 0x2c, 0x8e, 0x72, 0xf1, 0x4d, 0x28, 0xca, 0xca, 0x4f, 0x14, 0x45, 0xf8, 0x16, - 0x8c, 0x2a, 0x95, 0x9c, 0x68, 0xd1, 0xff, 0xc2, 0x80, 0x61, 0x26, 0xf4, 0x36, 0x5f, 0x3f, 0xa5, - 0x12, 0xe9, 0x96, 0x26, 0x91, 0xa6, 0x94, 0x70, 0x17, 0xdc, 0x97, 0xaf, 0x1f, 0x23, 0x8b, 0x0e, - 0x0c, 0x80, 0x04, 0x99, 0xdc, 0x81, 0x11, 0xfe, 0xec, 0x23, 0xb3, 0x4c, 0xaa, 0xf1, 0x33, 0xa2, - 0x24, 0xd1, 0x72, 0xfc, 0x4e, 0x5a, 0x2d, 0x94, 0xd4, 0x64, 0x21, 0xf1, 0x31, 0x56, 0x03, 0x36, - 0x19, 0x9b, 0x79, 0xbf, 0xcd, 0xe3, 0x29, 0x42, 0x25, 0x1b, 0x53, 0xb6, 0xb3, 0x71, 0x55, 0x5c, - 0x6c, 0xe4, 0x8f, 0x62, 0x72, 0x4e, 0x30, 0xc9, 0xbe, 0xf3, 0xf8, 0x13, 0xe0, 0x11, 0x0a, 0xb2, - 0x61, 0xef, 0xc2, 0xd8, 0x6d, 0x3f, 0x78, 0xe4, 0x04, 0x6e, 0x75, 0x87, 0x0a, 0xef, 0xf0, 0x22, - 0xba, 0x78, 0x8f, 0x3f, 0xe0, 0x70, 0xdb, 0x61, 0x05, 0x3f, 0x3f, 0xa8, 0x14, 0x6a, 0xbe, 0xdf, - 0xb4, 0x34, 0x74, 0xb2, 0x0a, 0xe3, 0xf7, 0x9d, 0xc7, 0xe2, 0x75, 0x6f, 0x7d, 0x7d, 0x59, 0x78, - 0xa5, 0x5c, 0x3d, 0x3c, 0xa8, 0x5c, 0x68, 0x39, 0x8f, 0xe3, 0x57, 0xc1, 0xfe, 0x6e, 0xd0, 0x3a, - 0x3d, 0xf1, 0x60, 0x62, 0xcd, 0x0f, 0x22, 0x51, 0x09, 0xd3, 0x69, 0xf3, 0x7d, 0x1e, 0xe7, 0x6e, - 0x64, 0x3e, 0xce, 0x5d, 0x60, 0x8a, 0xbc, 0xfd, 0x20, 0x26, 0xd7, 0xc2, 0xea, 0x34, 0xc6, 0xe4, - 0x5d, 0x98, 0x9a, 0xa7, 0x41, 0xe4, 0x3d, 0xf0, 0x1a, 0x4e, 0x44, 0x6f, 0xfb, 0x41, 0xcb, 0x89, - 0xc4, 0x85, 0x0a, 0x1a, 0xd4, 0x0d, 0xca, 0x39, 0xb5, 0x9c, 0xc8, 0xea, 0xc5, 0x24, 0x5f, 0xce, - 0xf2, 0xf3, 0x19, 0xc2, 0xee, 0xbf, 0xca, 0x94, 0x82, 0x0c, 0x3f, 0x9f, 0x3e, 0x43, 0x90, 0xe1, - 0xf1, 0xb3, 0x73, 0xd4, 0x23, 0x69, 0xb1, 0x76, 0x53, 0x3c, 0xd8, 0x1e, 0xff, 0x08, 0x1a, 0xcf, - 0x5b, 0x9f, 0xc7, 0xd0, 0x39, 0xc8, 0xd7, 0xd6, 0x6e, 0xe3, 0x15, 0x89, 0x78, 0x94, 0xa4, 0xed, - 0x5d, 0xa7, 0xdd, 0x40, 0x5d, 0x46, 0x78, 0x3a, 0xa8, 0x02, 0xaf, 0xb6, 0x76, 0x9b, 0x38, 0x30, - 0xbd, 0x46, 0x83, 0x96, 0x17, 0x7d, 0xe1, 0xe6, 0x4d, 0x65, 0xa2, 0x8a, 0xd8, 0xb4, 0x1b, 0xa2, - 0x69, 0x95, 0x0e, 0xa2, 0xd8, 0x8f, 0x6f, 0xde, 0xcc, 0x9c, 0x8e, 0xb8, 0x61, 0x59, 0xbc, 0xc8, - 0x22, 0x4c, 0xdc, 0x77, 0x1e, 0x8b, 0xe7, 0xeb, 0xd8, 0xc6, 0xcb, 0xa3, 0x57, 0x3c, 0x2e, 0xac, - 0x46, 0x52, 0xa4, 0x4e, 0xb1, 0x4e, 0x44, 0xde, 0x81, 0xd1, 0x64, 0x79, 0x85, 0xf8, 0x70, 0x99, - 0xe7, 0x0e, 0x94, 0xca, 0xe2, 0xd4, 0xee, 0x92, 0x14, 0x74, 0xb2, 0x11, 0x9b, 0xe8, 0x5c, 0x21, - 0x45, 0xb7, 0xc2, 0x52, 0xed, 0x86, 0x6a, 0xa2, 0x3b, 0x58, 0xa2, 0x75, 0x6b, 0x32, 0x56, 0xd1, - 0xb9, 0x5f, 0x8d, 0xa5, 0x73, 0x51, 0x2c, 0xff, 0xb5, 0xc0, 0x6f, 0x75, 0x22, 0xf4, 0x2f, 0x4c, - 0x59, 0xfe, 0x1d, 0x2c, 0xc9, 0xb0, 0xfc, 0x39, 0x49, 0xf6, 0xab, 0xfc, 0xf8, 0x13, 0xbc, 0xca, - 0x53, 0x28, 0x2c, 0xfb, 0x8d, 0x3d, 0x74, 0x28, 0x2c, 0xd5, 0x3e, 0x64, 0xf2, 0xa3, 0xe9, 0x37, - 0xf6, 0x9e, 0xde, 0x6b, 0x32, 0xb2, 0x27, 0x2b, 0xac, 0xef, 0x6c, 0x59, 0x89, 0xaa, 0x67, 0x27, - 0xb5, 0x97, 0x36, 0xad, 0x8c, 0x2b, 0x2a, 0x7c, 0x15, 0xca, 0x8e, 0x58, 0x3a, 0x39, 0xa1, 0x50, - 0x5e, 0xa0, 0xe1, 0x5e, 0xe4, 0x77, 0xe6, 0x9b, 0x5e, 0x67, 0xdb, 0x77, 0x02, 0x77, 0xb6, 0xdc, - 0x47, 0x60, 0xbc, 0x9c, 0x29, 0x30, 0xa6, 0x5c, 0x4e, 0x6f, 0x37, 0x24, 0x03, 0xab, 0x87, 0xa5, - 0xf9, 0xa5, 0x54, 0xb3, 0xc9, 0x12, 0x8c, 0x08, 0x24, 0x71, 0x30, 0xf4, 0x56, 0xf7, 0x6c, 0x66, - 0x75, 0x23, 0xa2, 0x3a, 0x4b, 0xd2, 0x9b, 0x7f, 0x36, 0x0a, 0x13, 0xba, 0x08, 0x67, 0x3a, 0xd5, - 0xb2, 0xbf, 0xe3, 0xb5, 0xa5, 0x65, 0xc6, 0x93, 0x34, 0x20, 0x44, 0x4b, 0xf6, 0x8d, 0x10, 0xf2, - 0x22, 0x40, 0xfc, 0xf8, 0x28, 0x8d, 0x2f, 0x91, 0x9a, 0x5c, 0x29, 0x20, 0xbf, 0x02, 0xb0, 0xe2, - 0xbb, 0x34, 0xce, 0xf3, 0x71, 0xc4, 0x95, 0xc9, 0xcb, 0xe2, 0xca, 0x44, 0xa4, 0x13, 0x3f, 0x3c, - 0xa8, 0xcc, 0xb4, 0x7d, 0x97, 0xf6, 0x26, 0xf8, 0x50, 0x38, 0x92, 0xcf, 0xc1, 0x90, 0xd5, 0x6d, - 0x52, 0x99, 0x76, 0x62, 0x54, 0x4e, 0x69, 0xb7, 0xa9, 0xa4, 0x19, 0x0c, 0xba, 0xe9, 0x9b, 0x72, - 0x06, 0x20, 0xef, 0x03, 0xdc, 0xeb, 0x6e, 0xd3, 0x3b, 0x81, 0xdf, 0xed, 0xc8, 0xb8, 0x56, 0x34, - 0xd4, 0xf6, 0xe2, 0x24, 0x45, 0xf6, 0x0e, 0x16, 0xaa, 0x95, 0x27, 0x24, 0x64, 0x15, 0x46, 0xc4, - 0x06, 0x11, 0x37, 0xd1, 0xcf, 0x65, 0xdd, 0x81, 0x28, 0xa7, 0xa4, 0xc8, 0x03, 0x81, 0x60, 0xfd, - 0x5a, 0x82, 0x1b, 0x9a, 0xef, 0x40, 0x89, 0xb1, 0x67, 0xc6, 0x64, 0x28, 0xa4, 0x23, 0xfa, 0xd3, - 0x29, 0x0d, 0x62, 0x86, 0xa7, 0x96, 0x8d, 0x2a, 0x26, 0x20, 0x5f, 0xc6, 0xcc, 0x2d, 0x62, 0xa8, - 0x8f, 0xbc, 0x4a, 0x7b, 0xa9, 0x67, 0xa8, 0xcf, 0x3a, 0x9d, 0x4e, 0x46, 0xaa, 0xab, 0x98, 0x1f, - 0xd9, 0x89, 0x63, 0x4e, 0xe2, 0x5c, 0xb3, 0x47, 0x54, 0x70, 0xad, 0xa7, 0x82, 0x59, 0x19, 0x46, - 0xd1, 0x9b, 0xaf, 0x45, 0xe3, 0x4b, 0x3a, 0x50, 0x4e, 0x92, 0x44, 0x89, 0xba, 0xe0, 0xa8, 0xba, - 0x5e, 0xed, 0xa9, 0x4b, 0x9d, 0xc0, 0x9e, 0xea, 0x7a, 0xb8, 0x13, 0x37, 0xc9, 0x0b, 0x2a, 0xea, - 0x1b, 0x3d, 0xaa, 0xbe, 0x17, 0x7b, 0xea, 0x9b, 0x76, 0xb7, 0x7b, 0xeb, 0x49, 0xf1, 0x24, 0xef, - 0xc0, 0xb8, 0x84, 0xe0, 0xfe, 0xc0, 0x2b, 0x2c, 0xa1, 0xc1, 0xba, 0xdb, 0xe8, 0x44, 0xa5, 0x27, - 0x2b, 0x51, 0x91, 0x55, 0x6a, 0xbe, 0x3a, 0xc6, 0x35, 0xea, 0xf4, 0xaa, 0xd0, 0x91, 0xc9, 0x17, - 0x61, 0x74, 0xa9, 0xc5, 0x3a, 0xe2, 0xb7, 0x9d, 0x88, 0xa2, 0xb8, 0x4d, 0xae, 0x05, 0x95, 0x12, - 0x65, 0xa9, 0xf2, 0xac, 0x80, 0x49, 0x91, 0x7a, 0x5c, 0x29, 0x14, 0x6c, 0xf0, 0xf8, 0x05, 0x83, - 0x58, 0xc3, 0xa1, 0x10, 0xae, 0xcf, 0x66, 0x5c, 0xcd, 0x29, 0xec, 0xf1, 0x48, 0xe5, 0xf7, 0x16, - 0xb6, 0xd8, 0x10, 0xda, 0xe0, 0xe9, 0x3c, 0xc9, 0xbb, 0x30, 0x2a, 0xe2, 0xf5, 0xaa, 0xd6, 0x4a, - 0x38, 0x5b, 0xc6, 0xce, 0x63, 0xa6, 0x31, 0x19, 0xda, 0x67, 0x3b, 0x41, 0xea, 0x7d, 0x26, 0xc1, - 0x27, 0x5f, 0x80, 0xb3, 0x5b, 0x5e, 0xdb, 0xf5, 0x1f, 0x85, 0x42, 0xfe, 0x09, 0x41, 0x37, 0x95, - 0xf8, 0xac, 0x3c, 0xe2, 0xe5, 0xb6, 0x14, 0xcc, 0x3d, 0x82, 0x2f, 0x93, 0x03, 0xf9, 0xf5, 0x1e, - 0xce, 0x7c, 0x05, 0x91, 0xa3, 0x56, 0xd0, 0x5c, 0xcf, 0x0a, 0xea, 0xad, 0x3e, 0xbd, 0x9c, 0x32, - 0xab, 0x31, 0xff, 0x26, 0x0f, 0xe7, 0xfb, 0x08, 0x9b, 0xe4, 0xcd, 0xd0, 0x38, 0xf6, 0xcd, 0xf0, - 0x2b, 0x6c, 0x73, 0x3b, 0x5e, 0x2b, 0x5c, 0xf7, 0x93, 0x97, 0x92, 0xe4, 0x7a, 0x15, 0xcb, 0x64, - 0xe0, 0xbe, 0x0c, 0x32, 0xbf, 0xd0, 0x40, 0x0a, 0x3b, 0xf2, 0x7b, 0x2e, 0xb3, 0x74, 0x66, 0x3d, - 0xaf, 0x76, 0xf9, 0x5f, 0x92, 0x57, 0x3b, 0xfd, 0xae, 0xbc, 0xf0, 0x54, 0xef, 0xca, 0xb3, 0x6f, - 0xef, 0x86, 0x9e, 0xe4, 0x8e, 0xf2, 0x3f, 0xa6, 0xde, 0x09, 0x7f, 0x19, 0xa7, 0xfa, 0x2a, 0x0c, - 0x6d, 0xed, 0xd2, 0x40, 0x3a, 0x8a, 0x62, 0x43, 0x1e, 0x31, 0x80, 0xda, 0x10, 0xc4, 0x30, 0xbf, - 0x01, 0x63, 0x6a, 0x65, 0xa4, 0x02, 0x43, 0xf8, 0x5b, 0x98, 0xfe, 0xf8, 0x4a, 0x87, 0xf5, 0x5a, - 0x1c, 0x7e, 0x6c, 0x9a, 0x9e, 0x64, 0x14, 0xf2, 0xc7, 0x8d, 0x82, 0xf9, 0x67, 0x06, 0x14, 0x30, - 0x4a, 0xf9, 0x0d, 0x28, 0xc9, 0x3b, 0x1c, 0x35, 0x72, 0x77, 0x5a, 0x5e, 0xf1, 0x84, 0xfa, 0x43, - 0xab, 0x00, 0xb2, 0xaa, 0x36, 0x69, 0xb0, 0xad, 0xbd, 0xc7, 0x3f, 0x64, 0x00, 0xb5, 0x2a, 0xc4, - 0x38, 0xc1, 0x90, 0xa0, 0xcf, 0x81, 0x30, 0x3c, 0x0a, 0xc8, 0x97, 0xfb, 0x1c, 0xf4, 0x18, 0x1c, - 0x12, 0xcb, 0xfc, 0x81, 0x01, 0x33, 0x99, 0xe2, 0x9b, 0xd5, 0xca, 0xcf, 0x09, 0x65, 0x45, 0xa4, - 0x0f, 0x09, 0x8e, 0x71, 0x12, 0xdf, 0x82, 0x13, 0x4c, 0xef, 0xa7, 0xa0, 0x14, 0x6b, 0xa5, 0xe4, - 0xac, 0x9c, 0x3a, 0x34, 0xf4, 0x65, 0x5a, 0xa5, 0x5f, 0x18, 0x30, 0xcc, 0x9a, 0x70, 0x6a, 0x9d, - 0xc4, 0xb3, 0xaf, 0x7d, 0x58, 0x97, 0x06, 0x72, 0x0d, 0xff, 0xe1, 0x30, 0x40, 0x82, 0x4c, 0xb6, - 0x61, 0x62, 0x75, 0x69, 0x61, 0x7e, 0xc9, 0xa5, 0xed, 0x08, 0x9f, 0x1f, 0x52, 0xc1, 0xc2, 0x8b, - 0x8f, 0x23, 0x1a, 0xb4, 0x9d, 0xa6, 0x40, 0xd8, 0x4f, 0xb6, 0xa7, 0xef, 0xb9, 0x0d, 0xdb, 0x8b, - 0xe9, 0xd4, 0x73, 0x54, 0xe7, 0xc8, 0xea, 0xa8, 0x57, 0xef, 0x2f, 0x2b, 0x75, 0xe4, 0x06, 0xac, - 0x23, 0x74, 0x5a, 0xcd, 0x3e, 0x75, 0xe8, 0x1c, 0xc9, 0x2e, 0x94, 0xef, 0xa0, 0xec, 0x56, 0x6a, - 0xc9, 0x1f, 0x5d, 0xcb, 0xf3, 0xa2, 0x96, 0x67, 0xb8, 0xd0, 0xcf, 0xae, 0xa7, 0x87, 0x6b, 0xb2, - 0x72, 0x0b, 0xc7, 0xae, 0xdc, 0xdf, 0x32, 0x60, 0x98, 0x1f, 0x0e, 0x71, 0x0e, 0xfa, 0xcc, 0xe3, - 0x67, 0xeb, 0xe9, 0x1c, 0x3f, 0xe5, 0x08, 0xff, 0x53, 0xed, 0x26, 0x5e, 0x46, 0x16, 0x52, 0x09, - 0xed, 0xe5, 0xdd, 0x1e, 0xea, 0x13, 0xbc, 0x24, 0xf1, 0xd0, 0xe0, 0xb9, 0xec, 0x55, 0x2e, 0x1c, - 0x43, 0xfd, 0x9c, 0xd6, 0xc8, 0x13, 0x7e, 0x4e, 0x6b, 0x19, 0x4a, 0xc2, 0xe5, 0xa0, 0xb6, 0x2f, - 0xac, 0x06, 0x69, 0x56, 0xc6, 0x70, 0x25, 0x23, 0x2e, 0x07, 0xd9, 0xdb, 0x5a, 0x3e, 0xab, 0x18, - 0x91, 0xac, 0x42, 0x29, 0xf1, 0x70, 0x2f, 0x69, 0x0f, 0x34, 0x31, 0x5c, 0xf8, 0xe4, 0xf1, 0x20, - 0xaa, 0x4c, 0x87, 0xf6, 0x84, 0x87, 0xf9, 0x6d, 0x03, 0xca, 0xe9, 0xf5, 0x42, 0xde, 0x81, 0xd1, - 0x38, 0xc8, 0x20, 0x7e, 0xf8, 0xc4, 0x1b, 0x96, 0x24, 0x2a, 0x41, 0x7b, 0x02, 0x55, 0xd1, 0xc9, - 0x1c, 0x14, 0xd9, 0xb6, 0x53, 0x12, 0x9a, 0xa2, 0x3c, 0xe9, 0x0a, 0x98, 0xfa, 0xe0, 0x20, 0xf1, - 0x94, 0x5d, 0xfb, 0x9f, 0xf2, 0x30, 0xaa, 0x4c, 0x16, 0xb9, 0x0a, 0xc5, 0xa5, 0x70, 0xd9, 0x6f, - 0xec, 0x51, 0x57, 0xdc, 0x63, 0xe2, 0xd7, 0xd2, 0xbc, 0xd0, 0x6e, 0x22, 0xd0, 0x8a, 0x8b, 0x49, - 0x0d, 0xc6, 0xf9, 0x7f, 0x32, 0x98, 0x2c, 0x97, 0xdc, 0xc1, 0x70, 0x64, 0x19, 0x46, 0xa6, 0x9e, - 0xb0, 0x1a, 0x09, 0xf9, 0x2a, 0x00, 0x07, 0xb0, 0xf9, 0x1d, 0xc0, 0xe3, 0x50, 0x6e, 0xe0, 0x19, - 0x51, 0x41, 0xe4, 0xa9, 0x3d, 0xc4, 0xa5, 0xa0, 0x30, 0xc4, 0x2f, 0x37, 0xf9, 0x8d, 0xbd, 0xc1, - 0xbf, 0xd5, 0x96, 0x7c, 0xb9, 0xc9, 0x6f, 0xec, 0xd9, 0xd9, 0xee, 0x27, 0x2a, 0x4b, 0xf2, 0x1d, - 0x03, 0x2e, 0x5a, 0xb4, 0xe1, 0x3f, 0xa4, 0xc1, 0x7e, 0x35, 0x42, 0x2c, 0xb5, 0xc6, 0xe3, 0x7d, - 0x5d, 0x6e, 0x89, 0x1a, 0x5f, 0x0e, 0x04, 0x17, 0xf4, 0xaa, 0x6f, 0x75, 0x22, 0xfb, 0x88, 0x26, - 0x1c, 0x51, 0xa5, 0xf9, 0x97, 0x86, 0xb2, 0x05, 0xc8, 0x0a, 0x94, 0xe2, 0xc5, 0x22, 0xae, 0x59, - 0x62, 0xe5, 0x48, 0xc2, 0x2d, 0xfa, 0xa0, 0xf6, 0x8c, 0xb8, 0x72, 0x9c, 0x8e, 0x97, 0x9c, 0xb6, - 0x23, 0x24, 0x90, 0x7c, 0x1e, 0x0a, 0x38, 0x55, 0xc7, 0x67, 0xc0, 0x91, 0x47, 0x4d, 0x81, 0xcd, - 0x11, 0xb6, 0x1a, 0x29, 0xc9, 0x6b, 0xe2, 0xf9, 0x39, 0xaf, 0xe5, 0x96, 0x64, 0x20, 0xd6, 0x8e, - 0xf8, 0x8c, 0x49, 0x3c, 0x9e, 0x94, 0xd5, 0xfa, 0x77, 0x0c, 0x98, 0xde, 0x98, 0xbb, 0x6d, 0xd1, - 0x1d, 0x0f, 0x83, 0xf1, 0x3c, 0x1f, 0xdf, 0x86, 0xc8, 0x05, 0xc8, 0x5b, 0xce, 0x23, 0x91, 0xa9, - 0x0e, 0xdd, 0x9d, 0x03, 0xe7, 0x91, 0xc5, 0x60, 0xe4, 0x15, 0x28, 0xdd, 0xa3, 0xfb, 0x77, 0x9d, - 0xb6, 0xdb, 0xa4, 0x22, 0x23, 0x1d, 0xe6, 0x41, 0xd8, 0xa3, 0xfb, 0xf6, 0x2e, 0x42, 0xad, 0x04, - 0x01, 0x1f, 0xbe, 0xba, 0xdb, 0xf7, 0x28, 0x7f, 0x1f, 0x18, 0x13, 0x0f, 0x5f, 0xdd, 0x6d, 0xf4, - 0xa8, 0xe5, 0x25, 0xe6, 0x1f, 0xe5, 0xa1, 0x9c, 0xde, 0xfd, 0xe4, 0x7d, 0x18, 0x5b, 0x73, 0xc2, - 0xf0, 0x91, 0x1f, 0xb8, 0x77, 0x9d, 0x70, 0x57, 0x34, 0x05, 0x6d, 0xba, 0x8e, 0x80, 0xdb, 0xbb, - 0x8e, 0x96, 0x5c, 0x49, 0x23, 0x60, 0x5a, 0xc1, 0xba, 0xf0, 0xe6, 0x55, 0x76, 0x71, 0xe4, 0x47, - 0x9d, 0x54, 0xd2, 0x3c, 0x89, 0x46, 0x5c, 0x98, 0x4c, 0x8d, 0x45, 0xbc, 0x81, 0xe2, 0xb0, 0xa4, - 0xf4, 0x48, 0xf1, 0x0b, 0x98, 0xee, 0xdc, 0x03, 0x4c, 0x3c, 0x23, 0x4b, 0xd4, 0x88, 0x99, 0x14, - 0x11, 0x79, 0x0b, 0x60, 0x63, 0xee, 0x36, 0xc6, 0xaa, 0xd2, 0x40, 0xb8, 0x83, 0xa2, 0x35, 0xcd, - 0x98, 0x34, 0x38, 0x58, 0xb5, 0x1a, 0x12, 0x64, 0xf2, 0x06, 0xe4, 0x79, 0xa0, 0x93, 0x9a, 0x12, - 0xe6, 0xfe, 0xed, 0x2a, 0x8f, 0x0d, 0xe1, 0x6f, 0x81, 0xfa, 0xa5, 0x2a, 0xc3, 0x27, 0xcb, 0x4a, - 0x98, 0xcc, 0xb0, 0x96, 0x4c, 0x43, 0x82, 0xe3, 0xd1, 0x1f, 0x20, 0x5e, 0xe6, 0x5f, 0xe4, 0xa1, - 0x14, 0xd7, 0x49, 0x08, 0xa0, 0x26, 0x26, 0x1e, 0xf2, 0xf0, 0x7f, 0x72, 0x01, 0x8a, 0x52, 0xf9, - 0x12, 0x8f, 0x79, 0x23, 0xa1, 0x50, 0xbc, 0x66, 0x41, 0x6a, 0x59, 0x5c, 0xf1, 0xb2, 0xe4, 0x4f, - 0x72, 0x13, 0x62, 0x15, 0xaa, 0x9f, 0xae, 0x55, 0x60, 0x4b, 0xd9, 0x8a, 0xd1, 0xc8, 0x04, 0xe4, - 0x3c, 0xee, 0x3e, 0x5a, 0xb2, 0x72, 0x9e, 0x4b, 0xde, 0x87, 0xa2, 0xe3, 0xba, 0xd4, 0xb5, 0x9d, - 0x68, 0x80, 0x2f, 0x0c, 0x16, 0x19, 0x37, 0x7e, 0xd6, 0x21, 0x55, 0x35, 0x22, 0x55, 0x28, 0xe1, - 0x07, 0xe6, 0xba, 0xe1, 0x40, 0x5f, 0xa5, 0x4b, 0x38, 0x14, 0x19, 0xd9, 0x46, 0x48, 0x5d, 0xf2, - 0x32, 0x14, 0xd8, 0x12, 0x13, 0x27, 0x65, 0x9c, 0xdc, 0x6b, 0x75, 0x7d, 0x8d, 0x0f, 0xd8, 0xdd, - 0x33, 0x16, 0x22, 0x90, 0x17, 0x20, 0xdf, 0x9d, 0x7b, 0x20, 0xce, 0xc0, 0x72, 0xb2, 0xc0, 0x62, - 0x34, 0x56, 0x4c, 0x6e, 0x41, 0xf1, 0x91, 0x1e, 0xe1, 0x34, 0x93, 0x9a, 0xba, 0x18, 0x3f, 0x46, - 0xac, 0x15, 0x61, 0x98, 0xc7, 0x13, 0x99, 0xcf, 0x01, 0x24, 0x55, 0xf7, 0xbe, 0xb9, 0x9a, 0x5f, - 0x85, 0x52, 0x5c, 0x25, 0x79, 0x16, 0x94, 0x3d, 0xcc, 0xf7, 0x9b, 0x55, 0xda, 0x8b, 0x77, 0xf2, - 0x79, 0x18, 0xe9, 0xb0, 0x59, 0x95, 0x79, 0x28, 0x2d, 0xb6, 0x8d, 0xd9, 0xb6, 0x99, 0x85, 0x11, - 0xb1, 0x6c, 0xb9, 0x2b, 0xb4, 0x25, 0x7f, 0x9a, 0x7f, 0x61, 0x60, 0x4c, 0xb3, 0xd2, 0x4e, 0xf2, - 0x3c, 0x8c, 0x37, 0x02, 0x8a, 0x07, 0xb5, 0xc3, 0x14, 0x46, 0x51, 0xcf, 0x58, 0x02, 0x5c, 0x72, - 0xc9, 0x4b, 0x30, 0x99, 0x24, 0xc6, 0xb4, 0x1b, 0xdb, 0x22, 0xbe, 0x71, 0xcc, 0x1a, 0xef, 0xc8, - 0xcc, 0x98, 0xf3, 0xdb, 0xe8, 0xf6, 0x5c, 0x56, 0x63, 0x89, 0x22, 0x99, 0xe4, 0xb2, 0x64, 0x4d, - 0x2a, 0x70, 0x0c, 0x98, 0x3c, 0x07, 0xc3, 0x8e, 0xb3, 0xd3, 0xf5, 0xb8, 0x0b, 0xe6, 0x98, 0x25, - 0x7e, 0x91, 0x4f, 0xc3, 0x54, 0xe8, 0xed, 0xb4, 0x9d, 0xa8, 0x1b, 0x50, 0xb9, 0xfb, 0x70, 0x49, - 0x8d, 0x5b, 0xe5, 0xb8, 0x40, 0xec, 0x3f, 0xb3, 0x06, 0x53, 0x3d, 0x3b, 0x86, 0xbc, 0xca, 0xad, - 0x14, 0xa1, 0x67, 0x8c, 0x71, 0xa3, 0x8c, 0x09, 0xdb, 0xd4, 0x17, 0x43, 0x39, 0x92, 0xd9, 0x86, - 0x31, 0xf5, 0x9c, 0x38, 0x26, 0xce, 0xf3, 0x1c, 0x7a, 0x6e, 0x71, 0xf9, 0x35, 0x7c, 0x78, 0x50, - 0xc9, 0x79, 0x2e, 0xfa, 0x6b, 0x5d, 0x81, 0xa2, 0xd4, 0x76, 0xd4, 0x6f, 0x1c, 0x08, 0xc5, 0x78, - 0xdf, 0x8a, 0x4b, 0xcd, 0x97, 0x61, 0x44, 0x1c, 0x05, 0x47, 0xa7, 0xb9, 0x35, 0xbf, 0x99, 0x83, - 0x49, 0x8b, 0xb2, 0xed, 0x28, 0xbe, 0x1e, 0xf0, 0x09, 0x4b, 0xe8, 0xa9, 0xf5, 0xed, 0x88, 0xb0, - 0xea, 0x1f, 0x19, 0x30, 0x9d, 0x81, 0xfb, 0x91, 0x72, 0x06, 0xbd, 0x09, 0xa5, 0x05, 0xcf, 0x69, - 0x56, 0x5d, 0x37, 0xf6, 0x40, 0x43, 0xad, 0xd6, 0x65, 0x8b, 0xdf, 0x61, 0x50, 0x55, 0x29, 0x88, - 0x51, 0xc9, 0x35, 0xb1, 0x28, 0x92, 0x1c, 0x65, 0x32, 0x65, 0x28, 0xf0, 0x36, 0x25, 0x09, 0x43, - 0x31, 0xce, 0x87, 0x03, 0x93, 0x47, 0xc6, 0x53, 0x3b, 0x75, 0xd9, 0x71, 0x3e, 0xe9, 0xee, 0x0d, - 0x64, 0x3e, 0x7f, 0x3b, 0x07, 0xe7, 0xb2, 0x09, 0x3f, 0x6a, 0xfa, 0x27, 0x8c, 0x69, 0x57, 0xb2, - 0xb2, 0xa2, 0xda, 0xc3, 0x03, 0xe0, 0x11, 0x3f, 0x41, 0x20, 0x0f, 0x60, 0x7c, 0xd9, 0x09, 0xa3, - 0xbb, 0xd4, 0x09, 0xa2, 0x6d, 0xea, 0x44, 0x03, 0x68, 0xe2, 0xf1, 0x77, 0x3a, 0xf1, 0x08, 0xda, - 0x95, 0x94, 0xe9, 0xef, 0x74, 0x6a, 0x6c, 0xe3, 0x85, 0x52, 0x18, 0x60, 0xa1, 0x7c, 0x1d, 0x26, - 0xeb, 0xb4, 0xe5, 0x74, 0x76, 0xfd, 0x80, 0x0a, 0x1f, 0xac, 0xeb, 0x30, 0x1e, 0x83, 0x32, 0x57, - 0x8b, 0x5e, 0xac, 0xe1, 0x2b, 0x03, 0x91, 0x88, 0x12, 0xbd, 0xd8, 0xfc, 0xfd, 0x1c, 0x9c, 0xaf, - 0x36, 0xc4, 0xb3, 0xae, 0x28, 0x90, 0x8f, 0x59, 0x1f, 0x73, 0xdd, 0xe4, 0x06, 0x94, 0xee, 0x3b, - 0x8f, 0xf1, 0x03, 0xd3, 0xa1, 0x48, 0x22, 0xc2, 0x15, 0x24, 0xe7, 0xb1, 0x1d, 0x5f, 0xdf, 0x59, - 0x09, 0xce, 0xd3, 0xfc, 0x06, 0xb5, 0x09, 0xc3, 0x77, 0xfd, 0xa6, 0x2b, 0x8e, 0x12, 0xe1, 0xee, - 0xb5, 0x8b, 0x10, 0x4b, 0x94, 0x98, 0x7f, 0x6d, 0xc0, 0x44, 0xdc, 0x62, 0x6c, 0xc2, 0xc7, 0x3e, - 0x24, 0xa9, 0xaf, 0x71, 0x97, 0x06, 0xf8, 0x1a, 0xf7, 0xd0, 0x93, 0x8d, 0x84, 0xf9, 0x2f, 0x0d, - 0x98, 0xd2, 0x7b, 0xc9, 0x4e, 0x22, 0xa5, 0x21, 0xc6, 0x80, 0x0d, 0xc9, 0x3d, 0xb5, 0x29, 0xc9, - 0xf7, 0x9d, 0x92, 0x6f, 0xe5, 0x60, 0x34, 0x6e, 0xec, 0x27, 0x2c, 0x40, 0x36, 0xee, 0xd7, 0x40, - 0xee, 0xaf, 0x75, 0x45, 0x56, 0x08, 0x2f, 0xd3, 0xcf, 0xc3, 0xb0, 0xd8, 0x4c, 0x7a, 0x84, 0x4e, - 0xcf, 0xec, 0x26, 0xdf, 0x5a, 0xc4, 0x09, 0x0d, 0x2d, 0x41, 0x87, 0xfe, 0xc5, 0x5b, 0x74, 0x5b, - 0xb8, 0x2b, 0x9c, 0xda, 0x33, 0x2a, 0xdb, 0xbf, 0x38, 0xe9, 0xd8, 0x40, 0xa7, 0xd3, 0x3f, 0x29, - 0x40, 0x39, 0x4d, 0x72, 0x7c, 0x08, 0xf2, 0x5a, 0x77, 0x5b, 0x98, 0xdc, 0x68, 0x93, 0x77, 0xba, - 0xdb, 0x16, 0x83, 0x91, 0x97, 0xa0, 0xb0, 0x16, 0x78, 0x0f, 0x85, 0x8d, 0x8d, 0x2e, 0x2a, 0x9d, - 0xc0, 0x7b, 0xa8, 0x3a, 0xda, 0xb1, 0x72, 0xb4, 0x89, 0x97, 0xeb, 0xca, 0x67, 0x6e, 0xb9, 0x4d, - 0xdc, 0x0c, 0xd3, 0x59, 0x2a, 0x24, 0x1a, 0x3b, 0x2a, 0x6b, 0xd4, 0x09, 0x44, 0xb8, 0xac, 0x10, - 0x67, 0x78, 0x54, 0x6e, 0x23, 0x98, 0xa7, 0xa0, 0xb4, 0x54, 0x24, 0xd2, 0x04, 0xa2, 0xfc, 0x1c, - 0xfc, 0x9b, 0xef, 0xf2, 0xdb, 0x2d, 0x67, 0x55, 0xd6, 0xb6, 0xba, 0x9b, 0x33, 0xf8, 0x3e, 0xcd, - 0xbb, 0xce, 0x35, 0x28, 0xe1, 0xd5, 0x1d, 0x5e, 0xc8, 0x14, 0x8f, 0x65, 0x26, 0x9d, 0x1a, 0x01, - 0x1f, 0x83, 0xed, 0xf8, 0x5a, 0x26, 0x61, 0x42, 0xde, 0x83, 0x51, 0xd5, 0x13, 0x8f, 0xfb, 0x8b, - 0x5d, 0xe2, 0x21, 0x18, 0x7d, 0xb2, 0x39, 0xa9, 0x04, 0xe6, 0x6b, 0xea, 0x2a, 0x11, 0x87, 0xf6, - 0x91, 0xab, 0xc4, 0xfc, 0x3e, 0xaa, 0xf1, 0x2d, 0x3f, 0xa2, 0x42, 0x7b, 0x39, 0xb5, 0x72, 0x2c, - 0xb9, 0x0a, 0x1f, 0xd2, 0x1c, 0x12, 0xb4, 0xde, 0x9d, 0xe0, 0x03, 0xaf, 0xff, 0xd4, 0x80, 0x99, - 0x4c, 0x5a, 0x72, 0x1d, 0x20, 0xd1, 0x11, 0xc5, 0x28, 0xf1, 0xdc, 0x9e, 0x31, 0xd4, 0x52, 0x30, - 0xc8, 0x57, 0xd2, 0xda, 0xdd, 0xf1, 0x87, 0x93, 0xcc, 0x67, 0x3f, 0xa1, 0x6b, 0x77, 0x19, 0x3a, - 0x9d, 0xf9, 0xa3, 0x3c, 0x4c, 0xf5, 0x7c, 0x07, 0xed, 0x98, 0x6f, 0x94, 0xec, 0xa5, 0xbe, 0xb2, - 0xc3, 0x9f, 0x6d, 0xae, 0xf5, 0xfb, 0x0a, 0x5b, 0xc6, 0x37, 0x77, 0xf0, 0x66, 0x4d, 0xa4, 0x95, - 0x3d, 0xe6, 0xd3, 0x3b, 0x61, 0xf6, 0xf7, 0x99, 0x3e, 0xdd, 0xb7, 0xb6, 0xa7, 0xf0, 0x9d, 0xa6, - 0x5f, 0xe2, 0xcf, 0xd8, 0x7c, 0x3f, 0x07, 0xd3, 0x3d, 0x7d, 0x3e, 0xb5, 0xbb, 0xee, 0xf3, 0xda, - 0xe9, 0xf6, 0x5c, 0xbf, 0x39, 0x1d, 0x48, 0x8b, 0xf8, 0x9f, 0x06, 0x9c, 0xef, 0x43, 0x49, 0xf6, - 0xd3, 0x8b, 0x88, 0x6b, 0x15, 0x37, 0x8f, 0xae, 0xf0, 0xa9, 0x2c, 0xa5, 0x8f, 0x6d, 0x25, 0x7c, - 0x33, 0x07, 0xb0, 0x45, 0xb7, 0x4f, 0x77, 0x7e, 0x95, 0xec, 0x6f, 0x71, 0xcb, 0x6e, 0x0d, 0x34, - 0xef, 0xab, 0x78, 0xed, 0x37, 0x78, 0x72, 0x95, 0x38, 0x67, 0x7f, 0x2e, 0x3b, 0x67, 0xbf, 0xb9, - 0x0d, 0x67, 0xef, 0xd0, 0x28, 0x39, 0x09, 0xa5, 0x0d, 0x79, 0x34, 0xdb, 0x57, 0xa0, 0x24, 0xf0, - 0xf5, 0x8c, 0xcd, 0xd2, 0xff, 0xd8, 0x73, 0xad, 0x04, 0xc1, 0xa4, 0x70, 0x7e, 0x81, 0x36, 0x69, - 0x44, 0x3f, 0xde, 0x6a, 0xea, 0x40, 0x78, 0x57, 0x78, 0x2a, 0xf7, 0x81, 0x6a, 0x38, 0x76, 0x7c, - 0x36, 0x61, 0x26, 0x6e, 0xfb, 0xd3, 0xe4, 0x7b, 0x83, 0xe9, 0x12, 0x22, 0x98, 0x29, 0xe1, 0x78, - 0xc4, 0x25, 0xe2, 0x63, 0xb8, 0x28, 0x09, 0xb6, 0xbc, 0xf8, 0x31, 0x67, 0x20, 0x5a, 0xf2, 0x0e, - 0x8c, 0x2a, 0x34, 0x22, 0x32, 0x12, 0x5f, 0x6d, 0x1f, 0x79, 0xd1, 0xae, 0x1d, 0x72, 0xb8, 0xfa, - 0x6a, 0xab, 0xa0, 0x9b, 0x5f, 0x86, 0x67, 0x62, 0xff, 0x9b, 0x8c, 0xaa, 0x53, 0xcc, 0x8d, 0x93, - 0x31, 0x5f, 0x49, 0xba, 0xb5, 0xd4, 0x8e, 0xdd, 0x97, 0x25, 0x6f, 0xa2, 0x76, 0x4b, 0x74, 0xe6, - 0x92, 0x92, 0x77, 0x4a, 0x9c, 0x45, 0x09, 0xc0, 0x7c, 0x5b, 0x69, 0x6c, 0x06, 0x43, 0x8d, 0xd8, - 0x48, 0x13, 0x7f, 0x33, 0x07, 0x93, 0xab, 0x4b, 0x0b, 0xf3, 0xf1, 0x35, 0xf2, 0x27, 0x2c, 0xf9, - 0x8b, 0xd6, 0xb7, 0xfe, 0xf2, 0xc6, 0xdc, 0x80, 0xe9, 0xd4, 0x30, 0xe0, 0x97, 0x2a, 0xde, 0xe3, - 0x7e, 0x32, 0x31, 0x58, 0x9e, 0x2c, 0xe7, 0xb2, 0xd8, 0x6f, 0xde, 0xb2, 0x52, 0xd8, 0xe6, 0x8f, - 0x86, 0x53, 0x7c, 0x85, 0x08, 0x7b, 0x05, 0x4a, 0x4b, 0x61, 0xd8, 0xa5, 0xc1, 0x86, 0xb5, 0xac, - 0xea, 0x88, 0x1e, 0x02, 0xed, 0x6e, 0xd0, 0xb4, 0x12, 0x04, 0x72, 0x15, 0x8a, 0x22, 0x80, 0x46, - 0xca, 0x04, 0x7c, 0xf6, 0x8f, 0xe3, 0x6f, 0xac, 0xb8, 0x98, 0xbc, 0x01, 0x63, 0xfc, 0x7f, 0xbe, - 0xda, 0xc4, 0x80, 0xe3, 0x5d, 0x95, 0x40, 0xe7, 0xab, 0xd3, 0xd2, 0xd0, 0x98, 0x65, 0x26, 0x3f, - 0x85, 0xc7, 0x5a, 0x54, 0x48, 0x2c, 0x33, 0xf9, 0xd5, 0x3c, 0x6c, 0x93, 0x8a, 0x44, 0xae, 0x41, - 0xbe, 0x3a, 0x6f, 0xa9, 0x49, 0x6a, 0x9d, 0x46, 0xc0, 0x93, 0x3c, 0xeb, 0xdf, 0xf7, 0x9f, 0xb7, - 0xc8, 0x1c, 0x14, 0xf1, 0xfb, 0x03, 0x2e, 0x0d, 0x44, 0x1a, 0x08, 0x5c, 0x35, 0x1d, 0x01, 0x53, - 0xdf, 0x06, 0x25, 0x1e, 0xb9, 0x01, 0x23, 0x0b, 0x5e, 0xd8, 0x69, 0x3a, 0xfb, 0x22, 0xeb, 0x03, - 0x3e, 0x86, 0xb8, 0x1c, 0xa4, 0xae, 0x33, 0x81, 0x45, 0xae, 0xc2, 0x50, 0xbd, 0xe1, 0x77, 0x98, - 0xb5, 0x15, 0xbb, 0xe8, 0x84, 0x0c, 0xa0, 0x85, 0x8e, 0x33, 0x00, 0xc6, 0x74, 0xf2, 0xd0, 0x94, - 0x92, 0x12, 0xd3, 0x99, 0x0e, 0x49, 0x11, 0x38, 0xbd, 0x7e, 0x8c, 0xf0, 0x34, 0xfd, 0x18, 0xb7, - 0xe1, 0xfc, 0x1d, 0x54, 0xf5, 0xeb, 0x34, 0xc0, 0xb4, 0x7c, 0xfc, 0xcb, 0x24, 0x1b, 0xd6, 0x92, - 0x08, 0xc7, 0xb9, 0x72, 0x78, 0x50, 0x79, 0x81, 0x5b, 0x03, 0x76, 0xc8, 0x71, 0xe4, 0x47, 0x4d, - 0x52, 0x09, 0xdc, 0xfb, 0x31, 0x22, 0x5f, 0x80, 0xb3, 0x59, 0x45, 0x22, 0x30, 0x07, 0x9d, 0x92, - 0xb3, 0x2b, 0x50, 0xbd, 0x82, 0xb3, 0x38, 0x90, 0x65, 0x28, 0x73, 0x78, 0xd5, 0x6d, 0x79, 0xed, - 0xc5, 0x96, 0xe3, 0x35, 0x31, 0x4c, 0x47, 0xc4, 0x5a, 0x09, 0xae, 0x0e, 0x2b, 0xb4, 0x29, 0x2b, - 0xd5, 0xbc, 0xac, 0x52, 0x94, 0x28, 0x8e, 0xea, 0xd5, 0xfb, 0xcb, 0xc9, 0x9e, 0xfa, 0x64, 0xbd, - 0x1b, 0x69, 0x7d, 0x3b, 0xe2, 0xdd, 0x68, 0x03, 0xa6, 0x53, 0xc3, 0x20, 0xc5, 0x91, 0x06, 0x4e, - 0x8b, 0xa3, 0x14, 0x8d, 0x95, 0xc2, 0x36, 0xff, 0xf3, 0x70, 0x8a, 0xaf, 0xb8, 0x2b, 0x32, 0x61, - 0x98, 0x4b, 0x1b, 0x35, 0x2d, 0x14, 0x97, 0x45, 0x96, 0x28, 0x21, 0x17, 0x20, 0x5f, 0xaf, 0xaf, - 0xaa, 0x49, 0xeb, 0xc2, 0xd0, 0xb7, 0x18, 0x8c, 0xcd, 0x10, 0x5e, 0x03, 0xe5, 0x93, 0x19, 0x6a, - 0xd0, 0x20, 0x12, 0xdf, 0x4a, 0x7c, 0x31, 0xd9, 0xc7, 0x85, 0x64, 0xbc, 0xc5, 0x3e, 0x4e, 0x76, - 0xef, 0x3c, 0xcc, 0x56, 0xc3, 0x90, 0x06, 0x11, 0xcf, 0x91, 0x1d, 0x76, 0x5b, 0x34, 0x10, 0x6b, - 0x4d, 0xc8, 0x18, 0xfe, 0xa5, 0xe5, 0x46, 0x68, 0xf5, 0x45, 0x24, 0x57, 0xa0, 0x58, 0xed, 0xba, - 0x1e, 0x6d, 0x37, 0xa8, 0x90, 0x33, 0x78, 0x19, 0xec, 0x08, 0x98, 0x15, 0x97, 0x92, 0x0f, 0x61, - 0x46, 0x10, 0x49, 0x81, 0x23, 0x46, 0x80, 0xcb, 0x1a, 0x6e, 0xc1, 0x8a, 0xbd, 0x20, 0xc5, 0x94, - 0x2d, 0x86, 0x24, 0x9b, 0x92, 0x54, 0xa1, 0xbc, 0x88, 0xef, 0xa4, 0xf2, 0x8b, 0xa9, 0x7e, 0x20, - 0x72, 0xa1, 0xa2, 0xe4, 0xe2, 0x6f, 0xa8, 0xb6, 0x1b, 0x17, 0x5a, 0x3d, 0xe8, 0xe4, 0x1e, 0x4c, - 0xa7, 0x61, 0x4c, 0x1e, 0x97, 0x92, 0x2f, 0x1a, 0xf5, 0x70, 0x41, 0xc1, 0x9c, 0x45, 0x45, 0xb6, - 0x61, 0xaa, 0x1a, 0x45, 0x81, 0xb7, 0xdd, 0x8d, 0x68, 0x4a, 0x74, 0xc9, 0x8b, 0xc6, 0xb8, 0x5c, - 0x8a, 0xaf, 0x67, 0xc4, 0x62, 0x9c, 0x76, 0x62, 0xca, 0x58, 0x84, 0x59, 0xbd, 0xec, 0x88, 0x1b, - 0x7f, 0x14, 0x4d, 0x7c, 0x38, 0x4c, 0xc4, 0xb3, 0xc8, 0x0b, 0xdd, 0x6a, 0xb8, 0xdf, 0x6a, 0xd1, - 0x28, 0xc0, 0x77, 0x76, 0xfc, 0xb0, 0x98, 0x29, 0x7c, 0x99, 0x2e, 0x2a, 0xdf, 0x02, 0xc4, 0x8f, - 0xc7, 0x69, 0x6e, 0x9e, 0x1a, 0x4f, 0xed, 0xf8, 0x18, 0x1b, 0xf0, 0xf8, 0x68, 0xc2, 0xd4, 0x62, - 0xbb, 0x11, 0xec, 0x63, 0x5c, 0x9a, 0x6c, 0xdc, 0xf8, 0x31, 0x8d, 0x93, 0xdf, 0x19, 0xb8, 0xe4, - 0xc8, 0x15, 0x96, 0xd5, 0xbc, 0x5e, 0xc6, 0xe6, 0xff, 0x07, 0xe5, 0xf4, 0x58, 0x3e, 0xe1, 0x97, - 0x60, 0x4f, 0xe2, 0x62, 0xce, 0x66, 0x3a, 0xdd, 0x17, 0x72, 0x43, 0xfb, 0xdc, 0xa7, 0x91, 0x84, - 0xfd, 0x2a, 0x1f, 0xe6, 0xd4, 0x3e, 0xf2, 0x29, 0xb7, 0x71, 0x2e, 0x6b, 0x1b, 0x9b, 0xbf, 0x9d, - 0x83, 0x29, 0xee, 0x15, 0x7b, 0xfa, 0x75, 0xc5, 0xf7, 0x34, 0xe1, 0x2c, 0xef, 0x02, 0x53, 0xbd, - 0x3b, 0x42, 0x5b, 0xfc, 0x2a, 0xcc, 0xf4, 0x0c, 0x05, 0x0a, 0xe8, 0x05, 0xe9, 0x8f, 0xdc, 0x23, - 0xa2, 0x67, 0xb3, 0x2b, 0xd9, 0xbc, 0x65, 0xf5, 0x50, 0x98, 0xff, 0x2c, 0xd7, 0xc3, 0x5f, 0xe8, - 0x8d, 0xaa, 0x26, 0x68, 0x9c, 0x4c, 0x13, 0xcc, 0x7d, 0x24, 0x4d, 0x30, 0x3f, 0x88, 0x26, 0xf8, - 0x21, 0x8c, 0xaf, 0x53, 0x87, 0x69, 0x34, 0x22, 0xd6, 0xa9, 0xa0, 0x7d, 0x8a, 0x93, 0x95, 0x49, - 0xf9, 0x12, 0xc7, 0x49, 0x46, 0x8c, 0x80, 0x89, 0x16, 0x1e, 0xfc, 0x64, 0xe9, 0x1c, 0xd4, 0x43, - 0x63, 0xa8, 0xff, 0xa1, 0x61, 0x7e, 0x3b, 0x07, 0xa3, 0x0a, 0x7b, 0xf2, 0x3a, 0x8c, 0xad, 0x06, - 0x3b, 0x4e, 0xdb, 0xfb, 0x35, 0x47, 0xb9, 0x7e, 0xc5, 0xe6, 0xfb, 0x0a, 0xdc, 0xd2, 0xb0, 0xd0, - 0x6d, 0x86, 0x3a, 0x2d, 0x75, 0xe1, 0xb3, 0xe6, 0x59, 0x08, 0x55, 0x62, 0x55, 0xf3, 0x03, 0xc4, - 0xaa, 0xea, 0x81, 0x9e, 0x85, 0x93, 0x07, 0x7a, 0x6a, 0x71, 0x99, 0x43, 0x27, 0x8c, 0xcb, 0x34, - 0x7f, 0x37, 0x07, 0x65, 0xf1, 0xd1, 0x4a, 0x79, 0x79, 0xf8, 0xc9, 0x4a, 0x8b, 0xaf, 0x77, 0xee, - 0x88, 0xe7, 0xb1, 0xc2, 0x0f, 0xfe, 0xb0, 0x82, 0x9f, 0x20, 0x4c, 0x0f, 0x87, 0xfc, 0x04, 0xa1, - 0x0e, 0x4f, 0x47, 0x40, 0xa4, 0xa9, 0xac, 0x34, 0xbe, 0xf9, 0x93, 0x5c, 0x9a, 0xb7, 0xd0, 0xa6, - 0x5e, 0x84, 0x11, 0xfe, 0x95, 0x22, 0xe9, 0xa4, 0x2d, 0x92, 0xe3, 0x20, 0xc8, 0x92, 0x65, 0x27, - 0x89, 0x85, 0x39, 0xee, 0x3b, 0x94, 0xe4, 0x4d, 0x18, 0x43, 0x7f, 0x91, 0xaa, 0xeb, 0x06, 0x34, - 0x0c, 0x85, 0xa2, 0x85, 0x6f, 0x77, 0x8f, 0xe8, 0xb6, 0xcd, 0xfd, 0x4a, 0x1c, 0xd7, 0x0d, 0x2c, - 0x0d, 0x8f, 0xcc, 0xc3, 0x59, 0xcd, 0x3d, 0x49, 0xd2, 0x0f, 0x25, 0xa7, 0x45, 0x84, 0x05, 0x9c, - 0x38, 0x13, 0xf9, 0xe9, 0x7d, 0x83, 0xd7, 0xfc, 0x5f, 0x06, 0xdb, 0x6b, 0x8d, 0xbd, 0x4f, 0x58, - 0x94, 0x0e, 0xeb, 0xd2, 0x11, 0xca, 0xfe, 0x5f, 0x18, 0xdc, 0xcf, 0x5e, 0x2c, 0x9f, 0xb7, 0x60, - 0x98, 0x7f, 0x13, 0x49, 0x78, 0x84, 0xab, 0x5c, 0x78, 0x41, 0xf2, 0x3e, 0xc5, 0xbf, 0xac, 0x64, - 0x09, 0x02, 0x66, 0x32, 0xeb, 0xee, 0xfe, 0xa8, 0x78, 0xf6, 0xfa, 0xf9, 0x4b, 0x2c, 0x35, 0xf1, - 0xe3, 0x60, 0x09, 0x85, 0x8d, 0xe3, 0x13, 0x3f, 0x9a, 0xff, 0x27, 0xc7, 0xfb, 0x23, 0x1a, 0x35, - 0x68, 0x46, 0xb3, 0x97, 0xa0, 0x80, 0xdf, 0xd2, 0x54, 0xd2, 0xc6, 0xa5, 0xbe, 0xa3, 0x89, 0xe5, - 0x6c, 0xdf, 0xa0, 0xac, 0x55, 0x03, 0xc3, 0x50, 0x1c, 0xab, 0xfb, 0x06, 0x31, 0x30, 0x5d, 0xaf, - 0xef, 0x52, 0x75, 0x3b, 0xb4, 0xf5, 0xcc, 0xca, 0x58, 0x4e, 0xde, 0x54, 0xbc, 0x90, 0xd5, 0x0b, - 0x8d, 0xd6, 0x03, 0xc7, 0xe6, 0xde, 0xaf, 0xaa, 0xb4, 0x4d, 0x1c, 0x96, 0x17, 0x61, 0x42, 0x0f, - 0x95, 0x15, 0x46, 0x07, 0x46, 0x1c, 0xa7, 0xc2, 0x6c, 0x55, 0xf5, 0x56, 0x27, 0x22, 0x35, 0x18, - 0xd7, 0x02, 0x6b, 0xd5, 0x2c, 0x97, 0x3c, 0xfd, 0x86, 0xdd, 0x1b, 0xc8, 0xaf, 0x93, 0x28, 0x17, - 0xe6, 0xaf, 0x41, 0x59, 0xec, 0xcc, 0x38, 0x46, 0x0f, 0x55, 0xbb, 0xa5, 0x05, 0x4b, 0xdd, 0x4d, - 0x0d, 0xcf, 0x0d, 0x2c, 0x84, 0x9a, 0xdf, 0x33, 0xe0, 0x82, 0xf8, 0xd6, 0x93, 0x45, 0x43, 0xa6, - 0x43, 0x62, 0x60, 0x9f, 0x48, 0x11, 0xf4, 0x8e, 0xcc, 0xec, 0xa3, 0x0b, 0xc8, 0x74, 0x1d, 0xb5, - 0x71, 0xb1, 0x28, 0x87, 0x30, 0xb7, 0x8f, 0xcc, 0xe8, 0xf3, 0x96, 0xc8, 0xe8, 0x93, 0x3b, 0x9a, - 0x38, 0xde, 0x17, 0x2e, 0x6d, 0xcb, 0x4c, 0x3e, 0xdf, 0xcd, 0xc1, 0x4c, 0x46, 0xb3, 0x4e, 0x6d, - 0xe6, 0xa6, 0x9a, 0x26, 0x1c, 0x64, 0xca, 0xb7, 0xbe, 0x03, 0x9f, 0x29, 0x2b, 0xfe, 0xc0, 0x80, - 0xf3, 0xfa, 0xea, 0x11, 0xb6, 0xe8, 0xe6, 0x2d, 0xf2, 0x36, 0x0c, 0xdf, 0xa5, 0x8e, 0x4b, 0x65, - 0x28, 0x49, 0x9c, 0x3e, 0x49, 0xdc, 0x0e, 0xf3, 0x42, 0xce, 0xf6, 0x27, 0x7c, 0x2b, 0x9f, 0xb1, - 0x04, 0x09, 0x59, 0x10, 0x8d, 0xe3, 0xcf, 0x53, 0xa6, 0x7c, 0xa9, 0xc9, 0xaa, 0xea, 0x08, 0xc5, - 0xf8, 0x1b, 0xf0, 0xcc, 0x11, 0x24, 0x6c, 0xde, 0xd8, 0xcc, 0xab, 0xf3, 0x86, 0xe7, 0x0a, 0x42, - 0xc9, 0x7b, 0x30, 0xb9, 0x2e, 0x02, 0xde, 0xe4, 0x6c, 0x28, 0xd9, 0xb3, 0x65, 0x2c, 0x9c, 0x2d, - 0xa7, 0x25, 0x8d, 0x8c, 0xe1, 0x5b, 0x7a, 0xed, 0x4f, 0x3a, 0x28, 0xef, 0x6a, 0x83, 0xf2, 0x4c, - 0xf6, 0xa0, 0xf4, 0x1f, 0x8d, 0x9e, 0x54, 0x00, 0x03, 0x0d, 0x83, 0x09, 0xc3, 0x0b, 0x7e, 0xcb, - 0xf1, 0x64, 0xef, 0xf1, 0x32, 0xc6, 0x45, 0x88, 0x25, 0x4a, 0xcc, 0xff, 0x50, 0x80, 0x0b, 0x3c, - 0x10, 0x84, 0x06, 0x1b, 0xa1, 0xd7, 0xde, 0xd1, 0x1e, 0x6a, 0xd0, 0x3d, 0x4d, 0xc9, 0xe3, 0x2c, - 0xdc, 0xd3, 0x18, 0xc4, 0x12, 0x25, 0xcc, 0x92, 0x60, 0xa2, 0x4f, 0xf1, 0xf4, 0x43, 0x4b, 0x02, - 0xb3, 0xa0, 0xa0, 0x95, 0x1a, 0x17, 0x93, 0x6b, 0x42, 0x30, 0x2b, 0x0e, 0xc4, 0x4c, 0x30, 0xa7, - 0xbe, 0x35, 0xcc, 0x85, 0x73, 0xac, 0xa9, 0x14, 0xfa, 0x68, 0x2a, 0xf7, 0xe1, 0x6c, 0xf2, 0x79, - 0xf5, 0xb5, 0xc0, 0x6b, 0x37, 0xbc, 0x8e, 0xd3, 0x94, 0x9a, 0x2e, 0xff, 0xf2, 0x72, 0xf2, 0x85, - 0xf6, 0x4e, 0x8c, 0x60, 0x65, 0x92, 0xb1, 0x6e, 0x2c, 0xac, 0xd4, 0x79, 0x92, 0x8b, 0x61, 0x64, - 0x81, 0xdd, 0x70, 0xdb, 0x21, 0xcf, 0x72, 0x61, 0xc5, 0xc5, 0xa8, 0x23, 0xa1, 0xc7, 0x3f, 0xff, - 0x3a, 0x3a, 0x0a, 0x59, 0xe9, 0xdf, 0xc4, 0x03, 0x04, 0xc4, 0x17, 0xfd, 0x2d, 0x0d, 0x2f, 0xa1, - 0xe3, 0x5f, 0x63, 0xc7, 0x2b, 0x1d, 0x9d, 0x2e, 0x0c, 0x77, 0x55, 0x3a, 0x8e, 0xc7, 0xec, 0x6f, - 0xee, 0x21, 0x82, 0x73, 0x5d, 0x4a, 0x34, 0x2a, 0xfe, 0x79, 0x74, 0xae, 0x51, 0x29, 0x28, 0xe4, - 0x1d, 0x98, 0x5e, 0x9c, 0x9f, 0x93, 0xce, 0xf6, 0x0b, 0x7e, 0xa3, 0xdb, 0xa2, 0xed, 0x08, 0x43, - 0x35, 0x44, 0xac, 0x13, 0x6d, 0xcc, 0x31, 0x23, 0x2f, 0x0b, 0x8d, 0xbc, 0x01, 0xa4, 0xbe, 0x5e, - 0x97, 0x60, 0x79, 0x92, 0x8c, 0x22, 0xb1, 0x48, 0x96, 0x93, 0x81, 0x20, 0x3c, 0xf5, 0x79, 0xbc, - 0xda, 0xbc, 0xef, 0xd2, 0x70, 0xf3, 0xe6, 0x27, 0xcc, 0x53, 0x5f, 0xe9, 0x1b, 0xee, 0xbf, 0x9b, - 0x99, 0x7b, 0xf5, 0x1f, 0xa0, 0xa7, 0x7e, 0x0f, 0x2e, 0xf9, 0x2c, 0x0c, 0xe1, 0x4f, 0x71, 0xfa, - 0x4d, 0x67, 0xb0, 0x4d, 0x4e, 0xbe, 0x06, 0xc3, 0xb4, 0x38, 0x01, 0x59, 0x4a, 0x32, 0x75, 0x9f, - 0xc0, 0xdf, 0x54, 0x04, 0xbd, 0xea, 0x9f, 0x68, 0x70, 0x61, 0x4c, 0xad, 0x90, 0x2d, 0xad, 0xbb, - 0x4e, 0xb8, 0x4b, 0xdd, 0x79, 0xf9, 0x49, 0xb6, 0x31, 0xbe, 0xb4, 0x76, 0x11, 0x8a, 0x9f, 0x8f, - 0xb0, 0x14, 0x14, 0xf2, 0x3c, 0x0c, 0x2f, 0x85, 0x1b, 0xa1, 0x68, 0x8a, 0xb0, 0x48, 0x3c, 0xb4, - 0x24, 0x5d, 0x4b, 0x14, 0x5d, 0x7b, 0x1f, 0x26, 0x65, 0x2a, 0x97, 0xf5, 0xe5, 0x3a, 0x7e, 0x14, - 0x69, 0x12, 0x46, 0x37, 0x17, 0xad, 0xa5, 0xdb, 0x5f, 0xb4, 0x6f, 0x6f, 0x2c, 0x2f, 0x97, 0xcf, - 0x90, 0x71, 0x28, 0x09, 0xc0, 0x7c, 0xb5, 0x6c, 0x90, 0x31, 0x28, 0x2e, 0xad, 0xd4, 0x17, 0xe7, - 0x37, 0xac, 0xc5, 0x72, 0xee, 0xda, 0x8b, 0x30, 0x91, 0x5c, 0x27, 0x61, 0xc8, 0xc9, 0x08, 0xe4, - 0xad, 0xea, 0x56, 0xf9, 0x0c, 0x01, 0x18, 0x5e, 0xbb, 0x37, 0x5f, 0xbf, 0x79, 0xb3, 0x6c, 0x5c, - 0x7b, 0x2d, 0xe3, 0x93, 0x82, 0x8c, 0x53, 0x9d, 0x76, 0x9c, 0xc0, 0x89, 0x28, 0xaf, 0xe6, 0x7e, - 0xb7, 0x19, 0x79, 0x9d, 0x26, 0x7d, 0x5c, 0x36, 0xae, 0xbd, 0xd5, 0xf3, 0x65, 0x40, 0x32, 0x03, - 0x53, 0x1b, 0x2b, 0xd5, 0xfb, 0xb5, 0xa5, 0x3b, 0x1b, 0xab, 0x1b, 0x75, 0xfb, 0x7e, 0x75, 0x7d, - 0xfe, 0x6e, 0xf9, 0x0c, 0x6b, 0xf0, 0xfd, 0xd5, 0xfa, 0xba, 0x6d, 0x2d, 0xce, 0x2f, 0xae, 0xac, - 0x97, 0x8d, 0x6b, 0x3e, 0x4c, 0xe8, 0x1f, 0x4f, 0x21, 0x97, 0xe1, 0xd2, 0x46, 0x7d, 0xd1, 0xb2, - 0xd7, 0x57, 0xef, 0x2d, 0xae, 0xd8, 0x1b, 0xf5, 0xea, 0x9d, 0x45, 0x7b, 0x63, 0xa5, 0xbe, 0xb6, - 0x38, 0xbf, 0x74, 0x7b, 0x69, 0x71, 0xa1, 0x7c, 0x86, 0x54, 0xe0, 0x19, 0x05, 0xc3, 0x5a, 0x9c, - 0x5f, 0xdd, 0x5c, 0xb4, 0xec, 0xb5, 0x6a, 0xbd, 0xbe, 0xb5, 0x6a, 0x2d, 0x94, 0x0d, 0x72, 0x11, - 0xce, 0x65, 0x20, 0xdc, 0xbf, 0x5d, 0x2d, 0xe7, 0xae, 0xbd, 0xcf, 0xe6, 0x2a, 0xc9, 0x60, 0x4c, - 0x8a, 0x50, 0x58, 0x59, 0x5d, 0x59, 0x2c, 0x9f, 0x21, 0xa3, 0x30, 0xb2, 0xb6, 0xb8, 0xb2, 0xb0, - 0xb4, 0x72, 0x87, 0x8f, 0x5c, 0x75, 0x6d, 0xcd, 0x5a, 0xdd, 0x5c, 0x5c, 0x28, 0xe7, 0xd8, 0xf0, - 0x2c, 0x2c, 0xae, 0xb0, 0xda, 0xf3, 0xb5, 0xf2, 0x8f, 0x7f, 0xfa, 0xdc, 0x99, 0x1f, 0xff, 0xec, - 0x39, 0xe3, 0x27, 0x3f, 0x7b, 0xce, 0xf8, 0xef, 0x3f, 0x7b, 0xce, 0xd8, 0x1e, 0xc6, 0x05, 0x73, - 0xeb, 0xff, 0x05, 0x00, 0x00, 0xff, 0xff, 0xc0, 0x8f, 0xbd, 0x12, 0xf1, 0xa9, 0x00, 0x00, + // 10808 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xdc, 0xbd, 0x6b, 0x6c, 0x24, 0xd9, + 0x75, 0x18, 0x3c, 0xd5, 0xdd, 0x6c, 0x76, 0x1f, 0xbe, 0x9a, 0x77, 0x5e, 0x9c, 0xd9, 0xd9, 0xed, + 0x51, 0xed, 0x6b, 0x66, 0xb4, 0x3b, 0xb3, 0xc3, 0xd9, 0x5d, 0x69, 0xb5, 0x2f, 0x75, 0x93, 0x9c, + 0x19, 0xee, 0x70, 0x48, 0x6e, 0x35, 0x1f, 0x7a, 0xba, 0x5c, 0xec, 0xba, 0x43, 0x96, 0xd8, 0xdd, + 0xd5, 0xaa, 0xaa, 0x9e, 0x19, 0x5a, 0x9f, 0x61, 0x7f, 0x09, 0x64, 0xc1, 0x30, 0x2c, 0x45, 0x81, + 0x0c, 0xc9, 0x81, 0x93, 0x18, 0x42, 0x82, 0x3c, 0x0c, 0x25, 0x80, 0x1d, 0x20, 0x08, 0x90, 0xfc, + 0x30, 0x60, 0x38, 0xfa, 0x11, 0x23, 0xfa, 0x17, 0xc4, 0x09, 0x98, 0x48, 0xce, 0x1f, 0x13, 0xc8, + 0xaf, 0xfc, 0xb2, 0x12, 0x21, 0xc1, 0x3d, 0xf7, 0xde, 0xaa, 0x7b, 0xab, 0xab, 0xc9, 0xe6, 0xce, + 0x2c, 0x20, 0xee, 0x2f, 0xb2, 0xcf, 0x3d, 0xe7, 0xdc, 0xf7, 0xb9, 0xe7, 0xdc, 0x7b, 0xce, 0x29, + 0x18, 0x8b, 0xf6, 0xba, 0x34, 0xbc, 0xde, 0x0d, 0xfc, 0xc8, 0x27, 0x23, 0xf8, 0xe3, 0xe2, 0x99, + 0x6d, 0x7f, 0xdb, 0x47, 0xc8, 0x0d, 0xf6, 0x1f, 0x2f, 0xbc, 0x58, 0xdd, 0xf6, 0xfd, 0xed, 0x16, + 0xbd, 0x81, 0xbf, 0xb6, 0x7a, 0x0f, 0x6e, 0x44, 0x5e, 0x9b, 0x86, 0x91, 0xd3, 0xee, 0x0a, 0x84, + 0xb9, 0x6d, 0x2f, 0xda, 0xe9, 0x6d, 0x5d, 0x6f, 0xfa, 0xed, 0x1b, 0xdb, 0x81, 0xf3, 0xd0, 0x8b, + 0x9c, 0xc8, 0xf3, 0x3b, 0x4e, 0xeb, 0x46, 0x44, 0x5b, 0xb4, 0xeb, 0x07, 0xd1, 0x0d, 0xa7, 0xeb, + 0xdd, 0xc0, 0x3a, 0x6e, 0x3c, 0x0a, 0x9c, 0x6e, 0x97, 0x06, 0xc9, 0x3f, 0x9c, 0x89, 0xf9, 0xdd, + 0x3c, 0x94, 0xef, 0x51, 0xda, 0xad, 0xb5, 0xbc, 0x87, 0x94, 0x3c, 0x0f, 0x85, 0x65, 0xa7, 0x4d, + 0x67, 0x8c, 0xcb, 0xc6, 0x95, 0x72, 0x7d, 0xea, 0x60, 0xbf, 0x3a, 0x16, 0xd2, 0xe0, 0x21, 0x0d, + 0xec, 0x8e, 0xd3, 0xa6, 0x16, 0x16, 0x92, 0x4f, 0x43, 0x99, 0xfd, 0x0d, 0xbb, 0x4e, 0x93, 0xce, + 0xe4, 0x10, 0x73, 0xe2, 0x60, 0xbf, 0x5a, 0xee, 0x48, 0xa0, 0x95, 0x94, 0x93, 0x97, 0x60, 0x74, + 0x89, 0x3a, 0x21, 0x5d, 0x9c, 0x9f, 0xc9, 0x5f, 0x36, 0xae, 0xe4, 0xeb, 0xe3, 0x07, 0xfb, 0xd5, + 0x52, 0x8b, 0x81, 0x6c, 0xcf, 0xb5, 0x64, 0x21, 0x59, 0x84, 0xd1, 0x85, 0xc7, 0x5d, 0x2f, 0xa0, + 0xe1, 0x4c, 0xe1, 0xb2, 0x71, 0x65, 0x6c, 0xf6, 0xe2, 0x75, 0xde, 0xff, 0xeb, 0xb2, 0xff, 0xd7, + 0xd7, 0x64, 0xff, 0xeb, 0xa7, 0x7f, 0xbc, 0x5f, 0x3d, 0x75, 0xb0, 0x5f, 0x1d, 0xa5, 0x9c, 0xe4, + 0xef, 0xfc, 0xb7, 0xaa, 0x61, 0x49, 0x7a, 0xf2, 0x0e, 0x14, 0xd6, 0xf6, 0xba, 0x74, 0xa6, 0x7c, + 0xd9, 0xb8, 0x32, 0x39, 0xfb, 0xdc, 0x75, 0x3e, 0xe2, 0x71, 0x27, 0x93, 0xff, 0x18, 0x56, 0xbd, + 0x74, 0xb0, 0x5f, 0x2d, 0x30, 0x14, 0x0b, 0xa9, 0xc8, 0xab, 0x50, 0xbc, 0xeb, 0x87, 0xd1, 0xe2, + 0xfc, 0x0c, 0x60, 0xd7, 0xce, 0x1e, 0xec, 0x57, 0xa7, 0x77, 0xfc, 0x30, 0xb2, 0x3d, 0xf7, 0x15, + 0xbf, 0xed, 0x45, 0xb4, 0xdd, 0x8d, 0xf6, 0x2c, 0x81, 0x64, 0x5a, 0x30, 0xa1, 0xf1, 0x23, 0x63, + 0x30, 0xba, 0xbe, 0x7c, 0x6f, 0x79, 0x65, 0x73, 0xb9, 0x72, 0x8a, 0x94, 0xa0, 0xb0, 0xbc, 0x32, + 0xbf, 0x50, 0x31, 0xc8, 0x28, 0xe4, 0x6b, 0xab, 0xab, 0x95, 0x1c, 0x19, 0x87, 0xd2, 0x7c, 0x6d, + 0xad, 0x56, 0xaf, 0x35, 0x16, 0x2a, 0x79, 0x72, 0x1a, 0xa6, 0x36, 0x17, 0x97, 0xe7, 0x57, 0x36, + 0x1b, 0xf6, 0xfc, 0x42, 0xe3, 0xde, 0xda, 0xca, 0x6a, 0xa5, 0x60, 0x7e, 0x2b, 0x0f, 0xa5, 0xfb, + 0x34, 0x72, 0x5c, 0x27, 0x72, 0xc8, 0x25, 0x6d, 0x4a, 0xb0, 0xb5, 0xca, 0x5c, 0x3c, 0xdf, 0x3f, + 0x17, 0x23, 0x07, 0xfb, 0x55, 0xe3, 0x55, 0x75, 0x0e, 0xde, 0x86, 0xb1, 0x79, 0x1a, 0x36, 0x03, + 0xaf, 0xcb, 0xd6, 0x07, 0xce, 0x43, 0xb9, 0x7e, 0xe1, 0x60, 0xbf, 0x7a, 0xd6, 0x4d, 0xc0, 0x4a, + 0xdf, 0x54, 0x6c, 0xb2, 0x08, 0xc5, 0x25, 0x67, 0x8b, 0xb6, 0xc2, 0x99, 0x91, 0xcb, 0xf9, 0x2b, + 0x63, 0xb3, 0xcf, 0x88, 0xf1, 0x94, 0x0d, 0xbc, 0xce, 0x4b, 0x17, 0x3a, 0x51, 0xb0, 0x57, 0x3f, + 0x73, 0xb0, 0x5f, 0xad, 0xb4, 0x10, 0xa0, 0x8e, 0x15, 0x47, 0x21, 0x8d, 0x64, 0x8e, 0x8b, 0x47, + 0xce, 0xf1, 0xb3, 0x3f, 0xde, 0xaf, 0x1a, 0x6c, 0xec, 0xc5, 0x1c, 0x27, 0xfc, 0xf4, 0xd9, 0xbe, + 0x0c, 0xb9, 0xc5, 0xf9, 0x99, 0x51, 0x5c, 0x5b, 0x95, 0x83, 0xfd, 0xea, 0xb8, 0x36, 0x4d, 0xb9, + 0xc5, 0xf9, 0x8b, 0x6f, 0xc1, 0x98, 0xd2, 0x46, 0x52, 0x81, 0xfc, 0x2e, 0xdd, 0xe3, 0xe3, 0x69, + 0xb1, 0x7f, 0xc9, 0x19, 0x18, 0x79, 0xe8, 0xb4, 0x7a, 0x62, 0x00, 0x2d, 0xfe, 0xe3, 0x73, 0xb9, + 0xcf, 0x1a, 0xe6, 0xdf, 0x2d, 0x40, 0xc9, 0xf2, 0xf9, 0xbe, 0x22, 0x57, 0x61, 0xa4, 0x11, 0x39, + 0x91, 0x9c, 0x8a, 0xd3, 0x07, 0xfb, 0xd5, 0xa9, 0x90, 0x01, 0x94, 0xfa, 0x38, 0x06, 0x43, 0x5d, + 0xdd, 0x71, 0x42, 0x39, 0x25, 0x88, 0xda, 0x65, 0x00, 0x15, 0x15, 0x31, 0xc8, 0x4b, 0x50, 0xb8, + 0xef, 0xbb, 0x54, 0xcc, 0x0a, 0x39, 0xd8, 0xaf, 0x4e, 0xb6, 0x7d, 0x57, 0x45, 0xc4, 0x72, 0xf2, + 0x0a, 0x94, 0xe7, 0x7a, 0x41, 0x40, 0x3b, 0x6c, 0x69, 0x16, 0x10, 0x79, 0xf2, 0x60, 0xbf, 0x0a, + 0x4d, 0x0e, 0x64, 0x9b, 0x29, 0x41, 0x60, 0x43, 0xdd, 0x88, 0x9c, 0x20, 0xa2, 0xee, 0xcc, 0xc8, + 0x50, 0x43, 0xcd, 0xb6, 0xd3, 0x74, 0xc8, 0x49, 0xd2, 0x43, 0x2d, 0x38, 0x91, 0xbb, 0x30, 0x76, + 0x27, 0x70, 0x9a, 0x74, 0x95, 0x06, 0x9e, 0xef, 0xe2, 0x1c, 0xe6, 0xeb, 0x2f, 0x1d, 0xec, 0x57, + 0xcf, 0x6d, 0x33, 0xb0, 0xdd, 0x45, 0x78, 0x42, 0xfd, 0xf3, 0xfd, 0x6a, 0x69, 0xbe, 0x17, 0xe0, + 0xe8, 0x59, 0x2a, 0x29, 0xf9, 0x55, 0x36, 0x25, 0x61, 0x84, 0x43, 0x4b, 0x5d, 0x9c, 0xbd, 0xc3, + 0x9b, 0x68, 0x8a, 0x26, 0x9e, 0x6b, 0x39, 0x61, 0x64, 0x07, 0x9c, 0x2e, 0xd5, 0x4e, 0x95, 0x25, + 0x59, 0x81, 0x52, 0xa3, 0xb9, 0x43, 0xdd, 0x5e, 0x8b, 0xce, 0x94, 0x90, 0xfd, 0x79, 0xb1, 0x70, + 0xe5, 0x7c, 0xca, 0xe2, 0xfa, 0x45, 0xc1, 0x9b, 0x84, 0x02, 0xa2, 0x8c, 0x7d, 0xcc, 0xe4, 0x73, + 0xa5, 0x1f, 0xfc, 0x61, 0xf5, 0xd4, 0x6f, 0xfe, 0xd7, 0xcb, 0xa7, 0xcc, 0x7f, 0x9d, 0x83, 0x4a, + 0x9a, 0x09, 0x79, 0x00, 0x13, 0xeb, 0x5d, 0xd7, 0x89, 0xe8, 0x5c, 0xcb, 0xa3, 0x9d, 0x28, 0xc4, + 0x45, 0x72, 0x78, 0x9f, 0x5e, 0x10, 0xf5, 0xce, 0xf4, 0x90, 0xd0, 0x6e, 0x72, 0xca, 0x54, 0xaf, + 0x74, 0xb6, 0x49, 0x3d, 0x0d, 0x94, 0xcb, 0x21, 0xae, 0xb0, 0xe3, 0xd5, 0xc3, 0x25, 0xfa, 0x80, + 0x7a, 0x04, 0x5b, 0xb1, 0x80, 0x3a, 0xee, 0xd6, 0x1e, 0xae, 0xcc, 0xe1, 0x17, 0x10, 0x23, 0xc9, + 0x58, 0x40, 0x0c, 0x6c, 0xfe, 0x0f, 0x03, 0x26, 0x2d, 0x1a, 0xfa, 0xbd, 0xa0, 0x49, 0xef, 0x52, + 0xc7, 0xa5, 0x01, 0x5b, 0xfe, 0xf7, 0xbc, 0x8e, 0x2b, 0xf6, 0x14, 0x2e, 0xff, 0x5d, 0xaf, 0xa3, + 0x6e, 0x61, 0x2c, 0x27, 0xaf, 0xc1, 0x68, 0xa3, 0xb7, 0x85, 0xa8, 0x7c, 0x4f, 0x9d, 0xc3, 0x19, + 0xeb, 0x6d, 0xd9, 0x29, 0x74, 0x89, 0x46, 0x6e, 0xc0, 0xe8, 0x06, 0x0d, 0xc2, 0x44, 0xe2, 0xa1, + 0x24, 0x7f, 0xc8, 0x41, 0x2a, 0x81, 0xc0, 0x22, 0x77, 0x12, 0xa9, 0x2b, 0xce, 0xa0, 0xa9, 0x94, + 0xac, 0x4b, 0x96, 0x4a, 0x5b, 0x40, 0xd4, 0xa5, 0x22, 0xb1, 0xcc, 0xef, 0xe6, 0xa0, 0x32, 0xef, + 0x44, 0xce, 0x96, 0x13, 0x8a, 0xf1, 0xdc, 0xb8, 0xc5, 0xe4, 0xb8, 0xd2, 0x51, 0x94, 0xe3, 0xac, + 0xe5, 0x1f, 0xb9, 0x7b, 0x2f, 0xa6, 0xbb, 0x37, 0xc6, 0x0e, 0x44, 0xd1, 0xbd, 0xa4, 0x53, 0xef, + 0x1e, 0xdd, 0xa9, 0x8a, 0xe8, 0x54, 0x49, 0x76, 0x2a, 0xe9, 0x0a, 0x79, 0x17, 0x0a, 0x8d, 0x2e, + 0x6d, 0x0a, 0x21, 0x22, 0x65, 0xbf, 0xde, 0x39, 0x86, 0xb0, 0x71, 0xab, 0x3e, 0x2e, 0xd8, 0x14, + 0xc2, 0x2e, 0x6d, 0x5a, 0x48, 0xa6, 0x6c, 0x9a, 0xef, 0x15, 0xe1, 0x4c, 0x16, 0x19, 0x79, 0x57, + 0x3f, 0x9c, 0xf8, 0xf0, 0x3c, 0x33, 0xf0, 0x70, 0x9a, 0x31, 0xf4, 0xe3, 0xe9, 0x1a, 0x94, 0x56, + 0xd9, 0x82, 0x6c, 0xfa, 0x2d, 0x31, 0x72, 0x4c, 0x2a, 0x96, 0xba, 0x12, 0x66, 0x58, 0x71, 0x39, + 0x79, 0x06, 0xf2, 0xeb, 0xd6, 0xa2, 0x18, 0xae, 0xf2, 0xc1, 0x7e, 0x35, 0xdf, 0x0b, 0xbc, 0x19, + 0xc3, 0x62, 0x50, 0x72, 0x03, 0x8a, 0x73, 0xb5, 0x39, 0x1a, 0x44, 0x38, 0x4c, 0xe3, 0xf5, 0xf3, + 0x6c, 0xb5, 0x34, 0x1d, 0xbb, 0x49, 0x83, 0x48, 0xab, 0x5e, 0xa0, 0x91, 0x4f, 0x43, 0xbe, 0xb6, + 0xd9, 0x10, 0x23, 0x03, 0x62, 0x64, 0x6a, 0x9b, 0x8d, 0xfa, 0x84, 0x18, 0x88, 0xbc, 0xf3, 0x28, + 0x64, 0xdc, 0x6b, 0x9b, 0x0d, 0x75, 0xb6, 0x8a, 0x87, 0xcc, 0xd6, 0x15, 0x28, 0x31, 0xbd, 0x82, + 0x1d, 0xf0, 0x28, 0x14, 0xcb, 0x5c, 0x5d, 0xda, 0x11, 0x30, 0x2b, 0x2e, 0x25, 0xcf, 0xc7, 0x6a, + 0x4a, 0x29, 0xe1, 0x27, 0xd4, 0x14, 0xa9, 0x9c, 0x90, 0xc7, 0x30, 0x31, 0xbf, 0xd7, 0x71, 0xda, + 0x5e, 0x53, 0x1c, 0xe1, 0x65, 0x3c, 0xc2, 0xaf, 0x1f, 0x32, 0x8d, 0xd7, 0x35, 0x02, 0x7e, 0xaa, + 0x4b, 0xe1, 0x3b, 0xe3, 0xf2, 0x32, 0x3b, 0x7d, 0xc2, 0xcf, 0x18, 0x96, 0x5e, 0x11, 0xdb, 0x4b, + 0x52, 0x44, 0xa2, 0x1e, 0x95, 0x2c, 0x3b, 0x09, 0x4e, 0xf6, 0x52, 0x20, 0x20, 0xea, 0x5e, 0x8a, + 0x0f, 0xdd, 0x77, 0x21, 0x7f, 0x67, 0x6e, 0x75, 0x66, 0x0c, 0x79, 0x10, 0xc1, 0xe3, 0xce, 0xdc, + 0xea, 0x5c, 0xcb, 0xef, 0xb9, 0x8d, 0x0f, 0x97, 0xea, 0xe7, 0x05, 0x9b, 0x89, 0xed, 0x66, 0x57, + 0x6b, 0x11, 0xa3, 0x23, 0x0b, 0x50, 0x92, 0xbd, 0x9c, 0x19, 0x47, 0x1e, 0xd3, 0xa9, 0xce, 0x6f, + 0xdc, 0xe2, 0x7b, 0xcd, 0x15, 0xbf, 0xd5, 0x56, 0x48, 0x9c, 0x8b, 0x9b, 0x40, 0xfa, 0xc7, 0x25, + 0x43, 0x93, 0xf8, 0xb4, 0xaa, 0x49, 0x8c, 0xcd, 0x9e, 0x15, 0x75, 0xcd, 0xf9, 0xed, 0xb6, 0xd3, + 0x71, 0x91, 0x76, 0x63, 0x56, 0x55, 0x30, 0x6a, 0x30, 0x99, 0x34, 0x64, 0xc9, 0x0b, 0x23, 0x72, + 0x03, 0xca, 0x12, 0xc2, 0x0e, 0x91, 0x7c, 0x66, 0x93, 0xad, 0x04, 0xc7, 0xfc, 0xf3, 0x1c, 0x40, + 0x52, 0x72, 0x42, 0xe5, 0xcc, 0x67, 0x34, 0x39, 0x73, 0x36, 0xbd, 0x40, 0x07, 0x4a, 0x18, 0xf2, + 0x3e, 0x14, 0x99, 0xca, 0xd5, 0x93, 0x2a, 0xe5, 0xf9, 0x34, 0x29, 0x16, 0x6e, 0xdc, 0xaa, 0x4f, + 0x0a, 0xe2, 0x62, 0x88, 0x10, 0x4b, 0x90, 0x29, 0x22, 0xea, 0xdf, 0x15, 0x92, 0xc9, 0x10, 0xc2, + 0xe9, 0x8a, 0x22, 0x5d, 0x8c, 0x64, 0x3f, 0x4a, 0xe9, 0xa2, 0xc8, 0x96, 0x0b, 0x5c, 0xb6, 0xf0, + 0x41, 0x1d, 0x15, 0xb2, 0x25, 0x2d, 0x59, 0xf8, 0x00, 0x1e, 0x29, 0x59, 0xba, 0xe9, 0x6d, 0x5b, + 0xc0, 0x65, 0x70, 0x25, 0x73, 0x54, 0xb2, 0x36, 0xec, 0xe5, 0xa3, 0x36, 0x6c, 0x7a, 0xbb, 0xde, + 0x1a, 0x24, 0xcb, 0xce, 0xca, 0xdd, 0xe5, 0x3c, 0x52, 0xc9, 0x51, 0xa6, 0xbd, 0xcd, 0xb7, 0x66, + 0x71, 0xe0, 0xd6, 0x3c, 0x9b, 0xb9, 0x35, 0xf9, 0xc6, 0x7c, 0x1b, 0x46, 0x6a, 0xbf, 0xd6, 0x0b, + 0xa8, 0xd0, 0xfd, 0xc6, 0x65, 0x9d, 0x0c, 0x16, 0xef, 0xe9, 0x29, 0x87, 0xfd, 0x54, 0x75, 0x66, + 0x2c, 0x67, 0x35, 0xaf, 0x2d, 0x35, 0x84, 0x5e, 0x47, 0x52, 0xc3, 0xb2, 0xb6, 0xa4, 0x34, 0x3b, + 0xd2, 0x7a, 0xcd, 0xa8, 0x3e, 0xbe, 0xbd, 0xdc, 0x52, 0x4e, 0x7d, 0xb1, 0xea, 0x98, 0x35, 0x29, + 0xe6, 0xde, 0x48, 0x74, 0x90, 0xbe, 0xb9, 0x8f, 0x67, 0xfe, 0x2a, 0x9f, 0x87, 0x5c, 0xdf, 0x3c, + 0x8c, 0x29, 0x67, 0x0a, 0x8e, 0xbe, 0xf9, 0xd7, 0x06, 0xe2, 0x92, 0x57, 0xa0, 0x68, 0xd1, 0xed, + 0xe4, 0xe8, 0x44, 0x13, 0x2c, 0x40, 0x88, 0x5a, 0x01, 0xc7, 0x41, 0xb9, 0x4c, 0xdd, 0x70, 0xc7, + 0x7b, 0x10, 0x89, 0x5a, 0x62, 0xb9, 0x2c, 0xc0, 0x8a, 0x5c, 0x16, 0x10, 0x4d, 0x2e, 0x0b, 0x18, + 0x5b, 0x31, 0xd6, 0x7c, 0x43, 0xe8, 0x86, 0xb2, 0xa5, 0xd6, 0xbc, 0x32, 0xf4, 0x81, 0xab, 0x0d, + 0xbd, 0x35, 0xdf, 0x20, 0x6f, 0x42, 0xb9, 0xd6, 0x6c, 0xfa, 0x3d, 0xc5, 0x86, 0x99, 0x39, 0xd8, + 0xaf, 0x9e, 0x71, 0x38, 0x50, 0xb7, 0xb0, 0x13, 0x54, 0xb3, 0x9e, 0xb4, 0x9a, 0xf1, 0x98, 0x6b, + 0xf5, 0xc2, 0x88, 0x06, 0x8b, 0xf3, 0xa2, 0xcb, 0xc8, 0xa3, 0xc9, 0x81, 0x29, 0x1e, 0x31, 0xaa, + 0xf9, 0x5f, 0x0c, 0x6c, 0x31, 0x79, 0x0b, 0x60, 0xb1, 0xc3, 0xf4, 0xd4, 0x26, 0x8d, 0x19, 0xa0, + 0x2d, 0xec, 0x09, 0xa8, 0xce, 0x41, 0x41, 0xd6, 0xab, 0xce, 0x0d, 0x5d, 0x35, 0xab, 0x52, 0x6a, + 0xbd, 0xe2, 0x1a, 0x44, 0x54, 0x19, 0x08, 0x68, 0xaa, 0xca, 0x04, 0x99, 0xbc, 0x04, 0xa3, 0x8b, + 0xb5, 0xfb, 0xb5, 0x5e, 0xb4, 0x83, 0xe3, 0x55, 0xe2, 0xf2, 0xc7, 0x73, 0xda, 0xb6, 0xd3, 0x8b, + 0x76, 0x2c, 0x59, 0x68, 0xfe, 0xa6, 0x01, 0x63, 0xca, 0xd6, 0x63, 0x4d, 0x5d, 0x0d, 0xfc, 0xaf, + 0xd1, 0x66, 0xa4, 0x8f, 0x52, 0x97, 0x03, 0x53, 0x4d, 0x8d, 0x51, 0x53, 0xa3, 0x93, 0x3b, 0xc6, + 0xe8, 0x98, 0x37, 0xc4, 0x8e, 0x66, 0x2a, 0xbd, 0x72, 0x63, 0x81, 0x2a, 0x3d, 0x53, 0x59, 0x54, + 0x95, 0x9e, 0x95, 0x9b, 0x3f, 0x32, 0x60, 0x4c, 0xd9, 0xb4, 0xe4, 0x75, 0x61, 0x09, 0x1b, 0x78, + 0x6f, 0x73, 0xae, 0x7f, 0x5b, 0xb3, 0x52, 0x7e, 0xa2, 0x31, 0x0b, 0x59, 0xd8, 0xc5, 0xc9, 0x0e, + 0xcb, 0x0d, 0xb3, 0xc3, 0xde, 0x02, 0xe0, 0xea, 0x0e, 0x36, 0x51, 0x99, 0x0b, 0xe5, 0x9e, 0x4b, + 0xed, 0x60, 0x82, 0x6c, 0xfe, 0xff, 0x39, 0x28, 0x09, 0x75, 0x7e, 0xf6, 0x84, 0x1e, 0xb3, 0x6f, + 0x68, 0xc7, 0xec, 0x69, 0x41, 0xaa, 0xe8, 0x7f, 0xb3, 0x47, 0xa8, 0xf1, 0x6f, 0xc1, 0xb8, 0x1c, + 0x02, 0xd4, 0x56, 0xae, 0xc2, 0xa8, 0x34, 0x44, 0xb9, 0xae, 0x32, 0xa5, 0xf1, 0xdc, 0x98, 0xb5, + 0x64, 0xb9, 0xf9, 0xdd, 0x11, 0x49, 0xcb, 0x6b, 0x62, 0x43, 0x58, 0x73, 0xdd, 0x40, 0x1d, 0x42, + 0xc7, 0x75, 0x03, 0x0b, 0xa1, 0x6c, 0xa2, 0x56, 0x7b, 0x5b, 0x2d, 0xaf, 0x89, 0x38, 0xca, 0x4a, + 0xec, 0x22, 0xd4, 0x66, 0xa8, 0xea, 0x44, 0x25, 0xc8, 0x9a, 0x16, 0x9d, 0x3f, 0x54, 0x8b, 0xfe, + 0x15, 0x28, 0xcf, 0xb5, 0x5d, 0xed, 0x94, 0x35, 0x33, 0x06, 0xe5, 0x7a, 0x8c, 0xc4, 0xcf, 0xd7, + 0x4b, 0x62, 0x8c, 0xce, 0x34, 0xdb, 0x6e, 0xff, 0xd9, 0x9a, 0xb0, 0xd4, 0xd4, 0xe0, 0x91, 0x27, + 0x51, 0x83, 0xdf, 0x84, 0xf2, 0x7a, 0x48, 0xd7, 0x7a, 0x9d, 0x0e, 0x6d, 0xe1, 0x89, 0x5b, 0xe2, + 0xfb, 0xb9, 0x17, 0x52, 0x3b, 0x42, 0xa8, 0xda, 0x80, 0x18, 0x55, 0x5d, 0x56, 0xa3, 0x87, 0x2c, + 0xab, 0xd7, 0xa1, 0x50, 0xeb, 0x76, 0xa5, 0x7d, 0x10, 0x1f, 0x3c, 0xdd, 0x2e, 0x1e, 0x27, 0x93, + 0x4e, 0xb7, 0xab, 0x6b, 0xfb, 0x88, 0x4d, 0x28, 0x90, 0x7b, 0xbd, 0x2d, 0x1a, 0x74, 0x68, 0x44, + 0x43, 0x21, 0xee, 0xc2, 0x19, 0x40, 0x1e, 0x33, 0xf2, 0xda, 0x35, 0x8d, 0x80, 0xb6, 0xdd, 0xf9, + 0xdd, 0xde, 0x16, 0xb5, 0x85, 0xdc, 0x54, 0xc7, 0x2e, 0x83, 0xe1, 0xc5, 0x06, 0x4c, 0xea, 0xe3, + 0xff, 0x14, 0x0e, 0xeb, 0x0f, 0x0a, 0xa5, 0x52, 0xa5, 0x6c, 0x7e, 0x2b, 0x07, 0x63, 0xb5, 0x6e, + 0xf7, 0x84, 0x1b, 0xe9, 0x9f, 0xd5, 0x76, 0xf5, 0xb9, 0x64, 0xf6, 0x8e, 0x61, 0x9f, 0xff, 0x8d, + 0x01, 0x53, 0x29, 0x0a, 0xb5, 0xf5, 0xc6, 0x90, 0x46, 0x6b, 0x6e, 0x48, 0xa3, 0x35, 0x3f, 0xd8, + 0x68, 0x55, 0xf7, 0x4c, 0xe1, 0x49, 0xf6, 0xcc, 0xcb, 0x90, 0xaf, 0x75, 0xbb, 0x62, 0x54, 0xc6, + 0x93, 0x51, 0xd9, 0xb8, 0xc5, 0x15, 0x74, 0xa7, 0xdb, 0xb5, 0x18, 0x86, 0xf9, 0x2a, 0x94, 0x11, + 0x8c, 0x12, 0xed, 0xb2, 0xd8, 0x0a, 0x5c, 0x9c, 0x69, 0x64, 0x7c, 0xd9, 0x9b, 0xff, 0xdb, 0x80, + 0x11, 0xfc, 0x7d, 0x42, 0x97, 0xcb, 0xac, 0xb6, 0x5c, 0x2a, 0xca, 0x72, 0x19, 0x66, 0xa1, 0xfc, + 0x71, 0x1e, 0x47, 0x4b, 0x2c, 0x11, 0x61, 0xf6, 0x18, 0x19, 0x66, 0xcf, 0x13, 0x08, 0xf0, 0xdd, + 0xb4, 0x01, 0x94, 0xc7, 0xc9, 0x78, 0x3e, 0xdd, 0xd4, 0xa7, 0x62, 0xfb, 0xdc, 0x05, 0xb2, 0xd8, + 0x09, 0x69, 0xb3, 0x17, 0xd0, 0xc6, 0xae, 0xd7, 0xdd, 0xa0, 0x81, 0xf7, 0x60, 0x4f, 0x68, 0x5b, + 0x28, 0x63, 0x3d, 0x51, 0x6a, 0x87, 0xbb, 0x5e, 0xd7, 0x7e, 0x88, 0xe5, 0x56, 0x06, 0x0d, 0x79, + 0x1f, 0x46, 0x2d, 0xfa, 0x28, 0xf0, 0x22, 0x2a, 0xc6, 0x76, 0x32, 0xd6, 0xad, 0x11, 0xca, 0x75, + 0x93, 0x80, 0xff, 0x50, 0xe7, 0x5f, 0x94, 0x7f, 0x7c, 0xa6, 0xc9, 0xf7, 0x46, 0x70, 0x2f, 0x1c, + 0xf1, 0x98, 0x74, 0x88, 0x0d, 0xab, 0x4f, 0x66, 0xfe, 0x38, 0x93, 0xb9, 0x01, 0xe3, 0xcc, 0x1c, + 0x4a, 0x19, 0xb3, 0x97, 0x92, 0xb9, 0xbc, 0xae, 0x16, 0x1f, 0xf6, 0x8e, 0xa4, 0xf1, 0x21, 0x76, + 0x7a, 0x91, 0xf0, 0xf7, 0xa9, 0x67, 0x15, 0xc6, 0x19, 0xcb, 0x23, 0x16, 0x1d, 0x4d, 0x3e, 0x58, + 0xc7, 0x5e, 0x18, 0xc5, 0x27, 0x5b, 0x18, 0xa3, 0x1f, 0x65, 0x61, 0xa4, 0x5f, 0xf0, 0x4a, 0xc7, + 0x79, 0xc1, 0xbb, 0xf8, 0x3e, 0x4c, 0xf7, 0x8d, 0xf0, 0x71, 0x5e, 0xc1, 0x3e, 0xbe, 0x65, 0xf9, + 0xeb, 0xf1, 0xb8, 0x90, 0x59, 0x34, 0xf1, 0xbc, 0x80, 0x36, 0x23, 0x14, 0xbd, 0x42, 0x5a, 0x06, + 0x02, 0x96, 0xb2, 0x41, 0x11, 0x46, 0xde, 0x83, 0x51, 0xfe, 0x8a, 0x10, 0xce, 0xe4, 0x70, 0xee, + 0x27, 0x44, 0x8d, 0x1c, 0x2a, 0x9e, 0x6e, 0x39, 0x86, 0x3a, 0xaa, 0x82, 0xc8, 0xbc, 0x03, 0x45, + 0xf1, 0x0a, 0x71, 0xf8, 0xbe, 0xa8, 0xc2, 0xc8, 0x46, 0x32, 0x32, 0x78, 0x73, 0xcc, 0x3b, 0x61, + 0x71, 0xb8, 0xf9, 0x3b, 0x06, 0x4c, 0xea, 0xbd, 0x24, 0xd7, 0xa1, 0x28, 0x9e, 0xc9, 0x0c, 0x7c, + 0x26, 0x63, 0xbd, 0x29, 0xf2, 0x07, 0x32, 0xed, 0x59, 0x4c, 0x60, 0x31, 0xd1, 0x2f, 0x38, 0x60, + 0x5f, 0x84, 0xe8, 0x17, 0x8b, 0xd4, 0x92, 0x65, 0xc4, 0x64, 0xd6, 0x7e, 0xd8, 0x6b, 0xc9, 0xbb, + 0x24, 0x60, 0x6c, 0x03, 0x84, 0x58, 0xa2, 0xc4, 0xdc, 0x37, 0x00, 0x1a, 0x8d, 0xbb, 0xf7, 0xe8, + 0xde, 0xaa, 0xe3, 0x05, 0x68, 0x0a, 0xe2, 0x6e, 0xbc, 0x27, 0x66, 0x6b, 0x5c, 0x98, 0x82, 0x7c, + 0xe7, 0xee, 0xd2, 0x3d, 0xcd, 0x14, 0x94, 0xa8, 0xb8, 0xe5, 0x03, 0xef, 0xa1, 0x13, 0x51, 0x46, + 0x98, 0x43, 0x42, 0xbe, 0xe5, 0x39, 0x34, 0x45, 0xa9, 0x20, 0x93, 0xaf, 0xc2, 0x64, 0xf2, 0x0b, + 0xdf, 0xe2, 0xf3, 0x68, 0xd3, 0xc9, 0x15, 0xa1, 0x17, 0xd6, 0x9f, 0x3b, 0xd8, 0xaf, 0x5e, 0x54, + 0xb8, 0xda, 0x0c, 0x4b, 0x61, 0x9d, 0x62, 0x66, 0xfe, 0xd0, 0x00, 0x58, 0x5b, 0x6a, 0xc8, 0x0e, + 0xbe, 0x04, 0x85, 0xf8, 0x86, 0x65, 0x9c, 0xdb, 0x9b, 0x29, 0xe3, 0x0f, 0xcb, 0xc9, 0xf3, 0x90, + 0x4f, 0x7a, 0x32, 0x7d, 0xb0, 0x5f, 0x9d, 0xd0, 0x7b, 0xc0, 0x4a, 0xc9, 0x1d, 0x18, 0x1d, 0xaa, + 0xcd, 0xb8, 0x3a, 0x33, 0xda, 0x2a, 0xa9, 0x71, 0x16, 0x3e, 0xd8, 0x5c, 0xfb, 0xe4, 0xce, 0xc2, + 0x77, 0x72, 0x30, 0xc5, 0xc6, 0xb5, 0xd6, 0x8b, 0x76, 0xfc, 0xc0, 0x8b, 0xf6, 0x4e, 0xac, 0x55, + 0xfc, 0x8e, 0xa6, 0x10, 0x5d, 0x94, 0x62, 0x4b, 0xed, 0xdb, 0x50, 0xc6, 0xf1, 0x4f, 0x47, 0xe1, + 0x74, 0x06, 0x15, 0x79, 0x45, 0x38, 0xa4, 0x24, 0xf7, 0x30, 0xe8, 0x70, 0xf2, 0xf3, 0xfd, 0xea, + 0xb8, 0x44, 0x5f, 0x4b, 0x1c, 0x50, 0x66, 0x61, 0x4c, 0x98, 0x3e, 0xcb, 0x89, 0x46, 0x8d, 0x9e, + 0x0d, 0xf2, 0x9e, 0x09, 0x45, 0x93, 0x8a, 0x44, 0x6a, 0x30, 0x3e, 0xb7, 0x43, 0x9b, 0xbb, 0x5e, + 0x67, 0xfb, 0x1e, 0xdd, 0xe3, 0xfa, 0xd2, 0x78, 0xfd, 0x59, 0x66, 0x69, 0x35, 0x05, 0x9c, 0x4d, + 0xa9, 0x6e, 0xc4, 0x69, 0x24, 0xe4, 0x3d, 0x18, 0x6b, 0x78, 0xdb, 0x1d, 0xc9, 0xa1, 0x80, 0x1c, + 0x2e, 0x1d, 0xec, 0x57, 0xcf, 0x85, 0x1c, 0xdc, 0xcf, 0x40, 0x25, 0x20, 0x57, 0x61, 0xc4, 0xf2, + 0x5b, 0x94, 0x1f, 0xc3, 0xc2, 0xe5, 0x21, 0x60, 0x00, 0xf5, 0xfa, 0x16, 0x31, 0xc8, 0x5d, 0x18, + 0x65, 0xff, 0xdc, 0x77, 0xba, 0x33, 0x45, 0x94, 0xdb, 0x24, 0x56, 0xf0, 0x11, 0xda, 0xf5, 0x3a, + 0xdb, 0xaa, 0x8e, 0xdf, 0xa2, 0x76, 0xdb, 0xe9, 0x6a, 0xe7, 0x22, 0x47, 0x24, 0x1b, 0x30, 0x96, + 0x08, 0x82, 0x70, 0x66, 0x54, 0x7b, 0x2e, 0x49, 0x4a, 0xea, 0x9f, 0x12, 0xcc, 0xce, 0x47, 0xad, + 0x10, 0xd7, 0x76, 0x97, 0xe1, 0xeb, 0x9d, 0x51, 0x18, 0x69, 0x36, 0x48, 0x69, 0xb0, 0x0d, 0x62, + 0x1c, 0x69, 0x83, 0xb8, 0x00, 0x62, 0x90, 0x6a, 0xad, 0x6d, 0xe1, 0x91, 0x74, 0x75, 0xf0, 0x02, + 0xbb, 0x9e, 0x20, 0xe3, 0x9e, 0xe4, 0x37, 0x53, 0x62, 0xfc, 0x9d, 0xd6, 0xb6, 0x76, 0x33, 0x15, + 0xa3, 0xb2, 0x61, 0x48, 0x44, 0x8d, 0xb4, 0xc0, 0xe5, 0x30, 0x24, 0x25, 0xc9, 0x30, 0x7c, 0xed, + 0x51, 0x34, 0x68, 0x18, 0x14, 0x46, 0x64, 0x19, 0xa0, 0xd6, 0x8c, 0xbc, 0x87, 0x14, 0x97, 0xc4, + 0x98, 0x36, 0x10, 0x73, 0xb5, 0x7b, 0x74, 0xaf, 0x41, 0xa3, 0xf8, 0xf1, 0xff, 0xac, 0x83, 0xa8, + 0xa9, 0x65, 0x62, 0x29, 0x1c, 0x48, 0x17, 0xce, 0xd6, 0x5c, 0xd7, 0xe3, 0x5e, 0x6a, 0x6b, 0x01, + 0x5b, 0xbf, 0x2e, 0xb2, 0x1e, 0xcf, 0x66, 0x7d, 0x55, 0xb0, 0xfe, 0x94, 0x13, 0x53, 0xd9, 0x11, + 0x27, 0x4b, 0x57, 0x93, 0xcd, 0xd8, 0x5c, 0x81, 0x49, 0x7d, 0x48, 0x75, 0xff, 0xac, 0x71, 0x28, + 0x59, 0x8d, 0x9a, 0xdd, 0xb8, 0x5b, 0xbb, 0x59, 0x31, 0x48, 0x05, 0xc6, 0xc5, 0xaf, 0x59, 0x7b, + 0xf6, 0x8d, 0x37, 0x2b, 0x39, 0x0d, 0xf2, 0xc6, 0xcd, 0xd9, 0x4a, 0xde, 0xfc, 0x63, 0x03, 0x4a, + 0xb2, 0x7d, 0xe4, 0x4d, 0xc8, 0x37, 0x1a, 0x77, 0x53, 0xaf, 0x74, 0xc9, 0xd1, 0xcb, 0x0f, 0x99, + 0x30, 0xdc, 0x51, 0x0f, 0x99, 0x46, 0xe3, 0x2e, 0xa3, 0x5b, 0x5b, 0x6a, 0x08, 0xa5, 0x25, 0x63, + 0xb9, 0x4e, 0x67, 0x3f, 0x5d, 0x30, 0xba, 0x0f, 0x36, 0xd7, 0x84, 0x35, 0x94, 0x31, 0xbf, 0x48, + 0xf7, 0xb5, 0x47, 0xea, 0xd1, 0xc7, 0x08, 0x4c, 0x0b, 0xc6, 0x94, 0xad, 0xc5, 0x95, 0x88, 0xb6, + 0x1f, 0x7b, 0x32, 0x09, 0x25, 0x82, 0x41, 0x2c, 0x51, 0xc2, 0x74, 0x9e, 0x25, 0xbf, 0xe9, 0xb4, + 0x84, 0x36, 0x82, 0x3a, 0x4f, 0x8b, 0x01, 0x2c, 0x0e, 0x37, 0xff, 0xd4, 0x80, 0xca, 0x6a, 0xe0, + 0x3f, 0xf4, 0x98, 0x04, 0x5e, 0xf3, 0x77, 0x69, 0x67, 0xe3, 0x26, 0x79, 0x55, 0x0a, 0x01, 0xae, + 0xc2, 0x9d, 0x67, 0x54, 0x28, 0x04, 0x7e, 0xbe, 0x5f, 0x85, 0xc6, 0x5e, 0x18, 0xd1, 0x36, 0x2b, + 0x97, 0x82, 0x40, 0x71, 0x08, 0xcb, 0x0d, 0xef, 0x64, 0x72, 0x84, 0x43, 0x58, 0x15, 0x46, 0xb0, + 0x39, 0xca, 0x3b, 0xff, 0x48, 0xc4, 0x00, 0x16, 0x87, 0x2b, 0x02, 0xfb, 0xbb, 0xb9, 0xbe, 0x3e, + 0xcc, 0x7e, 0xa2, 0x1c, 0x35, 0xf4, 0xce, 0x0d, 0x75, 0x88, 0x7d, 0x11, 0xce, 0xa4, 0x87, 0x04, + 0xef, 0x45, 0x6a, 0x30, 0xa5, 0xc3, 0xe5, 0x15, 0xc9, 0xf9, 0xcc, 0xba, 0x36, 0x66, 0xad, 0x34, + 0xbe, 0xf9, 0x33, 0x03, 0xca, 0xf8, 0xaf, 0xd5, 0x6b, 0x51, 0xa6, 0xd9, 0xd4, 0x36, 0x1b, 0xe2, + 0x91, 0x47, 0x7d, 0x88, 0x71, 0x1e, 0x85, 0xb6, 0x78, 0x11, 0xd2, 0xe4, 0x48, 0x8c, 0x2c, 0x48, + 0xf9, 0x93, 0x56, 0x28, 0x56, 0x68, 0x4c, 0xca, 0xdf, 0xbe, 0xc2, 0x14, 0xa9, 0x40, 0x66, 0xf3, + 0xc7, 0x7e, 0xf9, 0x2d, 0x79, 0x35, 0x8c, 0xf3, 0x87, 0x74, 0xbe, 0xe6, 0xf9, 0x25, 0xd1, 0xc8, + 0xab, 0x50, 0x64, 0x55, 0x5b, 0xcb, 0xe2, 0xc5, 0x0a, 0xad, 0x0a, 0x6c, 0x63, 0xa0, 0xbd, 0xb0, + 0x71, 0x24, 0xf3, 0xb7, 0x72, 0xe9, 0x01, 0x14, 0x5a, 0xc0, 0x31, 0xf7, 0xc6, 0xdb, 0x30, 0x52, + 0x6b, 0xb5, 0xfc, 0x47, 0x42, 0x4a, 0xc8, 0x6b, 0x9a, 0x78, 0xfc, 0xf8, 0x09, 0xeb, 0x30, 0x14, + 0xed, 0x81, 0x94, 0x01, 0xc8, 0x1c, 0x94, 0x6b, 0x9b, 0x8d, 0xc5, 0xc5, 0xf9, 0xb5, 0xb5, 0x25, + 0xe1, 0x77, 0xfb, 0xa2, 0x1c, 0x1f, 0xcf, 0x73, 0xed, 0x28, 0x6a, 0x0d, 0x70, 0xd3, 0x4b, 0xe8, + 0xc8, 0xbb, 0x00, 0x1f, 0xf8, 0x5e, 0xe7, 0x3e, 0x8d, 0x76, 0x7c, 0x57, 0x74, 0x9e, 0xa9, 0x14, + 0x63, 0x5f, 0xf3, 0xbd, 0x8e, 0xdd, 0x46, 0x30, 0x6b, 0x7b, 0x82, 0x64, 0x29, 0xff, 0x9b, 0xbf, + 0x9b, 0x83, 0x49, 0x6e, 0x77, 0xf2, 0xe9, 0x3f, 0xb1, 0x5b, 0xeb, 0x6d, 0x6d, 0x6b, 0x5d, 0x90, + 0x62, 0x5e, 0xe9, 0xda, 0x50, 0x1b, 0x6b, 0x07, 0x48, 0x3f, 0x0d, 0xb1, 0xe4, 0xed, 0xc8, 0x30, + 0x7b, 0xea, 0x66, 0xf2, 0xba, 0x1a, 0x22, 0x91, 0x8d, 0x82, 0x2d, 0xb4, 0x34, 0x1e, 0xe6, 0xef, + 0xe4, 0x60, 0x42, 0xd1, 0x0e, 0x4f, 0xec, 0xc0, 0x7f, 0x4e, 0x1b, 0x78, 0xf9, 0xa2, 0xa0, 0xf4, + 0x6c, 0xa8, 0x71, 0xef, 0xc1, 0x74, 0x1f, 0x49, 0x5a, 0xc9, 0x36, 0x86, 0x51, 0xb2, 0x5f, 0xe9, + 0x7f, 0xfe, 0xe5, 0x1e, 0xb8, 0xf1, 0xf3, 0xaf, 0xfa, 0xde, 0xfc, 0x9d, 0x1c, 0x9c, 0x11, 0xbf, + 0x6a, 0x3d, 0xd7, 0x8b, 0xe6, 0xfc, 0xce, 0x03, 0x6f, 0xfb, 0xc4, 0xce, 0x45, 0x4d, 0x9b, 0x8b, + 0xaa, 0x3e, 0x17, 0x4a, 0x07, 0x07, 0x4f, 0x89, 0xf9, 0x6f, 0x4b, 0x30, 0x33, 0x88, 0x80, 0x19, + 0xf1, 0x8a, 0x8d, 0x84, 0x46, 0x7c, 0xca, 0xfe, 0xe4, 0xd6, 0x51, 0xe2, 0xee, 0x90, 0x1b, 0xc2, + 0xdd, 0x61, 0x09, 0x2a, 0x58, 0x55, 0x83, 0x86, 0x6c, 0x10, 0xc2, 0xc4, 0xfd, 0xef, 0xf2, 0xc1, + 0x7e, 0xf5, 0x92, 0xc3, 0xca, 0xec, 0x50, 0x14, 0xda, 0xbd, 0xc0, 0x53, 0x78, 0xf4, 0x51, 0x92, + 0x1f, 0x1a, 0x30, 0x89, 0xc0, 0x85, 0x87, 0xb4, 0x13, 0x21, 0xb3, 0x82, 0x78, 0x72, 0x89, 0xa3, + 0x2a, 0x1a, 0x51, 0xe0, 0x75, 0xb6, 0xf1, 0x5a, 0x28, 0xac, 0x6f, 0xb1, 0x51, 0xf8, 0xcb, 0xfd, + 0xea, 0x3b, 0x1f, 0x25, 0x52, 0x43, 0xb0, 0x0a, 0x99, 0x59, 0xce, 0x1b, 0x4a, 0xb1, 0xda, 0x54, + 0x33, 0x53, 0x2d, 0x22, 0x5f, 0x82, 0xf3, 0x0b, 0x1d, 0x67, 0xab, 0x45, 0xe7, 0xfc, 0x4e, 0xe4, + 0x75, 0x7a, 0x7e, 0x2f, 0xac, 0x3b, 0xcd, 0xdd, 0x5e, 0x37, 0x14, 0x57, 0x97, 0xd8, 0xf3, 0x66, + 0x5c, 0x68, 0x6f, 0xf1, 0x52, 0x85, 0xe5, 0x20, 0x06, 0xe4, 0x2e, 0x4c, 0xf3, 0xa2, 0x5a, 0x2f, + 0xf2, 0x1b, 0x4d, 0xa7, 0xe5, 0x75, 0xb6, 0xf1, 0x46, 0xb3, 0x54, 0xbf, 0xc8, 0x2c, 0x45, 0xa7, + 0x17, 0xf9, 0x76, 0xc8, 0xe1, 0x0a, 0xbf, 0x7e, 0x22, 0xb2, 0x08, 0x53, 0x16, 0x75, 0xdc, 0xfb, + 0xce, 0xe3, 0x39, 0xa7, 0xeb, 0x34, 0xbd, 0x68, 0x0f, 0xed, 0xac, 0x7c, 0xbd, 0x7a, 0xb0, 0x5f, + 0x7d, 0x26, 0xa0, 0x8e, 0x6b, 0xb7, 0x9d, 0xc7, 0x76, 0x53, 0x14, 0x2a, 0xcc, 0xd2, 0x74, 0x31, + 0x2b, 0xaf, 0x13, 0xb3, 0x2a, 0xa7, 0x59, 0x79, 0x9d, 0xc1, 0xac, 0x12, 0x3a, 0xc9, 0x6a, 0xcd, + 0x09, 0xb6, 0x69, 0xc4, 0xaf, 0xfc, 0xe0, 0xb2, 0x71, 0xc5, 0x50, 0x58, 0x45, 0x58, 0x66, 0xe3, + 0xf5, 0x5f, 0x9a, 0x95, 0x42, 0xc7, 0x56, 0xde, 0x66, 0xe0, 0x45, 0x54, 0xed, 0xe1, 0x18, 0x36, + 0x0b, 0xc7, 0x1f, 0x2f, 0x3d, 0x07, 0x75, 0xb1, 0x8f, 0x32, 0xe1, 0xa6, 0x74, 0x72, 0xbc, 0x8f, + 0x5b, 0x76, 0x2f, 0xfb, 0x28, 0x63, 0x6e, 0x6a, 0x3f, 0x27, 0xb0, 0x9f, 0x0a, 0xb7, 0x01, 0x1d, + 0xed, 0xa3, 0x24, 0xcb, 0x6c, 0xd0, 0x22, 0xda, 0x61, 0x2b, 0x5a, 0x5c, 0x79, 0x4e, 0x62, 0xd3, + 0x5e, 0x10, 0x16, 0x72, 0x25, 0x90, 0xc5, 0x76, 0xc6, 0x05, 0x68, 0x9a, 0xf8, 0x83, 0x42, 0x69, + 0xa4, 0x52, 0xb4, 0x2a, 0x7c, 0xc9, 0x47, 0x6c, 0xe1, 0xa0, 0x2c, 0x36, 0x7f, 0x3f, 0x07, 0x17, + 0xa4, 0x38, 0xa6, 0xd1, 0x23, 0x3f, 0xd8, 0xf5, 0x3a, 0xdb, 0x27, 0x5c, 0xaa, 0xde, 0xd6, 0xa4, + 0xea, 0x0b, 0xa9, 0x13, 0x2e, 0xd5, 0xcb, 0x43, 0x44, 0xeb, 0xbf, 0x2c, 0xc2, 0xb3, 0x87, 0x52, + 0x91, 0x0f, 0xd9, 0x29, 0xe8, 0xd1, 0x4e, 0xb4, 0xe8, 0xb6, 0x28, 0x33, 0xaa, 0xfc, 0x5e, 0x24, + 0xae, 0xa6, 0x9f, 0x3f, 0xd8, 0xaf, 0x9e, 0xe6, 0xc1, 0x07, 0xb6, 0xe7, 0xb6, 0xa8, 0x1d, 0xf1, + 0x62, 0x6d, 0x9a, 0xfa, 0xa9, 0x19, 0xcb, 0x38, 0xf4, 0x69, 0xb1, 0x13, 0xd1, 0xe0, 0xa1, 0xc3, + 0x7d, 0xb0, 0x05, 0xcb, 0x5d, 0x4a, 0xbb, 0xb6, 0xc3, 0x4a, 0x6d, 0x4f, 0x14, 0xeb, 0x2c, 0xfb, + 0xa8, 0xc9, 0x6d, 0x85, 0xe5, 0x1c, 0x53, 0xf5, 0xef, 0x3b, 0x8f, 0x85, 0xfe, 0x8a, 0xb7, 0xa5, + 0x0a, 0x4b, 0xee, 0x31, 0xd6, 0x76, 0x1e, 0x5b, 0xfd, 0x24, 0xe4, 0xab, 0x70, 0x56, 0x08, 0x6e, + 0x26, 0xc4, 0x02, 0xbf, 0x25, 0x7b, 0x5c, 0x40, 0x5e, 0x2f, 0x1f, 0xec, 0x57, 0xcf, 0x0b, 0xb1, + 0x6f, 0x37, 0x39, 0x46, 0x66, 0xaf, 0xb3, 0xb9, 0x90, 0x35, 0x76, 0x90, 0xa5, 0x86, 0xe3, 0x3e, + 0x0d, 0x43, 0x67, 0x9b, 0xbf, 0xfc, 0x09, 0x67, 0x2b, 0x75, 0x30, 0xed, 0x36, 0x2f, 0xb7, 0x06, + 0x52, 0x92, 0xbb, 0x30, 0xb9, 0x49, 0xb7, 0xd4, 0xf9, 0x29, 0xc6, 0x5b, 0xbc, 0xf2, 0x88, 0x6e, + 0x0d, 0x9e, 0x9c, 0x14, 0x1d, 0xf1, 0x60, 0x7a, 0x35, 0xf0, 0x1f, 0xef, 0x31, 0xc3, 0x8d, 0x76, + 0x68, 0x80, 0x6e, 0x55, 0xa3, 0x78, 0xf9, 0x34, 0x93, 0x68, 0x96, 0x7a, 0x79, 0xfd, 0x53, 0x07, + 0xfb, 0xd5, 0x67, 0xbb, 0x0c, 0x6c, 0xb7, 0x04, 0xdc, 0x4e, 0x45, 0x22, 0xf5, 0x73, 0x25, 0xbf, + 0x0a, 0x53, 0x96, 0xdf, 0x8b, 0xbc, 0xce, 0x76, 0x23, 0x0a, 0x9c, 0x88, 0x6e, 0x73, 0x41, 0x9e, + 0xf8, 0x6f, 0xa5, 0x4a, 0xf9, 0x35, 0x73, 0xc0, 0x81, 0x76, 0x28, 0xa0, 0x9a, 0x24, 0xd5, 0x09, + 0xc8, 0x1a, 0x8c, 0x63, 0xb5, 0xab, 0x94, 0xb2, 0xf3, 0x50, 0x5c, 0xa2, 0x9d, 0x56, 0xfb, 0x21, + 0x8a, 0xb8, 0x6b, 0x09, 0xef, 0x42, 0x97, 0x83, 0xd4, 0xd7, 0x43, 0x15, 0xd5, 0xfc, 0x7e, 0x0e, + 0x66, 0xc4, 0xe4, 0x5a, 0xb4, 0xe9, 0x07, 0xee, 0xc9, 0x17, 0x26, 0x0b, 0x9a, 0x30, 0x79, 0x3e, + 0xf6, 0x63, 0xca, 0xea, 0xe4, 0x21, 0xb2, 0xe4, 0x5f, 0x18, 0x70, 0xe9, 0x30, 0x22, 0x36, 0x3a, + 0xb1, 0x9f, 0x5e, 0xb9, 0xcf, 0x1f, 0xaf, 0x0b, 0xa7, 0x71, 0xa0, 0xf1, 0x72, 0x39, 0xbc, 0xeb, + 0x87, 0x11, 0xde, 0xf0, 0xe5, 0x34, 0x67, 0x83, 0xba, 0xef, 0xb7, 0xf0, 0xf4, 0xa8, 0xbf, 0xc2, + 0x0e, 0x89, 0xbf, 0xdc, 0xaf, 0x02, 0x03, 0xad, 0xe0, 0x83, 0x25, 0xd3, 0x24, 0xf8, 0x24, 0xe2, + 0xdd, 0x75, 0x68, 0xa3, 0x87, 0xc8, 0x2e, 0xdd, 0x0b, 0xad, 0x2c, 0xd6, 0x78, 0x8b, 0x53, 0xeb, + 0x45, 0x3b, 0xab, 0x01, 0x7d, 0x40, 0x03, 0xda, 0x69, 0xd2, 0x4f, 0xd8, 0x2d, 0x8e, 0xde, 0xb9, + 0xa1, 0x8c, 0x9e, 0xff, 0x5b, 0x84, 0x33, 0x59, 0x64, 0x6c, 0x5c, 0x14, 0x3d, 0x3b, 0x1d, 0xfc, + 0xfa, 0xb7, 0x0d, 0x18, 0x6f, 0xd0, 0xa6, 0xdf, 0x71, 0x6f, 0x3b, 0xcd, 0xc8, 0x97, 0x6e, 0x1b, + 0x36, 0x97, 0x97, 0x0c, 0x6e, 0x3f, 0xc0, 0x02, 0xed, 0xf6, 0xe0, 0xf3, 0xc3, 0xa9, 0xb7, 0x4d, + 0x1f, 0x9d, 0x45, 0x23, 0xb6, 0x26, 0x93, 0x2a, 0xf0, 0xe5, 0x43, 0xab, 0x94, 0xd4, 0x61, 0x62, + 0xce, 0xef, 0x74, 0x28, 0xfb, 0xa1, 0xb8, 0x69, 0x5e, 0x3a, 0xd8, 0xaf, 0xce, 0x34, 0x65, 0x41, + 0xda, 0x53, 0x53, 0x27, 0x21, 0xb7, 0x20, 0xbf, 0x3e, 0x7b, 0x5b, 0xcc, 0x81, 0x74, 0x68, 0x5b, + 0x9f, 0xbd, 0x8d, 0x16, 0x34, 0xd3, 0x4a, 0x26, 0x7a, 0xb3, 0x0f, 0xd4, 0x7b, 0xd2, 0xf5, 0xd9, + 0xdb, 0x64, 0x05, 0xa6, 0x2d, 0xfa, 0xf5, 0x9e, 0x17, 0x50, 0xb1, 0x01, 0xee, 0xdf, 0xae, 0xe1, + 0x5c, 0x94, 0xb8, 0x74, 0x0c, 0x78, 0xa1, 0xb4, 0x18, 0xec, 0xf6, 0x03, 0x35, 0x00, 0xac, 0x9f, + 0x96, 0xfc, 0x06, 0x9c, 0x9d, 0xf7, 0x42, 0xd1, 0x66, 0x7e, 0x41, 0xe9, 0xe2, 0x5b, 0x65, 0x71, + 0xc0, 0x76, 0xf8, 0x4c, 0xe6, 0x76, 0xf8, 0x94, 0x1b, 0x33, 0xb1, 0xf9, 0xed, 0xa7, 0x9b, 0xf6, + 0x6f, 0xcd, 0xae, 0x87, 0x7c, 0x0d, 0x26, 0xf1, 0x46, 0x08, 0xef, 0x6c, 0xd1, 0x8d, 0x78, 0x74, + 0x40, 0xcd, 0xaf, 0x65, 0xd6, 0x7c, 0x11, 0x2f, 0x98, 0x6c, 0xbc, 0xf9, 0x45, 0x97, 0x63, 0xcd, + 0xf2, 0xd0, 0x38, 0x93, 0x0f, 0x60, 0x4a, 0x1c, 0x65, 0x2b, 0x0f, 0xd6, 0x76, 0xe8, 0xbc, 0xb3, + 0x27, 0x1c, 0x15, 0x50, 0xab, 0x14, 0xe7, 0x9f, 0xed, 0x3f, 0xb0, 0xa3, 0x1d, 0x6a, 0xbb, 0x8e, + 0x26, 0xf4, 0x53, 0x84, 0xe4, 0x1b, 0x30, 0xb6, 0xe4, 0xe3, 0xe3, 0x14, 0x8a, 0x9a, 0x32, 0xf2, + 0xf9, 0x22, 0x06, 0x80, 0x72, 0x70, 0xea, 0x68, 0xfa, 0xf9, 0x7e, 0xf5, 0xed, 0xe3, 0xae, 0x42, + 0xa5, 0x02, 0x4b, 0xad, 0x8d, 0xcc, 0x41, 0x69, 0x93, 0x6e, 0xb1, 0xde, 0xa6, 0x83, 0x97, 0x24, + 0x98, 0xcb, 0x8b, 0x47, 0xe2, 0x97, 0xfa, 0xf2, 0x23, 0x31, 0xcc, 0x7f, 0x63, 0xe0, 0x0a, 0x24, + 0xd7, 0xd0, 0x59, 0x2c, 0xf6, 0xc2, 0x46, 0x7b, 0xd5, 0xe9, 0x76, 0x75, 0x3f, 0x6a, 0x8e, 0xc2, + 0x8c, 0xdb, 0xdb, 0x4e, 0x93, 0x46, 0xf2, 0x4e, 0x13, 0x91, 0x1f, 0x20, 0x44, 0x35, 0x6e, 0x39, + 0x0e, 0xf9, 0x02, 0x9c, 0x99, 0xa7, 0x0f, 0xbd, 0x26, 0xad, 0x45, 0x11, 0x0d, 0x79, 0x6f, 0xe7, + 0x6a, 0xfc, 0xf1, 0xaf, 0x5c, 0x7f, 0xe1, 0x60, 0xbf, 0x7a, 0xd9, 0xc5, 0x72, 0xdb, 0x49, 0x10, + 0xec, 0xa6, 0xa3, 0xf2, 0xca, 0xe4, 0x60, 0xfe, 0x83, 0x5c, 0x32, 0x02, 0xe4, 0x65, 0x28, 0x58, + 0xab, 0x71, 0xfb, 0xf9, 0xbb, 0x5e, 0xaa, 0xf9, 0x88, 0x40, 0xbe, 0x0c, 0x67, 0x15, 0x3e, 0xb8, + 0x38, 0xa8, 0xcb, 0x1a, 0xc4, 0x3b, 0xf3, 0x22, 0x3e, 0xe4, 0x28, 0x2d, 0x71, 0x38, 0x46, 0xaa, + 0x45, 0xd9, 0x3c, 0x58, 0x67, 0x95, 0x82, 0x79, 0xda, 0xf1, 0x38, 0x6f, 0xa5, 0xb3, 0x2a, 0x6f, + 0x17, 0x11, 0xd2, 0x9d, 0xcd, 0xe2, 0x40, 0x66, 0xa1, 0x34, 0xef, 0x85, 0xcc, 0xce, 0x70, 0x85, + 0xd7, 0x17, 0x8f, 0x07, 0x13, 0x30, 0x2d, 0x1e, 0x4c, 0xc0, 0xcc, 0xbf, 0x31, 0x94, 0xb8, 0xfb, + 0x13, 0x7a, 0xd6, 0xbc, 0xa9, 0x9d, 0x35, 0x67, 0x04, 0x69, 0xdc, 0x2b, 0x56, 0x96, 0xa9, 0x1f, + 0x4c, 0xc1, 0x84, 0x86, 0x84, 0x4e, 0xb4, 0xeb, 0x21, 0x0d, 0xf8, 0x1d, 0xe5, 0x27, 0xcb, 0x89, + 0x36, 0xee, 0xd7, 0x50, 0xbe, 0x91, 0x3f, 0x35, 0x60, 0x2a, 0x45, 0xc1, 0x46, 0x83, 0x81, 0xd4, + 0xd1, 0xe8, 0x85, 0x34, 0xb0, 0x10, 0xca, 0x5d, 0xee, 0x96, 0x74, 0x97, 0xbb, 0x96, 0xc5, 0x60, + 0xe4, 0xf3, 0x30, 0xb2, 0x8e, 0x16, 0x85, 0xee, 0xb5, 0x11, 0xf3, 0xc7, 0x42, 0xbe, 0x1f, 0x7b, + 0xec, 0x5f, 0x55, 0x9c, 0x60, 0x19, 0x69, 0xc0, 0xe8, 0x5c, 0x40, 0x31, 0xc2, 0xbe, 0x30, 0xfc, + 0xf3, 0x5a, 0x93, 0x93, 0xa4, 0x9f, 0xd7, 0x04, 0x27, 0xf3, 0xf7, 0x72, 0x40, 0x92, 0x3e, 0xd2, + 0x66, 0x40, 0xa3, 0xf0, 0xc4, 0x4e, 0xfa, 0xfb, 0xda, 0xa4, 0x3f, 0xdb, 0x37, 0xe9, 0xbc, 0x7b, + 0x43, 0xcd, 0xfd, 0x9f, 0x1a, 0x70, 0x2e, 0x9b, 0x90, 0x3c, 0x0f, 0xc5, 0x95, 0xb5, 0x55, 0xe9, + 0xf8, 0x23, 0xba, 0xe2, 0x77, 0x51, 0xa7, 0xb5, 0x44, 0x11, 0x79, 0x15, 0x8a, 0x1f, 0x5a, 0x73, + 0xec, 0xb0, 0x53, 0xe2, 0x58, 0xbe, 0x1e, 0xd8, 0x4d, 0xdd, 0x04, 0x13, 0x48, 0xea, 0xdc, 0xe6, + 0x9f, 0xda, 0xdc, 0x7e, 0x27, 0x07, 0x53, 0xb5, 0x66, 0x93, 0x86, 0x21, 0x53, 0x65, 0x68, 0x18, + 0x9d, 0xd8, 0x89, 0xcd, 0x76, 0xe9, 0xd1, 0xfa, 0x36, 0xd4, 0xac, 0xfe, 0xb9, 0x01, 0x67, 0x25, + 0xd5, 0x43, 0x8f, 0x3e, 0x5a, 0xdb, 0x09, 0x68, 0xb8, 0xe3, 0xb7, 0xdc, 0x61, 0xa3, 0x9c, 0xf0, + 0x4c, 0xf7, 0x5a, 0x11, 0x0d, 0xd4, 0x0b, 0xeb, 0x07, 0x08, 0xd1, 0xce, 0x74, 0x84, 0x90, 0x1b, + 0x30, 0x5a, 0xeb, 0x76, 0x03, 0xff, 0x21, 0xdf, 0xf6, 0x13, 0xe2, 0xb5, 0x91, 0x83, 0xb4, 0xd7, + 0x49, 0x0e, 0x62, 0xcd, 0x98, 0xa7, 0x1d, 0xee, 0xaf, 0x3c, 0xc1, 0x9b, 0xe1, 0xd2, 0x8e, 0xaa, + 0x5b, 0x61, 0xb9, 0xf9, 0xed, 0x02, 0x8c, 0xab, 0x1d, 0x21, 0x26, 0x14, 0xb9, 0xf3, 0x89, 0xea, + 0x04, 0xe0, 0x20, 0xc4, 0x12, 0x25, 0x89, 0x4f, 0x4f, 0xee, 0x48, 0x9f, 0x9e, 0x4d, 0x98, 0x58, + 0x0d, 0xfc, 0xae, 0x1f, 0x52, 0x97, 0x27, 0x49, 0xc9, 0x6b, 0x66, 0xba, 0x1c, 0x73, 0x56, 0xc4, + 0x15, 0xf9, 0xae, 0xc0, 0xb6, 0xd3, 0x29, 0x54, 0x74, 0x3e, 0xfc, 0xc2, 0xdf, 0x09, 0x45, 0x30, + 0x40, 0x7c, 0xe1, 0xcf, 0x20, 0xfa, 0x85, 0x3f, 0x83, 0xa8, 0xdb, 0x62, 0xe4, 0x69, 0x6d, 0x0b, + 0xf2, 0x7b, 0x06, 0x8c, 0xd5, 0x3a, 0x1d, 0xe1, 0xd3, 0x23, 0x23, 0x8d, 0xcf, 0x26, 0x97, 0xfe, + 0xdc, 0xe9, 0x93, 0xdf, 0xf9, 0x7f, 0x45, 0xdc, 0xf9, 0xbf, 0xfd, 0x91, 0xee, 0xfc, 0xd7, 0x02, + 0xc7, 0x8b, 0x42, 0x7c, 0xaa, 0x4d, 0x2a, 0x54, 0x1d, 0x7b, 0x95, 0x76, 0x90, 0xb7, 0xa1, 0x12, + 0xaf, 0xc7, 0xc5, 0x8e, 0x4b, 0x1f, 0x53, 0xee, 0x02, 0x35, 0xc1, 0x33, 0x37, 0x69, 0x8f, 0x19, + 0x69, 0x44, 0xf3, 0x3b, 0x06, 0x9c, 0x53, 0x17, 0x44, 0xa3, 0xb7, 0xd5, 0xf6, 0xd0, 0x70, 0x21, + 0xd7, 0xa1, 0x2c, 0xe6, 0x2b, 0x56, 0xfb, 0xfa, 0x33, 0xeb, 0x24, 0x28, 0x64, 0x81, 0x4d, 0x11, + 0xe3, 0x21, 0xac, 0xfc, 0xd3, 0xa9, 0xed, 0xc6, 0x8a, 0xea, 0x33, 0x62, 0xb0, 0x2b, 0x01, 0xfe, + 0xd6, 0xe7, 0x8e, 0x41, 0xcc, 0xf7, 0x60, 0x5a, 0x6f, 0x65, 0x83, 0x62, 0x80, 0x99, 0xec, 0x9a, + 0x91, 0xdd, 0x35, 0x59, 0x6e, 0x6e, 0x02, 0xe9, 0xa3, 0x0f, 0xf1, 0xe1, 0x8a, 0x46, 0xf2, 0x61, + 0x55, 0x5e, 0x7f, 0xf5, 0x21, 0xc6, 0x39, 0xa5, 0xc6, 0xd4, 0xe1, 0x46, 0x52, 0xf3, 0x17, 0x65, + 0x38, 0x9d, 0x21, 0x3a, 0x8e, 0x38, 0xda, 0xab, 0xfa, 0xe6, 0x29, 0xc7, 0xef, 0xfd, 0x72, 0xcb, + 0xbc, 0x27, 0xf3, 0x09, 0x1d, 0xb2, 0x55, 0x0e, 0x4b, 0x32, 0xf4, 0x71, 0x1c, 0xef, 0xaa, 0x4b, + 0xce, 0xc8, 0x53, 0x73, 0xc9, 0xa9, 0xc3, 0x84, 0xe8, 0x95, 0xd8, 0xca, 0xc5, 0xc4, 0xa0, 0x0f, + 0x78, 0x81, 0xdd, 0xb7, 0xa5, 0x75, 0x12, 0xce, 0x23, 0xf4, 0x5b, 0x0f, 0xa9, 0xe0, 0x31, 0xaa, + 0xf2, 0xc0, 0x82, 0x4c, 0x1e, 0x0a, 0x09, 0xf9, 0x23, 0x03, 0x88, 0x80, 0xa8, 0xfb, 0xb9, 0x74, + 0xd8, 0x7e, 0x76, 0x9f, 0xce, 0x7e, 0x7e, 0x56, 0xb6, 0x31, 0x7b, 0x5f, 0x67, 0x34, 0x8b, 0xfc, + 0x53, 0x03, 0xa6, 0xb9, 0x5f, 0x88, 0xda, 0xd8, 0xf2, 0x61, 0x8d, 0x6d, 0x3e, 0x9d, 0xc6, 0x5e, + 0x0a, 0xb1, 0xda, 0x01, 0x6d, 0xed, 0x6f, 0x14, 0xf9, 0x12, 0x40, 0xbc, 0xa3, 0xa4, 0xff, 0xe1, + 0xa5, 0x0c, 0x29, 0x10, 0x23, 0x25, 0x21, 0x94, 0x51, 0x4c, 0xa7, 0x7a, 0xec, 0x24, 0xdc, 0xc8, + 0x6f, 0xc0, 0x19, 0xb6, 0x5f, 0x62, 0x88, 0xf0, 0x62, 0x9b, 0x19, 0xc3, 0x5a, 0x5e, 0x1f, 0x7c, + 0xb4, 0x5f, 0xcf, 0x22, 0xe3, 0x51, 0x20, 0x49, 0x90, 0x7a, 0xd4, 0x56, 0x0d, 0xc4, 0x2c, 0x0a, + 0x74, 0x57, 0xc5, 0xd6, 0x87, 0x33, 0xe3, 0x58, 0x67, 0xa6, 0x7c, 0xbb, 0x20, 0xf7, 0x02, 0x97, + 0x6f, 0xa1, 0x1e, 0xc6, 0x81, 0x20, 0xf2, 0x21, 0x90, 0x46, 0x6f, 0x7b, 0x9b, 0x86, 0x11, 0x75, + 0x39, 0x8c, 0x06, 0xe1, 0xcc, 0x04, 0xca, 0x07, 0xbc, 0x60, 0x0a, 0x65, 0xa9, 0x1d, 0xc8, 0x62, + 0x75, 0x91, 0xf4, 0x13, 0x5f, 0xdc, 0x82, 0x0b, 0x03, 0xbb, 0x99, 0x11, 0xa2, 0x71, 0x43, 0x0f, + 0xd1, 0xb8, 0x30, 0x48, 0x1c, 0x86, 0x6a, 0x98, 0xc6, 0x3f, 0x34, 0x52, 0xf2, 0x4f, 0x28, 0x2b, + 0x3c, 0xf5, 0xda, 0xa0, 0x03, 0x22, 0x87, 0xe1, 0xeb, 0x5c, 0x42, 0xe6, 0x12, 0x25, 0x89, 0x49, + 0x48, 0x55, 0xc2, 0xa2, 0xac, 0x7c, 0x42, 0x51, 0x68, 0xfe, 0x2b, 0x03, 0x08, 0x6f, 0xe1, 0x9c, + 0xd3, 0x75, 0xb6, 0xbc, 0x96, 0x17, 0x79, 0x34, 0x24, 0xf7, 0xa0, 0x22, 0x58, 0x30, 0xb3, 0x5d, + 0xf5, 0xbe, 0x12, 0x0f, 0xba, 0x71, 0x99, 0x9d, 0x56, 0x6b, 0xfa, 0x08, 0x07, 0x4c, 0x5e, 0xee, + 0x09, 0x26, 0xcf, 0xfc, 0x2b, 0x03, 0x2e, 0xf4, 0x37, 0x5b, 0xd4, 0x1c, 0x0f, 0x9e, 0x71, 0xc4, + 0xe0, 0x65, 0xf5, 0x32, 0x87, 0x17, 0x19, 0x4f, 0xad, 0x97, 0xf9, 0xe4, 0x0e, 0xf4, 0xf8, 0xbd, + 0xfc, 0xed, 0x1c, 0x8c, 0xaf, 0xb6, 0x7a, 0xdb, 0x5e, 0x67, 0xde, 0x89, 0x9c, 0x13, 0x6b, 0x52, + 0xbc, 0xa5, 0x99, 0x14, 0xb1, 0x87, 0x56, 0xdc, 0xb1, 0xe1, 0xd2, 0x60, 0x19, 0x30, 0x95, 0x90, + 0xf0, 0x5d, 0x7a, 0x17, 0x0a, 0xec, 0x87, 0xd0, 0x50, 0x2e, 0xf7, 0x31, 0x46, 0xac, 0xeb, 0xf1, + 0x7f, 0x42, 0xc9, 0xd7, 0x93, 0x8f, 0x21, 0x87, 0x8b, 0x9f, 0xe1, 0xb9, 0x83, 0x8e, 0x9f, 0xe7, + 0xf0, 0x4f, 0x0c, 0xa8, 0xa4, 0x7b, 0x42, 0xee, 0xc1, 0x28, 0xe3, 0xe4, 0xc5, 0x79, 0x88, 0x5e, + 0x18, 0xd0, 0xe7, 0xeb, 0x02, 0x8d, 0x37, 0x0f, 0x07, 0x9f, 0x72, 0x88, 0x25, 0x39, 0x5c, 0xb4, + 0x60, 0x5c, 0xc5, 0xca, 0x68, 0xdd, 0x2b, 0xba, 0x68, 0x3a, 0x97, 0x3d, 0x0e, 0x6a, 0xab, 0xff, + 0x40, 0x6b, 0xb5, 0x10, 0x4a, 0xc3, 0x26, 0x94, 0xc3, 0x80, 0x33, 0x9e, 0x67, 0x43, 0x5d, 0x67, + 0x32, 0x25, 0x87, 0x1e, 0x70, 0xc6, 0x61, 0xcc, 0x16, 0xe1, 0xf5, 0x89, 0x75, 0x86, 0xb6, 0x48, + 0x17, 0x21, 0xaa, 0x3e, 0xcb, 0x71, 0xcc, 0xbf, 0x9f, 0x87, 0x73, 0x49, 0xf3, 0x78, 0x7a, 0xbd, + 0x55, 0x27, 0x70, 0xda, 0xe1, 0x11, 0x3b, 0xe0, 0x4a, 0x5f, 0xd3, 0x30, 0xa0, 0x5a, 0x36, 0x4d, + 0x69, 0x90, 0x99, 0x6a, 0x10, 0x1a, 0x71, 0xbc, 0x41, 0xb2, 0x19, 0xe4, 0x1e, 0xe4, 0x1b, 0x34, + 0x12, 0x61, 0x97, 0x2f, 0xf5, 0x8d, 0xaa, 0xda, 0xae, 0xeb, 0x0d, 0x1a, 0xf1, 0x49, 0xe4, 0x9e, + 0xeb, 0x54, 0xf3, 0x24, 0x67, 0xea, 0xf8, 0x26, 0x14, 0x17, 0x1e, 0x77, 0x69, 0x33, 0x12, 0xd1, + 0x96, 0x57, 0x0f, 0xe7, 0xc7, 0x71, 0x95, 0x98, 0x4e, 0x8a, 0x00, 0x75, 0xb0, 0x38, 0xca, 0xc5, + 0x37, 0xa1, 0x24, 0x2b, 0x3f, 0x56, 0x6c, 0xe2, 0x5b, 0x30, 0xa6, 0x54, 0x72, 0xac, 0x45, 0xff, + 0x0b, 0x03, 0x8a, 0x4c, 0xe8, 0x6d, 0xbc, 0x7e, 0x42, 0x25, 0xd2, 0x2d, 0x4d, 0x22, 0x4d, 0x2b, + 0x41, 0x34, 0xb8, 0x2f, 0x5f, 0x3f, 0x42, 0x16, 0xed, 0x1b, 0x00, 0x09, 0x32, 0xb9, 0x03, 0xa3, + 0xfc, 0xd9, 0x47, 0xe6, 0xae, 0x54, 0xa3, 0x72, 0x44, 0x49, 0xa2, 0xe5, 0xf8, 0xdd, 0xb4, 0x5a, + 0x28, 0xa9, 0xc9, 0x7c, 0xe2, 0xb9, 0xac, 0x86, 0x81, 0x32, 0x36, 0x73, 0x7e, 0x87, 0x47, 0x69, + 0x84, 0x4a, 0x8e, 0xa7, 0x6c, 0x17, 0xe6, 0x9a, 0xb8, 0xd8, 0xc8, 0x1f, 0xc6, 0xe4, 0x9c, 0x60, + 0x92, 0x7d, 0xe7, 0xf1, 0x27, 0xc0, 0xe3, 0x1e, 0x64, 0xc3, 0xde, 0x85, 0xf1, 0xdb, 0x7e, 0xf0, + 0xc8, 0x09, 0xdc, 0xda, 0x36, 0x15, 0x3e, 0xe7, 0x25, 0x74, 0x1c, 0x9f, 0x78, 0xc0, 0xe1, 0xb6, + 0xc3, 0x0a, 0x7e, 0xbe, 0x5f, 0x2d, 0xd4, 0x7d, 0xbf, 0x65, 0x69, 0xe8, 0x64, 0x05, 0x26, 0xee, + 0x3b, 0x8f, 0xc5, 0xeb, 0xde, 0xda, 0xda, 0x92, 0xf0, 0x75, 0xb9, 0x7a, 0xb0, 0x5f, 0xbd, 0xd0, + 0x76, 0x1e, 0xc7, 0xaf, 0x82, 0x83, 0x9d, 0xab, 0x75, 0x7a, 0xe2, 0xc1, 0xe4, 0xaa, 0x1f, 0x44, + 0xa2, 0x12, 0xa6, 0xd3, 0xe6, 0x07, 0x3c, 0xce, 0xdd, 0xc8, 0x7c, 0x9c, 0xbb, 0xc0, 0x14, 0x79, + 0xfb, 0x41, 0x4c, 0xae, 0x05, 0xeb, 0x69, 0x8c, 0xc9, 0xbb, 0x30, 0x3d, 0x47, 0x83, 0xc8, 0x7b, + 0xe0, 0x35, 0x9d, 0x88, 0xde, 0xf6, 0x83, 0xb6, 0x13, 0x89, 0x0b, 0x15, 0x34, 0xa8, 0x9b, 0x94, + 0x73, 0x6a, 0x3b, 0x91, 0xd5, 0x8f, 0x49, 0xbe, 0x9c, 0xe5, 0x3d, 0x34, 0x82, 0xdd, 0x7f, 0x95, + 0x29, 0x05, 0x19, 0xde, 0x43, 0x03, 0x86, 0x20, 0xc3, 0x8f, 0x68, 0xfb, 0xb0, 0x47, 0xd2, 0x52, + 0xfd, 0xa6, 0x78, 0xb0, 0x3d, 0xfa, 0x11, 0x34, 0x9e, 0xb7, 0x01, 0x8f, 0xa1, 0xb3, 0x90, 0xaf, + 0xaf, 0xde, 0xc6, 0x2b, 0x12, 0xf1, 0x28, 0x49, 0x3b, 0x3b, 0x4e, 0xa7, 0x89, 0xba, 0x8c, 0xf0, + 0x74, 0x50, 0x05, 0x5e, 0x7d, 0xf5, 0x36, 0x71, 0xe0, 0xf4, 0x2a, 0x0d, 0xda, 0x5e, 0xf4, 0x85, + 0x9b, 0x37, 0x95, 0x89, 0x2a, 0x61, 0xd3, 0x6e, 0x88, 0xa6, 0x55, 0xbb, 0x88, 0x62, 0x3f, 0xbe, + 0x79, 0x33, 0x73, 0x3a, 0xe2, 0x86, 0x65, 0xf1, 0x22, 0x0b, 0x30, 0x79, 0xdf, 0x79, 0x2c, 0x9e, + 0xaf, 0x63, 0x1b, 0x2f, 0x8f, 0xbe, 0xf6, 0xb8, 0xb0, 0x9a, 0x49, 0x91, 0x3a, 0xc5, 0x3a, 0x11, + 0x79, 0x07, 0xc6, 0x92, 0xe5, 0x15, 0xe2, 0xc3, 0x65, 0x9e, 0xbb, 0x65, 0x2a, 0x8b, 0x53, 0xbb, + 0x4b, 0x52, 0xd0, 0xc9, 0x7a, 0x6c, 0xa2, 0x73, 0x85, 0x14, 0x9d, 0x15, 0xcb, 0xf5, 0x1b, 0xaa, + 0x89, 0xee, 0x60, 0x89, 0xd6, 0xad, 0xa9, 0x58, 0x45, 0xe7, 0xde, 0x3a, 0x96, 0xce, 0x45, 0xb1, + 0xfc, 0x57, 0x03, 0xbf, 0xdd, 0x8d, 0xd0, 0x6b, 0x31, 0x65, 0xf9, 0x77, 0xb1, 0x24, 0xc3, 0xf2, + 0xe7, 0x24, 0xd9, 0xaf, 0xf2, 0x13, 0x4f, 0xf0, 0x2a, 0x4f, 0xa1, 0xb0, 0xe4, 0x37, 0x77, 0xd1, + 0x4d, 0xb1, 0x5c, 0xff, 0x90, 0xc9, 0x8f, 0x96, 0xdf, 0xdc, 0x7d, 0x7a, 0xaf, 0xc9, 0xc8, 0x9e, + 0x2c, 0xb3, 0xbe, 0xb3, 0x65, 0x25, 0xaa, 0x9e, 0x99, 0xd2, 0x5e, 0xda, 0xb4, 0x32, 0xae, 0xa8, + 0xf0, 0x55, 0x28, 0x3b, 0x62, 0xe9, 0xe4, 0x84, 0x42, 0x65, 0x9e, 0x86, 0xbb, 0x91, 0xdf, 0x9d, + 0x6b, 0x79, 0xdd, 0x2d, 0xdf, 0x09, 0xdc, 0x99, 0xca, 0x00, 0x81, 0xf1, 0x72, 0xa6, 0xc0, 0x98, + 0x76, 0x39, 0xbd, 0xdd, 0x94, 0x0c, 0xac, 0x3e, 0x96, 0xe6, 0x97, 0x52, 0xcd, 0x26, 0x8b, 0x30, + 0x2a, 0x90, 0xc4, 0xc1, 0xd0, 0x5f, 0xdd, 0xb3, 0x99, 0xd5, 0x8d, 0x8a, 0xea, 0x2c, 0x49, 0x6f, + 0xfe, 0xd9, 0x18, 0x4c, 0xea, 0x22, 0x9c, 0xe9, 0x54, 0x4b, 0xfe, 0xb6, 0xd7, 0x91, 0x96, 0x19, + 0x4f, 0xfd, 0x80, 0x10, 0x2d, 0x85, 0x38, 0x42, 0xc8, 0x8b, 0x00, 0xf1, 0xe3, 0xa3, 0x34, 0xbe, + 0x44, 0xc2, 0x73, 0xa5, 0x80, 0xfc, 0x0a, 0xc0, 0xb2, 0xef, 0xd2, 0x38, 0x7b, 0xc8, 0x21, 0x57, + 0x26, 0x2f, 0x8b, 0x2b, 0x13, 0x91, 0xa4, 0xfc, 0x60, 0xbf, 0x7a, 0xb6, 0xe3, 0xbb, 0xb4, 0x3f, + 0x6d, 0x88, 0xc2, 0x91, 0x7c, 0x0e, 0x46, 0xac, 0x5e, 0x8b, 0xca, 0x64, 0x16, 0x63, 0x72, 0x4a, + 0x7b, 0x2d, 0x25, 0x79, 0x61, 0xd0, 0x4b, 0xdf, 0x94, 0x33, 0x00, 0x79, 0x1f, 0xe0, 0x5e, 0x6f, + 0x8b, 0xde, 0x09, 0xfc, 0x5e, 0x57, 0x46, 0xcb, 0xa2, 0xa1, 0xb6, 0x1b, 0xa7, 0x3e, 0xb2, 0xb7, + 0xb1, 0x50, 0xad, 0x3c, 0x21, 0x21, 0x2b, 0x30, 0x2a, 0x36, 0x88, 0xb8, 0x89, 0x7e, 0x2e, 0xeb, + 0x0e, 0x44, 0x39, 0x25, 0x45, 0x76, 0x09, 0x04, 0xeb, 0xd7, 0x12, 0xdc, 0xd0, 0x7c, 0x07, 0xca, + 0x8c, 0x3d, 0x33, 0x26, 0x43, 0x21, 0x1d, 0xd1, 0x4b, 0x4f, 0x69, 0x10, 0x33, 0x3c, 0xb5, 0x1c, + 0x57, 0x31, 0x01, 0xf9, 0x32, 0xe6, 0x83, 0x11, 0x43, 0x7d, 0xe8, 0x55, 0xda, 0x4b, 0x7d, 0x43, + 0x7d, 0xc6, 0xe9, 0x76, 0x33, 0x12, 0x68, 0xc5, 0xfc, 0xc8, 0x76, 0x1c, 0xc9, 0x12, 0x67, 0xb0, + 0x3d, 0xa4, 0x82, 0x6b, 0x7d, 0x15, 0xcc, 0xc8, 0xe0, 0x8c, 0xfe, 0x2c, 0x30, 0x1a, 0x5f, 0xd2, + 0x85, 0x4a, 0x92, 0x7a, 0x4a, 0xd4, 0x05, 0x87, 0xd5, 0xf5, 0x6a, 0x5f, 0x5d, 0xea, 0x04, 0xf6, + 0x55, 0xd7, 0xc7, 0x9d, 0xb8, 0x49, 0xb6, 0x51, 0x51, 0xdf, 0xd8, 0x61, 0xf5, 0xbd, 0xd8, 0x57, + 0xdf, 0x69, 0x77, 0xab, 0xbf, 0x9e, 0x14, 0x4f, 0xf2, 0x0e, 0x4c, 0x48, 0x08, 0xee, 0x0f, 0xbc, + 0xc2, 0x12, 0x1a, 0xac, 0xbb, 0x85, 0x4e, 0x54, 0x7a, 0x0a, 0x14, 0x15, 0x59, 0xa5, 0xe6, 0xab, + 0x63, 0x42, 0xa3, 0x4e, 0xaf, 0x0a, 0x1d, 0x99, 0x7c, 0x11, 0xc6, 0x16, 0xdb, 0xac, 0x23, 0x7e, + 0xc7, 0x89, 0x28, 0x8a, 0xdb, 0xe4, 0x5a, 0x50, 0x29, 0x51, 0x96, 0x2a, 0xcf, 0x35, 0x98, 0x14, + 0xa9, 0xc7, 0x95, 0x42, 0xc1, 0x06, 0x8f, 0x5f, 0x30, 0x88, 0x35, 0x1c, 0x0a, 0xe1, 0xfa, 0x6c, + 0xc6, 0xd5, 0x9c, 0xc2, 0x1e, 0x8f, 0x54, 0x7e, 0x6f, 0x61, 0x8b, 0x0d, 0xa1, 0x0d, 0x9e, 0xce, + 0x93, 0xbc, 0x0b, 0x63, 0x22, 0x0a, 0xb0, 0x66, 0x2d, 0x87, 0x33, 0x15, 0xec, 0x3c, 0x3a, 0x99, + 0xca, 0x80, 0x41, 0xdb, 0x09, 0x52, 0xef, 0x33, 0x09, 0x3e, 0xf9, 0x02, 0x9c, 0xd9, 0xf4, 0x3a, + 0xae, 0xff, 0x28, 0x14, 0xf2, 0x4f, 0x08, 0xba, 0xe9, 0xc4, 0x67, 0xe5, 0x11, 0x2f, 0xb7, 0xa5, + 0x60, 0xee, 0x13, 0x7c, 0x99, 0x1c, 0xc8, 0xaf, 0xf7, 0x71, 0xe6, 0x2b, 0x88, 0x1c, 0xb6, 0x82, + 0x66, 0xfb, 0x56, 0x50, 0x7f, 0xf5, 0xe9, 0xe5, 0x94, 0x59, 0x8d, 0xf9, 0xd7, 0x79, 0x38, 0x3f, + 0x40, 0xd8, 0x24, 0x6f, 0x86, 0xc6, 0x91, 0x6f, 0x86, 0x5f, 0x61, 0x9b, 0xdb, 0xf1, 0xda, 0xe1, + 0x9a, 0x9f, 0xbc, 0x94, 0x24, 0xd7, 0xab, 0x58, 0x26, 0xd3, 0x01, 0xc8, 0xd0, 0xf5, 0x0b, 0x4d, + 0xa4, 0xb0, 0x23, 0xbf, 0xef, 0x32, 0x4b, 0x67, 0xd6, 0xf7, 0x6a, 0x97, 0xff, 0x25, 0x79, 0xb5, + 0xd3, 0xef, 0xca, 0x0b, 0x4f, 0xf5, 0xae, 0x3c, 0xfb, 0xf6, 0x6e, 0xe4, 0x49, 0xee, 0x28, 0xff, + 0x43, 0xea, 0x9d, 0xf0, 0x97, 0x71, 0xaa, 0xaf, 0xc2, 0xc8, 0xe6, 0x0e, 0x0d, 0xa4, 0xa3, 0x28, + 0x36, 0xe4, 0x11, 0x03, 0xa8, 0x0d, 0x41, 0x0c, 0xf3, 0x1b, 0x30, 0xae, 0x56, 0x46, 0xaa, 0x30, + 0x82, 0xbf, 0x85, 0xe9, 0x8f, 0xaf, 0x74, 0x58, 0xaf, 0xc5, 0xe1, 0x47, 0x26, 0xff, 0x49, 0x46, + 0x21, 0x7f, 0xd4, 0x28, 0x98, 0x7f, 0x66, 0x40, 0x01, 0x63, 0x9f, 0xdf, 0x80, 0xb2, 0xbc, 0xc3, + 0x51, 0xe3, 0x81, 0x4f, 0xcb, 0x2b, 0x9e, 0x50, 0x7f, 0x68, 0x15, 0x40, 0x56, 0xd5, 0x06, 0x0d, + 0xb6, 0xb4, 0xf7, 0xf8, 0x87, 0x0c, 0xa0, 0x56, 0x85, 0x18, 0xc7, 0x18, 0x12, 0xf4, 0x39, 0x10, + 0x86, 0x47, 0x01, 0xf9, 0x72, 0x9f, 0x83, 0x3e, 0x83, 0x43, 0x62, 0x99, 0x3f, 0x30, 0xe0, 0x6c, + 0xa6, 0xf8, 0x66, 0xb5, 0xf2, 0x73, 0x42, 0x59, 0x11, 0xe9, 0x43, 0x82, 0x63, 0x1c, 0xc7, 0xb7, + 0xe0, 0x18, 0xd3, 0xfb, 0x29, 0x28, 0xc7, 0x5a, 0x29, 0x39, 0x23, 0xa7, 0x0e, 0x0d, 0x7d, 0x99, + 0xac, 0xe9, 0x17, 0x06, 0x14, 0x59, 0x13, 0x4e, 0xac, 0x93, 0x78, 0xf6, 0xb5, 0x0f, 0xeb, 0xd2, + 0x50, 0xae, 0xe1, 0x3f, 0x2c, 0x02, 0x24, 0xc8, 0x64, 0x0b, 0x26, 0x57, 0x16, 0xe7, 0xe7, 0x16, + 0x5d, 0xda, 0x89, 0xf0, 0xf9, 0x21, 0x15, 0x82, 0xbc, 0xf0, 0x38, 0xa2, 0x41, 0xc7, 0x69, 0x09, + 0x84, 0xbd, 0x64, 0x7b, 0xfa, 0x9e, 0xdb, 0xb4, 0xbd, 0x98, 0x4e, 0x3d, 0x47, 0x75, 0x8e, 0xac, + 0x8e, 0x46, 0xed, 0xfe, 0x92, 0x52, 0x47, 0x6e, 0xc8, 0x3a, 0x42, 0xa7, 0xdd, 0x1a, 0x50, 0x87, + 0xce, 0x91, 0xec, 0x40, 0xe5, 0x0e, 0xca, 0x6e, 0xa5, 0x96, 0xfc, 0xe1, 0xb5, 0x3c, 0x2f, 0x6a, + 0x79, 0x86, 0x0b, 0xfd, 0xec, 0x7a, 0xfa, 0xb8, 0x26, 0x2b, 0xb7, 0x70, 0xe4, 0xca, 0xfd, 0x2d, + 0x03, 0x8a, 0xfc, 0x70, 0x88, 0x33, 0xdb, 0x67, 0x1e, 0x3f, 0x9b, 0x4f, 0xe7, 0xf8, 0xa9, 0x44, + 0xf8, 0x9f, 0x6a, 0x37, 0xf1, 0x32, 0x32, 0x9f, 0x4a, 0x93, 0x2f, 0xef, 0xf6, 0x50, 0x9f, 0xe0, + 0x25, 0x89, 0x87, 0x06, 0xcf, 0x90, 0xaf, 0x72, 0xe1, 0x18, 0xea, 0x47, 0xba, 0x46, 0x9f, 0xf0, + 0x23, 0x5d, 0x4b, 0x50, 0x16, 0x2e, 0x07, 0xf5, 0x3d, 0x61, 0x35, 0x48, 0xb3, 0x32, 0x86, 0x2b, + 0x79, 0x76, 0x39, 0xc8, 0xde, 0xd2, 0xb2, 0x64, 0xc5, 0x88, 0x64, 0x05, 0xca, 0x89, 0x87, 0x7b, + 0x59, 0x7b, 0xa0, 0x89, 0xe1, 0xc2, 0x27, 0x8f, 0x87, 0x66, 0x65, 0x3a, 0xb4, 0x27, 0x3c, 0xcc, + 0x6f, 0x1b, 0x50, 0x49, 0xaf, 0x17, 0xf2, 0x0e, 0x8c, 0xc5, 0x41, 0x06, 0xf1, 0xc3, 0x27, 0xde, + 0xb0, 0x24, 0x51, 0x09, 0xda, 0x13, 0xa8, 0x8a, 0x4e, 0x66, 0xa1, 0xc4, 0xb6, 0x9d, 0x92, 0x26, + 0x15, 0xe5, 0x49, 0x4f, 0xc0, 0xd4, 0x07, 0x07, 0x89, 0xa7, 0xec, 0xda, 0xff, 0x98, 0x87, 0x31, + 0x65, 0xb2, 0xc8, 0x55, 0x28, 0x2d, 0x86, 0x4b, 0x7e, 0x73, 0x97, 0xba, 0xe2, 0x1e, 0x13, 0xbf, + 0xc1, 0xe6, 0x85, 0x76, 0x0b, 0x81, 0x56, 0x5c, 0x4c, 0xea, 0x30, 0xc1, 0xff, 0x93, 0x21, 0x6a, + 0xb9, 0xe4, 0x0e, 0x86, 0x23, 0xcb, 0xe0, 0x34, 0xf5, 0x84, 0xd5, 0x48, 0xc8, 0x57, 0x01, 0x38, + 0x80, 0xcd, 0xef, 0x10, 0x1e, 0x87, 0x72, 0x03, 0x9f, 0x15, 0x15, 0x44, 0x9e, 0xda, 0x43, 0x5c, + 0x0a, 0x0a, 0x43, 0xfc, 0x1e, 0x94, 0xdf, 0xdc, 0x1d, 0xfe, 0x0b, 0x70, 0xc9, 0xf7, 0xa0, 0xfc, + 0xe6, 0xae, 0x9d, 0xed, 0x7e, 0xa2, 0xb2, 0x24, 0xdf, 0x31, 0xe0, 0xa2, 0x45, 0x9b, 0xfe, 0x43, + 0x1a, 0xec, 0xd5, 0x22, 0xc4, 0x52, 0x6b, 0x3c, 0xda, 0xd7, 0xe5, 0x96, 0xa8, 0xf1, 0xe5, 0x40, + 0x70, 0x41, 0xaf, 0xfa, 0x76, 0x37, 0xb2, 0x0f, 0x69, 0xc2, 0x21, 0x55, 0x9a, 0xff, 0xd9, 0x50, + 0xb6, 0x00, 0x59, 0x86, 0x72, 0xbc, 0x58, 0xc4, 0x35, 0x4b, 0xac, 0x1c, 0x49, 0xb8, 0x45, 0x1f, + 0xd4, 0x9f, 0x11, 0x57, 0x8e, 0xa7, 0xe3, 0x25, 0xa7, 0xed, 0x08, 0x09, 0x24, 0x9f, 0x87, 0x02, + 0x4e, 0xd5, 0xd1, 0x79, 0x75, 0xe4, 0x51, 0x53, 0x60, 0x73, 0x84, 0xad, 0x46, 0x4a, 0xf2, 0x9a, + 0x78, 0x7e, 0xce, 0x6b, 0x19, 0x2b, 0x19, 0x88, 0xb5, 0x23, 0x3e, 0x63, 0x12, 0x8f, 0x27, 0x65, + 0xb5, 0xfe, 0x2d, 0x03, 0x4e, 0xaf, 0xcf, 0xde, 0xb6, 0xe8, 0xb6, 0x87, 0x21, 0x7e, 0x9e, 0x8f, + 0x6f, 0x43, 0xe4, 0x02, 0xe4, 0x2d, 0xe7, 0x91, 0xc8, 0x7f, 0x87, 0xee, 0xce, 0x81, 0xf3, 0xc8, + 0x62, 0x30, 0xf2, 0x0a, 0x94, 0xef, 0xd1, 0xbd, 0xbb, 0x4e, 0xc7, 0x6d, 0x51, 0x91, 0xe7, 0x0e, + 0xb3, 0x2b, 0xec, 0xd2, 0x3d, 0x7b, 0x07, 0xa1, 0x56, 0x82, 0x80, 0x0f, 0x5f, 0xbd, 0xad, 0x7b, + 0x94, 0xbf, 0x0f, 0x8c, 0x8b, 0x87, 0xaf, 0xde, 0x16, 0x7a, 0xd4, 0xf2, 0x12, 0xf3, 0x8f, 0xf2, + 0x50, 0x49, 0xef, 0x7e, 0xf2, 0x3e, 0x8c, 0xaf, 0x3a, 0x61, 0xf8, 0xc8, 0x0f, 0xdc, 0xbb, 0x4e, + 0xb8, 0x23, 0x9a, 0xc2, 0x03, 0x07, 0x05, 0xdc, 0xde, 0x71, 0xb4, 0x94, 0x4d, 0x1a, 0x01, 0xd3, + 0x0a, 0xd6, 0x84, 0x37, 0xaf, 0xb2, 0x8b, 0x23, 0x3f, 0xea, 0xa6, 0x52, 0xf1, 0x49, 0x34, 0xe2, + 0xc2, 0x54, 0x6a, 0x2c, 0xe2, 0x0d, 0x14, 0x87, 0x25, 0xa5, 0x47, 0x8a, 0x5f, 0xc0, 0xf4, 0x66, + 0x1f, 0x60, 0x3a, 0x1b, 0x59, 0xa2, 0x46, 0xcc, 0xa4, 0x88, 0xc8, 0x5b, 0x00, 0xeb, 0xb3, 0xb7, + 0x31, 0x02, 0x96, 0x06, 0xc2, 0x1d, 0x14, 0xad, 0x69, 0xc6, 0xa4, 0xc9, 0xc1, 0xaa, 0xd5, 0x90, + 0x20, 0x93, 0x37, 0x20, 0xcf, 0x03, 0x9d, 0xd4, 0x44, 0x33, 0xf7, 0x6f, 0xd7, 0x78, 0x6c, 0x08, + 0x7f, 0x0b, 0xd4, 0x2f, 0x55, 0x19, 0x3e, 0x59, 0x52, 0xc2, 0x64, 0x8a, 0x5a, 0x8a, 0x0e, 0x09, + 0x8e, 0x47, 0x7f, 0x88, 0x78, 0x99, 0x7f, 0x96, 0x87, 0x72, 0x5c, 0x27, 0x21, 0x80, 0x9a, 0x98, + 0x78, 0xc8, 0xc3, 0xff, 0xc9, 0x05, 0x28, 0x49, 0xe5, 0x4b, 0x3c, 0xe6, 0x8d, 0x86, 0x42, 0xf1, + 0x9a, 0x01, 0xa9, 0x65, 0x71, 0xc5, 0xcb, 0x92, 0x3f, 0xc9, 0x4d, 0x88, 0x55, 0xa8, 0x41, 0xba, + 0x56, 0x81, 0x2d, 0x65, 0x2b, 0x46, 0x23, 0x93, 0x90, 0xf3, 0xb8, 0xfb, 0x68, 0xd9, 0xca, 0x79, + 0x2e, 0x79, 0x1f, 0x4a, 0x8e, 0xeb, 0x52, 0xd7, 0x76, 0xa2, 0x21, 0xbe, 0x5b, 0x58, 0x62, 0xdc, + 0xf8, 0x59, 0x87, 0x54, 0xb5, 0x88, 0xd4, 0xa0, 0x8c, 0x9f, 0xad, 0xeb, 0x85, 0x43, 0x7d, 0xeb, + 0x2e, 0xe1, 0x50, 0x62, 0x64, 0xeb, 0x21, 0x75, 0xc9, 0xcb, 0x50, 0x60, 0x4b, 0x4c, 0x9c, 0x94, + 0x71, 0xca, 0xb0, 0x95, 0xb5, 0x55, 0x3e, 0x60, 0x77, 0x4f, 0x59, 0x88, 0x40, 0x5e, 0x80, 0x7c, + 0x6f, 0xf6, 0x81, 0x38, 0x03, 0x2b, 0xc9, 0x02, 0x8b, 0xd1, 0x58, 0x31, 0xb9, 0x05, 0xa5, 0x47, + 0x7a, 0x84, 0xd3, 0xd9, 0xd4, 0xd4, 0xc5, 0xf8, 0x31, 0x62, 0xbd, 0x04, 0x45, 0x1e, 0x4f, 0x64, + 0x3e, 0x07, 0x90, 0x54, 0xdd, 0xff, 0xe6, 0x6a, 0x7e, 0x15, 0xca, 0x71, 0x95, 0xe4, 0x59, 0x50, + 0xf6, 0x30, 0xdf, 0x6f, 0x56, 0x79, 0x37, 0xde, 0xc9, 0xe7, 0x61, 0xb4, 0xcb, 0x66, 0x55, 0x66, + 0xb7, 0xb4, 0xd8, 0x36, 0x66, 0xdb, 0x66, 0x06, 0x46, 0xc5, 0xb2, 0xe5, 0xae, 0xd0, 0x96, 0xfc, + 0x69, 0xfe, 0x85, 0x81, 0x91, 0xd2, 0x4a, 0x3b, 0xc9, 0xf3, 0x30, 0xd1, 0x0c, 0x28, 0x1e, 0xd4, + 0x0e, 0x53, 0x18, 0x45, 0x3d, 0xe3, 0x09, 0x70, 0xd1, 0x25, 0x2f, 0xc1, 0x54, 0x92, 0x6e, 0xd3, + 0x6e, 0x6e, 0x89, 0xf8, 0xc6, 0x71, 0x6b, 0xa2, 0x2b, 0xf3, 0x6d, 0xce, 0x6d, 0xa1, 0xdb, 0x73, + 0x45, 0x8d, 0x25, 0x8a, 0x64, 0xea, 0xcc, 0xb2, 0x35, 0xa5, 0xc0, 0x31, 0x60, 0xf2, 0x1c, 0x14, + 0x1d, 0x67, 0xbb, 0xe7, 0x71, 0x17, 0xcc, 0x71, 0x4b, 0xfc, 0x22, 0x9f, 0x86, 0xe9, 0xd0, 0xdb, + 0xee, 0x38, 0x51, 0x2f, 0xa0, 0x72, 0xf7, 0xe1, 0x92, 0x9a, 0xb0, 0x2a, 0x71, 0x81, 0xd8, 0x7f, + 0x66, 0x1d, 0xa6, 0xfb, 0x76, 0x0c, 0x79, 0x95, 0x5b, 0x29, 0x42, 0xcf, 0x18, 0xe7, 0x46, 0x19, + 0x13, 0xb6, 0xa9, 0xef, 0x90, 0x72, 0x24, 0xb3, 0x03, 0xe3, 0xea, 0x39, 0x71, 0x44, 0x9c, 0xe7, + 0x39, 0xf4, 0xdc, 0xe2, 0xf2, 0xab, 0x78, 0xb0, 0x5f, 0xcd, 0x79, 0x2e, 0xfa, 0x6b, 0x5d, 0x81, + 0x92, 0xd4, 0x76, 0xd4, 0x2f, 0x27, 0x08, 0xc5, 0x78, 0xcf, 0x8a, 0x4b, 0xcd, 0x97, 0x61, 0x54, + 0x1c, 0x05, 0x87, 0x27, 0xcf, 0x35, 0xbf, 0x99, 0x83, 0x29, 0x8b, 0xb2, 0xed, 0x28, 0xbe, 0x49, + 0xf0, 0x09, 0x4b, 0x13, 0xaa, 0xf5, 0xed, 0x90, 0xb0, 0xea, 0x1f, 0x19, 0x70, 0x3a, 0x03, 0xf7, + 0x23, 0x65, 0x22, 0x7a, 0x13, 0xca, 0xf3, 0x9e, 0xd3, 0xaa, 0xb9, 0x6e, 0xec, 0x81, 0x86, 0x5a, + 0xad, 0xcb, 0x16, 0xbf, 0xc3, 0xa0, 0xaa, 0x52, 0x10, 0xa3, 0x92, 0x6b, 0x62, 0x51, 0x24, 0x99, + 0xcf, 0x64, 0x22, 0x52, 0xe0, 0x6d, 0x4a, 0xd2, 0x90, 0x62, 0x9c, 0x0f, 0x07, 0x26, 0x8f, 0x8c, + 0x27, 0x76, 0xea, 0xb2, 0xe3, 0x7c, 0xd2, 0xdd, 0x1b, 0xca, 0x7c, 0xfe, 0x76, 0x0e, 0xce, 0x65, + 0x13, 0x7e, 0xd4, 0xa4, 0x52, 0x18, 0xd3, 0xae, 0xe4, 0x7a, 0x45, 0xb5, 0x87, 0x07, 0xc0, 0x23, + 0x7e, 0x82, 0x40, 0x1e, 0xc0, 0xc4, 0x92, 0x13, 0x46, 0x77, 0xa9, 0x13, 0x44, 0x5b, 0xd4, 0x89, + 0x86, 0xd0, 0xc4, 0xe3, 0xaf, 0x7f, 0xe2, 0x11, 0xb4, 0x23, 0x29, 0xd3, 0x5f, 0xff, 0xd4, 0xd8, + 0xc6, 0x0b, 0xa5, 0x30, 0xc4, 0x42, 0xf9, 0x3a, 0x4c, 0x35, 0x68, 0xdb, 0xe9, 0xee, 0xf8, 0x01, + 0x15, 0x3e, 0x58, 0xd7, 0x61, 0x22, 0x06, 0x65, 0xae, 0x16, 0xbd, 0x58, 0xc3, 0x57, 0x06, 0x22, + 0x11, 0x25, 0x7a, 0xb1, 0xf9, 0xfb, 0x39, 0x38, 0x5f, 0x6b, 0x8a, 0x67, 0x5d, 0x51, 0x20, 0x1f, + 0xb3, 0x3e, 0xe6, 0xba, 0xc9, 0x0d, 0x28, 0xdf, 0x77, 0x1e, 0xe3, 0x67, 0xab, 0x43, 0x91, 0x9a, + 0x84, 0x2b, 0x48, 0xce, 0x63, 0x3b, 0xbe, 0xbe, 0xb3, 0x12, 0x9c, 0xa7, 0xf9, 0x65, 0x6b, 0x13, + 0x8a, 0x77, 0xfd, 0x96, 0x2b, 0x8e, 0x12, 0xe1, 0xee, 0xb5, 0x83, 0x10, 0x4b, 0x94, 0x98, 0x7f, + 0x65, 0xc0, 0x64, 0xdc, 0x62, 0x6c, 0xc2, 0xc7, 0x3e, 0x24, 0xa9, 0x6f, 0x7c, 0x97, 0x87, 0xf8, + 0xc6, 0xf7, 0xc8, 0x93, 0x8d, 0x84, 0xf9, 0xcf, 0x0d, 0x98, 0xd6, 0x7b, 0xc9, 0x4e, 0x22, 0xa5, + 0x21, 0xc6, 0x90, 0x0d, 0xc9, 0x3d, 0xb5, 0x29, 0xc9, 0x0f, 0x9c, 0x92, 0x6f, 0xe5, 0x60, 0x2c, + 0x6e, 0xec, 0x27, 0x2c, 0x40, 0x36, 0xee, 0xd7, 0x50, 0xee, 0xaf, 0x0d, 0x45, 0x56, 0x08, 0x2f, + 0xd3, 0xcf, 0x43, 0x51, 0x6c, 0x26, 0x3d, 0x42, 0xa7, 0x6f, 0x76, 0x93, 0x2f, 0x38, 0xe2, 0x84, + 0x86, 0x96, 0xa0, 0x43, 0xff, 0xe2, 0x4d, 0xba, 0x25, 0xdc, 0x15, 0x4e, 0xec, 0x19, 0x95, 0xed, + 0x5f, 0x9c, 0x74, 0x6c, 0xa8, 0xd3, 0xe9, 0x1f, 0x15, 0xa0, 0x92, 0x26, 0x39, 0x3a, 0x04, 0x79, + 0xb5, 0xb7, 0x25, 0x4c, 0x6e, 0xb4, 0xc9, 0xbb, 0xbd, 0x2d, 0x8b, 0xc1, 0xc8, 0x4b, 0x50, 0x58, + 0x0d, 0xbc, 0x87, 0xc2, 0xc6, 0x46, 0x17, 0x95, 0x6e, 0xe0, 0x3d, 0x54, 0x1d, 0xed, 0x58, 0x39, + 0xda, 0xc4, 0x4b, 0x0d, 0xe5, 0xe3, 0xb9, 0xdc, 0x26, 0x6e, 0x85, 0xe9, 0x2c, 0x15, 0x12, 0x8d, + 0x1d, 0x95, 0x75, 0xea, 0x04, 0x22, 0x5c, 0x56, 0x88, 0x33, 0x3c, 0x2a, 0xb7, 0x10, 0xcc, 0x13, + 0x5b, 0x5a, 0x2a, 0x12, 0x69, 0x01, 0x51, 0x7e, 0x0e, 0xff, 0x25, 0x79, 0xf9, 0x45, 0x98, 0x33, + 0x2a, 0x6b, 0x5b, 0xdd, 0xcd, 0x19, 0x7c, 0x9f, 0xe6, 0x5d, 0xe7, 0x2a, 0x94, 0xf1, 0xea, 0x0e, + 0x2f, 0x64, 0x4a, 0x47, 0x32, 0x93, 0x4e, 0x8d, 0x80, 0x8f, 0xc1, 0x76, 0x7c, 0x2d, 0x93, 0x30, + 0x21, 0xef, 0xc1, 0x98, 0xea, 0x89, 0xc7, 0xfd, 0xc5, 0x2e, 0xf1, 0x10, 0x8c, 0x01, 0x39, 0xa2, + 0x54, 0x02, 0xf3, 0x35, 0x75, 0x95, 0x88, 0x43, 0xfb, 0xd0, 0x55, 0x62, 0x7e, 0x1f, 0xd5, 0xf8, + 0xb6, 0x1f, 0x51, 0xa1, 0xbd, 0x9c, 0x58, 0x39, 0x96, 0x5c, 0x85, 0x8f, 0x68, 0x0e, 0x09, 0x5a, + 0xef, 0x8e, 0xf1, 0xd9, 0xd8, 0x7f, 0x6c, 0xc0, 0xd9, 0x4c, 0x5a, 0x72, 0x1d, 0x20, 0xd1, 0x11, + 0xc5, 0x28, 0xf1, 0x8c, 0xa1, 0x31, 0xd4, 0x52, 0x30, 0xc8, 0x57, 0xd2, 0xda, 0xdd, 0xd1, 0x87, + 0x93, 0xcc, 0x92, 0x3f, 0xa9, 0x6b, 0x77, 0x19, 0x3a, 0x9d, 0xf9, 0xa3, 0x3c, 0x4c, 0xf7, 0x7d, + 0x5d, 0xed, 0x88, 0x2f, 0x9f, 0xec, 0xa6, 0xbe, 0xdd, 0xc3, 0x9f, 0x6d, 0xae, 0x0d, 0xfa, 0xb6, + 0x5b, 0xc6, 0x97, 0x7c, 0xf0, 0x66, 0x4d, 0x24, 0xab, 0x3d, 0xe2, 0x83, 0x3e, 0x61, 0xf6, 0x57, + 0x9f, 0x3e, 0x3d, 0xb0, 0xb6, 0xa7, 0xf0, 0xf5, 0xa7, 0x5f, 0xe2, 0x8f, 0xe3, 0x7c, 0x3f, 0x07, + 0xa7, 0xfb, 0xfa, 0x7c, 0x62, 0x77, 0xdd, 0xe7, 0xb5, 0xd3, 0xed, 0xb9, 0x41, 0x73, 0x3a, 0x94, + 0x16, 0xf1, 0x3f, 0x0d, 0x38, 0x3f, 0x80, 0x92, 0xec, 0xa5, 0x17, 0x11, 0xd7, 0x2a, 0x6e, 0x1e, + 0x5e, 0xe1, 0x53, 0x59, 0x4a, 0x1f, 0xdb, 0x4a, 0xf8, 0x66, 0x0e, 0x60, 0x93, 0x6e, 0x9d, 0xec, + 0xfc, 0x2a, 0xd9, 0x5f, 0xf8, 0x96, 0xdd, 0x1a, 0x6a, 0xde, 0x57, 0xf0, 0xda, 0x6f, 0xf8, 0xe4, + 0x2a, 0xf1, 0x97, 0x00, 0x72, 0xd9, 0x5f, 0x02, 0x30, 0xb7, 0xe0, 0xcc, 0x1d, 0x1a, 0x25, 0x27, + 0xa1, 0xb4, 0x21, 0x0f, 0x67, 0xfb, 0x0a, 0x94, 0x05, 0xbe, 0x9e, 0x07, 0x5a, 0xfa, 0x1f, 0x7b, + 0xae, 0x95, 0x20, 0x98, 0x14, 0xce, 0xcf, 0xd3, 0x16, 0x8d, 0xe8, 0xc7, 0x5b, 0x4d, 0x03, 0x08, + 0xef, 0x0a, 0x4f, 0x10, 0x3f, 0x54, 0x0d, 0x47, 0x8e, 0xcf, 0x06, 0x9c, 0x8d, 0xdb, 0xfe, 0x34, + 0xf9, 0xde, 0x60, 0xba, 0x84, 0x08, 0x66, 0x4a, 0x38, 0x1e, 0x72, 0x89, 0xf8, 0x18, 0x2e, 0x4a, + 0x82, 0x4d, 0x2f, 0x7e, 0xcc, 0x19, 0x8a, 0x96, 0xbc, 0x03, 0x63, 0x0a, 0x8d, 0x88, 0x8c, 0xc4, + 0x57, 0xdb, 0x47, 0x5e, 0xb4, 0x63, 0x87, 0x1c, 0xae, 0xbe, 0xda, 0x2a, 0xe8, 0xe6, 0x97, 0xe1, + 0x99, 0xd8, 0xff, 0x26, 0xa3, 0xea, 0x14, 0x73, 0xe3, 0x78, 0xcc, 0x97, 0x93, 0x6e, 0x2d, 0x76, + 0x62, 0xf7, 0x65, 0xc9, 0x9b, 0xa8, 0xdd, 0x12, 0x9d, 0xb9, 0xa4, 0xe4, 0x9d, 0x12, 0x67, 0x51, + 0x02, 0x30, 0xdf, 0x56, 0x1a, 0x9b, 0xc1, 0x50, 0x23, 0x36, 0xd2, 0xc4, 0xdf, 0xcc, 0xc1, 0xd4, + 0xca, 0xe2, 0xfc, 0x5c, 0x7c, 0x8d, 0xfc, 0x09, 0x4b, 0xfe, 0xa2, 0xf5, 0x6d, 0xb0, 0xbc, 0x31, + 0xd7, 0xe1, 0x74, 0x6a, 0x18, 0xf0, 0xfb, 0x17, 0xef, 0x71, 0x3f, 0x99, 0x18, 0x2c, 0x4f, 0x96, + 0x73, 0x59, 0xec, 0x37, 0x6e, 0x59, 0x29, 0x6c, 0xf3, 0x47, 0xc5, 0x14, 0x5f, 0x21, 0xc2, 0x5e, + 0x81, 0xf2, 0x62, 0x18, 0xf6, 0x68, 0xb0, 0x6e, 0x2d, 0xa9, 0x3a, 0xa2, 0x87, 0x40, 0xbb, 0x17, + 0xb4, 0xac, 0x04, 0x81, 0x5c, 0x85, 0x92, 0x08, 0xa0, 0x91, 0x32, 0x01, 0x9f, 0xfd, 0xe3, 0xf8, + 0x1b, 0x2b, 0x2e, 0x26, 0x6f, 0xc0, 0x38, 0xff, 0x9f, 0xaf, 0x36, 0x31, 0xe0, 0x78, 0x57, 0x25, + 0xd0, 0xf9, 0xea, 0xb4, 0x34, 0x34, 0x66, 0x99, 0xc9, 0x0f, 0xec, 0xb1, 0x16, 0x15, 0x12, 0xcb, + 0x4c, 0x7e, 0x8b, 0x0f, 0xdb, 0xa4, 0x22, 0x91, 0x6b, 0x90, 0xaf, 0xcd, 0x59, 0x6a, 0xea, 0x5b, + 0xa7, 0x19, 0xf0, 0xd4, 0xd1, 0xda, 0x37, 0x6c, 0x6a, 0x73, 0x16, 0x99, 0x85, 0x12, 0x7e, 0xd5, + 0xc0, 0xa5, 0x81, 0x48, 0x03, 0x81, 0xab, 0xa6, 0x2b, 0x60, 0xea, 0xdb, 0xa0, 0xc4, 0x23, 0x37, + 0x60, 0x74, 0xde, 0x0b, 0xbb, 0x2d, 0x67, 0x4f, 0x64, 0x7d, 0xc0, 0xc7, 0x10, 0x97, 0x83, 0xd4, + 0x75, 0x26, 0xb0, 0xc8, 0x55, 0x18, 0x69, 0x34, 0xfd, 0x2e, 0xb3, 0xb6, 0x62, 0x17, 0x9d, 0x90, + 0x01, 0xb4, 0xd0, 0x71, 0x06, 0xc0, 0x98, 0x4e, 0x1e, 0x9a, 0x52, 0x56, 0x62, 0x3a, 0xd3, 0x21, + 0x29, 0x02, 0xa7, 0xdf, 0x8f, 0x11, 0x9e, 0xa6, 0x1f, 0xe3, 0x16, 0x9c, 0xbf, 0x83, 0xaa, 0x7e, + 0x83, 0x06, 0x98, 0x96, 0x8f, 0x7f, 0xef, 0x64, 0xdd, 0x5a, 0x14, 0xe1, 0x38, 0x57, 0x0e, 0xf6, + 0xab, 0x2f, 0x70, 0x6b, 0xc0, 0x0e, 0x39, 0x8e, 0xfc, 0x54, 0x4a, 0x2a, 0x2d, 0xfc, 0x20, 0x46, + 0xe4, 0x0b, 0x70, 0x26, 0xab, 0x48, 0x04, 0xe6, 0xa0, 0x53, 0x72, 0x76, 0x05, 0xaa, 0x57, 0x70, + 0x16, 0x07, 0xb2, 0x04, 0x15, 0x0e, 0xaf, 0xb9, 0x6d, 0xaf, 0xb3, 0xd0, 0x76, 0xbc, 0x16, 0x86, + 0xe9, 0x88, 0x58, 0x2b, 0xc1, 0xd5, 0x61, 0x85, 0x36, 0x65, 0xa5, 0x9a, 0x97, 0x55, 0x8a, 0x12, + 0xc5, 0x51, 0xa3, 0x76, 0x7f, 0x29, 0xd9, 0x53, 0x9f, 0xac, 0x77, 0x23, 0xad, 0x6f, 0x87, 0xbc, + 0x1b, 0xad, 0xc3, 0xe9, 0xd4, 0x30, 0x48, 0x71, 0xa4, 0x81, 0xd3, 0xe2, 0x28, 0x45, 0x63, 0xa5, + 0xb0, 0xcd, 0xff, 0x54, 0x4c, 0xf1, 0x15, 0x77, 0x45, 0x26, 0x14, 0xb9, 0xb4, 0x51, 0xd3, 0x42, + 0x71, 0x59, 0x64, 0x89, 0x12, 0x72, 0x01, 0xf2, 0x8d, 0xc6, 0x8a, 0x9a, 0xb4, 0x2e, 0x0c, 0x7d, + 0x8b, 0xc1, 0xd8, 0x0c, 0xe1, 0x35, 0x50, 0x3e, 0x99, 0xa1, 0x26, 0x0d, 0x22, 0xf1, 0x05, 0xc6, + 0x17, 0x93, 0x7d, 0x5c, 0x48, 0xc6, 0x5b, 0xec, 0xe3, 0x64, 0xf7, 0xce, 0xc1, 0x4c, 0x2d, 0x0c, + 0x69, 0x10, 0xf1, 0xcc, 0xdb, 0x61, 0xaf, 0x4d, 0x03, 0xb1, 0xd6, 0x84, 0x8c, 0xe1, 0xdf, 0x6f, + 0x6e, 0x86, 0xd6, 0x40, 0x44, 0x72, 0x05, 0x4a, 0xb5, 0x9e, 0xeb, 0xd1, 0x4e, 0x93, 0x0a, 0x39, + 0x83, 0x97, 0xc1, 0x8e, 0x80, 0x59, 0x71, 0x29, 0xf9, 0x10, 0xce, 0x0a, 0x22, 0x29, 0x70, 0xc4, + 0x08, 0x70, 0x59, 0xc3, 0x2d, 0x58, 0xb1, 0x17, 0xa4, 0x98, 0xb2, 0xc5, 0x90, 0x64, 0x53, 0x92, + 0x1a, 0x54, 0x16, 0xf0, 0x9d, 0x54, 0x7e, 0x87, 0xd5, 0x0f, 0x44, 0x2e, 0x54, 0x94, 0x5c, 0xfc, + 0x0d, 0xd5, 0x76, 0xe3, 0x42, 0xab, 0x0f, 0x9d, 0xdc, 0x83, 0xd3, 0x69, 0x18, 0x93, 0xc7, 0xe5, + 0xe4, 0x3b, 0x49, 0x7d, 0x5c, 0x50, 0x30, 0x67, 0x51, 0x91, 0x2d, 0x98, 0xae, 0x45, 0x51, 0xe0, + 0x6d, 0xf5, 0x22, 0x9a, 0x12, 0x5d, 0xf2, 0xa2, 0x31, 0x2e, 0x97, 0xe2, 0xeb, 0x19, 0xb1, 0x18, + 0x4f, 0x3b, 0x31, 0x65, 0x2c, 0xc2, 0xac, 0x7e, 0x76, 0xc4, 0x8d, 0x3f, 0xb5, 0x26, 0x3e, 0x47, + 0x26, 0xe2, 0x59, 0xe4, 0x85, 0x6e, 0x2d, 0xdc, 0x6b, 0xb7, 0x69, 0x14, 0xe0, 0x3b, 0x3b, 0x7e, + 0xae, 0xcc, 0x14, 0xbe, 0x4c, 0x17, 0x95, 0x2f, 0x0c, 0xe2, 0x27, 0xe9, 0x34, 0x37, 0x4f, 0x8d, + 0xa7, 0x76, 0x7c, 0x8c, 0x0f, 0x79, 0x7c, 0xb4, 0x60, 0x7a, 0xa1, 0xd3, 0x0c, 0xf6, 0x30, 0x2e, + 0x4d, 0x36, 0x6e, 0xe2, 0x88, 0xc6, 0xc9, 0xaf, 0x17, 0x5c, 0x72, 0xe4, 0x0a, 0xcb, 0x6a, 0x5e, + 0x3f, 0x63, 0xf3, 0xff, 0x83, 0x4a, 0x7a, 0x2c, 0x9f, 0xf0, 0xfb, 0xb2, 0xc7, 0x71, 0x31, 0x67, + 0x33, 0x9d, 0xee, 0x0b, 0xb9, 0xa1, 0x7d, 0x44, 0xd4, 0x48, 0xc2, 0x7e, 0x95, 0xcf, 0x7d, 0x6a, + 0x9f, 0x0e, 0x95, 0xdb, 0x38, 0x97, 0xb5, 0x8d, 0xcd, 0xdf, 0xce, 0xc1, 0x34, 0xf7, 0x8a, 0x3d, + 0xf9, 0xba, 0xe2, 0x7b, 0x9a, 0x70, 0x96, 0x77, 0x81, 0xa9, 0xde, 0x1d, 0xa2, 0x2d, 0x7e, 0x15, + 0xce, 0xf6, 0x0d, 0x05, 0x0a, 0xe8, 0x79, 0xe9, 0x8f, 0xdc, 0x27, 0xa2, 0x67, 0xb2, 0x2b, 0xd9, + 0xb8, 0x65, 0xf5, 0x51, 0x98, 0xff, 0x24, 0xd7, 0xc7, 0x5f, 0xe8, 0x8d, 0xaa, 0x26, 0x68, 0x1c, + 0x4f, 0x13, 0xcc, 0x7d, 0x24, 0x4d, 0x30, 0x3f, 0x8c, 0x26, 0xf8, 0x21, 0x4c, 0xac, 0x51, 0x87, + 0x69, 0x34, 0x22, 0xd6, 0xa9, 0xa0, 0x7d, 0xe0, 0x93, 0x95, 0x49, 0xf9, 0x12, 0xc7, 0x49, 0x46, + 0x8c, 0x80, 0x89, 0x16, 0x1e, 0xfc, 0x64, 0xe9, 0x1c, 0xd4, 0x43, 0x63, 0x64, 0xf0, 0xa1, 0x61, + 0x7e, 0x3b, 0x07, 0x63, 0x0a, 0x7b, 0xf2, 0x3a, 0x8c, 0xaf, 0x04, 0xdb, 0x4e, 0xc7, 0xfb, 0x35, + 0x47, 0xb9, 0x7e, 0xc5, 0xe6, 0xfb, 0x0a, 0xdc, 0xd2, 0xb0, 0xd0, 0x6d, 0x86, 0x3a, 0x6d, 0x75, + 0xe1, 0xb3, 0xe6, 0x59, 0x08, 0x55, 0x62, 0x55, 0xf3, 0x43, 0xc4, 0xaa, 0xea, 0x81, 0x9e, 0x85, + 0xe3, 0x07, 0x7a, 0x6a, 0x71, 0x99, 0x23, 0xc7, 0x8c, 0xcb, 0x34, 0x7f, 0x37, 0x07, 0x15, 0xf1, + 0x29, 0x4c, 0x79, 0x79, 0xf8, 0xc9, 0x4a, 0x8b, 0xaf, 0x77, 0xee, 0x90, 0xe7, 0xb1, 0xc2, 0x0f, + 0xfe, 0xb0, 0x8a, 0x1f, 0x36, 0x4c, 0x0f, 0x87, 0xfc, 0xb0, 0xa1, 0x0e, 0x4f, 0x47, 0x40, 0xa4, + 0xa9, 0xac, 0x34, 0xbe, 0xf9, 0x93, 0x5c, 0x9a, 0xb7, 0xd0, 0xa6, 0x5e, 0x84, 0x51, 0xfe, 0xed, + 0x23, 0xe9, 0xa4, 0x2d, 0x92, 0xe3, 0x20, 0xc8, 0x92, 0x65, 0xc7, 0x89, 0x85, 0x39, 0xea, 0xeb, + 0x96, 0xe4, 0x4d, 0xf1, 0xb9, 0x8c, 0x9a, 0xeb, 0x06, 0x34, 0x0c, 0x85, 0xa2, 0x85, 0x6f, 0x77, + 0x8f, 0xe8, 0x96, 0xcd, 0xfd, 0x4a, 0x1c, 0xd7, 0x0d, 0x2c, 0x0d, 0x8f, 0xcc, 0xc1, 0x19, 0xcd, + 0x3d, 0x49, 0xd2, 0x8f, 0x24, 0xa7, 0x45, 0x84, 0x05, 0x9c, 0x38, 0x13, 0xf9, 0xe9, 0x7d, 0xd9, + 0xd7, 0xfc, 0x5f, 0x06, 0xdb, 0x6b, 0xcd, 0xdd, 0x4f, 0x58, 0x94, 0x0e, 0xeb, 0xd2, 0x21, 0xca, + 0xfe, 0x5f, 0x18, 0xdc, 0xcf, 0x5e, 0x2c, 0x9f, 0xb7, 0xa0, 0xc8, 0xbf, 0xb4, 0x24, 0x3c, 0xc2, + 0x55, 0x2e, 0xbc, 0x20, 0x79, 0x9f, 0xe2, 0xdf, 0x6b, 0xb2, 0x04, 0x01, 0x33, 0x99, 0x75, 0x77, + 0x7f, 0x54, 0x3c, 0xfb, 0xfd, 0xfc, 0x25, 0x96, 0x9a, 0xf8, 0x71, 0xb8, 0x84, 0xc2, 0xc6, 0xd1, + 0x89, 0x1f, 0xcd, 0xff, 0x93, 0xe3, 0xfd, 0x11, 0x8d, 0x1a, 0x36, 0xa3, 0xd9, 0x4b, 0x50, 0xc0, + 0x2f, 0x74, 0x2a, 0x69, 0xe3, 0x52, 0x5f, 0xe7, 0xc4, 0x72, 0xb6, 0x6f, 0x50, 0xd6, 0xaa, 0x81, + 0x61, 0x28, 0x8e, 0xd5, 0x7d, 0x83, 0x18, 0x98, 0xae, 0xd7, 0x77, 0xa9, 0xba, 0x1d, 0x3a, 0x7a, + 0x66, 0x65, 0x2c, 0x27, 0x6f, 0x2a, 0x5e, 0xc8, 0xea, 0x85, 0x46, 0xfb, 0x81, 0x63, 0x73, 0xef, + 0x57, 0x55, 0xda, 0x26, 0x0e, 0xcb, 0x0b, 0x30, 0xa9, 0x87, 0xca, 0x0a, 0xa3, 0x03, 0x23, 0x8e, + 0x53, 0x61, 0xb6, 0xaa, 0x7a, 0xab, 0x13, 0x91, 0x3a, 0x4c, 0x68, 0x81, 0xb5, 0x6a, 0x96, 0x4b, + 0x9e, 0x7e, 0xc3, 0xee, 0x0f, 0xe4, 0xd7, 0x49, 0x94, 0x0b, 0xf3, 0xd7, 0xa0, 0x22, 0x76, 0x66, + 0x1c, 0xa3, 0x87, 0xaa, 0xdd, 0xe2, 0xbc, 0xa5, 0xee, 0xa6, 0xa6, 0xe7, 0x06, 0x16, 0x42, 0xcd, + 0xef, 0x19, 0x70, 0x41, 0x7c, 0x41, 0xca, 0xa2, 0x21, 0xd3, 0x21, 0x31, 0xb0, 0x4f, 0xa4, 0x08, + 0x7a, 0x47, 0x66, 0xf6, 0xd1, 0x05, 0x64, 0xba, 0x8e, 0xfa, 0x84, 0x58, 0x94, 0x23, 0x98, 0xdb, + 0x47, 0x66, 0xf4, 0x79, 0x4b, 0x64, 0xf4, 0xc9, 0x1d, 0x4e, 0x1c, 0xef, 0x0b, 0x97, 0x76, 0x64, + 0x26, 0x9f, 0xef, 0xe6, 0xe0, 0x6c, 0x46, 0xb3, 0x4e, 0x6c, 0xe6, 0xa6, 0xba, 0x26, 0x1c, 0x64, + 0xca, 0xb7, 0x81, 0x03, 0x9f, 0x29, 0x2b, 0xfe, 0xc0, 0x80, 0xf3, 0xfa, 0xea, 0x11, 0xb6, 0xe8, + 0xc6, 0x2d, 0xf2, 0x36, 0x14, 0xef, 0x52, 0xc7, 0xa5, 0x32, 0x94, 0x24, 0x4e, 0x9f, 0x24, 0x6e, + 0x87, 0x79, 0x21, 0x67, 0xfb, 0x13, 0xbe, 0x95, 0x4f, 0x59, 0x82, 0x84, 0xcc, 0x8b, 0xc6, 0xf1, + 0xe7, 0x29, 0x53, 0xbe, 0xd4, 0x64, 0x55, 0x75, 0x88, 0x62, 0xfc, 0x0d, 0x78, 0xe6, 0x10, 0x12, + 0x36, 0x6f, 0x6c, 0xe6, 0xd5, 0x79, 0xc3, 0x73, 0x05, 0xa1, 0xe4, 0x3d, 0x98, 0x5a, 0x13, 0x01, + 0x6f, 0x72, 0x36, 0x94, 0xec, 0xd9, 0x32, 0x16, 0xce, 0x96, 0xd3, 0x92, 0x46, 0xc6, 0xf0, 0x2d, + 0xbd, 0xf6, 0x27, 0x1d, 0x94, 0x77, 0xb5, 0x41, 0x79, 0x26, 0x7b, 0x50, 0x06, 0x8f, 0x46, 0x5f, + 0x2a, 0x80, 0xa1, 0x86, 0xc1, 0x84, 0xe2, 0xbc, 0xdf, 0x76, 0x3c, 0xd9, 0x7b, 0xbc, 0x8c, 0x71, + 0x11, 0x62, 0x89, 0x12, 0xf3, 0xdf, 0x17, 0xe0, 0x02, 0x0f, 0x04, 0xa1, 0xc1, 0x7a, 0xe8, 0x75, + 0xb6, 0xb5, 0x87, 0x1a, 0x74, 0x4f, 0x53, 0xf2, 0x38, 0x0b, 0xf7, 0x34, 0x06, 0xb1, 0x44, 0x09, + 0xb3, 0x24, 0x98, 0xe8, 0x53, 0x3c, 0xfd, 0xd0, 0x92, 0xc0, 0x2c, 0x28, 0x68, 0xa5, 0xc6, 0xc5, + 0xe4, 0x9a, 0x10, 0xcc, 0x8a, 0x03, 0x31, 0x13, 0xcc, 0xa9, 0x2f, 0x18, 0x73, 0xe1, 0x1c, 0x6b, + 0x2a, 0x85, 0x01, 0x9a, 0xca, 0x7d, 0x38, 0x93, 0x7c, 0xb4, 0x7d, 0x35, 0xf0, 0x3a, 0x4d, 0xaf, + 0xeb, 0xb4, 0xa4, 0xa6, 0xcb, 0xbf, 0xe7, 0x9c, 0x7c, 0xf7, 0xbd, 0x1b, 0x23, 0x58, 0x99, 0x64, + 0xac, 0x1b, 0xf3, 0xcb, 0x0d, 0x9e, 0xe4, 0xa2, 0x88, 0x2c, 0xb0, 0x1b, 0x6e, 0x27, 0xe4, 0x59, + 0x2e, 0xac, 0xb8, 0x18, 0x75, 0x24, 0xf4, 0xf8, 0xe7, 0xdf, 0x5c, 0x47, 0x21, 0x2b, 0xfd, 0x9b, + 0x78, 0x80, 0x40, 0xd4, 0x0a, 0xd1, 0x28, 0xd6, 0xf0, 0x12, 0x3a, 0xfe, 0x8d, 0x77, 0xbc, 0xd2, + 0xd1, 0xe9, 0xc2, 0x70, 0x47, 0xa5, 0xe3, 0x78, 0xcc, 0xfe, 0xe6, 0x1e, 0x22, 0x38, 0xd7, 0xe5, + 0x44, 0xa3, 0xe2, 0x1f, 0x5d, 0xe7, 0x1a, 0x95, 0x82, 0x42, 0xde, 0x81, 0xd3, 0x0b, 0x73, 0xb3, + 0xd2, 0xd9, 0x7e, 0xde, 0x6f, 0xf6, 0xda, 0xb4, 0x13, 0x61, 0xa8, 0x86, 0x88, 0x75, 0xa2, 0xcd, + 0x59, 0x66, 0xe4, 0x65, 0xa1, 0x91, 0x37, 0x80, 0x34, 0xd6, 0x1a, 0x12, 0x2c, 0x4f, 0x92, 0x31, + 0x24, 0x16, 0xc9, 0x72, 0x32, 0x10, 0x84, 0xa7, 0x3e, 0x8f, 0x57, 0x9b, 0xf3, 0x5d, 0x1a, 0x6e, + 0xdc, 0xfc, 0x84, 0x79, 0xea, 0x2b, 0x7d, 0xc3, 0xfd, 0x77, 0x33, 0x73, 0xaf, 0xfe, 0x3d, 0xf4, + 0xd4, 0xef, 0xc3, 0x25, 0x9f, 0x85, 0x11, 0xfc, 0x29, 0x4e, 0xbf, 0xd3, 0x19, 0x6c, 0x93, 0x93, + 0xaf, 0xc9, 0x30, 0x2d, 0x4e, 0x40, 0x16, 0x93, 0x4c, 0xdd, 0xc7, 0xf0, 0x37, 0x15, 0x41, 0xaf, + 0xfa, 0x27, 0x1a, 0x5c, 0x18, 0x57, 0x2b, 0x64, 0x4b, 0xeb, 0xae, 0x13, 0xee, 0x50, 0x77, 0x4e, + 0x7e, 0x92, 0x6d, 0x9c, 0x2f, 0xad, 0x1d, 0x84, 0xe2, 0xe7, 0x23, 0x2c, 0x05, 0x85, 0x3c, 0x0f, + 0xc5, 0xc5, 0x70, 0x3d, 0x14, 0x4d, 0x11, 0x16, 0x89, 0x87, 0x96, 0xa4, 0x6b, 0x89, 0xa2, 0x6b, + 0xef, 0xc3, 0x94, 0x4c, 0xe5, 0xb2, 0xb6, 0xd4, 0xc0, 0x8f, 0x22, 0x4d, 0xc1, 0xd8, 0xc6, 0x82, + 0xb5, 0x78, 0xfb, 0x8b, 0xf6, 0xed, 0xf5, 0xa5, 0xa5, 0xca, 0x29, 0x32, 0x01, 0x65, 0x01, 0x98, + 0xab, 0x55, 0x0c, 0x32, 0x0e, 0xa5, 0xc5, 0xe5, 0xc6, 0xc2, 0xdc, 0xba, 0xb5, 0x50, 0xc9, 0x5d, + 0x7b, 0x11, 0x26, 0x93, 0xeb, 0x24, 0x0c, 0x39, 0x19, 0x85, 0xbc, 0x55, 0xdb, 0xac, 0x9c, 0x22, + 0x00, 0xc5, 0xd5, 0x7b, 0x73, 0x8d, 0x9b, 0x37, 0x2b, 0xc6, 0xb5, 0xab, 0xfa, 0xb7, 0xfd, 0x18, + 0x13, 0xf9, 0x8d, 0x9d, 0xca, 0x29, 0x32, 0x16, 0x5b, 0x4f, 0x15, 0xe3, 0xda, 0x6b, 0x19, 0xdf, + 0x34, 0x64, 0xf8, 0x0d, 0xda, 0x75, 0x02, 0x27, 0xa2, 0xbc, 0x45, 0xf7, 0x7b, 0xad, 0xc8, 0xeb, + 0xb6, 0xe8, 0xe3, 0x8a, 0x71, 0xed, 0xad, 0xbe, 0x4f, 0x13, 0x92, 0xb3, 0x30, 0xbd, 0xbe, 0x5c, + 0xbb, 0x5f, 0x5f, 0xbc, 0xb3, 0xbe, 0xb2, 0xde, 0xb0, 0xef, 0xd7, 0xd6, 0xe6, 0xee, 0x56, 0x4e, + 0xb1, 0xbe, 0xdd, 0x5f, 0x69, 0xac, 0xd9, 0xd6, 0xc2, 0xdc, 0xc2, 0xf2, 0x5a, 0xc5, 0xb8, 0xe6, + 0xc3, 0xa4, 0xfe, 0x9d, 0x15, 0x72, 0x19, 0x2e, 0xad, 0x37, 0x16, 0x2c, 0x7b, 0x6d, 0xe5, 0xde, + 0xc2, 0xb2, 0xbd, 0xde, 0xa8, 0xdd, 0x59, 0xb0, 0xd7, 0x97, 0x1b, 0xab, 0x0b, 0x73, 0x8b, 0xb7, + 0x17, 0x17, 0xe6, 0x2b, 0xa7, 0x48, 0x15, 0x9e, 0x51, 0x30, 0xac, 0x85, 0xb9, 0x95, 0x8d, 0x05, + 0xcb, 0x5e, 0xad, 0x35, 0x1a, 0x9b, 0x2b, 0xd6, 0x7c, 0xc5, 0x20, 0x17, 0xe1, 0x5c, 0x06, 0xc2, + 0xfd, 0xdb, 0xb5, 0x4a, 0xee, 0xda, 0xfb, 0x6c, 0x5a, 0x93, 0x64, 0xc7, 0xa4, 0x04, 0x85, 0xe5, + 0x95, 0xe5, 0x05, 0x3e, 0x08, 0xab, 0x0b, 0xcb, 0xf3, 0x8b, 0xcb, 0x77, 0xf8, 0x20, 0xd7, 0x56, + 0x57, 0xad, 0x95, 0x8d, 0x85, 0xf9, 0x4a, 0x8e, 0x8d, 0xe4, 0xfc, 0xc2, 0x32, 0xab, 0x3d, 0x5f, + 0xaf, 0xfc, 0xf8, 0xa7, 0xcf, 0x9d, 0xfa, 0xf1, 0xcf, 0x9e, 0x33, 0x7e, 0xf2, 0xb3, 0xe7, 0x8c, + 0xff, 0xfe, 0xb3, 0xe7, 0x8c, 0xad, 0x22, 0xae, 0xad, 0x5b, 0xff, 0x2f, 0x00, 0x00, 0xff, 0xff, + 0x05, 0x1d, 0x91, 0xc9, 0x72, 0xaa, 0x00, 0x00, } func (m *KeepAlive) Marshal() (dAtA []byte, err error) { @@ -12270,6 +12304,11 @@ func (m *ClusterNetworkingConfigSpecV2) MarshalToSizedBuffer(dAtA []byte) (int, i -= len(m.XXX_unrecognized) copy(dAtA[i:], m.XXX_unrecognized) } + if m.ProxyPeering != 0 { + i = encodeVarintTypes(dAtA, i, uint64(m.ProxyPeering)) + i-- + dAtA[i] = 0x48 + } if m.RoutingStrategy != 0 { i = encodeVarintTypes(dAtA, i, uint64(m.RoutingStrategy)) i-- @@ -20546,6 +20585,9 @@ func (m *ClusterNetworkingConfigSpecV2) Size() (n int) { if m.RoutingStrategy != 0 { n += 1 + sovTypes(uint64(m.RoutingStrategy)) } + if m.ProxyPeering != 0 { + n += 1 + sovTypes(uint64(m.ProxyPeering)) + } if m.XXX_unrecognized != nil { n += len(m.XXX_unrecognized) } @@ -33474,6 +33516,25 @@ func (m *ClusterNetworkingConfigSpecV2) Unmarshal(dAtA []byte) error { break } } + case 9: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field ProxyPeering", wireType) + } + m.ProxyPeering = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTypes + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.ProxyPeering |= ProxyPeering(b&0x7F) << shift + if b < 0x80 { + break + } + } default: iNdEx = preIndex skippy, err := skipTypes(dAtA[iNdEx:]) diff --git a/api/types/types.proto b/api/types/types.proto index f227d7c3a574..8dd0f7a84e80 100644 --- a/api/types/types.proto +++ b/api/types/types.proto @@ -903,6 +903,17 @@ message ClusterNetworkingConfigSpecV2 { // RoutingStrategy determines the strategy used to route to nodes. RoutingStrategy RoutingStrategy = 8 [ (gogoproto.jsontag) = "routing_strategy,omitempty" ]; + + // ProxyPeeringMode determines if proxy peering is enabled in the cluster. + ProxyPeering ProxyPeering = 9 [ (gogoproto.jsontag) = "proxy_peering,omitempty" ]; +} + +// ProxyPeeringMode represents the cluster proxy peering mode. +enum ProxyPeering { + // Disabled is set if proxy peering is disabled. + Disabled = 0; + // Enabled is set if proxy peering is enabled. + Enabled = 1; } // ProxyListenerMode represents the cluster proxy listener mode. diff --git a/lib/config/configuration.go b/lib/config/configuration.go index 83abb69a31e7..56810984997a 100644 --- a/lib/config/configuration.go +++ b/lib/config/configuration.go @@ -575,6 +575,7 @@ func applyAuthConfig(fc *FileConfig, cfg *service.Config) error { SessionControlTimeout: fc.Auth.SessionControlTimeout, ProxyListenerMode: fc.Auth.ProxyListenerMode, RoutingStrategy: fc.Auth.RoutingStrategy, + ProxyPeering: fc.Auth.ProxyPeering, }) if err != nil { return trace.Wrap(err) @@ -678,6 +679,13 @@ func applyProxyConfig(fc *FileConfig, cfg *service.Config) error { } cfg.Proxy.MongoAddr = *addr } + if fc.Proxy.PeerAddr != "" { + addr, err := utils.ParseHostPortAddr(fc.Proxy.PeerAddr, int(defaults.ProxyPeeringListenPort)) + if err != nil { + return trace.Wrap(err) + } + cfg.Proxy.PeerAddr = *addr + } // This is the legacy format. Continue to support it forever, but ideally // users now use the list format below. diff --git a/lib/config/configuration_test.go b/lib/config/configuration_test.go index ab50dc121b98..eb6a804a54e7 100644 --- a/lib/config/configuration_test.go +++ b/lib/config/configuration_test.go @@ -654,6 +654,7 @@ func TestApplyConfig(t *testing.T) { require.Equal(t, "magadan", cfg.Auth.ClusterName.GetClusterName()) require.True(t, cfg.Auth.Preference.GetAllowLocalAuth()) require.Equal(t, "10.10.10.1", cfg.AdvertiseIP) + require.Equal(t, types.ProxyPeering_Enabled, cfg.Auth.NetworkingConfig.GetProxyPeering()) require.True(t, cfg.Proxy.Enabled) require.Equal(t, "tcp://webhost:3080", cfg.Proxy.WebAddr.FullAddress()) @@ -666,6 +667,7 @@ func TestApplyConfig(t *testing.T) { require.Equal(t, "tcp://mysql.example:3306", cfg.Proxy.MySQLPublicAddrs[0].FullAddress()) require.Len(t, cfg.Proxy.MongoPublicAddrs, 1) require.Equal(t, "tcp://mongo.example:27017", cfg.Proxy.MongoPublicAddrs[0].FullAddress()) + require.Equal(t, "tcp://peerhost:1234", cfg.Proxy.PeerAddr.FullAddress()) require.Equal(t, "tcp://127.0.0.1:3000", cfg.DiagnosticAddr.FullAddress()) diff --git a/lib/config/fileconf.go b/lib/config/fileconf.go index eb4285f5ce5d..b26f6569efe2 100644 --- a/lib/config/fileconf.go +++ b/lib/config/fileconf.go @@ -579,6 +579,9 @@ type Auth struct { // RoutingStrategy configures the routing strategy to nodes. RoutingStrategy types.RoutingStrategy `yaml:"routing_strategy,omitempty"` + + // ProxyPeering configures proxy to proxy communication. + ProxyPeering types.ProxyPeering `yaml:"proxy_peering,omitempty"` } // CAKeyParams configures how CA private keys will be created and stored. @@ -1144,6 +1147,8 @@ type Proxy struct { WebAddr string `yaml:"web_listen_addr,omitempty"` // TunAddr is a reverse tunnel address TunAddr string `yaml:"tunnel_listen_addr,omitempty"` + // PeerAddr is the address this proxy will be dialed at by its peers. + PeerAddr string `yaml:"peer_listen_addr,omitempty"` // KeyFile is a TLS key file KeyFile string `yaml:"https_key_file,omitempty"` // CertFile is a TLS Certificate file diff --git a/lib/config/testdata_test.go b/lib/config/testdata_test.go index e613396e233c..0ea162c79aba 100644 --- a/lib/config/testdata_test.go +++ b/lib/config/testdata_test.go @@ -110,6 +110,7 @@ teleport: auth_service: enabled: yes listen_addr: 10.5.5.1:3025 + proxy_peering: enabled cluster_name: magadan tokens: - "proxy,node:xxx" @@ -155,6 +156,7 @@ proxy_service: enabled: yes web_listen_addr: webhost tunnel_listen_addr: tunnelhost:1001 + peer_listen_addr: peerhost:1234 public_addr: web3:443 postgres_public_addr: postgres.example:5432 mysql_listen_addr: webhost:3336 diff --git a/lib/defaults/defaults.go b/lib/defaults/defaults.go index 64578a3abd66..a47ded065770 100644 --- a/lib/defaults/defaults.go +++ b/lib/defaults/defaults.go @@ -76,6 +76,10 @@ const ( // implemented. WindowsDesktopListenPort = 3028 + // ProxyPeeringListenPort is the default port proxies will listen on when + // proxy peering is enabled. + ProxyPeeringListenPort = 3021 + // RDPListenPort is the standard port for RDP servers. RDPListenPort = 3389 @@ -644,6 +648,10 @@ func MetricsServiceListenAddr() *utils.NetAddr { return makeAddr(BindIP, MetricsListenPort) } +func ProxyPeeringListenAddr() *utils.NetAddr { + return makeAddr(BindIP, ProxyPeeringListenPort) +} + func makeAddr(host string, port int16) *utils.NetAddr { addrSpec := fmt.Sprintf("tcp://%s:%d", host, port) retval, err := utils.ParseAddr(addrSpec) diff --git a/lib/proxy/auth.go b/lib/proxy/auth.go new file mode 100644 index 000000000000..3aae71b47966 --- /dev/null +++ b/lib/proxy/auth.go @@ -0,0 +1,91 @@ +// Copyright 2022 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 proxy + +import ( + "context" + "net" + + "github.com/gravitational/teleport/api/types" + "github.com/gravitational/teleport/lib/tlsca" + "github.com/gravitational/trace" + "google.golang.org/grpc/credentials" +) + +// newProxyCredentials creates new proxyCredentials from the given transport credentials. +func newProxyCredentials(creds credentials.TransportCredentials) credentials.TransportCredentials { + return &proxyCredentials{ + creds, + } +} + +// proxyCredentials wraps TransportCredentials server and client handshakes +// to ensure the credentials contain the proxy system role. +type proxyCredentials struct { + credentials.TransportCredentials +} + +// ServerHandshake wraps a server handshake with an additional check for the +// proxy role. +func (c *proxyCredentials) ServerHandshake(conn net.Conn) (net.Conn, credentials.AuthInfo, error) { + conn, authInfo, err := c.TransportCredentials.ServerHandshake(conn) + if err != nil { + return conn, authInfo, err + } + + err = checkProxyRole(authInfo) + return conn, authInfo, trace.Wrap(err) +} + +// ServerHandshake wraps a client handshake with an additional check for the +// proxy role. +func (c *proxyCredentials) ClientHandshake(ctx context.Context, laddr string, conn net.Conn) (net.Conn, credentials.AuthInfo, error) { + conn, authInfo, err := c.TransportCredentials.ClientHandshake(ctx, laddr, conn) + if err != nil { + return conn, authInfo, err + } + + err = checkProxyRole(authInfo) + return conn, authInfo, trace.Wrap(err) +} + +// checkProxyRole checks the authInfo for a certificate with the role types.RoleProxy. +func checkProxyRole(authInfo credentials.AuthInfo) error { + tlsInfo, ok := authInfo.(credentials.TLSInfo) + if !ok { + return trace.AccessDenied("missing authentication") + } + + certs := tlsInfo.State.PeerCertificates + if len(certs) == 0 { + return trace.AccessDenied("missing authentication") + } + + clientCert := certs[0] + identity, err := tlsca.FromSubject(clientCert.Subject, clientCert.NotAfter) + if err != nil { + return trace.Wrap(err) + } + + // Ensure the proxy system role is present. + for _, role := range identity.Groups { + if types.SystemRole(role) != types.RoleProxy { + continue + } + return nil + } + + return trace.AccessDenied("proxy system role required") +} diff --git a/lib/proxy/conn.go b/lib/proxy/conn.go new file mode 100644 index 000000000000..5d58b128a0a3 --- /dev/null +++ b/lib/proxy/conn.go @@ -0,0 +1,224 @@ +// Copyright 2022 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 proxy + +import ( + "context" + "io" + "net" + "sync" + "time" + + "github.com/gravitational/teleport/api/client/proto" + "github.com/gravitational/trace" +) + +const ( + // bufferSize is the connection buffer size. + bufferSize = 4 * 1024 +) + +// Stream is a common interface for grpc client and server streams. +type Stream interface { + Context() context.Context + Send(*proto.Frame) error + Recv() (*proto.Frame, error) +} + +// Check that streamConn implements net.Conn. +var _ net.Conn = &streamConn{} + +// streamConn wraps a grpc stream with a net.streamConn interface. +type streamConn struct { + stream Stream + local net.Conn + remote net.Conn + + src net.Addr + dst net.Addr + + once sync.Once + wg sync.WaitGroup +} + +// newStreamConn creates a new streamConn. +func newStreamConn(stream Stream, src net.Addr, dst net.Addr) *streamConn { + local, remote := net.Pipe() + return &streamConn{ + stream: stream, + local: local, + remote: remote, + src: src, + dst: dst, + } +} + +// start begins copying data between the grpc stream and internal pipe. +func (c *streamConn) start() { + c.wg.Add(2) + go func() { + defer c.Close() + c.receive(c.stream) + c.wg.Done() + }() + go func() { + defer c.Close() + c.send(c.stream) + c.wg.Done() + }() + +} + +// receive reveives data from the stream and copies it to the internal pipe. +func (c *streamConn) receive(stream Stream) error { + var ( + frame *proto.Frame + err error + ) + + for { + frame, err = stream.Recv() + if err != nil { + return trace.Wrap(err) + } + + data := frame.GetData() + if data == nil { + return trace.Errorf("failed to get data from tunnel frame") + } + + _, err := c.remote.Write(data.Bytes) + if err != nil { + return trace.Wrap(err) + } + + frame = nil + } +} + +// send reads data from the internal pipe and sends it over the stream. +func (c *streamConn) send(stream Stream) error { + var frame *proto.Frame + b := make([]byte, bufferSize) + + for { + n, err := c.remote.Read(b) + if err != nil { + return trace.Wrap(err) + } + + frame = &proto.Frame{Message: &proto.Frame_Data{Data: &proto.Data{Bytes: b[:n]}}} + err = stream.Send(frame) + if err != nil { + return trace.Wrap(err) + } + } +} + +// Read reads data reveived over the grpc stream. +func (c *streamConn) Read(b []byte) (n int, err error) { + return c.local.Read(b) +} + +// Write sends data over the grpc stream. +func (c *streamConn) Write(b []byte) (n int, err error) { + return c.local.Write(b) +} + +// Close cleans up resources used by the connection. +func (c *streamConn) Close() error { + var err error + c.once.Do(func() { + err = c.close() + }) + + c.wg.Wait() + return trace.Wrap(err) +} + +// close cleans up resources used by the connection. +func (c *streamConn) close() error { + c.local.Close() + c.remote.Close() + return nil +} + +// LocalAddr is the original source address of the client. +func (c *streamConn) LocalAddr() net.Addr { + return c.src +} + +// RemoteAddr is the address of the reverse tunnel node. +func (c *streamConn) RemoteAddr() net.Addr { + return c.dst +} + +func (c *streamConn) SetDeadline(t time.Time) error { + return c.local.SetDeadline(t) +} + +func (c *streamConn) SetReadDeadline(t time.Time) error { + return c.local.SetReadDeadline(t) +} + +func (c *streamConn) SetWriteDeadline(t time.Time) error { + return c.local.SetWriteDeadline(t) +} + +// pipeConn copies between two ReadWriteCloser and closes them when done. +func pipeConn(ctx context.Context, src io.ReadWriteCloser, dst io.ReadWriteCloser) (int64, int64) { + var ( + sent, received int64 + wg sync.WaitGroup + o sync.Once + ) + + cleanup := func() { + o.Do(func() { + src.Close() + dst.Close() + }) + } + + wg.Add(2) + + go func() { + sent, _ = io.Copy(src, dst) + cleanup() + wg.Done() + }() + + go func() { + received, _ = io.Copy(dst, src) + cleanup() + wg.Done() + }() + + wait := make(chan struct{}) + go func() { + wg.Wait() + close(wait) + }() + + select { + case <-ctx.Done(): + case <-wait: + } + + cleanup() + <-wait + + return sent, received +} diff --git a/lib/proxy/middleware.go b/lib/proxy/middleware.go new file mode 100644 index 000000000000..c2e783034bcb --- /dev/null +++ b/lib/proxy/middleware.go @@ -0,0 +1,43 @@ +// Copyright 2022 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 proxy + +import ( + "github.com/gravitational/trace" + "google.golang.org/grpc" + "google.golang.org/grpc/codes" + "google.golang.org/grpc/status" +) + +// errorStreamInterceptor is GPRC unary interceptor that handles converting errors +// to the appropriate grpc status code. +func errorStreamInterceptor(srv interface{}, stream grpc.ServerStream, info *grpc.StreamServerInfo, handler grpc.StreamHandler) error { + err := handler(srv, stream) + return toGRPCError(err) +} + +// errorHandler converts trace errors to grpc errors with appropriate status codes. +func toGRPCError(err error) error { + if err == nil { + return nil + } + if trace.IsNotFound(err) { + return status.Error(codes.NotFound, err.Error()) + } + if trace.IsBadParameter(err) { + return status.Error(codes.InvalidArgument, err.Error()) + } + return status.Error(codes.Internal, err.Error()) +} diff --git a/lib/proxy/server.go b/lib/proxy/server.go new file mode 100644 index 000000000000..e2e8d8b4ed8b --- /dev/null +++ b/lib/proxy/server.go @@ -0,0 +1,134 @@ +// Copyright 2022 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 proxy + +import ( + "crypto/tls" + "net" + "time" + + "github.com/gravitational/teleport" + "github.com/gravitational/teleport/api/client/proto" + "github.com/gravitational/teleport/api/metadata" + "github.com/gravitational/trace" + "github.com/sirupsen/logrus" + "google.golang.org/grpc" + "google.golang.org/grpc/credentials" + "google.golang.org/grpc/keepalive" +) + +const ( + peerKeepAlive = time.Second * 10 + peerTimeout = time.Second * 20 +) + +// ServerConfig configures a Server instance. +type ServerConfig struct { + Listener net.Listener + TLSConfig *tls.Config + ClusterDialer ClusterDialer + Log logrus.FieldLogger +} + +// checkAndSetDefaults checks and sets default values +func (c *ServerConfig) checkAndSetDefaults() error { + if c.Listener == nil { + return trace.BadParameter("missing listener") + } + if c.ClusterDialer == nil { + return trace.BadParameter("missing cluster dialer server") + } + + if c.TLSConfig == nil { + return trace.BadParameter("missing tls config") + } + if len(c.TLSConfig.Certificates) == 0 { + return trace.BadParameter("missing tls certificate") + } + if c.TLSConfig.RootCAs == nil { + return trace.BadParameter("missing tls root ca") + } + + c.TLSConfig = c.TLSConfig.Clone() + c.TLSConfig.ClientAuth = tls.RequireAndVerifyClientCert + c.TLSConfig.ClientCAs = c.TLSConfig.RootCAs + + if c.Log == nil { + c.Log = logrus.New() + } + c.Log = c.Log.WithField( + trace.Component, + teleport.Component(teleport.ComponentProxy), + ) + + return nil +} + +// Server is a proxy service server using grpc and tls. +type Server struct { + server *grpc.Server + config ServerConfig +} + +// NewServer creates a new proxy server instance. +func NewServer(config ServerConfig) (*Server, error) { + err := config.checkAndSetDefaults() + if err != nil { + return nil, trace.Wrap(err) + } + + service := &proxyService{ + config.ClusterDialer, + config.Log, + } + + transportCreds := newProxyCredentials(credentials.NewTLS(config.TLSConfig)) + server := grpc.NewServer( + grpc.Creds(transportCreds), + grpc.ChainStreamInterceptor(metadata.StreamServerInterceptor, errorStreamInterceptor), + grpc.KeepaliveParams(keepalive.ServerParameters{ + Time: peerKeepAlive, + Timeout: peerTimeout, + }), + grpc.KeepaliveEnforcementPolicy(keepalive.EnforcementPolicy{ + MinTime: peerKeepAlive, + PermitWithoutStream: true, + }), + ) + proto.RegisterProxyServiceServer(server, service) + + return &Server{ + server: server, + config: config, + }, nil +} + +// Serve starts the proxy server. +func (s *Server) Serve() error { + err := s.server.Serve(s.config.Listener) + return trace.Wrap(err) +} + +// Close closes the proxy server immediately. +func (s *Server) Close() error { + s.server.Stop() + return nil +} + +// Shutdown does a graceful shutdown of the proxy server. +func (s *Server) Shutdown() error { + s.server.GracefulStop() + return nil +} diff --git a/lib/proxy/server_test.go b/lib/proxy/server_test.go new file mode 100644 index 000000000000..587e10787efe --- /dev/null +++ b/lib/proxy/server_test.go @@ -0,0 +1,162 @@ +package proxy + +import ( + "context" + "crypto/rand" + "crypto/rsa" + "crypto/tls" + "crypto/x509" + "crypto/x509/pkix" + "encoding/pem" + "net" + "testing" + "time" + + "github.com/gravitational/teleport/api/client/proto" + "github.com/gravitational/teleport/api/types" + "github.com/gravitational/teleport/lib/defaults" + "github.com/gravitational/teleport/lib/fixtures" + "github.com/gravitational/teleport/lib/tlsca" + "github.com/gravitational/trace" + "github.com/jonboulle/clockwork" + "github.com/stretchr/testify/require" + "golang.org/x/crypto/ssh" + "google.golang.org/grpc" + "google.golang.org/grpc/credentials" +) + +// newSelfSignedCA creates a new CA for testing. +func newSelfSignedCA() (*tlsca.CertAuthority, error) { + rsaKey, err := ssh.ParseRawPrivateKey(fixtures.PEMBytes["rsa"]) + if err != nil { + return nil, trace.Wrap(err) + } + cert, err := tlsca.GenerateSelfSignedCAWithSigner( + rsaKey.(*rsa.PrivateKey), pkix.Name{}, nil, defaults.CATTL, + ) + if err != nil { + return nil, trace.Wrap(err) + } + ca, err := tlsca.FromCertAndSigner(cert, rsaKey.(*rsa.PrivateKey)) + if err != nil { + return nil, trace.Wrap(err) + } + return ca, nil +} + +// certFromIdentity creates a tls config for a given CA and identity. +func certFromIdentity(t *testing.T, ca *tlsca.CertAuthority, ident tlsca.Identity) *tls.Config { + if ident.Username == "" { + ident.Username = "test-user" + } + + subj, err := ident.Subject() + require.NoError(t, err) + + privateKey, err := rsa.GenerateKey(rand.Reader, 2048) + require.NoError(t, err) + + clock := clockwork.NewRealClock() + + request := tlsca.CertificateRequest{ + Clock: clock, + PublicKey: privateKey.Public(), + Subject: subj, + NotAfter: clock.Now().UTC().Add(time.Minute), + DNSNames: []string{"127.0.0.1"}, + } + certBytes, err := ca.GenerateCertificate(request) + require.NoError(t, err) + + keyPEM := pem.EncodeToMemory(&pem.Block{Type: "PRIVATE KEY", Bytes: x509.MarshalPKCS1PrivateKey(privateKey)}) + cert, err := tls.X509KeyPair(certBytes, keyPEM) + require.NoError(t, err) + + pool := x509.NewCertPool() + pool.AddCert(ca.Cert) + + config := &tls.Config{ + Certificates: []tls.Certificate{cert}, + RootCAs: pool, + } + + return config +} + +// TestServerTLS ensures that only trusted certificates with the proxy role +// are accepted by the server. +func TestServerTLS(t *testing.T) { + ca1, err := newSelfSignedCA() + require.NoError(t, err) + + ca2, err := newSelfSignedCA() + require.NoError(t, err) + + tests := []struct { + desc string + server *tls.Config + client *tls.Config + expectErr bool + }{ + { + desc: "trusted certificates with proxy roles", + server: certFromIdentity(t, ca1, tlsca.Identity{ + Groups: []string{string(types.RoleProxy)}, + }), + client: certFromIdentity(t, ca1, tlsca.Identity{ + Groups: []string{string(types.RoleProxy)}, + }), + expectErr: false, + }, + { + desc: "trusted certificates with incorrect server role", + server: certFromIdentity(t, ca1, tlsca.Identity{ + Groups: []string{string(types.RoleAdmin)}, + }), + client: certFromIdentity(t, ca1, tlsca.Identity{ + Groups: []string{string(types.RoleProxy)}, + }), + expectErr: true, + }, + { + desc: "certificates with correct role from different CAs", + server: certFromIdentity(t, ca1, tlsca.Identity{ + Groups: []string{string(types.RoleProxy)}, + }), + client: certFromIdentity(t, ca2, tlsca.Identity{ + Groups: []string{string(types.RoleProxy)}, + }), + expectErr: true, + }, + } + + for _, tc := range tests { + listener, err := net.Listen("tcp", "localhost:0") + require.NoError(t, err) + + server, err := NewServer(ServerConfig{ + Listener: listener, + TLSConfig: tc.server, + ClusterDialer: &mockClusterDialer{}, + }) + require.NoError(t, err) + go server.Serve() + t.Cleanup(func() { server.Close() }) + + creds := newProxyCredentials(credentials.NewTLS(tc.client)) + conn, err := grpc.Dial(listener.Addr().String(), grpc.WithTransportCredentials(creds)) + require.NoError(t, err) + + func() { + defer conn.Close() + + client := proto.NewProxyServiceClient(conn) + _, err = client.DialNode(context.TODO()) + if tc.expectErr { + require.Error(t, err, tc.desc) + } else { + require.NoError(t, err, tc.desc) + } + }() + } +} diff --git a/lib/proxy/service.go b/lib/proxy/service.go new file mode 100644 index 000000000000..f6dd0b676ff6 --- /dev/null +++ b/lib/proxy/service.go @@ -0,0 +1,126 @@ +// Copyright 2022 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 proxy + +import ( + "net" + "strings" + + "github.com/gravitational/teleport/api/client/proto" + "github.com/gravitational/teleport/lib/reversetunnel" + "github.com/gravitational/teleport/lib/utils" + "github.com/gravitational/trace" + "github.com/sirupsen/logrus" +) + +// proxyService impelements the grpc ProxyService. +type proxyService struct { + clusterDialer ClusterDialer + log logrus.FieldLogger +} + +// DialNode opens a bidrectional stream to the requested node. +func (s *proxyService) DialNode(stream proto.ProxyService_DialNodeServer) error { + frame, err := stream.Recv() + if err != nil { + return trace.Wrap(err) + } + + // The first frame is always expected to be a dial request. + dial := frame.GetDialRequest() + if dial == nil { + return trace.BadParameter("invalid dial request") + } + + if dial.Source == nil || dial.Destination == nil { + return trace.BadParameter("invalid dial request") + } + + log := s.log.WithFields(logrus.Fields{ + "node": dial.NodeID, + "src": dial.Source.Addr, + "dst": dial.Destination.Addr, + }) + log.Debugf("Dial request from peer.") + + _, clusterName, err := splitServerID(dial.NodeID) + if err != nil { + return trace.Wrap(err) + } + + source := &utils.NetAddr{ + Addr: dial.Source.Addr, + AddrNetwork: dial.Source.Network, + } + destination := &utils.NetAddr{ + Addr: dial.Destination.Addr, + AddrNetwork: dial.Destination.Network, + } + + nodeConn, err := s.clusterDialer.Dial(clusterName, reversetunnel.DialParams{ + From: source, + To: destination, + ServerID: dial.NodeID, + ConnType: dial.TunnelType, + }) + if err != nil { + return trace.Wrap(err) + } + + streamConn := newStreamConn(stream, source, destination) + go streamConn.start() + + sent, received := pipeConn(stream.Context(), streamConn, nodeConn) + log.Debugf("Closing dial request from peer. sent: %d reveived %d", sent, received) + return nil +} + +// splitServerID splits a server id in to a node id and cluster name. +func splitServerID(address string) (string, string, error) { + split := strings.Split(address, ".") + if len(split) != 2 { + return "", "", trace.BadParameter("invalid server id %s", address) + } + + return split[0], split[1], nil +} + +// ClusterDialer dials a node in the given cluster. +type ClusterDialer interface { + Dial(clusterName string, request reversetunnel.DialParams) (net.Conn, error) +} + +// clusterDialerFunc is a function that implements ClusterDialer. +type clusterDialerFunc func(clusterName string, request reversetunnel.DialParams) (net.Conn, error) + +func (f clusterDialerFunc) Dial(clusterName string, request reversetunnel.DialParams) (net.Conn, error) { + return f(clusterName, request) +} + +// NewClusterDialer implements ClusterDialer for a reverse tunnel server. +func NewClusterDialer(server reversetunnel.Server) ClusterDialer { + return clusterDialerFunc(func(clusterName string, request reversetunnel.DialParams) (net.Conn, error) { + site, err := server.GetSite(clusterName) + if err != nil { + return nil, trace.Wrap(err) + } + + conn, err := site.Dial(request) + if err != nil { + return nil, trace.Wrap(err) + } + return conn, nil + }) +} diff --git a/lib/proxy/service_test.go b/lib/proxy/service_test.go new file mode 100644 index 000000000000..60c46e09cbd6 --- /dev/null +++ b/lib/proxy/service_test.go @@ -0,0 +1,109 @@ +package proxy + +import ( + "context" + "net" + "testing" + + "github.com/gravitational/teleport/api/client/proto" + "github.com/gravitational/teleport/api/types" + "github.com/gravitational/teleport/lib/reversetunnel" + "github.com/gravitational/trace" + "github.com/sirupsen/logrus" + "github.com/stretchr/testify/require" + "google.golang.org/grpc" + "google.golang.org/grpc/credentials/insecure" +) + +type mockClusterDialer struct { + MockDialCluster clusterDialerFunc +} + +func (m *mockClusterDialer) Dial(clusterName string, request reversetunnel.DialParams) (net.Conn, error) { + if m.MockDialCluster == nil { + return nil, trace.NotImplemented("") + } + return m.MockDialCluster(clusterName, request) +} + +func setupService(t *testing.T) (*proxyService, proto.ProxyServiceClient) { + server := grpc.NewServer() + t.Cleanup(server.Stop) + + listener, err := net.Listen("tcp", "localhost:0") + require.NoError(t, err) + + proxyService := &proxyService{ + log: logrus.New(), + } + proto.RegisterProxyServiceServer(server, proxyService) + + go server.Serve(listener) + + conn, err := grpc.Dial(listener.Addr().String(), grpc.WithTransportCredentials(insecure.NewCredentials())) + require.NoError(t, err) + t.Cleanup(func() { conn.Close() }) + + client := proto.NewProxyServiceClient(conn) + return proxyService, client +} + +func TestInvalidFirstFrame(t *testing.T) { + _, client := setupService(t) + stream, err := client.DialNode(context.TODO()) + require.NoError(t, err) + + err = stream.Send(&proto.Frame{ + Message: &proto.Frame_Data{}, + }) + require.NoError(t, err) + + _, err = stream.Recv() + require.Error(t, err, "expected invalid dial request") +} + +func TestSendReceive(t *testing.T) { + service, client := setupService(t) + stream, err := client.DialNode(context.TODO()) + require.NoError(t, err) + + dialRequest := &proto.DialRequest{ + NodeID: "test-id.test-cluster", + TunnelType: types.NodeTunnel, + Source: &proto.NetAddr{}, + Destination: &proto.NetAddr{}, + } + + local, remote := net.Pipe() + service.clusterDialer = &mockClusterDialer{ + MockDialCluster: func(clusterName string, request reversetunnel.DialParams) (net.Conn, error) { + require.Equal(t, "test-cluster", clusterName) + require.Equal(t, dialRequest.TunnelType, request.ConnType) + require.Equal(t, dialRequest.NodeID, request.ServerID) + + return remote, nil + }, + } + + send := []byte("ping") + recv := []byte("pong") + + err = stream.Send(&proto.Frame{Message: &proto.Frame_DialRequest{ + DialRequest: dialRequest, + }}) + require.NoError(t, err) + + err = stream.Send(&proto.Frame{Message: &proto.Frame_Data{Data: &proto.Data{ + Bytes: send, + }}}) + require.NoError(t, err) + + b := make([]byte, 4) + local.Read(b) + require.Equal(t, send, b, "unexpected bytes sent") + + local.Write(recv) + msg, err := stream.Recv() + require.NoError(t, err) + require.Equal(t, recv, msg.GetData().Bytes, "unexpected bytes received") +} diff --git a/lib/service/cfg.go b/lib/service/cfg.go index acdabdef4903..0913ee48d88a 100644 --- a/lib/service/cfg.go +++ b/lib/service/cfg.go @@ -371,6 +371,9 @@ type ProxyConfig struct { // MongoAddr is address of Mongo proxy. MongoAddr utils.NetAddr + // PeerAddr is the proxy peering address. + PeerAddr utils.NetAddr + Limiter limiter.Config // PublicAddrs is a list of the public addresses the proxy advertises diff --git a/lib/service/listeners.go b/lib/service/listeners.go index eab12a57aa2a..7abb255239de 100644 --- a/lib/service/listeners.go +++ b/lib/service/listeners.go @@ -42,6 +42,7 @@ var ( listenerProxyMySQL = listenerType(teleport.Component(teleport.ComponentProxy, "mysql")) listenerProxyPostgres = listenerType(teleport.Component(teleport.ComponentProxy, "postgres")) listenerProxyMongo = listenerType(teleport.Component(teleport.ComponentProxy, "mongo")) + listenerProxyPeer = listenerType(teleport.Component(teleport.ComponentProxy, "peer")) listenerMetrics = listenerType(teleport.ComponentMetrics) listenerWindowsDesktop = listenerType(teleport.ComponentWindowsDesktop) ) @@ -92,6 +93,11 @@ func (process *TeleportProcess) ProxyTunnelAddr() (*utils.NetAddr, error) { return process.registeredListenerAddr(listenerProxyTunnel) } +// ProxyTunnelAddr returns the proxy peer address, if configured and started. +func (process *TeleportProcess) ProxyPeerAddr() (*utils.NetAddr, error) { + return process.registeredListenerAddr(listenerProxyPeer) +} + func (process *TeleportProcess) registeredListenerAddr(typ listenerType) (*utils.NetAddr, error) { process.Lock() defer process.Unlock() diff --git a/lib/service/service.go b/lib/service/service.go index b059e6be6bef..753e91abc298 100644 --- a/lib/service/service.go +++ b/lib/service/service.go @@ -75,6 +75,7 @@ import ( "github.com/gravitational/teleport/lib/modules" "github.com/gravitational/teleport/lib/multiplexer" "github.com/gravitational/teleport/lib/plugin" + "github.com/gravitational/teleport/lib/proxy" restricted "github.com/gravitational/teleport/lib/restrictedsession" "github.com/gravitational/teleport/lib/reversetunnel" "github.com/gravitational/teleport/lib/services" @@ -2523,6 +2524,7 @@ type proxyListeners struct { kube net.Listener db dbListeners alpn net.Listener + proxy net.Listener } // dbListeners groups database access listeners. @@ -2578,10 +2580,13 @@ func (l *proxyListeners) Close() { if !l.db.Empty() { l.db.Close() } + if l.proxy != nil { + l.proxy.Close() + } } // setupProxyListeners sets up web proxy listeners based on the configuration -func (process *TeleportProcess) setupProxyListeners() (*proxyListeners, error) { +func (process *TeleportProcess) setupProxyListeners(networkingConfig types.ClusterNetworkingConfig) (*proxyListeners, error) { cfg := process.Config process.log.Debugf("Setup Proxy: Web Proxy Address: %v, Reverse Tunnel Proxy Address: %v", cfg.Proxy.WebAddr.Addr, cfg.Proxy.ReverseTunnelListenAddr.Addr) var err error @@ -2621,6 +2626,20 @@ func (process *TeleportProcess) setupProxyListeners() (*proxyListeners, error) { listeners.db.mongo = listener } + if !cfg.Proxy.DisableReverseTunnel && networkingConfig.GetProxyPeering() == types.ProxyPeering_Enabled { + addr, err := peerAddr(&process.Config.Proxy.PeerAddr) + if err != nil { + return nil, trace.Wrap(err) + } + + listener, err := process.importOrCreateListener(listenerProxyPeer, addr.String()) + if err != nil { + return nil, trace.Wrap(err) + } + + listeners.proxy = listener + } + switch { case cfg.Proxy.DisableWebService && cfg.Proxy.DisableReverseTunnel: process.log.Debugf("Setup Proxy: Reverse tunnel proxy and web proxy are disabled.") @@ -2787,7 +2806,12 @@ func (process *TeleportProcess) initProxyEndpoint(conn *Connector) error { return trace.Wrap(err) } - listeners, err := process.setupProxyListeners() + clusterNetworkConfig, err := accessPoint.GetClusterNetworkingConfig(process.ExitContext()) + if err != nil { + return trace.Wrap(err) + } + + listeners, err := process.setupProxyListeners(clusterNetworkConfig) if err != nil { return trace.Wrap(err) } @@ -3017,9 +3041,36 @@ func (process *TeleportProcess) initProxyEndpoint(conn *Connector) error { return nil }) - clusterNetworkConfig, err := accessPoint.GetClusterNetworkingConfig(process.ExitContext()) - if err != nil { - return trace.Wrap(err) + var proxyServer *proxy.Server + if listeners.proxy != nil { + proxyServer, err = proxy.NewServer(proxy.ServerConfig{ + Listener: listeners.proxy, + TLSConfig: serverTLSConfig, + ClusterDialer: proxy.NewClusterDialer(tsrv), + }) + if err != nil { + return trace.Wrap(err) + } + + eventC := make(chan Event) + process.WaitForEvent(process.ExitContext(), ProxyReverseTunnelReady, eventC) + + process.RegisterCriticalFunc("proxy.peer", func() error { + select { + case <-process.ExitContext().Done(): + log.Debugf("Process exiting: failed to start peer proxy service waiting for reverse tunnel server") + return nil + case <-eventC: + } + + log.Infof("Peer proxy service is starting on %s", listeners.proxy.Addr().String()) + err := proxyServer.Serve() + if err != nil { + return trace.Wrap(err) + } + + return nil + }) } rcWatchLog := logrus.WithFields(logrus.Fields{ @@ -3254,6 +3305,9 @@ func (process *TeleportProcess) initProxyEndpoint(conn *Connector) error { if tsrv != nil { warnOnErr(tsrv.Close(), log) } + if proxyServer != nil { + warnOnErr(proxyServer.Close(), log) + } if webServer != nil { warnOnErr(webServer.Close(), log) } @@ -3274,6 +3328,9 @@ func (process *TeleportProcess) initProxyEndpoint(conn *Connector) error { if tsrv != nil { warnOnErr(tsrv.Shutdown(ctx), log) } + if proxyServer != nil { + warnOnErr(proxyServer.Shutdown(), log) + } if webServer != nil { warnOnErr(webServer.Shutdown(ctx), log) } @@ -3307,6 +3364,29 @@ func kubeDialAddr(config ProxyConfig, mode types.ProxyListenerMode) utils.NetAdd return config.Kube.ListenAddr } +func peerAddr(addr *utils.NetAddr) (*utils.NetAddr, error) { + if addr.IsEmpty() { + addr = defaults.ProxyPeeringListenAddr() + } + + if !addr.IsHostUnspecified() { + return addr, nil + } + + ip, err := utils.GuessHostIP() + if err != nil { + return nil, trace.Wrap(err) + } + + port := addr.Port(defaults.ProxyPeeringListenPort) + addr, err = utils.ParseAddr(fmt.Sprintf("%s:%d", ip.String(), port)) + if err != nil { + return nil, trace.Wrap(err) + } + + return addr, nil +} + func (process *TeleportProcess) setupProxyTLSConfig(conn *Connector, tsrv reversetunnel.Server, accessPoint auth.ReadProxyAccessPoint, clusterName string) (*tls.Config, error) { cfg := process.Config var tlsConfig *tls.Config From 623947fa99855045d9aabe4434399776b0ffa0d1 Mon Sep 17 00:00:00 2001 From: David Date: Tue, 8 Feb 2022 14:33:00 -0700 Subject: [PATCH 02/30] Add license to test files --- lib/proxy/server_test.go | 14 ++++++++++++++ lib/proxy/service_test.go | 14 ++++++++++++++ 2 files changed, 28 insertions(+) diff --git a/lib/proxy/server_test.go b/lib/proxy/server_test.go index 587e10787efe..310942b20be3 100644 --- a/lib/proxy/server_test.go +++ b/lib/proxy/server_test.go @@ -1,3 +1,17 @@ +// Copyright 2022 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 proxy import ( diff --git a/lib/proxy/service_test.go b/lib/proxy/service_test.go index 60c46e09cbd6..d20754ae1796 100644 --- a/lib/proxy/service_test.go +++ b/lib/proxy/service_test.go @@ -1,3 +1,17 @@ +// Copyright 2022 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 proxy import ( From 95cf72703dcf3139f86552132a3de8ab6f2dfb7d Mon Sep 17 00:00:00 2001 From: David Date: Wed, 9 Feb 2022 17:28:43 -0700 Subject: [PATCH 03/30] Add dynamic client cert configuration --- lib/proxy/auth.go | 23 +++++++++++++++++++++++ lib/proxy/server.go | 21 +++++++++++++++------ lib/proxy/server_test.go | 12 ++++++++++++ lib/service/service.go | 1 + 4 files changed, 51 insertions(+), 6 deletions(-) diff --git a/lib/proxy/auth.go b/lib/proxy/auth.go index 3aae71b47966..8ee84c03151f 100644 --- a/lib/proxy/auth.go +++ b/lib/proxy/auth.go @@ -16,11 +16,14 @@ package proxy import ( "context" + "crypto/tls" "net" "github.com/gravitational/teleport/api/types" + "github.com/gravitational/teleport/lib/auth" "github.com/gravitational/teleport/lib/tlsca" "github.com/gravitational/trace" + "github.com/sirupsen/logrus" "google.golang.org/grpc/credentials" ) @@ -89,3 +92,23 @@ func checkProxyRole(authInfo credentials.AuthInfo) error { return trace.AccessDenied("proxy system role required") } + +func getConfigForClient(tlsConfig *tls.Config, ap auth.AccessCache, log logrus.FieldLogger) func(*tls.ClientHelloInfo) (*tls.Config, error) { + return func(info *tls.ClientHelloInfo) (*tls.Config, error) { + clusterName, err := ap.GetClusterName() + if err != nil { + log.WithError(err).Error("Failed to retrieve cluster name.") + return nil, nil + } + + pool, err := auth.ClientCertPool(ap, clusterName.GetClusterName()) + if err != nil { + log.WithError(err).Error("Failed to retrieve client CA pool.") + return nil, nil + } + + tlsCopy := tlsConfig.Clone() + tlsCopy.ClientCAs = pool + return tlsCopy, nil + } +} diff --git a/lib/proxy/server.go b/lib/proxy/server.go index e2e8d8b4ed8b..53412a758f43 100644 --- a/lib/proxy/server.go +++ b/lib/proxy/server.go @@ -22,6 +22,7 @@ import ( "github.com/gravitational/teleport" "github.com/gravitational/teleport/api/client/proto" "github.com/gravitational/teleport/api/metadata" + "github.com/gravitational/teleport/lib/auth" "github.com/gravitational/trace" "github.com/sirupsen/logrus" "google.golang.org/grpc" @@ -36,10 +37,14 @@ const ( // ServerConfig configures a Server instance. type ServerConfig struct { + AccessCache auth.AccessCache Listener net.Listener TLSConfig *tls.Config ClusterDialer ClusterDialer Log logrus.FieldLogger + + // getConfigForClient gets the client tls config. + getConfigForClient func(*tls.ClientHelloInfo) (*tls.Config, error) } // checkAndSetDefaults checks and sets default values @@ -60,19 +65,23 @@ func (c *ServerConfig) checkAndSetDefaults() error { if c.TLSConfig.RootCAs == nil { return trace.BadParameter("missing tls root ca") } - - c.TLSConfig = c.TLSConfig.Clone() - c.TLSConfig.ClientAuth = tls.RequireAndVerifyClientCert - c.TLSConfig.ClientCAs = c.TLSConfig.RootCAs - if c.Log == nil { c.Log = logrus.New() } c.Log = c.Log.WithField( trace.Component, - teleport.Component(teleport.ComponentProxy), + teleport.Component(teleport.ComponentProxy, "peer"), ) + c.TLSConfig = c.TLSConfig.Clone() + c.TLSConfig.ClientAuth = tls.RequireAndVerifyClientCert + + if c.getConfigForClient == nil { + c.getConfigForClient = getConfigForClient(c.TLSConfig, c.AccessCache, c.Log) + } + + c.TLSConfig.GetConfigForClient = c.getConfigForClient + return nil } diff --git a/lib/proxy/server_test.go b/lib/proxy/server_test.go index 310942b20be3..0177ed452133 100644 --- a/lib/proxy/server_test.go +++ b/lib/proxy/server_test.go @@ -28,6 +28,7 @@ import ( "github.com/gravitational/teleport/api/client/proto" "github.com/gravitational/teleport/api/types" + "github.com/gravitational/teleport/lib/auth" "github.com/gravitational/teleport/lib/defaults" "github.com/gravitational/teleport/lib/fixtures" "github.com/gravitational/teleport/lib/tlsca" @@ -97,6 +98,10 @@ func certFromIdentity(t *testing.T, ca *tlsca.CertAuthority, ident tlsca.Identit return config } +type mockAccessCache struct { + auth.AccessCache +} + // TestServerTLS ensures that only trusted certificates with the proxy role // are accepted by the server. func TestServerTLS(t *testing.T) { @@ -149,9 +154,16 @@ func TestServerTLS(t *testing.T) { require.NoError(t, err) server, err := NewServer(ServerConfig{ + AccessCache: &mockAccessCache{}, Listener: listener, TLSConfig: tc.server, ClusterDialer: &mockClusterDialer{}, + getConfigForClient: func(chi *tls.ClientHelloInfo) (*tls.Config, error) { + config := tc.server.Clone() + config.ClientAuth = tls.RequireAndVerifyClientCert + config.ClientCAs = config.RootCAs + return config, nil + }, }) require.NoError(t, err) go server.Serve() diff --git a/lib/service/service.go b/lib/service/service.go index 753e91abc298..c75cb253f2fc 100644 --- a/lib/service/service.go +++ b/lib/service/service.go @@ -3044,6 +3044,7 @@ func (process *TeleportProcess) initProxyEndpoint(conn *Connector) error { var proxyServer *proxy.Server if listeners.proxy != nil { proxyServer, err = proxy.NewServer(proxy.ServerConfig{ + AccessCache: accessPoint, Listener: listeners.proxy, TLSConfig: serverTLSConfig, ClusterDialer: proxy.NewClusterDialer(tsrv), From 705bf42f740fc148c95993da11e5e8354877b2db Mon Sep 17 00:00:00 2001 From: David Date: Fri, 11 Feb 2022 12:22:45 -0700 Subject: [PATCH 04/30] Update server config defaults and address other feedback --- lib/proxy/middleware.go | 4 ++-- lib/proxy/server.go | 6 +++--- lib/proxy/server_test.go | 5 ++++- 3 files changed, 9 insertions(+), 6 deletions(-) diff --git a/lib/proxy/middleware.go b/lib/proxy/middleware.go index c2e783034bcb..3db35914c982 100644 --- a/lib/proxy/middleware.go +++ b/lib/proxy/middleware.go @@ -21,8 +21,8 @@ import ( "google.golang.org/grpc/status" ) -// errorStreamInterceptor is GPRC unary interceptor that handles converting errors -// to the appropriate grpc status code. +// errorStreamInterceptor is a GPRC stream interceptor that handles converting +// errors to the appropriate grpc status code. func errorStreamInterceptor(srv interface{}, stream grpc.ServerStream, info *grpc.StreamServerInfo, handler grpc.StreamHandler) error { err := handler(srv, stream) return toGRPCError(err) diff --git a/lib/proxy/server.go b/lib/proxy/server.go index 53412a758f43..55ca9695b746 100644 --- a/lib/proxy/server.go +++ b/lib/proxy/server.go @@ -49,6 +49,9 @@ type ServerConfig struct { // checkAndSetDefaults checks and sets default values func (c *ServerConfig) checkAndSetDefaults() error { + if c.AccessCache == nil { + return trace.BadParameter("missing access cache") + } if c.Listener == nil { return trace.BadParameter("missing listener") } @@ -62,9 +65,6 @@ func (c *ServerConfig) checkAndSetDefaults() error { if len(c.TLSConfig.Certificates) == 0 { return trace.BadParameter("missing tls certificate") } - if c.TLSConfig.RootCAs == nil { - return trace.BadParameter("missing tls root ca") - } if c.Log == nil { c.Log = logrus.New() } diff --git a/lib/proxy/server_test.go b/lib/proxy/server_test.go index 0177ed452133..e986385acfaa 100644 --- a/lib/proxy/server_test.go +++ b/lib/proxy/server_test.go @@ -153,6 +153,9 @@ func TestServerTLS(t *testing.T) { listener, err := net.Listen("tcp", "localhost:0") require.NoError(t, err) + clientCAs := tc.server.RootCAs + tc.server.RootCAs = nil + server, err := NewServer(ServerConfig{ AccessCache: &mockAccessCache{}, Listener: listener, @@ -161,7 +164,7 @@ func TestServerTLS(t *testing.T) { getConfigForClient: func(chi *tls.ClientHelloInfo) (*tls.Config, error) { config := tc.server.Clone() config.ClientAuth = tls.RequireAndVerifyClientCert - config.ClientCAs = config.RootCAs + config.ClientCAs = clientCAs return config, nil }, }) From 2997a9276e0cb2c1811ca59e4393d9130a1033ef Mon Sep 17 00:00:00 2001 From: David Date: Thu, 24 Feb 2022 13:32:23 -0700 Subject: [PATCH 05/30] Add peer address to proxy server --- api/types/server.go | 14 + api/types/types.pb.go | 1332 +++++++++++++++-------------- api/types/types.proto | 2 + lib/service/service.go | 70 +- lib/srv/regular/sshserver.go | 5 +- lib/srv/regular/sshserver_test.go | 4 +- lib/web/apiserver_test.go | 4 +- 7 files changed, 749 insertions(+), 682 deletions(-) diff --git a/api/types/server.go b/api/types/server.go index 8575b4625acd..6b677553134e 100644 --- a/api/types/server.go +++ b/api/types/server.go @@ -77,6 +77,10 @@ type Server interface { GetKubernetesClusters() []*KubernetesCluster // SetKubeClusters sets the kubernetes clusters handled by this server. SetKubernetesClusters([]*KubernetesCluster) + // GetPeerAddr returns the peer address of the server. + GetPeerAddr() string + // SetPeerAddr sets the peer address of the server. + SetPeerAddr(string) // MatchAgainst takes a map of labels and returns True if this server // has ALL of them // @@ -310,6 +314,16 @@ func (s *ServerV2) SetKubernetesClusters(clusters []*KubernetesCluster) { s.Spec.KubernetesClusters = clusters } +// GetPeerAddr returns the peer address of the server. +func (s *ServerV2) GetPeerAddr() string { + return s.Spec.PeerAddr +} + +// SetPeerAddr sets the peer address of the server. +func (s *ServerV2) SetPeerAddr(addr string) { + s.Spec.PeerAddr = addr +} + // MatchAgainst takes a map of labels and returns True if this server // has ALL of them // diff --git a/api/types/types.pb.go b/api/types/types.pb.go index 62ee26802dfc..f7a1ad60d097 100644 --- a/api/types/types.pb.go +++ b/api/types/types.pb.go @@ -1328,10 +1328,12 @@ type ServerSpecV2 struct { // Important: jsontag must not be "kubernetes_clusters", because a // different field with that jsontag existed in 4.4: // https://github.com/gravitational/teleport/issues/4862 - KubernetesClusters []*KubernetesCluster `protobuf:"bytes,10,rep,name=KubernetesClusters,proto3" json:"kube_clusters,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + KubernetesClusters []*KubernetesCluster `protobuf:"bytes,10,rep,name=KubernetesClusters,proto3" json:"kube_clusters,omitempty"` + // PeerAddr is the address a proxy server is reachable at by its peer proxies. + PeerAddr string `protobuf:"bytes,11,opt,name=PeerAddr,proto3" json:"peer_addr,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } func (m *ServerSpecV2) Reset() { *m = ServerSpecV2{} } @@ -8834,14 +8836,14 @@ func init() { func init() { proto.RegisterFile("types.proto", fileDescriptor_d938547f84707355) } var fileDescriptor_d938547f84707355 = []byte{ - // 11403 bytes of a gzipped FileDescriptorProto + // 11422 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xdc, 0x7d, 0x5b, 0x6c, 0x1c, 0x49, 0x92, 0x98, 0xaa, 0x9b, 0x8f, 0xee, 0x60, 0x93, 0x6c, 0x26, 0xf5, 0xa0, 0x34, 0x9a, 0x69, 0x4d, - 0xcd, 0x8c, 0x46, 0xd2, 0xce, 0x48, 0x23, 0x6a, 0x66, 0x6e, 0x67, 0xe7, 0xb5, 0xdd, 0x24, 0x25, + 0xcd, 0x8c, 0x46, 0xd2, 0xce, 0x48, 0x23, 0x6a, 0x66, 0xee, 0x66, 0xe7, 0xb5, 0xdd, 0x24, 0x25, 0x71, 0x44, 0x91, 0x9c, 0x6a, 0x3e, 0xf6, 0x35, 0x57, 0x57, 0xec, 0x4a, 0x91, 0x35, 0xec, 0xee, 0xea, 0xad, 0xaa, 0x96, 0xc4, 0x5b, 0x1f, 0xee, 0x6c, 0x63, 0x6f, 0x71, 0x38, 0xdc, 0x3e, 0x0e, 0x7b, 0xd8, 0x3d, 0xe3, 0xec, 0x3b, 0x2f, 0x6c, 0xf8, 0x71, 0x58, 0x1b, 0xb8, 0x33, 0x60, 0x18, - 0xb0, 0x3f, 0x0e, 0x30, 0x0e, 0xfb, 0x61, 0xc3, 0xfb, 0x67, 0xf8, 0x6c, 0xd0, 0xde, 0x5d, 0xff, + 0xb0, 0x3f, 0x0e, 0x30, 0x16, 0xfb, 0x61, 0xc3, 0xfb, 0x67, 0xf8, 0x6c, 0xd0, 0xde, 0x5d, 0xff, 0x1c, 0x01, 0x7f, 0xf9, 0xeb, 0xd6, 0x5e, 0xd8, 0xc8, 0xc8, 0xcc, 0xaa, 0xcc, 0xea, 0x6a, 0xb2, 0x39, 0xd2, 0x00, 0x2b, 0x7d, 0x91, 0x1d, 0x19, 0x11, 0x95, 0xcf, 0xc8, 0x88, 0xcc, 0x88, 0x48, 0x18, 0x8b, 0xf6, 0x3a, 0x34, 0xbc, 0xda, 0x09, 0xfc, 0xc8, 0x27, 0xc3, 0xf8, 0xe3, 0xdc, 0xc9, @@ -8858,7 +8860,7 @@ var fileDescriptor_d938547f84707355 = []byte{ 0x0a, 0x4d, 0x06, 0xb2, 0x3d, 0xd7, 0x92, 0x85, 0x64, 0x11, 0x46, 0x17, 0x1e, 0x76, 0xbc, 0x80, 0x86, 0x33, 0x43, 0x17, 0x8c, 0x4b, 0x63, 0xb3, 0xe7, 0xae, 0xf2, 0xf6, 0x5f, 0x95, 0xed, 0xbf, 0xba, 0x26, 0xdb, 0x5f, 0x9b, 0xfe, 0xd1, 0x7e, 0xe5, 0xc4, 0xc1, 0x7e, 0x65, 0x94, 0x72, 0x92, - 0x6f, 0xff, 0xf7, 0x8a, 0x61, 0x49, 0x7a, 0xf2, 0x0e, 0x0c, 0xad, 0xed, 0x75, 0xe8, 0x4c, 0xf1, + 0x6f, 0xfd, 0xf7, 0x8a, 0x61, 0x49, 0x7a, 0xf2, 0x0e, 0x0c, 0xad, 0xed, 0x75, 0xe8, 0x4c, 0xf1, 0x82, 0x71, 0x69, 0x62, 0xf6, 0xb9, 0xab, 0xbc, 0xc7, 0xe3, 0x46, 0x26, 0xff, 0x31, 0xac, 0x5a, 0xe1, 0x60, 0xbf, 0x32, 0xc4, 0x50, 0x2c, 0xa4, 0x22, 0xaf, 0xc2, 0xc8, 0x6d, 0x3f, 0x8c, 0x16, 0xe7, 0x67, 0x00, 0x9b, 0x76, 0xea, 0x60, 0xbf, 0x32, 0xb5, 0xe3, 0x87, 0x91, 0xed, 0xb9, 0xaf, @@ -8867,7 +8869,7 @@ var fileDescriptor_d938547f84707355 = []byte{ 0xcc, 0x2f, 0x94, 0x0d, 0x32, 0x0a, 0xf9, 0xea, 0xea, 0x6a, 0x39, 0x47, 0x4a, 0x50, 0x98, 0xaf, 0xae, 0x55, 0x6b, 0xd5, 0xfa, 0x42, 0x39, 0x4f, 0xa6, 0x61, 0x72, 0x73, 0x71, 0x79, 0x7e, 0x65, 0xb3, 0x6e, 0xcf, 0x2f, 0xd4, 0xef, 0xac, 0xad, 0xac, 0x96, 0x87, 0xc8, 0x04, 0xc0, 0x9d, 0xf5, - 0xda, 0x82, 0xb5, 0xbc, 0xb0, 0xb6, 0x50, 0x2f, 0x0f, 0x9b, 0xdf, 0xc8, 0x43, 0xe1, 0x2e, 0x8d, + 0xda, 0x82, 0xb5, 0xbc, 0xb0, 0xb6, 0x50, 0x2f, 0x0f, 0x9b, 0x5f, 0xcf, 0x43, 0xe1, 0x2e, 0x8d, 0x1c, 0xd7, 0x89, 0x1c, 0x72, 0x5e, 0x1b, 0x22, 0xac, 0xbd, 0x32, 0x36, 0x2f, 0xf4, 0x8e, 0xcd, 0xf0, 0xc1, 0x7e, 0xc5, 0x78, 0x55, 0x1d, 0x93, 0xb7, 0x61, 0x6c, 0x9e, 0x86, 0x8d, 0xc0, 0xeb, 0xb0, 0xf9, 0x82, 0xe3, 0x52, 0xac, 0x9d, 0x3d, 0xd8, 0xaf, 0x9c, 0x72, 0x13, 0xb0, 0xd2, 0x56, @@ -8877,55 +8879,55 @@ var fileDescriptor_d938547f84707355 = []byte{ 0xf9, 0xb3, 0x3f, 0xda, 0xaf, 0x18, 0x6c, 0x2c, 0xc4, 0x98, 0x27, 0xfc, 0xf4, 0xd1, 0xbf, 0x00, 0xb9, 0xc5, 0xf9, 0x99, 0x51, 0x9c, 0x6b, 0xe5, 0x83, 0xfd, 0x4a, 0x49, 0x1b, 0xb6, 0xdc, 0xe2, 0xfc, 0xb9, 0xb7, 0x60, 0x4c, 0xa9, 0x23, 0x29, 0x43, 0x7e, 0x97, 0xee, 0xf1, 0xfe, 0xb4, 0xd8, - 0xbf, 0xe4, 0x24, 0x0c, 0xdf, 0x77, 0x9a, 0x5d, 0xd1, 0x81, 0x16, 0xff, 0xf1, 0xb9, 0xdc, 0x67, - 0x0d, 0xf3, 0xf7, 0x87, 0xa0, 0x60, 0xf9, 0x7c, 0x9d, 0x91, 0xcb, 0x30, 0x5c, 0x8f, 0x9c, 0x48, - 0x0e, 0xc5, 0xf4, 0xc1, 0x7e, 0x65, 0x32, 0x64, 0x00, 0xe5, 0x7b, 0x1c, 0x83, 0xa1, 0xae, 0xee, - 0x38, 0xa1, 0x1c, 0x12, 0x44, 0xed, 0x30, 0x80, 0x8a, 0x8a, 0x18, 0xe4, 0x22, 0x0c, 0xdd, 0xf5, - 0x5d, 0x2a, 0x46, 0x85, 0x1c, 0xec, 0x57, 0x26, 0x5a, 0xbe, 0xab, 0x22, 0x62, 0x39, 0x79, 0x05, - 0x8a, 0x73, 0xdd, 0x20, 0xa0, 0x6d, 0x36, 0x55, 0x87, 0x10, 0x79, 0xe2, 0x60, 0xbf, 0x02, 0x0d, - 0x0e, 0x64, 0x8b, 0x2b, 0x41, 0x60, 0x5d, 0x5d, 0x8f, 0x9c, 0x20, 0xa2, 0xee, 0xcc, 0xf0, 0x40, - 0x5d, 0xcd, 0x96, 0xd7, 0x54, 0xc8, 0x49, 0xd2, 0x5d, 0x2d, 0x38, 0x91, 0xdb, 0x30, 0x76, 0x2b, - 0x70, 0x1a, 0x74, 0x95, 0x06, 0x9e, 0xef, 0xe2, 0x18, 0xe6, 0x6b, 0x17, 0x0f, 0xf6, 0x2b, 0xa7, - 0xb7, 0x19, 0xd8, 0xee, 0x20, 0x3c, 0xa1, 0xfe, 0xf9, 0x7e, 0xa5, 0x30, 0xdf, 0x0d, 0xb0, 0xf7, - 0x2c, 0x95, 0x94, 0xfc, 0x1a, 0x1b, 0x92, 0x30, 0xc2, 0xae, 0xa5, 0x2e, 0x8e, 0xde, 0xe1, 0x55, - 0x34, 0x45, 0x15, 0x4f, 0x37, 0x9d, 0x30, 0xb2, 0x03, 0x4e, 0x97, 0xaa, 0xa7, 0xca, 0x92, 0xac, - 0x40, 0xa1, 0xde, 0xd8, 0xa1, 0x6e, 0xb7, 0x49, 0x67, 0x0a, 0xc8, 0xfe, 0x8c, 0x98, 0xb8, 0x72, - 0x3c, 0x65, 0x71, 0xed, 0x9c, 0xe0, 0x4d, 0x42, 0x01, 0x51, 0xfa, 0x3e, 0x66, 0xf2, 0xb9, 0xc2, - 0xf7, 0xff, 0xa4, 0x72, 0xe2, 0xb7, 0xfe, 0xdb, 0x85, 0x13, 0xe6, 0xbf, 0xce, 0x41, 0x39, 0xcd, - 0x84, 0xdc, 0x83, 0xf1, 0xf5, 0x8e, 0xeb, 0x44, 0x74, 0xae, 0xe9, 0xd1, 0x76, 0x14, 0xe2, 0x24, - 0x39, 0xbc, 0x4d, 0x2f, 0x8a, 0xef, 0xce, 0x74, 0x91, 0xd0, 0x6e, 0x70, 0xca, 0x54, 0xab, 0x74, - 0xb6, 0xc9, 0x77, 0xea, 0x28, 0xa7, 0x43, 0x9c, 0x61, 0xc7, 0xfb, 0x0e, 0x97, 0xf0, 0x7d, 0xbe, - 0x23, 0xd8, 0x8a, 0x09, 0xd4, 0x76, 0xb7, 0xf6, 0x70, 0x66, 0x0e, 0x3e, 0x81, 0x18, 0x49, 0xc6, - 0x04, 0x62, 0x60, 0xf3, 0x7f, 0x1a, 0x30, 0x61, 0xd1, 0xd0, 0xef, 0x06, 0x0d, 0x7a, 0x9b, 0x3a, - 0x2e, 0x0d, 0xd8, 0xf4, 0xbf, 0xe3, 0xb5, 0x5d, 0xb1, 0xa6, 0x70, 0xfa, 0xef, 0x7a, 0x6d, 0x75, - 0x09, 0x63, 0x39, 0x79, 0x0d, 0x46, 0xeb, 0xdd, 0x2d, 0x44, 0xe5, 0x6b, 0xea, 0x34, 0x8e, 0x58, - 0x77, 0xcb, 0x4e, 0xa1, 0x4b, 0x34, 0x72, 0x0d, 0x46, 0x37, 0x68, 0x10, 0x26, 0x12, 0x0f, 0x25, - 0xfb, 0x7d, 0x0e, 0x52, 0x09, 0x04, 0x16, 0xb9, 0x95, 0x48, 0x5d, 0xb1, 0x27, 0x4d, 0xa6, 0x64, - 0x5d, 0x32, 0x55, 0x5a, 0x02, 0xa2, 0x4e, 0x15, 0x89, 0x65, 0x7e, 0x27, 0x07, 0xe5, 0x79, 0x27, - 0x72, 0xb6, 0x9c, 0x50, 0xf4, 0xe7, 0xc6, 0x0d, 0x26, 0xc7, 0x95, 0x86, 0xa2, 0x1c, 0x67, 0x35, - 0xff, 0xc4, 0xcd, 0x7b, 0x29, 0xdd, 0xbc, 0x31, 0xb6, 0x41, 0x8a, 0xe6, 0x25, 0x8d, 0x7a, 0xf7, - 0xe8, 0x46, 0x95, 0x45, 0xa3, 0x0a, 0xb2, 0x51, 0x49, 0x53, 0xc8, 0xbb, 0x30, 0x54, 0xef, 0xd0, - 0x86, 0x10, 0x22, 0x52, 0xf6, 0xeb, 0x8d, 0x63, 0x08, 0x1b, 0x37, 0x6a, 0x25, 0xc1, 0x66, 0x28, - 0xec, 0xd0, 0x86, 0x85, 0x64, 0xca, 0xa2, 0xf9, 0xee, 0x08, 0x9c, 0xcc, 0x22, 0x23, 0xef, 0xea, - 0x9b, 0x13, 0xef, 0x9e, 0x67, 0xfa, 0x6e, 0x4e, 0x33, 0x86, 0xbe, 0x3d, 0x5d, 0x81, 0xc2, 0x2a, - 0x9b, 0x90, 0x0d, 0xbf, 0x29, 0x7a, 0x8e, 0x49, 0xc5, 0x42, 0x47, 0xc2, 0x0c, 0x2b, 0x2e, 0x27, - 0xcf, 0x40, 0x7e, 0xdd, 0x5a, 0x14, 0xdd, 0x55, 0x3c, 0xd8, 0xaf, 0xe4, 0xbb, 0x81, 0x37, 0x63, - 0x58, 0x0c, 0x4a, 0xae, 0xc1, 0xc8, 0x5c, 0x75, 0x8e, 0x06, 0x11, 0x76, 0x53, 0xa9, 0x76, 0x86, - 0xcd, 0x96, 0x86, 0x63, 0x37, 0x68, 0x10, 0x69, 0x9f, 0x17, 0x68, 0xe4, 0x33, 0x90, 0xaf, 0x6e, - 0xd6, 0x45, 0xcf, 0x80, 0xe8, 0x99, 0xea, 0x66, 0xbd, 0x36, 0x2e, 0x3a, 0x22, 0xef, 0x3c, 0x08, - 0x19, 0xf7, 0xea, 0x66, 0x5d, 0x1d, 0xad, 0x91, 0x43, 0x46, 0xeb, 0x12, 0x14, 0x98, 0x9e, 0xc1, - 0x36, 0x78, 0x14, 0x8a, 0x45, 0xae, 0x3e, 0xed, 0x08, 0x98, 0x15, 0x97, 0x92, 0x17, 0x62, 0xb5, - 0xa5, 0x90, 0xf0, 0x13, 0x6a, 0x8b, 0x54, 0x56, 0xc8, 0x43, 0x18, 0x9f, 0xdf, 0x6b, 0x3b, 0x2d, - 0xaf, 0x21, 0xb6, 0xf0, 0x22, 0x6e, 0xe1, 0x57, 0x0f, 0x19, 0xc6, 0xab, 0x1a, 0x01, 0xdf, 0xd5, - 0xa5, 0xf0, 0x9d, 0x71, 0x79, 0x99, 0x9d, 0xde, 0xe1, 0x67, 0x0c, 0x4b, 0xff, 0x10, 0x5b, 0x4b, - 0x52, 0x44, 0xa2, 0x5e, 0x95, 0x4c, 0x3b, 0x09, 0x4e, 0xd6, 0x52, 0x20, 0x20, 0xea, 0x5a, 0x8a, - 0x37, 0xdd, 0x77, 0x21, 0x7f, 0x6b, 0x6e, 0x75, 0x66, 0x0c, 0x79, 0x10, 0xc1, 0xe3, 0xd6, 0xdc, - 0xea, 0x5c, 0xd3, 0xef, 0xba, 0xf5, 0x0f, 0x97, 0x6a, 0x67, 0x04, 0x9b, 0xf1, 0xed, 0x46, 0x47, - 0xab, 0x11, 0xa3, 0x23, 0x0b, 0x50, 0x90, 0xad, 0x9c, 0x29, 0x21, 0x8f, 0xa9, 0x54, 0xe3, 0x37, - 0x6e, 0xf0, 0xb5, 0xe6, 0x8a, 0xdf, 0x6a, 0x2d, 0x24, 0xce, 0xb9, 0x4d, 0x20, 0xbd, 0xfd, 0x92, - 0xa1, 0x49, 0x7c, 0x46, 0xd5, 0x24, 0xc6, 0x66, 0x4f, 0x89, 0x6f, 0xcd, 0xf9, 0xad, 0x96, 0xd3, - 0x76, 0x91, 0x76, 0x63, 0x56, 0x55, 0x30, 0xaa, 0x30, 0x91, 0x54, 0x64, 0xc9, 0x0b, 0x23, 0x72, - 0x0d, 0x8a, 0x12, 0xc2, 0x36, 0x91, 0x7c, 0x66, 0x95, 0xad, 0x04, 0xc7, 0xfc, 0xcb, 0x1c, 0x40, + 0xbf, 0xe4, 0x24, 0x0c, 0xdf, 0x77, 0x9a, 0x5d, 0xd1, 0x81, 0x16, 0xff, 0xf1, 0xd9, 0xdc, 0xaf, + 0x1a, 0xe6, 0x1f, 0x0c, 0x41, 0xc1, 0xf2, 0xf9, 0x3a, 0x23, 0x97, 0x61, 0xb8, 0x1e, 0x39, 0x91, + 0x1c, 0x8a, 0xe9, 0x83, 0xfd, 0xca, 0x64, 0xc8, 0x00, 0xca, 0xf7, 0x38, 0x06, 0x43, 0x5d, 0xdd, + 0x71, 0x42, 0x39, 0x24, 0x88, 0xda, 0x61, 0x00, 0x15, 0x15, 0x31, 0xc8, 0x45, 0x18, 0xba, 0xeb, + 0xbb, 0x54, 0x8c, 0x0a, 0x39, 0xd8, 0xaf, 0x4c, 0xb4, 0x7c, 0x57, 0x45, 0xc4, 0x72, 0xf2, 0x0a, + 0x14, 0xe7, 0xba, 0x41, 0x40, 0xdb, 0x6c, 0xaa, 0x0e, 0x21, 0xf2, 0xc4, 0xc1, 0x7e, 0x05, 0x1a, + 0x1c, 0xc8, 0x16, 0x57, 0x82, 0xc0, 0xba, 0xba, 0x1e, 0x39, 0x41, 0x44, 0xdd, 0x99, 0xe1, 0x81, + 0xba, 0x9a, 0x2d, 0xaf, 0xa9, 0x90, 0x93, 0xa4, 0xbb, 0x5a, 0x70, 0x22, 0xb7, 0x61, 0xec, 0x56, + 0xe0, 0x34, 0xe8, 0x2a, 0x0d, 0x3c, 0xdf, 0xc5, 0x31, 0xcc, 0xd7, 0x2e, 0x1e, 0xec, 0x57, 0x4e, + 0x6f, 0x33, 0xb0, 0xdd, 0x41, 0x78, 0x42, 0xfd, 0xf3, 0xfd, 0x4a, 0x61, 0xbe, 0x1b, 0x60, 0xef, + 0x59, 0x2a, 0x29, 0xf9, 0x75, 0x36, 0x24, 0x61, 0x84, 0x5d, 0x4b, 0x5d, 0x1c, 0xbd, 0xc3, 0xab, + 0x68, 0x8a, 0x2a, 0x9e, 0x6e, 0x3a, 0x61, 0x64, 0x07, 0x9c, 0x2e, 0x55, 0x4f, 0x95, 0x25, 0x59, + 0x81, 0x42, 0xbd, 0xb1, 0x43, 0xdd, 0x6e, 0x93, 0xce, 0x14, 0x90, 0xfd, 0x19, 0x31, 0x71, 0xe5, + 0x78, 0xca, 0xe2, 0xda, 0x39, 0xc1, 0x9b, 0x84, 0x02, 0xa2, 0xf4, 0x7d, 0xcc, 0xe4, 0xb3, 0x85, + 0xef, 0xfd, 0x69, 0xe5, 0xc4, 0x6f, 0xff, 0xb7, 0x0b, 0x27, 0xcc, 0x7f, 0x9d, 0x83, 0x72, 0x9a, + 0x09, 0xb9, 0x07, 0xe3, 0xeb, 0x1d, 0xd7, 0x89, 0xe8, 0x5c, 0xd3, 0xa3, 0xed, 0x28, 0xc4, 0x49, + 0x72, 0x78, 0x9b, 0x5e, 0x14, 0xdf, 0x9d, 0xe9, 0x22, 0xa1, 0xdd, 0xe0, 0x94, 0xa9, 0x56, 0xe9, + 0x6c, 0x93, 0xef, 0xd4, 0x51, 0x4e, 0x87, 0x38, 0xc3, 0x8e, 0xf7, 0x1d, 0x2e, 0xe1, 0xfb, 0x7c, + 0x47, 0xb0, 0x15, 0x13, 0xa8, 0xed, 0x6e, 0xed, 0xe1, 0xcc, 0x1c, 0x7c, 0x02, 0x31, 0x92, 0x8c, + 0x09, 0xc4, 0xc0, 0xe6, 0xff, 0x34, 0x60, 0xc2, 0xa2, 0xa1, 0xdf, 0x0d, 0x1a, 0xf4, 0x36, 0x75, + 0x5c, 0x1a, 0xb0, 0xe9, 0x7f, 0xc7, 0x6b, 0xbb, 0x62, 0x4d, 0xe1, 0xf4, 0xdf, 0xf5, 0xda, 0xea, + 0x12, 0xc6, 0x72, 0xf2, 0x1a, 0x8c, 0xd6, 0xbb, 0x5b, 0x88, 0xca, 0xd7, 0xd4, 0x69, 0x1c, 0xb1, + 0xee, 0x96, 0x9d, 0x42, 0x97, 0x68, 0xe4, 0x1a, 0x8c, 0x6e, 0xd0, 0x20, 0x4c, 0x24, 0x1e, 0x4a, + 0xf6, 0xfb, 0x1c, 0xa4, 0x12, 0x08, 0x2c, 0x72, 0x2b, 0x91, 0xba, 0x62, 0x4f, 0x9a, 0x4c, 0xc9, + 0xba, 0x64, 0xaa, 0xb4, 0x04, 0x44, 0x9d, 0x2a, 0x12, 0xcb, 0xfc, 0x76, 0x0e, 0xca, 0xf3, 0x4e, + 0xe4, 0x6c, 0x39, 0xa1, 0xe8, 0xcf, 0x8d, 0x1b, 0x4c, 0x8e, 0x2b, 0x0d, 0x45, 0x39, 0xce, 0x6a, + 0xfe, 0x89, 0x9b, 0xf7, 0x52, 0xba, 0x79, 0x63, 0x6c, 0x83, 0x14, 0xcd, 0x4b, 0x1a, 0xf5, 0xee, + 0xd1, 0x8d, 0x2a, 0x8b, 0x46, 0x15, 0x64, 0xa3, 0x92, 0xa6, 0x90, 0x77, 0x61, 0xa8, 0xde, 0xa1, + 0x0d, 0x21, 0x44, 0xa4, 0xec, 0xd7, 0x1b, 0xc7, 0x10, 0x36, 0x6e, 0xd4, 0x4a, 0x82, 0xcd, 0x50, + 0xd8, 0xa1, 0x0d, 0x0b, 0xc9, 0x94, 0x45, 0xf3, 0x9d, 0x11, 0x38, 0x99, 0x45, 0x46, 0xde, 0xd5, + 0x37, 0x27, 0xde, 0x3d, 0xcf, 0xf4, 0xdd, 0x9c, 0x66, 0x0c, 0x7d, 0x7b, 0xba, 0x02, 0x85, 0x55, + 0x36, 0x21, 0x1b, 0x7e, 0x53, 0xf4, 0x1c, 0x93, 0x8a, 0x85, 0x8e, 0x84, 0x19, 0x56, 0x5c, 0x4e, + 0x9e, 0x81, 0xfc, 0xba, 0xb5, 0x28, 0xba, 0xab, 0x78, 0xb0, 0x5f, 0xc9, 0x77, 0x03, 0x6f, 0xc6, + 0xb0, 0x18, 0x94, 0x5c, 0x83, 0x91, 0xb9, 0xea, 0x1c, 0x0d, 0x22, 0xec, 0xa6, 0x52, 0xed, 0x0c, + 0x9b, 0x2d, 0x0d, 0xc7, 0x6e, 0xd0, 0x20, 0xd2, 0x3e, 0x2f, 0xd0, 0xc8, 0x67, 0x20, 0x5f, 0xdd, + 0xac, 0x8b, 0x9e, 0x01, 0xd1, 0x33, 0xd5, 0xcd, 0x7a, 0x6d, 0x5c, 0x74, 0x44, 0xde, 0x79, 0x10, + 0x32, 0xee, 0xd5, 0xcd, 0xba, 0x3a, 0x5a, 0x23, 0x87, 0x8c, 0xd6, 0x25, 0x28, 0x30, 0x3d, 0x83, + 0x6d, 0xf0, 0x28, 0x14, 0x8b, 0x5c, 0x7d, 0xda, 0x11, 0x30, 0x2b, 0x2e, 0x25, 0x2f, 0xc4, 0x6a, + 0x4b, 0x21, 0xe1, 0x27, 0xd4, 0x16, 0xa9, 0xac, 0x90, 0x87, 0x30, 0x3e, 0xbf, 0xd7, 0x76, 0x5a, + 0x5e, 0x43, 0x6c, 0xe1, 0x45, 0xdc, 0xc2, 0xaf, 0x1e, 0x32, 0x8c, 0x57, 0x35, 0x02, 0xbe, 0xab, + 0x4b, 0xe1, 0x3b, 0xe3, 0xf2, 0x32, 0x3b, 0xbd, 0xc3, 0xcf, 0x18, 0x96, 0xfe, 0x21, 0xb6, 0x96, + 0xa4, 0x88, 0x44, 0xbd, 0x2a, 0x99, 0x76, 0x12, 0x9c, 0xac, 0xa5, 0x40, 0x40, 0xd4, 0xb5, 0x14, + 0x6f, 0xba, 0xef, 0x42, 0xfe, 0xd6, 0xdc, 0xea, 0xcc, 0x18, 0xf2, 0x20, 0x82, 0xc7, 0xad, 0xb9, + 0xd5, 0xb9, 0xa6, 0xdf, 0x75, 0xeb, 0x1f, 0x2e, 0xd5, 0xce, 0x08, 0x36, 0xe3, 0xdb, 0x8d, 0x8e, + 0x56, 0x23, 0x46, 0x47, 0x16, 0xa0, 0x20, 0x5b, 0x39, 0x53, 0x42, 0x1e, 0x53, 0xa9, 0xc6, 0x6f, + 0xdc, 0xe0, 0x6b, 0xcd, 0x15, 0xbf, 0xd5, 0x5a, 0x48, 0x9c, 0x73, 0x9b, 0x40, 0x7a, 0xfb, 0x25, + 0x43, 0x93, 0xf8, 0x8c, 0xaa, 0x49, 0x8c, 0xcd, 0x9e, 0x12, 0xdf, 0x9a, 0xf3, 0x5b, 0x2d, 0xa7, + 0xed, 0x22, 0xed, 0xc6, 0xac, 0xaa, 0x60, 0x54, 0x61, 0x22, 0xa9, 0xc8, 0x92, 0x17, 0x46, 0xe4, + 0x1a, 0x14, 0x25, 0x84, 0x6d, 0x22, 0xf9, 0xcc, 0x2a, 0x5b, 0x09, 0x8e, 0xf9, 0xc3, 0x1c, 0x40, 0x52, 0xf2, 0x84, 0xca, 0x99, 0x5f, 0xd1, 0xe4, 0xcc, 0xa9, 0xf4, 0x04, 0xed, 0x2b, 0x61, 0xc8, 0xfb, 0x30, 0xc2, 0x54, 0xae, 0xae, 0x54, 0x29, 0xcf, 0xa4, 0x49, 0xb1, 0x70, 0xe3, 0x46, 0x6d, 0x42, 0x10, 0x8f, 0x84, 0x08, 0xb1, 0x04, 0x99, 0x22, 0xa2, 0xfe, 0xdd, 0x50, 0x32, 0x18, 0x42, @@ -8933,7 +8935,7 @@ var fileDescriptor_d938547f84707355 = []byte{ 0xde, 0xa9, 0xa3, 0x42, 0xb6, 0xa4, 0x25, 0x0b, 0xef, 0xc0, 0x23, 0x25, 0x4b, 0x27, 0xbd, 0x6c, 0x87, 0x70, 0x1a, 0x5c, 0xca, 0xec, 0x95, 0xac, 0x05, 0x7b, 0xe1, 0xa8, 0x05, 0x9b, 0x5e, 0xae, 0x37, 0xfa, 0xc9, 0xb2, 0x53, 0x72, 0x75, 0x39, 0x0f, 0x54, 0x72, 0x94, 0x69, 0x6f, 0xf3, 0xa5, - 0x39, 0xd2, 0x77, 0x69, 0x9e, 0xca, 0x5c, 0x9a, 0x7c, 0x61, 0xbe, 0x0d, 0xc3, 0xd5, 0x5f, 0xef, + 0x39, 0xd2, 0x77, 0x69, 0x9e, 0xca, 0x5c, 0x9a, 0x7c, 0x61, 0xbe, 0x0d, 0xc3, 0xd5, 0xdf, 0xe8, 0x06, 0x54, 0xe8, 0x7e, 0x25, 0xf9, 0x4d, 0x06, 0x8b, 0xd7, 0xf4, 0xa4, 0xc3, 0x7e, 0xaa, 0x3a, 0x33, 0x96, 0xb3, 0x2f, 0xaf, 0x2d, 0xd5, 0x85, 0x5e, 0x47, 0x52, 0xdd, 0xb2, 0xb6, 0xa4, 0x54, 0x3b, 0xd2, 0x5a, 0xcd, 0xa8, 0x3e, 0xbd, 0xb5, 0xdc, 0x54, 0x76, 0x7d, 0x31, 0xeb, 0x98, 0x75, @@ -8949,605 +8951,606 @@ var fileDescriptor_d938547f84707355 = []byte{ 0x00, 0x6d, 0x61, 0x4f, 0x40, 0x75, 0x0e, 0x0a, 0xb2, 0xfe, 0xe9, 0xdc, 0xc0, 0x9f, 0x66, 0x9f, 0x94, 0x5a, 0xaf, 0x38, 0x16, 0x11, 0x9f, 0x0c, 0x04, 0x34, 0xf5, 0xc9, 0x04, 0x99, 0x5c, 0x84, 0xd1, 0xc5, 0xea, 0xdd, 0x6a, 0x37, 0xda, 0xc1, 0xfe, 0x2a, 0x70, 0xf9, 0xe3, 0x39, 0x2d, 0xdb, - 0xe9, 0x46, 0x3b, 0x96, 0x2c, 0x34, 0x7f, 0xcb, 0x80, 0x31, 0x65, 0xe9, 0xb1, 0xaa, 0xae, 0x06, + 0xe9, 0x46, 0x3b, 0x96, 0x2c, 0x34, 0x7f, 0xdb, 0x80, 0x31, 0x65, 0xe9, 0xb1, 0xaa, 0xae, 0x06, 0xfe, 0xc7, 0xb4, 0x11, 0xe9, 0xbd, 0xd4, 0xe1, 0xc0, 0x54, 0x55, 0x63, 0xd4, 0x54, 0xef, 0xe4, 0x8e, 0xd1, 0x3b, 0xe6, 0x35, 0xb1, 0xa2, 0x99, 0x4a, 0xaf, 0x9c, 0x58, 0xa0, 0x4a, 0xcf, 0x54, - 0x16, 0x55, 0xa5, 0x67, 0xe5, 0xe6, 0x0f, 0x0d, 0x18, 0x53, 0x16, 0x2d, 0x79, 0x5d, 0x58, 0xc2, + 0x16, 0x55, 0xa5, 0x67, 0xe5, 0xe6, 0x0f, 0x0c, 0x18, 0x53, 0x16, 0x2d, 0x79, 0x5d, 0x58, 0xc2, 0x06, 0x9e, 0xe3, 0x9c, 0xee, 0x5d, 0xd6, 0xac, 0x94, 0xef, 0x68, 0xcc, 0x42, 0x16, 0x76, 0x71, 0xb2, 0xc2, 0x72, 0x83, 0xac, 0xb0, 0xb7, 0x00, 0xb8, 0xba, 0x83, 0x55, 0x54, 0xc6, 0x42, 0x39, 0xf7, 0x52, 0x1b, 0x98, 0x20, 0x9b, 0x7f, 0x3b, 0x07, 0x05, 0xa1, 0xce, 0xcf, 0x3e, 0xa1, 0xdb, 0xec, 0x1b, 0xda, 0x36, 0x3b, 0x2d, 0x48, 0x15, 0xfd, 0x6f, 0xf6, 0x08, 0x35, 0xfe, 0x2d, 0x28, 0xc9, 0x2e, 0x40, 0x6d, 0xe5, 0x32, 0x8c, 0x4a, 0x43, 0x94, 0xeb, 0x2a, 0x93, 0x1a, 0xcf, 0x8d, - 0x59, 0x4b, 0x96, 0x9b, 0xdf, 0x19, 0x96, 0xb4, 0xfc, 0x4b, 0xac, 0x0b, 0xab, 0xae, 0x1b, 0xa8, + 0x59, 0x4b, 0x96, 0x9b, 0x3f, 0x1c, 0x96, 0xb4, 0xfc, 0x4b, 0xac, 0x0b, 0xab, 0xae, 0x1b, 0xa8, 0x5d, 0xe8, 0xb8, 0x6e, 0x60, 0x21, 0x94, 0x0d, 0xd4, 0x6a, 0x77, 0xab, 0xe9, 0x35, 0x10, 0x47, 0x99, 0x89, 0x1d, 0x84, 0xda, 0x0c, 0x55, 0x1d, 0xa8, 0x04, 0x59, 0xd3, 0xa2, 0xf3, 0x87, 0x6a, - 0xd1, 0xbf, 0x0a, 0xc5, 0xb9, 0x96, 0xab, 0xed, 0xb2, 0x66, 0x46, 0xa7, 0x5c, 0x8d, 0x91, 0xf8, + 0xd1, 0xbf, 0x06, 0xc5, 0xb9, 0x96, 0xab, 0xed, 0xb2, 0x66, 0x46, 0xa7, 0x5c, 0x8d, 0x91, 0xf8, 0xfe, 0x7a, 0x5e, 0xf4, 0xd1, 0xc9, 0x46, 0xcb, 0xed, 0xdd, 0x5b, 0x13, 0x96, 0x9a, 0x1a, 0x3c, 0xfc, 0x28, 0x6a, 0xf0, 0x9b, 0x50, 0x5c, 0x0f, 0xe9, 0x5a, 0xb7, 0xdd, 0xa6, 0x4d, 0xdc, 0x71, 0x0b, 0x7c, 0x3d, 0x77, 0x43, 0x6a, 0x47, 0x08, 0x55, 0x2b, 0x10, 0xa3, 0xaa, 0xd3, 0x6a, 0xf4, 0x90, 0x69, 0xf5, 0x3a, 0x0c, 0x55, 0x3b, 0x1d, 0x69, 0x1f, 0xc4, 0x1b, 0x4f, 0xa7, 0x83, 0xdb, 0xc9, 0x84, 0xd3, 0xe9, 0xe8, 0xda, 0x3e, 0x62, 0x13, 0x0a, 0xe4, 0x4e, 0x77, 0x8b, 0x06, 0x6d, 0x1a, 0xd1, 0x50, 0x88, 0xbb, 0x70, 0x06, 0x90, 0xc7, 0x8c, 0x3c, 0x86, 0x4d, 0x23, 0xa0, 0x6d, - 0x77, 0x66, 0xb7, 0xbb, 0x45, 0x6d, 0x21, 0x37, 0xd5, 0xbe, 0xcb, 0x60, 0x78, 0xae, 0x0e, 0x13, - 0x7a, 0xff, 0x3f, 0x86, 0xcd, 0xfa, 0x83, 0xa1, 0x42, 0xa1, 0x5c, 0x34, 0xbf, 0x91, 0x83, 0xb1, - 0x6a, 0xa7, 0xf3, 0x84, 0x1b, 0xe9, 0x9f, 0xd5, 0x56, 0xf5, 0xe9, 0x64, 0xf4, 0x8e, 0x61, 0x9f, - 0xff, 0x8d, 0x01, 0x93, 0x29, 0x0a, 0xb5, 0xf6, 0xc6, 0x80, 0x46, 0x6b, 0x6e, 0x40, 0xa3, 0x35, - 0xdf, 0xdf, 0x68, 0x55, 0xd7, 0xcc, 0xd0, 0xa3, 0xac, 0x99, 0x97, 0x21, 0x5f, 0xed, 0x74, 0x44, - 0xaf, 0x94, 0x92, 0x5e, 0xd9, 0xb8, 0xc1, 0x15, 0x74, 0xa7, 0xd3, 0xb1, 0x18, 0x86, 0xf9, 0x2a, - 0x14, 0x11, 0x8c, 0x12, 0xed, 0x82, 0x58, 0x0a, 0x5c, 0x9c, 0x69, 0x64, 0x7c, 0xda, 0x9b, 0xff, - 0xc7, 0x80, 0x61, 0xfc, 0xfd, 0x84, 0x4e, 0x97, 0x59, 0x6d, 0xba, 0x94, 0x95, 0xe9, 0x32, 0xc8, - 0x44, 0xf9, 0xb3, 0x3c, 0xf6, 0x96, 0x98, 0x22, 0xc2, 0xec, 0x31, 0x32, 0xcc, 0x9e, 0x47, 0x10, - 0xe0, 0xbb, 0x69, 0x03, 0x28, 0x8f, 0x83, 0xf1, 0x42, 0xba, 0xaa, 0x8f, 0xc5, 0xf6, 0xb9, 0x0d, - 0x64, 0xb1, 0x1d, 0xd2, 0x46, 0x37, 0xa0, 0xf5, 0x5d, 0xaf, 0xb3, 0x41, 0x03, 0xef, 0xde, 0x9e, - 0xd0, 0xb6, 0x50, 0xc6, 0x7a, 0xa2, 0xd4, 0x0e, 0x77, 0xbd, 0x8e, 0x7d, 0x1f, 0xcb, 0xad, 0x0c, - 0x1a, 0xf2, 0x3e, 0x8c, 0x5a, 0xf4, 0x41, 0xe0, 0x45, 0x54, 0xf4, 0xed, 0x44, 0xac, 0x5b, 0x23, - 0x94, 0xeb, 0x26, 0x01, 0xff, 0xa1, 0x8e, 0xbf, 0x28, 0xff, 0xf4, 0x4c, 0x93, 0xef, 0x0e, 0xe3, - 0x5a, 0x38, 0xe2, 0x32, 0xe9, 0x10, 0x1b, 0x56, 0x1f, 0xcc, 0xfc, 0x71, 0x06, 0x73, 0x03, 0x4a, - 0xcc, 0x1c, 0x4a, 0x19, 0xb3, 0xe7, 0x93, 0xb1, 0xbc, 0xaa, 0x16, 0x1f, 0x76, 0x8f, 0xa4, 0xf1, - 0x21, 0x76, 0x7a, 0x92, 0xf0, 0xfb, 0xa9, 0x67, 0x15, 0xc6, 0x19, 0xd3, 0x23, 0x16, 0x1d, 0x0d, - 0xde, 0x59, 0xc7, 0x9e, 0x18, 0x23, 0x8f, 0x36, 0x31, 0x46, 0x3f, 0xc9, 0xc4, 0x48, 0xdf, 0xe0, - 0x15, 0x8e, 0x73, 0x83, 0x77, 0xee, 0x7d, 0x98, 0xea, 0xe9, 0xe1, 0xe3, 0xdc, 0x82, 0x7d, 0x7a, - 0xd3, 0xf2, 0x37, 0xe2, 0x7e, 0x21, 0xb3, 0x68, 0xe2, 0x79, 0x01, 0x6d, 0x44, 0x28, 0x7a, 0x85, - 0xb4, 0x0c, 0x04, 0x2c, 0x65, 0x83, 0x22, 0x8c, 0xbc, 0x07, 0xa3, 0xfc, 0x16, 0x21, 0x9c, 0xc9, - 0xe1, 0xd8, 0x8f, 0x8b, 0x2f, 0x72, 0xa8, 0xb8, 0xca, 0xe5, 0x18, 0x6a, 0xaf, 0x0a, 0x22, 0xf3, - 0x16, 0x8c, 0x88, 0x5b, 0x88, 0xc3, 0xd7, 0x45, 0x05, 0x86, 0x37, 0x92, 0x9e, 0xc1, 0x93, 0x63, - 0xde, 0x08, 0x8b, 0xc3, 0xcd, 0xdf, 0x35, 0x60, 0x42, 0x6f, 0x25, 0xb9, 0x0a, 0x23, 0xe2, 0x9a, - 0xcc, 0xc0, 0x6b, 0x32, 0xd6, 0x9a, 0x11, 0x7e, 0x41, 0xa6, 0x5d, 0x8b, 0x09, 0x2c, 0x26, 0xfa, - 0x05, 0x07, 0x6c, 0x8b, 0x10, 0xfd, 0x62, 0x92, 0x5a, 0xb2, 0x8c, 0x98, 0xcc, 0xda, 0x0f, 0xbb, - 0x4d, 0x79, 0x96, 0x04, 0x8c, 0x6d, 0x80, 0x10, 0x4b, 0x94, 0x98, 0xfb, 0x06, 0x40, 0xbd, 0x7e, - 0xfb, 0x0e, 0xdd, 0x5b, 0x75, 0xbc, 0x00, 0x4d, 0x41, 0x5c, 0x8d, 0x77, 0xc4, 0x68, 0x95, 0x84, - 0x29, 0xc8, 0x57, 0xee, 0x2e, 0xdd, 0xd3, 0x4c, 0x41, 0x89, 0x8a, 0x4b, 0x3e, 0xf0, 0xee, 0x3b, - 0x11, 0x65, 0x84, 0x39, 0x24, 0xe4, 0x4b, 0x9e, 0x43, 0x53, 0x94, 0x0a, 0x32, 0xf9, 0x08, 0x26, - 0x92, 0x5f, 0x78, 0x37, 0x9f, 0x47, 0x9b, 0x4e, 0xce, 0x08, 0xbd, 0xb0, 0xf6, 0xdc, 0xc1, 0x7e, - 0xe5, 0x9c, 0xc2, 0xd5, 0x66, 0x58, 0x0a, 0xeb, 0x14, 0x33, 0xf3, 0x07, 0x06, 0xc0, 0xda, 0x52, - 0x5d, 0x36, 0xf0, 0x22, 0x0c, 0xc5, 0x27, 0x2c, 0x25, 0x6e, 0x6f, 0xa6, 0x8c, 0x3f, 0x2c, 0x27, - 0x2f, 0x40, 0x3e, 0x69, 0xc9, 0xd4, 0xc1, 0x7e, 0x65, 0x5c, 0x6f, 0x01, 0x2b, 0x25, 0xb7, 0x60, - 0x74, 0xa0, 0x3a, 0xe3, 0xec, 0xcc, 0xa8, 0xab, 0xa4, 0xc6, 0x51, 0xf8, 0x60, 0x73, 0xed, 0xe9, - 0x1d, 0x85, 0x6f, 0xe5, 0x60, 0x92, 0xf5, 0x6b, 0xb5, 0x1b, 0xed, 0xf8, 0x81, 0x17, 0xed, 0x3d, - 0xb1, 0x56, 0xf1, 0x3b, 0x9a, 0x42, 0x74, 0x4e, 0x8a, 0x2d, 0xb5, 0x6d, 0x03, 0x19, 0xc7, 0x3f, - 0x19, 0x85, 0xe9, 0x0c, 0x2a, 0xf2, 0x8a, 0x70, 0x50, 0x49, 0xce, 0x61, 0xd0, 0x01, 0xe5, 0xe7, - 0xfb, 0x95, 0x92, 0x44, 0x5f, 0x4b, 0x1c, 0x52, 0x66, 0x61, 0x4c, 0x98, 0x3e, 0xcb, 0x89, 0x46, - 0x8d, 0x9e, 0x0d, 0xf2, 0x9c, 0x09, 0x45, 0x93, 0x8a, 0x44, 0xaa, 0x50, 0x9a, 0xdb, 0xa1, 0x8d, - 0x5d, 0xaf, 0xbd, 0x7d, 0x87, 0xee, 0x71, 0x7d, 0xa9, 0x54, 0x7b, 0x96, 0x59, 0x5a, 0x0d, 0x01, - 0x67, 0x43, 0xaa, 0x1b, 0x71, 0x1a, 0x09, 0x79, 0x0f, 0xc6, 0xea, 0xde, 0x76, 0x5b, 0x72, 0x18, - 0x42, 0x0e, 0xe7, 0x0f, 0xf6, 0x2b, 0xa7, 0x43, 0x0e, 0xee, 0x65, 0xa0, 0x12, 0x90, 0xcb, 0x30, - 0x6c, 0xf9, 0x4d, 0xca, 0xb7, 0x61, 0xe1, 0xf2, 0x10, 0x30, 0x80, 0x7a, 0x7c, 0x8b, 0x18, 0xe4, - 0x36, 0x8c, 0xb2, 0x7f, 0xee, 0x3a, 0x9d, 0x99, 0x11, 0x94, 0xdb, 0x24, 0x56, 0xf0, 0x11, 0xda, - 0xf1, 0xda, 0xdb, 0xaa, 0x8e, 0xdf, 0xa4, 0x76, 0xcb, 0xe9, 0x68, 0xfb, 0x22, 0x47, 0x24, 0x1b, - 0x30, 0x96, 0x08, 0x82, 0x70, 0x66, 0x54, 0xbb, 0x2e, 0x49, 0x4a, 0x6a, 0xcf, 0x0b, 0x66, 0x67, - 0xa2, 0x66, 0x88, 0x73, 0xbb, 0xc3, 0xf0, 0xf5, 0xc6, 0x28, 0x8c, 0x34, 0x1b, 0xa4, 0xd0, 0xdf, - 0x06, 0x31, 0x8e, 0xb4, 0x41, 0x5c, 0x00, 0xd1, 0x49, 0xd5, 0xe6, 0xb6, 0xf0, 0x50, 0xba, 0xdc, - 0x7f, 0x82, 0x5d, 0x4d, 0x90, 0x71, 0x4d, 0xf2, 0x93, 0x29, 0xd1, 0xff, 0x4e, 0x73, 0x5b, 0x3b, - 0x99, 0x8a, 0x51, 0x59, 0x37, 0x24, 0xa2, 0x46, 0x5a, 0xe0, 0xb2, 0x1b, 0x92, 0x92, 0xa4, 0x1b, - 0x3e, 0x7e, 0x10, 0xf5, 0xeb, 0x06, 0x85, 0x11, 0x59, 0x06, 0xa8, 0x36, 0x22, 0xef, 0x3e, 0xc5, - 0x29, 0x31, 0xa6, 0x75, 0xc4, 0x5c, 0xf5, 0x0e, 0xdd, 0xab, 0xd3, 0x28, 0xbe, 0xfc, 0x3f, 0xe5, - 0x20, 0x6a, 0x6a, 0x9a, 0x58, 0x0a, 0x07, 0xd2, 0x81, 0x53, 0x55, 0xd7, 0xf5, 0xb8, 0xd7, 0xda, - 0x5a, 0xc0, 0xe6, 0xaf, 0x8b, 0xac, 0x4b, 0xd9, 0xac, 0x2f, 0x0b, 0xd6, 0xcf, 0x3b, 0x31, 0x95, - 0x1d, 0x71, 0xb2, 0xf4, 0x67, 0xb2, 0x19, 0x9b, 0x2b, 0x30, 0xa1, 0x77, 0xa9, 0xee, 0xaf, 0x55, - 0x82, 0x82, 0x55, 0xaf, 0xda, 0xf5, 0xdb, 0xd5, 0xeb, 0x65, 0x83, 0x94, 0xa1, 0x24, 0x7e, 0xcd, - 0xda, 0xb3, 0x6f, 0xbc, 0x59, 0xce, 0x69, 0x90, 0x37, 0xae, 0xcf, 0x96, 0xf3, 0xe6, 0x9f, 0x19, - 0x50, 0x90, 0xf5, 0x23, 0x6f, 0x42, 0xbe, 0x5e, 0xbf, 0x9d, 0xba, 0xa5, 0x4b, 0xb6, 0x5e, 0xbe, - 0xc9, 0x84, 0xe1, 0x8e, 0xba, 0xc9, 0xd4, 0xeb, 0xb7, 0x19, 0xdd, 0xda, 0x52, 0x5d, 0x28, 0x2d, - 0x19, 0xd3, 0x75, 0x2a, 0xfb, 0xea, 0x82, 0xd1, 0x7d, 0xb0, 0xb9, 0x26, 0xac, 0xa1, 0x8c, 0xf1, - 0x45, 0xba, 0x8f, 0x1f, 0xa8, 0x5b, 0x1f, 0x23, 0x30, 0x2d, 0x18, 0x53, 0x96, 0x16, 0x57, 0x22, - 0x5a, 0x7e, 0xec, 0xc9, 0x24, 0x94, 0x08, 0x06, 0xb1, 0x44, 0x09, 0xd3, 0x79, 0x96, 0xfc, 0x86, - 0xd3, 0x14, 0xda, 0x08, 0xea, 0x3c, 0x4d, 0x06, 0xb0, 0x38, 0xdc, 0xfc, 0x0b, 0x03, 0xca, 0xab, - 0x81, 0x7f, 0xdf, 0x63, 0x12, 0x78, 0xcd, 0xdf, 0xa5, 0xed, 0x8d, 0xeb, 0xe4, 0x55, 0x29, 0x04, - 0xb8, 0x0a, 0x77, 0x86, 0x51, 0xa1, 0x10, 0xf8, 0xf9, 0x7e, 0x05, 0xea, 0x7b, 0x61, 0x44, 0x5b, - 0xac, 0x5c, 0x0a, 0x02, 0xc5, 0x21, 0x2c, 0x37, 0xb8, 0x93, 0xc9, 0x11, 0x0e, 0x61, 0x15, 0x18, - 0xc6, 0xea, 0x28, 0xf7, 0xfc, 0xc3, 0x11, 0x03, 0x58, 0x1c, 0xae, 0x08, 0xec, 0xef, 0xe4, 0x7a, - 0xda, 0x30, 0xfb, 0x54, 0x39, 0x6a, 0xe8, 0x8d, 0x1b, 0x68, 0x13, 0xfb, 0x22, 0x9c, 0x4c, 0x77, - 0x09, 0x9e, 0x8b, 0x54, 0x61, 0x52, 0x87, 0xcb, 0x23, 0x92, 0x33, 0x99, 0xdf, 0xda, 0x98, 0xb5, - 0xd2, 0xf8, 0xe6, 0x4f, 0x0d, 0x28, 0xe2, 0xbf, 0x56, 0xb7, 0x49, 0x99, 0x66, 0x53, 0xdd, 0xac, - 0x8b, 0x4b, 0x1e, 0xf5, 0x22, 0xc6, 0x79, 0x10, 0xda, 0xe2, 0x46, 0x48, 0x93, 0x23, 0x31, 0xb2, - 0x20, 0xe5, 0x57, 0x5a, 0xa1, 0x98, 0xa1, 0x31, 0x29, 0xbf, 0xfb, 0x0a, 0x53, 0xa4, 0x02, 0x99, - 0x8d, 0x1f, 0xfb, 0xe5, 0x37, 0xe5, 0xd1, 0x30, 0x8e, 0x1f, 0xd2, 0xf9, 0x9a, 0xe7, 0x97, 0x44, - 0x23, 0xaf, 0xc2, 0x08, 0xfb, 0xb4, 0xb5, 0x2c, 0x6e, 0xac, 0xd0, 0xaa, 0xc0, 0x3a, 0x06, 0xda, - 0x0d, 0x1b, 0x47, 0x32, 0x7f, 0x3b, 0x97, 0xee, 0x40, 0xa1, 0x05, 0x1c, 0x73, 0x6d, 0xbc, 0x0d, - 0xc3, 0xd5, 0x66, 0xd3, 0x7f, 0x20, 0xa4, 0x84, 0x3c, 0xa6, 0x89, 0xfb, 0x8f, 0xef, 0xb0, 0x0e, - 0x43, 0xd1, 0x2e, 0x48, 0x19, 0x80, 0xcc, 0x41, 0xb1, 0xba, 0x59, 0x5f, 0x5c, 0x9c, 0x5f, 0x5b, - 0x5b, 0x12, 0x7e, 0xb8, 0x2f, 0xc9, 0xfe, 0xf1, 0x3c, 0xd7, 0x8e, 0xa2, 0x66, 0x1f, 0x37, 0xbd, - 0x84, 0x8e, 0xbc, 0x0b, 0xf0, 0x81, 0xef, 0xb5, 0xef, 0xd2, 0x68, 0xc7, 0x77, 0x45, 0xe3, 0x99, - 0x4a, 0x31, 0xf6, 0xb1, 0xef, 0xb5, 0xed, 0x16, 0x82, 0x59, 0xdd, 0x13, 0x24, 0x4b, 0xf9, 0xdf, - 0xfc, 0xbd, 0x1c, 0x4c, 0x70, 0xbb, 0x93, 0x0f, 0xff, 0x13, 0xbb, 0xb4, 0xde, 0xd6, 0x96, 0xd6, - 0x59, 0x29, 0xe6, 0x95, 0xa6, 0x0d, 0xb4, 0xb0, 0x76, 0x80, 0xf4, 0xd2, 0x10, 0x4b, 0x9e, 0x8e, - 0x0c, 0xb2, 0xa6, 0xae, 0x27, 0xb7, 0xab, 0x21, 0x12, 0xd9, 0x28, 0xd8, 0x42, 0x4b, 0xe3, 0x61, - 0xfe, 0x6e, 0x0e, 0xc6, 0x15, 0xed, 0xf0, 0x89, 0xed, 0xf8, 0xcf, 0x69, 0x1d, 0x2f, 0x6f, 0x14, - 0x94, 0x96, 0x0d, 0xd4, 0xef, 0x5d, 0x98, 0xea, 0x21, 0x49, 0x2b, 0xd9, 0xc6, 0x20, 0x4a, 0xf6, - 0x2b, 0xbd, 0xd7, 0xbf, 0xdc, 0x03, 0x37, 0xbe, 0xfe, 0x55, 0xef, 0x9b, 0xbf, 0x95, 0x83, 0x93, - 0xe2, 0x57, 0xb5, 0xeb, 0x7a, 0xd1, 0x9c, 0xdf, 0xbe, 0xe7, 0x6d, 0x3f, 0xb1, 0x63, 0x51, 0xd5, - 0xc6, 0xa2, 0xa2, 0x8f, 0x85, 0xd2, 0xc0, 0xfe, 0x43, 0x62, 0xfe, 0xdb, 0x02, 0xcc, 0xf4, 0x23, - 0x60, 0x46, 0xbc, 0x62, 0x23, 0xa1, 0x11, 0x9f, 0xb2, 0x3f, 0xb9, 0x75, 0x94, 0xb8, 0x3b, 0xe4, - 0x06, 0x70, 0x77, 0x58, 0x82, 0x32, 0x7e, 0xaa, 0x4e, 0x43, 0xd6, 0x09, 0x61, 0xe2, 0xfe, 0x77, - 0xe1, 0x60, 0xbf, 0x72, 0xde, 0x61, 0x65, 0x76, 0x28, 0x0a, 0xed, 0x6e, 0xe0, 0x29, 0x3c, 0x7a, - 0x28, 0xc9, 0x0f, 0x0c, 0x98, 0x40, 0xe0, 0xc2, 0x7d, 0xda, 0x8e, 0x90, 0xd9, 0x90, 0xb8, 0x72, - 0x89, 0xa3, 0x2c, 0xea, 0x51, 0xe0, 0xb5, 0xb7, 0xf1, 0x58, 0x28, 0xac, 0x6d, 0xb1, 0x5e, 0xf8, - 0xab, 0xfd, 0xca, 0x3b, 0x9f, 0x24, 0x72, 0x43, 0xb0, 0x0a, 0x99, 0x59, 0xce, 0x2b, 0x4a, 0xf1, - 0xb3, 0xa9, 0x6a, 0xa6, 0x6a, 0x44, 0xbe, 0x04, 0x67, 0x16, 0xda, 0xce, 0x56, 0x93, 0xce, 0xf9, - 0xed, 0xc8, 0x6b, 0x77, 0xfd, 0x6e, 0x58, 0x73, 0x1a, 0xbb, 0xdd, 0x4e, 0x28, 0x8e, 0x2e, 0xb1, - 0xe5, 0x8d, 0xb8, 0xd0, 0xde, 0xe2, 0xa5, 0x0a, 0xcb, 0x7e, 0x0c, 0xc8, 0x6d, 0x98, 0xe2, 0x45, - 0xd5, 0x6e, 0xe4, 0xd7, 0x1b, 0x4e, 0xd3, 0x6b, 0x6f, 0xe3, 0x89, 0x66, 0xa1, 0x76, 0x8e, 0x59, - 0x8a, 0x4e, 0x37, 0xf2, 0xed, 0x90, 0xc3, 0x15, 0x7e, 0xbd, 0x44, 0x64, 0x11, 0x26, 0x2d, 0xea, - 0xb8, 0x77, 0x9d, 0x87, 0x73, 0x4e, 0xc7, 0x69, 0x78, 0xd1, 0x1e, 0xda, 0x59, 0xf9, 0x5a, 0xe5, - 0x60, 0xbf, 0xf2, 0x4c, 0x40, 0x1d, 0xd7, 0x6e, 0x39, 0x0f, 0xed, 0x86, 0x28, 0x54, 0x98, 0xa5, - 0xe9, 0x62, 0x56, 0x5e, 0x3b, 0x66, 0x55, 0x4c, 0xb3, 0xf2, 0xda, 0xfd, 0x59, 0x25, 0x74, 0x92, - 0xd5, 0x9a, 0x13, 0x6c, 0xd3, 0x88, 0x1f, 0xf9, 0xc1, 0x05, 0xe3, 0x92, 0xa1, 0xb0, 0x8a, 0xb0, - 0xcc, 0xc6, 0xe3, 0xbf, 0x34, 0x2b, 0x85, 0x8e, 0xcd, 0xbc, 0xcd, 0xc0, 0x8b, 0xa8, 0xda, 0xc2, - 0x31, 0xac, 0x16, 0xf6, 0x3f, 0x1e, 0x7a, 0xf6, 0x6b, 0x62, 0x0f, 0x65, 0xc2, 0x4d, 0x69, 0x64, - 0xa9, 0x87, 0x5b, 0x76, 0x2b, 0x7b, 0x28, 0x63, 0x6e, 0x6a, 0x3b, 0xc7, 0xb1, 0x9d, 0x0a, 0xb7, - 0x3e, 0x0d, 0xed, 0xa1, 0x24, 0xcb, 0xac, 0xd3, 0x22, 0xda, 0x66, 0x33, 0x5a, 0x1c, 0x79, 0x4e, - 0x60, 0xd5, 0x5e, 0x14, 0x16, 0x72, 0x39, 0x90, 0xc5, 0x76, 0xc6, 0x01, 0x68, 0x9a, 0xf8, 0x83, - 0xa1, 0xc2, 0x70, 0x79, 0xc4, 0x2a, 0xf3, 0x29, 0x1f, 0xb1, 0x89, 0x83, 0xb2, 0xd8, 0xfc, 0xc3, - 0x1c, 0x9c, 0x95, 0xe2, 0x98, 0x46, 0x0f, 0xfc, 0x60, 0xd7, 0x6b, 0x6f, 0x3f, 0xe1, 0x52, 0xf5, - 0xa6, 0x26, 0x55, 0x5f, 0x4c, 0xed, 0x70, 0xa9, 0x56, 0x1e, 0x22, 0x5a, 0xff, 0xe5, 0x08, 0x3c, - 0x7b, 0x28, 0x15, 0xf9, 0x90, 0xed, 0x82, 0x1e, 0x6d, 0x47, 0x8b, 0x6e, 0x93, 0x32, 0xa3, 0xca, - 0xef, 0x46, 0xe2, 0x68, 0xfa, 0x85, 0x83, 0xfd, 0xca, 0x34, 0x0f, 0x3e, 0xb0, 0x3d, 0xb7, 0x49, - 0xed, 0x88, 0x17, 0x6b, 0xc3, 0xd4, 0x4b, 0xcd, 0x58, 0xc6, 0xa1, 0x50, 0x8b, 0xed, 0x88, 0x06, - 0xf7, 0x1d, 0xee, 0x83, 0x2d, 0x58, 0xee, 0x52, 0xda, 0xb1, 0x1d, 0x56, 0x6a, 0x7b, 0xa2, 0x58, - 0x67, 0xd9, 0x43, 0x4d, 0x6e, 0x2a, 0x2c, 0xe7, 0x98, 0xaa, 0x7f, 0xd7, 0x79, 0x28, 0xf4, 0x57, - 0x3c, 0x2d, 0x55, 0x58, 0x72, 0x8f, 0xb1, 0x96, 0xf3, 0xd0, 0xea, 0x25, 0x21, 0x1f, 0xc1, 0x29, - 0x21, 0xb8, 0x99, 0x10, 0x0b, 0xfc, 0xa6, 0x6c, 0xf1, 0x10, 0xf2, 0x7a, 0xf9, 0x60, 0xbf, 0x72, - 0x46, 0x88, 0x7d, 0xbb, 0xc1, 0x31, 0x32, 0x5b, 0x9d, 0xcd, 0x85, 0xac, 0xb1, 0x8d, 0x2c, 0xd5, - 0x1d, 0x77, 0x69, 0x18, 0x3a, 0xdb, 0xfc, 0xe6, 0x4f, 0x38, 0x5b, 0xa9, 0x9d, 0x69, 0xb7, 0x78, - 0xb9, 0xd5, 0x97, 0x92, 0xdc, 0x86, 0x89, 0x4d, 0xba, 0xa5, 0x8e, 0xcf, 0x48, 0xbc, 0xc4, 0xcb, - 0x0f, 0xe8, 0x56, 0xff, 0xc1, 0x49, 0xd1, 0x11, 0x0f, 0xa6, 0x56, 0x03, 0xff, 0xe1, 0x1e, 0x33, - 0xdc, 0x68, 0x9b, 0x06, 0xe8, 0x56, 0x35, 0x8a, 0x87, 0x4f, 0x33, 0x89, 0x66, 0xa9, 0x97, 0xd7, - 0x9e, 0x3f, 0xd8, 0xaf, 0x3c, 0xdb, 0x61, 0x60, 0xbb, 0x29, 0xe0, 0x76, 0x2a, 0x12, 0xa9, 0x97, - 0x2b, 0xf9, 0x35, 0x98, 0xb4, 0xfc, 0x6e, 0xe4, 0xb5, 0xb7, 0xeb, 0x51, 0xe0, 0x44, 0x74, 0x9b, - 0x0b, 0xf2, 0xc4, 0x7f, 0x2b, 0x55, 0xca, 0x8f, 0x99, 0x03, 0x0e, 0xb4, 0x43, 0x01, 0xd5, 0x24, - 0xa9, 0x4e, 0x40, 0xd6, 0xa0, 0x84, 0x9f, 0x5d, 0xa5, 0x94, 0xed, 0x87, 0xe2, 0x10, 0x6d, 0x5a, - 0x6d, 0x87, 0x28, 0xe2, 0xae, 0x25, 0xbc, 0x09, 0x1d, 0x0e, 0x52, 0x6f, 0x0f, 0x55, 0x54, 0xf3, - 0x7b, 0x39, 0x98, 0x11, 0x83, 0x6b, 0xd1, 0x86, 0x1f, 0xb8, 0x4f, 0xbe, 0x30, 0x59, 0xd0, 0x84, - 0xc9, 0x0b, 0xb1, 0x1f, 0x53, 0x56, 0x23, 0x0f, 0x91, 0x25, 0xff, 0xc2, 0x80, 0xf3, 0x87, 0x11, - 0xb1, 0xde, 0x89, 0xfd, 0xf4, 0x8a, 0x3d, 0xfe, 0x78, 0x1d, 0x98, 0xc6, 0x8e, 0xc6, 0xc3, 0xe5, - 0xf0, 0xb6, 0x1f, 0x46, 0x78, 0xc2, 0x97, 0xd3, 0x9c, 0x0d, 0x6a, 0xbe, 0xdf, 0xc4, 0xdd, 0xa3, - 0xf6, 0x0a, 0xdb, 0x24, 0xfe, 0x6a, 0xbf, 0x02, 0x0c, 0xb4, 0x82, 0x17, 0x96, 0x4c, 0x93, 0xe0, - 0x83, 0x88, 0x67, 0xd7, 0xa1, 0x8d, 0x1e, 0x22, 0xbb, 0x74, 0x2f, 0xb4, 0xb2, 0x58, 0xe3, 0x29, - 0x4e, 0xb5, 0x1b, 0xed, 0xac, 0x06, 0xf4, 0x1e, 0x0d, 0x68, 0xbb, 0x41, 0x9f, 0xb2, 0x53, 0x1c, - 0xbd, 0x71, 0x03, 0x19, 0x3d, 0xff, 0x6f, 0x04, 0x4e, 0x66, 0x91, 0xb1, 0x7e, 0x51, 0xf4, 0xec, - 0x74, 0x30, 0xec, 0xdf, 0x35, 0xa0, 0x54, 0xa7, 0x0d, 0xbf, 0xed, 0xde, 0x74, 0x1a, 0x91, 0x2f, - 0xdd, 0x36, 0x6c, 0x2e, 0x2f, 0x19, 0xdc, 0xbe, 0x87, 0x05, 0xda, 0xe9, 0xc1, 0xe7, 0x07, 0x53, - 0x6f, 0x1b, 0x3e, 0x3a, 0x8b, 0x46, 0x6c, 0x4e, 0x26, 0x9f, 0xc0, 0x9b, 0x0f, 0xed, 0xa3, 0xa4, - 0x06, 0xe3, 0x73, 0x7e, 0xbb, 0x4d, 0xd9, 0x0f, 0xc5, 0x4d, 0xf3, 0xfc, 0xc1, 0x7e, 0x65, 0xa6, - 0x21, 0x0b, 0xd2, 0x9e, 0x9a, 0x3a, 0x09, 0xb9, 0x01, 0xf9, 0xf5, 0xd9, 0x9b, 0x62, 0x0c, 0xa4, - 0x43, 0xdb, 0xfa, 0xec, 0x4d, 0xb4, 0xa0, 0x99, 0x56, 0x32, 0xde, 0x9d, 0xbd, 0xa7, 0x9e, 0x93, - 0xae, 0xcf, 0xde, 0x24, 0x2b, 0x30, 0x65, 0xd1, 0xaf, 0x76, 0xbd, 0x80, 0x8a, 0x05, 0x70, 0xf7, - 0x66, 0x15, 0xc7, 0xa2, 0xc0, 0xa5, 0x63, 0xc0, 0x0b, 0xa5, 0xc5, 0x60, 0xb7, 0xee, 0xa9, 0x01, - 0x60, 0xbd, 0xb4, 0xe4, 0x37, 0xe1, 0xd4, 0xbc, 0x17, 0x8a, 0x3a, 0xf3, 0x03, 0x4a, 0x17, 0xef, - 0x2a, 0x47, 0xfa, 0x2c, 0x87, 0x5f, 0xc9, 0x5c, 0x0e, 0xcf, 0xbb, 0x31, 0x13, 0x9b, 0x9f, 0x7e, - 0xba, 0x69, 0xff, 0xd6, 0xec, 0xef, 0x90, 0x8f, 0x61, 0x02, 0x4f, 0x84, 0xf0, 0xcc, 0x16, 0xdd, - 0x88, 0x47, 0xfb, 0x7c, 0xf9, 0xb5, 0xcc, 0x2f, 0x9f, 0xc3, 0x03, 0x26, 0x1b, 0x4f, 0x7e, 0xd1, - 0xe5, 0x58, 0xb3, 0x3c, 0x34, 0xce, 0xe4, 0x03, 0x98, 0x14, 0x5b, 0xd9, 0xca, 0xbd, 0xb5, 0x1d, - 0x3a, 0xef, 0xec, 0x09, 0x47, 0x05, 0xd4, 0x2a, 0xc5, 0xfe, 0x67, 0xfb, 0xf7, 0xec, 0x68, 0x87, - 0xda, 0xae, 0xa3, 0x09, 0xfd, 0x14, 0x21, 0xf9, 0x1a, 0x8c, 0x2d, 0xf9, 0x78, 0x39, 0x85, 0xa2, - 0xa6, 0x88, 0x7c, 0xbe, 0x88, 0x01, 0xa0, 0x1c, 0x9c, 0xda, 0x9a, 0x7e, 0xbe, 0x5f, 0x79, 0xfb, - 0xb8, 0xb3, 0x50, 0xf9, 0x80, 0xa5, 0x7e, 0x8d, 0xcc, 0x41, 0x61, 0x93, 0x6e, 0xb1, 0xd6, 0xa6, - 0x83, 0x97, 0x24, 0x98, 0xcb, 0x8b, 0x07, 0xe2, 0x97, 0x7a, 0xf3, 0x23, 0x31, 0xcc, 0x7f, 0x63, - 0xe0, 0x0c, 0x24, 0x57, 0xd0, 0x59, 0x2c, 0xf6, 0xc2, 0x46, 0x7b, 0xd5, 0xe9, 0x74, 0x74, 0x3f, - 0x6a, 0x8e, 0xc2, 0x8c, 0xdb, 0x9b, 0x4e, 0x83, 0x46, 0xf2, 0x4c, 0x13, 0x91, 0xef, 0x21, 0x44, - 0x35, 0x6e, 0x39, 0x0e, 0xf9, 0x02, 0x9c, 0x9c, 0xa7, 0xf7, 0xbd, 0x06, 0xad, 0x46, 0x11, 0x0d, - 0x79, 0x6b, 0xe7, 0xaa, 0xfc, 0xf2, 0xaf, 0x58, 0x7b, 0xf1, 0x60, 0xbf, 0x72, 0xc1, 0xc5, 0x72, - 0xdb, 0x49, 0x10, 0xec, 0x86, 0xa3, 0xf2, 0xca, 0xe4, 0x60, 0xfe, 0x83, 0x5c, 0xd2, 0x03, 0xe4, - 0x65, 0x18, 0xb2, 0x56, 0xe3, 0xfa, 0xf3, 0x7b, 0xbd, 0x54, 0xf5, 0x11, 0x81, 0x7c, 0x19, 0x4e, - 0x29, 0x7c, 0x70, 0x72, 0x50, 0x97, 0x55, 0x88, 0x37, 0xe6, 0x25, 0xbc, 0xc8, 0x51, 0x6a, 0xe2, - 0x70, 0x8c, 0x54, 0x8d, 0xb2, 0x79, 0xb0, 0xc6, 0x2a, 0x05, 0xf3, 0xb4, 0xed, 0x71, 0xde, 0x4a, - 0x63, 0x55, 0xde, 0x2e, 0x22, 0xa4, 0x1b, 0x9b, 0xc5, 0x81, 0xcc, 0x42, 0x61, 0xde, 0x0b, 0x99, - 0x9d, 0xe1, 0x0a, 0xaf, 0x2f, 0x1e, 0x0f, 0x26, 0x60, 0x5a, 0x3c, 0x98, 0x80, 0x99, 0x7f, 0x63, - 0x28, 0x71, 0xf7, 0x4f, 0xe8, 0x5e, 0xf3, 0xa6, 0xb6, 0xd7, 0x9c, 0x14, 0xa4, 0x71, 0xab, 0x58, - 0x59, 0xa6, 0x7e, 0x30, 0x09, 0xe3, 0x1a, 0x12, 0x3a, 0xd1, 0xae, 0x87, 0x34, 0xe0, 0x67, 0x94, - 0x4f, 0x97, 0x13, 0x6d, 0xdc, 0xae, 0x81, 0x7c, 0x23, 0x7f, 0x62, 0xc0, 0x64, 0x8a, 0x82, 0xf5, - 0x06, 0x03, 0xa9, 0xbd, 0xd1, 0x0d, 0x69, 0x60, 0x21, 0x94, 0xbb, 0xdc, 0x2d, 0xe9, 0x2e, 0x77, - 0x4d, 0x8b, 0xc1, 0xc8, 0xe7, 0x61, 0x78, 0x1d, 0x2d, 0x0a, 0xdd, 0x6b, 0x23, 0xe6, 0x8f, 0x85, - 0x7c, 0x3d, 0x76, 0xd9, 0xbf, 0xaa, 0x38, 0xc1, 0x32, 0x52, 0x87, 0xd1, 0xb9, 0x80, 0x62, 0x84, - 0xfd, 0xd0, 0xe0, 0xd7, 0x6b, 0x0d, 0x4e, 0x92, 0xbe, 0x5e, 0x13, 0x9c, 0xcc, 0x3f, 0xc8, 0x01, - 0x49, 0xda, 0x48, 0x1b, 0x01, 0x8d, 0xc2, 0x27, 0x76, 0xd0, 0xdf, 0xd7, 0x06, 0xfd, 0xd9, 0x9e, - 0x41, 0xe7, 0xcd, 0x1b, 0x68, 0xec, 0xff, 0xc2, 0x80, 0xd3, 0xd9, 0x84, 0xe4, 0x05, 0x18, 0x59, - 0x59, 0x5b, 0x95, 0x8e, 0x3f, 0xa2, 0x29, 0x7e, 0x07, 0x75, 0x5a, 0x4b, 0x14, 0x91, 0x57, 0x61, - 0xe4, 0x43, 0x6b, 0x8e, 0x6d, 0x76, 0x4a, 0x1c, 0xcb, 0x57, 0x03, 0xbb, 0xa1, 0x9b, 0x60, 0x02, - 0x49, 0x1d, 0xdb, 0xfc, 0x63, 0x1b, 0xdb, 0x6f, 0xe5, 0x60, 0xb2, 0xda, 0x68, 0xd0, 0x30, 0x64, - 0xaa, 0x0c, 0x0d, 0xa3, 0x27, 0x76, 0x60, 0xb3, 0x5d, 0x7a, 0xb4, 0xb6, 0x0d, 0x34, 0xaa, 0x7f, - 0x69, 0xc0, 0x29, 0x49, 0x75, 0xdf, 0xa3, 0x0f, 0xd6, 0x76, 0x02, 0x1a, 0xee, 0xf8, 0x4d, 0x77, - 0xd0, 0x28, 0x27, 0xdc, 0xd3, 0xbd, 0x66, 0x44, 0x03, 0xf5, 0xc0, 0xfa, 0x1e, 0x42, 0xb4, 0x3d, - 0x1d, 0x21, 0xe4, 0x1a, 0x8c, 0x56, 0x3b, 0x9d, 0xc0, 0xbf, 0xcf, 0x97, 0xfd, 0xb8, 0xb8, 0x6d, - 0xe4, 0x20, 0xed, 0x76, 0x92, 0x83, 0x58, 0x35, 0xe6, 0x69, 0x9b, 0xfb, 0x2b, 0x8f, 0xf3, 0x6a, - 0xb8, 0xb4, 0xad, 0xea, 0x56, 0x58, 0x6e, 0x7e, 0x73, 0x08, 0x4a, 0x6a, 0x43, 0x88, 0x09, 0x23, - 0xdc, 0xf9, 0x44, 0x75, 0x02, 0x70, 0x10, 0x62, 0x89, 0x92, 0xc4, 0xa7, 0x27, 0x77, 0xa4, 0x4f, - 0xcf, 0x26, 0x8c, 0xaf, 0x06, 0x7e, 0xc7, 0x0f, 0xa9, 0xcb, 0x93, 0xa4, 0xe4, 0x35, 0x33, 0x5d, - 0xf6, 0x39, 0x2b, 0xe2, 0x8a, 0x7c, 0x47, 0x60, 0xdb, 0xe9, 0x14, 0x2a, 0x3a, 0x1f, 0x7e, 0xe0, - 0xef, 0x84, 0x22, 0x18, 0x20, 0x3e, 0xf0, 0x67, 0x10, 0xfd, 0xc0, 0x9f, 0x41, 0xd4, 0x65, 0x31, - 0xfc, 0xb8, 0x96, 0x05, 0xf9, 0x03, 0x03, 0xc6, 0xaa, 0xed, 0xb6, 0xf0, 0xe9, 0x91, 0x91, 0xc6, - 0xa7, 0x92, 0x43, 0x7f, 0xee, 0xf4, 0xc9, 0xcf, 0xfc, 0xbf, 0x22, 0xce, 0xfc, 0xdf, 0xfe, 0x44, - 0x67, 0xfe, 0x6b, 0x81, 0xe3, 0x45, 0x21, 0x5e, 0xd5, 0x26, 0x1f, 0x54, 0x1d, 0x7b, 0x95, 0x7a, - 0x90, 0xb7, 0xa1, 0x1c, 0xcf, 0xc7, 0xc5, 0xb6, 0x4b, 0x1f, 0x52, 0xee, 0x02, 0x35, 0xce, 0x33, - 0x39, 0x69, 0x97, 0x19, 0x69, 0x44, 0xf3, 0x5b, 0x06, 0x9c, 0x56, 0x27, 0x44, 0xbd, 0xbb, 0xd5, - 0xf2, 0xd0, 0x70, 0x21, 0x57, 0xa1, 0x28, 0xc6, 0x2b, 0x56, 0xfb, 0x7a, 0x33, 0xeb, 0x24, 0x28, - 0x64, 0x81, 0x0d, 0x11, 0xe3, 0x21, 0xac, 0xfc, 0xe9, 0xd4, 0x72, 0x63, 0x45, 0xb5, 0x19, 0xd1, - 0xd9, 0xe5, 0x00, 0x7f, 0xeb, 0x63, 0xc7, 0x20, 0xe6, 0x7b, 0x30, 0xa5, 0xd7, 0xb2, 0x4e, 0x31, - 0xc0, 0x4c, 0x36, 0xcd, 0xc8, 0x6e, 0x9a, 0x2c, 0x37, 0x37, 0x81, 0xf4, 0xd0, 0x87, 0x78, 0x71, - 0x45, 0x23, 0x79, 0xb1, 0x2a, 0x8f, 0xbf, 0x7a, 0x10, 0xe3, 0x1c, 0x53, 0x63, 0x6a, 0x77, 0x23, - 0xa9, 0xf9, 0x8b, 0x22, 0x4c, 0x67, 0x88, 0x8e, 0x23, 0xb6, 0xf6, 0x8a, 0xbe, 0x78, 0x8a, 0xf1, - 0x7d, 0xbf, 0x5c, 0x32, 0xef, 0xc9, 0x7c, 0x42, 0x87, 0x2c, 0x95, 0xc3, 0x92, 0x0c, 0x7d, 0x1a, - 0xdb, 0xbb, 0xea, 0x92, 0x33, 0xfc, 0xd8, 0x5c, 0x72, 0x6a, 0x30, 0x2e, 0x5a, 0x25, 0x96, 0xf2, - 0x48, 0x62, 0xd0, 0x07, 0xbc, 0xc0, 0xee, 0x59, 0xd2, 0x3a, 0x09, 0xe7, 0x11, 0xfa, 0xcd, 0xfb, - 0x54, 0xf0, 0x18, 0x55, 0x79, 0x60, 0x41, 0x26, 0x0f, 0x85, 0x84, 0xfc, 0xa9, 0x01, 0x44, 0x40, - 0xd4, 0xf5, 0x5c, 0x38, 0x6c, 0x3d, 0xbb, 0x8f, 0x67, 0x3d, 0x3f, 0x2b, 0xeb, 0x98, 0xbd, 0xae, - 0x33, 0xaa, 0x45, 0xfe, 0xa9, 0x01, 0x53, 0xdc, 0x2f, 0x44, 0xad, 0x6c, 0xf1, 0xb0, 0xca, 0x36, - 0x1e, 0x4f, 0x65, 0xcf, 0x87, 0xf8, 0xd9, 0x3e, 0x75, 0xed, 0xad, 0x14, 0xf9, 0x12, 0x40, 0xbc, - 0xa2, 0xa4, 0xff, 0xe1, 0xf9, 0x0c, 0x29, 0x10, 0x23, 0x25, 0x21, 0x94, 0x51, 0x4c, 0xa7, 0x7a, - 0xec, 0x24, 0xdc, 0xc8, 0x6f, 0xc2, 0x49, 0xb6, 0x5e, 0x62, 0x88, 0xf0, 0x62, 0x9b, 0x19, 0xc3, - 0xaf, 0xbc, 0xde, 0x7f, 0x6b, 0xbf, 0x9a, 0x45, 0xc6, 0xa3, 0x40, 0x92, 0x20, 0xf5, 0xa8, 0xa5, - 0x1a, 0x88, 0x59, 0x14, 0xe8, 0xae, 0x8a, 0xb5, 0x0f, 0x67, 0x4a, 0xf8, 0xcd, 0x4c, 0xf9, 0x76, - 0x56, 0xae, 0x05, 0x2e, 0xdf, 0x42, 0x3d, 0x8c, 0x03, 0x41, 0xe4, 0x43, 0x20, 0xf5, 0xee, 0xf6, - 0x36, 0x0d, 0x23, 0xea, 0x72, 0x18, 0x0d, 0xc2, 0x99, 0x71, 0x94, 0x0f, 0x78, 0xc0, 0x14, 0xca, - 0x52, 0x3b, 0x90, 0xc5, 0xea, 0x24, 0xe9, 0x25, 0x3e, 0xb7, 0x05, 0x67, 0xfb, 0x36, 0x33, 0x23, - 0x44, 0xe3, 0x9a, 0x1e, 0xa2, 0x71, 0xb6, 0x9f, 0x38, 0x0c, 0xd5, 0x30, 0x8d, 0x3f, 0x36, 0x52, - 0xf2, 0x4f, 0x28, 0x2b, 0x3c, 0xf5, 0x5a, 0xbf, 0x0d, 0x22, 0x87, 0xe1, 0xeb, 0x5c, 0x42, 0xe6, - 0x12, 0x25, 0x89, 0x49, 0x48, 0x55, 0xc2, 0xa2, 0xac, 0x7c, 0x44, 0x51, 0x68, 0xfe, 0x2b, 0x03, - 0x08, 0xaf, 0xe1, 0x9c, 0xd3, 0x71, 0xb6, 0xbc, 0xa6, 0x17, 0x79, 0x34, 0x24, 0x77, 0xa0, 0x2c, - 0x58, 0x30, 0xb3, 0x5d, 0xf5, 0xbe, 0x12, 0x17, 0xba, 0x71, 0x99, 0x9d, 0x56, 0x6b, 0x7a, 0x08, - 0xfb, 0x0c, 0x5e, 0xee, 0x11, 0x06, 0xcf, 0xfc, 0x99, 0x01, 0x67, 0x7b, 0xab, 0x2d, 0xbe, 0x1c, - 0x77, 0x9e, 0x71, 0x44, 0xe7, 0x65, 0xb5, 0x32, 0x87, 0x07, 0x19, 0x8f, 0xad, 0x95, 0xf9, 0xe4, - 0x0c, 0xf4, 0xf8, 0xad, 0xfc, 0x9d, 0x1c, 0x94, 0x56, 0x9b, 0xdd, 0x6d, 0xaf, 0x3d, 0xef, 0x44, - 0xce, 0x13, 0x6b, 0x52, 0xbc, 0xa5, 0x99, 0x14, 0xb1, 0x87, 0x56, 0xdc, 0xb0, 0xc1, 0xd2, 0x60, - 0x19, 0x30, 0x99, 0x90, 0xf0, 0x55, 0x7a, 0x1b, 0x86, 0xd8, 0x0f, 0xa1, 0xa1, 0x5c, 0xe8, 0x61, - 0x8c, 0x58, 0x57, 0xe3, 0xff, 0x84, 0x92, 0xaf, 0x27, 0x1f, 0x43, 0x0e, 0xe7, 0x7e, 0x85, 0xe7, - 0x0e, 0x3a, 0x7e, 0x9e, 0xc3, 0x3f, 0x37, 0xa0, 0x9c, 0x6e, 0x09, 0xb9, 0x03, 0xa3, 0x8c, 0x93, - 0x17, 0xe7, 0x21, 0x7a, 0xb1, 0x4f, 0x9b, 0xaf, 0x0a, 0x34, 0x5e, 0x3d, 0xec, 0x7c, 0xca, 0x21, - 0x96, 0xe4, 0x70, 0xce, 0x82, 0x92, 0x8a, 0x95, 0x51, 0xbb, 0x57, 0x74, 0xd1, 0x74, 0x3a, 0xbb, - 0x1f, 0xd4, 0x5a, 0xff, 0x91, 0x56, 0x6b, 0x21, 0x94, 0x06, 0x4d, 0x28, 0x87, 0x01, 0x67, 0x3c, - 0xcf, 0x86, 0x3a, 0xcf, 0x64, 0x4a, 0x0e, 0x3d, 0xe0, 0x8c, 0xc3, 0x98, 0x2d, 0xc2, 0xbf, 0x27, - 0xe6, 0x19, 0xda, 0x22, 0x1d, 0x84, 0xa8, 0xfa, 0x2c, 0xc7, 0x31, 0xff, 0x7e, 0x1e, 0x4e, 0x27, - 0xd5, 0xe3, 0xe9, 0xf5, 0x56, 0x9d, 0xc0, 0x69, 0x85, 0x47, 0xac, 0x80, 0x4b, 0x3d, 0x55, 0xc3, - 0x80, 0x6a, 0x59, 0x35, 0xa5, 0x42, 0x66, 0xaa, 0x42, 0x68, 0xc4, 0xf1, 0x0a, 0xc9, 0x6a, 0x90, - 0x3b, 0x90, 0xaf, 0xd3, 0x48, 0x84, 0x5d, 0x5e, 0xec, 0xe9, 0x55, 0xb5, 0x5e, 0x57, 0xeb, 0x34, - 0xe2, 0x83, 0xc8, 0x3d, 0xd7, 0xa9, 0xe6, 0x49, 0xce, 0xd4, 0xf1, 0x4d, 0x18, 0x59, 0x78, 0xd8, - 0xa1, 0x8d, 0x48, 0x44, 0x5b, 0x5e, 0x3e, 0x9c, 0x1f, 0xc7, 0x55, 0x62, 0x3a, 0x29, 0x02, 0xd4, - 0xce, 0xe2, 0x28, 0xe7, 0xde, 0x84, 0x82, 0xfc, 0xf8, 0xb1, 0x62, 0x13, 0xdf, 0x82, 0x31, 0xe5, - 0x23, 0xc7, 0x9a, 0xf4, 0xbf, 0x30, 0x60, 0x84, 0x09, 0xbd, 0x8d, 0x37, 0x9e, 0x50, 0x89, 0x74, - 0x43, 0x93, 0x48, 0x53, 0x4a, 0x10, 0x0d, 0xae, 0xcb, 0x37, 0x8e, 0x90, 0x45, 0xfb, 0x06, 0x40, - 0x82, 0x4c, 0x6e, 0xc1, 0x28, 0xbf, 0xf6, 0x91, 0xb9, 0x2b, 0xd5, 0xa8, 0x1c, 0x51, 0x92, 0x68, - 0x39, 0x7e, 0x27, 0xad, 0x16, 0x4a, 0x6a, 0x32, 0x9f, 0x78, 0x2e, 0xab, 0x61, 0xa0, 0x8c, 0xcd, - 0x9c, 0xdf, 0xe6, 0x51, 0x1a, 0xa1, 0x92, 0xe3, 0x29, 0xdb, 0x85, 0xb9, 0x2a, 0x0e, 0x36, 0xf2, - 0x87, 0x31, 0x39, 0x2d, 0x98, 0x64, 0x9f, 0x79, 0xfc, 0x39, 0xf0, 0xb8, 0x07, 0x59, 0xb1, 0x77, - 0xa1, 0x74, 0xd3, 0x0f, 0x1e, 0x38, 0x81, 0x5b, 0xdd, 0xa6, 0xc2, 0xe7, 0xbc, 0x80, 0x8e, 0xe3, - 0xe3, 0xf7, 0x38, 0xdc, 0x76, 0x58, 0xc1, 0xcf, 0xf7, 0x2b, 0x43, 0x35, 0xdf, 0x6f, 0x5a, 0x1a, - 0x3a, 0x59, 0x81, 0xf1, 0xbb, 0xce, 0x43, 0x71, 0xbb, 0xb7, 0xb6, 0xb6, 0x24, 0x7c, 0x5d, 0x2e, - 0x1f, 0xec, 0x57, 0xce, 0xb6, 0x9c, 0x87, 0xf1, 0xad, 0x60, 0x7f, 0xe7, 0x6a, 0x9d, 0x9e, 0x78, - 0x30, 0xb1, 0xea, 0x07, 0x91, 0xf8, 0x08, 0xd3, 0x69, 0xf3, 0x7d, 0x2e, 0xe7, 0xae, 0x65, 0x5e, - 0xce, 0x9d, 0x65, 0x8a, 0xbc, 0x7d, 0x2f, 0x26, 0xd7, 0x82, 0xf5, 0x34, 0xc6, 0xe4, 0x5d, 0x98, - 0x9a, 0xa3, 0x41, 0xe4, 0xdd, 0xf3, 0x1a, 0x4e, 0x44, 0x6f, 0xfa, 0x41, 0xcb, 0x89, 0xc4, 0x81, - 0x0a, 0x1a, 0xd4, 0x0d, 0xca, 0x39, 0xb5, 0x9c, 0xc8, 0xea, 0xc5, 0x24, 0x5f, 0xce, 0xf2, 0x1e, - 0x1a, 0xc6, 0xe6, 0xbf, 0xca, 0x94, 0x82, 0x0c, 0xef, 0xa1, 0x3e, 0x5d, 0x90, 0xe1, 0x47, 0xb4, - 0x7d, 0xd8, 0x25, 0x69, 0xa1, 0x76, 0x5d, 0x5c, 0xd8, 0x1e, 0x7d, 0x09, 0x1a, 0x8f, 0x5b, 0x9f, - 0xcb, 0xd0, 0x59, 0xc8, 0xd7, 0x56, 0x6f, 0xe2, 0x11, 0x89, 0xb8, 0x94, 0xa4, 0xed, 0x1d, 0xa7, - 0xdd, 0x40, 0x5d, 0x46, 0x78, 0x3a, 0xa8, 0x02, 0xaf, 0xb6, 0x7a, 0x93, 0x38, 0x30, 0xbd, 0x4a, - 0x83, 0x96, 0x17, 0x7d, 0xe1, 0xfa, 0x75, 0x65, 0xa0, 0x0a, 0x58, 0xb5, 0x6b, 0xa2, 0x6a, 0x95, - 0x0e, 0xa2, 0xd8, 0x0f, 0xaf, 0x5f, 0xcf, 0x1c, 0x8e, 0xb8, 0x62, 0x59, 0xbc, 0xc8, 0x02, 0x4c, - 0xdc, 0x75, 0x1e, 0x8a, 0xeb, 0xeb, 0xd8, 0xc6, 0xcb, 0xa3, 0xaf, 0x3d, 0x4e, 0xac, 0x46, 0x52, - 0xa4, 0x0e, 0xb1, 0x4e, 0x44, 0xde, 0x81, 0xb1, 0x64, 0x7a, 0x85, 0x78, 0x71, 0x99, 0xe7, 0x6e, - 0x99, 0xca, 0xe4, 0xd4, 0xce, 0x92, 0x14, 0x74, 0xb2, 0x1e, 0x9b, 0xe8, 0x5c, 0x21, 0x45, 0x67, - 0xc5, 0x62, 0xed, 0x9a, 0x6a, 0xa2, 0x3b, 0x58, 0xa2, 0x35, 0x6b, 0x32, 0x56, 0xd1, 0xb9, 0xb7, - 0x8e, 0xa5, 0x73, 0x51, 0x2c, 0xff, 0xd5, 0xc0, 0x6f, 0x75, 0x22, 0xf4, 0x5a, 0x4c, 0x59, 0xfe, - 0x1d, 0x2c, 0xc9, 0xb0, 0xfc, 0x39, 0x49, 0xf6, 0xad, 0xfc, 0xf8, 0x23, 0xdc, 0xca, 0x53, 0x18, - 0x5a, 0xf2, 0x1b, 0xbb, 0xe8, 0xa6, 0x58, 0xac, 0x7d, 0xc8, 0xe4, 0x47, 0xd3, 0x6f, 0xec, 0x3e, - 0xbe, 0xdb, 0x64, 0x64, 0x4f, 0x96, 0x59, 0xdb, 0xd9, 0xb4, 0x12, 0x9f, 0x9e, 0x99, 0xd4, 0x6e, - 0xda, 0xb4, 0x32, 0xae, 0xa8, 0xf0, 0x59, 0x28, 0x1b, 0x62, 0xe9, 0xe4, 0x84, 0x42, 0x79, 0x9e, - 0x86, 0xbb, 0x91, 0xdf, 0x99, 0x6b, 0x7a, 0x9d, 0x2d, 0xdf, 0x09, 0xdc, 0x99, 0x72, 0x1f, 0x81, - 0xf1, 0x72, 0xa6, 0xc0, 0x98, 0x72, 0x39, 0xbd, 0xdd, 0x90, 0x0c, 0xac, 0x1e, 0x96, 0xe6, 0x97, - 0x52, 0xd5, 0x26, 0x8b, 0x30, 0x2a, 0x90, 0xc4, 0xc6, 0xd0, 0xfb, 0xb9, 0x67, 0x33, 0x3f, 0x37, - 0x2a, 0x3e, 0x67, 0x49, 0x7a, 0xf3, 0xdb, 0xe3, 0x30, 0xa1, 0x8b, 0x70, 0xa6, 0x53, 0x2d, 0xf9, - 0xdb, 0x5e, 0x5b, 0x5a, 0x66, 0x3c, 0xf5, 0x03, 0x42, 0xb4, 0x14, 0xe2, 0x08, 0x21, 0x2f, 0x01, - 0xc4, 0x97, 0x8f, 0xd2, 0xf8, 0x12, 0x09, 0xcf, 0x95, 0x02, 0xf2, 0xab, 0x00, 0xcb, 0xbe, 0x4b, - 0xe3, 0xec, 0x21, 0x87, 0x1c, 0x99, 0xbc, 0x2c, 0x8e, 0x4c, 0x44, 0x92, 0xf2, 0x83, 0xfd, 0xca, - 0xa9, 0xb6, 0xef, 0xd2, 0xde, 0xb4, 0x21, 0x0a, 0x47, 0xf2, 0x39, 0x18, 0xb6, 0xba, 0x4d, 0x2a, - 0x93, 0x59, 0x8c, 0xc9, 0x21, 0xed, 0x36, 0x95, 0xe4, 0x85, 0x41, 0x37, 0x7d, 0x52, 0xce, 0x00, - 0xe4, 0x7d, 0x80, 0x3b, 0xdd, 0x2d, 0x7a, 0x2b, 0xf0, 0xbb, 0x1d, 0x19, 0x2d, 0x8b, 0x86, 0xda, - 0x6e, 0x9c, 0xfa, 0xc8, 0xde, 0xc6, 0x42, 0xf5, 0xe3, 0x09, 0x09, 0x59, 0x81, 0x51, 0xb1, 0x40, - 0xc4, 0x49, 0xf4, 0x73, 0x59, 0x67, 0x20, 0xca, 0x2e, 0x29, 0xb2, 0x4b, 0x20, 0x58, 0x3f, 0x96, - 0xe0, 0x86, 0xe6, 0x3b, 0x50, 0x64, 0xec, 0x99, 0x31, 0x19, 0x0a, 0xe9, 0x88, 0x5e, 0x7a, 0x4a, - 0x85, 0x98, 0xe1, 0xa9, 0xe5, 0xb8, 0x8a, 0x09, 0xc8, 0x97, 0x31, 0x1f, 0x8c, 0xe8, 0xea, 0x43, - 0x8f, 0xd2, 0x2e, 0xf6, 0x74, 0xf5, 0x49, 0xa7, 0xd3, 0xc9, 0x48, 0xa0, 0x15, 0xf3, 0x23, 0xdb, - 0x71, 0x24, 0x4b, 0x9c, 0xc1, 0xf6, 0x90, 0x0f, 0x5c, 0xe9, 0xf9, 0xc0, 0x8c, 0x0c, 0xce, 0xe8, - 0xcd, 0x02, 0xa3, 0xf1, 0x25, 0x1d, 0x28, 0x27, 0xa9, 0xa7, 0xc4, 0xb7, 0xe0, 0xb0, 0x6f, 0xbd, - 0xda, 0xf3, 0x2d, 0x75, 0x00, 0x7b, 0x3e, 0xd7, 0xc3, 0x9d, 0xb8, 0x49, 0xb6, 0x51, 0xf1, 0xbd, - 0xb1, 0xc3, 0xbe, 0xf7, 0x52, 0xcf, 0xf7, 0xa6, 0xdd, 0xad, 0xde, 0xef, 0xa4, 0x78, 0x92, 0x77, - 0x60, 0x5c, 0x42, 0x70, 0x7d, 0xe0, 0x11, 0x96, 0xd0, 0x60, 0xdd, 0x2d, 0x74, 0xa2, 0xd2, 0x53, - 0xa0, 0xa8, 0xc8, 0x2a, 0x35, 0x9f, 0x1d, 0xe3, 0x1a, 0x75, 0x7a, 0x56, 0xe8, 0xc8, 0xe4, 0x8b, - 0x30, 0xb6, 0xd8, 0x62, 0x0d, 0xf1, 0xdb, 0x4e, 0x44, 0x51, 0xdc, 0x26, 0xc7, 0x82, 0x4a, 0x89, - 0x32, 0x55, 0x79, 0xae, 0xc1, 0xa4, 0x48, 0xdd, 0xae, 0x14, 0x0a, 0xd6, 0x79, 0xfc, 0x80, 0x41, - 0xcc, 0xe1, 0x50, 0x08, 0xd7, 0x67, 0x33, 0x8e, 0xe6, 0x14, 0xf6, 0xb8, 0xa5, 0xf2, 0x73, 0x0b, - 0x5b, 0x2c, 0x08, 0xad, 0xf3, 0x74, 0x9e, 0xe4, 0x5d, 0x18, 0x13, 0x51, 0x80, 0x55, 0x6b, 0x39, - 0x9c, 0x29, 0x63, 0xe3, 0xd1, 0xc9, 0x54, 0x06, 0x0c, 0xda, 0x4e, 0x90, 0xba, 0x9f, 0x49, 0xf0, - 0xc9, 0x17, 0xe0, 0xe4, 0xa6, 0xd7, 0x76, 0xfd, 0x07, 0xa1, 0x90, 0x7f, 0x42, 0xd0, 0x4d, 0x25, - 0x3e, 0x2b, 0x0f, 0x78, 0xb9, 0x2d, 0x05, 0x73, 0x8f, 0xe0, 0xcb, 0xe4, 0x40, 0x7e, 0xa3, 0x87, - 0x33, 0x9f, 0x41, 0xe4, 0xb0, 0x19, 0x34, 0xdb, 0x33, 0x83, 0x7a, 0x3f, 0x9f, 0x9e, 0x4e, 0x99, - 0x9f, 0x21, 0x3e, 0x10, 0x7d, 0x57, 0xfd, 0xc0, 0xf7, 0xda, 0x33, 0xd3, 0xda, 0xfb, 0x10, 0xb1, - 0x0b, 0x29, 0xe2, 0xad, 0xfa, 0x4d, 0xaf, 0xb1, 0x57, 0x33, 0x0f, 0xf6, 0x2b, 0xcf, 0xa5, 0xf7, - 0xeb, 0x8f, 0x7d, 0xcd, 0x7c, 0xce, 0x60, 0x4d, 0xbe, 0x08, 0x25, 0xf6, 0x37, 0x56, 0x6e, 0x4e, - 0x6a, 0x97, 0x39, 0x0a, 0xa6, 0xf8, 0x0e, 0x8e, 0x11, 0x86, 0x29, 0x66, 0xe8, 0x3d, 0x1a, 0x2b, - 0xf3, 0x67, 0x06, 0x9c, 0xcc, 0xaa, 0xeb, 0x11, 0x39, 0x61, 0xcc, 0xd4, 0xb5, 0x2e, 0x5a, 0xde, - 0xfc, 0x5a, 0x37, 0xbe, 0xcc, 0xad, 0xc0, 0x30, 0xb3, 0x06, 0xa5, 0x93, 0x12, 0xde, 0x00, 0x31, - 0x8b, 0x31, 0xb4, 0x38, 0x9c, 0x21, 0xa0, 0xcb, 0x3a, 0x6a, 0xe2, 0xc3, 0x1c, 0x01, 0xfd, 0xda, - 0x2d, 0x0e, 0x67, 0x08, 0x4c, 0xa1, 0x90, 0xdb, 0x04, 0x22, 0xb4, 0x18, 0xc0, 0xe2, 0x70, 0x72, - 0x11, 0x46, 0x57, 0xda, 0x4b, 0xd4, 0xb9, 0x4f, 0xc5, 0x9d, 0x0a, 0x9e, 0x14, 0xf8, 0x6d, 0xbb, - 0xc9, 0x60, 0x96, 0x2c, 0x34, 0xbf, 0x6b, 0xc0, 0x54, 0x4f, 0x37, 0x1d, 0x9d, 0xf6, 0xe6, 0xf0, - 0x0b, 0xac, 0x41, 0xda, 0xc7, 0xab, 0x3f, 0x94, 0x5d, 0x7d, 0xf3, 0xaf, 0xf3, 0x70, 0xa6, 0xcf, - 0xae, 0x95, 0x5c, 0x3e, 0x1b, 0x47, 0x5e, 0x3e, 0x7f, 0x85, 0xed, 0x12, 0x8e, 0xd7, 0x0a, 0xd7, - 0xfc, 0xa4, 0xc6, 0xc9, 0x39, 0x3d, 0x96, 0xc9, 0xbc, 0x12, 0x32, 0x07, 0xc2, 0xd9, 0x06, 0x52, - 0xd8, 0x91, 0xdf, 0x73, 0x2a, 0xaa, 0x33, 0xeb, 0xb9, 0xfe, 0xcd, 0xff, 0x92, 0x5c, 0xff, 0xea, - 0x97, 0x2e, 0x43, 0x8f, 0xf5, 0xd2, 0x25, 0xfb, 0x18, 0x78, 0xf8, 0x51, 0x0e, 0xbb, 0xff, 0x43, - 0xea, 0xc2, 0xf9, 0x97, 0x71, 0xa8, 0x2f, 0xc3, 0xf0, 0xe6, 0x0e, 0x0d, 0xa4, 0xc7, 0x31, 0x56, - 0xe4, 0x01, 0x03, 0xa8, 0x15, 0x41, 0x0c, 0xf3, 0x6b, 0x50, 0x52, 0x3f, 0x86, 0x6b, 0x99, 0xfd, - 0x16, 0x8b, 0x89, 0xaf, 0x65, 0x06, 0xb0, 0x38, 0xfc, 0xc8, 0x2c, 0x52, 0x49, 0x2f, 0xe4, 0x8f, - 0xea, 0x05, 0xf3, 0xdf, 0x1b, 0x30, 0x84, 0x41, 0xf4, 0x6f, 0x40, 0x51, 0x1e, 0x06, 0xaa, 0x81, - 0xe5, 0xd3, 0xf2, 0xac, 0x30, 0xd4, 0x6f, 0xec, 0x05, 0x90, 0x7d, 0x6a, 0x83, 0x06, 0x5b, 0x9a, - 0x63, 0xc7, 0x7d, 0x06, 0x50, 0x3f, 0x85, 0x18, 0xc7, 0xe8, 0x12, 0x74, 0x5e, 0x11, 0x16, 0x2c, - 0x5f, 0xf0, 0xdc, 0x79, 0xa5, 0xc7, 0x72, 0x95, 0x58, 0xe6, 0xf7, 0x0d, 0x38, 0x95, 0xa9, 0x07, - 0xb0, 0xaf, 0x72, 0x85, 0x43, 0x99, 0x11, 0x69, 0x6d, 0x83, 0x63, 0x1c, 0xc7, 0x49, 0xe5, 0x18, - 0xc3, 0xfb, 0x3c, 0x14, 0x63, 0xf3, 0x86, 0x9c, 0x94, 0x43, 0x87, 0x27, 0x46, 0x32, 0xeb, 0xd7, - 0x2f, 0x0c, 0x18, 0x61, 0x55, 0x78, 0x62, 0xa3, 0x0d, 0xb2, 0xcf, 0x0f, 0x59, 0x93, 0x06, 0x8a, - 0x31, 0xf8, 0xc1, 0x08, 0x40, 0x82, 0x4c, 0xb6, 0x60, 0x62, 0x65, 0x71, 0x7e, 0x6e, 0xd1, 0xa5, - 0xed, 0x08, 0xef, 0xb1, 0x52, 0xb1, 0xec, 0x0b, 0x0f, 0x23, 0x1a, 0xb4, 0x9d, 0xa6, 0x40, 0xd8, - 0x4b, 0x96, 0xa7, 0xef, 0xb9, 0x0d, 0xdb, 0x8b, 0xe9, 0x54, 0x85, 0x4c, 0xe7, 0xc8, 0xbe, 0x51, - 0xaf, 0xde, 0x5d, 0x52, 0xbe, 0x91, 0x1b, 0xf0, 0x1b, 0xa1, 0xd3, 0x6a, 0xf6, 0xf9, 0x86, 0xce, - 0x91, 0xec, 0x40, 0xf9, 0x16, 0xca, 0x6e, 0xe5, 0x2b, 0xf9, 0xc3, 0xbf, 0xf2, 0x82, 0xf8, 0xca, - 0x33, 0x5c, 0xe8, 0x67, 0x7f, 0xa7, 0x87, 0x6b, 0x32, 0x73, 0x87, 0x8e, 0x9c, 0xb9, 0xbf, 0x6d, - 0xc0, 0x08, 0xdf, 0x1c, 0xe2, 0x27, 0x12, 0x32, 0xb7, 0x9f, 0xcd, 0xc7, 0xb3, 0xfd, 0x94, 0x23, - 0xfc, 0x4f, 0x35, 0xc0, 0x79, 0x19, 0x99, 0x4f, 0xbd, 0xb7, 0x20, 0x0f, 0x89, 0x51, 0x31, 0xe5, - 0x25, 0x89, 0xab, 0x0f, 0x7f, 0x6a, 0x41, 0xe5, 0xc2, 0x31, 0xd4, 0xd7, 0xdf, 0x46, 0x1f, 0xf1, - 0xf5, 0xb7, 0x25, 0x28, 0x0a, 0xdf, 0x95, 0xda, 0x9e, 0x30, 0x3f, 0xe5, 0xf9, 0x44, 0x0c, 0x57, - 0x12, 0x36, 0x73, 0x90, 0xbd, 0xa5, 0xa5, 0x5b, 0x8b, 0x11, 0xc9, 0x0a, 0x14, 0x93, 0x50, 0x89, - 0xa2, 0x76, 0xd3, 0x17, 0xc3, 0x85, 0x73, 0x27, 0x8f, 0xf1, 0xcb, 0x8c, 0x8c, 0x48, 0x78, 0x98, - 0xdf, 0x34, 0xa0, 0x9c, 0x9e, 0x2f, 0xe4, 0x1d, 0x18, 0x8b, 0xa3, 0x55, 0xe2, 0x1b, 0x74, 0x3c, - 0xaa, 0x4b, 0xc2, 0x5b, 0xb4, 0xbb, 0x74, 0x15, 0x9d, 0xcc, 0x42, 0x81, 0x2d, 0x3b, 0x25, 0xdf, - 0x2e, 0xca, 0x93, 0xae, 0x80, 0xa9, 0x37, 0x57, 0x12, 0x4f, 0x59, 0xb5, 0xff, 0x29, 0x0f, 0x63, - 0xca, 0x60, 0x91, 0xcb, 0x50, 0x58, 0x0c, 0x97, 0xfc, 0xc6, 0x2e, 0x75, 0xc5, 0x81, 0x38, 0x3e, - 0xee, 0xe7, 0x85, 0x76, 0x13, 0x81, 0x56, 0x5c, 0x4c, 0x6a, 0x30, 0xce, 0xff, 0x93, 0xb1, 0x8e, - 0xb9, 0xe4, 0x30, 0x8f, 0x23, 0xcb, 0x28, 0x47, 0x75, 0x87, 0xd5, 0x48, 0xc8, 0x47, 0x00, 0x1c, - 0xc0, 0xc6, 0x77, 0x00, 0xd7, 0x55, 0xb9, 0x80, 0x4f, 0x89, 0x0f, 0x44, 0x9e, 0xda, 0x42, 0x9c, - 0x0a, 0x0a, 0x43, 0x7c, 0x58, 0xcc, 0x6f, 0xec, 0x0e, 0xfe, 0xb4, 0x60, 0xf2, 0xb0, 0x98, 0xdf, - 0xd8, 0xb5, 0xb3, 0xfd, 0x98, 0x54, 0x96, 0xe4, 0x5b, 0x06, 0x9c, 0xb3, 0x68, 0xc3, 0xbf, 0x4f, - 0x83, 0xbd, 0x6a, 0x84, 0x58, 0xea, 0x17, 0x8f, 0x76, 0x9a, 0xba, 0x21, 0xbe, 0xf8, 0x72, 0x20, - 0xb8, 0x60, 0x78, 0x46, 0xab, 0x13, 0xd9, 0x87, 0x54, 0xe1, 0x90, 0x4f, 0x9a, 0xff, 0xc5, 0x50, - 0x96, 0x00, 0x59, 0x86, 0x62, 0x3c, 0x59, 0xc4, 0x79, 0x5d, 0xac, 0x1c, 0x49, 0xb8, 0x45, 0xef, - 0xd5, 0x9e, 0x11, 0x67, 0xd7, 0xd3, 0xf1, 0x94, 0xd3, 0x56, 0x84, 0x04, 0x92, 0xcf, 0xc3, 0x10, - 0x0e, 0xd5, 0xd1, 0x09, 0x9a, 0xe4, 0x56, 0x33, 0xc4, 0xc6, 0x08, 0x6b, 0x8d, 0x94, 0xe4, 0x35, - 0xe1, 0xc7, 0x90, 0xd7, 0x52, 0x9f, 0x32, 0x10, 0xab, 0x47, 0xbc, 0xc7, 0x24, 0xae, 0x73, 0xca, - 0x6c, 0xfd, 0x3b, 0x06, 0x4c, 0xaf, 0xcf, 0xde, 0xb4, 0xe8, 0xb6, 0x87, 0xb1, 0xa2, 0x9e, 0x8f, - 0x97, 0x8c, 0xe4, 0x2c, 0xe4, 0x2d, 0xe7, 0x81, 0x48, 0xa4, 0x88, 0x7e, 0xf3, 0x81, 0xf3, 0xc0, - 0x62, 0x30, 0xf2, 0x0a, 0x14, 0xef, 0xd0, 0xbd, 0xdb, 0x4e, 0xdb, 0x6d, 0x52, 0x91, 0x30, 0x11, - 0xd3, 0x74, 0xec, 0xd2, 0x3d, 0x7b, 0x07, 0xa1, 0x56, 0x82, 0x80, 0x37, 0xa8, 0xdd, 0xad, 0x3b, - 0x94, 0x5f, 0x34, 0x95, 0xc4, 0x0d, 0x6a, 0x77, 0x0b, 0x5d, 0xb3, 0x79, 0x89, 0xf9, 0xa7, 0x79, - 0x28, 0xa7, 0x57, 0x3f, 0x79, 0x1f, 0x4a, 0xab, 0x4e, 0x18, 0x3e, 0xf0, 0x03, 0xf7, 0xb6, 0x13, - 0xee, 0x88, 0xaa, 0xf0, 0x08, 0x54, 0x01, 0xb7, 0x77, 0x1c, 0x2d, 0xf7, 0x97, 0x46, 0xc0, 0xb4, - 0x82, 0x35, 0xe1, 0x16, 0xae, 0xac, 0xe2, 0xc8, 0x8f, 0x3a, 0xa9, 0x9c, 0x8e, 0x12, 0x8d, 0xb8, - 0x30, 0x99, 0xea, 0x8b, 0x78, 0x01, 0xc5, 0xf1, 0x6d, 0xe9, 0x9e, 0xe2, 0x27, 0x79, 0xdd, 0xd9, - 0x7b, 0x98, 0x17, 0x49, 0x96, 0xa8, 0xa1, 0x57, 0x29, 0x22, 0xf2, 0x16, 0xc0, 0xfa, 0xec, 0x4d, - 0xb4, 0x3f, 0x69, 0x20, 0xfc, 0x8a, 0xf1, 0x58, 0x86, 0x31, 0x69, 0x70, 0xb0, 0x6a, 0x35, 0x24, - 0xc8, 0xe4, 0x0d, 0xc8, 0xf3, 0x88, 0x39, 0x35, 0x63, 0xd1, 0xdd, 0x9b, 0x55, 0x1e, 0x64, 0xc4, - 0x2f, 0x95, 0xf5, 0xd3, 0x79, 0x86, 0x4f, 0x96, 0x94, 0x78, 0xab, 0x11, 0x2d, 0xd7, 0x8b, 0x04, - 0xc7, 0xbd, 0x3f, 0x40, 0xe0, 0xd5, 0x3f, 0xcb, 0x43, 0x31, 0xfe, 0x26, 0x21, 0x80, 0x9a, 0x98, - 0xb8, 0x11, 0xc6, 0xff, 0xc9, 0x59, 0x28, 0x48, 0xe5, 0x4b, 0xdc, 0x0a, 0x8f, 0x86, 0x42, 0xf1, - 0x9a, 0x01, 0xa9, 0x65, 0x71, 0xc5, 0xcb, 0x92, 0x3f, 0xc9, 0x75, 0x88, 0x55, 0xa8, 0x7e, 0xba, - 0xd6, 0x10, 0x9b, 0xca, 0x56, 0x8c, 0x46, 0x26, 0x20, 0xe7, 0x71, 0x3f, 0xe4, 0xa2, 0x95, 0xf3, - 0x5c, 0xf2, 0x3e, 0x14, 0x1c, 0xd7, 0xa5, 0xae, 0xed, 0x44, 0x03, 0x3c, 0x80, 0x59, 0x60, 0xdc, - 0xf8, 0x5e, 0x87, 0x54, 0xd5, 0x88, 0x54, 0xa1, 0x88, 0xef, 0x1f, 0x76, 0xc3, 0x81, 0x1e, 0x4d, - 0x4c, 0x38, 0x14, 0x18, 0xd9, 0x7a, 0x48, 0x5d, 0xf2, 0x32, 0x0c, 0xb1, 0x29, 0x26, 0x76, 0xca, - 0x38, 0xf7, 0xdc, 0xca, 0xda, 0x2a, 0xef, 0xb0, 0xdb, 0x27, 0x2c, 0x44, 0x20, 0x2f, 0x42, 0xbe, - 0x3b, 0x7b, 0x4f, 0xec, 0x81, 0xe5, 0x64, 0x82, 0xc5, 0x68, 0xac, 0x98, 0xdc, 0x80, 0xc2, 0x03, - 0x3d, 0x54, 0xee, 0x54, 0x6a, 0xe8, 0x62, 0xfc, 0x18, 0xb1, 0x56, 0x80, 0x11, 0x1e, 0x98, 0x66, - 0x3e, 0x07, 0x90, 0x7c, 0xba, 0xf7, 0xf2, 0xde, 0xfc, 0x08, 0x8a, 0xf1, 0x27, 0xc9, 0xb3, 0xa0, - 0xac, 0x61, 0xbe, 0xde, 0xac, 0xe2, 0x6e, 0xbc, 0x92, 0xcf, 0xc0, 0x68, 0x87, 0x8d, 0xaa, 0x4c, - 0x93, 0x6a, 0xb1, 0x65, 0xcc, 0x96, 0xcd, 0x0c, 0x8c, 0x8a, 0x69, 0xcb, 0x7d, 0xea, 0x2d, 0xf9, - 0xd3, 0xfc, 0xe3, 0x1c, 0x86, 0xdc, 0x2b, 0xf5, 0x24, 0x2f, 0xc0, 0x78, 0x23, 0xa0, 0xb8, 0x51, - 0x3b, 0x4c, 0x61, 0x14, 0xdf, 0x29, 0x25, 0xc0, 0x45, 0x97, 0x5c, 0x84, 0xc9, 0x24, 0x6f, 0xab, - 0xdd, 0xd8, 0x12, 0x81, 0xb2, 0x25, 0x6b, 0xbc, 0x23, 0x13, 0xb7, 0xce, 0x6d, 0xa1, 0xff, 0x7c, - 0x59, 0x0d, 0x4a, 0x8b, 0x64, 0x0e, 0xd6, 0xa2, 0x35, 0xa9, 0xc0, 0x31, 0xf2, 0xf6, 0x34, 0x8c, - 0x38, 0xce, 0x76, 0xd7, 0xe3, 0xbe, 0xbc, 0x25, 0x4b, 0xfc, 0x22, 0x9f, 0x81, 0xa9, 0xd0, 0xdb, - 0x6e, 0x3b, 0x51, 0x37, 0xa0, 0x72, 0xf5, 0xe1, 0x94, 0x1a, 0xb7, 0xca, 0x71, 0x81, 0x5c, 0x7f, - 0xaf, 0x02, 0x51, 0xbf, 0xe7, 0x6f, 0x7d, 0x4c, 0x1b, 0x7c, 0xaa, 0x95, 0xac, 0x29, 0xa5, 0x64, - 0x05, 0x0b, 0xc8, 0xf3, 0x50, 0x0a, 0x68, 0x88, 0xca, 0x2a, 0x76, 0x1b, 0x66, 0x72, 0xb1, 0xc6, - 0x24, 0x8c, 0x89, 0xbe, 0x1a, 0x4c, 0xf5, 0xac, 0x41, 0xf2, 0x2a, 0xb7, 0x7b, 0x84, 0xe6, 0x52, - 0xe2, 0x66, 0x1e, 0x13, 0xdf, 0xa9, 0x27, 0x73, 0x39, 0x92, 0xd9, 0x86, 0x92, 0xba, 0xf3, 0x1c, - 0x11, 0x82, 0x7c, 0x1a, 0x9d, 0x0a, 0xb9, 0x44, 0x1c, 0x39, 0xd8, 0xaf, 0xe4, 0x3c, 0x17, 0x5d, - 0x09, 0x2f, 0x41, 0x41, 0xea, 0x4f, 0xea, 0xa3, 0x1e, 0x42, 0xd5, 0xde, 0xb3, 0xe2, 0x52, 0xf3, - 0x65, 0x18, 0x15, 0x9b, 0xcb, 0xe1, 0x07, 0x5c, 0xe6, 0xd7, 0x73, 0x30, 0x69, 0x51, 0xb6, 0xc0, - 0xc5, 0x73, 0x19, 0x4f, 0x59, 0x06, 0x5b, 0xad, 0x6d, 0x87, 0x44, 0xfc, 0xff, 0xd0, 0x80, 0xe9, - 0x0c, 0xdc, 0x4f, 0x94, 0x24, 0xeb, 0x4d, 0x28, 0xce, 0x7b, 0x4e, 0xb3, 0xea, 0xba, 0xb1, 0x73, - 0x24, 0xea, 0xc9, 0x2e, 0x5b, 0x4e, 0x0e, 0x83, 0xaa, 0x6a, 0x46, 0x8c, 0x4a, 0xae, 0x88, 0x49, - 0x91, 0x24, 0xe5, 0x93, 0x39, 0x72, 0x81, 0xd7, 0x29, 0xc9, 0x90, 0x8b, 0x21, 0x68, 0x1c, 0x98, - 0xdc, 0x7f, 0x3f, 0xb1, 0x43, 0x97, 0x1d, 0x82, 0x96, 0x6e, 0xde, 0x40, 0x06, 0xf9, 0x37, 0x73, - 0x70, 0x3a, 0x9b, 0xf0, 0x93, 0xe6, 0x3b, 0xc3, 0x74, 0x0b, 0x4a, 0x1a, 0x62, 0x54, 0xa4, 0x78, - 0x6e, 0x06, 0xc4, 0x4f, 0x10, 0xc8, 0x3d, 0x18, 0x5f, 0x72, 0xc2, 0xe8, 0x36, 0x75, 0x82, 0x68, - 0x8b, 0x3a, 0xd1, 0x00, 0xba, 0x7d, 0xfc, 0x30, 0x2d, 0x6e, 0x6a, 0x3b, 0x92, 0x32, 0xfd, 0x30, - 0xad, 0xc6, 0x36, 0x9e, 0x28, 0x43, 0x03, 0x4c, 0x94, 0xaf, 0xc2, 0x64, 0x9d, 0xb6, 0x9c, 0xce, - 0x8e, 0x1f, 0x50, 0x71, 0x26, 0x7f, 0x15, 0xc6, 0x63, 0x50, 0xe6, 0x6c, 0xd1, 0x8b, 0x35, 0x7c, - 0xa5, 0x23, 0x12, 0x51, 0xa2, 0x17, 0x9b, 0x7f, 0x98, 0x83, 0x33, 0xd5, 0x86, 0xb8, 0xc0, 0x10, - 0x05, 0xf2, 0x9e, 0xf5, 0x53, 0xfe, 0x36, 0xb9, 0x06, 0xc5, 0xbb, 0xce, 0x43, 0x7c, 0x61, 0x3d, - 0x14, 0x59, 0x73, 0xb8, 0xca, 0xe5, 0x3c, 0xb4, 0xe3, 0x03, 0x41, 0x2b, 0xc1, 0x79, 0x9c, 0x8f, - 0xb0, 0x9b, 0x30, 0x72, 0xdb, 0x6f, 0xba, 0x62, 0x73, 0x12, 0xf7, 0x21, 0x3b, 0x08, 0xb1, 0x44, - 0x89, 0xf9, 0x33, 0x03, 0x26, 0xe2, 0x1a, 0x63, 0x15, 0x3e, 0xf5, 0x2e, 0x49, 0x3d, 0x47, 0x5f, - 0x1c, 0xe0, 0x39, 0xfa, 0xe1, 0x47, 0xeb, 0x09, 0xf3, 0x9f, 0xe3, 0x55, 0x8b, 0xda, 0x4a, 0xb6, - 0x13, 0x29, 0x15, 0x31, 0x06, 0xac, 0x48, 0xee, 0xb1, 0x0d, 0x49, 0xbe, 0xef, 0x90, 0x7c, 0x23, - 0x07, 0x63, 0x71, 0x65, 0x9f, 0xb2, 0xd8, 0xed, 0xb8, 0x5d, 0x03, 0x79, 0x66, 0xd7, 0x15, 0x59, - 0x21, 0x1c, 0xa0, 0x3f, 0x0f, 0x23, 0x62, 0x31, 0x19, 0xa9, 0xfb, 0xc6, 0xd4, 0xe8, 0x26, 0x8f, - 0x8b, 0xe2, 0x80, 0x86, 0x96, 0xa0, 0x43, 0xd7, 0xf7, 0x4d, 0xba, 0x25, 0x6e, 0xde, 0x9e, 0xd8, - 0x3d, 0x2a, 0xdb, 0xf5, 0x3d, 0x69, 0xd8, 0x40, 0xbb, 0xd3, 0x3f, 0x1a, 0x82, 0x72, 0x9a, 0xe4, - 0xe8, 0xe8, 0xf8, 0xd5, 0xee, 0x96, 0x30, 0xe2, 0xd1, 0xca, 0xef, 0x74, 0xb7, 0x2c, 0x06, 0x23, - 0x17, 0x61, 0x68, 0x35, 0xf0, 0xee, 0x0b, 0xab, 0x1d, 0xbd, 0xa7, 0x3a, 0x81, 0x77, 0x5f, 0xf5, - 0x01, 0x65, 0xe5, 0x68, 0x65, 0x2f, 0xd5, 0x95, 0x77, 0x9d, 0xb9, 0x95, 0xdd, 0x0c, 0xd3, 0x09, - 0x54, 0x24, 0x1a, 0xdb, 0x2a, 0x6b, 0xd4, 0x09, 0x44, 0x24, 0xb7, 0x10, 0x67, 0xb8, 0x55, 0x6e, - 0x21, 0x98, 0xe7, 0x5c, 0xb5, 0x54, 0x24, 0xd2, 0x04, 0xa2, 0xfc, 0x94, 0x0b, 0xf8, 0x68, 0x1b, - 0x4f, 0x3e, 0x56, 0x74, 0x52, 0x65, 0x6d, 0xab, 0xab, 0x39, 0x83, 0xef, 0xe3, 0x3c, 0x3d, 0x5d, - 0x85, 0x22, 0x1e, 0x06, 0xe2, 0x11, 0x4f, 0xe1, 0x48, 0x66, 0xd2, 0xdf, 0x16, 0xd0, 0x4f, 0xc1, - 0x8e, 0x0f, 0x7a, 0x12, 0x26, 0xe4, 0x3d, 0x18, 0x53, 0x9d, 0x44, 0xb9, 0x2b, 0xe3, 0x79, 0x1e, - 0x1d, 0xd4, 0x27, 0x7d, 0x99, 0x4a, 0x60, 0xbe, 0xa6, 0xce, 0x12, 0xb1, 0x69, 0x1f, 0x3a, 0x4b, - 0xcc, 0xef, 0xa1, 0x1a, 0xdf, 0xf2, 0x23, 0x2a, 0xb4, 0x97, 0x27, 0x56, 0x8e, 0x25, 0x87, 0xeb, - 0xc3, 0x9a, 0xaf, 0x8c, 0xd6, 0xba, 0x63, 0xbc, 0x68, 0xfc, 0x8f, 0x0d, 0x38, 0x95, 0x49, 0x4b, - 0xae, 0x02, 0x24, 0x3a, 0xa2, 0xe8, 0x25, 0x9e, 0xcc, 0x36, 0x86, 0x5a, 0x0a, 0x06, 0xf9, 0x4a, - 0x5a, 0xbb, 0x3b, 0x7a, 0x73, 0x92, 0x0f, 0x38, 0x4c, 0xe8, 0xda, 0x5d, 0x86, 0x4e, 0x67, 0xfe, - 0x30, 0x0f, 0x53, 0x3d, 0x0f, 0xff, 0x1d, 0xe1, 0x9d, 0xb0, 0x9b, 0x7a, 0x56, 0x8a, 0x5f, 0x04, - 0x5d, 0xe9, 0xf7, 0xec, 0x60, 0xc6, 0x23, 0x53, 0x78, 0x56, 0x27, 0xf2, 0x28, 0x1f, 0xf1, 0xd6, - 0x54, 0x98, 0xfd, 0x20, 0xd9, 0x67, 0xfa, 0x7e, 0xed, 0x31, 0x3c, 0x4c, 0xf6, 0x4b, 0xfc, 0x6e, - 0xd3, 0xf7, 0x72, 0x30, 0xdd, 0xd3, 0xe6, 0x27, 0x76, 0xd5, 0x7d, 0x5e, 0xdb, 0xdd, 0x9e, 0xeb, - 0x37, 0xa6, 0x03, 0x69, 0x11, 0xff, 0xcb, 0x80, 0x33, 0x7d, 0x28, 0xc9, 0x5e, 0x7a, 0x12, 0x71, - 0xad, 0xe2, 0xfa, 0xe1, 0x1f, 0x7c, 0x2c, 0x53, 0xe9, 0x53, 0x9b, 0x09, 0x5f, 0xcf, 0x01, 0x6c, - 0xd2, 0xad, 0x27, 0x3b, 0xf5, 0x4f, 0xf6, 0xe3, 0xf3, 0xb2, 0x59, 0x03, 0x8d, 0xfb, 0x0a, 0x1e, - 0x24, 0x0e, 0x9e, 0xf7, 0x27, 0x7e, 0xa4, 0x22, 0x97, 0xfd, 0x48, 0x85, 0xb9, 0x05, 0x27, 0x6f, - 0xd1, 0x28, 0xd9, 0x09, 0xa5, 0x0d, 0x79, 0x38, 0xdb, 0x57, 0xa0, 0x28, 0xf0, 0xf5, 0x14, 0xe5, - 0xd2, 0xd5, 0xce, 0x73, 0xad, 0x04, 0xc1, 0xa4, 0x70, 0x66, 0x9e, 0x36, 0x69, 0x44, 0x3f, 0xdd, - 0xcf, 0xd4, 0x81, 0xf0, 0xa6, 0xf0, 0xb7, 0x0b, 0x06, 0xfa, 0xc2, 0x91, 0xfd, 0xb3, 0x01, 0xa7, - 0xe2, 0xba, 0x3f, 0x4e, 0xbe, 0xd7, 0x98, 0x2e, 0x21, 0xe2, 0xec, 0x12, 0x8e, 0x87, 0x1c, 0x22, - 0x3e, 0x84, 0x73, 0x92, 0x60, 0xd3, 0x8b, 0xaf, 0x87, 0x06, 0xa2, 0x25, 0xef, 0xc0, 0x98, 0x42, - 0x23, 0x82, 0x76, 0xf1, 0x1e, 0xf8, 0x81, 0x17, 0xed, 0xd8, 0x21, 0x87, 0xab, 0xf7, 0xc0, 0x0a, - 0xba, 0xf9, 0x65, 0x78, 0x26, 0xf6, 0xe8, 0xc9, 0xf8, 0x74, 0x8a, 0xb9, 0x71, 0x3c, 0xe6, 0xcb, - 0x49, 0xb3, 0x16, 0xdb, 0xb1, 0x67, 0xbd, 0xe4, 0x4d, 0xd4, 0x66, 0x89, 0xc6, 0x9c, 0x57, 0x52, - 0xa2, 0x89, 0xbd, 0x28, 0x01, 0x98, 0x6f, 0x2b, 0x95, 0xcd, 0x60, 0xa8, 0x11, 0x1b, 0x69, 0xe2, - 0xaf, 0xe7, 0x60, 0x72, 0x65, 0x71, 0x7e, 0x2e, 0x3e, 0x46, 0x7e, 0xca, 0xf2, 0x12, 0x69, 0x6d, - 0xeb, 0x2f, 0x6f, 0xcc, 0x75, 0x98, 0x4e, 0x75, 0x03, 0x3e, 0xcd, 0xf2, 0x1e, 0xf7, 0xbc, 0x89, - 0xc1, 0x72, 0x67, 0x39, 0x9d, 0xc5, 0x7e, 0xe3, 0x86, 0x95, 0xc2, 0x36, 0x7f, 0x38, 0x92, 0xe2, - 0x2b, 0x44, 0xd8, 0x2b, 0x50, 0x5c, 0x0c, 0xc3, 0x2e, 0x0d, 0xd6, 0xad, 0x25, 0x55, 0x47, 0xf4, - 0x10, 0x68, 0x77, 0x83, 0xa6, 0x95, 0x20, 0x90, 0xcb, 0x50, 0x10, 0xb1, 0x5d, 0x52, 0x26, 0xa0, - 0x23, 0x41, 0x1c, 0x1a, 0x66, 0xc5, 0xc5, 0xe4, 0x0d, 0x28, 0xf1, 0xff, 0xf9, 0x6c, 0x13, 0x1d, - 0x8e, 0x67, 0x55, 0x02, 0x9d, 0xcf, 0x4e, 0x4b, 0x43, 0x63, 0x96, 0x99, 0x7c, 0xfb, 0x91, 0xd5, - 0x68, 0x28, 0xb1, 0xcc, 0xe4, 0x33, 0x91, 0x58, 0x27, 0x15, 0x89, 0x5c, 0x81, 0x7c, 0x75, 0xce, - 0x52, 0xb3, 0x32, 0x3b, 0x8d, 0x80, 0x67, 0x35, 0xd7, 0x9e, 0x57, 0xaa, 0xce, 0x59, 0x64, 0x16, - 0x0a, 0xf8, 0xe0, 0x86, 0x4b, 0x03, 0xe1, 0x4d, 0x8b, 0xb3, 0xa6, 0x23, 0x60, 0xea, 0x6d, 0xa3, - 0xc4, 0x23, 0xd7, 0x60, 0x74, 0xde, 0x0b, 0x3b, 0x4d, 0x67, 0x4f, 0x24, 0x24, 0xc1, 0xcb, 0x10, - 0x97, 0x83, 0xd4, 0x79, 0x26, 0xb0, 0xc8, 0x65, 0x18, 0xae, 0x37, 0xfc, 0x0e, 0xb3, 0xb6, 0x62, - 0xa7, 0x9f, 0x90, 0x01, 0xb4, 0xac, 0x06, 0x0c, 0x80, 0xe1, 0xc6, 0x3c, 0x6a, 0xaa, 0xa8, 0x84, - 0x1b, 0xa7, 0xa3, 0xa5, 0x04, 0x4e, 0xaf, 0x67, 0x24, 0x3c, 0x4e, 0xcf, 0xc8, 0x2d, 0x38, 0x73, - 0x0b, 0x55, 0xfd, 0x3a, 0x0d, 0x30, 0x63, 0x24, 0x7f, 0x8a, 0x67, 0xdd, 0x5a, 0x14, 0x91, 0x62, - 0x97, 0x0e, 0xf6, 0x2b, 0x2f, 0x72, 0x6b, 0xc0, 0x0e, 0x39, 0x8e, 0x7c, 0xc5, 0x27, 0xf5, 0x62, - 0x41, 0x3f, 0x46, 0xe4, 0x0b, 0x70, 0x32, 0xab, 0x48, 0xc4, 0x8c, 0xa1, 0xbf, 0x7c, 0xf6, 0x07, - 0x54, 0x87, 0xf5, 0x2c, 0x0e, 0x64, 0x09, 0xca, 0x1c, 0x5e, 0x75, 0x5b, 0x5e, 0x7b, 0xa1, 0xe5, - 0x78, 0x4d, 0x8c, 0x20, 0x13, 0x61, 0x80, 0x82, 0xab, 0xc3, 0x0a, 0x6d, 0xca, 0x4a, 0x35, 0xbf, - 0xad, 0x14, 0x25, 0x8a, 0xa3, 0x7a, 0xf5, 0xee, 0x52, 0xb2, 0xa6, 0x9e, 0xae, 0x7b, 0x23, 0xad, - 0x6d, 0x87, 0xdc, 0x1b, 0xad, 0xc3, 0x74, 0xaa, 0x1b, 0xa4, 0x38, 0xd2, 0xc0, 0x69, 0x71, 0x94, - 0xa2, 0xb1, 0x52, 0xd8, 0xe6, 0x7f, 0x1e, 0x49, 0xf1, 0x15, 0x67, 0x45, 0x26, 0x8c, 0x70, 0x69, - 0xa3, 0x66, 0x2c, 0xe3, 0xb2, 0xc8, 0x12, 0x25, 0xe4, 0x2c, 0xe4, 0xeb, 0xf5, 0x15, 0x35, 0x9f, - 0x62, 0x18, 0xfa, 0x16, 0x83, 0xb1, 0x11, 0xc2, 0x63, 0xa0, 0x7c, 0x32, 0x42, 0x0d, 0x1a, 0x44, - 0xe2, 0x71, 0xd0, 0x97, 0x92, 0x75, 0x3c, 0x94, 0xf4, 0xb7, 0x58, 0xc7, 0xc9, 0xea, 0x9d, 0x83, - 0x99, 0x6a, 0x18, 0xd2, 0x20, 0xe2, 0x49, 0xe1, 0xc3, 0x6e, 0x8b, 0x06, 0x62, 0xae, 0x09, 0x19, - 0xc3, 0x9f, 0x16, 0x6f, 0x84, 0x56, 0x5f, 0x44, 0x72, 0x09, 0x0a, 0xd5, 0xae, 0xeb, 0xd1, 0x76, - 0x43, 0xf3, 0xda, 0x77, 0x04, 0xcc, 0x8a, 0x4b, 0xc9, 0x87, 0x70, 0x4a, 0x10, 0x49, 0x81, 0x23, - 0x7a, 0x80, 0xcb, 0x1a, 0x6e, 0xc1, 0x8a, 0xb5, 0x20, 0xc5, 0x94, 0x2d, 0xba, 0x24, 0x9b, 0x92, - 0x54, 0xa1, 0xbc, 0x80, 0xf7, 0xa4, 0xf2, 0x89, 0x60, 0x3f, 0x10, 0x69, 0x7a, 0x51, 0x72, 0xf1, - 0x3b, 0x54, 0xdb, 0x8d, 0x0b, 0xad, 0x1e, 0x74, 0x72, 0x07, 0xa6, 0xd3, 0x30, 0x26, 0x8f, 0x8b, - 0xc9, 0x13, 0x5e, 0x3d, 0x5c, 0x50, 0x30, 0x67, 0x51, 0x91, 0x2d, 0x98, 0xaa, 0x46, 0x51, 0xe0, - 0x6d, 0x75, 0x23, 0x9a, 0x12, 0x5d, 0xf2, 0xa0, 0x31, 0x2e, 0x97, 0xe2, 0xeb, 0x19, 0x31, 0x19, - 0xa7, 0x9d, 0x98, 0x32, 0x16, 0x61, 0x56, 0x2f, 0x3b, 0xe2, 0xc6, 0xaf, 0x00, 0x8a, 0x97, 0xf2, - 0x44, 0xa8, 0x95, 0x3c, 0xd0, 0xad, 0x86, 0x7b, 0xad, 0x16, 0x8d, 0x02, 0xbc, 0xb9, 0xc7, 0x97, - 0xf4, 0x4c, 0xe1, 0x1d, 0x75, 0x4e, 0x79, 0xfc, 0x12, 0x5f, 0x4b, 0xd4, 0x1c, 0x47, 0x35, 0x9e, - 0xda, 0xf6, 0x51, 0x1a, 0x70, 0xfb, 0x68, 0xc2, 0xd4, 0x42, 0xbb, 0x11, 0xec, 0x61, 0xc8, 0xa4, - 0xac, 0xdc, 0xf8, 0x11, 0x95, 0x93, 0x0f, 0x6b, 0x9c, 0x77, 0xe4, 0x0c, 0xcb, 0xaa, 0x5e, 0x2f, - 0x63, 0xf3, 0x6f, 0x41, 0x39, 0xdd, 0x97, 0x8f, 0xf8, 0xf4, 0xf1, 0x71, 0x9c, 0xd6, 0xd9, 0x48, - 0xa7, 0xdb, 0x42, 0xae, 0x69, 0xef, 0xdb, 0x1a, 0x49, 0x44, 0xba, 0xf2, 0x12, 0xad, 0xf6, 0xaa, - 0xad, 0x5c, 0xc6, 0xb9, 0xac, 0x65, 0x6c, 0xfe, 0x4e, 0x0e, 0xa6, 0xb8, 0x9f, 0xed, 0x93, 0xaf, - 0x2b, 0xbe, 0xa7, 0x09, 0x67, 0x79, 0x16, 0x98, 0x6a, 0xdd, 0x21, 0xda, 0xe2, 0x47, 0x70, 0xaa, - 0xa7, 0x2b, 0x50, 0x40, 0xcf, 0x4b, 0x0f, 0xe7, 0x1e, 0x11, 0x3d, 0x93, 0xfd, 0x91, 0x8d, 0x1b, - 0x56, 0x0f, 0x85, 0xf9, 0x4f, 0x72, 0x3d, 0xfc, 0x85, 0xde, 0xa8, 0x6a, 0x82, 0xc6, 0xf1, 0x34, - 0xc1, 0xdc, 0x27, 0xd2, 0x04, 0xf3, 0x83, 0x68, 0x82, 0x1f, 0xc2, 0xf8, 0x1a, 0x75, 0x98, 0x46, - 0x23, 0xc2, 0xf0, 0x86, 0xb4, 0xb7, 0x67, 0x59, 0x99, 0x94, 0x2f, 0x71, 0x08, 0x6f, 0xc4, 0x08, - 0x98, 0x68, 0xe1, 0x71, 0x79, 0x96, 0xce, 0x41, 0xdd, 0x34, 0x86, 0xfb, 0x6f, 0x1a, 0xe6, 0x37, - 0x73, 0x30, 0xa6, 0xb0, 0x27, 0xaf, 0x43, 0x69, 0x25, 0xd8, 0x76, 0xda, 0xde, 0xaf, 0x3b, 0xca, - 0xf1, 0x2b, 0x56, 0xdf, 0x57, 0xe0, 0x96, 0x86, 0x85, 0x6e, 0x33, 0xd4, 0x69, 0xa9, 0x13, 0x9f, - 0x55, 0xcf, 0x42, 0xa8, 0x12, 0x46, 0x9d, 0x1f, 0x20, 0x8c, 0x5a, 0x8f, 0x41, 0x1e, 0x3a, 0x7e, - 0x0c, 0xb2, 0x16, 0x32, 0x3c, 0x7c, 0xcc, 0x90, 0x61, 0xf3, 0xf7, 0x72, 0x50, 0x16, 0xaf, 0xb4, - 0xca, 0xc3, 0xc3, 0xa7, 0xeb, 0xc5, 0x06, 0xbd, 0x71, 0x87, 0x5c, 0x8f, 0x0d, 0x7d, 0xff, 0x4f, - 0x2a, 0xf8, 0xe6, 0x66, 0xba, 0x3b, 0xe4, 0x9b, 0x9b, 0x3a, 0x3c, 0x1d, 0x53, 0x91, 0xa6, 0xb2, - 0xd2, 0xf8, 0xe6, 0x8f, 0x73, 0x69, 0xde, 0x42, 0x9b, 0x7a, 0x09, 0x46, 0xf9, 0xb3, 0x5c, 0xd2, - 0xed, 0x5b, 0xe4, 0x6d, 0x42, 0x90, 0x25, 0xcb, 0x8e, 0x13, 0x5d, 0x73, 0xd4, 0xc3, 0xab, 0xe4, - 0x4d, 0xf1, 0x92, 0x4b, 0xd5, 0x75, 0x03, 0x1a, 0x86, 0x42, 0xd1, 0xc2, 0xbb, 0xbb, 0x07, 0x74, - 0xcb, 0xe6, 0x7e, 0x25, 0x8e, 0xeb, 0x06, 0x96, 0x86, 0x47, 0xe6, 0xe0, 0xa4, 0xe6, 0x9e, 0x24, - 0xe9, 0x87, 0x93, 0xdd, 0x22, 0xc2, 0x02, 0x4e, 0x9c, 0x89, 0xfc, 0xf8, 0x1e, 0x9d, 0x36, 0xff, - 0xb7, 0xc1, 0xd6, 0x5a, 0x63, 0xf7, 0x29, 0x8b, 0xfb, 0x61, 0x4d, 0x3a, 0x44, 0xd9, 0xff, 0x8f, - 0x06, 0xf7, 0xdc, 0x17, 0xd3, 0xe7, 0x2d, 0x18, 0xe1, 0x8f, 0x80, 0x09, 0x1f, 0x73, 0x95, 0x0b, - 0x2f, 0x48, 0xee, 0xa7, 0xf8, 0x53, 0x62, 0x96, 0x20, 0x60, 0x26, 0xb3, 0x1e, 0x40, 0x80, 0x8a, - 0x67, 0x6f, 0xe4, 0x80, 0xc4, 0x52, 0x73, 0x92, 0x0e, 0x96, 0xeb, 0xda, 0x38, 0x3a, 0x27, 0xa9, - 0xf9, 0x7f, 0x73, 0xbc, 0x3d, 0xa2, 0x52, 0x83, 0x26, 0xdb, 0xbb, 0x08, 0x43, 0xf8, 0x78, 0xac, - 0x92, 0xd1, 0x30, 0xf5, 0x70, 0x2c, 0x96, 0xb3, 0x75, 0x83, 0xb2, 0x56, 0x0d, 0x35, 0x43, 0x71, - 0xac, 0xae, 0x1b, 0xc4, 0xc0, 0x4c, 0xd2, 0xbe, 0x4b, 0xd5, 0xe5, 0xd0, 0xd6, 0x93, 0x7e, 0x63, - 0x39, 0x79, 0x53, 0xf1, 0x6b, 0x56, 0x0f, 0x34, 0x5a, 0xf7, 0x1c, 0x9b, 0xfb, 0xd3, 0xaa, 0xd2, - 0x36, 0x71, 0x81, 0x5e, 0x80, 0x09, 0x3d, 0x8a, 0x5b, 0x18, 0x1d, 0x18, 0x0c, 0x9f, 0x8a, 0x00, - 0x57, 0xd5, 0x5b, 0x9d, 0x88, 0xd4, 0x60, 0x5c, 0x0b, 0xd5, 0x55, 0x13, 0xb0, 0xf2, 0xcc, 0x30, - 0x76, 0x6f, 0x8e, 0x09, 0x9d, 0x44, 0x39, 0x30, 0x7f, 0x0d, 0xca, 0x62, 0x65, 0xc6, 0x51, 0x7f, - 0xa8, 0xda, 0x2d, 0xce, 0x5b, 0xea, 0x6a, 0x6a, 0x78, 0x6e, 0x60, 0x21, 0xd4, 0xfc, 0xae, 0x01, - 0x67, 0xc5, 0xe3, 0x66, 0x16, 0x0d, 0x99, 0x0e, 0x89, 0xa1, 0x82, 0x38, 0x1f, 0x5f, 0x27, 0xef, - 0xc8, 0xa4, 0x53, 0xba, 0x80, 0x4c, 0x7f, 0xa3, 0x36, 0x2e, 0x26, 0xe5, 0x30, 0xa6, 0x9d, 0x92, - 0xc9, 0xa6, 0xde, 0x12, 0xc9, 0xa6, 0x72, 0x87, 0x13, 0xc7, 0xeb, 0xc2, 0xa5, 0x6d, 0x99, 0x64, - 0xea, 0x3b, 0x39, 0x38, 0x95, 0x51, 0xad, 0x8d, 0xd7, 0x9f, 0x50, 0xe1, 0x50, 0xd3, 0x84, 0x83, - 0xcc, 0x46, 0xd8, 0xb7, 0xe3, 0x33, 0x65, 0xc5, 0x1f, 0x19, 0x70, 0x46, 0x9f, 0x3d, 0xc2, 0x16, - 0xdd, 0xb8, 0x41, 0xde, 0x86, 0x91, 0xdb, 0xd4, 0x71, 0xa9, 0x0c, 0x4e, 0x89, 0x33, 0x7b, 0x89, - 0xd3, 0x61, 0x5e, 0xc8, 0xd9, 0xfe, 0x98, 0x2f, 0xe5, 0x13, 0x96, 0x20, 0x21, 0xf3, 0xa2, 0x72, - 0xfc, 0x7a, 0xca, 0x94, 0x37, 0x35, 0x59, 0x9f, 0x3a, 0x44, 0x31, 0xfe, 0x1a, 0x3c, 0x73, 0x08, - 0x09, 0x1b, 0x37, 0x36, 0xf2, 0xea, 0xb8, 0xe1, 0xbe, 0x82, 0x50, 0xf2, 0x1e, 0x4c, 0xae, 0x89, - 0x10, 0x3a, 0x39, 0x1a, 0x4a, 0x62, 0x77, 0x19, 0x5d, 0x67, 0xcb, 0x61, 0x49, 0x23, 0x63, 0x40, - 0x98, 0xfe, 0xf5, 0x47, 0xed, 0x94, 0x77, 0xb5, 0x4e, 0x79, 0x26, 0xbb, 0x53, 0xfa, 0xf7, 0x46, - 0x4f, 0x96, 0x8a, 0x81, 0xba, 0xc1, 0x84, 0x91, 0x79, 0xbf, 0xe5, 0x78, 0x6d, 0x35, 0xff, 0x81, - 0x8b, 0x10, 0x4b, 0x94, 0x98, 0xdf, 0x1e, 0x82, 0xb3, 0x3c, 0xb4, 0x84, 0x06, 0xeb, 0xa1, 0xd7, - 0xde, 0xd6, 0x2e, 0x6a, 0xd0, 0x3d, 0x4d, 0x49, 0x31, 0x2e, 0xdc, 0xd3, 0x18, 0xc4, 0x12, 0x25, - 0xcc, 0x92, 0x60, 0xa2, 0x4f, 0xf1, 0xf4, 0x43, 0x4b, 0x02, 0x13, 0xf4, 0xa0, 0x95, 0x1a, 0x17, - 0x93, 0x2b, 0x42, 0x30, 0x2b, 0x0e, 0xc4, 0x4c, 0x30, 0xa7, 0x1e, 0xd7, 0xe6, 0xc2, 0x39, 0xd6, - 0x54, 0x86, 0xfa, 0x68, 0x2a, 0x77, 0xe1, 0x64, 0xd5, 0xe5, 0x8b, 0xde, 0x69, 0xae, 0x06, 0x5e, - 0xbb, 0xe1, 0x75, 0x9c, 0xa6, 0xd4, 0x74, 0xf9, 0x53, 0xe3, 0x71, 0xb9, 0xdd, 0x89, 0x11, 0xac, - 0x4c, 0x32, 0xd6, 0x8c, 0xf9, 0xe5, 0x3a, 0xcf, 0xbf, 0x32, 0x82, 0x2c, 0xb0, 0x19, 0x6e, 0x3b, - 0xe4, 0x09, 0x58, 0xac, 0xb8, 0x18, 0x75, 0x24, 0x8c, 0x21, 0x58, 0x5b, 0xaa, 0xdf, 0x11, 0x3e, - 0xf9, 0xd2, 0xbf, 0x89, 0x87, 0x1c, 0x44, 0xcd, 0x10, 0x8d, 0x62, 0x0d, 0x2f, 0xa1, 0xab, 0xd7, - 0x6f, 0x33, 0xba, 0x42, 0x0f, 0x5d, 0x18, 0xee, 0xa8, 0x74, 0x1c, 0x8f, 0xd9, 0xdf, 0xdc, 0x43, - 0x04, 0xc7, 0xba, 0x98, 0x68, 0x54, 0x01, 0x42, 0xb9, 0x46, 0xa5, 0xa0, 0x90, 0x77, 0x60, 0x7a, - 0x61, 0x6e, 0x56, 0x3a, 0xdb, 0xcf, 0xfb, 0x8d, 0x6e, 0x8b, 0xb6, 0x23, 0x0c, 0xfe, 0x10, 0xd1, - 0x53, 0xb4, 0x31, 0xcb, 0x8c, 0xbc, 0x2c, 0x34, 0xe1, 0x72, 0xcf, 0x43, 0xd9, 0xe6, 0x7c, 0x97, - 0x86, 0x1b, 0xd7, 0x9f, 0x32, 0x97, 0x7b, 0xa5, 0x6d, 0xb8, 0x90, 0xae, 0x67, 0x2e, 0xba, 0xbf, - 0x87, 0x2e, 0xf7, 0x3d, 0xb8, 0xe4, 0xb3, 0x30, 0x8c, 0x3f, 0xc5, 0x36, 0x36, 0x9d, 0xc1, 0x36, - 0xd9, 0xc2, 0x1a, 0x3c, 0x95, 0x06, 0x12, 0x90, 0xc5, 0x24, 0x1b, 0xfc, 0x31, 0x1c, 0x47, 0x45, - 0x3c, 0xac, 0xfe, 0x0c, 0x88, 0x0b, 0x25, 0xf5, 0x83, 0x6c, 0x8e, 0xdc, 0x76, 0xc2, 0x1d, 0xea, - 0xce, 0xc9, 0x67, 0xff, 0x4a, 0x7c, 0x8e, 0xec, 0x20, 0x14, 0x9f, 0x28, 0xb1, 0x14, 0x14, 0xf2, - 0x02, 0x8c, 0x2c, 0x86, 0xeb, 0xa1, 0xa8, 0x8a, 0x30, 0x2d, 0x3c, 0x34, 0x09, 0x5d, 0x4b, 0x14, - 0xa1, 0x20, 0x94, 0xc9, 0x10, 0x03, 0xa7, 0xb1, 0x4b, 0x83, 0x8d, 0xeb, 0x9f, 0x86, 0x20, 0xd4, - 0xbf, 0x71, 0xc8, 0x98, 0xfc, 0x7e, 0x21, 0xce, 0x04, 0xa3, 0x21, 0x33, 0xc5, 0x2b, 0xb9, 0xee, - 0x36, 0x12, 0xc5, 0x2b, 0xb9, 0xee, 0x56, 0x15, 0xaf, 0x18, 0x35, 0x4e, 0x45, 0x9b, 0x3b, 0x22, - 0x15, 0x6d, 0x9f, 0xec, 0xd7, 0xd2, 0x53, 0xf2, 0x29, 0x7a, 0x08, 0xe0, 0x73, 0x50, 0xaa, 0x46, - 0x91, 0xd3, 0xd8, 0xa1, 0x2e, 0xa6, 0x3c, 0x56, 0x6e, 0xd9, 0x1c, 0x01, 0x57, 0x7d, 0xb0, 0x54, - 0x5c, 0xe5, 0x21, 0x90, 0xd1, 0x01, 0x1e, 0x02, 0xb9, 0x06, 0xa3, 0x8b, 0xed, 0xfb, 0x1e, 0xeb, - 0x93, 0x42, 0x92, 0x8b, 0xc2, 0xe3, 0x20, 0xfd, 0xf5, 0x08, 0x04, 0x91, 0xb7, 0xa0, 0xc0, 0x36, - 0x1d, 0x8c, 0xaa, 0x2e, 0x26, 0xfa, 0xb1, 0x78, 0x06, 0x79, 0x47, 0x14, 0xa9, 0x87, 0xb8, 0x12, - 0x9d, 0xbc, 0x09, 0xa3, 0xd2, 0x24, 0x85, 0x44, 0x27, 0x16, 0x94, 0x0e, 0x2f, 0xd1, 0xd2, 0x5f, - 0x08, 0x93, 0xf4, 0x1d, 0x3d, 0x28, 0x63, 0x4c, 0x09, 0x03, 0x57, 0x82, 0x32, 0xb4, 0x30, 0x70, - 0x25, 0x3c, 0x23, 0xb6, 0x30, 0x4a, 0x47, 0x5a, 0x18, 0x1b, 0x50, 0x5a, 0x75, 0x82, 0xc8, 0x63, - 0xdb, 0x51, 0x3b, 0xe2, 0x59, 0xbc, 0x12, 0x03, 0x58, 0x29, 0xaa, 0x3d, 0x27, 0xc3, 0xa1, 0x3b, - 0x0a, 0xbe, 0x1e, 0xc2, 0x9a, 0xc0, 0xc9, 0x72, 0x86, 0xdb, 0x9e, 0xc8, 0xaa, 0x88, 0xf7, 0x6a, - 0xca, 0x69, 0x90, 0x68, 0x91, 0x7a, 0x3e, 0xdd, 0xeb, 0xf1, 0x77, 0x83, 0x8f, 0x01, 0x1a, 0x62, - 0x93, 0xc8, 0x06, 0x93, 0x99, 0xe0, 0xfb, 0x9f, 0x29, 0x6b, 0x2c, 0x46, 0x24, 0x5f, 0x81, 0x12, - 0xfb, 0x1f, 0x53, 0x1a, 0x79, 0x94, 0x67, 0xe9, 0x4a, 0xdc, 0xb8, 0xf4, 0x05, 0xcd, 0xf3, 0x1e, - 0xd5, 0x69, 0xc4, 0x17, 0x30, 0x32, 0x4e, 0x9f, 0x66, 0x68, 0xdc, 0xcc, 0x9f, 0x19, 0x70, 0xa6, - 0x0f, 0x8f, 0x81, 0x9f, 0x00, 0xba, 0x96, 0x6c, 0x48, 0x8a, 0xc1, 0x2b, 0x36, 0x24, 0x75, 0x62, - 0xc8, 0xad, 0x29, 0x3b, 0xbf, 0x56, 0xfe, 0x53, 0xcb, 0xaf, 0x65, 0xee, 0x1b, 0x30, 0xa6, 0x8c, - 0xec, 0x63, 0xcc, 0xec, 0x7f, 0x51, 0x3c, 0x16, 0x9b, 0x4f, 0xf0, 0x52, 0x8f, 0x0a, 0xf3, 0x67, - 0x63, 0x3f, 0x02, 0x58, 0x72, 0xc2, 0xa8, 0xda, 0x88, 0xbc, 0xfb, 0x74, 0x00, 0x31, 0x96, 0xe4, - 0x05, 0x70, 0x30, 0x33, 0x29, 0x23, 0xeb, 0xc9, 0x0b, 0x10, 0x33, 0xbc, 0xf2, 0x3e, 0x4c, 0xca, - 0xdc, 0x74, 0x6b, 0x4b, 0x75, 0xfc, 0xe2, 0x24, 0x8c, 0x6d, 0x2c, 0x58, 0x8b, 0x37, 0xbf, 0x68, - 0xdf, 0x5c, 0x5f, 0x5a, 0x2a, 0x9f, 0x20, 0xe3, 0x50, 0x14, 0x80, 0xb9, 0x6a, 0xd9, 0x20, 0x25, - 0x28, 0x2c, 0x2e, 0xd7, 0x17, 0xe6, 0xd6, 0xad, 0x85, 0x72, 0xee, 0xca, 0x4b, 0x30, 0x91, 0x5c, - 0x42, 0x60, 0xa0, 0xe2, 0x28, 0xe4, 0xad, 0xea, 0x66, 0xf9, 0x04, 0x01, 0x18, 0x59, 0xbd, 0x33, - 0x57, 0xbf, 0x7e, 0xbd, 0x6c, 0x5c, 0xb9, 0xac, 0x3f, 0x56, 0xcc, 0x98, 0xc8, 0x47, 0x03, 0xcb, - 0x27, 0xc8, 0x58, 0x7c, 0xe6, 0x56, 0x36, 0xae, 0xbc, 0x96, 0xf1, 0x48, 0x33, 0xc3, 0xaf, 0xd3, - 0x8e, 0x13, 0x38, 0x11, 0xe5, 0x35, 0xba, 0xdb, 0x6d, 0x46, 0x5e, 0xa7, 0x49, 0x1f, 0x96, 0x8d, - 0x2b, 0x6f, 0xf5, 0xbc, 0xb5, 0x4c, 0x4e, 0xc1, 0xd4, 0xfa, 0x72, 0xf5, 0x6e, 0x6d, 0xf1, 0xd6, - 0xfa, 0xca, 0x7a, 0xdd, 0xbe, 0x5b, 0x5d, 0x9b, 0xbb, 0x5d, 0x3e, 0xc1, 0xda, 0x76, 0x77, 0xa5, - 0xbe, 0x66, 0x5b, 0x0b, 0x73, 0x0b, 0xcb, 0x6b, 0x65, 0xe3, 0x8a, 0x0f, 0x13, 0xfa, 0xc3, 0x71, - 0xe4, 0x02, 0x9c, 0x5f, 0xaf, 0x2f, 0x58, 0xf6, 0xda, 0xca, 0x9d, 0x85, 0x65, 0x7b, 0xbd, 0x5e, - 0xbd, 0xb5, 0x60, 0xaf, 0x2f, 0xd7, 0x57, 0x17, 0xe6, 0x16, 0x6f, 0x2e, 0x2e, 0xcc, 0x97, 0x4f, - 0x90, 0x0a, 0x3c, 0xa3, 0x60, 0x58, 0x0b, 0x73, 0x2b, 0x1b, 0x0b, 0x96, 0xbd, 0x5a, 0xad, 0xd7, - 0x37, 0x57, 0xac, 0xf9, 0xb2, 0x41, 0xce, 0xc1, 0xe9, 0x0c, 0x84, 0xbb, 0x37, 0xab, 0xe5, 0xdc, - 0x95, 0xf7, 0x99, 0x0e, 0x91, 0xbc, 0xde, 0x40, 0x0a, 0x30, 0xb4, 0xbc, 0xb2, 0xbc, 0xc0, 0x3b, - 0x61, 0x75, 0x61, 0x79, 0x7e, 0x71, 0xf9, 0x16, 0xef, 0xe4, 0xea, 0xea, 0xaa, 0xb5, 0xb2, 0xb1, - 0x30, 0x5f, 0xce, 0xb1, 0x9e, 0x9c, 0x5f, 0x58, 0x66, 0x5f, 0xcf, 0x5f, 0xf9, 0x0a, 0x94, 0xd4, - 0x0d, 0x90, 0x9c, 0x81, 0x69, 0xf5, 0xf7, 0x2a, 0x6d, 0xbb, 0x5e, 0x7b, 0xbb, 0x7c, 0x22, 0x5d, - 0x60, 0x75, 0xdb, 0x6d, 0x56, 0x80, 0xd5, 0x53, 0x0b, 0xd6, 0x68, 0xd0, 0xf2, 0xda, 0x6c, 0x6f, - 0x2b, 0xe7, 0x6a, 0xe5, 0x1f, 0xfd, 0xe4, 0xb9, 0x13, 0x3f, 0xfa, 0xe9, 0x73, 0xc6, 0x8f, 0x7f, - 0xfa, 0x9c, 0xf1, 0x3f, 0x7e, 0xfa, 0x9c, 0xb1, 0x35, 0x82, 0x93, 0xec, 0xc6, 0xff, 0x0f, 0x00, - 0x00, 0xff, 0xff, 0xd6, 0xa9, 0x3e, 0x9b, 0xb1, 0xb3, 0x00, 0x00, + 0x77, 0x66, 0xb7, 0xbb, 0x45, 0x6d, 0x21, 0x37, 0xd5, 0xbe, 0xcb, 0x60, 0x48, 0x6e, 0x40, 0x61, + 0x95, 0xd2, 0x00, 0xe7, 0xc1, 0x58, 0xac, 0x41, 0x4d, 0x77, 0x28, 0x0d, 0xd2, 0xb3, 0x20, 0x46, + 0x3c, 0x57, 0x87, 0x09, 0x7d, 0xd0, 0x1e, 0xc3, 0x0e, 0xff, 0xc1, 0x50, 0xa1, 0x50, 0x2e, 0x9a, + 0x5f, 0xcf, 0xc1, 0x58, 0xb5, 0xd3, 0x79, 0xc2, 0x2d, 0xfb, 0x5f, 0xd5, 0x44, 0xc1, 0xe9, 0x64, + 0xc8, 0x8f, 0x61, 0xd4, 0xff, 0x8d, 0x01, 0x93, 0x29, 0x0a, 0xb5, 0xf6, 0xc6, 0x80, 0x96, 0x6e, + 0x6e, 0x40, 0x4b, 0x37, 0xdf, 0xdf, 0xd2, 0x55, 0x17, 0xda, 0xd0, 0xa3, 0x2c, 0xb4, 0x97, 0x21, + 0x5f, 0xed, 0x74, 0x44, 0xaf, 0x94, 0x92, 0x5e, 0xd9, 0xb8, 0xc1, 0xb5, 0x7a, 0xa7, 0xd3, 0xb1, + 0x18, 0x86, 0xf9, 0x2a, 0x14, 0x11, 0x8c, 0x62, 0xf0, 0x82, 0x58, 0x3f, 0x5c, 0x06, 0x6a, 0x64, + 0x7c, 0xad, 0x98, 0xff, 0xc7, 0x80, 0x61, 0xfc, 0xfd, 0x84, 0x4e, 0x97, 0x59, 0x6d, 0xba, 0x94, + 0x95, 0xe9, 0x32, 0xc8, 0x44, 0xf9, 0xf3, 0x3c, 0xf6, 0x96, 0x98, 0x22, 0xc2, 0x56, 0x32, 0x32, + 0x6c, 0xa5, 0x47, 0x90, 0xfa, 0xbb, 0x69, 0xab, 0x29, 0x8f, 0x83, 0xf1, 0x42, 0xba, 0xaa, 0x8f, + 0xc5, 0x60, 0xba, 0x0d, 0x64, 0xb1, 0x1d, 0xd2, 0x46, 0x37, 0xa0, 0xf5, 0x5d, 0xaf, 0xb3, 0x41, + 0x03, 0xef, 0xde, 0x9e, 0x50, 0xd1, 0x50, 0x30, 0x7b, 0xa2, 0xd4, 0x0e, 0x77, 0xbd, 0x8e, 0x7d, + 0x1f, 0xcb, 0xad, 0x0c, 0x1a, 0xf2, 0x3e, 0x8c, 0x5a, 0xf4, 0x41, 0xe0, 0x45, 0x54, 0xf4, 0xed, + 0x44, 0xac, 0x90, 0x23, 0x94, 0x2b, 0x34, 0x01, 0xff, 0xa1, 0x8e, 0xbf, 0x28, 0xff, 0xf4, 0xec, + 0x99, 0xef, 0x0c, 0xe3, 0x5a, 0x38, 0xe2, 0x06, 0xea, 0x10, 0xc3, 0x57, 0x1f, 0xcc, 0xfc, 0x71, + 0x06, 0x73, 0x03, 0x4a, 0xcc, 0x86, 0x4a, 0x59, 0xc0, 0xe7, 0x93, 0xb1, 0xbc, 0xaa, 0x16, 0x1f, + 0x76, 0xf9, 0xa4, 0xf1, 0x21, 0x76, 0x7a, 0x92, 0xf0, 0x4b, 0xad, 0x67, 0x15, 0xc6, 0x19, 0xd3, + 0x23, 0x16, 0x1d, 0x0d, 0xde, 0x59, 0xc7, 0x9e, 0x18, 0x23, 0x8f, 0x36, 0x31, 0x46, 0x3f, 0xc9, + 0xc4, 0x48, 0x5f, 0xfb, 0x15, 0x8e, 0x73, 0xed, 0x77, 0xee, 0x7d, 0x98, 0xea, 0xe9, 0xe1, 0xe3, + 0x5c, 0x9d, 0x7d, 0x7a, 0xd3, 0xf2, 0x37, 0xe3, 0x7e, 0x21, 0xb3, 0x68, 0x17, 0x7a, 0x01, 0x6d, + 0x44, 0x28, 0x7a, 0x85, 0xb4, 0x0c, 0x04, 0x2c, 0x65, 0xb8, 0x22, 0x8c, 0xbc, 0x07, 0xa3, 0xfc, + 0xea, 0x21, 0x9c, 0xc9, 0xe1, 0xd8, 0x8f, 0x8b, 0x2f, 0x72, 0xa8, 0xb8, 0xff, 0xe5, 0x18, 0x6a, + 0xaf, 0x0a, 0x22, 0xf3, 0x16, 0x8c, 0x88, 0xab, 0x8b, 0xc3, 0xd7, 0x45, 0x05, 0x86, 0x37, 0x92, + 0x9e, 0xc1, 0xe3, 0x66, 0xde, 0x08, 0x8b, 0xc3, 0xcd, 0xdf, 0x33, 0x60, 0x42, 0x6f, 0x25, 0xb9, + 0x0a, 0x23, 0xe2, 0x6e, 0xcd, 0xc0, 0xbb, 0x35, 0xd6, 0x9a, 0x11, 0x7e, 0xab, 0xa6, 0xdd, 0xa5, + 0x09, 0x2c, 0x26, 0xfa, 0x05, 0x07, 0x6c, 0x8b, 0x10, 0xfd, 0x62, 0x92, 0x5a, 0xb2, 0x8c, 0x98, + 0x30, 0x62, 0xd1, 0xb0, 0xdb, 0x94, 0x07, 0x50, 0xc0, 0xd8, 0x06, 0x08, 0xb1, 0x44, 0x89, 0xb9, + 0x6f, 0x00, 0xd4, 0xeb, 0xb7, 0xef, 0xd0, 0xbd, 0x55, 0xc7, 0x0b, 0xd0, 0x7e, 0xc4, 0xd5, 0x78, + 0x47, 0x8c, 0x56, 0x49, 0xd8, 0x8f, 0x7c, 0xe5, 0xee, 0xd2, 0x3d, 0xcd, 0x7e, 0x94, 0xa8, 0xb8, + 0xe4, 0x03, 0xef, 0xbe, 0x13, 0x51, 0x46, 0x98, 0x43, 0x42, 0xbe, 0xe4, 0x39, 0x34, 0x45, 0xa9, + 0x20, 0x93, 0x8f, 0x60, 0x22, 0xf9, 0x85, 0x17, 0xfa, 0x79, 0x34, 0x04, 0xe5, 0x8c, 0xd0, 0x0b, + 0x6b, 0xcf, 0x1d, 0xec, 0x57, 0xce, 0x29, 0x5c, 0x6d, 0x86, 0xa5, 0xb0, 0x4e, 0x31, 0x33, 0xbf, + 0x6f, 0x00, 0xac, 0x2d, 0xd5, 0x65, 0x03, 0x2f, 0xc2, 0x50, 0x7c, 0x2c, 0x53, 0xe2, 0x46, 0x6a, + 0xca, 0x62, 0xc4, 0x72, 0xf2, 0x02, 0xe4, 0x93, 0x96, 0x4c, 0x1d, 0xec, 0x57, 0xc6, 0xf5, 0x16, + 0xb0, 0x52, 0x72, 0x0b, 0x46, 0x07, 0xaa, 0x33, 0xce, 0xce, 0x8c, 0xba, 0x4a, 0x6a, 0x1c, 0x85, + 0x0f, 0x36, 0xd7, 0x9e, 0xde, 0x51, 0xf8, 0x66, 0x0e, 0x26, 0x59, 0xbf, 0x56, 0xbb, 0xd1, 0x8e, + 0x1f, 0x78, 0xd1, 0xde, 0x13, 0x6b, 0x4a, 0xbf, 0xa3, 0x29, 0x44, 0xe7, 0xa4, 0xd8, 0x52, 0xdb, + 0x36, 0x90, 0x45, 0xfd, 0x93, 0x51, 0x98, 0xce, 0xa0, 0x22, 0xaf, 0x08, 0xaf, 0x96, 0xe4, 0xf0, + 0x06, 0xbd, 0x56, 0x7e, 0xbe, 0x5f, 0x29, 0x49, 0xf4, 0xb5, 0xc4, 0x8b, 0x65, 0x16, 0xc6, 0x84, + 0xbd, 0xb4, 0x9c, 0x68, 0xd4, 0xe8, 0x0e, 0x21, 0x0f, 0xa7, 0x50, 0x34, 0xa9, 0x48, 0xa4, 0x0a, + 0xa5, 0xb9, 0x1d, 0xda, 0xd8, 0xf5, 0xda, 0xdb, 0x77, 0xe8, 0x1e, 0xd7, 0x97, 0x4a, 0xb5, 0x67, + 0x99, 0x79, 0xd6, 0x10, 0x70, 0x36, 0xa4, 0xba, 0xe5, 0xa7, 0x91, 0x90, 0xf7, 0x60, 0xac, 0xee, + 0x6d, 0xb7, 0x25, 0x87, 0x21, 0xe4, 0x70, 0xfe, 0x60, 0xbf, 0x72, 0x3a, 0xe4, 0xe0, 0x5e, 0x06, + 0x2a, 0x01, 0xb9, 0x0c, 0xc3, 0x96, 0xdf, 0xa4, 0x7c, 0x1b, 0x16, 0x7e, 0x12, 0x01, 0x03, 0xa8, + 0x67, 0xbe, 0x88, 0x41, 0x6e, 0xc3, 0x28, 0xfb, 0xe7, 0xae, 0xd3, 0x99, 0x19, 0x41, 0xb9, 0x4d, + 0x62, 0x05, 0x1f, 0xa1, 0x1d, 0xaf, 0xbd, 0xad, 0xea, 0xf8, 0x4d, 0x6a, 0xb7, 0x9c, 0x8e, 0xb6, + 0x2f, 0x72, 0x44, 0xb2, 0x01, 0x63, 0x89, 0x20, 0x08, 0x67, 0x46, 0xb5, 0x3b, 0x96, 0xa4, 0xa4, + 0xf6, 0xbc, 0x60, 0x76, 0x26, 0x6a, 0x86, 0x38, 0xb7, 0x3b, 0x0c, 0x5f, 0x6f, 0x8c, 0xc2, 0x48, + 0xb3, 0x41, 0x0a, 0xfd, 0x6d, 0x10, 0xe3, 0x48, 0x1b, 0xc4, 0x05, 0x10, 0x9d, 0x54, 0x6d, 0x6e, + 0x0b, 0xb7, 0xa6, 0xcb, 0xfd, 0x27, 0xd8, 0xd5, 0x04, 0x19, 0xd7, 0x24, 0x3f, 0xce, 0x12, 0xfd, + 0xef, 0x34, 0xb7, 0xb5, 0xe3, 0xac, 0x18, 0x95, 0x75, 0x43, 0x22, 0x6a, 0xa4, 0xd9, 0x2e, 0xbb, + 0x21, 0x29, 0x49, 0xba, 0xe1, 0xe3, 0x07, 0x51, 0xbf, 0x6e, 0x50, 0x18, 0x91, 0x65, 0x80, 0x6a, + 0x23, 0xf2, 0xee, 0x53, 0x9c, 0x12, 0x63, 0x5a, 0x47, 0xcc, 0x55, 0xef, 0xd0, 0xbd, 0x3a, 0x8d, + 0x62, 0x8f, 0x81, 0x53, 0x0e, 0xa2, 0xa6, 0xa6, 0x89, 0xa5, 0x70, 0x20, 0x1d, 0x38, 0x55, 0x75, + 0x5d, 0x8f, 0xbb, 0xba, 0xad, 0x05, 0x6c, 0xfe, 0xba, 0xc8, 0xba, 0x94, 0xcd, 0xfa, 0xb2, 0x60, + 0xfd, 0xbc, 0x13, 0x53, 0xd9, 0x11, 0x27, 0x4b, 0x7f, 0x26, 0x9b, 0xb1, 0xb9, 0x02, 0x13, 0x7a, + 0x97, 0xea, 0x4e, 0x5e, 0x25, 0x28, 0x58, 0xf5, 0xaa, 0x5d, 0xbf, 0x5d, 0xbd, 0x5e, 0x36, 0x48, + 0x19, 0x4a, 0xe2, 0xd7, 0xac, 0x3d, 0xfb, 0xc6, 0x9b, 0xe5, 0x9c, 0x06, 0x79, 0xe3, 0xfa, 0x6c, + 0x39, 0x6f, 0xfe, 0xb9, 0x01, 0x05, 0x59, 0x3f, 0xf2, 0x26, 0xe4, 0xeb, 0xf5, 0xdb, 0xa9, 0xab, + 0xbd, 0x64, 0xeb, 0xe5, 0x9b, 0x4c, 0x18, 0xee, 0xa8, 0x9b, 0x4c, 0xbd, 0x7e, 0x9b, 0xd1, 0xad, + 0x2d, 0xd5, 0x85, 0xd2, 0x92, 0x31, 0x5d, 0xa7, 0xb2, 0xef, 0x3b, 0x18, 0xdd, 0x07, 0x9b, 0x6b, + 0xc2, 0x1a, 0xca, 0x18, 0x5f, 0xa4, 0xfb, 0xf8, 0x81, 0xba, 0xf5, 0x31, 0x02, 0xd3, 0x82, 0x31, + 0x65, 0x69, 0x71, 0x25, 0xa2, 0xe5, 0xc7, 0xee, 0x4f, 0x42, 0x89, 0x60, 0x10, 0x4b, 0x94, 0x30, + 0x9d, 0x67, 0xc9, 0x6f, 0x38, 0x4d, 0xa1, 0x8d, 0xa0, 0xce, 0xd3, 0x64, 0x00, 0x8b, 0xc3, 0xcd, + 0xbf, 0x34, 0xa0, 0xbc, 0x1a, 0xf8, 0xf7, 0x3d, 0x26, 0x81, 0xd7, 0xfc, 0x5d, 0xda, 0xde, 0xb8, + 0x4e, 0x5e, 0x95, 0x42, 0x80, 0xab, 0x70, 0x67, 0x18, 0x15, 0x0a, 0x81, 0x9f, 0xef, 0x57, 0xa0, + 0xbe, 0x17, 0x46, 0xb4, 0xc5, 0xca, 0xa5, 0x20, 0x50, 0xbc, 0xc8, 0x72, 0x83, 0x7b, 0xa6, 0x1c, + 0xe1, 0x45, 0x56, 0x81, 0x61, 0xac, 0x8e, 0xe2, 0x1c, 0x30, 0x1c, 0x31, 0x80, 0xc5, 0xe1, 0x8a, + 0xc0, 0xfe, 0x76, 0xae, 0xa7, 0x0d, 0xb3, 0x4f, 0x95, 0x77, 0x87, 0xde, 0xb8, 0x81, 0x36, 0xb1, + 0x2f, 0xc0, 0xc9, 0x74, 0x97, 0xe0, 0xb9, 0x48, 0x15, 0x26, 0x75, 0xb8, 0x3c, 0x22, 0x39, 0x93, + 0xf9, 0xad, 0x8d, 0x59, 0x2b, 0x8d, 0x6f, 0xfe, 0xd4, 0x80, 0x22, 0xfe, 0x6b, 0x75, 0x9b, 0x94, + 0x69, 0x36, 0xd5, 0xcd, 0xba, 0xb8, 0x19, 0x52, 0x6f, 0x6f, 0x9c, 0x07, 0xa1, 0x2d, 0xae, 0x91, + 0x34, 0x39, 0x12, 0x23, 0x0b, 0x52, 0x7e, 0x0f, 0x16, 0x8a, 0x19, 0x1a, 0x93, 0xf2, 0x0b, 0xb3, + 0x30, 0x45, 0x2a, 0x90, 0xd9, 0xf8, 0xb1, 0x5f, 0x7e, 0x53, 0x9e, 0x27, 0xe3, 0xf8, 0x21, 0x9d, + 0xaf, 0xb9, 0x8b, 0x49, 0x34, 0xf2, 0x2a, 0x8c, 0xb0, 0x4f, 0x5b, 0xcb, 0xe2, 0x9a, 0x0b, 0xad, + 0x0a, 0xac, 0x63, 0xa0, 0x5d, 0xcb, 0x71, 0x24, 0xf3, 0x77, 0x72, 0xe9, 0x0e, 0x14, 0x5a, 0xc0, + 0x31, 0xd7, 0xc6, 0xdb, 0x30, 0x5c, 0x6d, 0x36, 0xfd, 0x07, 0x42, 0x4a, 0xc8, 0x63, 0x9a, 0xb8, + 0xff, 0xf8, 0x0e, 0xeb, 0x30, 0x14, 0xed, 0x56, 0x95, 0x01, 0xc8, 0x1c, 0x14, 0xab, 0x9b, 0xf5, + 0xc5, 0xc5, 0xf9, 0xb5, 0xb5, 0x25, 0xe1, 0xbc, 0xfb, 0x92, 0xec, 0x1f, 0xcf, 0x73, 0xed, 0x28, + 0x6a, 0xf6, 0xf1, 0xed, 0x4b, 0xe8, 0xc8, 0xbb, 0x00, 0x1f, 0xf8, 0x5e, 0xfb, 0x2e, 0x8d, 0x76, + 0x7c, 0x57, 0x34, 0x9e, 0xa9, 0x14, 0x63, 0x1f, 0xfb, 0x5e, 0xdb, 0x6e, 0x21, 0x98, 0xd5, 0x3d, + 0x41, 0xb2, 0x94, 0xff, 0xcd, 0xdf, 0xcf, 0xc1, 0x04, 0xb7, 0x3b, 0xf9, 0xf0, 0x3f, 0xb1, 0x4b, + 0xeb, 0x6d, 0x6d, 0x69, 0x9d, 0x95, 0x62, 0x5e, 0x69, 0xda, 0x40, 0x0b, 0x6b, 0x07, 0x48, 0x2f, + 0x0d, 0xb1, 0xe4, 0xe9, 0xc8, 0x20, 0x6b, 0xea, 0x7a, 0x72, 0x25, 0x1b, 0x22, 0x91, 0x8d, 0x82, + 0x2d, 0xb4, 0x34, 0x1e, 0xe6, 0xef, 0xe5, 0x60, 0x5c, 0xd1, 0x0e, 0x9f, 0xd8, 0x8e, 0xff, 0xac, + 0xd6, 0xf1, 0xf2, 0x1a, 0x42, 0x69, 0xd9, 0x40, 0xfd, 0xde, 0x85, 0xa9, 0x1e, 0x92, 0xb4, 0x92, + 0x6d, 0x0c, 0xa2, 0x64, 0xbf, 0xd2, 0x7b, 0x67, 0xcc, 0xdd, 0x76, 0xe3, 0x3b, 0x63, 0xf5, 0x92, + 0xfa, 0x9b, 0x39, 0x38, 0x29, 0x7e, 0x55, 0xbb, 0xae, 0x17, 0xcd, 0xf9, 0xed, 0x7b, 0xde, 0xf6, + 0x13, 0x3b, 0x16, 0x55, 0x6d, 0x2c, 0x2a, 0xfa, 0x58, 0x28, 0x0d, 0xec, 0x3f, 0x24, 0xe6, 0xbf, + 0x2d, 0xc0, 0x4c, 0x3f, 0x02, 0x66, 0xc4, 0x2b, 0x36, 0x12, 0x1a, 0xf1, 0x29, 0xfb, 0x93, 0x5b, + 0x47, 0x89, 0x8f, 0x44, 0x6e, 0x00, 0x1f, 0x89, 0x25, 0x28, 0xe3, 0xa7, 0xea, 0x34, 0x64, 0x9d, + 0x10, 0x26, 0x3e, 0x83, 0x17, 0x0e, 0xf6, 0x2b, 0xe7, 0x1d, 0x56, 0x66, 0x87, 0xa2, 0xd0, 0xee, + 0x06, 0x9e, 0xc2, 0xa3, 0x87, 0x92, 0x7c, 0xdf, 0x80, 0x09, 0x04, 0x2e, 0xdc, 0xa7, 0xed, 0x08, + 0x99, 0x0d, 0x89, 0x2b, 0x97, 0x38, 0x34, 0xa3, 0x1e, 0x05, 0x5e, 0x7b, 0x1b, 0x8f, 0x85, 0xc2, + 0xda, 0x16, 0xeb, 0x85, 0xbf, 0xda, 0xaf, 0xbc, 0xf3, 0x49, 0xc2, 0x3d, 0x04, 0xab, 0x90, 0x99, + 0xe5, 0xbc, 0xa2, 0x14, 0x3f, 0x9b, 0xaa, 0x66, 0xaa, 0x46, 0xe4, 0x8b, 0x70, 0x66, 0xa1, 0xed, + 0x6c, 0x35, 0xe9, 0x9c, 0xdf, 0x8e, 0xbc, 0x76, 0xd7, 0xef, 0x86, 0x35, 0xa7, 0xb1, 0xdb, 0xed, + 0x84, 0xe2, 0xe8, 0x12, 0x5b, 0xde, 0x88, 0x0b, 0xed, 0x2d, 0x5e, 0xaa, 0xb0, 0xec, 0xc7, 0x80, + 0xdc, 0x86, 0x29, 0x5e, 0x54, 0xed, 0x46, 0x7e, 0xbd, 0xe1, 0x34, 0xbd, 0xf6, 0x36, 0x9e, 0x68, + 0x16, 0x6a, 0xe7, 0x98, 0xa5, 0xe8, 0x74, 0x23, 0xdf, 0x0e, 0x39, 0x5c, 0xe1, 0xd7, 0x4b, 0x44, + 0x16, 0x61, 0xd2, 0xa2, 0x8e, 0x7b, 0xd7, 0x79, 0x38, 0xe7, 0x74, 0x9c, 0x86, 0x17, 0xed, 0xa1, + 0x9d, 0x95, 0xaf, 0x55, 0x0e, 0xf6, 0x2b, 0xcf, 0x04, 0xd4, 0x71, 0xed, 0x96, 0xf3, 0xd0, 0x6e, + 0x88, 0x42, 0x85, 0x59, 0x9a, 0x2e, 0x66, 0xe5, 0xb5, 0x63, 0x56, 0xc5, 0x34, 0x2b, 0xaf, 0xdd, + 0x9f, 0x55, 0x42, 0x27, 0x59, 0xad, 0x39, 0xc1, 0x36, 0x8d, 0xf8, 0x91, 0x1f, 0x5c, 0x30, 0x2e, + 0x19, 0x0a, 0xab, 0x08, 0xcb, 0x6c, 0x3c, 0xfe, 0x4b, 0xb3, 0x52, 0xe8, 0xd8, 0xcc, 0xdb, 0x0c, + 0xbc, 0x88, 0xaa, 0x2d, 0x1c, 0xc3, 0x6a, 0x61, 0xff, 0xe3, 0xa1, 0x67, 0xbf, 0x26, 0xf6, 0x50, + 0x26, 0xdc, 0x94, 0x46, 0x96, 0x7a, 0xb8, 0x65, 0xb7, 0xb2, 0x87, 0x32, 0xe6, 0xa6, 0xb6, 0x73, + 0x1c, 0xdb, 0xa9, 0x70, 0xeb, 0xd3, 0xd0, 0x1e, 0x4a, 0xb2, 0xcc, 0x3a, 0x2d, 0xa2, 0x6d, 0x36, + 0xa3, 0xc5, 0x91, 0xe7, 0x04, 0x56, 0xed, 0x45, 0x61, 0x21, 0x97, 0x03, 0x59, 0x6c, 0x67, 0x1c, + 0x80, 0xa6, 0x89, 0x3f, 0x18, 0x2a, 0x0c, 0x97, 0x47, 0xac, 0x32, 0x9f, 0xf2, 0x11, 0x9b, 0x38, + 0x28, 0x8b, 0xcd, 0x3f, 0xca, 0xc1, 0x59, 0x29, 0x8e, 0x69, 0xf4, 0xc0, 0x0f, 0x76, 0xbd, 0xf6, + 0xf6, 0x13, 0x2e, 0x55, 0x6f, 0x6a, 0x52, 0xf5, 0xc5, 0xd4, 0x0e, 0x97, 0x6a, 0xe5, 0x21, 0xa2, + 0xf5, 0x5f, 0x8e, 0xc0, 0xb3, 0x87, 0x52, 0x91, 0x0f, 0xd9, 0x2e, 0xe8, 0xd1, 0x76, 0xb4, 0xe8, + 0x36, 0x29, 0x33, 0xaa, 0xfc, 0x6e, 0x24, 0x8e, 0xa6, 0x5f, 0x38, 0xd8, 0xaf, 0x4c, 0xf3, 0x88, + 0x05, 0xdb, 0x73, 0x9b, 0xd4, 0x8e, 0x78, 0xb1, 0x36, 0x4c, 0xbd, 0xd4, 0x8c, 0x65, 0x1c, 0x3f, + 0xb5, 0xd8, 0x8e, 0x68, 0x70, 0xdf, 0xe1, 0x8e, 0xdb, 0x82, 0xe5, 0x2e, 0xa5, 0x1d, 0xdb, 0x61, + 0xa5, 0xb6, 0x27, 0x8a, 0x75, 0x96, 0x3d, 0xd4, 0xe4, 0xa6, 0xc2, 0x72, 0x8e, 0xa9, 0xfa, 0x77, + 0x9d, 0x87, 0x42, 0x7f, 0xc5, 0xd3, 0x52, 0x85, 0x25, 0x77, 0x33, 0x6b, 0x39, 0x0f, 0xad, 0x5e, + 0x12, 0xf2, 0x11, 0x9c, 0x12, 0x82, 0x9b, 0x09, 0xb1, 0xc0, 0x6f, 0xca, 0x16, 0x0f, 0x21, 0xaf, + 0x97, 0x0f, 0xf6, 0x2b, 0x67, 0x84, 0xd8, 0xb7, 0x1b, 0x1c, 0x23, 0xb3, 0xd5, 0xd9, 0x5c, 0xc8, + 0x1a, 0xdb, 0xc8, 0x52, 0xdd, 0x71, 0x97, 0x86, 0xa1, 0xb3, 0xcd, 0x6f, 0xfe, 0x84, 0x87, 0x96, + 0xda, 0x99, 0x76, 0x8b, 0x97, 0x5b, 0x7d, 0x29, 0xc9, 0x6d, 0x98, 0xd8, 0xa4, 0x5b, 0xea, 0xf8, + 0x8c, 0xc4, 0x4b, 0xbc, 0xfc, 0x80, 0x6e, 0xf5, 0x1f, 0x9c, 0x14, 0x1d, 0xf1, 0x60, 0x6a, 0x35, + 0xf0, 0x1f, 0xee, 0x31, 0xc3, 0x8d, 0xb6, 0x69, 0x80, 0xbe, 0x58, 0xa3, 0x78, 0xf8, 0x34, 0x93, + 0x68, 0x96, 0x7a, 0x79, 0xed, 0xf9, 0x83, 0xfd, 0xca, 0xb3, 0x1d, 0x06, 0xb6, 0x9b, 0x02, 0x6e, + 0xa7, 0xc2, 0x97, 0x7a, 0xb9, 0x92, 0x5f, 0x87, 0x49, 0xcb, 0xef, 0x46, 0x5e, 0x7b, 0xbb, 0x1e, + 0x05, 0x4e, 0x44, 0xb7, 0xb9, 0x20, 0x4f, 0x9c, 0xbe, 0x52, 0xa5, 0xfc, 0x98, 0x39, 0xe0, 0x40, + 0x3b, 0x14, 0x50, 0x4d, 0x92, 0xea, 0x04, 0x64, 0x0d, 0x4a, 0xf8, 0xd9, 0x55, 0x4a, 0xd9, 0x7e, + 0x28, 0x0e, 0xd1, 0xa6, 0xd5, 0x76, 0x88, 0x22, 0xee, 0x8f, 0xc2, 0x9b, 0xd0, 0xe1, 0x20, 0xf5, + 0xf6, 0x50, 0x45, 0x35, 0xbf, 0x9b, 0x83, 0x19, 0x31, 0xb8, 0x16, 0x6d, 0xf8, 0x81, 0xfb, 0xe4, + 0x0b, 0x93, 0x05, 0x4d, 0x98, 0xbc, 0x10, 0x3b, 0x3f, 0x65, 0x35, 0xf2, 0x10, 0x59, 0xf2, 0x2f, + 0x0c, 0x38, 0x7f, 0x18, 0x11, 0xeb, 0x9d, 0xd8, 0xb9, 0xaf, 0xd8, 0xe3, 0xc4, 0xd7, 0x81, 0x69, + 0xec, 0x68, 0x3c, 0x5c, 0x0e, 0x6f, 0xfb, 0x61, 0x84, 0x27, 0x7c, 0x39, 0xcd, 0xd9, 0xa0, 0xe6, + 0xfb, 0x4d, 0xdc, 0x3d, 0x6a, 0xaf, 0xb0, 0x4d, 0xe2, 0xaf, 0xf6, 0x2b, 0xc0, 0x40, 0x2b, 0x78, + 0x61, 0xc9, 0x34, 0x09, 0x3e, 0x88, 0x78, 0x76, 0x1d, 0xda, 0xe8, 0x21, 0xb2, 0x4b, 0xf7, 0x42, + 0x2b, 0x8b, 0x35, 0x9e, 0xe2, 0x54, 0xbb, 0xd1, 0xce, 0x6a, 0x40, 0xef, 0xd1, 0x80, 0xb6, 0x1b, + 0xf4, 0x29, 0x3b, 0xc5, 0xd1, 0x1b, 0x37, 0x90, 0xd1, 0xf3, 0xff, 0x46, 0xe0, 0x64, 0x16, 0x19, + 0xeb, 0x17, 0x45, 0xcf, 0x4e, 0x47, 0xd0, 0xfe, 0x5d, 0x03, 0x4a, 0x75, 0xda, 0xf0, 0xdb, 0xee, + 0x4d, 0xa7, 0x11, 0xf9, 0xd2, 0x6d, 0xc3, 0xe6, 0xf2, 0x92, 0xc1, 0xed, 0x7b, 0x58, 0xa0, 0x9d, + 0x1e, 0x7c, 0x6e, 0x30, 0xf5, 0xb6, 0xe1, 0xa3, 0x87, 0x69, 0xc4, 0xe6, 0x64, 0xf2, 0x09, 0xbc, + 0xf9, 0xd0, 0x3e, 0x4a, 0x6a, 0x30, 0x3e, 0xe7, 0xb7, 0xdb, 0x94, 0xfd, 0x50, 0x7c, 0x3b, 0xcf, + 0x1f, 0xec, 0x57, 0x66, 0x1a, 0xb2, 0x20, 0xed, 0xde, 0xa9, 0x93, 0x90, 0x1b, 0x90, 0x5f, 0x9f, + 0xbd, 0x29, 0xc6, 0x40, 0x7a, 0xc1, 0xad, 0xcf, 0xde, 0x44, 0x0b, 0x9a, 0x69, 0x25, 0xe3, 0xdd, + 0xd9, 0x7b, 0xea, 0x39, 0xe9, 0xfa, 0xec, 0x4d, 0xb2, 0x02, 0x53, 0x16, 0xfd, 0x4a, 0xd7, 0x0b, + 0xa8, 0x58, 0x00, 0x77, 0x6f, 0x56, 0x71, 0x2c, 0x0a, 0x5c, 0x3a, 0x06, 0xbc, 0x50, 0x5a, 0x0c, + 0x76, 0xeb, 0x9e, 0x1a, 0x35, 0xd6, 0x4b, 0x4b, 0x7e, 0x0b, 0x4e, 0xcd, 0x7b, 0xa1, 0xa8, 0x33, + 0x3f, 0xa0, 0x74, 0xf1, 0xae, 0x72, 0xa4, 0xcf, 0x72, 0xf8, 0x95, 0xcc, 0xe5, 0xf0, 0xbc, 0x1b, + 0x33, 0xb1, 0xf9, 0xe9, 0xa7, 0x9b, 0x76, 0x8a, 0xcd, 0xfe, 0x0e, 0xf9, 0x18, 0x26, 0xf0, 0x44, + 0x08, 0xcf, 0x6c, 0xd1, 0xf7, 0x78, 0xb4, 0xcf, 0x97, 0x5f, 0xcb, 0xfc, 0xf2, 0x39, 0x3c, 0x60, + 0xb2, 0xf1, 0xe4, 0x17, 0xfd, 0x94, 0x35, 0xcb, 0x43, 0xe3, 0x4c, 0x3e, 0x80, 0x49, 0xb1, 0x95, + 0xad, 0xdc, 0x5b, 0xdb, 0xa1, 0xf3, 0xce, 0x9e, 0x70, 0x54, 0x40, 0xad, 0x52, 0xec, 0x7f, 0xb6, + 0x7f, 0xcf, 0x8e, 0x76, 0xa8, 0xed, 0x3a, 0x9a, 0xd0, 0x4f, 0x11, 0x92, 0xaf, 0xc2, 0xd8, 0x92, + 0x8f, 0x97, 0x53, 0x28, 0x6a, 0x8a, 0xc8, 0xe7, 0x0b, 0x18, 0x35, 0xca, 0xc1, 0xa9, 0xad, 0xe9, + 0xe7, 0xfb, 0x95, 0xb7, 0x8f, 0x3b, 0x0b, 0x95, 0x0f, 0x58, 0xea, 0xd7, 0xc8, 0x1c, 0x14, 0x36, + 0xe9, 0x16, 0x6b, 0x6d, 0x3a, 0xe2, 0x49, 0x82, 0xb9, 0xbc, 0x78, 0x20, 0x7e, 0xa9, 0x37, 0x3f, + 0x12, 0xc3, 0xfc, 0x37, 0x06, 0xce, 0x40, 0x72, 0x05, 0x9d, 0xc5, 0x62, 0xd7, 0x6d, 0xb4, 0x57, + 0x9d, 0x4e, 0x47, 0x77, 0xbe, 0xe6, 0x28, 0xcc, 0xb8, 0xbd, 0xe9, 0x34, 0x68, 0x24, 0xcf, 0x34, + 0x11, 0xf9, 0x1e, 0x42, 0x54, 0xe3, 0x96, 0xe3, 0x90, 0xcf, 0xc3, 0xc9, 0x79, 0x7a, 0xdf, 0x6b, + 0xd0, 0x6a, 0x14, 0xd1, 0x90, 0xb7, 0x76, 0xae, 0xca, 0x2f, 0xff, 0x8a, 0xb5, 0x17, 0x0f, 0xf6, + 0x2b, 0x17, 0x5c, 0x2c, 0xb7, 0x9d, 0x04, 0xc1, 0x6e, 0x38, 0x2a, 0xaf, 0x4c, 0x0e, 0xe6, 0x3f, + 0xc8, 0x25, 0x3d, 0x40, 0x5e, 0x86, 0x21, 0x6b, 0x35, 0xae, 0x3f, 0xbf, 0xd7, 0x4b, 0x55, 0x1f, + 0x11, 0xc8, 0x97, 0xe0, 0x94, 0xc2, 0x07, 0x27, 0x07, 0x75, 0x59, 0x85, 0x78, 0x63, 0x5e, 0xc2, + 0x8b, 0x1c, 0xa5, 0x26, 0x0e, 0xc7, 0x48, 0xd5, 0x28, 0x9b, 0x07, 0x6b, 0xac, 0x52, 0x30, 0x4f, + 0xdb, 0x1e, 0xe7, 0xad, 0x34, 0x56, 0xe5, 0xed, 0x22, 0x42, 0xba, 0xb1, 0x59, 0x1c, 0xc8, 0x2c, + 0x14, 0xe6, 0xbd, 0x90, 0xd9, 0x19, 0xae, 0xf0, 0xfa, 0xe2, 0x41, 0x64, 0x02, 0xa6, 0x05, 0x91, + 0x09, 0x98, 0xf9, 0x37, 0x86, 0x12, 0xac, 0xff, 0x84, 0xee, 0x35, 0x6f, 0x6a, 0x7b, 0xcd, 0x49, + 0x41, 0x1a, 0xb7, 0x8a, 0x95, 0x65, 0xea, 0x07, 0x93, 0x30, 0xae, 0x21, 0xa1, 0x13, 0xed, 0x7a, + 0x48, 0x03, 0x7e, 0x46, 0xf9, 0x74, 0x39, 0xd1, 0xc6, 0xed, 0x1a, 0xc8, 0x37, 0xf2, 0x27, 0x06, + 0x4c, 0xa6, 0x28, 0x58, 0x6f, 0x30, 0x90, 0xda, 0x1b, 0xdd, 0x90, 0x06, 0x16, 0x42, 0xb9, 0xcb, + 0xdd, 0x92, 0xee, 0x72, 0xd7, 0xb4, 0x18, 0x8c, 0x7c, 0x0e, 0x86, 0xd7, 0xd1, 0xa2, 0xd0, 0xbd, + 0x36, 0x62, 0xfe, 0x58, 0xc8, 0xd7, 0x63, 0x97, 0xfd, 0xab, 0x8a, 0x13, 0x2c, 0x23, 0x75, 0x18, + 0x9d, 0x0b, 0x28, 0x86, 0xe5, 0x0f, 0x0d, 0x7e, 0xbd, 0xd6, 0xe0, 0x24, 0xe9, 0xeb, 0x35, 0xc1, + 0xc9, 0xfc, 0xc3, 0x1c, 0x90, 0xa4, 0x8d, 0xb4, 0x11, 0xd0, 0x28, 0x7c, 0x62, 0x07, 0xfd, 0x7d, + 0x6d, 0xd0, 0x9f, 0xed, 0x19, 0x74, 0xde, 0xbc, 0x81, 0xc6, 0xfe, 0x2f, 0x0d, 0x38, 0x9d, 0x4d, + 0x48, 0x5e, 0x80, 0x91, 0x95, 0xb5, 0x55, 0xe9, 0xf8, 0x23, 0x9a, 0xe2, 0x77, 0x50, 0xa7, 0xb5, + 0x44, 0x11, 0x79, 0x15, 0x46, 0x3e, 0xb4, 0xe6, 0xd8, 0x66, 0xa7, 0x04, 0xbf, 0x7c, 0x25, 0xb0, + 0x1b, 0xba, 0x09, 0x26, 0x90, 0xd4, 0xb1, 0xcd, 0x3f, 0xb6, 0xb1, 0xfd, 0x66, 0x0e, 0x26, 0xab, + 0x8d, 0x06, 0x0d, 0x43, 0xa6, 0xca, 0xd0, 0x30, 0x7a, 0x62, 0x07, 0x36, 0xdb, 0xa5, 0x47, 0x6b, + 0xdb, 0x40, 0xa3, 0xfa, 0x43, 0x03, 0x4e, 0x49, 0xaa, 0xfb, 0x1e, 0x7d, 0xb0, 0xb6, 0x13, 0xd0, + 0x70, 0xc7, 0x6f, 0xba, 0x83, 0x86, 0x46, 0xe1, 0x9e, 0xee, 0x35, 0x23, 0x1a, 0xa8, 0x07, 0xd6, + 0xf7, 0x10, 0xa2, 0xed, 0xe9, 0x08, 0x21, 0xd7, 0x60, 0xb4, 0xda, 0xe9, 0x04, 0xfe, 0x7d, 0xbe, + 0xec, 0xc7, 0xc5, 0x6d, 0x23, 0x07, 0x69, 0xb7, 0x93, 0x1c, 0xc4, 0xaa, 0x31, 0x4f, 0xdb, 0xdc, + 0x5f, 0x79, 0x9c, 0x57, 0xc3, 0xa5, 0x6d, 0x55, 0xb7, 0xc2, 0x72, 0xf3, 0x1b, 0x43, 0x50, 0x52, + 0x1b, 0x42, 0x4c, 0x18, 0xe1, 0xce, 0x27, 0xaa, 0x13, 0x80, 0x83, 0x10, 0x4b, 0x94, 0x24, 0x3e, + 0x3d, 0xb9, 0x23, 0x7d, 0x7a, 0x36, 0x61, 0x7c, 0x35, 0xf0, 0x3b, 0x7e, 0x48, 0x5d, 0x9e, 0x59, + 0x25, 0xaf, 0x99, 0xe9, 0xb2, 0xcf, 0x59, 0x11, 0x57, 0xe4, 0x3b, 0x02, 0xdb, 0x4e, 0xe7, 0x5d, + 0xd1, 0xf9, 0xf0, 0x03, 0x7f, 0x27, 0x14, 0xc1, 0x00, 0xf1, 0x81, 0x3f, 0x83, 0xe8, 0x07, 0xfe, + 0x0c, 0xa2, 0x2e, 0x8b, 0xe1, 0xc7, 0xb5, 0x2c, 0xc8, 0x1f, 0x1a, 0x30, 0x56, 0x6d, 0xb7, 0x85, + 0x4f, 0x8f, 0x0c, 0x4f, 0x3e, 0x95, 0x1c, 0xfa, 0x73, 0xa7, 0x4f, 0x7e, 0xe6, 0xff, 0x65, 0x71, + 0xe6, 0xff, 0xf6, 0x27, 0x3a, 0xf3, 0x5f, 0x0b, 0x1c, 0x2f, 0x0a, 0xf1, 0xaa, 0x36, 0xf9, 0xa0, + 0xea, 0xd8, 0xab, 0xd4, 0x83, 0xbc, 0x0d, 0xe5, 0x78, 0x3e, 0x2e, 0xb6, 0x5d, 0xfa, 0x90, 0x72, + 0x17, 0xa8, 0x71, 0x9e, 0xfe, 0x49, 0xbb, 0xcc, 0x48, 0x23, 0x9a, 0xdf, 0x34, 0xe0, 0xb4, 0x3a, + 0x21, 0xea, 0xdd, 0xad, 0x96, 0x87, 0x86, 0x0b, 0xb9, 0x0a, 0x45, 0x31, 0x5e, 0xb1, 0xda, 0xd7, + 0x9b, 0x8e, 0x27, 0x41, 0x21, 0x0b, 0x6c, 0x88, 0x18, 0x0f, 0x61, 0xe5, 0x4f, 0xa7, 0x96, 0x1b, + 0x2b, 0xaa, 0xcd, 0x88, 0xce, 0x2e, 0x07, 0xf8, 0x5b, 0x1f, 0x3b, 0x06, 0x31, 0xdf, 0x83, 0x29, + 0xbd, 0x96, 0x75, 0x8a, 0x51, 0x69, 0xb2, 0x69, 0x46, 0x76, 0xd3, 0x64, 0xb9, 0xb9, 0x09, 0xa4, + 0x87, 0x3e, 0xc4, 0x8b, 0x2b, 0x1a, 0xc9, 0x8b, 0x55, 0x79, 0xfc, 0xd5, 0x83, 0x18, 0x27, 0xa6, + 0x1a, 0x53, 0xbb, 0x1b, 0x49, 0xcd, 0x5f, 0x14, 0x61, 0x3a, 0x43, 0x74, 0x1c, 0xb1, 0xb5, 0x57, + 0xf4, 0xc5, 0x53, 0x8c, 0xef, 0xfb, 0xe5, 0x92, 0x79, 0x4f, 0x26, 0x21, 0x3a, 0x64, 0xa9, 0x1c, + 0x96, 0x99, 0xe8, 0xd3, 0xd8, 0xde, 0x55, 0x97, 0x9c, 0xe1, 0xc7, 0xe6, 0x92, 0x53, 0x83, 0x71, + 0xd1, 0x2a, 0xb1, 0x94, 0x47, 0x12, 0x83, 0x3e, 0xe0, 0x05, 0x76, 0xcf, 0x92, 0xd6, 0x49, 0x38, + 0x8f, 0xd0, 0x6f, 0xde, 0xa7, 0x82, 0xc7, 0xa8, 0xca, 0x03, 0x0b, 0x32, 0x79, 0x28, 0x24, 0xe4, + 0xcf, 0x0c, 0x20, 0x02, 0xa2, 0xae, 0xe7, 0xc2, 0x61, 0xeb, 0xd9, 0x7d, 0x3c, 0xeb, 0xf9, 0x59, + 0x59, 0xc7, 0xec, 0x75, 0x9d, 0x51, 0x2d, 0xf2, 0x4f, 0x0d, 0x98, 0xe2, 0x7e, 0x21, 0x6a, 0x65, + 0x8b, 0x87, 0x55, 0xb6, 0xf1, 0x78, 0x2a, 0x7b, 0x3e, 0xc4, 0xcf, 0xf6, 0xa9, 0x6b, 0x6f, 0xa5, + 0xc8, 0x17, 0x01, 0xe2, 0x15, 0x25, 0xfd, 0x0f, 0xcf, 0x67, 0x48, 0x81, 0x18, 0x29, 0x89, 0xbb, + 0x8c, 0x62, 0x3a, 0xd5, 0x63, 0x27, 0xe1, 0x46, 0x7e, 0x0b, 0x4e, 0xb2, 0xf5, 0x12, 0x43, 0x84, + 0x17, 0xdb, 0xcc, 0x18, 0x7e, 0xe5, 0xf5, 0xfe, 0x5b, 0xfb, 0xd5, 0x2c, 0x32, 0x1e, 0x05, 0x92, + 0x44, 0xb6, 0x47, 0x2d, 0xd5, 0x40, 0xcc, 0xa2, 0x40, 0x77, 0x55, 0xac, 0x7d, 0x38, 0x53, 0xc2, + 0x6f, 0x66, 0xca, 0xb7, 0xb3, 0x72, 0x2d, 0x70, 0xf9, 0x16, 0xea, 0x61, 0x1c, 0x08, 0x22, 0x1f, + 0x02, 0xa9, 0x77, 0xb7, 0xb7, 0x69, 0x18, 0x51, 0x97, 0xc3, 0x68, 0x10, 0xce, 0x8c, 0xa3, 0x7c, + 0xc0, 0x03, 0xa6, 0x50, 0x96, 0xda, 0x81, 0x2c, 0x56, 0x27, 0x49, 0x2f, 0xf1, 0xb9, 0x2d, 0x38, + 0xdb, 0xb7, 0x99, 0x19, 0x21, 0x1a, 0xd7, 0xf4, 0x10, 0x8d, 0xb3, 0xfd, 0xc4, 0x61, 0xa8, 0x86, + 0x69, 0xfc, 0x89, 0x91, 0x92, 0x7f, 0x42, 0x59, 0xe1, 0xf9, 0xda, 0xfa, 0x6d, 0x10, 0x39, 0x8c, + 0x79, 0xe7, 0x12, 0x32, 0x97, 0x28, 0x49, 0x4c, 0x42, 0xaa, 0x12, 0x16, 0x65, 0xe5, 0x23, 0x8a, + 0x42, 0xf3, 0x5f, 0x19, 0x40, 0x78, 0x0d, 0xe7, 0x9c, 0x8e, 0xb3, 0xe5, 0x35, 0xbd, 0xc8, 0xa3, + 0x21, 0xb9, 0x03, 0x65, 0xc1, 0x82, 0x99, 0xed, 0xaa, 0xf7, 0x95, 0xb8, 0xd0, 0x8d, 0xcb, 0xec, + 0xb4, 0x5a, 0xd3, 0x43, 0xd8, 0x67, 0xf0, 0x72, 0x8f, 0x30, 0x78, 0xe6, 0xcf, 0x0c, 0x38, 0xdb, + 0x5b, 0x6d, 0xf1, 0xe5, 0xb8, 0xf3, 0x8c, 0x23, 0x3a, 0x2f, 0xab, 0x95, 0x39, 0x3c, 0xc8, 0x78, + 0x6c, 0xad, 0xcc, 0x27, 0x67, 0xa0, 0xc7, 0x6f, 0xe5, 0xef, 0xe6, 0xa0, 0xb4, 0xda, 0xec, 0x6e, + 0x7b, 0xed, 0x79, 0x27, 0x72, 0x9e, 0x58, 0x93, 0xe2, 0x2d, 0xcd, 0xa4, 0x88, 0x3d, 0xb4, 0xe2, + 0x86, 0x0d, 0x96, 0x3b, 0xcb, 0x80, 0xc9, 0x84, 0x84, 0xaf, 0xd2, 0xdb, 0x30, 0xc4, 0x7e, 0x08, + 0x0d, 0xe5, 0x42, 0x0f, 0x63, 0xc4, 0xba, 0x1a, 0xff, 0x27, 0x94, 0x7c, 0x3d, 0x63, 0x19, 0x72, + 0x38, 0xf7, 0x2b, 0x3c, 0xe1, 0xd0, 0xf1, 0x93, 0x23, 0xfe, 0x85, 0x01, 0xe5, 0x74, 0x4b, 0xc8, + 0x1d, 0x18, 0x65, 0x9c, 0xbc, 0x38, 0x79, 0xd1, 0x8b, 0x7d, 0xda, 0x7c, 0x55, 0xa0, 0xf1, 0xea, + 0x61, 0xe7, 0x53, 0x0e, 0xb1, 0x24, 0x87, 0x73, 0x16, 0x94, 0x54, 0xac, 0x8c, 0xda, 0xbd, 0xa2, + 0x8b, 0xa6, 0xd3, 0xd9, 0xfd, 0xa0, 0xd6, 0xfa, 0x8f, 0xb5, 0x5a, 0x0b, 0xa1, 0x34, 0x68, 0x16, + 0x3a, 0x0c, 0x38, 0xe3, 0xc9, 0x39, 0xd4, 0x79, 0x26, 0xf3, 0x78, 0xe8, 0x01, 0x67, 0x1c, 0xc6, + 0x6c, 0x11, 0xfe, 0x3d, 0x31, 0xcf, 0xd0, 0x16, 0xe9, 0x20, 0x44, 0xd5, 0x67, 0x39, 0x8e, 0xf9, + 0xf7, 0xf3, 0x70, 0x3a, 0xa9, 0x1e, 0xcf, 0xc9, 0xb7, 0xea, 0x04, 0x4e, 0x2b, 0x3c, 0x62, 0x05, + 0x5c, 0xea, 0xa9, 0x1a, 0x06, 0x54, 0xcb, 0xaa, 0x29, 0x15, 0x32, 0x53, 0x15, 0x42, 0x23, 0x8e, + 0x57, 0x48, 0x56, 0x83, 0xdc, 0x81, 0x7c, 0x9d, 0x46, 0x22, 0xec, 0xf2, 0x62, 0x4f, 0xaf, 0xaa, + 0xf5, 0xba, 0x5a, 0xa7, 0x11, 0x1f, 0x44, 0xee, 0xb9, 0x4e, 0x35, 0x4f, 0x72, 0xa6, 0x8e, 0x6f, + 0xc2, 0xc8, 0xc2, 0xc3, 0x0e, 0x6d, 0x44, 0x22, 0xda, 0xf2, 0xf2, 0xe1, 0xfc, 0x38, 0xae, 0x12, + 0xd3, 0x49, 0x11, 0xa0, 0x76, 0x16, 0x47, 0x39, 0xf7, 0x26, 0x14, 0xe4, 0xc7, 0x8f, 0x15, 0x9b, + 0xf8, 0x16, 0x8c, 0x29, 0x1f, 0x39, 0xd6, 0xa4, 0xff, 0x85, 0x01, 0x23, 0x4c, 0xe8, 0x6d, 0xbc, + 0xf1, 0x84, 0x4a, 0xa4, 0x1b, 0x9a, 0x44, 0x9a, 0x52, 0x82, 0x68, 0x70, 0x5d, 0xbe, 0x71, 0x84, + 0x2c, 0xda, 0x37, 0x00, 0x12, 0x64, 0x72, 0x0b, 0x46, 0xf9, 0xb5, 0x8f, 0x4c, 0x78, 0xa9, 0x46, + 0xe5, 0x88, 0x92, 0x44, 0xcb, 0xf1, 0x3b, 0x69, 0xb5, 0x50, 0x52, 0x93, 0xf9, 0xc4, 0x73, 0x59, + 0x0d, 0x03, 0x65, 0x6c, 0xe6, 0xfc, 0x36, 0x8f, 0xd2, 0x08, 0x95, 0xc4, 0x50, 0xd9, 0x2e, 0xcc, + 0x55, 0x71, 0xb0, 0x91, 0x3f, 0x8c, 0xc9, 0x69, 0xc1, 0x24, 0xfb, 0xcc, 0xe3, 0x2f, 0x80, 0xc7, + 0x3d, 0xc8, 0x8a, 0xbd, 0x0b, 0xa5, 0x9b, 0x7e, 0xf0, 0xc0, 0x09, 0xdc, 0xea, 0x36, 0x15, 0x3e, + 0xe7, 0x05, 0x74, 0x1c, 0x1f, 0xbf, 0xc7, 0xe1, 0xb6, 0xc3, 0x0a, 0x7e, 0xbe, 0x5f, 0x19, 0xaa, + 0xf9, 0x7e, 0xd3, 0xd2, 0xd0, 0xc9, 0x0a, 0x8c, 0xdf, 0x75, 0x1e, 0x8a, 0xdb, 0xbd, 0xb5, 0xb5, + 0x25, 0xe1, 0xeb, 0x72, 0xf9, 0x60, 0xbf, 0x72, 0xb6, 0xe5, 0x3c, 0x8c, 0x6f, 0x05, 0xfb, 0x3b, + 0x57, 0xeb, 0xf4, 0xc4, 0x83, 0x89, 0x55, 0x3f, 0x88, 0xc4, 0x47, 0x98, 0x4e, 0x9b, 0xef, 0x73, + 0x39, 0x77, 0x2d, 0xf3, 0x72, 0xee, 0x2c, 0x53, 0xe4, 0xed, 0x7b, 0x31, 0xb9, 0x16, 0xac, 0xa7, + 0x31, 0x26, 0xef, 0xc2, 0xd4, 0x1c, 0x0d, 0x22, 0xef, 0x9e, 0xd7, 0x70, 0x22, 0x7a, 0xd3, 0x0f, + 0x5a, 0x4e, 0x24, 0x0e, 0x54, 0xd0, 0xa0, 0x6e, 0x50, 0xce, 0xa9, 0xe5, 0x44, 0x56, 0x2f, 0x26, + 0xf9, 0x52, 0x96, 0xf7, 0xd0, 0x30, 0x36, 0xff, 0x55, 0xa6, 0x14, 0x64, 0x78, 0x0f, 0xf5, 0xe9, + 0x82, 0x0c, 0x3f, 0xa2, 0xed, 0xc3, 0x2e, 0x49, 0x0b, 0xb5, 0xeb, 0xe2, 0xc2, 0xf6, 0xe8, 0x4b, + 0xd0, 0x78, 0xdc, 0xfa, 0x5c, 0x86, 0xce, 0x42, 0xbe, 0xb6, 0x7a, 0x13, 0x8f, 0x48, 0xc4, 0xa5, + 0x24, 0x6d, 0xef, 0x38, 0xed, 0x06, 0xea, 0x32, 0xc2, 0xd3, 0x41, 0x15, 0x78, 0xb5, 0xd5, 0x9b, + 0xc4, 0x81, 0xe9, 0x55, 0x1a, 0xb4, 0xbc, 0xe8, 0xf3, 0xd7, 0xaf, 0x2b, 0x03, 0x55, 0xc0, 0xaa, + 0x5d, 0x13, 0x55, 0xab, 0x74, 0x10, 0xc5, 0x7e, 0x78, 0xfd, 0x7a, 0xe6, 0x70, 0xc4, 0x15, 0xcb, + 0xe2, 0x45, 0x16, 0x60, 0xe2, 0xae, 0xf3, 0x50, 0x5c, 0x5f, 0xc7, 0x36, 0x5e, 0x1e, 0x7d, 0xed, + 0x71, 0x62, 0x35, 0x92, 0x22, 0x75, 0x88, 0x75, 0x22, 0xf2, 0x0e, 0x8c, 0x25, 0xd3, 0x2b, 0xc4, + 0x8b, 0xcb, 0x3c, 0x77, 0xcb, 0x54, 0x26, 0xa7, 0x76, 0x96, 0xa4, 0xa0, 0x93, 0xf5, 0xd8, 0x44, + 0xe7, 0x0a, 0xa9, 0x48, 0xcf, 0x72, 0x4d, 0x35, 0xd1, 0x1d, 0x2c, 0xd1, 0x9a, 0x35, 0x19, 0xab, + 0xe8, 0xdc, 0x5b, 0xc7, 0xd2, 0xb9, 0x28, 0x96, 0xff, 0x6a, 0xe0, 0xb7, 0x3a, 0x11, 0x7a, 0x2d, + 0xa6, 0x2c, 0xff, 0x0e, 0x96, 0x64, 0x58, 0xfe, 0x9c, 0x24, 0xfb, 0x56, 0x7e, 0xfc, 0x11, 0x6e, + 0xe5, 0x29, 0x0c, 0x2d, 0xf9, 0x8d, 0x5d, 0x74, 0x53, 0x2c, 0xd6, 0x3e, 0x64, 0xf2, 0xa3, 0xe9, + 0x37, 0x76, 0x1f, 0xdf, 0x6d, 0x32, 0xb2, 0x27, 0xcb, 0xac, 0xed, 0x6c, 0x5a, 0x89, 0x4f, 0xcf, + 0x4c, 0x6a, 0x37, 0x6d, 0x5a, 0x19, 0x57, 0x54, 0xf8, 0x2c, 0x94, 0x0d, 0xb1, 0x74, 0x72, 0x42, + 0xa1, 0x3c, 0x4f, 0xc3, 0xdd, 0xc8, 0xef, 0xcc, 0x35, 0xbd, 0xce, 0x96, 0xef, 0x04, 0xee, 0x4c, + 0xb9, 0x8f, 0xc0, 0x78, 0x39, 0x53, 0x60, 0x4c, 0xb9, 0x9c, 0xde, 0x6e, 0x48, 0x06, 0x56, 0x0f, + 0x4b, 0xf3, 0x8b, 0xa9, 0x6a, 0x93, 0x45, 0x18, 0x15, 0x48, 0x62, 0x63, 0xe8, 0xfd, 0xdc, 0xb3, + 0x99, 0x9f, 0x1b, 0x15, 0x9f, 0xb3, 0x24, 0xbd, 0xf9, 0xad, 0x71, 0x98, 0xd0, 0x45, 0x38, 0xd3, + 0xa9, 0x96, 0xfc, 0x6d, 0xaf, 0x2d, 0x2d, 0x33, 0x9e, 0xfa, 0x01, 0x21, 0x5a, 0xde, 0x71, 0x84, + 0x90, 0x97, 0x00, 0xe2, 0xcb, 0x47, 0x69, 0x7c, 0x89, 0x2c, 0xe9, 0x4a, 0x01, 0xf9, 0x35, 0x80, + 0x65, 0xdf, 0xa5, 0x71, 0xf6, 0x90, 0x43, 0x8e, 0x4c, 0x5e, 0x16, 0x47, 0x26, 0x22, 0xb3, 0xf9, + 0xc1, 0x7e, 0xe5, 0x54, 0xdb, 0x77, 0x69, 0x6f, 0xda, 0x10, 0x85, 0x23, 0xf9, 0x2c, 0x0c, 0x5b, + 0xdd, 0x26, 0x95, 0xc9, 0x2c, 0xc6, 0xe4, 0x90, 0x76, 0x9b, 0x4a, 0xc6, 0xc3, 0xa0, 0x9b, 0x3e, + 0x29, 0x67, 0x00, 0xf2, 0x3e, 0xc0, 0x9d, 0xee, 0x16, 0xbd, 0x15, 0xf8, 0xdd, 0x8e, 0x8c, 0x96, + 0x45, 0x43, 0x6d, 0x37, 0xce, 0x97, 0x64, 0x6f, 0x63, 0xa1, 0xfa, 0xf1, 0x84, 0x84, 0xac, 0xc0, + 0xa8, 0x58, 0x20, 0xe2, 0x24, 0xfa, 0xb9, 0xac, 0x33, 0x10, 0x65, 0x97, 0x14, 0xd9, 0x25, 0x10, + 0xac, 0x1f, 0x4b, 0x70, 0x43, 0xf3, 0x1d, 0x28, 0x32, 0xf6, 0xcc, 0x98, 0x0c, 0x85, 0x74, 0x44, + 0x2f, 0x3d, 0xa5, 0x42, 0xcc, 0xf0, 0xd4, 0x12, 0x63, 0xc5, 0x04, 0xe4, 0x4b, 0x98, 0x0f, 0x46, + 0x74, 0xf5, 0xa1, 0x47, 0x69, 0x17, 0x7b, 0xba, 0xfa, 0xa4, 0xd3, 0xe9, 0x64, 0x64, 0xdd, 0x8a, + 0xf9, 0x91, 0xed, 0x38, 0x92, 0x25, 0x4e, 0x7b, 0x7b, 0xc8, 0x07, 0xae, 0xf4, 0x7c, 0x60, 0x46, + 0x06, 0x67, 0xf4, 0x66, 0x81, 0xd1, 0xf8, 0x92, 0x0e, 0x94, 0x93, 0x7c, 0x55, 0xe2, 0x5b, 0x70, + 0xd8, 0xb7, 0x5e, 0xed, 0xf9, 0x96, 0x3a, 0x80, 0x3d, 0x9f, 0xeb, 0xe1, 0x4e, 0xdc, 0x24, 0x45, + 0xa9, 0xf8, 0xde, 0xd8, 0x61, 0xdf, 0x7b, 0xa9, 0xe7, 0x7b, 0xd3, 0xee, 0x56, 0xef, 0x77, 0x52, + 0x3c, 0xc9, 0x3b, 0x30, 0x2e, 0x21, 0xb8, 0x3e, 0xf0, 0x08, 0x4b, 0x68, 0xb0, 0xee, 0x16, 0x3a, + 0x51, 0xe9, 0x29, 0x50, 0x54, 0x64, 0x95, 0x9a, 0xcf, 0x8e, 0x71, 0x8d, 0x3a, 0x3d, 0x2b, 0x74, + 0x64, 0xf2, 0x05, 0x18, 0x5b, 0x6c, 0xb1, 0x86, 0xf8, 0x6d, 0x27, 0xa2, 0x28, 0x6e, 0x93, 0x63, + 0x41, 0xa5, 0x44, 0x99, 0xaa, 0x3c, 0x41, 0x61, 0x52, 0xa4, 0x6e, 0x57, 0x0a, 0x05, 0xeb, 0x3c, + 0x7e, 0xc0, 0x20, 0xe6, 0x70, 0x28, 0x84, 0xeb, 0xb3, 0x19, 0x47, 0x73, 0x0a, 0x7b, 0xdc, 0x52, + 0xf9, 0xb9, 0x85, 0x2d, 0x16, 0x84, 0xd6, 0x79, 0x3a, 0x4f, 0xf2, 0x2e, 0x8c, 0x89, 0x28, 0xc0, + 0xaa, 0xb5, 0x1c, 0xce, 0x94, 0xb1, 0xf1, 0xe8, 0x64, 0x2a, 0x03, 0x06, 0x6d, 0x27, 0x48, 0xdd, + 0xcf, 0x24, 0xf8, 0xe4, 0xf3, 0x70, 0x72, 0xd3, 0x6b, 0xbb, 0xfe, 0x83, 0x50, 0xc8, 0x3f, 0x21, + 0xe8, 0xa6, 0x12, 0x9f, 0x95, 0x07, 0xbc, 0xdc, 0x96, 0x82, 0xb9, 0x47, 0xf0, 0x65, 0x72, 0x20, + 0xbf, 0xd9, 0xc3, 0x99, 0xcf, 0x20, 0x72, 0xd8, 0x0c, 0x9a, 0xed, 0x99, 0x41, 0xbd, 0x9f, 0x4f, + 0x4f, 0xa7, 0xcc, 0xcf, 0x10, 0x1f, 0x88, 0xbe, 0xab, 0x7e, 0xe0, 0x7b, 0xed, 0x99, 0x69, 0xed, + 0x51, 0x89, 0xd8, 0x85, 0x14, 0xf1, 0x56, 0xfd, 0xa6, 0xd7, 0xd8, 0xab, 0x99, 0x07, 0xfb, 0x95, + 0xe7, 0xd2, 0xfb, 0xf5, 0xc7, 0xbe, 0x66, 0x3e, 0x67, 0xb0, 0x26, 0x5f, 0x80, 0x12, 0xfb, 0x1b, + 0x2b, 0x37, 0x27, 0xb5, 0xcb, 0x1c, 0x05, 0x53, 0x7c, 0x07, 0xc7, 0x08, 0xc3, 0x14, 0x33, 0xf4, + 0x1e, 0x8d, 0x95, 0xf9, 0x33, 0x03, 0x4e, 0x66, 0xd5, 0xf5, 0x88, 0x9c, 0x30, 0x66, 0xea, 0x5a, + 0x17, 0x2d, 0x6f, 0x7e, 0xad, 0x1b, 0x5f, 0xe6, 0x56, 0x60, 0x98, 0x59, 0x83, 0xd2, 0x49, 0x09, + 0x6f, 0x80, 0x98, 0xc5, 0x18, 0x5a, 0x1c, 0xce, 0x10, 0xd0, 0x65, 0x1d, 0x35, 0xf1, 0x61, 0x8e, + 0x80, 0x7e, 0xed, 0x16, 0x87, 0x33, 0x04, 0xa6, 0x50, 0xc8, 0x6d, 0x02, 0x11, 0x5a, 0x0c, 0x60, + 0x71, 0x38, 0xb9, 0x08, 0xa3, 0x2b, 0xed, 0x25, 0xea, 0xdc, 0xa7, 0xe2, 0x4e, 0x05, 0x4f, 0x0a, + 0xfc, 0xb6, 0xdd, 0x64, 0x30, 0x4b, 0x16, 0x9a, 0xdf, 0x31, 0x60, 0xaa, 0xa7, 0x9b, 0x8e, 0x4e, + 0x7b, 0x73, 0xf8, 0x05, 0xd6, 0x20, 0xed, 0xe3, 0xd5, 0x1f, 0xca, 0xae, 0xbe, 0xf9, 0xd7, 0x79, + 0x38, 0xd3, 0x67, 0xd7, 0x4a, 0x2e, 0x9f, 0x8d, 0x23, 0x2f, 0x9f, 0xbf, 0xcc, 0x76, 0x09, 0xc7, + 0x6b, 0x85, 0x6b, 0x7e, 0x52, 0xe3, 0xe4, 0x9c, 0x1e, 0xcb, 0x64, 0x5e, 0x09, 0x99, 0x03, 0xe1, + 0x6c, 0x03, 0x29, 0xec, 0xc8, 0xef, 0x39, 0x15, 0xd5, 0x99, 0xf5, 0x5c, 0xff, 0xe6, 0x7f, 0x49, + 0xae, 0x7f, 0xf5, 0x4b, 0x97, 0xa1, 0xc7, 0x7a, 0xe9, 0x92, 0x7d, 0x0c, 0x3c, 0xfc, 0x28, 0x87, + 0xdd, 0xff, 0x21, 0x75, 0xe1, 0xfc, 0xcb, 0x38, 0xd4, 0x97, 0x61, 0x78, 0x73, 0x87, 0x06, 0xd2, + 0xe3, 0x18, 0x2b, 0xf2, 0x80, 0x01, 0xd4, 0x8a, 0x20, 0x86, 0xf9, 0x55, 0x28, 0xa9, 0x1f, 0xc3, + 0xb5, 0xcc, 0x7e, 0x8b, 0xc5, 0xc4, 0xd7, 0x32, 0x03, 0x58, 0x1c, 0x7e, 0x64, 0x16, 0xa9, 0xa4, + 0x17, 0xf2, 0x47, 0xf5, 0x82, 0xf9, 0xef, 0x0d, 0x18, 0xc2, 0x20, 0xfa, 0x37, 0xa0, 0x28, 0x0f, + 0x03, 0xd5, 0xc0, 0xf2, 0x69, 0x79, 0x56, 0x18, 0xea, 0x37, 0xf6, 0x02, 0xc8, 0x3e, 0xb5, 0x41, + 0x83, 0x2d, 0xcd, 0xb1, 0xe3, 0x3e, 0x03, 0xa8, 0x9f, 0x42, 0x8c, 0x63, 0x74, 0x09, 0x3a, 0xaf, + 0x08, 0x0b, 0x96, 0x2f, 0x78, 0xee, 0xbc, 0xd2, 0x63, 0xb9, 0x4a, 0x2c, 0xf3, 0x7b, 0x06, 0x9c, + 0xca, 0xd4, 0x03, 0xd8, 0x57, 0xb9, 0xc2, 0xa1, 0xcc, 0x88, 0xb4, 0xb6, 0xc1, 0x31, 0x8e, 0xe3, + 0xa4, 0x72, 0x8c, 0xe1, 0x7d, 0x1e, 0x8a, 0xb1, 0x79, 0x43, 0x4e, 0xca, 0xa1, 0xc3, 0x13, 0x23, + 0x99, 0xf5, 0xeb, 0x17, 0x06, 0x8c, 0xb0, 0x2a, 0x3c, 0xb1, 0xd1, 0x06, 0xd9, 0xe7, 0x87, 0xac, + 0x49, 0x03, 0xc5, 0x18, 0x7c, 0x7f, 0x04, 0x20, 0x41, 0x26, 0x5b, 0x30, 0xb1, 0xb2, 0x38, 0x3f, + 0xb7, 0xe8, 0xd2, 0x76, 0x84, 0xf7, 0x58, 0xa9, 0x58, 0xf6, 0x85, 0x87, 0x11, 0x0d, 0xda, 0x4e, + 0x53, 0x20, 0xec, 0x25, 0xcb, 0xd3, 0xf7, 0xdc, 0x86, 0xed, 0xc5, 0x74, 0xaa, 0x42, 0xa6, 0x73, + 0x64, 0xdf, 0xa8, 0x57, 0xef, 0x2e, 0x29, 0xdf, 0xc8, 0x0d, 0xf8, 0x8d, 0xd0, 0x69, 0x35, 0xfb, + 0x7c, 0x43, 0xe7, 0x48, 0x76, 0xa0, 0x7c, 0x0b, 0x65, 0xb7, 0xf2, 0x95, 0xfc, 0xe1, 0x5f, 0x79, + 0x41, 0x7c, 0xe5, 0x19, 0x2e, 0xf4, 0xb3, 0xbf, 0xd3, 0xc3, 0x35, 0x99, 0xb9, 0x43, 0x47, 0xce, + 0xdc, 0xdf, 0x31, 0x60, 0x84, 0x6f, 0x0e, 0xf1, 0xbb, 0x0a, 0x99, 0xdb, 0xcf, 0xe6, 0xe3, 0xd9, + 0x7e, 0xca, 0x11, 0xfe, 0xa7, 0x1a, 0xe0, 0xbc, 0x8c, 0xcc, 0xa7, 0x1e, 0x69, 0x90, 0x87, 0xc4, + 0xa8, 0x98, 0xf2, 0x92, 0xc4, 0xd5, 0x87, 0xbf, 0xcf, 0xa0, 0x72, 0xe1, 0x18, 0xea, 0x93, 0x71, + 0xa3, 0x8f, 0xf8, 0x64, 0xdc, 0x12, 0x14, 0x85, 0xef, 0x4a, 0x6d, 0x4f, 0x98, 0x9f, 0xf2, 0x7c, + 0x22, 0x86, 0x2b, 0x59, 0x9e, 0x39, 0xc8, 0xde, 0xd2, 0xd2, 0xad, 0xc5, 0x88, 0x64, 0x05, 0x8a, + 0x49, 0xa8, 0x44, 0x51, 0xbb, 0xe9, 0x8b, 0xe1, 0xc2, 0xb9, 0x93, 0xc7, 0xf8, 0x65, 0x46, 0x46, + 0x24, 0x3c, 0xcc, 0x6f, 0x18, 0x50, 0x4e, 0xcf, 0x17, 0xf2, 0x0e, 0x8c, 0xc5, 0xd1, 0x2a, 0xf1, + 0x0d, 0x3a, 0x1e, 0xd5, 0x25, 0xe1, 0x2d, 0xda, 0x5d, 0xba, 0x8a, 0x4e, 0x66, 0xa1, 0xc0, 0x96, + 0x9d, 0x92, 0x6f, 0x17, 0xe5, 0x49, 0x57, 0xc0, 0xd4, 0x9b, 0x2b, 0x89, 0xa7, 0xac, 0xda, 0xff, + 0x94, 0x87, 0x31, 0x65, 0xb0, 0xc8, 0x65, 0x28, 0x2c, 0x86, 0x4b, 0x7e, 0x63, 0x97, 0xba, 0xe2, + 0x40, 0x1c, 0x5f, 0x04, 0xf4, 0x42, 0xbb, 0x89, 0x40, 0x2b, 0x2e, 0x26, 0x35, 0x18, 0xe7, 0xff, + 0xc9, 0x58, 0xc7, 0x5c, 0x72, 0x98, 0xc7, 0x91, 0x65, 0x94, 0xa3, 0xba, 0xc3, 0x6a, 0x24, 0xe4, + 0x23, 0x00, 0x0e, 0x60, 0xe3, 0x3b, 0x80, 0xeb, 0xaa, 0x5c, 0xc0, 0xa7, 0xc4, 0x07, 0x22, 0x4f, + 0x6d, 0x21, 0x4e, 0x05, 0x85, 0x21, 0xbe, 0x46, 0xe6, 0x37, 0x76, 0x07, 0x7f, 0x8f, 0x30, 0x79, + 0x8d, 0xcc, 0x6f, 0xec, 0xda, 0xd9, 0x7e, 0x4c, 0x2a, 0x4b, 0xf2, 0x4d, 0x03, 0xce, 0x59, 0xb4, + 0xe1, 0xdf, 0xa7, 0xc1, 0x5e, 0x35, 0x42, 0x2c, 0xf5, 0x8b, 0x47, 0x3b, 0x4d, 0xdd, 0x10, 0x5f, + 0x7c, 0x39, 0x10, 0x5c, 0x30, 0x3c, 0xa3, 0xd5, 0x89, 0xec, 0x43, 0xaa, 0x70, 0xc8, 0x27, 0xcd, + 0xff, 0x62, 0x28, 0x4b, 0x80, 0x2c, 0x43, 0x31, 0x9e, 0x2c, 0xe2, 0xbc, 0x2e, 0x56, 0x8e, 0x24, + 0xdc, 0xa2, 0xf7, 0x6a, 0xcf, 0x88, 0xb3, 0xeb, 0xe9, 0x78, 0xca, 0x69, 0x2b, 0x42, 0x02, 0xc9, + 0xe7, 0x60, 0x08, 0x87, 0xea, 0xe8, 0x04, 0x4d, 0x72, 0xab, 0x19, 0x62, 0x63, 0x84, 0xb5, 0x46, + 0x4a, 0xf2, 0x9a, 0xf0, 0x63, 0xc8, 0x6b, 0xa9, 0x4f, 0x19, 0x88, 0xd5, 0x23, 0xde, 0x63, 0x12, + 0xd7, 0x39, 0x65, 0xb6, 0xfe, 0x1d, 0x03, 0xa6, 0xd7, 0x67, 0x6f, 0x5a, 0x74, 0xdb, 0xc3, 0x58, + 0x51, 0xcf, 0xc7, 0x4b, 0x46, 0x72, 0x16, 0xf2, 0x96, 0xf3, 0x40, 0x24, 0x52, 0x44, 0xbf, 0xf9, + 0xc0, 0x79, 0x60, 0x31, 0x18, 0x79, 0x05, 0x8a, 0x77, 0xe8, 0xde, 0x6d, 0xa7, 0xed, 0x36, 0xa9, + 0x48, 0x98, 0x88, 0x69, 0x3a, 0x76, 0xe9, 0x9e, 0xbd, 0x83, 0x50, 0x2b, 0x41, 0xc0, 0x1b, 0xd4, + 0xee, 0xd6, 0x1d, 0xca, 0x2f, 0x9a, 0x4a, 0xe2, 0x06, 0xb5, 0xbb, 0x85, 0xae, 0xd9, 0xbc, 0xc4, + 0xfc, 0xb3, 0x3c, 0x94, 0xd3, 0xab, 0x9f, 0xbc, 0x0f, 0xa5, 0x55, 0x27, 0x0c, 0x1f, 0xf8, 0x81, + 0x7b, 0xdb, 0x09, 0x77, 0x44, 0x55, 0x78, 0x04, 0xaa, 0x80, 0xdb, 0x3b, 0x8e, 0x96, 0xfb, 0x4b, + 0x23, 0x60, 0x5a, 0xc1, 0x9a, 0x70, 0x0b, 0x57, 0x56, 0x71, 0xe4, 0x47, 0x9d, 0x54, 0x4e, 0x47, + 0x89, 0x46, 0x5c, 0x98, 0x4c, 0xf5, 0x45, 0xbc, 0x80, 0xe2, 0xf8, 0xb6, 0x74, 0x4f, 0xf1, 0x93, + 0xbc, 0xee, 0xec, 0x3d, 0xcc, 0x8b, 0x24, 0x4b, 0xd4, 0xd0, 0xab, 0x14, 0x11, 0x79, 0x0b, 0x60, + 0x7d, 0xf6, 0x26, 0xda, 0x9f, 0x34, 0x10, 0x7e, 0xc5, 0x78, 0x2c, 0xc3, 0x98, 0x34, 0x38, 0x58, + 0xb5, 0x1a, 0x12, 0x64, 0xf2, 0x06, 0xe4, 0x79, 0xc4, 0x9c, 0x9a, 0xb1, 0xe8, 0xee, 0xcd, 0x2a, + 0x0f, 0x32, 0xe2, 0x97, 0xca, 0xfa, 0xe9, 0x3c, 0xc3, 0x27, 0x4b, 0x4a, 0xbc, 0xd5, 0x88, 0x96, + 0xeb, 0x45, 0x82, 0xe3, 0xde, 0x1f, 0x20, 0xf0, 0xea, 0x9f, 0xe5, 0xa1, 0x18, 0x7f, 0x93, 0x10, + 0x40, 0x4d, 0x4c, 0xdc, 0x08, 0xe3, 0xff, 0xe4, 0x2c, 0x14, 0xa4, 0xf2, 0x25, 0x6e, 0x85, 0x47, + 0x43, 0xa1, 0x78, 0xcd, 0x80, 0xd4, 0xb2, 0xb8, 0xe2, 0x65, 0xc9, 0x9f, 0xe4, 0x3a, 0xc4, 0x2a, + 0x54, 0x3f, 0x5d, 0x6b, 0x88, 0x4d, 0x65, 0x2b, 0x46, 0x23, 0x13, 0x90, 0xf3, 0xb8, 0x1f, 0x72, + 0xd1, 0xca, 0x79, 0x2e, 0x79, 0x1f, 0x0a, 0x8e, 0xeb, 0x52, 0xd7, 0x76, 0xa2, 0x01, 0x5e, 0xcd, + 0x2c, 0x30, 0x6e, 0x7c, 0xaf, 0x43, 0xaa, 0x6a, 0x44, 0xaa, 0x50, 0xc4, 0x47, 0x13, 0xbb, 0xe1, + 0x40, 0x2f, 0x2d, 0x26, 0x1c, 0x0a, 0x8c, 0x6c, 0x3d, 0xa4, 0x2e, 0x79, 0x19, 0x86, 0xd8, 0x14, + 0x13, 0x3b, 0x65, 0x9c, 0x7b, 0x6e, 0x65, 0x6d, 0x95, 0x77, 0xd8, 0xed, 0x13, 0x16, 0x22, 0x90, + 0x17, 0x21, 0xdf, 0x9d, 0xbd, 0x27, 0xf6, 0xc0, 0x72, 0x32, 0xc1, 0x62, 0x34, 0x56, 0x4c, 0x6e, + 0x40, 0xe1, 0x81, 0x1e, 0x2a, 0x77, 0x2a, 0x35, 0x74, 0x31, 0x7e, 0x8c, 0x58, 0x2b, 0xc0, 0x08, + 0x0f, 0x4c, 0x33, 0x9f, 0x03, 0x48, 0x3e, 0xdd, 0x7b, 0x79, 0x6f, 0x7e, 0x04, 0xc5, 0xf8, 0x93, + 0xe4, 0x59, 0x50, 0xd6, 0x30, 0x5f, 0x6f, 0x56, 0x71, 0x37, 0x5e, 0xc9, 0x67, 0x60, 0xb4, 0xc3, + 0x46, 0x55, 0xa6, 0x49, 0xb5, 0xd8, 0x32, 0x66, 0xcb, 0x66, 0x06, 0x46, 0xc5, 0xb4, 0xe5, 0x3e, + 0xf5, 0x96, 0xfc, 0x69, 0xfe, 0x49, 0x0e, 0x43, 0xee, 0x95, 0x7a, 0x92, 0x17, 0x60, 0xbc, 0x11, + 0x50, 0xdc, 0xa8, 0x1d, 0xa6, 0x30, 0x8a, 0xef, 0x94, 0x12, 0xe0, 0xa2, 0x4b, 0x2e, 0xc2, 0x64, + 0x92, 0xb7, 0xd5, 0x6e, 0x6c, 0x89, 0x40, 0xd9, 0x92, 0x35, 0xde, 0x91, 0x89, 0x5b, 0xe7, 0xb6, + 0xd0, 0x7f, 0xbe, 0xac, 0x06, 0xa5, 0x45, 0x32, 0x07, 0x6b, 0xd1, 0x9a, 0x54, 0xe0, 0x18, 0x79, + 0x7b, 0x1a, 0x46, 0x1c, 0x67, 0xbb, 0xeb, 0x71, 0x5f, 0xde, 0x92, 0x25, 0x7e, 0x91, 0xcf, 0xc0, + 0x54, 0xe8, 0x6d, 0xb7, 0x9d, 0xa8, 0x1b, 0x50, 0xb9, 0xfa, 0x70, 0x4a, 0x8d, 0x5b, 0xe5, 0xb8, + 0x40, 0xae, 0xbf, 0x57, 0x81, 0xa8, 0xdf, 0xf3, 0xb7, 0x3e, 0xa6, 0x0d, 0x3e, 0xd5, 0x4a, 0xd6, + 0x94, 0x52, 0xb2, 0x82, 0x05, 0xe4, 0x79, 0x28, 0x05, 0x34, 0x44, 0x65, 0x15, 0xbb, 0x0d, 0x33, + 0xb9, 0x58, 0x63, 0x12, 0xc6, 0x44, 0x5f, 0x0d, 0xa6, 0x7a, 0xd6, 0x20, 0x79, 0x95, 0xdb, 0x3d, + 0x42, 0x73, 0x29, 0x71, 0x33, 0x8f, 0x89, 0xef, 0xd4, 0x3b, 0xbb, 0x1c, 0xc9, 0x6c, 0x43, 0x49, + 0xdd, 0x79, 0x8e, 0x08, 0x41, 0x3e, 0x8d, 0x4e, 0x85, 0x5c, 0x22, 0x8e, 0x1c, 0xec, 0x57, 0x72, + 0x9e, 0x8b, 0xae, 0x84, 0x97, 0xa0, 0x20, 0xf5, 0x27, 0xf5, 0x25, 0x10, 0xa1, 0x6a, 0xef, 0x59, + 0x71, 0xa9, 0xf9, 0x32, 0x8c, 0x8a, 0xcd, 0xe5, 0xf0, 0x03, 0x2e, 0xf3, 0x6b, 0x39, 0x98, 0xb4, + 0x28, 0x5b, 0xe0, 0xe2, 0x8d, 0x8d, 0xa7, 0x2c, 0x83, 0xad, 0xd6, 0xb6, 0x43, 0x22, 0xfe, 0x7f, + 0x60, 0xc0, 0x74, 0x06, 0xee, 0x27, 0x4a, 0x92, 0xf5, 0x26, 0x14, 0xe7, 0x3d, 0xa7, 0x59, 0x75, + 0xdd, 0xd8, 0x39, 0x12, 0xf5, 0x64, 0x97, 0x2d, 0x27, 0x87, 0x41, 0x55, 0x35, 0x23, 0x46, 0x25, + 0x57, 0xc4, 0xa4, 0x48, 0x92, 0xf2, 0xc9, 0x1c, 0xb9, 0xc0, 0xeb, 0x94, 0x64, 0xc8, 0xc5, 0x10, + 0x34, 0x0e, 0x4c, 0xee, 0xbf, 0x9f, 0xd8, 0xa1, 0xcb, 0x0e, 0x41, 0x4b, 0x37, 0x6f, 0x20, 0x83, + 0xfc, 0x1b, 0x39, 0x38, 0x9d, 0x4d, 0xf8, 0x49, 0xf3, 0x9d, 0x61, 0xba, 0x05, 0x25, 0x0d, 0x31, + 0x2a, 0x52, 0x3c, 0x37, 0x03, 0xe2, 0x27, 0x08, 0xe4, 0x1e, 0x8c, 0x2f, 0x39, 0x61, 0x74, 0x9b, + 0x3a, 0x41, 0xb4, 0x45, 0x9d, 0x68, 0x00, 0xdd, 0x3e, 0x7e, 0xcd, 0x16, 0x37, 0xb5, 0x1d, 0x49, + 0x99, 0x7e, 0xcd, 0x56, 0x63, 0x1b, 0x4f, 0x94, 0xa1, 0x01, 0x26, 0xca, 0x57, 0x60, 0xb2, 0x4e, + 0x5b, 0x4e, 0x67, 0xc7, 0x0f, 0xa8, 0x38, 0x93, 0xbf, 0x0a, 0xe3, 0x31, 0x28, 0x73, 0xb6, 0xe8, + 0xc5, 0x1a, 0xbe, 0xd2, 0x11, 0x89, 0x28, 0xd1, 0x8b, 0xcd, 0x3f, 0xca, 0xc1, 0x99, 0x6a, 0x43, + 0x5c, 0x60, 0x88, 0x02, 0x79, 0xcf, 0xfa, 0x29, 0x7f, 0x9b, 0x5c, 0x83, 0xe2, 0x5d, 0xe7, 0x21, + 0x3e, 0xcb, 0x1e, 0x8a, 0xac, 0x39, 0x5c, 0xe5, 0x72, 0x1e, 0xda, 0xf1, 0x81, 0xa0, 0x95, 0xe0, + 0x3c, 0xce, 0x97, 0xdb, 0x4d, 0x18, 0xb9, 0xed, 0x37, 0x5d, 0xb1, 0x39, 0x89, 0xfb, 0x90, 0x1d, + 0x84, 0x58, 0xa2, 0xc4, 0xfc, 0x99, 0x01, 0x13, 0x71, 0x8d, 0xb1, 0x0a, 0x9f, 0x7a, 0x97, 0xa4, + 0xde, 0xb0, 0x2f, 0x0e, 0xf0, 0x86, 0xfd, 0xf0, 0xa3, 0xf5, 0x84, 0xf9, 0xcf, 0xf1, 0xaa, 0x45, + 0x6d, 0x25, 0xdb, 0x89, 0x94, 0x8a, 0x18, 0x03, 0x56, 0x24, 0xf7, 0xd8, 0x86, 0x24, 0xdf, 0x77, + 0x48, 0xbe, 0x9e, 0x83, 0xb1, 0xb8, 0xb2, 0x4f, 0x59, 0xec, 0x76, 0xdc, 0xae, 0x81, 0x3c, 0xb3, + 0xeb, 0x8a, 0xac, 0x10, 0x0e, 0xd0, 0x9f, 0x83, 0x11, 0xb1, 0x98, 0x8c, 0xd4, 0x7d, 0x63, 0x6a, + 0x74, 0x93, 0x17, 0x49, 0x71, 0x40, 0x43, 0x4b, 0xd0, 0xa1, 0xeb, 0xfb, 0x26, 0xdd, 0x12, 0x37, + 0x6f, 0x4f, 0xec, 0x1e, 0x95, 0xed, 0xfa, 0x9e, 0x34, 0x6c, 0xa0, 0xdd, 0xe9, 0x1f, 0x0d, 0x41, + 0x39, 0x4d, 0x72, 0x74, 0x74, 0xfc, 0x6a, 0x77, 0x4b, 0x18, 0xf1, 0x68, 0xe5, 0x77, 0xba, 0x5b, + 0x16, 0x83, 0x91, 0x8b, 0x30, 0xb4, 0x1a, 0x78, 0xf7, 0x85, 0xd5, 0x8e, 0xde, 0x53, 0x9d, 0xc0, + 0xbb, 0xaf, 0xfa, 0x80, 0xb2, 0x72, 0xb4, 0xb2, 0x97, 0xea, 0xca, 0x63, 0xd0, 0xdc, 0xca, 0x6e, + 0x86, 0xe9, 0x04, 0x2a, 0x12, 0x8d, 0x6d, 0x95, 0x35, 0xea, 0x04, 0x22, 0x92, 0x5b, 0x88, 0x33, + 0xdc, 0x2a, 0xb7, 0x10, 0xcc, 0x73, 0xae, 0x5a, 0x2a, 0x12, 0x69, 0x02, 0x51, 0x7e, 0xca, 0x05, + 0x7c, 0xb4, 0x8d, 0x27, 0x1f, 0x2b, 0x3a, 0xa9, 0xb2, 0xb6, 0xd5, 0xd5, 0x9c, 0xc1, 0xf7, 0x71, + 0x9e, 0x9e, 0xae, 0x42, 0x11, 0x0f, 0x03, 0xf1, 0x88, 0xa7, 0x70, 0x24, 0x33, 0xe9, 0x6f, 0x0b, + 0xe8, 0xa7, 0x60, 0xc7, 0x07, 0x3d, 0x09, 0x13, 0xf2, 0x1e, 0x8c, 0xa9, 0x4e, 0xa2, 0xdc, 0x95, + 0xf1, 0x3c, 0x8f, 0x0e, 0xea, 0x93, 0xbe, 0x4c, 0x25, 0x30, 0x5f, 0x53, 0x67, 0x89, 0xd8, 0xb4, + 0x0f, 0x9d, 0x25, 0xe6, 0x77, 0x51, 0x8d, 0x6f, 0xf9, 0x11, 0x15, 0xda, 0xcb, 0x13, 0x2b, 0xc7, + 0x92, 0xc3, 0xf5, 0x61, 0xcd, 0x57, 0x46, 0x6b, 0xdd, 0x31, 0x9e, 0x41, 0xfe, 0xc7, 0x06, 0x9c, + 0xca, 0xa4, 0x25, 0x57, 0x01, 0x12, 0x1d, 0x51, 0xf4, 0x12, 0x4f, 0x66, 0x1b, 0x43, 0x2d, 0x05, + 0x83, 0x7c, 0x39, 0xad, 0xdd, 0x1d, 0xbd, 0x39, 0xc9, 0x07, 0x1c, 0x26, 0x74, 0xed, 0x2e, 0x43, + 0xa7, 0x33, 0x7f, 0x90, 0x87, 0xa9, 0x9e, 0xd7, 0x02, 0x8f, 0xf0, 0x4e, 0xd8, 0x4d, 0x3d, 0x2b, + 0xc5, 0x2f, 0x82, 0xae, 0xf4, 0x7b, 0xab, 0x30, 0xe3, 0x91, 0x29, 0x3c, 0xab, 0x13, 0x79, 0x94, + 0x8f, 0x78, 0x6b, 0x2a, 0xcc, 0x7e, 0x90, 0xec, 0x33, 0x7d, 0xbf, 0xf6, 0x18, 0x1e, 0x26, 0xfb, + 0x25, 0x7e, 0xb7, 0xe9, 0xbb, 0x39, 0x98, 0xee, 0x69, 0xf3, 0x13, 0xbb, 0xea, 0x3e, 0xa7, 0xed, + 0x6e, 0xcf, 0xf5, 0x1b, 0xd3, 0x81, 0xb4, 0x88, 0xff, 0x65, 0xc0, 0x99, 0x3e, 0x94, 0x64, 0x2f, + 0x3d, 0x89, 0xb8, 0x56, 0x71, 0xfd, 0xf0, 0x0f, 0x3e, 0x96, 0xa9, 0xf4, 0xa9, 0xcd, 0x84, 0xaf, + 0xe5, 0x00, 0x36, 0xe9, 0xd6, 0x93, 0x9d, 0xfa, 0x27, 0xfb, 0xc5, 0x7a, 0xd9, 0xac, 0x81, 0xc6, + 0x7d, 0x05, 0x0f, 0x12, 0x07, 0xcf, 0xfb, 0x13, 0x3f, 0x52, 0x91, 0xcb, 0x7e, 0xa4, 0xc2, 0xdc, + 0x82, 0x93, 0xb7, 0x68, 0x94, 0xec, 0x84, 0xd2, 0x86, 0x3c, 0x9c, 0xed, 0x2b, 0x50, 0x14, 0xf8, + 0x7a, 0x8a, 0x72, 0xe9, 0x6a, 0xe7, 0xb9, 0x56, 0x82, 0x60, 0x52, 0x38, 0x33, 0x4f, 0x9b, 0x34, + 0xa2, 0x9f, 0xee, 0x67, 0xea, 0x40, 0x78, 0x53, 0xf8, 0xdb, 0x05, 0x03, 0x7d, 0xe1, 0xc8, 0xfe, + 0xd9, 0x80, 0x53, 0x71, 0xdd, 0x1f, 0x27, 0xdf, 0x6b, 0x4c, 0x97, 0x10, 0x71, 0x76, 0x09, 0xc7, + 0x43, 0x0e, 0x11, 0x1f, 0xc2, 0x39, 0x49, 0xb0, 0xe9, 0xc5, 0xd7, 0x43, 0x03, 0xd1, 0x92, 0x77, + 0x60, 0x4c, 0xa1, 0x11, 0x41, 0xbb, 0x78, 0x0f, 0xfc, 0xc0, 0x8b, 0x76, 0xec, 0x90, 0xc3, 0xd5, + 0x7b, 0x60, 0x05, 0xdd, 0xfc, 0x12, 0x3c, 0x13, 0x7b, 0xf4, 0x64, 0x7c, 0x3a, 0xc5, 0xdc, 0x38, + 0x1e, 0xf3, 0xe5, 0xa4, 0x59, 0x8b, 0xed, 0xd8, 0xb3, 0x5e, 0xf2, 0x26, 0x6a, 0xb3, 0x44, 0x63, + 0xce, 0x2b, 0x29, 0xd1, 0xc4, 0x5e, 0x94, 0x00, 0xcc, 0xb7, 0x95, 0xca, 0x66, 0x30, 0xd4, 0x88, + 0x8d, 0x34, 0xf1, 0xd7, 0x72, 0x30, 0xb9, 0xb2, 0x38, 0x3f, 0x17, 0x1f, 0x23, 0x3f, 0x65, 0x79, + 0x89, 0xb4, 0xb6, 0xf5, 0x97, 0x37, 0xe6, 0x3a, 0x4c, 0xa7, 0xba, 0x01, 0x9f, 0x66, 0x79, 0x8f, + 0x7b, 0xde, 0xc4, 0x60, 0xb9, 0xb3, 0x9c, 0xce, 0x62, 0xbf, 0x71, 0xc3, 0x4a, 0x61, 0x9b, 0x3f, + 0x18, 0x49, 0xf1, 0x15, 0x22, 0xec, 0x15, 0x28, 0x2e, 0x86, 0x61, 0x97, 0x06, 0xeb, 0xd6, 0x92, + 0xaa, 0x23, 0x7a, 0x08, 0xb4, 0xbb, 0x41, 0xd3, 0x4a, 0x10, 0xc8, 0x65, 0x28, 0x88, 0xd8, 0x2e, + 0x29, 0x13, 0xd0, 0x91, 0x20, 0x0e, 0x0d, 0xb3, 0xe2, 0x62, 0xf2, 0x06, 0x94, 0xf8, 0xff, 0x7c, + 0xb6, 0x89, 0x0e, 0xc7, 0xb3, 0x2a, 0x81, 0xce, 0x67, 0xa7, 0xa5, 0xa1, 0x31, 0xcb, 0x4c, 0xbe, + 0xfd, 0xc8, 0x6a, 0x34, 0x94, 0x58, 0x66, 0xf2, 0x99, 0x48, 0xac, 0x93, 0x8a, 0x44, 0xae, 0x40, + 0xbe, 0x3a, 0x67, 0xa9, 0x59, 0x99, 0x9d, 0x46, 0xc0, 0xb3, 0x9a, 0x6b, 0xcf, 0x2b, 0x55, 0xe7, + 0x2c, 0x32, 0x0b, 0x05, 0x7c, 0x70, 0xc3, 0xa5, 0x81, 0xf0, 0xa6, 0xc5, 0x59, 0xd3, 0x11, 0x30, + 0xed, 0x71, 0x6a, 0x01, 0x23, 0xd7, 0x60, 0x74, 0xde, 0x0b, 0x3b, 0x4d, 0x67, 0x4f, 0x24, 0x24, + 0xc1, 0xcb, 0x10, 0x97, 0x83, 0xd4, 0x79, 0x26, 0xb0, 0xc8, 0x65, 0x18, 0xae, 0x37, 0xfc, 0x0e, + 0xb3, 0xb6, 0x62, 0xa7, 0x9f, 0x90, 0x01, 0xb4, 0xac, 0x06, 0x0c, 0x80, 0xe1, 0xc6, 0x3c, 0x6a, + 0xaa, 0xa8, 0x84, 0x1b, 0xa7, 0xa3, 0xa5, 0x04, 0x4e, 0xaf, 0x67, 0x24, 0x3c, 0x4e, 0xcf, 0xc8, + 0x2d, 0x38, 0x73, 0x0b, 0x55, 0xfd, 0x3a, 0x0d, 0x30, 0x63, 0x24, 0x7f, 0x8a, 0x67, 0xdd, 0x5a, + 0x14, 0x91, 0x62, 0x97, 0x0e, 0xf6, 0x2b, 0x2f, 0x72, 0x6b, 0xc0, 0x0e, 0x39, 0x8e, 0x7c, 0xc5, + 0x27, 0xf5, 0x62, 0x41, 0x3f, 0x46, 0xe4, 0xf3, 0x70, 0x32, 0xab, 0x48, 0xc4, 0x8c, 0xa1, 0xbf, + 0x7c, 0xf6, 0x07, 0x54, 0x87, 0xf5, 0x2c, 0x0e, 0x64, 0x09, 0xca, 0x1c, 0x5e, 0x75, 0x5b, 0x5e, + 0x7b, 0xa1, 0xe5, 0x78, 0x4d, 0x8c, 0x20, 0x13, 0x61, 0x80, 0x82, 0xab, 0xc3, 0x0a, 0x6d, 0xca, + 0x4a, 0x35, 0xbf, 0xad, 0x14, 0x25, 0x8a, 0xa3, 0x7a, 0xf5, 0xee, 0x52, 0xb2, 0xa6, 0x9e, 0xae, + 0x7b, 0x23, 0xad, 0x6d, 0x87, 0xdc, 0x1b, 0xad, 0xc3, 0x74, 0xaa, 0x1b, 0xa4, 0x38, 0xd2, 0xc0, + 0x69, 0x71, 0x94, 0xa2, 0xb1, 0x52, 0xd8, 0xe6, 0x7f, 0x1e, 0x49, 0xf1, 0x15, 0x67, 0x45, 0x26, + 0x8c, 0x70, 0x69, 0xa3, 0x66, 0x2c, 0xe3, 0xb2, 0xc8, 0x12, 0x25, 0xe4, 0x2c, 0xe4, 0xeb, 0xf5, + 0x15, 0x35, 0x9f, 0x62, 0x18, 0xfa, 0x16, 0x83, 0xb1, 0x11, 0xc2, 0x63, 0xa0, 0x7c, 0x32, 0x42, + 0x0d, 0x1a, 0x44, 0xe2, 0x71, 0xd0, 0x97, 0x92, 0x75, 0x3c, 0x94, 0xf4, 0xb7, 0x58, 0xc7, 0xc9, + 0xea, 0x9d, 0x83, 0x99, 0x6a, 0x18, 0xd2, 0x20, 0xe2, 0x49, 0xe1, 0xc3, 0x6e, 0x8b, 0x06, 0x62, + 0xae, 0x09, 0x19, 0xc3, 0x9f, 0x16, 0x6f, 0x84, 0x56, 0x5f, 0x44, 0x72, 0x09, 0x0a, 0xd5, 0xae, + 0xeb, 0xd1, 0x76, 0x43, 0xf3, 0xda, 0x77, 0x04, 0xcc, 0x8a, 0x4b, 0xc9, 0x87, 0x70, 0x4a, 0x10, + 0x49, 0x81, 0x23, 0x7a, 0x80, 0xcb, 0x1a, 0x6e, 0xc1, 0x8a, 0xb5, 0x20, 0xc5, 0x94, 0x2d, 0xba, + 0x24, 0x9b, 0x92, 0x54, 0xa1, 0xbc, 0x80, 0xf7, 0xa4, 0xf2, 0x89, 0x60, 0x3f, 0x10, 0x69, 0x7a, + 0x51, 0x72, 0xf1, 0x3b, 0x54, 0xdb, 0x8d, 0x0b, 0xad, 0x1e, 0x74, 0x72, 0x07, 0xa6, 0xd3, 0x30, + 0x26, 0x8f, 0x8b, 0xc9, 0x13, 0x5e, 0x3d, 0x5c, 0x50, 0x30, 0x67, 0x51, 0x91, 0x2d, 0x98, 0xaa, + 0x46, 0x51, 0xe0, 0x6d, 0x75, 0x23, 0x9a, 0x12, 0x5d, 0xf2, 0xa0, 0x31, 0x2e, 0x97, 0xe2, 0xeb, + 0x19, 0x31, 0x19, 0xa7, 0x9d, 0x98, 0x32, 0x16, 0x61, 0x56, 0x2f, 0x3b, 0xe2, 0xc6, 0xaf, 0x00, + 0x8a, 0x97, 0xf2, 0x44, 0xa8, 0x95, 0x3c, 0xd0, 0xad, 0x86, 0x7b, 0xad, 0x16, 0x8d, 0x02, 0xbc, + 0xb9, 0xc7, 0x97, 0xf4, 0x4c, 0xe1, 0x1d, 0x75, 0x4e, 0x79, 0xfc, 0x12, 0x5f, 0x4b, 0xd4, 0x1c, + 0x47, 0x35, 0x9e, 0xda, 0xf6, 0x51, 0x1a, 0x70, 0xfb, 0x68, 0xc2, 0xd4, 0x42, 0xbb, 0x11, 0xec, + 0x61, 0xc8, 0xa4, 0xac, 0xdc, 0xf8, 0x11, 0x95, 0x93, 0x0f, 0x6b, 0x9c, 0x77, 0xe4, 0x0c, 0xcb, + 0xaa, 0x5e, 0x2f, 0x63, 0xf3, 0x6f, 0x41, 0x39, 0xdd, 0x97, 0x8f, 0xf8, 0xf4, 0xf1, 0x71, 0x9c, + 0xd6, 0xd9, 0x48, 0xa7, 0xdb, 0x42, 0xae, 0x69, 0xef, 0xdb, 0x1a, 0x49, 0x44, 0xba, 0xf2, 0x12, + 0xad, 0xf6, 0xaa, 0xad, 0x5c, 0xc6, 0xb9, 0xac, 0x65, 0x6c, 0xfe, 0x6e, 0x0e, 0xa6, 0xb8, 0x9f, + 0xed, 0x93, 0xaf, 0x2b, 0xbe, 0xa7, 0x09, 0x67, 0x79, 0x16, 0x98, 0x6a, 0xdd, 0x21, 0xda, 0xe2, + 0x47, 0x70, 0xaa, 0xa7, 0x2b, 0x50, 0x40, 0xcf, 0x4b, 0x0f, 0xe7, 0x1e, 0x11, 0x3d, 0x93, 0xfd, + 0x91, 0x8d, 0x1b, 0x56, 0x0f, 0x85, 0xf9, 0x4f, 0x72, 0x3d, 0xfc, 0x85, 0xde, 0xa8, 0x6a, 0x82, + 0xc6, 0xf1, 0x34, 0xc1, 0xdc, 0x27, 0xd2, 0x04, 0xf3, 0x83, 0x68, 0x82, 0x1f, 0xc2, 0xf8, 0x1a, + 0x75, 0x98, 0x46, 0x23, 0xc2, 0xf0, 0x86, 0xb4, 0xb7, 0x67, 0x59, 0x99, 0x94, 0x2f, 0x71, 0x08, + 0x6f, 0xc4, 0x08, 0x98, 0x68, 0xe1, 0x71, 0x79, 0x96, 0xce, 0x41, 0xdd, 0x34, 0x86, 0xfb, 0x6f, + 0x1a, 0xe6, 0x37, 0x72, 0x30, 0xa6, 0xb0, 0x27, 0xaf, 0x43, 0x69, 0x25, 0xd8, 0x76, 0xda, 0xde, + 0x6f, 0x38, 0xca, 0xf1, 0x2b, 0x56, 0xdf, 0x57, 0xe0, 0x96, 0x86, 0x85, 0x6e, 0x33, 0xd4, 0x69, + 0xa9, 0x13, 0x9f, 0x55, 0xcf, 0x42, 0xa8, 0x12, 0x46, 0x9d, 0x1f, 0x20, 0x8c, 0x5a, 0x8f, 0x41, + 0x1e, 0x3a, 0x7e, 0x0c, 0xb2, 0x16, 0x32, 0x3c, 0x7c, 0xcc, 0x90, 0x61, 0xf3, 0xf7, 0x73, 0x50, + 0x16, 0xaf, 0xb4, 0xca, 0xc3, 0xc3, 0xa7, 0xeb, 0xc5, 0x06, 0xbd, 0x71, 0x87, 0x5c, 0x8f, 0x0d, + 0x7d, 0xef, 0x4f, 0x2b, 0xf8, 0xe6, 0x66, 0xba, 0x3b, 0xe4, 0x9b, 0x9b, 0x3a, 0x3c, 0x1d, 0x53, + 0x91, 0xa6, 0xb2, 0xd2, 0xf8, 0xe6, 0x8f, 0x73, 0x69, 0xde, 0x42, 0x9b, 0x7a, 0x09, 0x46, 0xf9, + 0xb3, 0x5c, 0xd2, 0xed, 0x5b, 0xe4, 0x6d, 0x42, 0x90, 0x25, 0xcb, 0x8e, 0x13, 0x5d, 0x73, 0xd4, + 0xc3, 0xab, 0xe4, 0x4d, 0xf1, 0x92, 0x4b, 0xd5, 0x75, 0x03, 0x1a, 0x86, 0x42, 0xd1, 0xc2, 0xbb, + 0xbb, 0x07, 0x74, 0xcb, 0xe6, 0x7e, 0x25, 0x8e, 0xeb, 0x06, 0x96, 0x86, 0x47, 0xe6, 0xe0, 0xa4, + 0xe6, 0x9e, 0x24, 0xe9, 0x87, 0x93, 0xdd, 0x22, 0xc2, 0x02, 0x4e, 0x9c, 0x89, 0xfc, 0xf8, 0x1e, + 0x9d, 0x36, 0xff, 0xb7, 0xc1, 0xd6, 0x5a, 0x63, 0xf7, 0x29, 0x8b, 0xfb, 0x61, 0x4d, 0x3a, 0x44, + 0xd9, 0xff, 0x8f, 0x06, 0xf7, 0xdc, 0x17, 0xd3, 0xe7, 0x2d, 0x18, 0xe1, 0x8f, 0x80, 0x09, 0x1f, + 0x73, 0x95, 0x0b, 0x2f, 0x48, 0xee, 0xa7, 0xf8, 0x53, 0x62, 0x96, 0x20, 0x60, 0x26, 0xb3, 0x1e, + 0x40, 0x80, 0x8a, 0x67, 0x6f, 0xe4, 0x80, 0xc4, 0x52, 0x73, 0x92, 0x0e, 0x96, 0xeb, 0xda, 0x38, + 0x3a, 0x27, 0xa9, 0xf9, 0x7f, 0x73, 0xbc, 0x3d, 0xa2, 0x52, 0x83, 0x26, 0xdb, 0xbb, 0x08, 0x43, + 0xf8, 0x78, 0xac, 0x92, 0xd1, 0x30, 0xf5, 0x70, 0x2c, 0x96, 0xb3, 0x75, 0x83, 0xb2, 0x56, 0x0d, + 0x35, 0x43, 0x71, 0xac, 0xae, 0x1b, 0xc4, 0xc0, 0x4c, 0xd2, 0xbe, 0x4b, 0xd5, 0xe5, 0xd0, 0xd6, + 0x93, 0x7e, 0x63, 0x39, 0x79, 0x53, 0xf1, 0x6b, 0x56, 0x0f, 0x34, 0x5a, 0xf7, 0x1c, 0x9b, 0xfb, + 0xd3, 0xaa, 0xd2, 0x36, 0x71, 0x81, 0x5e, 0x80, 0x09, 0x3d, 0x8a, 0x5b, 0x18, 0x1d, 0x18, 0x0c, + 0x9f, 0x8a, 0x00, 0x57, 0xd5, 0x5b, 0x9d, 0x88, 0xd4, 0x60, 0x5c, 0x0b, 0xd5, 0x55, 0x13, 0xb0, + 0xf2, 0xcc, 0x30, 0x76, 0x6f, 0x8e, 0x09, 0x9d, 0x44, 0x39, 0x30, 0x7f, 0x0d, 0xca, 0x62, 0x65, + 0xc6, 0x51, 0x7f, 0xa8, 0xda, 0x2d, 0xce, 0x5b, 0xea, 0x6a, 0x6a, 0x78, 0x6e, 0x60, 0x21, 0xd4, + 0xfc, 0x8e, 0x01, 0x67, 0xc5, 0xe3, 0x66, 0x16, 0x0d, 0x99, 0x0e, 0x89, 0xa1, 0x82, 0x38, 0x1f, + 0x5f, 0x27, 0xef, 0xc8, 0xa4, 0x53, 0xba, 0x80, 0x4c, 0x7f, 0xa3, 0x36, 0x2e, 0x26, 0xe5, 0x30, + 0xa6, 0x9d, 0x92, 0xc9, 0xa6, 0xde, 0x12, 0xc9, 0xa6, 0x72, 0x87, 0x13, 0xc7, 0xeb, 0xc2, 0xa5, + 0x6d, 0x99, 0x64, 0xea, 0xdb, 0x39, 0x38, 0x95, 0x51, 0xad, 0x8d, 0xd7, 0x9f, 0x50, 0xe1, 0x50, + 0xd3, 0x84, 0x83, 0xcc, 0x46, 0xd8, 0xb7, 0xe3, 0x33, 0x65, 0xc5, 0x1f, 0x1b, 0x70, 0x46, 0x9f, + 0x3d, 0xc2, 0x16, 0xdd, 0xb8, 0x41, 0xde, 0x86, 0x91, 0xdb, 0xd4, 0x71, 0xa9, 0x0c, 0x4e, 0x89, + 0x33, 0x7b, 0x89, 0xd3, 0x61, 0x5e, 0xc8, 0xd9, 0xfe, 0x98, 0x2f, 0xe5, 0x13, 0x96, 0x20, 0x21, + 0xf3, 0xa2, 0x72, 0xfc, 0x7a, 0xca, 0x94, 0x37, 0x35, 0x59, 0x9f, 0x3a, 0x44, 0x31, 0xfe, 0x2a, + 0x3c, 0x73, 0x08, 0x09, 0x1b, 0x37, 0x36, 0xf2, 0xea, 0xb8, 0xe1, 0xbe, 0x82, 0x50, 0xf2, 0x1e, + 0x4c, 0xae, 0x89, 0x10, 0x3a, 0x39, 0x1a, 0x4a, 0x62, 0x77, 0x19, 0x5d, 0x67, 0xcb, 0x61, 0x49, + 0x23, 0x63, 0x40, 0x98, 0xfe, 0xf5, 0x47, 0xed, 0x94, 0x77, 0xb5, 0x4e, 0x79, 0x26, 0xbb, 0x53, + 0xfa, 0xf7, 0x46, 0x4f, 0x96, 0x8a, 0x81, 0xba, 0xc1, 0x84, 0x91, 0x79, 0xbf, 0xe5, 0x78, 0x6d, + 0x35, 0xff, 0x81, 0x8b, 0x10, 0x4b, 0x94, 0x98, 0xdf, 0x1a, 0x82, 0xb3, 0x3c, 0xb4, 0x84, 0x06, + 0xeb, 0xa1, 0xd7, 0xde, 0xd6, 0x2e, 0x6a, 0xd0, 0x3d, 0x4d, 0x49, 0x31, 0x2e, 0xdc, 0xd3, 0x18, + 0xc4, 0x12, 0x25, 0xcc, 0x92, 0x60, 0xa2, 0x4f, 0xf1, 0xf4, 0x43, 0x4b, 0x02, 0x13, 0xf4, 0xa0, + 0x95, 0x1a, 0x17, 0x93, 0x2b, 0x42, 0x30, 0x2b, 0x0e, 0xc4, 0x4c, 0x30, 0xa7, 0x1e, 0xd7, 0xe6, + 0xc2, 0x39, 0xd6, 0x54, 0x86, 0xfa, 0x68, 0x2a, 0x77, 0xe1, 0x64, 0xd5, 0xe5, 0x8b, 0xde, 0x69, + 0xae, 0x06, 0x5e, 0xbb, 0xe1, 0x75, 0x9c, 0xa6, 0xd4, 0x74, 0xf9, 0x53, 0xe3, 0x71, 0xb9, 0xdd, + 0x89, 0x11, 0xac, 0x4c, 0x32, 0xd6, 0x8c, 0xf9, 0xe5, 0x3a, 0xcf, 0xbf, 0x32, 0x82, 0x2c, 0xb0, + 0x19, 0x6e, 0x3b, 0xe4, 0x09, 0x58, 0xac, 0xb8, 0x18, 0x75, 0x24, 0x8c, 0x21, 0x58, 0x5b, 0xaa, + 0xdf, 0x11, 0x3e, 0xf9, 0xd2, 0xbf, 0x89, 0x87, 0x1c, 0x44, 0xcd, 0x10, 0x8d, 0x62, 0x0d, 0x2f, + 0xa1, 0xab, 0xd7, 0x6f, 0x33, 0xba, 0x42, 0x0f, 0x5d, 0x18, 0xee, 0xa8, 0x74, 0x1c, 0x8f, 0xd9, + 0xdf, 0xdc, 0x43, 0x04, 0xc7, 0xba, 0x98, 0x68, 0x54, 0x01, 0x42, 0xb9, 0x46, 0xa5, 0xa0, 0x90, + 0x77, 0x60, 0x7a, 0x61, 0x6e, 0x56, 0x3a, 0xdb, 0xcf, 0xfb, 0x8d, 0x6e, 0x8b, 0xb6, 0x23, 0x0c, + 0xfe, 0x10, 0xd1, 0x53, 0xb4, 0x31, 0xcb, 0x8c, 0xbc, 0x2c, 0x34, 0xe1, 0x72, 0xcf, 0x43, 0xd9, + 0xe6, 0x7c, 0x97, 0x86, 0x1b, 0xd7, 0x9f, 0x32, 0x97, 0x7b, 0xa5, 0x6d, 0xb8, 0x90, 0xae, 0x67, + 0x2e, 0xba, 0xbf, 0x87, 0x2e, 0xf7, 0x3d, 0xb8, 0xe4, 0x57, 0x61, 0x18, 0x7f, 0x8a, 0x6d, 0x6c, + 0x3a, 0x83, 0x6d, 0xb2, 0x85, 0x35, 0x78, 0x2a, 0x0d, 0x24, 0x20, 0x8b, 0x49, 0x36, 0xf8, 0x63, + 0x38, 0x8e, 0x8a, 0x78, 0x58, 0xfd, 0x19, 0x10, 0x17, 0x4a, 0xea, 0x07, 0xd9, 0x1c, 0xb9, 0xed, + 0x84, 0x3b, 0xd4, 0x9d, 0x93, 0xcf, 0xfe, 0x95, 0xf8, 0x1c, 0xd9, 0x41, 0x28, 0x3e, 0x51, 0x62, + 0x29, 0x28, 0xe4, 0x05, 0x18, 0x59, 0x0c, 0xd7, 0x43, 0x51, 0x15, 0x61, 0x5a, 0x78, 0x68, 0x12, + 0xba, 0x96, 0x28, 0x42, 0x41, 0x28, 0x93, 0x21, 0x06, 0x4e, 0x63, 0x97, 0x06, 0x1b, 0xd7, 0x3f, + 0x0d, 0x41, 0xa8, 0x7f, 0xe3, 0x90, 0x31, 0xf9, 0x83, 0x42, 0x9c, 0x09, 0x46, 0x43, 0x66, 0x8a, + 0x57, 0x72, 0xdd, 0x6d, 0x24, 0x8a, 0x57, 0x72, 0xdd, 0xad, 0x2a, 0x5e, 0x31, 0x6a, 0x9c, 0x8a, + 0x36, 0x77, 0x44, 0x2a, 0xda, 0x3e, 0xd9, 0xaf, 0xa5, 0xa7, 0xe4, 0x53, 0xf4, 0x10, 0xc0, 0x67, + 0xa1, 0x54, 0x8d, 0x22, 0xa7, 0xb1, 0x43, 0x5d, 0x4c, 0x79, 0xac, 0xdc, 0xb2, 0x39, 0x02, 0xae, + 0xfa, 0x60, 0xa9, 0xb8, 0xca, 0x43, 0x20, 0xa3, 0x03, 0x3c, 0x04, 0x72, 0x0d, 0x46, 0x17, 0xdb, + 0xf7, 0x3d, 0xd6, 0x27, 0x85, 0x24, 0x17, 0x85, 0xc7, 0x41, 0xfa, 0xeb, 0x11, 0x08, 0x22, 0x6f, + 0x41, 0x81, 0x6d, 0x3a, 0x18, 0x55, 0x5d, 0x4c, 0xf4, 0x63, 0xf1, 0x0c, 0xf2, 0x8e, 0x28, 0x52, + 0x0f, 0x71, 0x25, 0x3a, 0x79, 0x13, 0x46, 0xa5, 0x49, 0x0a, 0x89, 0x4e, 0x2c, 0x28, 0x1d, 0x5e, + 0xa2, 0xa5, 0xbf, 0x10, 0x26, 0xe9, 0x3b, 0x7a, 0x50, 0xc6, 0x98, 0x12, 0x06, 0xae, 0x04, 0x65, + 0x68, 0x61, 0xe0, 0x4a, 0x78, 0x46, 0x6c, 0x61, 0x94, 0x8e, 0xb4, 0x30, 0x36, 0xa0, 0xb4, 0xea, + 0x04, 0x91, 0xc7, 0xb6, 0xa3, 0x76, 0xc4, 0xb3, 0x78, 0x25, 0x06, 0xb0, 0x52, 0x54, 0x7b, 0x4e, + 0x86, 0x43, 0x77, 0x14, 0x7c, 0x3d, 0x84, 0x35, 0x81, 0x93, 0xe5, 0x0c, 0xb7, 0x3d, 0x91, 0x55, + 0x11, 0xef, 0xd5, 0x94, 0xd3, 0x20, 0xd1, 0x22, 0xf5, 0x7c, 0xba, 0xd7, 0xe3, 0xef, 0x06, 0x1f, + 0x03, 0x34, 0xc4, 0x26, 0x91, 0x0d, 0x26, 0x33, 0xc1, 0xf7, 0x3f, 0x53, 0xd6, 0x58, 0x8c, 0x48, + 0xbe, 0x0c, 0x25, 0xf6, 0x3f, 0xa6, 0x34, 0xf2, 0x28, 0xcf, 0xd2, 0x95, 0xb8, 0x71, 0xe9, 0x0b, + 0x9a, 0xe7, 0x3d, 0xaa, 0xd3, 0x88, 0x2f, 0x60, 0x64, 0x9c, 0x3e, 0xcd, 0xd0, 0xb8, 0x99, 0x3f, + 0x33, 0xe0, 0x4c, 0x1f, 0x1e, 0x03, 0x3f, 0x01, 0x74, 0x2d, 0xd9, 0x90, 0x14, 0x83, 0x57, 0x6c, + 0x48, 0xea, 0xc4, 0x90, 0x5b, 0x53, 0x76, 0x7e, 0xad, 0xfc, 0xa7, 0x96, 0x5f, 0xcb, 0xdc, 0x37, + 0x60, 0x4c, 0x19, 0xd9, 0xc7, 0x98, 0xd9, 0xff, 0xa2, 0x78, 0x2c, 0x36, 0x9f, 0xe0, 0xa5, 0x1e, + 0x15, 0xe6, 0xcf, 0xc6, 0x7e, 0x04, 0xb0, 0xe4, 0x84, 0x51, 0xb5, 0x11, 0x79, 0xf7, 0xe9, 0x00, + 0x62, 0x2c, 0xc9, 0x0b, 0xe0, 0x60, 0x66, 0x52, 0x46, 0xd6, 0x93, 0x17, 0x20, 0x66, 0x78, 0xe5, + 0x7d, 0x98, 0x94, 0xb9, 0xe9, 0xd6, 0x96, 0xea, 0xf8, 0xc5, 0x49, 0x18, 0xdb, 0x58, 0xb0, 0x16, + 0x6f, 0x7e, 0xc1, 0xbe, 0xb9, 0xbe, 0xb4, 0x54, 0x3e, 0x41, 0xc6, 0xa1, 0x28, 0x00, 0x73, 0xd5, + 0xb2, 0x41, 0x4a, 0x50, 0x58, 0x5c, 0xae, 0x2f, 0xcc, 0xad, 0x5b, 0x0b, 0xe5, 0xdc, 0x95, 0x97, + 0x60, 0x22, 0xb9, 0x84, 0xc0, 0x40, 0xc5, 0x51, 0xc8, 0x5b, 0xd5, 0xcd, 0xf2, 0x09, 0x02, 0x30, + 0xb2, 0x7a, 0x67, 0xae, 0x7e, 0xfd, 0x7a, 0xd9, 0xb8, 0x72, 0x59, 0x7f, 0xac, 0x98, 0x31, 0x91, + 0x8f, 0x06, 0x96, 0x4f, 0x90, 0xb1, 0xf8, 0xcc, 0xad, 0x6c, 0x5c, 0x79, 0x2d, 0xe3, 0x91, 0x66, + 0x86, 0x5f, 0xa7, 0x1d, 0x27, 0x70, 0x22, 0xca, 0x6b, 0x74, 0xb7, 0xdb, 0x8c, 0xbc, 0x4e, 0x93, + 0x3e, 0x2c, 0x1b, 0x57, 0xde, 0xea, 0x79, 0x6b, 0x99, 0x9c, 0x82, 0xa9, 0xf5, 0xe5, 0xea, 0xdd, + 0xda, 0xe2, 0xad, 0xf5, 0x95, 0xf5, 0xba, 0x7d, 0xb7, 0xba, 0x36, 0x77, 0xbb, 0x7c, 0x82, 0xb5, + 0xed, 0xee, 0x4a, 0x7d, 0xcd, 0xb6, 0x16, 0xe6, 0x16, 0x96, 0xd7, 0xca, 0xc6, 0x15, 0x1f, 0x26, + 0xf4, 0x87, 0xe3, 0xc8, 0x05, 0x38, 0xbf, 0x5e, 0x5f, 0xb0, 0xec, 0xb5, 0x95, 0x3b, 0x0b, 0xcb, + 0xf6, 0x7a, 0xbd, 0x7a, 0x6b, 0xc1, 0x5e, 0x5f, 0xae, 0xaf, 0x2e, 0xcc, 0x2d, 0xde, 0x5c, 0x5c, + 0x98, 0x2f, 0x9f, 0x20, 0x15, 0x78, 0x46, 0xc1, 0xb0, 0x16, 0xe6, 0x56, 0x36, 0x16, 0x2c, 0x7b, + 0xb5, 0x5a, 0xaf, 0x6f, 0xae, 0x58, 0xf3, 0x65, 0x83, 0x9c, 0x83, 0xd3, 0x19, 0x08, 0x77, 0x6f, + 0x56, 0xcb, 0xb9, 0x2b, 0xef, 0x33, 0x1d, 0x22, 0x79, 0xbd, 0x81, 0x14, 0x60, 0x68, 0x79, 0x65, + 0x79, 0x81, 0x77, 0xc2, 0xea, 0xc2, 0xf2, 0xfc, 0xe2, 0xf2, 0x2d, 0xde, 0xc9, 0xd5, 0xd5, 0x55, + 0x6b, 0x65, 0x63, 0x61, 0xbe, 0x9c, 0x63, 0x3d, 0x39, 0xbf, 0xb0, 0xcc, 0xbe, 0x9e, 0xbf, 0xf2, + 0x65, 0x28, 0xa9, 0x1b, 0x20, 0x39, 0x03, 0xd3, 0xea, 0xef, 0x55, 0xda, 0x76, 0xbd, 0xf6, 0x76, + 0xf9, 0x44, 0xba, 0xc0, 0xea, 0xb6, 0xdb, 0xac, 0x00, 0xab, 0xa7, 0x16, 0xac, 0xd1, 0xa0, 0xe5, + 0xb5, 0xd9, 0xde, 0x56, 0xce, 0xd5, 0xca, 0x3f, 0xfa, 0xc9, 0x73, 0x27, 0x7e, 0xf4, 0xd3, 0xe7, + 0x8c, 0x1f, 0xff, 0xf4, 0x39, 0xe3, 0x7f, 0xfc, 0xf4, 0x39, 0x63, 0x6b, 0x04, 0x27, 0xd9, 0x8d, + 0xff, 0x1f, 0x00, 0x00, 0xff, 0xff, 0x5e, 0x10, 0x59, 0x67, 0xe6, 0xb3, 0x00, 0x00, } func (m *KeepAlive) Marshal() (dAtA []byte, err error) { @@ -10785,6 +10788,13 @@ func (m *ServerSpecV2) MarshalToSizedBuffer(dAtA []byte) (int, error) { i -= len(m.XXX_unrecognized) copy(dAtA[i:], m.XXX_unrecognized) } + if len(m.PeerAddr) > 0 { + i -= len(m.PeerAddr) + copy(dAtA[i:], m.PeerAddr) + i = encodeVarintTypes(dAtA, i, uint64(len(m.PeerAddr))) + i-- + dAtA[i] = 0x5a + } if len(m.KubernetesClusters) > 0 { for iNdEx := len(m.KubernetesClusters) - 1; iNdEx >= 0; iNdEx-- { { @@ -20640,6 +20650,10 @@ func (m *ServerSpecV2) Size() (n int) { n += 1 + l + sovTypes(uint64(l)) } } + l = len(m.PeerAddr) + if l > 0 { + n += 1 + l + sovTypes(uint64(l)) + } if m.XXX_unrecognized != nil { n += len(m.XXX_unrecognized) } @@ -29041,6 +29055,38 @@ func (m *ServerSpecV2) Unmarshal(dAtA []byte) error { return err } iNdEx = postIndex + case 11: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field PeerAddr", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTypes + } + 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 ErrInvalidLengthTypes + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthTypes + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.PeerAddr = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipTypes(dAtA[iNdEx:]) diff --git a/api/types/types.proto b/api/types/types.proto index 628e4916ff26..a31fdeb21197 100644 --- a/api/types/types.proto +++ b/api/types/types.proto @@ -394,6 +394,8 @@ message ServerSpecV2 { // https://github.com/gravitational/teleport/issues/4862 repeated KubernetesCluster KubernetesClusters = 10 [ (gogoproto.jsontag) = "kube_clusters,omitempty" ]; + // PeerAddr is the address a proxy server is reachable at by its peer proxies. + string PeerAddr = 11 [ (gogoproto.jsontag) = "peer_addr,omitempty" ]; } // AppServerV3 represents a single proxied web app. diff --git a/lib/service/service.go b/lib/service/service.go index 60155efd96c0..df454f1e94dd 100644 --- a/lib/service/service.go +++ b/lib/service/service.go @@ -3018,6 +3018,41 @@ func (process *TeleportProcess) initProxyEndpoint(conn *Connector) error { log.Info("Web UI is disabled.") } + var peerAddr string + var proxyServer *proxy.Server + if listeners.proxy != nil { + peerAddr = listeners.proxy.Addr().String() + proxyServer, err = proxy.NewServer(proxy.ServerConfig{ + AccessCache: accessPoint, + Listener: listeners.proxy, + TLSConfig: serverTLSConfig, + ClusterDialer: proxy.NewClusterDialer(tsrv), + }) + if err != nil { + return trace.Wrap(err) + } + + eventC := make(chan Event) + process.WaitForEvent(process.ExitContext(), ProxyReverseTunnelReady, eventC) + + process.RegisterCriticalFunc("proxy.peer", func() error { + select { + case <-process.ExitContext().Done(): + log.Debugf("Process exiting: failed to start peer proxy service waiting for reverse tunnel server") + return nil + case <-eventC: + } + + log.Infof("Peer proxy service is starting on %s", listeners.proxy.Addr().String()) + err := proxyServer.Serve() + if err != nil { + return trace.Wrap(err) + } + + return nil + }) + } + sshProxy, err := regular.New(cfg.Proxy.SSHAddr, cfg.Hostname, []ssh.Signer{conn.ServerIdentity.KeySigner}, @@ -3027,7 +3062,7 @@ func (process *TeleportProcess) initProxyEndpoint(conn *Connector) error { process.proxyPublicAddr(), conn.Client, regular.SetLimiter(proxyLimiter), - regular.SetProxyMode(tsrv, accessPoint), + regular.SetProxyMode(peerAddr, tsrv, accessPoint), regular.SetSessionServer(conn.Client), regular.SetCiphers(cfg.Ciphers), regular.SetKEXAlgorithms(cfg.KEXAlgorithms), @@ -3053,39 +3088,6 @@ func (process *TeleportProcess) initProxyEndpoint(conn *Connector) error { return nil }) - var proxyServer *proxy.Server - if listeners.proxy != nil { - proxyServer, err = proxy.NewServer(proxy.ServerConfig{ - AccessCache: accessPoint, - Listener: listeners.proxy, - TLSConfig: serverTLSConfig, - ClusterDialer: proxy.NewClusterDialer(tsrv), - }) - if err != nil { - return trace.Wrap(err) - } - - eventC := make(chan Event) - process.WaitForEvent(process.ExitContext(), ProxyReverseTunnelReady, eventC) - - process.RegisterCriticalFunc("proxy.peer", func() error { - select { - case <-process.ExitContext().Done(): - log.Debugf("Process exiting: failed to start peer proxy service waiting for reverse tunnel server") - return nil - case <-eventC: - } - - log.Infof("Peer proxy service is starting on %s", listeners.proxy.Addr().String()) - err := proxyServer.Serve() - if err != nil { - return trace.Wrap(err) - } - - return nil - }) - } - rcWatchLog := logrus.WithFields(logrus.Fields{ trace.Component: teleport.Component(teleport.ComponentReverseTunnelAgent, process.id), }) diff --git a/lib/srv/regular/sshserver.go b/lib/srv/regular/sshserver.go index 8e3d0cd72981..0508177497c4 100644 --- a/lib/srv/regular/sshserver.go +++ b/lib/srv/regular/sshserver.go @@ -102,6 +102,7 @@ type Server struct { proxyMode bool proxyTun reversetunnel.Tunnel proxyAccessPoint auth.ReadProxyAccessPoint + peerAddr string advertiseAddr *utils.NetAddr proxyPublicAddr utils.NetAddr @@ -392,7 +393,7 @@ func SetSessionServer(sessionServer rsession.Service) ServerOption { } // SetProxyMode starts this server in SSH proxying mode -func SetProxyMode(tsrv reversetunnel.Tunnel, ap auth.ReadProxyAccessPoint) ServerOption { +func SetProxyMode(peerAddr string, tsrv reversetunnel.Tunnel, ap auth.ReadProxyAccessPoint) ServerOption { return func(s *Server) error { // always set proxy mode to true, // because in some tests reverse tunnel is disabled, @@ -400,6 +401,7 @@ func SetProxyMode(tsrv reversetunnel.Tunnel, ap auth.ReadProxyAccessPoint) Serve s.proxyMode = true s.proxyTun = tsrv s.proxyAccessPoint = ap + s.peerAddr = peerAddr return nil } } @@ -840,6 +842,7 @@ func (s *Server) getServerInfo() (types.Resource, error) { } server.SetExpiry(s.clock.Now().UTC().Add(apidefaults.ServerAnnounceTTL)) server.SetPublicAddr(s.proxyPublicAddr.String()) + server.SetPeerAddr(s.peerAddr) return server, nil } diff --git a/lib/srv/regular/sshserver_test.go b/lib/srv/regular/sshserver_test.go index 10542fe9c2ce..c80524c32b9c 100644 --- a/lib/srv/regular/sshserver_test.go +++ b/lib/srv/regular/sshserver_test.go @@ -1124,7 +1124,7 @@ func TestProxyRoundRobin(t *testing.T) { "", utils.NetAddr{}, nil, - SetProxyMode(reverseTunnelServer, proxyClient), + SetProxyMode("", reverseTunnelServer, proxyClient), SetSessionServer(proxyClient), SetEmitter(nodeClient), SetNamespace(apidefaults.Namespace), @@ -1248,7 +1248,7 @@ func TestProxyDirectAccess(t *testing.T) { "", utils.NetAddr{}, nil, - SetProxyMode(reverseTunnelServer, proxyClient), + SetProxyMode("", reverseTunnelServer, proxyClient), SetSessionServer(proxyClient), SetEmitter(nodeClient), SetNamespace(apidefaults.Namespace), diff --git a/lib/web/apiserver_test.go b/lib/web/apiserver_test.go index cf75405ac14f..0eeff50267d3 100644 --- a/lib/web/apiserver_test.go +++ b/lib/web/apiserver_test.go @@ -299,7 +299,7 @@ func (s *WebSuite) SetUpTest(c *C) { utils.NetAddr{}, nil, regular.SetUUID(proxyID), - regular.SetProxyMode(revTunServer, s.proxyClient), + regular.SetProxyMode("", revTunServer, s.proxyClient), regular.SetSessionServer(s.proxyClient), regular.SetEmitter(s.proxyClient), regular.SetNamespace(apidefaults.Namespace), @@ -3303,7 +3303,7 @@ func createProxy(ctx context.Context, t *testing.T, proxyID string, node *regula utils.NetAddr{}, nil, regular.SetUUID(proxyID), - regular.SetProxyMode(revTunServer, client), + regular.SetProxyMode("", revTunServer, client), regular.SetSessionServer(client), regular.SetEmitter(client), regular.SetNamespace(apidefaults.Namespace), From 39555e5f1decac8ab2794dee733ac936c6a7b083 Mon Sep 17 00:00:00 2001 From: David Date: Thu, 10 Mar 2022 14:45:50 -0700 Subject: [PATCH 06/30] Fix error handling --- lib/proxy/auth.go | 10 ++++-- lib/proxy/conn.go | 72 ++++++++++++++++++++++++++------------------ lib/proxy/service.go | 13 +++++--- 3 files changed, 59 insertions(+), 36 deletions(-) diff --git a/lib/proxy/auth.go b/lib/proxy/auth.go index 8ee84c03151f..1868cdbb9881 100644 --- a/lib/proxy/auth.go +++ b/lib/proxy/auth.go @@ -49,7 +49,10 @@ func (c *proxyCredentials) ServerHandshake(conn net.Conn) (net.Conn, credentials } err = checkProxyRole(authInfo) - return conn, authInfo, trace.Wrap(err) + if err != nil { + return nil, nil, trace.Wrap(err) + } + return conn, authInfo, nil } // ServerHandshake wraps a client handshake with an additional check for the @@ -61,7 +64,10 @@ func (c *proxyCredentials) ClientHandshake(ctx context.Context, laddr string, co } err = checkProxyRole(authInfo) - return conn, authInfo, trace.Wrap(err) + if err != nil { + return nil, nil, trace.Wrap(err) + } + return conn, authInfo, nil } // checkProxyRole checks the authInfo for a certificate with the role types.RoleProxy. diff --git a/lib/proxy/conn.go b/lib/proxy/conn.go index 5d58b128a0a3..60d8f062222c 100644 --- a/lib/proxy/conn.go +++ b/lib/proxy/conn.go @@ -51,6 +51,7 @@ type streamConn struct { once sync.Once wg sync.WaitGroup + err error } // newStreamConn creates a new streamConn. @@ -66,30 +67,32 @@ func newStreamConn(stream Stream, src net.Addr, dst net.Addr) *streamConn { } // start begins copying data between the grpc stream and internal pipe. -func (c *streamConn) start() { +func (c *streamConn) start() error { + var ( + sendErr error + receiveErr error + ) c.wg.Add(2) + go func() { defer c.Close() - c.receive(c.stream) + receiveErr = c.receive(c.stream) c.wg.Done() }() go func() { defer c.Close() - c.send(c.stream) + sendErr = c.send(c.stream) c.wg.Done() }() + c.wg.Wait() + return trace.NewAggregate(sendErr, receiveErr) } // receive reveives data from the stream and copies it to the internal pipe. func (c *streamConn) receive(stream Stream) error { - var ( - frame *proto.Frame - err error - ) - for { - frame, err = stream.Recv() + frame, err := stream.Recv() if err != nil { return trace.Wrap(err) } @@ -99,18 +102,15 @@ func (c *streamConn) receive(stream Stream) error { return trace.Errorf("failed to get data from tunnel frame") } - _, err := c.remote.Write(data.Bytes) + _, err = c.remote.Write(data.Bytes) if err != nil { return trace.Wrap(err) } - - frame = nil } } // send reads data from the internal pipe and sends it over the stream. func (c *streamConn) send(stream Stream) error { - var frame *proto.Frame b := make([]byte, bufferSize) for { @@ -119,7 +119,11 @@ func (c *streamConn) send(stream Stream) error { return trace.Wrap(err) } - frame = &proto.Frame{Message: &proto.Frame_Data{Data: &proto.Data{Bytes: b[:n]}}} + if n == 0 { + continue + } + + frame := &proto.Frame{Message: &proto.Frame_Data{Data: &proto.Data{Bytes: b[:n]}}} err = stream.Send(frame) if err != nil { return trace.Wrap(err) @@ -139,20 +143,21 @@ func (c *streamConn) Write(b []byte) (n int, err error) { // Close cleans up resources used by the connection. func (c *streamConn) Close() error { - var err error c.once.Do(func() { - err = c.close() + err := c.close() + c.err = err }) c.wg.Wait() - return trace.Wrap(err) + return trace.Wrap(c.err) } // close cleans up resources used by the connection. func (c *streamConn) close() error { - c.local.Close() - c.remote.Close() - return nil + localErr := c.local.Close() + remoteErr := c.remote.Close() + + return trace.NewAggregate(localErr, remoteErr) } // LocalAddr is the original source address of the client. @@ -178,31 +183,40 @@ func (c *streamConn) SetWriteDeadline(t time.Time) error { } // pipeConn copies between two ReadWriteCloser and closes them when done. -func pipeConn(ctx context.Context, src io.ReadWriteCloser, dst io.ReadWriteCloser) (int64, int64) { +func pipeConn(ctx context.Context, src net.Conn, dst net.Conn) (int64, int64, error) { var ( sent, received int64 wg sync.WaitGroup o sync.Once ) - cleanup := func() { + errC := make(chan error) + cleanup := func(err error) { o.Do(func() { src.Close() dst.Close() + errC <- err + close(errC) }) } wg.Add(2) go func() { - sent, _ = io.Copy(src, dst) - cleanup() + var err error + sent, err = io.Copy(src, dst) + cleanup(trace.ConnectionProblem( + err, "failed copy to source %s", src.RemoteAddr().String(), + )) wg.Done() }() go func() { - received, _ = io.Copy(dst, src) - cleanup() + var err error + received, err = io.Copy(dst, src) + cleanup(trace.ConnectionProblem( + err, "failed copy to destination %s", dst.RemoteAddr().String(), + )) wg.Done() }() @@ -214,11 +228,11 @@ func pipeConn(ctx context.Context, src io.ReadWriteCloser, dst io.ReadWriteClose select { case <-ctx.Done(): + cleanup(nil) case <-wait: } - cleanup() <-wait - - return sent, received + err := <-errC + return sent, received, trace.Wrap(err) } diff --git a/lib/proxy/service.go b/lib/proxy/service.go index f6dd0b676ff6..d06a5ba013d5 100644 --- a/lib/proxy/service.go +++ b/lib/proxy/service.go @@ -41,11 +41,11 @@ func (s *proxyService) DialNode(stream proto.ProxyService_DialNodeServer) error // The first frame is always expected to be a dial request. dial := frame.GetDialRequest() if dial == nil { - return trace.BadParameter("invalid dial request") + return trace.BadParameter("invalid dial request: request must not be nil") } if dial.Source == nil || dial.Destination == nil { - return trace.BadParameter("invalid dial request") + return trace.BadParameter("invalid dial request: source and destinatation must not be nil") } log := s.log.WithFields(logrus.Fields{ @@ -80,11 +80,14 @@ func (s *proxyService) DialNode(stream proto.ProxyService_DialNodeServer) error } streamConn := newStreamConn(stream, source, destination) - go streamConn.start() + go func() { + err := streamConn.start() + log.WithError(err).Debug("Stream connection exited.") + }() - sent, received := pipeConn(stream.Context(), streamConn, nodeConn) + sent, received, err := pipeConn(stream.Context(), streamConn, nodeConn) log.Debugf("Closing dial request from peer. sent: %d reveived %d", sent, received) - return nil + return trace.Wrap(err) } // splitServerID splits a server id in to a node id and cluster name. From fce75dca4e70321c0700dff243a8a6da3c6a53f6 Mon Sep 17 00:00:00 2001 From: David Date: Thu, 10 Mar 2022 14:48:08 -0700 Subject: [PATCH 07/30] Fix tests --- lib/proxy/server_test.go | 38 +++++++++++++++----------------------- lib/proxy/service_test.go | 34 +++++++++++++++++++--------------- 2 files changed, 34 insertions(+), 38 deletions(-) diff --git a/lib/proxy/server_test.go b/lib/proxy/server_test.go index e986385acfaa..473764ebda3e 100644 --- a/lib/proxy/server_test.go +++ b/lib/proxy/server_test.go @@ -32,7 +32,6 @@ import ( "github.com/gravitational/teleport/lib/defaults" "github.com/gravitational/teleport/lib/fixtures" "github.com/gravitational/teleport/lib/tlsca" - "github.com/gravitational/trace" "github.com/jonboulle/clockwork" "github.com/stretchr/testify/require" "golang.org/x/crypto/ssh" @@ -41,21 +40,18 @@ import ( ) // newSelfSignedCA creates a new CA for testing. -func newSelfSignedCA() (*tlsca.CertAuthority, error) { +func newSelfSignedCA(t *testing.T) (*tlsca.CertAuthority, error) { rsaKey, err := ssh.ParseRawPrivateKey(fixtures.PEMBytes["rsa"]) - if err != nil { - return nil, trace.Wrap(err) - } + require.NoError(t, err) + cert, err := tlsca.GenerateSelfSignedCAWithSigner( rsaKey.(*rsa.PrivateKey), pkix.Name{}, nil, defaults.CATTL, ) - if err != nil { - return nil, trace.Wrap(err) - } + require.NoError(t, err) + ca, err := tlsca.FromCertAndSigner(cert, rsaKey.(*rsa.PrivateKey)) - if err != nil { - return nil, trace.Wrap(err) - } + require.NoError(t, err) + return ca, nil } @@ -105,17 +101,17 @@ type mockAccessCache struct { // TestServerTLS ensures that only trusted certificates with the proxy role // are accepted by the server. func TestServerTLS(t *testing.T) { - ca1, err := newSelfSignedCA() + ca1, err := newSelfSignedCA(t) require.NoError(t, err) - ca2, err := newSelfSignedCA() + ca2, err := newSelfSignedCA(t) require.NoError(t, err) tests := []struct { desc string server *tls.Config client *tls.Config - expectErr bool + assertErr require.ErrorAssertionFunc }{ { desc: "trusted certificates with proxy roles", @@ -125,7 +121,7 @@ func TestServerTLS(t *testing.T) { client: certFromIdentity(t, ca1, tlsca.Identity{ Groups: []string{string(types.RoleProxy)}, }), - expectErr: false, + assertErr: require.NoError, }, { desc: "trusted certificates with incorrect server role", @@ -135,7 +131,7 @@ func TestServerTLS(t *testing.T) { client: certFromIdentity(t, ca1, tlsca.Identity{ Groups: []string{string(types.RoleProxy)}, }), - expectErr: true, + assertErr: require.Error, }, { desc: "certificates with correct role from different CAs", @@ -145,7 +141,7 @@ func TestServerTLS(t *testing.T) { client: certFromIdentity(t, ca2, tlsca.Identity{ Groups: []string{string(types.RoleProxy)}, }), - expectErr: true, + assertErr: require.Error, }, } @@ -180,12 +176,8 @@ func TestServerTLS(t *testing.T) { defer conn.Close() client := proto.NewProxyServiceClient(conn) - _, err = client.DialNode(context.TODO()) - if tc.expectErr { - require.Error(t, err, tc.desc) - } else { - require.NoError(t, err, tc.desc) - } + _, err = client.DialNode(context.Background()) + tc.assertErr(t, err, tc.desc) }() } } diff --git a/lib/proxy/service_test.go b/lib/proxy/service_test.go index d20754ae1796..043229788030 100644 --- a/lib/proxy/service_test.go +++ b/lib/proxy/service_test.go @@ -64,7 +64,7 @@ func setupService(t *testing.T) (*proxyService, proto.ProxyServiceClient) { func TestInvalidFirstFrame(t *testing.T) { _, client := setupService(t) - stream, err := client.DialNode(context.TODO()) + stream, err := client.DialNode(context.Background()) require.NoError(t, err) err = stream.Send(&proto.Frame{ @@ -78,7 +78,7 @@ func TestInvalidFirstFrame(t *testing.T) { func TestSendReceive(t *testing.T) { service, client := setupService(t) - stream, err := client.DialNode(context.TODO()) + stream, err := client.DialNode(context.Background()) require.NoError(t, err) dialRequest := &proto.DialRequest{ @@ -107,17 +107,21 @@ func TestSendReceive(t *testing.T) { }}) require.NoError(t, err) - err = stream.Send(&proto.Frame{Message: &proto.Frame_Data{Data: &proto.Data{ - Bytes: send, - }}}) - require.NoError(t, err) - - b := make([]byte, 4) - local.Read(b) - require.Equal(t, send, b, "unexpected bytes sent") - - local.Write(recv) - msg, err := stream.Recv() - require.NoError(t, err) - require.Equal(t, recv, msg.GetData().Bytes, "unexpected bytes received") + for i := 0; i < 10; i++ { + send := append(send, byte(i)) + err = stream.Send(&proto.Frame{Message: &proto.Frame_Data{Data: &proto.Data{ + Bytes: send, + }}}) + require.NoError(t, err) + + b := make([]byte, len(send)) + local.Read(b) + require.Equal(t, send, b, "unexpected bytes sent") + + recv := append(recv, byte(i)) + local.Write(recv) + msg, err := stream.Recv() + require.NoError(t, err) + require.Equal(t, recv, msg.GetData().Bytes, "unexpected bytes received") + } } From c5ad1d1f8e61a1ac42773afbf2d20215c692acd0 Mon Sep 17 00:00:00 2001 From: David Date: Thu, 10 Mar 2022 14:48:38 -0700 Subject: [PATCH 08/30] Fix typo --- lib/proxy/auth.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/proxy/auth.go b/lib/proxy/auth.go index 1868cdbb9881..5a9ced6b2158 100644 --- a/lib/proxy/auth.go +++ b/lib/proxy/auth.go @@ -55,7 +55,7 @@ func (c *proxyCredentials) ServerHandshake(conn net.Conn) (net.Conn, credentials return conn, authInfo, nil } -// ServerHandshake wraps a client handshake with an additional check for the +// ClientHandshake wraps a client handshake with an additional check for the // proxy role. func (c *proxyCredentials) ClientHandshake(ctx context.Context, laddr string, conn net.Conn) (net.Conn, credentials.AuthInfo, error) { conn, authInfo, err := c.TransportCredentials.ClientHandshake(ctx, laddr, conn) From 4cb4bfcff55cb9cb6fc30a336e13a29c0618cccd Mon Sep 17 00:00:00 2001 From: David Date: Thu, 10 Mar 2022 14:53:53 -0700 Subject: [PATCH 09/30] Fix split server id --- lib/proxy/service.go | 6 +++--- lib/proxy/service_test.go | 41 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 44 insertions(+), 3 deletions(-) diff --git a/lib/proxy/service.go b/lib/proxy/service.go index d06a5ba013d5..ded8a2bbd16f 100644 --- a/lib/proxy/service.go +++ b/lib/proxy/service.go @@ -93,11 +93,11 @@ func (s *proxyService) DialNode(stream proto.ProxyService_DialNodeServer) error // splitServerID splits a server id in to a node id and cluster name. func splitServerID(address string) (string, string, error) { split := strings.Split(address, ".") - if len(split) != 2 { - return "", "", trace.BadParameter("invalid server id %s", address) + if len(split) == 0 || split[0] == "" { + return "", "", trace.BadParameter("invalid server id: \"%s\"", address) } - return split[0], split[1], nil + return split[0], strings.Join(split[1:], "."), nil } // ClusterDialer dials a node in the given cluster. diff --git a/lib/proxy/service_test.go b/lib/proxy/service_test.go index 043229788030..fe37e667defb 100644 --- a/lib/proxy/service_test.go +++ b/lib/proxy/service_test.go @@ -125,3 +125,44 @@ func TestSendReceive(t *testing.T) { require.Equal(t, recv, msg.GetData().Bytes, "unexpected bytes received") } } + +func TestSplitServerID(t *testing.T) { + tests := []struct { + serverID string + expectServerID string + expectClusterName string + assertErr require.ErrorAssertionFunc + }{ + { + "id.localhost", + "id", + "localhost", + require.NoError, + }, + { + "id", + "id", + "", + require.NoError, + }, + { + "id.teleport.example.com", + "id", + "teleport.example.com", + require.NoError, + }, + { + "", + "", + "", + require.Error, + }, + } + + for _, tc := range tests { + id, cluster, err := splitServerID(tc.serverID) + require.Equal(t, tc.expectServerID, id) + require.Equal(t, tc.expectClusterName, cluster) + tc.assertErr(t, err) + } +} From cb82704ca01d3fc4bff176da3af0237314dd3b10 Mon Sep 17 00:00:00 2001 From: David Date: Thu, 10 Mar 2022 15:13:06 -0700 Subject: [PATCH 10/30] Reverse if condition --- lib/proxy/auth.go | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/lib/proxy/auth.go b/lib/proxy/auth.go index 5a9ced6b2158..a10c8437a4f5 100644 --- a/lib/proxy/auth.go +++ b/lib/proxy/auth.go @@ -90,10 +90,9 @@ func checkProxyRole(authInfo credentials.AuthInfo) error { // Ensure the proxy system role is present. for _, role := range identity.Groups { - if types.SystemRole(role) != types.RoleProxy { - continue + if types.SystemRole(role) == types.RoleProxy { + return nil } - return nil } return trace.AccessDenied("proxy system role required") From 46c583444388961bee491df066a156fc4ebb66c2 Mon Sep 17 00:00:00 2001 From: David Date: Thu, 10 Mar 2022 15:37:09 -0700 Subject: [PATCH 11/30] Fix makefile --- Makefile | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/Makefile b/Makefile index c0a42d0a0092..0abff5e2c85a 100644 --- a/Makefile +++ b/Makefile @@ -840,8 +840,9 @@ buildbox-grpc: @echo "PROTO_INCLUDE = $$PROTO_INCLUDE" $(CLANG_FORMAT) -i -style='{ColumnLimit: 100, IndentWidth: 4, Language: Proto}' \ api/client/proto/authservice.proto \ - api/client/proto/proxyservice.proto \ + api/client/proto/certs.proto \ api/client/proto/joinservice.proto \ + api/client/proto/proxyservice.proto \ api/types/events/events.proto \ api/types/types.proto \ api/types/webauthn/webauthn.proto \ @@ -853,7 +854,7 @@ buildbox-grpc: cd api/client/proto && protoc -I=.:$$PROTO_INCLUDE \ --gogofast_out=plugins=grpc,$(GOGOPROTO_IMPORTMAP):. \ - certs.proto authservice.proto joinservice.proto proxyservice.proto + authservice.proto certs.proto joinservice.proto proxyservice.proto cd api/types/events && protoc -I=.:$$PROTO_INCLUDE \ --gogofast_out=plugins=grpc,$(GOGOPROTO_IMPORTMAP):. \ From 2ebe26457f599ea83458141da0930fd1ee7d8699 Mon Sep 17 00:00:00 2001 From: David Date: Tue, 15 Mar 2022 11:04:36 -0600 Subject: [PATCH 12/30] Add connection established message --- api/client/proto/proxyservice.pb.go | 270 +++++++++++++++++++++++++--- api/client/proto/proxyservice.proto | 6 +- lib/proxy/conn.go | 2 +- lib/proxy/service.go | 9 +- 4 files changed, 256 insertions(+), 31 deletions(-) diff --git a/api/client/proto/proxyservice.pb.go b/api/client/proto/proxyservice.pb.go index 813d0d7e3514..913bafc1e399 100644 --- a/api/client/proto/proxyservice.pb.go +++ b/api/client/proto/proxyservice.pb.go @@ -32,6 +32,7 @@ const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package type Frame struct { // Types that are valid to be assigned to Message: // *Frame_DialRequest + // *Frame_ConnectionEstablished // *Frame_Data Message isFrame_Message `protobuf_oneof:"Message"` XXX_NoUnkeyedLiteral struct{} `json:"-"` @@ -81,12 +82,16 @@ type isFrame_Message interface { type Frame_DialRequest struct { DialRequest *DialRequest `protobuf:"bytes,1,opt,name=DialRequest,proto3,oneof" json:"DialRequest,omitempty"` } +type Frame_ConnectionEstablished struct { + ConnectionEstablished *ConnectionEstablished `protobuf:"bytes,2,opt,name=ConnectionEstablished,proto3,oneof" json:"ConnectionEstablished,omitempty"` +} type Frame_Data struct { - Data *Data `protobuf:"bytes,2,opt,name=Data,proto3,oneof" json:"Data,omitempty"` + Data *Data `protobuf:"bytes,3,opt,name=Data,proto3,oneof" json:"Data,omitempty"` } -func (*Frame_DialRequest) isFrame_Message() {} -func (*Frame_Data) isFrame_Message() {} +func (*Frame_DialRequest) isFrame_Message() {} +func (*Frame_ConnectionEstablished) isFrame_Message() {} +func (*Frame_Data) isFrame_Message() {} func (m *Frame) GetMessage() isFrame_Message { if m != nil { @@ -102,6 +107,13 @@ func (m *Frame) GetDialRequest() *DialRequest { return nil } +func (m *Frame) GetConnectionEstablished() *ConnectionEstablished { + if x, ok := m.GetMessage().(*Frame_ConnectionEstablished); ok { + return x.ConnectionEstablished + } + return nil +} + func (m *Frame) GetData() *Data { if x, ok := m.GetMessage().(*Frame_Data); ok { return x.Data @@ -113,6 +125,7 @@ func (m *Frame) GetData() *Data { func (*Frame) XXX_OneofWrappers() []interface{} { return []interface{}{ (*Frame_DialRequest)(nil), + (*Frame_ConnectionEstablished)(nil), (*Frame_Data)(nil), } } @@ -300,40 +313,83 @@ func (m *Data) GetBytes() []byte { return nil } +// ConnectionEstablished signals to the client a connection to the node has been established. +type ConnectionEstablished struct { + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *ConnectionEstablished) Reset() { *m = ConnectionEstablished{} } +func (m *ConnectionEstablished) String() string { return proto.CompactTextString(m) } +func (*ConnectionEstablished) ProtoMessage() {} +func (*ConnectionEstablished) Descriptor() ([]byte, []int) { + return fileDescriptor_05583632bd3d8a58, []int{4} +} +func (m *ConnectionEstablished) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *ConnectionEstablished) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_ConnectionEstablished.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 *ConnectionEstablished) XXX_Merge(src proto.Message) { + xxx_messageInfo_ConnectionEstablished.Merge(m, src) +} +func (m *ConnectionEstablished) XXX_Size() int { + return m.Size() +} +func (m *ConnectionEstablished) XXX_DiscardUnknown() { + xxx_messageInfo_ConnectionEstablished.DiscardUnknown(m) +} + +var xxx_messageInfo_ConnectionEstablished proto.InternalMessageInfo + func init() { proto.RegisterType((*Frame)(nil), "proto.Frame") proto.RegisterType((*DialRequest)(nil), "proto.DialRequest") proto.RegisterType((*NetAddr)(nil), "proto.NetAddr") proto.RegisterType((*Data)(nil), "proto.Data") + proto.RegisterType((*ConnectionEstablished)(nil), "proto.ConnectionEstablished") } func init() { proto.RegisterFile("proxyservice.proto", fileDescriptor_05583632bd3d8a58) } var fileDescriptor_05583632bd3d8a58 = []byte{ - // 360 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x6c, 0x51, 0xcf, 0x4b, 0xe3, 0x40, - 0x18, 0xed, 0xec, 0xf6, 0xc7, 0x76, 0x12, 0xf6, 0xf0, 0x51, 0x96, 0x50, 0x96, 0xee, 0x6e, 0x0e, - 0x4b, 0xf1, 0x90, 0x94, 0x0a, 0x15, 0x7a, 0x33, 0x04, 0xa9, 0x07, 0x8b, 0x4c, 0x7b, 0xf2, 0x36, - 0x6d, 0x3f, 0x62, 0x30, 0xcd, 0xc4, 0xc9, 0xa4, 0x9a, 0xff, 0xd0, 0xa3, 0x77, 0x41, 0xa4, 0x7f, - 0x86, 0x27, 0xc9, 0x24, 0xc5, 0x14, 0x3c, 0xcd, 0x7b, 0xf3, 0xde, 0xf7, 0x9b, 0x42, 0x22, 0xc5, - 0x63, 0x9e, 0xa2, 0xdc, 0x85, 0x6b, 0x74, 0x12, 0x29, 0x94, 0x80, 0x96, 0x7e, 0xfa, 0xbd, 0x40, - 0x04, 0x42, 0x43, 0xb7, 0x40, 0xa5, 0x68, 0x6f, 0x69, 0xeb, 0x42, 0xf2, 0x2d, 0xc2, 0x84, 0x1a, - 0x7e, 0xc8, 0x23, 0x86, 0xf7, 0x19, 0xa6, 0xca, 0x22, 0x7f, 0xc9, 0xd0, 0x18, 0x43, 0xe9, 0x72, - 0x6a, 0xca, 0xac, 0xc1, 0xea, 0x46, 0xf8, 0x47, 0x9b, 0x3e, 0x57, 0xdc, 0xfa, 0xa6, 0x03, 0x8c, - 0x43, 0x00, 0x57, 0x7c, 0xd6, 0x60, 0x5a, 0xf2, 0xba, 0xb4, 0x73, 0x85, 0x69, 0xca, 0x03, 0xb4, - 0x5f, 0xc8, 0x51, 0x19, 0xf8, 0x45, 0xdb, 0x73, 0xb1, 0xc1, 0x4b, 0x5f, 0x17, 0xec, 0xb2, 0x8a, - 0xc1, 0x0d, 0xa5, 0xcb, 0x2c, 0x8e, 0x31, 0x5a, 0xe6, 0x09, 0xea, 0xdc, 0x5d, 0x6f, 0xfa, 0xfe, - 0xfa, 0x67, 0x12, 0x84, 0xea, 0x36, 0x5b, 0x39, 0x6b, 0xb1, 0x75, 0x03, 0xc9, 0x77, 0xa1, 0xe2, - 0x2a, 0x14, 0x31, 0x8f, 0x5c, 0x85, 0x11, 0x26, 0x42, 0x2a, 0x97, 0x27, 0xa1, 0xab, 0xf2, 0x04, - 0x53, 0xe7, 0x33, 0x03, 0xab, 0x65, 0x83, 0xff, 0xb4, 0xbd, 0x10, 0x99, 0x5c, 0xa3, 0xf5, 0x5d, - 0xf7, 0xfc, 0xb3, 0xea, 0x79, 0x8e, 0xea, 0x7c, 0xb3, 0x91, 0xac, 0x52, 0x61, 0x44, 0x0d, 0x1f, - 0x53, 0x15, 0xc6, 0xba, 0x84, 0xd5, 0xfc, 0xd2, 0x5c, 0xb7, 0xd8, 0x67, 0xb4, 0x53, 0xfd, 0x83, - 0xa5, 0xe1, 0x83, 0x90, 0x77, 0xd5, 0x64, 0x07, 0x0a, 0x40, 0x9b, 0x85, 0xa3, 0x1c, 0x8a, 0x69, - 0x6c, 0xff, 0x2e, 0x97, 0x08, 0x3d, 0xda, 0xf2, 0x72, 0x85, 0xa9, 0x8e, 0x31, 0x59, 0x49, 0xc6, - 0x53, 0x6a, 0x5e, 0x17, 0x67, 0x5d, 0x94, 0x67, 0x85, 0x13, 0xfa, 0xa3, 0xd8, 0x61, 0xb1, 0x2a, - 0x30, 0xab, 0x7e, 0xf4, 0x11, 0xfb, 0x47, 0x6c, 0x48, 0x46, 0xc4, 0x33, 0x9f, 0xf6, 0x03, 0xf2, - 0xbc, 0x1f, 0x90, 0xb7, 0xfd, 0x80, 0xac, 0xda, 0x5a, 0x3e, 0xfd, 0x08, 0x00, 0x00, 0xff, 0xff, - 0xa4, 0xe7, 0xe1, 0x7b, 0x27, 0x02, 0x00, 0x00, + // 400 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x74, 0x52, 0xc1, 0x6e, 0xd3, 0x40, + 0x10, 0xcd, 0x42, 0x92, 0x92, 0x49, 0xc4, 0x61, 0x54, 0xc0, 0xaa, 0xaa, 0x00, 0x3e, 0xa0, 0x8a, + 0x83, 0x5d, 0x15, 0xa9, 0x48, 0xbd, 0x61, 0x0c, 0x0a, 0x07, 0x2a, 0xb4, 0xcd, 0x89, 0xdb, 0xc6, + 0x1e, 0xb9, 0x2b, 0x5c, 0xaf, 0xd9, 0x5d, 0x17, 0xfc, 0x7d, 0x5c, 0x38, 0x72, 0x47, 0x42, 0x28, + 0x9f, 0xc1, 0x09, 0x79, 0xbd, 0x15, 0xae, 0x14, 0x4e, 0x9e, 0xe7, 0xf7, 0xe6, 0xf9, 0xcd, 0x78, + 0x00, 0x6b, 0xad, 0xbe, 0xb6, 0x86, 0xf4, 0xb5, 0xcc, 0x28, 0xaa, 0xb5, 0xb2, 0x0a, 0x27, 0xee, + 0x71, 0xb0, 0x5f, 0xa8, 0x42, 0xb9, 0x32, 0xee, 0xaa, 0x9e, 0x0c, 0xbf, 0x31, 0x98, 0xbc, 0xd5, + 0xe2, 0x8a, 0xf0, 0x14, 0xe6, 0xa9, 0x14, 0x25, 0xa7, 0xcf, 0x0d, 0x19, 0x1b, 0xb0, 0x27, 0xec, + 0x68, 0x7e, 0x82, 0xbd, 0x2c, 0x1a, 0x30, 0xab, 0x11, 0x1f, 0x0a, 0x71, 0x0d, 0x0f, 0x5e, 0xab, + 0xaa, 0xa2, 0xcc, 0x4a, 0x55, 0xbd, 0x31, 0x56, 0x6c, 0x4a, 0x69, 0x2e, 0x29, 0x0f, 0xee, 0x38, + 0x87, 0x43, 0xef, 0xb0, 0x53, 0xb3, 0x1a, 0xf1, 0xdd, 0xcd, 0xf8, 0x14, 0xc6, 0xa9, 0xb0, 0x22, + 0xb8, 0xeb, 0x4c, 0xe6, 0x37, 0x31, 0x84, 0x15, 0xab, 0x11, 0x77, 0x54, 0x32, 0x83, 0xbd, 0xf7, + 0x64, 0x8c, 0x28, 0x28, 0xfc, 0xc9, 0x6e, 0x85, 0xc7, 0x87, 0x30, 0x3d, 0x57, 0x39, 0xbd, 0x4b, + 0xdd, 0x18, 0x33, 0xee, 0x11, 0x7e, 0x04, 0x58, 0x37, 0x55, 0x45, 0xe5, 0xba, 0xad, 0xc9, 0x05, + 0x9c, 0x25, 0x67, 0x7f, 0x7e, 0x3d, 0x3e, 0x2d, 0xa4, 0xbd, 0x6c, 0x36, 0x51, 0xa6, 0xae, 0xe2, + 0x42, 0x8b, 0x6b, 0x69, 0x45, 0x17, 0x48, 0x94, 0xb1, 0xa5, 0x92, 0x6a, 0xa5, 0x6d, 0x2c, 0x6a, + 0x19, 0xdb, 0xb6, 0x26, 0x13, 0xfd, 0x73, 0xe0, 0x03, 0x37, 0x7c, 0x06, 0xd3, 0x0b, 0xd5, 0xe8, + 0x8c, 0x7c, 0xe6, 0xfb, 0x3e, 0xf3, 0x39, 0xd9, 0x57, 0x79, 0xae, 0xb9, 0x67, 0xf1, 0x18, 0xe6, + 0x29, 0x19, 0x2b, 0x2b, 0xf7, 0x89, 0x60, 0xbc, 0x53, 0x3c, 0x94, 0x84, 0x2f, 0x61, 0xcf, 0xbf, + 0xc7, 0xc0, 0x95, 0x5f, 0x94, 0xfe, 0xe4, 0x27, 0xbb, 0x81, 0x88, 0x30, 0xee, 0x14, 0xfd, 0x50, + 0xdc, 0xd5, 0xe1, 0x61, 0xbf, 0x44, 0xdc, 0x87, 0x49, 0xd2, 0x5a, 0x32, 0xae, 0x67, 0xc1, 0x7b, + 0x10, 0x3e, 0xfa, 0xcf, 0x8f, 0x3b, 0x39, 0x83, 0xc5, 0x87, 0xee, 0x8c, 0x2e, 0xfa, 0x33, 0xc2, + 0xe7, 0x70, 0xaf, 0x5b, 0x6e, 0xb7, 0x43, 0x5c, 0xf8, 0xa0, 0xee, 0x66, 0x0e, 0x6e, 0xa1, 0x23, + 0x76, 0xcc, 0x92, 0xc5, 0xf7, 0xed, 0x92, 0xfd, 0xd8, 0x2e, 0xd9, 0xef, 0xed, 0x92, 0x6d, 0xa6, + 0x8e, 0x7e, 0xf1, 0x37, 0x00, 0x00, 0xff, 0xff, 0x24, 0x14, 0x9c, 0x65, 0x97, 0x02, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. @@ -507,6 +563,27 @@ func (m *Frame_DialRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { } return len(dAtA) - i, nil } +func (m *Frame_ConnectionEstablished) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *Frame_ConnectionEstablished) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + if m.ConnectionEstablished != nil { + { + size, err := m.ConnectionEstablished.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintProxyservice(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + } + return len(dAtA) - i, nil +} func (m *Frame_Data) MarshalTo(dAtA []byte) (int, error) { size := m.Size() return m.MarshalToSizedBuffer(dAtA[:size]) @@ -524,7 +601,7 @@ func (m *Frame_Data) MarshalToSizedBuffer(dAtA []byte) (int, error) { i = encodeVarintProxyservice(dAtA, i, uint64(size)) } i-- - dAtA[i] = 0x12 + dAtA[i] = 0x1a } return len(dAtA) - i, nil } @@ -668,6 +745,33 @@ func (m *Data) MarshalToSizedBuffer(dAtA []byte) (int, error) { return len(dAtA) - i, nil } +func (m *ConnectionEstablished) 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 *ConnectionEstablished) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *ConnectionEstablished) 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 encodeVarintProxyservice(dAtA []byte, offset int, v uint64) int { offset -= sovProxyservice(v) base := offset @@ -706,6 +810,18 @@ func (m *Frame_DialRequest) Size() (n int) { } return n } +func (m *Frame_ConnectionEstablished) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.ConnectionEstablished != nil { + l = m.ConnectionEstablished.Size() + n += 1 + l + sovProxyservice(uint64(l)) + } + return n +} func (m *Frame_Data) Size() (n int) { if m == nil { return 0 @@ -782,6 +898,18 @@ func (m *Data) Size() (n int) { return n } +func (m *ConnectionEstablished) 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 sovProxyservice(x uint64) (n int) { return (math_bits.Len64(x|1) + 6) / 7 } @@ -853,6 +981,41 @@ func (m *Frame) Unmarshal(dAtA []byte) error { m.Message = &Frame_DialRequest{v} iNdEx = postIndex case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ConnectionEstablished", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowProxyservice + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthProxyservice + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthProxyservice + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + v := &ConnectionEstablished{} + if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + m.Message = &Frame_ConnectionEstablished{v} + iNdEx = postIndex + case 3: if wireType != 2 { return fmt.Errorf("proto: wrong wireType = %d for field Data", wireType) } @@ -1296,6 +1459,57 @@ func (m *Data) Unmarshal(dAtA []byte) error { } return nil } +func (m *ConnectionEstablished) 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 ErrIntOverflowProxyservice + } + 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: ConnectionEstablished: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ConnectionEstablished: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + default: + iNdEx = preIndex + skippy, err := skipProxyservice(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthProxyservice + } + 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 skipProxyservice(dAtA []byte) (n int, err error) { l := len(dAtA) iNdEx := 0 diff --git a/api/client/proto/proxyservice.proto b/api/client/proto/proxyservice.proto index ecd74fe2d7c5..8c2e28a2076b 100644 --- a/api/client/proto/proxyservice.proto +++ b/api/client/proto/proxyservice.proto @@ -27,7 +27,8 @@ service ProxyService { message Frame { oneof Message { DialRequest DialRequest = 1; - Data Data = 2; + ConnectionEstablished ConnectionEstablished = 2; + Data Data = 3; } } @@ -55,3 +56,6 @@ message NetAddr { // Data contains the raw bytes of a connection. message Data { bytes Bytes = 1; } + +// ConnectionEstablished signals to the client a connection to the node has been established. +message ConnectionEstablished {} \ No newline at end of file diff --git a/lib/proxy/conn.go b/lib/proxy/conn.go index 60d8f062222c..07417bc39157 100644 --- a/lib/proxy/conn.go +++ b/lib/proxy/conn.go @@ -67,7 +67,7 @@ func newStreamConn(stream Stream, src net.Addr, dst net.Addr) *streamConn { } // start begins copying data between the grpc stream and internal pipe. -func (c *streamConn) start() error { +func (c *streamConn) run() error { var ( sendErr error receiveErr error diff --git a/lib/proxy/service.go b/lib/proxy/service.go index ded8a2bbd16f..5448a187e2da 100644 --- a/lib/proxy/service.go +++ b/lib/proxy/service.go @@ -79,9 +79,16 @@ func (s *proxyService) DialNode(stream proto.ProxyService_DialNodeServer) error return trace.Wrap(err) } + err = stream.Send(&proto.Frame{ + Message: &proto.Frame_ConnectionEstablished{}, + }) + if err != nil { + return trace.Wrap(err) + } + streamConn := newStreamConn(stream, source, destination) go func() { - err := streamConn.start() + err := streamConn.run() log.WithError(err).Debug("Stream connection exited.") }() From 62a4e76f636831999af58be0536540718f258f77 Mon Sep 17 00:00:00 2001 From: David Date: Tue, 15 Mar 2022 11:05:05 -0600 Subject: [PATCH 13/30] Fix error handling --- lib/proxy/auth.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/proxy/auth.go b/lib/proxy/auth.go index a10c8437a4f5..600d48d2e92a 100644 --- a/lib/proxy/auth.go +++ b/lib/proxy/auth.go @@ -45,7 +45,7 @@ type proxyCredentials struct { func (c *proxyCredentials) ServerHandshake(conn net.Conn) (net.Conn, credentials.AuthInfo, error) { conn, authInfo, err := c.TransportCredentials.ServerHandshake(conn) if err != nil { - return conn, authInfo, err + return nil, nil, trace.Wrap(err) } err = checkProxyRole(authInfo) @@ -60,7 +60,7 @@ func (c *proxyCredentials) ServerHandshake(conn net.Conn) (net.Conn, credentials func (c *proxyCredentials) ClientHandshake(ctx context.Context, laddr string, conn net.Conn) (net.Conn, credentials.AuthInfo, error) { conn, authInfo, err := c.TransportCredentials.ClientHandshake(ctx, laddr, conn) if err != nil { - return conn, authInfo, err + return nil, nil, trace.Wrap(err) } err = checkProxyRole(authInfo) From b58167f3aca6036b9dc0a1541b76946a2d6e3ade Mon Sep 17 00:00:00 2001 From: David Date: Tue, 15 Mar 2022 11:10:31 -0600 Subject: [PATCH 14/30] Add channel buffer to prevent deadlock --- lib/proxy/conn.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/proxy/conn.go b/lib/proxy/conn.go index 07417bc39157..7f647c983dcc 100644 --- a/lib/proxy/conn.go +++ b/lib/proxy/conn.go @@ -190,7 +190,7 @@ func pipeConn(ctx context.Context, src net.Conn, dst net.Conn) (int64, int64, er o sync.Once ) - errC := make(chan error) + errC := make(chan error, 1) cleanup := func(err error) { o.Do(func() { src.Close() From d5f75aad9a319f976e68354803b58beff7309391 Mon Sep 17 00:00:00 2001 From: David Date: Tue, 15 Mar 2022 15:37:38 -0600 Subject: [PATCH 15/30] Update configuration to support types and parameters --- api/types/constants.go | 11 + api/types/networking.go | 86 +- api/types/networking_test.go | 70 - api/types/tunnel_strategy.go | 153 ++ api/types/tunnel_strategy_test.go | 73 + api/types/types.pb.go | 2604 +++++++++++++++++------------ api/types/types.proto | 39 +- lib/config/configuration.go | 11 +- lib/config/configuration_test.go | 81 +- lib/config/fileconf.go | 4 +- lib/config/testdata_test.go | 1 - lib/service/service.go | 7 +- 12 files changed, 1981 insertions(+), 1159 deletions(-) create mode 100644 api/types/tunnel_strategy.go create mode 100644 api/types/tunnel_strategy_test.go diff --git a/api/types/constants.go b/api/types/constants.go index 54f00730c990..03fadda0f0d4 100644 --- a/api/types/constants.go +++ b/api/types/constants.go @@ -367,6 +367,17 @@ const ( WindowsDesktopTunnel TunnelType = "windows_desktop" ) +type TunnelStrategyType string + +const ( + // WarDialTunnelStrategy requires agents to create a reverse tunnel to + // every proxy server. + AgentMesh TunnelStrategyType = "agent_mesh" + // ProxyPeering requires agents to create a reverse tunnel to + // a single proxy instance and enables proxy to proxy communication. + ProxyPeering TunnelStrategyType = "proxy_peering" +) + const ( // ResourceMetadataName refers to a resource metadata field named "name". ResourceMetadataName = "name" diff --git a/api/types/networking.go b/api/types/networking.go index a23cacd2d728..dc0251f7993d 100644 --- a/api/types/networking.go +++ b/api/types/networking.go @@ -89,11 +89,17 @@ type ClusterNetworkingConfig interface { // SetRoutingStrategy sets the routing strategy setting. SetRoutingStrategy(strategy RoutingStrategy) - // GetProxyPeering gets the proxy peering setting. - GetProxyPeering() ProxyPeering + // GetTunnelStrategy gets the tunnel strategy. + GetTunnelStrategyType() (TunnelStrategyType, error) - // SetProxyPeering sets the proxy peering setting. - SetProxyPeering(peering ProxyPeering) + // GetAgentMeshTunnelStrategy gets the war dial tunnel strategy. + GetAgentMeshTunnelStrategy() *AgentMeshTunnelStrategy + + // GetProxyPeeringTunnelStrategy gets the proxy peering tunnel strategy. + GetProxyPeeringTunnelStrategy() *ProxyPeeringTunnelStrategy + + // SetTunnelStrategy sets the tunnel strategy. + SetTunnelStrategy(TunnelStrategy) error } // NewClusterNetworkingConfigFromConfigFile is a convenience method to create @@ -284,14 +290,40 @@ func (c *ClusterNetworkingConfigV2) SetRoutingStrategy(strategy RoutingStrategy) c.Spec.RoutingStrategy = strategy } -// GetProxyPeering gets the proxy peering setting. -func (c *ClusterNetworkingConfigV2) GetProxyPeering() ProxyPeering { - return c.Spec.ProxyPeering +// GetTunnelStrategy gets the tunnel strategy type. +func (c *ClusterNetworkingConfigV2) GetTunnelStrategyType() (TunnelStrategyType, error) { + switch c.Spec.TunnelStrategy.(type) { + case *ClusterNetworkingConfigSpecV2_AgentMesh: + return AgentMesh, nil + case *ClusterNetworkingConfigSpecV2_ProxyPeering: + return ProxyPeering, nil + } + + return "", trace.BadParameter("unknown tunnel strategy type: %T", c.Spec.TunnelStrategy) } -// SetProxyPeering sets the proxy peering setting. -func (c *ClusterNetworkingConfigV2) SetProxyPeering(peering ProxyPeering) { - c.Spec.ProxyPeering = peering +// GetAgentMeshTunnelStrategy gets the war dial tunnel strategy. +func (c *ClusterNetworkingConfigV2) GetAgentMeshTunnelStrategy() *AgentMeshTunnelStrategy { + return c.Spec.GetAgentMesh() +} + +// GetProxyPeeringTunnelStrategy gets the proxy peering tunnel strategy. +func (c *ClusterNetworkingConfigV2) GetProxyPeeringTunnelStrategy() *ProxyPeeringTunnelStrategy { + return c.Spec.GetProxyPeering() +} + +// SetTunnelStrategy sets the tunnel strategy. +func (c *ClusterNetworkingConfigV2) SetTunnelStrategy(strategy TunnelStrategy) error { + switch strategy.(type) { + case *ClusterNetworkingConfigSpecV2_AgentMesh: + case *ClusterNetworkingConfigSpecV2_ProxyPeering: + default: + return trace.BadParameter("unknown tunnel strategy: %T", strategy) + } + + c.Spec.TunnelStrategy = strategy + + return nil } // CheckAndSetDefaults verifies the constraints for ClusterNetworkingConfig. @@ -314,6 +346,13 @@ func (c *ClusterNetworkingConfigV2) CheckAndSetDefaults() error { c.Spec.KeepAliveCountMax = int64(defaults.KeepAliveCountMax) } + if c.Spec.TunnelStrategy == nil { + err := c.SetTunnelStrategy(DefaultTunnelStrategy()) + if err != nil { + return trace.Wrap(err) + } + } + return nil } @@ -369,30 +408,3 @@ func (s *RoutingStrategy) UnmarshalYAML(unmarshal func(interface{}) error) error return trace.BadParameter( "routing strategy must be one of %s; got %q", strings.Join(available, ","), stringVar) } - -// MarshalYAML defines how proxy peering should be marshalled to a string -func (s ProxyPeering) MarshalYAML() (interface{}, error) { - return strings.ToLower(s.String()), nil -} - -// UnmarshalYAML unmarshalls proxy peering from YAML value. -func (s *ProxyPeering) UnmarshalYAML(unmarshal func(interface{}) error) error { - var stringVar string - if err := unmarshal(&stringVar); err != nil { - return trace.Wrap(err) - } - - for k, v := range ProxyPeering_value { - if strings.EqualFold(k, stringVar) { - *s = ProxyPeering(v) - return nil - } - } - - available := make([]string, 0, len(ProxyPeering_value)) - for k := range ProxyPeering_value { - available = append(available, strings.ToLower(k)) - } - return trace.BadParameter( - "routing strategy must be one of %s; got %q", strings.Join(available, ","), stringVar) -} diff --git a/api/types/networking_test.go b/api/types/networking_test.go index 5f31b8cf8e87..dc149a129108 100644 --- a/api/types/networking_test.go +++ b/api/types/networking_test.go @@ -89,73 +89,3 @@ func TestProxyListenerModeUnmarshalYAML(t *testing.T) { }) } } - -func TestProxyPeeringMarshalYAML(t *testing.T) { - tt := []struct { - name string - in ProxyPeering - want string - }{ - { - name: "default value", - want: "disabled", - }, - { - name: "multiplex mode", - in: ProxyPeering_Enabled, - want: "enabled", - }, - } - - for _, tc := range tt { - t.Run(tc.name, func(t *testing.T) { - buff, err := yaml.Marshal(&tc.in) - require.NoError(t, err) - require.Equal(t, tc.want, strings.TrimRight(string(buff), "\n")) - }) - } -} - -func TestProxyPeeringUnmarshalYAML(t *testing.T) { - tt := []struct { - name string - in string - want ProxyPeering - wantErr func(*testing.T, error) - }{ - { - name: "default value", - in: "", - want: ProxyPeering_Disabled, - }, - { - name: "enabled", - in: "enabled", - want: ProxyPeering_Enabled, - }, - { - name: "disabled", - in: "disabled", - want: ProxyPeering_Disabled, - }, - { - name: "invalid value", - in: "unknown value", - wantErr: func(t *testing.T, err error) { - require.IsType(t, &trace.BadParameterError{}, err.(*trace.TraceErr).OrigError()) - }, - }, - } - - for _, tc := range tt { - t.Run(tc.name, func(t *testing.T) { - var got ProxyPeering - err := yaml.Unmarshal([]byte(tc.in), &got) - if tc.wantErr != nil { - tc.wantErr(t, err) - return - } - require.Equal(t, tc.want, got) - }) - } -} diff --git a/api/types/tunnel_strategy.go b/api/types/tunnel_strategy.go new file mode 100644 index 000000000000..ebf4de72f39c --- /dev/null +++ b/api/types/tunnel_strategy.go @@ -0,0 +1,153 @@ +package types + +import ( + "bytes" + "encoding/json" + + "github.com/gravitational/teleport/api/utils" + "github.com/gravitational/trace" +) + +const ( + defaultAgentConnectionCount = 1 +) + +// DefaultAgentMeshTunnelStrategy sets default values for a agent mesh +// tunnel strategy. +func DefaultAgentMeshTunnelStrategy() *AgentMeshTunnelStrategy { + return &AgentMeshTunnelStrategy{Type: AgentMesh} +} + +// DefaultProxyPeeringTunnelStrategy sets default values for a proxy peering +// tunnel strategy. +func DefaultProxyPeeringTunnelStrategy() *ProxyPeeringTunnelStrategy { + return &ProxyPeeringTunnelStrategy{ + Type: ProxyPeering, + AgentConnectionCount: defaultAgentConnectionCount, + } +} + +// DefaultTunnelStrategy is the default tunnel strategy used when one is not +// specified. +func DefaultTunnelStrategy() TunnelStrategy { + return &ClusterNetworkingConfigSpecV2_AgentMesh{ + AgentMesh: DefaultAgentMeshTunnelStrategy(), + } +} + +// TunnelStrategy defines methods to be implemented by any TunnelStrategy. +type TunnelStrategy interface { + isClusterNetworkingConfigSpecV2_TunnelStrategy + CheckAndSetDefaults() error +} + +// TunnelStrategyConfig represents a unparsed tunnel strategy configuration. +type TunnelStrategyConfig struct { + Type TunnelStrategyType `yaml:"type" json:"type"` + Params map[string]interface{} `yaml:",inline" json:"-"` +} + +// Parse parses a TunnelStrategyConfig into a TunnelStrategy. +// The default tunnel strategy is used if the TunnelStrategyConfig is empty. +func (c *TunnelStrategyConfig) Parse() (TunnelStrategy, error) { + var strategy TunnelStrategy + + if c.Type == "" && len(c.Params) == 0 { + return DefaultTunnelStrategy(), nil + } + + bytes, err := json.Marshal(c.Params) + if err != nil { + return nil, trace.Wrap(err, "failed to marshal %v", c) + } + + switch c.Type { + case AgentMesh: + agentMesh := &ClusterNetworkingConfigSpecV2_AgentMesh{ + AgentMesh: DefaultAgentMeshTunnelStrategy(), + } + + if err = UnmarshalStrict(bytes, agentMesh.AgentMesh); err != nil { + return nil, trace.Wrap(err) + } + strategy = agentMesh + case ProxyPeering: + proxyPeering := &ClusterNetworkingConfigSpecV2_ProxyPeering{ + ProxyPeering: DefaultProxyPeeringTunnelStrategy(), + } + if err = UnmarshalStrict(bytes, proxyPeering.ProxyPeering); err != nil { + return nil, trace.Wrap(err) + } + strategy = proxyPeering + default: + return nil, trace.BadParameter("unknown tunnel strategy: \"%s\"", c.Type) + } + + err = strategy.CheckAndSetDefaults() + if err != nil { + return nil, trace.Wrap(err) + } + + return strategy, nil +} + +// CheckAndSetDefaults validates an agent mesh tunnel strategy. +func (s *ClusterNetworkingConfigSpecV2_AgentMesh) CheckAndSetDefaults() error { + if s.AgentMesh == nil { + s.AgentMesh = DefaultAgentMeshTunnelStrategy() + } + if s.AgentMesh.Type != AgentMesh { + return trace.BadParameter("tunnel strategy must be %s: got %s", AgentMesh, s.AgentMesh.Type) + } + + return nil +} + +// MarshalYAML defines how a proxy listener mode should be marshalled to a string +func (s *AgentMeshTunnelStrategy) MarshalYAML() (interface{}, error) { + params, err := tunnelStrategyMarshalYAML(s) + return params, trace.Wrap(err) +} + +// CheckAndSetDefaults validates a proxy peering tunnel strategy. +func (s *ClusterNetworkingConfigSpecV2_ProxyPeering) CheckAndSetDefaults() error { + if s.ProxyPeering == nil { + s.ProxyPeering = DefaultProxyPeeringTunnelStrategy() + } + + if s.ProxyPeering.Type != ProxyPeering { + return trace.BadParameter("tunnel strategy must be %s: got %s", ProxyPeering, s.ProxyPeering.Type) + } + if s.ProxyPeering.AgentConnectionCount == 0 { + s.ProxyPeering.AgentConnectionCount = defaultAgentConnectionCount + } + + return nil +} + +// MarshalYAML defines how a proxy listener mode should be marshalled to a string +func (s *ProxyPeeringTunnelStrategy) MarshalYAML() (interface{}, error) { + params, err := tunnelStrategyMarshalYAML(s) + return params, trace.Wrap(err) +} + +// tunnelStratgeyMarshalYAML returns a map ready for YAML marshalling +// removing XXX_ fields from protobuf structs. +func tunnelStrategyMarshalYAML(strategy interface{}) (map[string]interface{}, error) { + params := make(map[string]interface{}) + + // We must use json conversion first to remove xxx_ fields. + err := utils.ObjectToStruct(strategy, ¶ms) + if err != nil { + return nil, trace.Wrap(err) + } + + return params, nil +} + +// UnmarshalStrict is a strict json unmarshaller. +func UnmarshalStrict(data []byte, v interface{}) error { + dec := json.NewDecoder(bytes.NewReader(data)) + dec.DisallowUnknownFields() + return trace.Wrap(dec.Decode(v)) +} diff --git a/api/types/tunnel_strategy_test.go b/api/types/tunnel_strategy_test.go new file mode 100644 index 000000000000..5feaaf59dd56 --- /dev/null +++ b/api/types/tunnel_strategy_test.go @@ -0,0 +1,73 @@ +package types + +import ( + "encoding/json" + "testing" + + "github.com/stretchr/testify/require" + "gopkg.in/yaml.v2" +) + +func TestTunnelStrategyMarshalling(t *testing.T) { + tests := []struct { + json string + yaml string + strategy isClusterNetworkingConfigSpecV2_TunnelStrategy + }{ + { + json: `{"tunnel_strategy":{"type":"agent_mesh"}}`, + yaml: "tunnel_strategy:\n type: agent_mesh\n", + strategy: &ClusterNetworkingConfigSpecV2_AgentMesh{ + AgentMesh: &AgentMeshTunnelStrategy{Type: AgentMesh}, + }, + }, + { + json: `{"tunnel_strategy":{"type":"proxy_peering"}}`, + yaml: "tunnel_strategy:\n type: proxy_peering\n", + strategy: &ClusterNetworkingConfigSpecV2_ProxyPeering{ + ProxyPeering: &ProxyPeeringTunnelStrategy{Type: ProxyPeering}, + }, + }, + { + json: `{"tunnel_strategy":{"type":"proxy_peering","agent_connection_count":2}}`, + yaml: "tunnel_strategy:\n agent_connection_count: 2\n type: proxy_peering\n", + strategy: &ClusterNetworkingConfigSpecV2_ProxyPeering{ + ProxyPeering: &ProxyPeeringTunnelStrategy{ + Type: ProxyPeering, + AgentConnectionCount: 2, + }, + }, + }, + } + + for _, tc := range tests { + data, err := yaml.Marshal(tc.strategy) + require.NoError(t, err) + s := string(data) + _ = s + require.Equal(t, []byte(tc.yaml), data) + + data, err = json.Marshal(tc.strategy) + require.NoError(t, err) + s = string(data) + _ = s + require.Equal(t, []byte(tc.json), data) + + var actual interface{} + switch tc.strategy.(type) { + case *ClusterNetworkingConfigSpecV2_AgentMesh: + actual = &ClusterNetworkingConfigSpecV2_AgentMesh{} + case *ClusterNetworkingConfigSpecV2_ProxyPeering: + actual = &ClusterNetworkingConfigSpecV2_ProxyPeering{} + default: + require.FailNow(t, "unexpected type: %T", tc.strategy) + } + err = json.Unmarshal([]byte(tc.json), actual) + require.NoError(t, err) + require.Equal(t, tc.strategy, actual) + + err = yaml.Unmarshal([]byte(tc.yaml), actual) + require.NoError(t, err) + require.Equal(t, tc.strategy, actual) + } +} diff --git a/api/types/types.pb.go b/api/types/types.pb.go index ca6afcc684a0..d9e97f008691 100644 --- a/api/types/types.pb.go +++ b/api/types/types.pb.go @@ -92,34 +92,6 @@ func (PrivateKeyType) EnumDescriptor() ([]byte, []int) { return fileDescriptor_d938547f84707355, []int{1} } -// ProxyPeeringMode represents the cluster proxy peering mode. -type ProxyPeering int32 - -const ( - // Disabled is set if proxy peering is disabled. - ProxyPeering_Disabled ProxyPeering = 0 - // Enabled is set if proxy peering is enabled. - ProxyPeering_Enabled ProxyPeering = 1 -) - -var ProxyPeering_name = map[int32]string{ - 0: "Disabled", - 1: "Enabled", -} - -var ProxyPeering_value = map[string]int32{ - "Disabled": 0, - "Enabled": 1, -} - -func (x ProxyPeering) String() string { - return proto.EnumName(ProxyPeering_name, int32(x)) -} - -func (ProxyPeering) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_d938547f84707355, []int{2} -} - // ProxyListenerMode represents the cluster proxy listener mode. type ProxyListenerMode int32 @@ -147,7 +119,7 @@ func (x ProxyListenerMode) String() string { } func (ProxyListenerMode) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_d938547f84707355, []int{3} + return fileDescriptor_d938547f84707355, []int{2} } // RoutingStrategy determines the strategy used to route to nodes. @@ -175,7 +147,7 @@ func (x RoutingStrategy) String() string { } func (RoutingStrategy) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_d938547f84707355, []int{4} + return fileDescriptor_d938547f84707355, []int{3} } // UserTokenUsage contains additional information about the intended usage of a user token. @@ -212,7 +184,7 @@ func (x UserTokenUsage) String() string { } func (UserTokenUsage) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_d938547f84707355, []int{5} + return fileDescriptor_d938547f84707355, []int{4} } // RequestState represents the state of a request for escalated privilege. @@ -251,7 +223,7 @@ func (x RequestState) String() string { } func (RequestState) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_d938547f84707355, []int{6} + return fileDescriptor_d938547f84707355, []int{5} } // CertExtensionMode specifies the type of extension to use in the cert. @@ -276,7 +248,7 @@ func (x CertExtensionMode) String() string { } func (CertExtensionMode) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_d938547f84707355, []int{7} + return fileDescriptor_d938547f84707355, []int{6} } // CertExtensionType represents the certificate type the extension is for. @@ -301,7 +273,7 @@ func (x CertExtensionType) String() string { } func (CertExtensionType) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_d938547f84707355, []int{8} + return fileDescriptor_d938547f84707355, []int{7} } // SessionState represents the state of a session. @@ -335,7 +307,7 @@ func (x SessionState) String() string { } func (SessionState) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_d938547f84707355, []int{9} + return fileDescriptor_d938547f84707355, []int{8} } // Type is the type of keep alive, used by servers. At the moment only @@ -2895,11 +2867,15 @@ type ClusterNetworkingConfigSpecV2 struct { ProxyListenerMode ProxyListenerMode `protobuf:"varint,7,opt,name=ProxyListenerMode,proto3,enum=types.ProxyListenerMode" json:"proxy_listener_mode,omitempty"` // RoutingStrategy determines the strategy used to route to nodes. RoutingStrategy RoutingStrategy `protobuf:"varint,8,opt,name=RoutingStrategy,proto3,enum=types.RoutingStrategy" json:"routing_strategy,omitempty"` - // ProxyPeeringMode determines if proxy peering is enabled in the cluster. - ProxyPeering ProxyPeering `protobuf:"varint,9,opt,name=ProxyPeering,proto3,enum=types.ProxyPeering" json:"proxy_peering,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + // TunnelStrategy determines the tunnel strategy used in the cluster. + // + // Types that are valid to be assigned to TunnelStrategy: + // *ClusterNetworkingConfigSpecV2_AgentMesh + // *ClusterNetworkingConfigSpecV2_ProxyPeering + TunnelStrategy isClusterNetworkingConfigSpecV2_TunnelStrategy `protobuf_oneof:"TunnelStrategy"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } func (m *ClusterNetworkingConfigSpecV2) Reset() { *m = ClusterNetworkingConfigSpecV2{} } @@ -2935,6 +2911,134 @@ func (m *ClusterNetworkingConfigSpecV2) XXX_DiscardUnknown() { var xxx_messageInfo_ClusterNetworkingConfigSpecV2 proto.InternalMessageInfo +type isClusterNetworkingConfigSpecV2_TunnelStrategy interface { + isClusterNetworkingConfigSpecV2_TunnelStrategy() + MarshalTo([]byte) (int, error) + Size() int +} + +type ClusterNetworkingConfigSpecV2_AgentMesh struct { + AgentMesh *AgentMeshTunnelStrategy `protobuf:"bytes,9,opt,name=AgentMesh,proto3,oneof" json:"tunnel_strategy,omitempty" yaml:"tunnel_strategy,omitempty"` +} +type ClusterNetworkingConfigSpecV2_ProxyPeering struct { + ProxyPeering *ProxyPeeringTunnelStrategy `protobuf:"bytes,10,opt,name=ProxyPeering,proto3,oneof" json:"tunnel_strategy,omitempty" yaml:"tunnel_strategy,omitempty"` +} + +func (*ClusterNetworkingConfigSpecV2_AgentMesh) isClusterNetworkingConfigSpecV2_TunnelStrategy() {} +func (*ClusterNetworkingConfigSpecV2_ProxyPeering) isClusterNetworkingConfigSpecV2_TunnelStrategy() {} + +func (m *ClusterNetworkingConfigSpecV2) GetTunnelStrategy() isClusterNetworkingConfigSpecV2_TunnelStrategy { + if m != nil { + return m.TunnelStrategy + } + return nil +} + +func (m *ClusterNetworkingConfigSpecV2) GetAgentMesh() *AgentMeshTunnelStrategy { + if x, ok := m.GetTunnelStrategy().(*ClusterNetworkingConfigSpecV2_AgentMesh); ok { + return x.AgentMesh + } + return nil +} + +func (m *ClusterNetworkingConfigSpecV2) GetProxyPeering() *ProxyPeeringTunnelStrategy { + if x, ok := m.GetTunnelStrategy().(*ClusterNetworkingConfigSpecV2_ProxyPeering); ok { + return x.ProxyPeering + } + return nil +} + +// XXX_OneofWrappers is for the internal use of the proto package. +func (*ClusterNetworkingConfigSpecV2) XXX_OneofWrappers() []interface{} { + return []interface{}{ + (*ClusterNetworkingConfigSpecV2_AgentMesh)(nil), + (*ClusterNetworkingConfigSpecV2_ProxyPeering)(nil), + } +} + +// AgentMeshTunnelStrategy requires reverse tunnels to dial every proxy. +type AgentMeshTunnelStrategy struct { + Type TunnelStrategyType `protobuf:"bytes,1,opt,name=Type,proto3,casttype=TunnelStrategyType" json:"type,omitempty" yaml:"type,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *AgentMeshTunnelStrategy) Reset() { *m = AgentMeshTunnelStrategy{} } +func (m *AgentMeshTunnelStrategy) String() string { return proto.CompactTextString(m) } +func (*AgentMeshTunnelStrategy) ProtoMessage() {} +func (*AgentMeshTunnelStrategy) Descriptor() ([]byte, []int) { + return fileDescriptor_d938547f84707355, []int{50} +} +func (m *AgentMeshTunnelStrategy) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *AgentMeshTunnelStrategy) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_AgentMeshTunnelStrategy.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 *AgentMeshTunnelStrategy) XXX_Merge(src proto.Message) { + xxx_messageInfo_AgentMeshTunnelStrategy.Merge(m, src) +} +func (m *AgentMeshTunnelStrategy) XXX_Size() int { + return m.Size() +} +func (m *AgentMeshTunnelStrategy) XXX_DiscardUnknown() { + xxx_messageInfo_AgentMeshTunnelStrategy.DiscardUnknown(m) +} + +var xxx_messageInfo_AgentMeshTunnelStrategy proto.InternalMessageInfo + +// ProxyPeeringTunnelStrategy requires reverse tunnels to dial a fixed number of proxies. +type ProxyPeeringTunnelStrategy struct { + Type TunnelStrategyType `protobuf:"bytes,1,opt,name=Type,proto3,casttype=TunnelStrategyType" json:"type,omitempty" yaml:"type,omitempty"` + AgentConnectionCount int64 `protobuf:"varint,2,opt,name=AgentConnectionCount,proto3" json:"agent_connection_count,omitempty" yaml:"agent_connection_count,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *ProxyPeeringTunnelStrategy) Reset() { *m = ProxyPeeringTunnelStrategy{} } +func (m *ProxyPeeringTunnelStrategy) String() string { return proto.CompactTextString(m) } +func (*ProxyPeeringTunnelStrategy) ProtoMessage() {} +func (*ProxyPeeringTunnelStrategy) Descriptor() ([]byte, []int) { + return fileDescriptor_d938547f84707355, []int{51} +} +func (m *ProxyPeeringTunnelStrategy) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *ProxyPeeringTunnelStrategy) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_ProxyPeeringTunnelStrategy.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 *ProxyPeeringTunnelStrategy) XXX_Merge(src proto.Message) { + xxx_messageInfo_ProxyPeeringTunnelStrategy.Merge(m, src) +} +func (m *ProxyPeeringTunnelStrategy) XXX_Size() int { + return m.Size() +} +func (m *ProxyPeeringTunnelStrategy) XXX_DiscardUnknown() { + xxx_messageInfo_ProxyPeeringTunnelStrategy.DiscardUnknown(m) +} + +var xxx_messageInfo_ProxyPeeringTunnelStrategy proto.InternalMessageInfo + // SessionRecordingConfigV2 contains session recording configuration. type SessionRecordingConfigV2 struct { // Kind is a resource kind @@ -2956,7 +3060,7 @@ func (m *SessionRecordingConfigV2) Reset() { *m = SessionRecordingConfig func (m *SessionRecordingConfigV2) String() string { return proto.CompactTextString(m) } func (*SessionRecordingConfigV2) ProtoMessage() {} func (*SessionRecordingConfigV2) Descriptor() ([]byte, []int) { - return fileDescriptor_d938547f84707355, []int{50} + return fileDescriptor_d938547f84707355, []int{52} } func (m *SessionRecordingConfigV2) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3002,7 +3106,7 @@ func (m *SessionRecordingConfigSpecV2) Reset() { *m = SessionRecordingCo func (m *SessionRecordingConfigSpecV2) String() string { return proto.CompactTextString(m) } func (*SessionRecordingConfigSpecV2) ProtoMessage() {} func (*SessionRecordingConfigSpecV2) Descriptor() ([]byte, []int) { - return fileDescriptor_d938547f84707355, []int{51} + return fileDescriptor_d938547f84707355, []int{53} } func (m *SessionRecordingConfigSpecV2) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3051,7 +3155,7 @@ type AuthPreferenceV2 struct { func (m *AuthPreferenceV2) Reset() { *m = AuthPreferenceV2{} } func (*AuthPreferenceV2) ProtoMessage() {} func (*AuthPreferenceV2) Descriptor() ([]byte, []int) { - return fileDescriptor_d938547f84707355, []int{52} + return fileDescriptor_d938547f84707355, []int{54} } func (m *AuthPreferenceV2) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3113,7 +3217,7 @@ func (m *AuthPreferenceSpecV2) Reset() { *m = AuthPreferenceSpecV2{} } func (m *AuthPreferenceSpecV2) String() string { return proto.CompactTextString(m) } func (*AuthPreferenceSpecV2) ProtoMessage() {} func (*AuthPreferenceSpecV2) Descriptor() ([]byte, []int) { - return fileDescriptor_d938547f84707355, []int{53} + return fileDescriptor_d938547f84707355, []int{55} } func (m *AuthPreferenceSpecV2) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3162,7 +3266,7 @@ func (m *U2F) Reset() { *m = U2F{} } func (m *U2F) String() string { return proto.CompactTextString(m) } func (*U2F) ProtoMessage() {} func (*U2F) Descriptor() ([]byte, []int) { - return fileDescriptor_d938547f84707355, []int{54} + return fileDescriptor_d938547f84707355, []int{56} } func (m *U2F) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3230,7 +3334,7 @@ func (m *Webauthn) Reset() { *m = Webauthn{} } func (m *Webauthn) String() string { return proto.CompactTextString(m) } func (*Webauthn) ProtoMessage() {} func (*Webauthn) Descriptor() ([]byte, []int) { - return fileDescriptor_d938547f84707355, []int{55} + return fileDescriptor_d938547f84707355, []int{57} } func (m *Webauthn) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3280,7 +3384,7 @@ func (m *Namespace) Reset() { *m = Namespace{} } func (m *Namespace) String() string { return proto.CompactTextString(m) } func (*Namespace) ProtoMessage() {} func (*Namespace) Descriptor() ([]byte, []int) { - return fileDescriptor_d938547f84707355, []int{56} + return fileDescriptor_d938547f84707355, []int{58} } func (m *Namespace) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3320,7 +3424,7 @@ func (m *NamespaceSpec) Reset() { *m = NamespaceSpec{} } func (m *NamespaceSpec) String() string { return proto.CompactTextString(m) } func (*NamespaceSpec) ProtoMessage() {} func (*NamespaceSpec) Descriptor() ([]byte, []int) { - return fileDescriptor_d938547f84707355, []int{57} + return fileDescriptor_d938547f84707355, []int{59} } func (m *NamespaceSpec) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3368,7 +3472,7 @@ type UserTokenV3 struct { func (m *UserTokenV3) Reset() { *m = UserTokenV3{} } func (*UserTokenV3) ProtoMessage() {} func (*UserTokenV3) Descriptor() ([]byte, []int) { - return fileDescriptor_d938547f84707355, []int{58} + return fileDescriptor_d938547f84707355, []int{60} } func (m *UserTokenV3) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3415,7 +3519,7 @@ func (m *UserTokenSpecV3) Reset() { *m = UserTokenSpecV3{} } func (m *UserTokenSpecV3) String() string { return proto.CompactTextString(m) } func (*UserTokenSpecV3) ProtoMessage() {} func (*UserTokenSpecV3) Descriptor() ([]byte, []int) { - return fileDescriptor_d938547f84707355, []int{59} + return fileDescriptor_d938547f84707355, []int{61} } func (m *UserTokenSpecV3) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3463,7 +3567,7 @@ type UserTokenSecretsV3 struct { func (m *UserTokenSecretsV3) Reset() { *m = UserTokenSecretsV3{} } func (*UserTokenSecretsV3) ProtoMessage() {} func (*UserTokenSecretsV3) Descriptor() ([]byte, []int) { - return fileDescriptor_d938547f84707355, []int{60} + return fileDescriptor_d938547f84707355, []int{62} } func (m *UserTokenSecretsV3) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3508,7 +3612,7 @@ func (m *UserTokenSecretsSpecV3) Reset() { *m = UserTokenSecretsSpecV3{} func (m *UserTokenSecretsSpecV3) String() string { return proto.CompactTextString(m) } func (*UserTokenSecretsSpecV3) ProtoMessage() {} func (*UserTokenSecretsSpecV3) Descriptor() ([]byte, []int) { - return fileDescriptor_d938547f84707355, []int{61} + return fileDescriptor_d938547f84707355, []int{63} } func (m *UserTokenSecretsSpecV3) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3557,7 +3661,7 @@ type AccessRequestV3 struct { func (m *AccessRequestV3) Reset() { *m = AccessRequestV3{} } func (*AccessRequestV3) ProtoMessage() {} func (*AccessRequestV3) Descriptor() ([]byte, []int) { - return fileDescriptor_d938547f84707355, []int{62} + return fileDescriptor_d938547f84707355, []int{64} } func (m *AccessRequestV3) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3609,7 +3713,7 @@ func (m *AccessReviewThreshold) Reset() { *m = AccessReviewThreshold{} } func (m *AccessReviewThreshold) String() string { return proto.CompactTextString(m) } func (*AccessReviewThreshold) ProtoMessage() {} func (*AccessReviewThreshold) Descriptor() ([]byte, []int) { - return fileDescriptor_d938547f84707355, []int{63} + return fileDescriptor_d938547f84707355, []int{65} } func (m *AccessReviewThreshold) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3665,7 +3769,7 @@ func (m *AccessReview) Reset() { *m = AccessReview{} } func (m *AccessReview) String() string { return proto.CompactTextString(m) } func (*AccessReview) ProtoMessage() {} func (*AccessReview) Descriptor() ([]byte, []int) { - return fileDescriptor_d938547f84707355, []int{64} + return fileDescriptor_d938547f84707355, []int{66} } func (m *AccessReview) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3710,7 +3814,7 @@ func (m *AccessReviewSubmission) Reset() { *m = AccessReviewSubmission{} func (m *AccessReviewSubmission) String() string { return proto.CompactTextString(m) } func (*AccessReviewSubmission) ProtoMessage() {} func (*AccessReviewSubmission) Descriptor() ([]byte, []int) { - return fileDescriptor_d938547f84707355, []int{65} + return fileDescriptor_d938547f84707355, []int{67} } func (m *AccessReviewSubmission) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3753,7 +3857,7 @@ func (m *ThresholdIndexSet) Reset() { *m = ThresholdIndexSet{} } func (m *ThresholdIndexSet) String() string { return proto.CompactTextString(m) } func (*ThresholdIndexSet) ProtoMessage() {} func (*ThresholdIndexSet) Descriptor() ([]byte, []int) { - return fileDescriptor_d938547f84707355, []int{66} + return fileDescriptor_d938547f84707355, []int{68} } func (m *ThresholdIndexSet) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3796,7 +3900,7 @@ func (m *ThresholdIndexSets) Reset() { *m = ThresholdIndexSets{} } func (m *ThresholdIndexSets) String() string { return proto.CompactTextString(m) } func (*ThresholdIndexSets) ProtoMessage() {} func (*ThresholdIndexSets) Descriptor() ([]byte, []int) { - return fileDescriptor_d938547f84707355, []int{67} + return fileDescriptor_d938547f84707355, []int{69} } func (m *ThresholdIndexSets) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3881,7 +3985,7 @@ func (m *AccessRequestSpecV3) Reset() { *m = AccessRequestSpecV3{} } func (m *AccessRequestSpecV3) String() string { return proto.CompactTextString(m) } func (*AccessRequestSpecV3) ProtoMessage() {} func (*AccessRequestSpecV3) Descriptor() ([]byte, []int) { - return fileDescriptor_d938547f84707355, []int{68} + return fileDescriptor_d938547f84707355, []int{70} } func (m *AccessRequestSpecV3) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3927,7 +4031,7 @@ func (m *AccessRequestFilter) Reset() { *m = AccessRequestFilter{} } func (m *AccessRequestFilter) String() string { return proto.CompactTextString(m) } func (*AccessRequestFilter) ProtoMessage() {} func (*AccessRequestFilter) Descriptor() ([]byte, []int) { - return fileDescriptor_d938547f84707355, []int{69} + return fileDescriptor_d938547f84707355, []int{71} } func (m *AccessRequestFilter) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3973,7 +4077,7 @@ func (m *AccessCapabilities) Reset() { *m = AccessCapabilities{} } func (m *AccessCapabilities) String() string { return proto.CompactTextString(m) } func (*AccessCapabilities) ProtoMessage() {} func (*AccessCapabilities) Descriptor() ([]byte, []int) { - return fileDescriptor_d938547f84707355, []int{70} + return fileDescriptor_d938547f84707355, []int{72} } func (m *AccessCapabilities) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4022,7 +4126,7 @@ func (m *AccessCapabilitiesRequest) Reset() { *m = AccessCapabilitiesReq func (m *AccessCapabilitiesRequest) String() string { return proto.CompactTextString(m) } func (*AccessCapabilitiesRequest) ProtoMessage() {} func (*AccessCapabilitiesRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_d938547f84707355, []int{71} + return fileDescriptor_d938547f84707355, []int{73} } func (m *AccessCapabilitiesRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4071,7 +4175,7 @@ type PluginDataV3 struct { func (m *PluginDataV3) Reset() { *m = PluginDataV3{} } func (*PluginDataV3) ProtoMessage() {} func (*PluginDataV3) Descriptor() ([]byte, []int) { - return fileDescriptor_d938547f84707355, []int{72} + return fileDescriptor_d938547f84707355, []int{74} } func (m *PluginDataV3) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4114,7 +4218,7 @@ func (m *PluginDataEntry) Reset() { *m = PluginDataEntry{} } func (m *PluginDataEntry) String() string { return proto.CompactTextString(m) } func (*PluginDataEntry) ProtoMessage() {} func (*PluginDataEntry) Descriptor() ([]byte, []int) { - return fileDescriptor_d938547f84707355, []int{73} + return fileDescriptor_d938547f84707355, []int{75} } func (m *PluginDataEntry) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4156,7 +4260,7 @@ func (m *PluginDataSpecV3) Reset() { *m = PluginDataSpecV3{} } func (m *PluginDataSpecV3) String() string { return proto.CompactTextString(m) } func (*PluginDataSpecV3) ProtoMessage() {} func (*PluginDataSpecV3) Descriptor() ([]byte, []int) { - return fileDescriptor_d938547f84707355, []int{74} + return fileDescriptor_d938547f84707355, []int{76} } func (m *PluginDataSpecV3) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4203,7 +4307,7 @@ func (m *PluginDataFilter) Reset() { *m = PluginDataFilter{} } func (m *PluginDataFilter) String() string { return proto.CompactTextString(m) } func (*PluginDataFilter) ProtoMessage() {} func (*PluginDataFilter) Descriptor() ([]byte, []int) { - return fileDescriptor_d938547f84707355, []int{75} + return fileDescriptor_d938547f84707355, []int{77} } func (m *PluginDataFilter) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4254,7 +4358,7 @@ func (m *PluginDataUpdateParams) Reset() { *m = PluginDataUpdateParams{} func (m *PluginDataUpdateParams) String() string { return proto.CompactTextString(m) } func (*PluginDataUpdateParams) ProtoMessage() {} func (*PluginDataUpdateParams) Descriptor() ([]byte, []int) { - return fileDescriptor_d938547f84707355, []int{76} + return fileDescriptor_d938547f84707355, []int{78} } func (m *PluginDataUpdateParams) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4303,7 +4407,7 @@ type RoleV5 struct { func (m *RoleV5) Reset() { *m = RoleV5{} } func (*RoleV5) ProtoMessage() {} func (*RoleV5) Descriptor() ([]byte, []int) { - return fileDescriptor_d938547f84707355, []int{77} + return fileDescriptor_d938547f84707355, []int{79} } func (m *RoleV5) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4350,7 +4454,7 @@ func (m *RoleSpecV5) Reset() { *m = RoleSpecV5{} } func (m *RoleSpecV5) String() string { return proto.CompactTextString(m) } func (*RoleSpecV5) ProtoMessage() {} func (*RoleSpecV5) Descriptor() ([]byte, []int) { - return fileDescriptor_d938547f84707355, []int{78} + return fileDescriptor_d938547f84707355, []int{80} } func (m *RoleSpecV5) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4438,7 +4542,7 @@ func (m *RoleOptions) Reset() { *m = RoleOptions{} } func (m *RoleOptions) String() string { return proto.CompactTextString(m) } func (*RoleOptions) ProtoMessage() {} func (*RoleOptions) Descriptor() ([]byte, []int) { - return fileDescriptor_d938547f84707355, []int{79} + return fileDescriptor_d938547f84707355, []int{81} } func (m *RoleOptions) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4480,7 +4584,7 @@ func (m *RecordSession) Reset() { *m = RecordSession{} } func (m *RecordSession) String() string { return proto.CompactTextString(m) } func (*RecordSession) ProtoMessage() {} func (*RecordSession) Descriptor() ([]byte, []int) { - return fileDescriptor_d938547f84707355, []int{80} + return fileDescriptor_d938547f84707355, []int{82} } func (m *RecordSession) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4530,7 +4634,7 @@ func (m *CertExtension) Reset() { *m = CertExtension{} } func (m *CertExtension) String() string { return proto.CompactTextString(m) } func (*CertExtension) ProtoMessage() {} func (*CertExtension) Descriptor() ([]byte, []int) { - return fileDescriptor_d938547f84707355, []int{81} + return fileDescriptor_d938547f84707355, []int{83} } func (m *CertExtension) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4615,7 +4719,7 @@ func (m *RoleConditions) Reset() { *m = RoleConditions{} } func (m *RoleConditions) String() string { return proto.CompactTextString(m) } func (*RoleConditions) ProtoMessage() {} func (*RoleConditions) Descriptor() ([]byte, []int) { - return fileDescriptor_d938547f84707355, []int{82} + return fileDescriptor_d938547f84707355, []int{84} } func (m *RoleConditions) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4668,7 +4772,7 @@ func (m *SessionRequirePolicy) Reset() { *m = SessionRequirePolicy{} } func (m *SessionRequirePolicy) String() string { return proto.CompactTextString(m) } func (*SessionRequirePolicy) ProtoMessage() {} func (*SessionRequirePolicy) Descriptor() ([]byte, []int) { - return fileDescriptor_d938547f84707355, []int{83} + return fileDescriptor_d938547f84707355, []int{85} } func (m *SessionRequirePolicy) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4716,7 +4820,7 @@ func (m *SessionJoinPolicy) Reset() { *m = SessionJoinPolicy{} } func (m *SessionJoinPolicy) String() string { return proto.CompactTextString(m) } func (*SessionJoinPolicy) ProtoMessage() {} func (*SessionJoinPolicy) Descriptor() ([]byte, []int) { - return fileDescriptor_d938547f84707355, []int{84} + return fileDescriptor_d938547f84707355, []int{86} } func (m *SessionJoinPolicy) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4776,7 +4880,7 @@ func (m *AccessRequestConditions) Reset() { *m = AccessRequestConditions func (m *AccessRequestConditions) String() string { return proto.CompactTextString(m) } func (*AccessRequestConditions) ProtoMessage() {} func (*AccessRequestConditions) Descriptor() ([]byte, []int) { - return fileDescriptor_d938547f84707355, []int{85} + return fileDescriptor_d938547f84707355, []int{87} } func (m *AccessRequestConditions) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4824,7 +4928,7 @@ func (m *AccessReviewConditions) Reset() { *m = AccessReviewConditions{} func (m *AccessReviewConditions) String() string { return proto.CompactTextString(m) } func (*AccessReviewConditions) ProtoMessage() {} func (*AccessReviewConditions) Descriptor() ([]byte, []int) { - return fileDescriptor_d938547f84707355, []int{86} + return fileDescriptor_d938547f84707355, []int{88} } func (m *AccessReviewConditions) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4870,7 +4974,7 @@ func (m *ClaimMapping) Reset() { *m = ClaimMapping{} } func (m *ClaimMapping) String() string { return proto.CompactTextString(m) } func (*ClaimMapping) ProtoMessage() {} func (*ClaimMapping) Descriptor() ([]byte, []int) { - return fileDescriptor_d938547f84707355, []int{87} + return fileDescriptor_d938547f84707355, []int{89} } func (m *ClaimMapping) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4919,7 +5023,7 @@ func (m *Rule) Reset() { *m = Rule{} } func (m *Rule) String() string { return proto.CompactTextString(m) } func (*Rule) ProtoMessage() {} func (*Rule) Descriptor() ([]byte, []int) { - return fileDescriptor_d938547f84707355, []int{88} + return fileDescriptor_d938547f84707355, []int{90} } func (m *Rule) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4967,7 +5071,7 @@ func (m *ImpersonateConditions) Reset() { *m = ImpersonateConditions{} } func (m *ImpersonateConditions) String() string { return proto.CompactTextString(m) } func (*ImpersonateConditions) ProtoMessage() {} func (*ImpersonateConditions) Descriptor() ([]byte, []int) { - return fileDescriptor_d938547f84707355, []int{89} + return fileDescriptor_d938547f84707355, []int{91} } func (m *ImpersonateConditions) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5009,7 +5113,7 @@ func (m *BoolValue) Reset() { *m = BoolValue{} } func (m *BoolValue) String() string { return proto.CompactTextString(m) } func (*BoolValue) ProtoMessage() {} func (*BoolValue) Descriptor() ([]byte, []int) { - return fileDescriptor_d938547f84707355, []int{90} + return fileDescriptor_d938547f84707355, []int{92} } func (m *BoolValue) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5058,7 +5162,7 @@ type UserV2 struct { func (m *UserV2) Reset() { *m = UserV2{} } func (*UserV2) ProtoMessage() {} func (*UserV2) Descriptor() ([]byte, []int) { - return fileDescriptor_d938547f84707355, []int{91} + return fileDescriptor_d938547f84707355, []int{93} } func (m *UserV2) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5122,7 +5226,7 @@ func (m *UserSpecV2) Reset() { *m = UserSpecV2{} } func (m *UserSpecV2) String() string { return proto.CompactTextString(m) } func (*UserSpecV2) ProtoMessage() {} func (*UserSpecV2) Descriptor() ([]byte, []int) { - return fileDescriptor_d938547f84707355, []int{92} + return fileDescriptor_d938547f84707355, []int{94} } func (m *UserSpecV2) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5167,7 +5271,7 @@ type ExternalIdentity struct { func (m *ExternalIdentity) Reset() { *m = ExternalIdentity{} } func (*ExternalIdentity) ProtoMessage() {} func (*ExternalIdentity) Descriptor() ([]byte, []int) { - return fileDescriptor_d938547f84707355, []int{93} + return fileDescriptor_d938547f84707355, []int{95} } func (m *ExternalIdentity) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5219,7 +5323,7 @@ func (m *LoginStatus) Reset() { *m = LoginStatus{} } func (m *LoginStatus) String() string { return proto.CompactTextString(m) } func (*LoginStatus) ProtoMessage() {} func (*LoginStatus) Descriptor() ([]byte, []int) { - return fileDescriptor_d938547f84707355, []int{94} + return fileDescriptor_d938547f84707355, []int{96} } func (m *LoginStatus) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5264,7 +5368,7 @@ type CreatedBy struct { func (m *CreatedBy) Reset() { *m = CreatedBy{} } func (*CreatedBy) ProtoMessage() {} func (*CreatedBy) Descriptor() ([]byte, []int) { - return fileDescriptor_d938547f84707355, []int{95} + return fileDescriptor_d938547f84707355, []int{97} } func (m *CreatedBy) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5313,7 +5417,7 @@ func (m *LocalAuthSecrets) Reset() { *m = LocalAuthSecrets{} } func (m *LocalAuthSecrets) String() string { return proto.CompactTextString(m) } func (*LocalAuthSecrets) ProtoMessage() {} func (*LocalAuthSecrets) Descriptor() ([]byte, []int) { - return fileDescriptor_d938547f84707355, []int{96} + return fileDescriptor_d938547f84707355, []int{98} } func (m *LocalAuthSecrets) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5368,7 +5472,7 @@ func (m *MFADevice) Reset() { *m = MFADevice{} } func (m *MFADevice) String() string { return proto.CompactTextString(m) } func (*MFADevice) ProtoMessage() {} func (*MFADevice) Descriptor() ([]byte, []int) { - return fileDescriptor_d938547f84707355, []int{97} + return fileDescriptor_d938547f84707355, []int{99} } func (m *MFADevice) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5466,7 +5570,7 @@ func (m *TOTPDevice) Reset() { *m = TOTPDevice{} } func (m *TOTPDevice) String() string { return proto.CompactTextString(m) } func (*TOTPDevice) ProtoMessage() {} func (*TOTPDevice) Descriptor() ([]byte, []int) { - return fileDescriptor_d938547f84707355, []int{98} + return fileDescriptor_d938547f84707355, []int{100} } func (m *TOTPDevice) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5512,7 +5616,7 @@ func (m *U2FDevice) Reset() { *m = U2FDevice{} } func (m *U2FDevice) String() string { return proto.CompactTextString(m) } func (*U2FDevice) ProtoMessage() {} func (*U2FDevice) Descriptor() ([]byte, []int) { - return fileDescriptor_d938547f84707355, []int{99} + return fileDescriptor_d938547f84707355, []int{101} } func (m *U2FDevice) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5579,7 +5683,7 @@ func (m *WebauthnDevice) Reset() { *m = WebauthnDevice{} } func (m *WebauthnDevice) String() string { return proto.CompactTextString(m) } func (*WebauthnDevice) ProtoMessage() {} func (*WebauthnDevice) Descriptor() ([]byte, []int) { - return fileDescriptor_d938547f84707355, []int{100} + return fileDescriptor_d938547f84707355, []int{102} } func (m *WebauthnDevice) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5622,7 +5726,7 @@ func (m *WebauthnLocalAuth) Reset() { *m = WebauthnLocalAuth{} } func (m *WebauthnLocalAuth) String() string { return proto.CompactTextString(m) } func (*WebauthnLocalAuth) ProtoMessage() {} func (*WebauthnLocalAuth) Descriptor() ([]byte, []int) { - return fileDescriptor_d938547f84707355, []int{101} + return fileDescriptor_d938547f84707355, []int{103} } func (m *WebauthnLocalAuth) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5668,7 +5772,7 @@ func (m *ConnectorRef) Reset() { *m = ConnectorRef{} } func (m *ConnectorRef) String() string { return proto.CompactTextString(m) } func (*ConnectorRef) ProtoMessage() {} func (*ConnectorRef) Descriptor() ([]byte, []int) { - return fileDescriptor_d938547f84707355, []int{102} + return fileDescriptor_d938547f84707355, []int{104} } func (m *ConnectorRef) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5710,7 +5814,7 @@ func (m *UserRef) Reset() { *m = UserRef{} } func (m *UserRef) String() string { return proto.CompactTextString(m) } func (*UserRef) ProtoMessage() {} func (*UserRef) Descriptor() ([]byte, []int) { - return fileDescriptor_d938547f84707355, []int{103} + return fileDescriptor_d938547f84707355, []int{105} } func (m *UserRef) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5760,7 +5864,7 @@ func (m *ReverseTunnelV2) Reset() { *m = ReverseTunnelV2{} } func (m *ReverseTunnelV2) String() string { return proto.CompactTextString(m) } func (*ReverseTunnelV2) ProtoMessage() {} func (*ReverseTunnelV2) Descriptor() ([]byte, []int) { - return fileDescriptor_d938547f84707355, []int{104} + return fileDescriptor_d938547f84707355, []int{106} } func (m *ReverseTunnelV2) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5807,7 +5911,7 @@ func (m *ReverseTunnelSpecV2) Reset() { *m = ReverseTunnelSpecV2{} } func (m *ReverseTunnelSpecV2) String() string { return proto.CompactTextString(m) } func (*ReverseTunnelSpecV2) ProtoMessage() {} func (*ReverseTunnelSpecV2) Descriptor() ([]byte, []int) { - return fileDescriptor_d938547f84707355, []int{105} + return fileDescriptor_d938547f84707355, []int{107} } func (m *ReverseTunnelSpecV2) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5856,7 +5960,7 @@ type TunnelConnectionV2 struct { func (m *TunnelConnectionV2) Reset() { *m = TunnelConnectionV2{} } func (*TunnelConnectionV2) ProtoMessage() {} func (*TunnelConnectionV2) Descriptor() ([]byte, []int) { - return fileDescriptor_d938547f84707355, []int{106} + return fileDescriptor_d938547f84707355, []int{108} } func (m *TunnelConnectionV2) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5904,7 +6008,7 @@ func (m *TunnelConnectionSpecV2) Reset() { *m = TunnelConnectionSpecV2{} func (m *TunnelConnectionSpecV2) String() string { return proto.CompactTextString(m) } func (*TunnelConnectionSpecV2) ProtoMessage() {} func (*TunnelConnectionSpecV2) Descriptor() ([]byte, []int) { - return fileDescriptor_d938547f84707355, []int{107} + return fileDescriptor_d938547f84707355, []int{109} } func (m *TunnelConnectionSpecV2) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5952,7 +6056,7 @@ func (m *SemaphoreFilter) Reset() { *m = SemaphoreFilter{} } func (m *SemaphoreFilter) String() string { return proto.CompactTextString(m) } func (*SemaphoreFilter) ProtoMessage() {} func (*SemaphoreFilter) Descriptor() ([]byte, []int) { - return fileDescriptor_d938547f84707355, []int{108} + return fileDescriptor_d938547f84707355, []int{110} } func (m *SemaphoreFilter) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6003,7 +6107,7 @@ func (m *AcquireSemaphoreRequest) Reset() { *m = AcquireSemaphoreRequest func (m *AcquireSemaphoreRequest) String() string { return proto.CompactTextString(m) } func (*AcquireSemaphoreRequest) ProtoMessage() {} func (*AcquireSemaphoreRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_d938547f84707355, []int{109} + return fileDescriptor_d938547f84707355, []int{111} } func (m *AcquireSemaphoreRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6051,7 +6155,7 @@ func (m *SemaphoreLease) Reset() { *m = SemaphoreLease{} } func (m *SemaphoreLease) String() string { return proto.CompactTextString(m) } func (*SemaphoreLease) ProtoMessage() {} func (*SemaphoreLease) Descriptor() ([]byte, []int) { - return fileDescriptor_d938547f84707355, []int{110} + return fileDescriptor_d938547f84707355, []int{112} } func (m *SemaphoreLease) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6097,7 +6201,7 @@ func (m *SemaphoreLeaseRef) Reset() { *m = SemaphoreLeaseRef{} } func (m *SemaphoreLeaseRef) String() string { return proto.CompactTextString(m) } func (*SemaphoreLeaseRef) ProtoMessage() {} func (*SemaphoreLeaseRef) Descriptor() ([]byte, []int) { - return fileDescriptor_d938547f84707355, []int{111} + return fileDescriptor_d938547f84707355, []int{113} } func (m *SemaphoreLeaseRef) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6146,7 +6250,7 @@ type SemaphoreV3 struct { func (m *SemaphoreV3) Reset() { *m = SemaphoreV3{} } func (*SemaphoreV3) ProtoMessage() {} func (*SemaphoreV3) Descriptor() ([]byte, []int) { - return fileDescriptor_d938547f84707355, []int{112} + return fileDescriptor_d938547f84707355, []int{114} } func (m *SemaphoreV3) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6188,7 +6292,7 @@ func (m *SemaphoreSpecV3) Reset() { *m = SemaphoreSpecV3{} } func (m *SemaphoreSpecV3) String() string { return proto.CompactTextString(m) } func (*SemaphoreSpecV3) ProtoMessage() {} func (*SemaphoreSpecV3) Descriptor() ([]byte, []int) { - return fileDescriptor_d938547f84707355, []int{113} + return fileDescriptor_d938547f84707355, []int{115} } func (m *SemaphoreSpecV3) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6237,7 +6341,7 @@ type WebSessionV2 struct { func (m *WebSessionV2) Reset() { *m = WebSessionV2{} } func (*WebSessionV2) ProtoMessage() {} func (*WebSessionV2) Descriptor() ([]byte, []int) { - return fileDescriptor_d938547f84707355, []int{114} + return fileDescriptor_d938547f84707355, []int{116} } func (m *WebSessionV2) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6298,7 +6402,7 @@ func (m *WebSessionSpecV2) Reset() { *m = WebSessionSpecV2{} } func (m *WebSessionSpecV2) String() string { return proto.CompactTextString(m) } func (*WebSessionSpecV2) ProtoMessage() {} func (*WebSessionSpecV2) Descriptor() ([]byte, []int) { - return fileDescriptor_d938547f84707355, []int{115} + return fileDescriptor_d938547f84707355, []int{117} } func (m *WebSessionSpecV2) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6340,7 +6444,7 @@ func (m *WebSessionFilter) Reset() { *m = WebSessionFilter{} } func (m *WebSessionFilter) String() string { return proto.CompactTextString(m) } func (*WebSessionFilter) ProtoMessage() {} func (*WebSessionFilter) Descriptor() ([]byte, []int) { - return fileDescriptor_d938547f84707355, []int{116} + return fileDescriptor_d938547f84707355, []int{118} } func (m *WebSessionFilter) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6389,7 +6493,7 @@ type RemoteClusterV3 struct { func (m *RemoteClusterV3) Reset() { *m = RemoteClusterV3{} } func (*RemoteClusterV3) ProtoMessage() {} func (*RemoteClusterV3) Descriptor() ([]byte, []int) { - return fileDescriptor_d938547f84707355, []int{117} + return fileDescriptor_d938547f84707355, []int{119} } func (m *RemoteClusterV3) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6433,7 +6537,7 @@ func (m *RemoteClusterStatusV3) Reset() { *m = RemoteClusterStatusV3{} } func (m *RemoteClusterStatusV3) String() string { return proto.CompactTextString(m) } func (*RemoteClusterStatusV3) ProtoMessage() {} func (*RemoteClusterStatusV3) Descriptor() ([]byte, []int) { - return fileDescriptor_d938547f84707355, []int{118} + return fileDescriptor_d938547f84707355, []int{120} } func (m *RemoteClusterStatusV3) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6483,7 +6587,7 @@ func (m *KubernetesCluster) Reset() { *m = KubernetesCluster{} } func (m *KubernetesCluster) String() string { return proto.CompactTextString(m) } func (*KubernetesCluster) ProtoMessage() {} func (*KubernetesCluster) Descriptor() ([]byte, []int) { - return fileDescriptor_d938547f84707355, []int{119} + return fileDescriptor_d938547f84707355, []int{121} } func (m *KubernetesCluster) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6532,7 +6636,7 @@ type KubernetesClusterV3 struct { func (m *KubernetesClusterV3) Reset() { *m = KubernetesClusterV3{} } func (*KubernetesClusterV3) ProtoMessage() {} func (*KubernetesClusterV3) Descriptor() ([]byte, []int) { - return fileDescriptor_d938547f84707355, []int{120} + return fileDescriptor_d938547f84707355, []int{122} } func (m *KubernetesClusterV3) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6574,7 +6678,7 @@ func (m *KubernetesClusterSpecV3) Reset() { *m = KubernetesClusterSpecV3 func (m *KubernetesClusterSpecV3) String() string { return proto.CompactTextString(m) } func (*KubernetesClusterSpecV3) ProtoMessage() {} func (*KubernetesClusterSpecV3) Descriptor() ([]byte, []int) { - return fileDescriptor_d938547f84707355, []int{121} + return fileDescriptor_d938547f84707355, []int{123} } func (m *KubernetesClusterSpecV3) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6626,7 +6730,7 @@ type WebTokenV3 struct { func (m *WebTokenV3) Reset() { *m = WebTokenV3{} } func (*WebTokenV3) ProtoMessage() {} func (*WebTokenV3) Descriptor() ([]byte, []int) { - return fileDescriptor_d938547f84707355, []int{122} + return fileDescriptor_d938547f84707355, []int{124} } func (m *WebTokenV3) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6670,7 +6774,7 @@ func (m *WebTokenSpecV3) Reset() { *m = WebTokenSpecV3{} } func (m *WebTokenSpecV3) String() string { return proto.CompactTextString(m) } func (*WebTokenSpecV3) ProtoMessage() {} func (*WebTokenSpecV3) Descriptor() ([]byte, []int) { - return fileDescriptor_d938547f84707355, []int{123} + return fileDescriptor_d938547f84707355, []int{125} } func (m *WebTokenSpecV3) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6714,7 +6818,7 @@ func (m *GetWebSessionRequest) Reset() { *m = GetWebSessionRequest{} } func (m *GetWebSessionRequest) String() string { return proto.CompactTextString(m) } func (*GetWebSessionRequest) ProtoMessage() {} func (*GetWebSessionRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_d938547f84707355, []int{124} + return fileDescriptor_d938547f84707355, []int{126} } func (m *GetWebSessionRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6758,7 +6862,7 @@ func (m *DeleteWebSessionRequest) Reset() { *m = DeleteWebSessionRequest func (m *DeleteWebSessionRequest) String() string { return proto.CompactTextString(m) } func (*DeleteWebSessionRequest) ProtoMessage() {} func (*DeleteWebSessionRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_d938547f84707355, []int{125} + return fileDescriptor_d938547f84707355, []int{127} } func (m *DeleteWebSessionRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6802,7 +6906,7 @@ func (m *GetWebTokenRequest) Reset() { *m = GetWebTokenRequest{} } func (m *GetWebTokenRequest) String() string { return proto.CompactTextString(m) } func (*GetWebTokenRequest) ProtoMessage() {} func (*GetWebTokenRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_d938547f84707355, []int{126} + return fileDescriptor_d938547f84707355, []int{128} } func (m *GetWebTokenRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6846,7 +6950,7 @@ func (m *DeleteWebTokenRequest) Reset() { *m = DeleteWebTokenRequest{} } func (m *DeleteWebTokenRequest) String() string { return proto.CompactTextString(m) } func (*DeleteWebTokenRequest) ProtoMessage() {} func (*DeleteWebTokenRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_d938547f84707355, []int{127} + return fileDescriptor_d938547f84707355, []int{129} } func (m *DeleteWebTokenRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6888,7 +6992,7 @@ func (m *ResourceRequest) Reset() { *m = ResourceRequest{} } func (m *ResourceRequest) String() string { return proto.CompactTextString(m) } func (*ResourceRequest) ProtoMessage() {} func (*ResourceRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_d938547f84707355, []int{128} + return fileDescriptor_d938547f84707355, []int{130} } func (m *ResourceRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6932,7 +7036,7 @@ func (m *ResourceWithSecretsRequest) Reset() { *m = ResourceWithSecretsR func (m *ResourceWithSecretsRequest) String() string { return proto.CompactTextString(m) } func (*ResourceWithSecretsRequest) ProtoMessage() {} func (*ResourceWithSecretsRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_d938547f84707355, []int{129} + return fileDescriptor_d938547f84707355, []int{131} } func (m *ResourceWithSecretsRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6974,7 +7078,7 @@ func (m *ResourcesWithSecretsRequest) Reset() { *m = ResourcesWithSecret func (m *ResourcesWithSecretsRequest) String() string { return proto.CompactTextString(m) } func (*ResourcesWithSecretsRequest) ProtoMessage() {} func (*ResourcesWithSecretsRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_d938547f84707355, []int{130} + return fileDescriptor_d938547f84707355, []int{132} } func (m *ResourcesWithSecretsRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -7018,7 +7122,7 @@ func (m *ResourceInNamespaceRequest) Reset() { *m = ResourceInNamespaceR func (m *ResourceInNamespaceRequest) String() string { return proto.CompactTextString(m) } func (*ResourceInNamespaceRequest) ProtoMessage() {} func (*ResourceInNamespaceRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_d938547f84707355, []int{131} + return fileDescriptor_d938547f84707355, []int{133} } func (m *ResourceInNamespaceRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -7060,7 +7164,7 @@ func (m *ResourcesInNamespaceRequest) Reset() { *m = ResourcesInNamespac func (m *ResourcesInNamespaceRequest) String() string { return proto.CompactTextString(m) } func (*ResourcesInNamespaceRequest) ProtoMessage() {} func (*ResourcesInNamespaceRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_d938547f84707355, []int{132} + return fileDescriptor_d938547f84707355, []int{134} } func (m *ResourcesInNamespaceRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -7110,7 +7214,7 @@ func (m *OIDCConnectorV3) Reset() { *m = OIDCConnectorV3{} } func (m *OIDCConnectorV3) String() string { return proto.CompactTextString(m) } func (*OIDCConnectorV3) ProtoMessage() {} func (*OIDCConnectorV3) Descriptor() ([]byte, []int) { - return fileDescriptor_d938547f84707355, []int{133} + return fileDescriptor_d938547f84707355, []int{135} } func (m *OIDCConnectorV3) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -7152,7 +7256,7 @@ func (m *OIDCConnectorV3List) Reset() { *m = OIDCConnectorV3List{} } func (m *OIDCConnectorV3List) String() string { return proto.CompactTextString(m) } func (*OIDCConnectorV3List) ProtoMessage() {} func (*OIDCConnectorV3List) Descriptor() ([]byte, []int) { - return fileDescriptor_d938547f84707355, []int{134} + return fileDescriptor_d938547f84707355, []int{136} } func (m *OIDCConnectorV3List) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -7225,7 +7329,7 @@ func (m *OIDCConnectorSpecV3) Reset() { *m = OIDCConnectorSpecV3{} } func (m *OIDCConnectorSpecV3) String() string { return proto.CompactTextString(m) } func (*OIDCConnectorSpecV3) ProtoMessage() {} func (*OIDCConnectorSpecV3) Descriptor() ([]byte, []int) { - return fileDescriptor_d938547f84707355, []int{135} + return fileDescriptor_d938547f84707355, []int{137} } func (m *OIDCConnectorSpecV3) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -7275,7 +7379,7 @@ func (m *SAMLConnectorV2) Reset() { *m = SAMLConnectorV2{} } func (m *SAMLConnectorV2) String() string { return proto.CompactTextString(m) } func (*SAMLConnectorV2) ProtoMessage() {} func (*SAMLConnectorV2) Descriptor() ([]byte, []int) { - return fileDescriptor_d938547f84707355, []int{136} + return fileDescriptor_d938547f84707355, []int{138} } func (m *SAMLConnectorV2) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -7317,7 +7421,7 @@ func (m *SAMLConnectorV2List) Reset() { *m = SAMLConnectorV2List{} } func (m *SAMLConnectorV2List) String() string { return proto.CompactTextString(m) } func (*SAMLConnectorV2List) ProtoMessage() {} func (*SAMLConnectorV2List) Descriptor() ([]byte, []int) { - return fileDescriptor_d938547f84707355, []int{137} + return fileDescriptor_d938547f84707355, []int{139} } func (m *SAMLConnectorV2List) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -7386,7 +7490,7 @@ func (m *SAMLConnectorSpecV2) Reset() { *m = SAMLConnectorSpecV2{} } func (m *SAMLConnectorSpecV2) String() string { return proto.CompactTextString(m) } func (*SAMLConnectorSpecV2) ProtoMessage() {} func (*SAMLConnectorSpecV2) Descriptor() ([]byte, []int) { - return fileDescriptor_d938547f84707355, []int{138} + return fileDescriptor_d938547f84707355, []int{140} } func (m *SAMLConnectorSpecV2) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -7432,7 +7536,7 @@ func (m *AttributeMapping) Reset() { *m = AttributeMapping{} } func (m *AttributeMapping) String() string { return proto.CompactTextString(m) } func (*AttributeMapping) ProtoMessage() {} func (*AttributeMapping) Descriptor() ([]byte, []int) { - return fileDescriptor_d938547f84707355, []int{139} + return fileDescriptor_d938547f84707355, []int{141} } func (m *AttributeMapping) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -7477,7 +7581,7 @@ func (m *AsymmetricKeyPair) Reset() { *m = AsymmetricKeyPair{} } func (m *AsymmetricKeyPair) String() string { return proto.CompactTextString(m) } func (*AsymmetricKeyPair) ProtoMessage() {} func (*AsymmetricKeyPair) Descriptor() ([]byte, []int) { - return fileDescriptor_d938547f84707355, []int{140} + return fileDescriptor_d938547f84707355, []int{142} } func (m *AsymmetricKeyPair) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -7527,7 +7631,7 @@ func (m *GithubConnectorV3) Reset() { *m = GithubConnectorV3{} } func (m *GithubConnectorV3) String() string { return proto.CompactTextString(m) } func (*GithubConnectorV3) ProtoMessage() {} func (*GithubConnectorV3) Descriptor() ([]byte, []int) { - return fileDescriptor_d938547f84707355, []int{141} + return fileDescriptor_d938547f84707355, []int{143} } func (m *GithubConnectorV3) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -7569,7 +7673,7 @@ func (m *GithubConnectorV3List) Reset() { *m = GithubConnectorV3List{} } func (m *GithubConnectorV3List) String() string { return proto.CompactTextString(m) } func (*GithubConnectorV3List) ProtoMessage() {} func (*GithubConnectorV3List) Descriptor() ([]byte, []int) { - return fileDescriptor_d938547f84707355, []int{142} + return fileDescriptor_d938547f84707355, []int{144} } func (m *GithubConnectorV3List) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -7619,7 +7723,7 @@ func (m *GithubConnectorSpecV3) Reset() { *m = GithubConnectorSpecV3{} } func (m *GithubConnectorSpecV3) String() string { return proto.CompactTextString(m) } func (*GithubConnectorSpecV3) ProtoMessage() {} func (*GithubConnectorSpecV3) Descriptor() ([]byte, []int) { - return fileDescriptor_d938547f84707355, []int{143} + return fileDescriptor_d938547f84707355, []int{145} } func (m *GithubConnectorSpecV3) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -7669,7 +7773,7 @@ func (m *TeamMapping) Reset() { *m = TeamMapping{} } func (m *TeamMapping) String() string { return proto.CompactTextString(m) } func (*TeamMapping) ProtoMessage() {} func (*TeamMapping) Descriptor() ([]byte, []int) { - return fileDescriptor_d938547f84707355, []int{144} + return fileDescriptor_d938547f84707355, []int{146} } func (m *TeamMapping) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -7718,7 +7822,7 @@ type TrustedClusterV2 struct { func (m *TrustedClusterV2) Reset() { *m = TrustedClusterV2{} } func (*TrustedClusterV2) ProtoMessage() {} func (*TrustedClusterV2) Descriptor() ([]byte, []int) { - return fileDescriptor_d938547f84707355, []int{145} + return fileDescriptor_d938547f84707355, []int{147} } func (m *TrustedClusterV2) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -7760,7 +7864,7 @@ func (m *TrustedClusterV2List) Reset() { *m = TrustedClusterV2List{} } func (m *TrustedClusterV2List) String() string { return proto.CompactTextString(m) } func (*TrustedClusterV2List) ProtoMessage() {} func (*TrustedClusterV2List) Descriptor() ([]byte, []int) { - return fileDescriptor_d938547f84707355, []int{146} + return fileDescriptor_d938547f84707355, []int{148} } func (m *TrustedClusterV2List) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -7816,7 +7920,7 @@ func (m *TrustedClusterSpecV2) Reset() { *m = TrustedClusterSpecV2{} } func (m *TrustedClusterSpecV2) String() string { return proto.CompactTextString(m) } func (*TrustedClusterSpecV2) ProtoMessage() {} func (*TrustedClusterSpecV2) Descriptor() ([]byte, []int) { - return fileDescriptor_d938547f84707355, []int{147} + return fileDescriptor_d938547f84707355, []int{149} } func (m *TrustedClusterSpecV2) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -7869,7 +7973,7 @@ func (m *LockV2) Reset() { *m = LockV2{} } func (m *LockV2) String() string { return proto.CompactTextString(m) } func (*LockV2) ProtoMessage() {} func (*LockV2) Descriptor() ([]byte, []int) { - return fileDescriptor_d938547f84707355, []int{148} + return fileDescriptor_d938547f84707355, []int{150} } func (m *LockV2) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -7915,7 +8019,7 @@ func (m *LockSpecV2) Reset() { *m = LockSpecV2{} } func (m *LockSpecV2) String() string { return proto.CompactTextString(m) } func (*LockSpecV2) ProtoMessage() {} func (*LockSpecV2) Descriptor() ([]byte, []int) { - return fileDescriptor_d938547f84707355, []int{149} + return fileDescriptor_d938547f84707355, []int{151} } func (m *LockSpecV2) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -7970,7 +8074,7 @@ type LockTarget struct { func (m *LockTarget) Reset() { *m = LockTarget{} } func (*LockTarget) ProtoMessage() {} func (*LockTarget) Descriptor() ([]byte, []int) { - return fileDescriptor_d938547f84707355, []int{150} + return fileDescriptor_d938547f84707355, []int{152} } func (m *LockTarget) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -8014,7 +8118,7 @@ func (m *AddressCondition) Reset() { *m = AddressCondition{} } func (m *AddressCondition) String() string { return proto.CompactTextString(m) } func (*AddressCondition) ProtoMessage() {} func (*AddressCondition) Descriptor() ([]byte, []int) { - return fileDescriptor_d938547f84707355, []int{151} + return fileDescriptor_d938547f84707355, []int{153} } func (m *AddressCondition) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -8057,7 +8161,7 @@ func (m *NetworkRestrictionsSpecV4) Reset() { *m = NetworkRestrictionsSp func (m *NetworkRestrictionsSpecV4) String() string { return proto.CompactTextString(m) } func (*NetworkRestrictionsSpecV4) ProtoMessage() {} func (*NetworkRestrictionsSpecV4) Descriptor() ([]byte, []int) { - return fileDescriptor_d938547f84707355, []int{152} + return fileDescriptor_d938547f84707355, []int{154} } func (m *NetworkRestrictionsSpecV4) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -8110,7 +8214,7 @@ func (m *NetworkRestrictionsV4) Reset() { *m = NetworkRestrictionsV4{} } func (m *NetworkRestrictionsV4) String() string { return proto.CompactTextString(m) } func (*NetworkRestrictionsV4) ProtoMessage() {} func (*NetworkRestrictionsV4) Descriptor() ([]byte, []int) { - return fileDescriptor_d938547f84707355, []int{153} + return fileDescriptor_d938547f84707355, []int{155} } func (m *NetworkRestrictionsV4) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -8154,7 +8258,7 @@ func (m *WindowsDesktopServiceV3) Reset() { *m = WindowsDesktopServiceV3 func (m *WindowsDesktopServiceV3) String() string { return proto.CompactTextString(m) } func (*WindowsDesktopServiceV3) ProtoMessage() {} func (*WindowsDesktopServiceV3) Descriptor() ([]byte, []int) { - return fileDescriptor_d938547f84707355, []int{154} + return fileDescriptor_d938547f84707355, []int{156} } func (m *WindowsDesktopServiceV3) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -8198,7 +8302,7 @@ func (m *WindowsDesktopServiceSpecV3) Reset() { *m = WindowsDesktopServi func (m *WindowsDesktopServiceSpecV3) String() string { return proto.CompactTextString(m) } func (*WindowsDesktopServiceSpecV3) ProtoMessage() {} func (*WindowsDesktopServiceSpecV3) Descriptor() ([]byte, []int) { - return fileDescriptor_d938547f84707355, []int{155} + return fileDescriptor_d938547f84707355, []int{157} } func (m *WindowsDesktopServiceSpecV3) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -8239,7 +8343,7 @@ func (m *WindowsDesktopFilter) Reset() { *m = WindowsDesktopFilter{} } func (m *WindowsDesktopFilter) String() string { return proto.CompactTextString(m) } func (*WindowsDesktopFilter) ProtoMessage() {} func (*WindowsDesktopFilter) Descriptor() ([]byte, []int) { - return fileDescriptor_d938547f84707355, []int{156} + return fileDescriptor_d938547f84707355, []int{158} } func (m *WindowsDesktopFilter) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -8283,7 +8387,7 @@ func (m *WindowsDesktopV3) Reset() { *m = WindowsDesktopV3{} } func (m *WindowsDesktopV3) String() string { return proto.CompactTextString(m) } func (*WindowsDesktopV3) ProtoMessage() {} func (*WindowsDesktopV3) Descriptor() ([]byte, []int) { - return fileDescriptor_d938547f84707355, []int{157} + return fileDescriptor_d938547f84707355, []int{159} } func (m *WindowsDesktopV3) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -8329,7 +8433,7 @@ func (m *WindowsDesktopSpecV3) Reset() { *m = WindowsDesktopSpecV3{} } func (m *WindowsDesktopSpecV3) String() string { return proto.CompactTextString(m) } func (*WindowsDesktopSpecV3) ProtoMessage() {} func (*WindowsDesktopSpecV3) Descriptor() ([]byte, []int) { - return fileDescriptor_d938547f84707355, []int{158} + return fileDescriptor_d938547f84707355, []int{160} } func (m *WindowsDesktopSpecV3) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -8395,7 +8499,7 @@ func (m *RegisterUsingTokenRequest) Reset() { *m = RegisterUsingTokenReq func (m *RegisterUsingTokenRequest) String() string { return proto.CompactTextString(m) } func (*RegisterUsingTokenRequest) ProtoMessage() {} func (*RegisterUsingTokenRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_d938547f84707355, []int{159} + return fileDescriptor_d938547f84707355, []int{161} } func (m *RegisterUsingTokenRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -8449,7 +8553,7 @@ func (m *RecoveryCodesV1) Reset() { *m = RecoveryCodesV1{} } func (m *RecoveryCodesV1) String() string { return proto.CompactTextString(m) } func (*RecoveryCodesV1) ProtoMessage() {} func (*RecoveryCodesV1) Descriptor() ([]byte, []int) { - return fileDescriptor_d938547f84707355, []int{160} + return fileDescriptor_d938547f84707355, []int{162} } func (m *RecoveryCodesV1) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -8494,7 +8598,7 @@ func (m *RecoveryCodesSpecV1) Reset() { *m = RecoveryCodesSpecV1{} } func (m *RecoveryCodesSpecV1) String() string { return proto.CompactTextString(m) } func (*RecoveryCodesSpecV1) ProtoMessage() {} func (*RecoveryCodesSpecV1) Descriptor() ([]byte, []int) { - return fileDescriptor_d938547f84707355, []int{161} + return fileDescriptor_d938547f84707355, []int{163} } func (m *RecoveryCodesSpecV1) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -8538,7 +8642,7 @@ func (m *RecoveryCode) Reset() { *m = RecoveryCode{} } func (m *RecoveryCode) String() string { return proto.CompactTextString(m) } func (*RecoveryCode) ProtoMessage() {} func (*RecoveryCode) Descriptor() ([]byte, []int) { - return fileDescriptor_d938547f84707355, []int{162} + return fileDescriptor_d938547f84707355, []int{164} } func (m *RecoveryCode) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -8582,7 +8686,7 @@ func (m *SessionTrackerV1) Reset() { *m = SessionTrackerV1{} } func (m *SessionTrackerV1) String() string { return proto.CompactTextString(m) } func (*SessionTrackerV1) ProtoMessage() {} func (*SessionTrackerV1) Descriptor() ([]byte, []int) { - return fileDescriptor_d938547f84707355, []int{163} + return fileDescriptor_d938547f84707355, []int{165} } func (m *SessionTrackerV1) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -8664,7 +8768,7 @@ func (m *SessionTrackerSpecV1) Reset() { *m = SessionTrackerSpecV1{} } func (m *SessionTrackerSpecV1) String() string { return proto.CompactTextString(m) } func (*SessionTrackerSpecV1) ProtoMessage() {} func (*SessionTrackerSpecV1) Descriptor() ([]byte, []int) { - return fileDescriptor_d938547f84707355, []int{164} + return fileDescriptor_d938547f84707355, []int{166} } func (m *SessionTrackerSpecV1) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -8711,7 +8815,7 @@ func (m *SessionTrackerPolicySet) Reset() { *m = SessionTrackerPolicySet func (m *SessionTrackerPolicySet) String() string { return proto.CompactTextString(m) } func (*SessionTrackerPolicySet) ProtoMessage() {} func (*SessionTrackerPolicySet) Descriptor() ([]byte, []int) { - return fileDescriptor_d938547f84707355, []int{165} + return fileDescriptor_d938547f84707355, []int{167} } func (m *SessionTrackerPolicySet) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -8759,7 +8863,7 @@ func (m *Participant) Reset() { *m = Participant{} } func (m *Participant) String() string { return proto.CompactTextString(m) } func (*Participant) ProtoMessage() {} func (*Participant) Descriptor() ([]byte, []int) { - return fileDescriptor_d938547f84707355, []int{166} + return fileDescriptor_d938547f84707355, []int{168} } func (m *Participant) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -8803,7 +8907,7 @@ func (m *SortBy) Reset() { *m = SortBy{} } func (m *SortBy) String() string { return proto.CompactTextString(m) } func (*SortBy) ProtoMessage() {} func (*SortBy) Descriptor() ([]byte, []int) { - return fileDescriptor_d938547f84707355, []int{167} + return fileDescriptor_d938547f84707355, []int{169} } func (m *SortBy) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -8835,7 +8939,6 @@ var xxx_messageInfo_SortBy proto.InternalMessageInfo func init() { proto.RegisterEnum("types.DatabaseTLSMode", DatabaseTLSMode_name, DatabaseTLSMode_value) proto.RegisterEnum("types.PrivateKeyType", PrivateKeyType_name, PrivateKeyType_value) - proto.RegisterEnum("types.ProxyPeering", ProxyPeering_name, ProxyPeering_value) proto.RegisterEnum("types.ProxyListenerMode", ProxyListenerMode_name, ProxyListenerMode_value) proto.RegisterEnum("types.RoutingStrategy", RoutingStrategy_name, RoutingStrategy_value) proto.RegisterEnum("types.UserTokenUsage", UserTokenUsage_name, UserTokenUsage_value) @@ -8902,6 +9005,8 @@ func init() { proto.RegisterType((*ClusterAuditConfigSpecV2)(nil), "types.ClusterAuditConfigSpecV2") proto.RegisterType((*ClusterNetworkingConfigV2)(nil), "types.ClusterNetworkingConfigV2") proto.RegisterType((*ClusterNetworkingConfigSpecV2)(nil), "types.ClusterNetworkingConfigSpecV2") + proto.RegisterType((*AgentMeshTunnelStrategy)(nil), "types.AgentMeshTunnelStrategy") + proto.RegisterType((*ProxyPeeringTunnelStrategy)(nil), "types.ProxyPeeringTunnelStrategy") proto.RegisterType((*SessionRecordingConfigV2)(nil), "types.SessionRecordingConfigV2") proto.RegisterType((*SessionRecordingConfigSpecV2)(nil), "types.SessionRecordingConfigSpecV2") proto.RegisterType((*AuthPreferenceV2)(nil), "types.AuthPreferenceV2") @@ -9033,733 +9138,742 @@ func init() { func init() { proto.RegisterFile("types.proto", fileDescriptor_d938547f84707355) } var fileDescriptor_d938547f84707355 = []byte{ - // 11616 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xdc, 0x7d, 0x6d, 0x6c, 0x1c, 0x49, - 0x76, 0x98, 0x7a, 0x66, 0x38, 0x9c, 0x79, 0x1c, 0x92, 0xc3, 0xa2, 0x3e, 0x28, 0xad, 0x76, 0x47, - 0xd7, 0xfb, 0x25, 0xe9, 0x76, 0xc5, 0x13, 0x75, 0x2b, 0x7b, 0x6f, 0xbf, 0x6e, 0x86, 0xa4, 0x24, - 0xae, 0x28, 0x92, 0xdb, 0xc3, 0x8f, 0x3b, 0xdf, 0xad, 0xdb, 0xcd, 0xe9, 0x12, 0xd9, 0xcb, 0xe1, - 0xf4, 0xb8, 0xbb, 0x47, 0x12, 0xed, 0x18, 0x76, 0x10, 0x38, 0x86, 0x61, 0xf8, 0xee, 0x6c, 0x9c, - 0x63, 0x3b, 0x70, 0x60, 0xc7, 0x48, 0x90, 0x38, 0xc1, 0x25, 0x80, 0x13, 0x20, 0x09, 0x10, 0x04, - 0x30, 0x10, 0x18, 0xf7, 0x23, 0x41, 0xfc, 0x2f, 0x88, 0x13, 0x30, 0xf1, 0x5d, 0xfe, 0x98, 0x40, - 0x82, 0x00, 0xf9, 0xe5, 0x4b, 0x8c, 0x04, 0xf5, 0xaa, 0xaa, 0xbb, 0xaa, 0xa7, 0x87, 0x1c, 0xee, - 0x6a, 0x01, 0x4b, 0xbf, 0xc8, 0x79, 0xf5, 0xde, 0xeb, 0xfa, 0x7c, 0xf5, 0x5e, 0xd5, 0x7b, 0xaf, - 0x60, 0x2c, 0x3a, 0xe8, 0xd2, 0xf0, 0x46, 0x37, 0xf0, 0x23, 0x9f, 0x8c, 0xe0, 0x8f, 0x4b, 0x67, - 0x77, 0xfc, 0x1d, 0x1f, 0x21, 0xb3, 0xec, 0x3f, 0x5e, 0x78, 0xa9, 0xb6, 0xe3, 0xfb, 0x3b, 0x6d, - 0x3a, 0x8b, 0xbf, 0xb6, 0x7b, 0x0f, 0x67, 0x23, 0x6f, 0x9f, 0x86, 0x91, 0xb3, 0xdf, 0x15, 0x08, - 0xf3, 0x3b, 0x5e, 0xb4, 0xdb, 0xdb, 0xbe, 0xd1, 0xf2, 0xf7, 0x67, 0x77, 0x02, 0xe7, 0x91, 0x17, - 0x39, 0x91, 0xe7, 0x77, 0x9c, 0xf6, 0x6c, 0x44, 0xdb, 0xb4, 0xeb, 0x07, 0xd1, 0xac, 0xd3, 0xf5, - 0x66, 0xf1, 0x1b, 0xb3, 0x8f, 0x03, 0xa7, 0xdb, 0xa5, 0x41, 0xf2, 0x0f, 0x67, 0x62, 0xfe, 0xdd, - 0x3c, 0x94, 0xef, 0x53, 0xda, 0xad, 0xb7, 0xbd, 0x47, 0x94, 0xbc, 0x0c, 0x85, 0x15, 0x67, 0x9f, - 0xce, 0x18, 0x57, 0x8c, 0xab, 0xe5, 0xc6, 0xe4, 0xd1, 0x61, 0x6d, 0x2c, 0xa4, 0xc1, 0x23, 0x1a, - 0xd8, 0x1d, 0x67, 0x9f, 0x5a, 0x58, 0x48, 0xbe, 0x08, 0x65, 0xf6, 0x37, 0xec, 0x3a, 0x2d, 0x3a, - 0x93, 0x43, 0xcc, 0xf1, 0xa3, 0xc3, 0x5a, 0xb9, 0x23, 0x81, 0x56, 0x52, 0x4e, 0x5e, 0x83, 0xd1, - 0x65, 0xea, 0x84, 0x74, 0x69, 0x61, 0x26, 0x7f, 0xc5, 0xb8, 0x9a, 0x6f, 0x54, 0x8e, 0x0e, 0x6b, - 0xa5, 0x36, 0x03, 0xd9, 0x9e, 0x6b, 0xc9, 0x42, 0xb2, 0x04, 0xa3, 0x8b, 0x4f, 0xba, 0x5e, 0x40, - 0xc3, 0x99, 0xc2, 0x15, 0xe3, 0xea, 0xd8, 0xdc, 0xa5, 0x1b, 0xbc, 0xfd, 0x37, 0x64, 0xfb, 0x6f, - 0xac, 0xcb, 0xf6, 0x37, 0xa6, 0xbf, 0x7f, 0x58, 0x3b, 0x73, 0x74, 0x58, 0x1b, 0xa5, 0x9c, 0xe4, - 0x3b, 0xff, 0xb5, 0x66, 0x58, 0x92, 0x9e, 0xbc, 0x0b, 0x85, 0xf5, 0x83, 0x2e, 0x9d, 0x29, 0x5f, - 0x31, 0xae, 0x4e, 0xcc, 0xbd, 0x74, 0x83, 0xf7, 0x78, 0xdc, 0xc8, 0xe4, 0x3f, 0x86, 0xd5, 0x28, - 0x1d, 0x1d, 0xd6, 0x0a, 0x0c, 0xc5, 0x42, 0x2a, 0xf2, 0x26, 0x14, 0xef, 0xf9, 0x61, 0xb4, 0xb4, - 0x30, 0x03, 0xd8, 0xb4, 0x73, 0x47, 0x87, 0xb5, 0xa9, 0x5d, 0x3f, 0x8c, 0x6c, 0xcf, 0x7d, 0xc3, - 0xdf, 0xf7, 0x22, 0xba, 0xdf, 0x8d, 0x0e, 0x2c, 0x81, 0x64, 0x6e, 0xc3, 0xb8, 0xc6, 0x8f, 0x8c, - 0xc1, 0xe8, 0xc6, 0xca, 0xfd, 0x95, 0xd5, 0xad, 0x95, 0xea, 0x19, 0x52, 0x82, 0xc2, 0xca, 0xea, - 0xc2, 0x62, 0xd5, 0x20, 0xa3, 0x90, 0xaf, 0xaf, 0xad, 0x55, 0x73, 0xa4, 0x02, 0xa5, 0x85, 0xfa, - 0x7a, 0xbd, 0x51, 0x6f, 0x2e, 0x56, 0xf3, 0x64, 0x1a, 0x26, 0xb7, 0x96, 0x56, 0x16, 0x56, 0xb7, - 0x9a, 0xf6, 0xc2, 0x62, 0xf3, 0xfe, 0xfa, 0xea, 0x5a, 0xb5, 0x40, 0x26, 0x00, 0xee, 0x6f, 0x34, - 0x16, 0xad, 0x95, 0xc5, 0xf5, 0xc5, 0x66, 0x75, 0xc4, 0xfc, 0xa5, 0x3c, 0x94, 0x1e, 0xd0, 0xc8, - 0x71, 0x9d, 0xc8, 0x21, 0x97, 0xb5, 0x21, 0xc2, 0xda, 0x2b, 0x63, 0xf3, 0x72, 0xff, 0xd8, 0x8c, - 0x1c, 0x1d, 0xd6, 0x8c, 0x37, 0xd5, 0x31, 0x79, 0x07, 0xc6, 0x16, 0x68, 0xd8, 0x0a, 0xbc, 0x2e, - 0x9b, 0x2f, 0x38, 0x2e, 0xe5, 0xc6, 0xc5, 0xa3, 0xc3, 0xda, 0x39, 0x37, 0x01, 0x2b, 0x6d, 0x55, - 0xb1, 0xc9, 0x12, 0x14, 0x97, 0x9d, 0x6d, 0xda, 0x0e, 0x67, 0x46, 0xae, 0xe4, 0xaf, 0x8e, 0xcd, - 0xbd, 0x20, 0xfa, 0x57, 0x56, 0xf0, 0x06, 0x2f, 0x5d, 0xec, 0x44, 0xc1, 0x41, 0xe3, 0xec, 0xd1, - 0x61, 0xad, 0xda, 0x46, 0x80, 0xda, 0x77, 0x1c, 0x85, 0x34, 0x93, 0x31, 0x2f, 0x9e, 0x38, 0xe6, - 0x2f, 0x7e, 0xff, 0xb0, 0x66, 0xb0, 0xb1, 0x10, 0x63, 0x9e, 0xf0, 0xd3, 0x47, 0xff, 0x0a, 0xe4, - 0x96, 0x16, 0x66, 0x46, 0x71, 0xae, 0x55, 0x8f, 0x0e, 0x6b, 0x15, 0x6d, 0xd8, 0x72, 0x4b, 0x0b, - 0x97, 0xde, 0x86, 0x31, 0xa5, 0x8e, 0xa4, 0x0a, 0xf9, 0x3d, 0x7a, 0xc0, 0xfb, 0xd3, 0x62, 0xff, - 0x92, 0xb3, 0x30, 0xf2, 0xc8, 0x69, 0xf7, 0x44, 0x07, 0x5a, 0xfc, 0xc7, 0x57, 0x72, 0x3f, 0x6e, - 0x98, 0xbf, 0x5e, 0x80, 0x92, 0xe5, 0xf3, 0x75, 0x46, 0xae, 0xc1, 0x48, 0x33, 0x72, 0x22, 0x39, - 0x14, 0xd3, 0x47, 0x87, 0xb5, 0xc9, 0x90, 0x01, 0x94, 0xef, 0x71, 0x0c, 0x86, 0xba, 0xb6, 0xeb, - 0x84, 0x72, 0x48, 0x10, 0xb5, 0xcb, 0x00, 0x2a, 0x2a, 0x62, 0x90, 0xd7, 0xa0, 0xf0, 0xc0, 0x77, - 0xa9, 0x18, 0x15, 0x72, 0x74, 0x58, 0x9b, 0xd8, 0xf7, 0x5d, 0x15, 0x11, 0xcb, 0xc9, 0x1b, 0x50, - 0x9e, 0xef, 0x05, 0x01, 0xed, 0xb0, 0xa9, 0x5a, 0x40, 0xe4, 0x89, 0xa3, 0xc3, 0x1a, 0xb4, 0x38, - 0x90, 0x2d, 0xae, 0x04, 0x81, 0x75, 0x75, 0x33, 0x72, 0x82, 0x88, 0xba, 0x33, 0x23, 0x43, 0x75, - 0x35, 0x5b, 0x5e, 0x53, 0x21, 0x27, 0x49, 0x77, 0xb5, 0xe0, 0x44, 0xee, 0xc1, 0xd8, 0xdd, 0xc0, - 0x69, 0xd1, 0x35, 0x1a, 0x78, 0xbe, 0x8b, 0x63, 0x98, 0x6f, 0xbc, 0x76, 0x74, 0x58, 0x3b, 0xbf, - 0xc3, 0xc0, 0x76, 0x17, 0xe1, 0x09, 0xf5, 0x8f, 0x0e, 0x6b, 0xa5, 0x85, 0x5e, 0x80, 0xbd, 0x67, - 0xa9, 0xa4, 0xe4, 0xa7, 0xd8, 0x90, 0x84, 0x11, 0x76, 0x2d, 0x75, 0x71, 0xf4, 0x8e, 0xaf, 0xa2, - 0x29, 0xaa, 0x78, 0xbe, 0xed, 0x84, 0x91, 0x1d, 0x70, 0xba, 0x54, 0x3d, 0x55, 0x96, 0x64, 0x15, - 0x4a, 0xcd, 0xd6, 0x2e, 0x75, 0x7b, 0x6d, 0x3a, 0x53, 0x42, 0xf6, 0x17, 0xc4, 0xc4, 0x95, 0xe3, - 0x29, 0x8b, 0x1b, 0x97, 0x04, 0x6f, 0x12, 0x0a, 0x88, 0xd2, 0xf7, 0x31, 0x93, 0xaf, 0x94, 0x7e, - 0xeb, 0xf7, 0x6a, 0x67, 0x7e, 0xe1, 0xbf, 0x5c, 0x39, 0x63, 0xfe, 0x8b, 0x1c, 0x54, 0xd3, 0x4c, - 0xc8, 0x43, 0x18, 0xdf, 0xe8, 0xba, 0x4e, 0x44, 0xe7, 0xdb, 0x1e, 0xed, 0x44, 0x21, 0x4e, 0x92, - 0xe3, 0xdb, 0xf4, 0x8a, 0xf8, 0xee, 0x4c, 0x0f, 0x09, 0xed, 0x16, 0xa7, 0x4c, 0xb5, 0x4a, 0x67, - 0x9b, 0x7c, 0xa7, 0x89, 0x72, 0x3a, 0xc4, 0x19, 0x76, 0xba, 0xef, 0x70, 0x09, 0x3f, 0xe0, 0x3b, - 0x82, 0xad, 0x98, 0x40, 0x1d, 0x77, 0xfb, 0x00, 0x67, 0xe6, 0xf0, 0x13, 0x88, 0x91, 0x64, 0x4c, - 0x20, 0x06, 0x36, 0xff, 0xbb, 0x01, 0x13, 0x16, 0x0d, 0xfd, 0x5e, 0xd0, 0xa2, 0xf7, 0xa8, 0xe3, - 0xd2, 0x80, 0x4d, 0xff, 0xfb, 0x5e, 0xc7, 0x15, 0x6b, 0x0a, 0xa7, 0xff, 0x9e, 0xd7, 0x51, 0x97, - 0x30, 0x96, 0x93, 0x2f, 0xc1, 0x68, 0xb3, 0xb7, 0x8d, 0xa8, 0x7c, 0x4d, 0x9d, 0xc7, 0x11, 0xeb, - 0x6d, 0xdb, 0x29, 0x74, 0x89, 0x46, 0x66, 0x61, 0x74, 0x93, 0x06, 0x61, 0x22, 0xf1, 0x50, 0xb2, - 0x3f, 0xe2, 0x20, 0x95, 0x40, 0x60, 0x91, 0xbb, 0x89, 0xd4, 0x15, 0x7b, 0xd2, 0x64, 0x4a, 0xd6, - 0x25, 0x53, 0x65, 0x5f, 0x40, 0xd4, 0xa9, 0x22, 0xb1, 0xcc, 0x5f, 0xcb, 0x41, 0x75, 0xc1, 0x89, - 0x9c, 0x6d, 0x27, 0x14, 0xfd, 0xb9, 0x79, 0x8b, 0xc9, 0x71, 0xa5, 0xa1, 0x28, 0xc7, 0x59, 0xcd, - 0x3f, 0x75, 0xf3, 0x5e, 0x4d, 0x37, 0x6f, 0x8c, 0x6d, 0x90, 0xa2, 0x79, 0x49, 0xa3, 0xde, 0x3b, - 0xb9, 0x51, 0x55, 0xd1, 0xa8, 0x92, 0x6c, 0x54, 0xd2, 0x14, 0xf2, 0x1e, 0x14, 0x9a, 0x5d, 0xda, - 0x12, 0x42, 0x44, 0xca, 0x7e, 0xbd, 0x71, 0x0c, 0x61, 0xf3, 0x56, 0xa3, 0x22, 0xd8, 0x14, 0xc2, - 0x2e, 0x6d, 0x59, 0x48, 0xa6, 0x2c, 0x9a, 0xef, 0x16, 0xe1, 0x6c, 0x16, 0x19, 0x79, 0x4f, 0xdf, - 0x9c, 0x78, 0xf7, 0xbc, 0x30, 0x70, 0x73, 0x9a, 0x31, 0xf4, 0xed, 0xe9, 0x3a, 0x94, 0xd6, 0xd8, - 0x84, 0x6c, 0xf9, 0x6d, 0xd1, 0x73, 0x4c, 0x2a, 0x96, 0xba, 0x12, 0x66, 0x58, 0x71, 0x39, 0x79, - 0x01, 0xf2, 0x1b, 0xd6, 0x92, 0xe8, 0xae, 0xf2, 0xd1, 0x61, 0x2d, 0xdf, 0x0b, 0xbc, 0x19, 0xc3, - 0x62, 0x50, 0x32, 0x0b, 0xc5, 0xf9, 0xfa, 0x3c, 0x0d, 0x22, 0xec, 0xa6, 0x4a, 0xe3, 0x02, 0x9b, - 0x2d, 0x2d, 0xc7, 0x6e, 0xd1, 0x20, 0xd2, 0x3e, 0x2f, 0xd0, 0xc8, 0x17, 0x21, 0x5f, 0xdf, 0x6a, - 0x8a, 0x9e, 0x01, 0xd1, 0x33, 0xf5, 0xad, 0x66, 0x63, 0x5c, 0x74, 0x44, 0xde, 0x79, 0x1c, 0x32, - 0xee, 0xf5, 0xad, 0xa6, 0x3a, 0x5a, 0xc5, 0x63, 0x46, 0xeb, 0x2a, 0x94, 0x98, 0x9e, 0xc1, 0x36, - 0x78, 0x14, 0x8a, 0x65, 0xae, 0x3e, 0xed, 0x0a, 0x98, 0x15, 0x97, 0x92, 0x97, 0x63, 0xb5, 0xa5, - 0x94, 0xf0, 0x13, 0x6a, 0x8b, 0x54, 0x56, 0xc8, 0x13, 0x18, 0x5f, 0x38, 0xe8, 0x38, 0xfb, 0x5e, - 0x4b, 0x6c, 0xe1, 0x65, 0xdc, 0xc2, 0x6f, 0x1c, 0x33, 0x8c, 0x37, 0x34, 0x02, 0xbe, 0xab, 0x4b, - 0xe1, 0x3b, 0xe3, 0xf2, 0x32, 0x3b, 0xbd, 0xc3, 0xcf, 0x18, 0x96, 0xfe, 0x21, 0xb6, 0x96, 0xa4, - 0x88, 0x44, 0xbd, 0x2a, 0x99, 0x76, 0x12, 0x9c, 0xac, 0xa5, 0x40, 0x40, 0xd4, 0xb5, 0x14, 0x6f, - 0xba, 0xef, 0x41, 0xfe, 0xee, 0xfc, 0xda, 0xcc, 0x18, 0xf2, 0x20, 0x82, 0xc7, 0xdd, 0xf9, 0xb5, - 0xf9, 0xb6, 0xdf, 0x73, 0x9b, 0x1f, 0x2d, 0x37, 0x2e, 0x08, 0x36, 0xe3, 0x3b, 0xad, 0xae, 0x56, - 0x23, 0x46, 0x47, 0x16, 0xa1, 0x24, 0x5b, 0x39, 0x53, 0x41, 0x1e, 0x53, 0xa9, 0xc6, 0x6f, 0xde, - 0xe2, 0x6b, 0xcd, 0x15, 0xbf, 0xd5, 0x5a, 0x48, 0x9c, 0x4b, 0x5b, 0x40, 0xfa, 0xfb, 0x25, 0x43, - 0x93, 0xf8, 0xa2, 0xaa, 0x49, 0x8c, 0xcd, 0x9d, 0x13, 0xdf, 0x9a, 0xf7, 0xf7, 0xf7, 0x9d, 0x8e, - 0x8b, 0xb4, 0x9b, 0x73, 0xaa, 0x82, 0x51, 0x87, 0x89, 0xa4, 0x22, 0xcb, 0x5e, 0x18, 0x91, 0x59, - 0x28, 0x4b, 0x08, 0xdb, 0x44, 0xf2, 0x99, 0x55, 0xb6, 0x12, 0x1c, 0xf3, 0x8f, 0x73, 0x00, 0x49, - 0xc9, 0x33, 0x2a, 0x67, 0x7e, 0x4c, 0x93, 0x33, 0xe7, 0xd2, 0x13, 0x74, 0xa0, 0x84, 0x21, 0x1f, - 0x40, 0x91, 0xa9, 0x5c, 0x3d, 0xa9, 0x52, 0x5e, 0x48, 0x93, 0x62, 0xe1, 0xe6, 0xad, 0xc6, 0x84, - 0x20, 0x2e, 0x86, 0x08, 0xb1, 0x04, 0x99, 0x22, 0xa2, 0xfe, 0x67, 0x21, 0x19, 0x0c, 0x21, 0x9c, - 0xae, 0x2a, 0xd2, 0xc5, 0x48, 0xd6, 0xa3, 0x94, 0x2e, 0x8a, 0x6c, 0xb9, 0xc8, 0x65, 0x0b, 0xef, - 0xd4, 0x51, 0x21, 0x5b, 0xd2, 0x92, 0x85, 0x77, 0xe0, 0x89, 0x92, 0xa5, 0x9b, 0x5e, 0xb6, 0x05, - 0x9c, 0x06, 0x57, 0x33, 0x7b, 0x25, 0x6b, 0xc1, 0x5e, 0x39, 0x69, 0xc1, 0xa6, 0x97, 0xeb, 0xad, - 0x41, 0xb2, 0xec, 0x9c, 0x5c, 0x5d, 0xce, 0x63, 0x95, 0x1c, 0x65, 0xda, 0x3b, 0x7c, 0x69, 0x16, - 0x07, 0x2e, 0xcd, 0x73, 0x99, 0x4b, 0x93, 0x2f, 0xcc, 0x77, 0x60, 0xa4, 0xfe, 0x33, 0xbd, 0x80, - 0x0a, 0xdd, 0xaf, 0x22, 0xbf, 0xc9, 0x60, 0xf1, 0x9a, 0x9e, 0x74, 0xd8, 0x4f, 0x55, 0x67, 0xc6, - 0x72, 0xf6, 0xe5, 0xf5, 0xe5, 0xa6, 0xd0, 0xeb, 0x48, 0xaa, 0x5b, 0xd6, 0x97, 0x95, 0x6a, 0x47, - 0x5a, 0xab, 0x19, 0x15, 0x99, 0x85, 0x5c, 0x7d, 0x01, 0x8d, 0xc5, 0xb1, 0xb9, 0xb2, 0xfc, 0xec, - 0x42, 0xe3, 0xac, 0x20, 0xa9, 0x38, 0x9a, 0xfd, 0x50, 0x5f, 0xf8, 0xfc, 0x16, 0x7f, 0x5b, 0x51, - 0x13, 0xc4, 0x34, 0x65, 0xe6, 0xa8, 0x98, 0x2c, 0x46, 0xa2, 0xb4, 0xf4, 0x4d, 0x96, 0x78, 0xaa, - 0x5c, 0xe3, 0x03, 0x97, 0xeb, 0x1b, 0xb8, 0x31, 0x65, 0x13, 0xc2, 0xe1, 0x32, 0xff, 0xdc, 0x40, - 0x5c, 0xf2, 0x06, 0x14, 0x2d, 0xba, 0x93, 0xec, 0xb5, 0x68, 0xb3, 0x05, 0x08, 0x51, 0x3f, 0xc0, - 0x71, 0x50, 0x90, 0x53, 0x37, 0xdc, 0xf5, 0x1e, 0x46, 0xe2, 0x2b, 0xb1, 0x20, 0x17, 0x60, 0x45, - 0x90, 0x0b, 0x88, 0x26, 0xc8, 0x05, 0x8c, 0x4d, 0x31, 0x6b, 0xa1, 0x29, 0x94, 0x49, 0x59, 0x53, - 0x6b, 0x41, 0x19, 0xab, 0xc0, 0xd5, 0xc6, 0xca, 0x5a, 0x68, 0x92, 0xdb, 0x50, 0xae, 0xb7, 0x5a, - 0x7e, 0x4f, 0x31, 0x7a, 0x66, 0x8e, 0x0e, 0x6b, 0x67, 0x1d, 0x0e, 0xd4, 0x4d, 0xf4, 0x04, 0xd5, - 0x6c, 0x24, 0xb5, 0x66, 0x3c, 0xe6, 0xdb, 0xbd, 0x30, 0xa2, 0xc1, 0xd2, 0x82, 0x68, 0x32, 0xf2, - 0x68, 0x71, 0x60, 0x8a, 0x47, 0x8c, 0x6a, 0xfe, 0x67, 0x03, 0x6b, 0x4c, 0xde, 0x06, 0x58, 0xea, - 0x30, 0xc5, 0xb6, 0x45, 0x63, 0x06, 0x68, 0x3c, 0x7b, 0x02, 0xaa, 0x73, 0x50, 0x90, 0xf5, 0x4f, - 0xe7, 0x86, 0xfe, 0x34, 0xfb, 0xa4, 0x54, 0x93, 0xc5, 0x39, 0x8a, 0xf8, 0x64, 0x20, 0xa0, 0xa9, - 0x4f, 0x26, 0xc8, 0xe4, 0x35, 0x18, 0x5d, 0xaa, 0x3f, 0xa8, 0xf7, 0xa2, 0x5d, 0xec, 0xaf, 0x12, - 0x17, 0x58, 0x9e, 0xb3, 0x6f, 0x3b, 0xbd, 0x68, 0xd7, 0x92, 0x85, 0xe6, 0x2f, 0x18, 0x30, 0xa6, - 0xac, 0x55, 0x56, 0xd5, 0xb5, 0xc0, 0xff, 0x84, 0xb6, 0x22, 0xbd, 0x97, 0xba, 0x1c, 0x98, 0xaa, - 0x6a, 0x8c, 0x9a, 0xea, 0x9d, 0xdc, 0x29, 0x7a, 0xc7, 0x9c, 0x15, 0x22, 0x80, 0xd9, 0x00, 0xca, - 0x11, 0x07, 0xda, 0x00, 0x4c, 0xc7, 0x51, 0x6d, 0x00, 0x56, 0x6e, 0xfe, 0x81, 0xc1, 0x96, 0x2e, - 0x99, 0x05, 0xb8, 0x4f, 0x0f, 0x22, 0x67, 0xfb, 0x8e, 0xd7, 0xd6, 0x8e, 0xae, 0xf6, 0x10, 0x6a, - 0x3f, 0xf4, 0xda, 0xd4, 0x52, 0x50, 0xc8, 0x2d, 0x28, 0xdd, 0x0f, 0xb6, 0xdf, 0x42, 0xf4, 0x5c, - 0x2c, 0x82, 0xa7, 0xf7, 0x82, 0xed, 0xb7, 0x10, 0x59, 0x9d, 0xaf, 0x12, 0x91, 0x98, 0x50, 0x5c, - 0xf0, 0xf7, 0x1d, 0x4f, 0x6e, 0x7b, 0xc0, 0xf6, 0x0e, 0x17, 0x21, 0x96, 0x28, 0x61, 0x42, 0xbf, - 0xb9, 0xb6, 0x22, 0x26, 0x26, 0x0a, 0xfd, 0xb0, 0xdb, 0xb1, 0x18, 0xcc, 0xfc, 0x9e, 0x01, 0x63, - 0x8a, 0x44, 0x22, 0x5f, 0x16, 0x66, 0xbe, 0x81, 0x87, 0x54, 0xe7, 0xfb, 0x65, 0x16, 0x2b, 0xe5, - 0xdb, 0x35, 0x33, 0xff, 0x85, 0xd1, 0x9f, 0x48, 0x83, 0xdc, 0x30, 0xd2, 0xe0, 0x6d, 0x00, 0xae, - 0xcb, 0x61, 0x77, 0x2a, 0xf3, 0x46, 0x39, 0xd4, 0x53, 0x07, 0x23, 0x41, 0x36, 0xff, 0x7a, 0x0e, - 0x4a, 0xc2, 0x56, 0x99, 0x7b, 0x46, 0x75, 0x88, 0xb7, 0x34, 0x1d, 0x62, 0x5a, 0x90, 0x2a, 0xca, - 0xed, 0xdc, 0x09, 0x36, 0xca, 0xdb, 0x50, 0x91, 0x5d, 0x80, 0xaa, 0xd8, 0x35, 0x18, 0x95, 0x56, - 0x36, 0x57, 0xc4, 0x26, 0x35, 0x9e, 0x9b, 0x73, 0x96, 0x2c, 0x37, 0xff, 0x78, 0x44, 0xd2, 0xf2, - 0x2f, 0xb1, 0x2e, 0xac, 0xbb, 0x6e, 0xa0, 0x76, 0xa1, 0xe3, 0xba, 0x81, 0x85, 0x50, 0x36, 0x50, - 0x6b, 0xbd, 0xed, 0xb6, 0xd7, 0x42, 0x1c, 0x65, 0xd5, 0x74, 0x11, 0x6a, 0x33, 0x54, 0x75, 0xa0, - 0x12, 0x64, 0xcd, 0x44, 0xc8, 0x1f, 0x6b, 0x22, 0xfc, 0x24, 0x94, 0xe7, 0xf7, 0x5d, 0x4d, 0x85, - 0x30, 0x33, 0x3a, 0xe5, 0x46, 0x8c, 0xc4, 0x95, 0x87, 0xcb, 0xa2, 0x8f, 0xce, 0xb6, 0xf6, 0xdd, - 0x7e, 0xc5, 0x21, 0x61, 0xa9, 0xe9, 0xf8, 0x23, 0x9f, 0x45, 0xc7, 0xbf, 0x0d, 0xe5, 0x8d, 0x90, - 0xae, 0xf7, 0x3a, 0x1d, 0xda, 0x46, 0x75, 0xa2, 0xc4, 0x65, 0x4f, 0x2f, 0xa4, 0x76, 0x84, 0x50, - 0xb5, 0x02, 0x31, 0xaa, 0x3a, 0xad, 0x46, 0x8f, 0x99, 0x56, 0x5f, 0x86, 0x42, 0xbd, 0xdb, 0x95, - 0xc6, 0x4f, 0xbc, 0x49, 0x76, 0xbb, 0xb8, 0xf5, 0x4d, 0x38, 0xdd, 0xae, 0x6e, 0xca, 0x20, 0x36, - 0xa1, 0x40, 0xee, 0xf7, 0xb6, 0x69, 0xd0, 0xa1, 0x11, 0x0d, 0x85, 0x68, 0x0e, 0x67, 0x00, 0x79, - 0xcc, 0xc8, 0x33, 0xe6, 0x34, 0x02, 0x1a, 0xae, 0x17, 0xf6, 0x7a, 0xdb, 0xd4, 0x16, 0x32, 0x5e, - 0xed, 0xbb, 0x0c, 0x86, 0x4c, 0x36, 0xad, 0x51, 0x1a, 0xe0, 0x3c, 0x18, 0x4b, 0x64, 0x53, 0x97, - 0xd2, 0x20, 0x3d, 0x0b, 0x62, 0xc4, 0x4b, 0x4d, 0x98, 0xd0, 0x07, 0xed, 0x29, 0x68, 0x23, 0x1f, - 0x16, 0x4a, 0xa5, 0x6a, 0xd9, 0xfc, 0xa5, 0x1c, 0x8c, 0xd5, 0xbb, 0xdd, 0x67, 0xfc, 0xd8, 0xe2, - 0xc7, 0x35, 0x51, 0x70, 0x3e, 0x19, 0xf2, 0x53, 0x9c, 0x58, 0xfc, 0x85, 0x01, 0x93, 0x29, 0x0a, - 0xb5, 0xf6, 0xc6, 0x90, 0x66, 0x7c, 0x6e, 0x48, 0x33, 0x3e, 0x3f, 0xd8, 0x8c, 0x57, 0x17, 0x5a, - 0xe1, 0xb3, 0x2c, 0xb4, 0xd7, 0x21, 0x5f, 0xef, 0x76, 0x45, 0xaf, 0x54, 0x92, 0x5e, 0xd9, 0xbc, - 0xc5, 0x77, 0x2f, 0xa7, 0xdb, 0xb5, 0x18, 0x86, 0xf9, 0x26, 0x94, 0x11, 0x8c, 0x62, 0xf0, 0x8a, - 0x58, 0x3f, 0x5c, 0x06, 0x6a, 0x64, 0x7c, 0xad, 0x98, 0xff, 0xc7, 0x80, 0x11, 0xfc, 0xfd, 0x8c, - 0x4e, 0x97, 0x39, 0x6d, 0xba, 0x54, 0x95, 0xe9, 0x32, 0xcc, 0x44, 0xf9, 0xc3, 0x3c, 0xf6, 0x96, - 0x98, 0x22, 0xc2, 0x10, 0x34, 0x32, 0x0c, 0xc1, 0xcf, 0x20, 0xf5, 0xf7, 0xd2, 0x26, 0x61, 0x1e, - 0x07, 0xe3, 0xe5, 0x74, 0x55, 0x9f, 0x8a, 0x35, 0x78, 0x0f, 0xc8, 0x52, 0x27, 0xa4, 0xad, 0x5e, - 0x40, 0x9b, 0x7b, 0x5e, 0x77, 0x93, 0x06, 0xde, 0xc3, 0x03, 0xa1, 0x4e, 0xa2, 0x60, 0xf6, 0x44, - 0xa9, 0x1d, 0xee, 0x79, 0x5d, 0xfb, 0x11, 0x96, 0x5b, 0x19, 0x34, 0xe4, 0x03, 0x18, 0xb5, 0xe8, - 0xe3, 0xc0, 0x8b, 0xa8, 0xe8, 0xdb, 0x89, 0xd8, 0x78, 0x40, 0x28, 0x57, 0x68, 0x02, 0xfe, 0x43, - 0x1d, 0x7f, 0x51, 0xfe, 0xf9, 0xd9, 0x5e, 0xdf, 0x1d, 0xc1, 0xb5, 0x70, 0xc2, 0xf5, 0xda, 0x31, - 0x56, 0xbd, 0x3e, 0x98, 0xf9, 0xd3, 0x0c, 0xe6, 0x26, 0x54, 0x98, 0xbd, 0x97, 0x32, 0xef, 0x2f, - 0x27, 0x63, 0x79, 0x43, 0x2d, 0x3e, 0xee, 0x66, 0x4d, 0xe3, 0x43, 0xec, 0xf4, 0x24, 0xe1, 0x37, - 0x76, 0x2f, 0x2a, 0x8c, 0x33, 0xa6, 0x47, 0x2c, 0x3a, 0x5a, 0xbc, 0xb3, 0x4e, 0x3d, 0x31, 0x8a, - 0x9f, 0x6d, 0x62, 0x8c, 0x7e, 0x9a, 0x89, 0x91, 0xbe, 0xd3, 0x2c, 0x9d, 0xe6, 0x4e, 0xf3, 0xd2, - 0x07, 0x30, 0xd5, 0xd7, 0xc3, 0xa7, 0xb9, 0x17, 0xfc, 0xfc, 0xa6, 0xe5, 0xcf, 0xc5, 0xfd, 0x42, - 0xe6, 0xd0, 0x86, 0xf5, 0x02, 0xda, 0x8a, 0x50, 0xf4, 0x0a, 0x69, 0x19, 0x08, 0x58, 0xca, 0xc8, - 0x46, 0x18, 0x79, 0x1f, 0x46, 0xf9, 0xbd, 0x4a, 0x38, 0x93, 0xc3, 0xb1, 0x1f, 0x17, 0x5f, 0xe4, - 0x50, 0x71, 0xb9, 0xcd, 0x31, 0xd4, 0x5e, 0x15, 0x44, 0xe6, 0x5d, 0x28, 0x8a, 0x7b, 0x99, 0xe3, - 0xd7, 0x45, 0x0d, 0x46, 0x36, 0x93, 0x9e, 0xc1, 0xb3, 0x74, 0xde, 0x08, 0x8b, 0xc3, 0xcd, 0x5f, - 0x31, 0x60, 0x42, 0x6f, 0x25, 0xb9, 0x01, 0x45, 0x71, 0x71, 0x68, 0xe0, 0xc5, 0x21, 0x6b, 0x4d, - 0x91, 0x5f, 0x19, 0x6a, 0x17, 0x85, 0x02, 0x8b, 0x89, 0x7e, 0xc1, 0x01, 0xdb, 0x22, 0x44, 0xbf, - 0x98, 0xa4, 0x96, 0x2c, 0x63, 0x76, 0x9a, 0x45, 0xc3, 0x5e, 0x3b, 0x52, 0xed, 0xb4, 0x00, 0x21, - 0x96, 0x28, 0x31, 0x0f, 0x0d, 0x80, 0x66, 0xf3, 0xde, 0x7d, 0x7a, 0xb0, 0xe6, 0x78, 0x01, 0xda, - 0xba, 0xb8, 0x1a, 0xef, 0x8b, 0xd1, 0xaa, 0x08, 0x5b, 0x97, 0xaf, 0xdc, 0x3d, 0x7a, 0xa0, 0xd9, - 0xba, 0x12, 0x15, 0x97, 0x7c, 0xe0, 0x3d, 0x72, 0x22, 0xca, 0x08, 0x73, 0x48, 0xc8, 0x97, 0x3c, - 0x87, 0xa6, 0x28, 0x15, 0x64, 0xf2, 0x31, 0x4c, 0x24, 0xbf, 0xd0, 0x5b, 0x21, 0x8f, 0x86, 0xa0, - 0x9c, 0x11, 0x7a, 0x61, 0xe3, 0xa5, 0xa3, 0xc3, 0xda, 0x25, 0x85, 0xab, 0xcd, 0xb0, 0x14, 0xd6, - 0x29, 0x66, 0xe6, 0xef, 0x1b, 0x00, 0xeb, 0xcb, 0x4d, 0xd9, 0xc0, 0xd7, 0xa0, 0x10, 0x1f, 0x21, - 0x55, 0xb8, 0x41, 0x9d, 0xb2, 0x18, 0xb1, 0x9c, 0xbc, 0x0c, 0xf9, 0xa4, 0x25, 0x53, 0x47, 0x87, - 0xb5, 0x71, 0xbd, 0x05, 0xac, 0x94, 0xdc, 0x85, 0xd1, 0xa1, 0xea, 0x8c, 0xb3, 0x33, 0xa3, 0xae, - 0x92, 0x1a, 0x47, 0xe1, 0xc3, 0xad, 0xf5, 0xe7, 0x77, 0x14, 0xbe, 0x9d, 0x83, 0x49, 0xd6, 0xaf, - 0xf5, 0x5e, 0xb4, 0xeb, 0x07, 0x5e, 0x74, 0xf0, 0xcc, 0x9a, 0xd2, 0xef, 0x6a, 0x0a, 0xd1, 0x25, - 0x29, 0xb6, 0xd4, 0xb6, 0x0d, 0x65, 0x51, 0xff, 0xd9, 0x28, 0x4c, 0x67, 0x50, 0x91, 0x37, 0x84, - 0xcb, 0x4e, 0x72, 0xd0, 0x84, 0x2e, 0x39, 0x3f, 0x3a, 0xac, 0x55, 0x24, 0xfa, 0x7a, 0xe2, 0xa2, - 0x33, 0x07, 0x63, 0xc2, 0x5e, 0x5a, 0x49, 0x34, 0x6a, 0xf4, 0xf5, 0x90, 0x07, 0x69, 0x28, 0x9a, - 0x54, 0x24, 0x52, 0x87, 0xca, 0xfc, 0x2e, 0x6d, 0xed, 0x79, 0x9d, 0x9d, 0xfb, 0xf4, 0x80, 0xeb, - 0x4b, 0x95, 0xc6, 0x8b, 0xcc, 0x3c, 0x6b, 0x09, 0x38, 0x1b, 0x52, 0xdd, 0xf2, 0xd3, 0x48, 0xc8, - 0xfb, 0x30, 0xd6, 0xf4, 0x76, 0x3a, 0x92, 0x43, 0x01, 0x39, 0x5c, 0x3e, 0x3a, 0xac, 0x9d, 0x0f, - 0x39, 0xb8, 0x9f, 0x81, 0x4a, 0x40, 0xae, 0xc1, 0x88, 0xe5, 0xb7, 0x29, 0xdf, 0x86, 0x85, 0x13, - 0x48, 0xc0, 0x00, 0xea, 0x81, 0x36, 0x62, 0x90, 0x7b, 0x30, 0xca, 0xfe, 0x79, 0xe0, 0x74, 0x67, - 0x8a, 0x28, 0xb7, 0x49, 0xac, 0xe0, 0x23, 0xb4, 0xeb, 0x75, 0x76, 0x54, 0x1d, 0xbf, 0x4d, 0xed, - 0x7d, 0xa7, 0xab, 0xed, 0x8b, 0x1c, 0x91, 0x6c, 0xc2, 0x58, 0x22, 0x08, 0xc2, 0x99, 0x51, 0xed, - 0x02, 0x29, 0x29, 0x69, 0x7c, 0x41, 0x30, 0xbb, 0x10, 0xb5, 0x43, 0x9c, 0xdb, 0x5d, 0x86, 0xaf, - 0x37, 0x46, 0x61, 0xa4, 0xd9, 0x20, 0xa5, 0xc1, 0x36, 0x88, 0x71, 0xa2, 0x0d, 0xe2, 0x02, 0x88, - 0x4e, 0xaa, 0xb7, 0x77, 0x84, 0xcf, 0xd6, 0xb5, 0xc1, 0x13, 0xec, 0x46, 0x82, 0x8c, 0x6b, 0x92, - 0x1f, 0x67, 0x89, 0xfe, 0x77, 0xda, 0x3b, 0xda, 0x71, 0x56, 0x8c, 0xca, 0xba, 0x21, 0x11, 0x35, - 0xd2, 0x6c, 0x97, 0xdd, 0x90, 0x94, 0x24, 0xdd, 0xf0, 0xc9, 0xe3, 0x68, 0x50, 0x37, 0x28, 0x8c, - 0xc8, 0x0a, 0x40, 0xbd, 0x15, 0x79, 0x8f, 0x28, 0x4e, 0x89, 0x31, 0xad, 0x23, 0xe6, 0xeb, 0xf7, - 0xe9, 0x41, 0x93, 0x46, 0xb1, 0x3b, 0xc4, 0x39, 0x07, 0x51, 0x53, 0xd3, 0xc4, 0x52, 0x38, 0x90, - 0x2e, 0x9c, 0xab, 0xbb, 0xae, 0xc7, 0xfd, 0xf8, 0xd6, 0x03, 0x36, 0x7f, 0x5d, 0x64, 0x5d, 0xc9, - 0x66, 0x7d, 0x4d, 0xb0, 0xfe, 0x82, 0x13, 0x53, 0xd9, 0x11, 0x27, 0x4b, 0x7f, 0x26, 0x9b, 0xb1, - 0xb9, 0x0a, 0x13, 0x7a, 0x97, 0xea, 0x1e, 0x6c, 0x15, 0x28, 0x59, 0xcd, 0xba, 0xdd, 0xbc, 0x57, - 0xbf, 0x59, 0x35, 0x48, 0x15, 0x2a, 0xe2, 0xd7, 0x9c, 0x3d, 0xf7, 0xd6, 0xed, 0x6a, 0x4e, 0x83, - 0xbc, 0x75, 0x73, 0xae, 0x9a, 0x37, 0xff, 0xd0, 0x80, 0x92, 0xac, 0x1f, 0xb9, 0x0d, 0xf9, 0x66, - 0xf3, 0x5e, 0xea, 0xde, 0x32, 0xd9, 0x7a, 0xf9, 0x26, 0x13, 0x86, 0xbb, 0xea, 0x26, 0xd3, 0x6c, - 0xde, 0x63, 0x74, 0xeb, 0xcb, 0x4d, 0xa1, 0xb4, 0x64, 0x4c, 0xd7, 0xa9, 0x01, 0x97, 0x39, 0xb7, - 0x21, 0xff, 0xe1, 0xd6, 0xba, 0xb0, 0x86, 0x32, 0xc6, 0x17, 0xe9, 0x3e, 0x79, 0xac, 0x6e, 0x7d, - 0x8c, 0xc0, 0xb4, 0x60, 0x4c, 0x59, 0x5a, 0x5c, 0x89, 0xd8, 0xf7, 0x63, 0xdf, 0x2e, 0xa1, 0x44, - 0x30, 0x88, 0x25, 0x4a, 0x98, 0xce, 0xb3, 0xec, 0xb7, 0x9c, 0xb6, 0xd0, 0x46, 0x50, 0xe7, 0x69, - 0x33, 0x80, 0xc5, 0xe1, 0xe6, 0x1f, 0x19, 0x50, 0x5d, 0x0b, 0xfc, 0x47, 0x1e, 0x93, 0xc0, 0xeb, - 0xfe, 0x1e, 0xed, 0x6c, 0xde, 0x24, 0x6f, 0x4a, 0x21, 0xc0, 0x55, 0xb8, 0x0b, 0x8c, 0x0a, 0x85, - 0xc0, 0x8f, 0x0e, 0x6b, 0xd0, 0x3c, 0x08, 0x23, 0xba, 0xcf, 0xca, 0xa5, 0x20, 0x50, 0x5c, 0xe4, - 0x72, 0xc3, 0xbb, 0xdd, 0x9c, 0xe0, 0x22, 0x57, 0x83, 0x11, 0xac, 0x8e, 0xe2, 0xf9, 0x30, 0x12, - 0x31, 0x80, 0xc5, 0xe1, 0x8a, 0xc0, 0xfe, 0xb5, 0x5c, 0x5f, 0x1b, 0xe6, 0x9e, 0x2b, 0xd7, 0x15, - 0xbd, 0x71, 0x43, 0x6d, 0x62, 0x5f, 0x87, 0xb3, 0xe9, 0x2e, 0xc1, 0x73, 0x91, 0x3a, 0x4c, 0xea, - 0x70, 0x79, 0x44, 0x72, 0x21, 0xf3, 0x5b, 0x9b, 0x73, 0x56, 0x1a, 0xdf, 0xfc, 0x81, 0x01, 0x65, - 0xfc, 0xd7, 0xea, 0xb5, 0x29, 0xd3, 0x6c, 0xea, 0x5b, 0x4d, 0x71, 0x8b, 0xa5, 0xde, 0x34, 0x39, - 0x8f, 0x43, 0x5b, 0x5c, 0x79, 0x69, 0x72, 0x24, 0x46, 0x16, 0xa4, 0xfc, 0xce, 0x2e, 0x14, 0x33, - 0x34, 0x26, 0xe5, 0x97, 0x7b, 0x61, 0x8a, 0x54, 0x20, 0xb3, 0xf1, 0x63, 0xbf, 0xfc, 0xb6, 0x3c, - 0x4f, 0xc6, 0xf1, 0x43, 0x3a, 0x5f, 0xbb, 0x1b, 0x91, 0x68, 0xe4, 0x4d, 0x28, 0xb2, 0x4f, 0x5b, - 0xf2, 0xe6, 0x03, 0xad, 0x0a, 0xac, 0x63, 0xa0, 0x5d, 0x21, 0x72, 0x24, 0xf3, 0x5f, 0xe6, 0xd2, - 0x1d, 0x28, 0xb4, 0x80, 0x53, 0xae, 0x8d, 0x77, 0x60, 0xa4, 0xde, 0x6e, 0xfb, 0x8f, 0x85, 0x94, - 0x90, 0xc7, 0x34, 0x71, 0xff, 0xf1, 0x1d, 0xd6, 0x61, 0x28, 0xda, 0x95, 0x31, 0x03, 0x90, 0x79, - 0x28, 0xd7, 0xb7, 0x9a, 0x4b, 0x4b, 0x0b, 0xeb, 0xeb, 0xcb, 0xc2, 0x33, 0xf9, 0x55, 0xd9, 0x3f, - 0x9e, 0xe7, 0xda, 0x51, 0xd4, 0x1e, 0xe0, 0xb8, 0x98, 0xd0, 0x91, 0xf7, 0x00, 0x3e, 0xf4, 0xbd, - 0xce, 0x03, 0x1a, 0xed, 0xfa, 0xae, 0x68, 0x3c, 0x53, 0x29, 0xc6, 0x3e, 0xf1, 0xbd, 0x8e, 0xbd, - 0x8f, 0x60, 0x56, 0xf7, 0x04, 0xc9, 0x52, 0xfe, 0x67, 0x3d, 0xdd, 0xf0, 0x23, 0xd4, 0x61, 0x46, - 0x92, 0x9e, 0xde, 0xf6, 0xa3, 0xf4, 0xc5, 0x8c, 0x44, 0x33, 0x7f, 0x35, 0x07, 0x13, 0xdc, 0x52, - 0xe5, 0x13, 0xe6, 0x99, 0x5d, 0x8c, 0xef, 0x68, 0x8b, 0xf1, 0xa2, 0xdc, 0x18, 0x94, 0xa6, 0x0d, - 0xb5, 0x14, 0x77, 0x81, 0xf4, 0xd3, 0x10, 0x4b, 0x9e, 0xa7, 0x0c, 0xb3, 0x0a, 0x6f, 0x26, 0x17, - 0xce, 0x21, 0x12, 0xd9, 0x28, 0x0a, 0x43, 0x4b, 0xe3, 0x61, 0xfe, 0x4a, 0x0e, 0xc6, 0x15, 0x7d, - 0xf2, 0x99, 0xed, 0xf8, 0xaf, 0x68, 0x1d, 0x2f, 0x2f, 0x2e, 0x94, 0x96, 0x0d, 0xd5, 0xef, 0x3d, - 0x98, 0xea, 0x23, 0x49, 0xab, 0xe5, 0xc6, 0x30, 0x6a, 0xf9, 0x1b, 0xfd, 0x37, 0xe2, 0xdc, 0x8b, - 0x39, 0xbe, 0x11, 0x57, 0xaf, 0xe0, 0xbf, 0x9d, 0x83, 0xb3, 0xe2, 0x57, 0xbd, 0xe7, 0x7a, 0xd1, - 0xbc, 0xdf, 0x79, 0xe8, 0xed, 0x3c, 0xb3, 0x63, 0x51, 0xd7, 0xc6, 0xa2, 0xa6, 0x8f, 0x85, 0xd2, - 0xc0, 0xc1, 0x43, 0x62, 0xfe, 0xeb, 0x12, 0xcc, 0x0c, 0x22, 0x60, 0x66, 0xbf, 0x62, 0x55, 0xa1, - 0xd9, 0x9f, 0xb2, 0x58, 0xb9, 0x3d, 0x95, 0x78, 0x80, 0xe4, 0x86, 0xf0, 0x00, 0x59, 0x86, 0x2a, - 0x7e, 0xaa, 0x49, 0x43, 0xd6, 0x09, 0x61, 0xe2, 0x42, 0x79, 0xe5, 0xe8, 0xb0, 0x76, 0xd9, 0x61, - 0x65, 0x76, 0x28, 0x0a, 0xed, 0x5e, 0xe0, 0x29, 0x3c, 0xfa, 0x28, 0xc9, 0xef, 0x1b, 0x30, 0x81, - 0xc0, 0xc5, 0x47, 0xb4, 0x13, 0x21, 0xb3, 0x82, 0xb8, 0xa4, 0x89, 0x23, 0x55, 0x9a, 0x51, 0xe0, - 0x75, 0x76, 0xf0, 0x20, 0x29, 0x6c, 0x6c, 0xb3, 0x5e, 0xf8, 0xd3, 0xc3, 0xda, 0xbb, 0x9f, 0x26, - 0xfa, 0x45, 0xb0, 0x0a, 0x99, 0x21, 0xcf, 0x2b, 0x4a, 0xf1, 0xb3, 0xa9, 0x6a, 0xa6, 0x6a, 0x44, - 0x7e, 0x02, 0x2e, 0x2c, 0x76, 0x9c, 0xed, 0x36, 0x9d, 0xf7, 0x3b, 0x91, 0xd7, 0xe9, 0xf9, 0xbd, - 0xb0, 0xe1, 0xb4, 0xf6, 0x7a, 0xdd, 0x50, 0x1c, 0x76, 0x62, 0xcb, 0x5b, 0x71, 0xa1, 0xbd, 0xcd, - 0x4b, 0x15, 0x96, 0x83, 0x18, 0x90, 0x7b, 0x30, 0xc5, 0x8b, 0xea, 0xbd, 0xc8, 0x6f, 0xb6, 0x9c, - 0xb6, 0xd7, 0xd9, 0xc1, 0x33, 0xd0, 0x52, 0xe3, 0x12, 0xb3, 0x2d, 0x9d, 0x5e, 0xe4, 0xdb, 0x21, - 0x87, 0x2b, 0xfc, 0xfa, 0x89, 0xc8, 0x12, 0x4c, 0x5a, 0xd4, 0x71, 0x1f, 0x38, 0x4f, 0xe6, 0x9d, - 0xae, 0xd3, 0xf2, 0xa2, 0x03, 0xb4, 0xcc, 0xf2, 0x8d, 0xda, 0xd1, 0x61, 0xed, 0x85, 0x80, 0x3a, - 0xae, 0xbd, 0xef, 0x3c, 0xb1, 0x5b, 0xa2, 0x50, 0x61, 0x96, 0xa6, 0x8b, 0x59, 0x79, 0x9d, 0x98, - 0x55, 0x39, 0xcd, 0xca, 0xeb, 0x0c, 0x66, 0x95, 0xd0, 0x49, 0x56, 0xeb, 0x4e, 0xb0, 0x43, 0x23, - 0x7e, 0x48, 0x08, 0x57, 0x8c, 0xab, 0x86, 0xc2, 0x2a, 0xc2, 0x32, 0x1b, 0x0f, 0x0c, 0xd3, 0xac, - 0x14, 0x3a, 0x36, 0xf3, 0xb6, 0x02, 0x2f, 0xa2, 0x6a, 0x0b, 0xc7, 0xb0, 0x5a, 0xd8, 0xff, 0x78, - 0x4c, 0x3a, 0xa8, 0x89, 0x7d, 0x94, 0x09, 0x37, 0xa5, 0x91, 0x95, 0x3e, 0x6e, 0xd9, 0xad, 0xec, - 0xa3, 0x8c, 0xb9, 0xa9, 0xed, 0x1c, 0xc7, 0x76, 0x2a, 0xdc, 0x06, 0x34, 0xb4, 0x8f, 0x92, 0xac, - 0xb0, 0x4e, 0x8b, 0x68, 0x87, 0xcd, 0x68, 0x71, 0x48, 0x3a, 0x81, 0x55, 0x7b, 0x45, 0xd8, 0xd4, - 0xd5, 0x40, 0x16, 0xdb, 0x19, 0x47, 0xa6, 0x69, 0xe2, 0x0f, 0x0b, 0xa5, 0x91, 0x6a, 0xd1, 0xaa, - 0xf2, 0x29, 0x1f, 0xb1, 0x89, 0x83, 0xb2, 0xd8, 0xfc, 0xed, 0x1c, 0x5c, 0x94, 0xe2, 0x98, 0x46, - 0x8f, 0xfd, 0x60, 0xcf, 0xeb, 0xec, 0x3c, 0xe3, 0x52, 0xf5, 0x8e, 0x26, 0x55, 0x5f, 0x49, 0xed, - 0x70, 0xa9, 0x56, 0x1e, 0x23, 0x5a, 0xff, 0x69, 0x11, 0x5e, 0x3c, 0x96, 0x8a, 0x7c, 0xc4, 0x76, - 0x41, 0x8f, 0x76, 0xa2, 0x25, 0xb7, 0x4d, 0x99, 0x19, 0xe6, 0xf7, 0x22, 0x71, 0x98, 0xfd, 0xf2, - 0xd1, 0x61, 0x6d, 0x9a, 0x07, 0x70, 0xd8, 0x9e, 0xdb, 0xa6, 0x76, 0xc4, 0x8b, 0xb5, 0x61, 0xea, - 0xa7, 0x66, 0x2c, 0xe3, 0x70, 0xb2, 0xa5, 0x4e, 0x44, 0x83, 0x47, 0x0e, 0xf7, 0x63, 0x17, 0x2c, - 0xf7, 0x28, 0xed, 0xda, 0x0e, 0x2b, 0xb5, 0x3d, 0x51, 0xac, 0xb3, 0xec, 0xa3, 0x26, 0x77, 0x14, - 0x96, 0xf3, 0xcc, 0x38, 0x78, 0xe0, 0x3c, 0x11, 0x1a, 0x2f, 0x9e, 0xaf, 0x2a, 0x2c, 0xb9, 0x13, - 0xdd, 0xbe, 0xf3, 0xc4, 0xea, 0x27, 0x21, 0x1f, 0xc3, 0x39, 0x21, 0xb8, 0x99, 0x10, 0x0b, 0xfc, - 0xb6, 0x6c, 0x71, 0x01, 0x79, 0xbd, 0x7e, 0x74, 0x58, 0xbb, 0x20, 0xc4, 0xbe, 0xdd, 0xe2, 0x18, - 0x99, 0xad, 0xce, 0xe6, 0x42, 0xd6, 0xd9, 0x46, 0x96, 0xea, 0x8e, 0x07, 0x34, 0x0c, 0x9d, 0x1d, - 0xa9, 0x1d, 0xf3, 0x1b, 0x25, 0xa5, 0x33, 0xed, 0x7d, 0x5e, 0x6e, 0x0d, 0xa4, 0x24, 0xf7, 0x60, - 0x62, 0x8b, 0x6e, 0xab, 0xe3, 0x53, 0x8c, 0x97, 0x78, 0xf5, 0x31, 0xdd, 0x1e, 0x3c, 0x38, 0x29, - 0x3a, 0xe2, 0xc1, 0xd4, 0x5a, 0xe0, 0x3f, 0x39, 0x60, 0xa6, 0x1e, 0xed, 0xd0, 0x00, 0xbd, 0xb7, - 0x46, 0xf1, 0xb8, 0x6a, 0x26, 0xd1, 0x2c, 0xf5, 0xf2, 0xc6, 0x17, 0x8e, 0x0e, 0x6b, 0x2f, 0x76, - 0x19, 0xd8, 0x6e, 0x0b, 0xb8, 0x9d, 0x8a, 0xe6, 0xea, 0xe7, 0x4a, 0x7e, 0x0a, 0x26, 0x2d, 0xbf, - 0x17, 0x79, 0x9d, 0x9d, 0x66, 0x14, 0x38, 0x11, 0xdd, 0xe1, 0x82, 0x3c, 0x71, 0x13, 0x4b, 0x95, - 0xf2, 0x83, 0xe9, 0x80, 0x03, 0xed, 0x50, 0x40, 0x35, 0x49, 0xaa, 0x13, 0x90, 0x75, 0xa8, 0xe0, - 0x67, 0xd7, 0x28, 0x65, 0xfb, 0xa1, 0x38, 0x76, 0x9b, 0x56, 0xdb, 0x21, 0x8a, 0xb8, 0x07, 0x0b, - 0x6f, 0x42, 0x97, 0x83, 0xd4, 0xfb, 0x46, 0x15, 0xd5, 0xfc, 0xcd, 0x1c, 0xcc, 0x88, 0xc1, 0xb5, - 0x68, 0xcb, 0x0f, 0xdc, 0x67, 0x5f, 0x98, 0x2c, 0x6a, 0xc2, 0xe4, 0xe5, 0xd8, 0x5d, 0x2a, 0xab, - 0x91, 0xc7, 0xc8, 0x92, 0x7f, 0x62, 0xc0, 0xe5, 0xe3, 0x88, 0x58, 0xef, 0xc4, 0xee, 0x80, 0xe5, - 0x3e, 0xb7, 0xbf, 0x2e, 0x4c, 0x63, 0x47, 0xe3, 0x71, 0x74, 0x78, 0xcf, 0x0f, 0x23, 0x3c, 0x13, - 0xcc, 0x69, 0xee, 0x09, 0x0d, 0xdf, 0x6f, 0xe3, 0xee, 0xd1, 0x78, 0x83, 0x6d, 0x12, 0x7f, 0x7a, - 0x58, 0x03, 0x06, 0x5a, 0xc5, 0x2b, 0x4e, 0xa6, 0x49, 0xf0, 0x41, 0xc4, 0xd3, 0xee, 0xd0, 0x46, - 0x9f, 0x92, 0x3d, 0x7a, 0x10, 0x5a, 0x59, 0xac, 0xf1, 0xdc, 0xa7, 0xde, 0x8b, 0x76, 0xd7, 0x02, - 0xfa, 0x90, 0x06, 0xb4, 0xd3, 0xa2, 0xcf, 0xd9, 0xb9, 0x8f, 0xde, 0xb8, 0xa1, 0x8c, 0x9e, 0xff, - 0x57, 0x84, 0xb3, 0x59, 0x64, 0xac, 0x5f, 0x14, 0x3d, 0x3b, 0x1d, 0x50, 0xfc, 0x37, 0x0c, 0xa8, - 0x34, 0x69, 0xcb, 0xef, 0xb8, 0x77, 0x9c, 0x56, 0xe4, 0x4b, 0x47, 0x0f, 0x9b, 0xcb, 0x4b, 0x06, - 0xb7, 0x1f, 0x62, 0x81, 0x76, 0xde, 0xf0, 0xd5, 0xe1, 0xd4, 0xdb, 0x96, 0x8f, 0xfe, 0xb3, 0x11, - 0x9b, 0x93, 0xc9, 0x27, 0xf0, 0xae, 0x44, 0xfb, 0x28, 0x69, 0xc0, 0xf8, 0xbc, 0xdf, 0xe9, 0x50, - 0xf6, 0x43, 0xf1, 0x06, 0xbd, 0x7c, 0x74, 0x58, 0x9b, 0x69, 0xc9, 0x82, 0xf4, 0xb9, 0x83, 0x4e, - 0x42, 0x6e, 0x41, 0x7e, 0x63, 0xee, 0x8e, 0x18, 0x03, 0xe9, 0x37, 0xb7, 0x31, 0x77, 0x07, 0x2d, - 0x68, 0xa6, 0x95, 0x8c, 0xf7, 0xe6, 0x1e, 0xaa, 0x27, 0xab, 0x1b, 0x73, 0x77, 0xc8, 0x2a, 0x4c, - 0x59, 0xf4, 0xa7, 0x7b, 0x5e, 0x40, 0xc5, 0x02, 0x78, 0x70, 0xa7, 0x8e, 0x63, 0x51, 0xe2, 0xd2, - 0x31, 0xe0, 0x85, 0xd2, 0x62, 0xb0, 0xf7, 0x1f, 0xaa, 0x41, 0x74, 0xfd, 0xb4, 0xe4, 0xe7, 0xe1, - 0xdc, 0x82, 0x17, 0x8a, 0x3a, 0xf3, 0x23, 0x4d, 0x17, 0x6f, 0x37, 0x8b, 0x03, 0x96, 0xc3, 0x8f, - 0x65, 0x2e, 0x87, 0x2f, 0xb8, 0x31, 0x13, 0x9b, 0x9f, 0x97, 0xba, 0x69, 0x37, 0xda, 0xec, 0xef, - 0x90, 0x4f, 0x60, 0x02, 0xcf, 0x90, 0xf0, 0x94, 0x17, 0x3d, 0xab, 0x47, 0x07, 0x7c, 0xf9, 0x4b, - 0x99, 0x5f, 0xbe, 0x84, 0x47, 0x52, 0x36, 0x9e, 0x15, 0xa3, 0x17, 0xb6, 0x66, 0x79, 0x68, 0x9c, - 0xc9, 0x87, 0x30, 0x29, 0xb6, 0xb2, 0xd5, 0x87, 0xeb, 0xbb, 0x74, 0xc1, 0x39, 0x10, 0xae, 0x0d, - 0xa8, 0x55, 0x8a, 0xfd, 0xcf, 0xf6, 0x1f, 0xda, 0xd1, 0x2e, 0xb5, 0x5d, 0x47, 0x13, 0xfa, 0x29, - 0x42, 0xf2, 0xb3, 0x30, 0xb6, 0xec, 0xe3, 0x75, 0x16, 0x8a, 0x9a, 0x32, 0xf2, 0xf9, 0x3a, 0x06, - 0xd1, 0x72, 0x70, 0x6a, 0x6b, 0xfa, 0xd1, 0x61, 0xed, 0x9d, 0xd3, 0xce, 0x42, 0xe5, 0x03, 0x96, - 0xfa, 0x35, 0x32, 0x0f, 0xa5, 0x2d, 0xba, 0xcd, 0x5a, 0x9b, 0x0e, 0x00, 0x93, 0x60, 0x2e, 0x2f, - 0x1e, 0x8b, 0x5f, 0xea, 0x5d, 0x91, 0xc4, 0x30, 0xff, 0x95, 0x81, 0x33, 0x90, 0x5c, 0x47, 0xf7, - 0xb2, 0xd8, 0x31, 0x1d, 0xed, 0x55, 0xa7, 0xdb, 0xd5, 0x5d, 0xcb, 0x39, 0x0a, 0x33, 0x6e, 0xef, - 0x38, 0x2d, 0x1a, 0xc9, 0x53, 0x50, 0x44, 0x7e, 0x88, 0x10, 0xd5, 0xb8, 0xe5, 0x38, 0xe4, 0x6b, - 0x70, 0x76, 0x81, 0x3e, 0xf2, 0x5a, 0xb4, 0x1e, 0x45, 0x34, 0xe4, 0xad, 0x9d, 0xaf, 0xf3, 0xeb, - 0xc2, 0x72, 0xe3, 0x95, 0xa3, 0xc3, 0xda, 0x15, 0x17, 0xcb, 0x6d, 0x27, 0x41, 0xb0, 0x5b, 0x8e, - 0xca, 0x2b, 0x93, 0x83, 0xf9, 0xbf, 0x8c, 0xa4, 0x07, 0xc8, 0xeb, 0x50, 0xb0, 0xd6, 0xe2, 0xfa, - 0xf3, 0x9b, 0xc0, 0x54, 0xf5, 0x11, 0x81, 0x7c, 0x03, 0xce, 0x29, 0x7c, 0x70, 0x72, 0x50, 0x97, - 0x55, 0x88, 0x37, 0xe6, 0x55, 0xbc, 0xfa, 0x51, 0x6a, 0xe2, 0x70, 0x8c, 0x54, 0x8d, 0xb2, 0x79, - 0xb0, 0xc6, 0x2a, 0x05, 0x0b, 0xb4, 0xe3, 0x71, 0xde, 0x4a, 0x63, 0x55, 0xde, 0x2e, 0x22, 0xa4, - 0x1b, 0x9b, 0xc5, 0xe1, 0xc3, 0x42, 0xa9, 0x50, 0x1d, 0x31, 0xff, 0xc2, 0x50, 0xb2, 0x11, 0x3c, - 0xa3, 0xbb, 0xc7, 0x6d, 0x6d, 0xf7, 0x38, 0x2b, 0x48, 0xe3, 0x56, 0xb1, 0xb2, 0xcc, 0x1d, 0x7f, - 0x12, 0xc6, 0x35, 0x24, 0x74, 0xa4, 0xdd, 0x08, 0x69, 0xc0, 0x4f, 0x1d, 0x9f, 0x2f, 0x47, 0xda, - 0xb8, 0x5d, 0x43, 0xf9, 0x47, 0xfe, 0x99, 0x01, 0x93, 0x29, 0x0a, 0xd6, 0x1b, 0x0c, 0xa4, 0xf6, - 0x46, 0x2f, 0xa4, 0x81, 0x85, 0x50, 0xee, 0x76, 0xb7, 0xac, 0xbb, 0xdd, 0xb5, 0x2d, 0x06, 0x23, - 0x5f, 0x85, 0x91, 0x0d, 0xb4, 0x11, 0x74, 0xcf, 0x8d, 0x98, 0x3f, 0x16, 0xf2, 0x15, 0xd6, 0x63, - 0xff, 0xaa, 0x02, 0x02, 0xcb, 0x48, 0x13, 0x46, 0xe7, 0x03, 0x8a, 0x79, 0x07, 0x0a, 0xc3, 0x5f, - 0xb1, 0xb5, 0x38, 0x49, 0xfa, 0x8a, 0x4d, 0x70, 0x32, 0x7f, 0x23, 0x07, 0x24, 0x69, 0x23, 0x6d, - 0x05, 0x34, 0x0a, 0x9f, 0xd9, 0x41, 0xff, 0x40, 0x1b, 0xf4, 0x17, 0xfb, 0x06, 0x9d, 0x37, 0x6f, - 0xa8, 0xb1, 0xff, 0x23, 0x03, 0xce, 0x67, 0x13, 0x92, 0x97, 0xa1, 0xb8, 0xba, 0xbe, 0x26, 0x9d, - 0x7f, 0x44, 0x53, 0xfc, 0x2e, 0x6a, 0xa9, 0x96, 0x28, 0x22, 0x6f, 0x42, 0xf1, 0x23, 0x6b, 0x9e, - 0x6d, 0x5f, 0x4a, 0x00, 0xcc, 0x4f, 0x07, 0x76, 0x4b, 0x37, 0xaa, 0x04, 0x92, 0x3a, 0xb6, 0xf9, - 0xa7, 0x36, 0xb6, 0xdf, 0xce, 0xc1, 0x64, 0xbd, 0xd5, 0xa2, 0x61, 0xc8, 0x94, 0x13, 0x1a, 0x46, - 0xcf, 0xec, 0xc0, 0x66, 0xbb, 0xf5, 0x68, 0x6d, 0x1b, 0x6a, 0x54, 0xff, 0xd8, 0x80, 0x73, 0x92, - 0xea, 0x91, 0x47, 0x1f, 0xaf, 0xef, 0x06, 0x34, 0xdc, 0xf5, 0xdb, 0xee, 0xb0, 0xa1, 0x5c, 0xb8, - 0x4b, 0x7b, 0xed, 0x88, 0x06, 0xea, 0x11, 0xf4, 0x43, 0x84, 0x68, 0xbb, 0x34, 0x42, 0xc8, 0x2c, - 0x8c, 0xd6, 0xbb, 0xdd, 0xc0, 0x7f, 0xc4, 0x97, 0xfd, 0xb8, 0xb8, 0x71, 0xe4, 0x20, 0xed, 0x86, - 0x92, 0x83, 0x58, 0x35, 0x16, 0x68, 0x87, 0xfb, 0x2c, 0x8f, 0xf3, 0x6a, 0xb8, 0xb4, 0xa3, 0x6a, - 0x4b, 0x58, 0x6e, 0x7e, 0xab, 0x00, 0x15, 0xb5, 0x21, 0xc4, 0x84, 0x22, 0x77, 0x40, 0x51, 0x1d, - 0x01, 0x1c, 0x84, 0x58, 0xa2, 0x24, 0xf1, 0xeb, 0xc9, 0x9d, 0xe8, 0xd7, 0xb3, 0x05, 0xe3, 0x6b, - 0x81, 0xdf, 0xf5, 0x43, 0xea, 0xf2, 0xd4, 0x31, 0x79, 0xcd, 0xf0, 0x96, 0x7d, 0xce, 0x8a, 0xb8, - 0x6a, 0xde, 0x15, 0xd8, 0x76, 0x3a, 0xb1, 0x8c, 0xce, 0x87, 0x1f, 0xe1, 0x3b, 0xa1, 0x08, 0x08, - 0x88, 0x8f, 0xf0, 0x19, 0x44, 0x3f, 0xc2, 0x67, 0x10, 0x75, 0x59, 0x8c, 0x3c, 0xad, 0x65, 0x41, - 0x7e, 0xc3, 0x80, 0xb1, 0x7a, 0xa7, 0x23, 0xfc, 0x7a, 0x64, 0xfc, 0xf5, 0xb9, 0xe4, 0x18, 0x9f, - 0x3b, 0x7e, 0xf2, 0x53, 0xfc, 0x6f, 0x8a, 0x53, 0xfc, 0x77, 0x3e, 0xd5, 0x29, 0xfe, 0x7a, 0xe0, - 0x78, 0x51, 0x88, 0xd7, 0xb5, 0xc9, 0x07, 0x55, 0xe7, 0x5e, 0xa5, 0x1e, 0xe4, 0x1d, 0xa8, 0xc6, - 0xf3, 0x71, 0xa9, 0xe3, 0xd2, 0x27, 0x94, 0xbb, 0x41, 0x8d, 0xf3, 0x20, 0x41, 0xed, 0x7a, 0x22, - 0x8d, 0x68, 0x7e, 0xdb, 0x80, 0xf3, 0xea, 0x84, 0x68, 0xf6, 0xb6, 0xf7, 0x3d, 0x34, 0x45, 0xc8, - 0x0d, 0x28, 0x8b, 0xf1, 0x8a, 0x15, 0xb9, 0xfe, 0x7c, 0x43, 0x09, 0x0a, 0x59, 0x64, 0x43, 0xc4, - 0x78, 0x08, 0xbb, 0x7d, 0x3a, 0xb5, 0xdc, 0x58, 0x51, 0x63, 0x46, 0x74, 0x76, 0x35, 0xc0, 0xdf, - 0xfa, 0xd8, 0x31, 0x88, 0xf9, 0x3e, 0x4c, 0xe9, 0xb5, 0x6c, 0x52, 0x8c, 0x4c, 0x93, 0x4d, 0x33, - 0xb2, 0x9b, 0x26, 0xcb, 0xcd, 0x2d, 0x20, 0x7d, 0xf4, 0x21, 0x5e, 0x45, 0xd1, 0x48, 0x5e, 0x95, - 0xca, 0x03, 0xad, 0x3e, 0xc4, 0x38, 0xf3, 0xd6, 0x98, 0xda, 0xdd, 0x48, 0x6a, 0xfe, 0x65, 0x19, - 0xa6, 0x33, 0x44, 0xc7, 0x09, 0x5b, 0x7b, 0x4d, 0x5f, 0x3c, 0xe5, 0xf8, 0xce, 0x5f, 0x2e, 0x99, - 0xf7, 0x65, 0x96, 0xa5, 0x63, 0x96, 0xca, 0x71, 0xa9, 0x97, 0x3e, 0x8f, 0xed, 0x5d, 0x75, 0xcb, - 0x19, 0x79, 0x6a, 0x6e, 0x39, 0x0d, 0x18, 0x17, 0xad, 0x12, 0x4b, 0xb9, 0x98, 0x98, 0xe8, 0x01, - 0x2f, 0xb0, 0xfb, 0x96, 0xb4, 0x4e, 0xc2, 0x79, 0x84, 0x7e, 0xfb, 0x11, 0x15, 0x3c, 0x46, 0x55, - 0x1e, 0x58, 0x90, 0xc9, 0x43, 0x21, 0x21, 0xff, 0xd8, 0x00, 0x22, 0x20, 0xea, 0x7a, 0x2e, 0x1d, - 0xb7, 0x9e, 0xdd, 0xa7, 0xb3, 0x9e, 0x5f, 0x94, 0x75, 0xcc, 0x5e, 0xd7, 0x19, 0xd5, 0x22, 0xff, - 0xd0, 0x80, 0x29, 0xee, 0x1b, 0xa2, 0x56, 0xb6, 0x7c, 0x5c, 0x65, 0x5b, 0x4f, 0xa7, 0xb2, 0x97, - 0x43, 0xfc, 0xec, 0x80, 0xba, 0xf6, 0x57, 0x8a, 0xfc, 0x04, 0x40, 0xbc, 0xa2, 0xa4, 0x0f, 0xe2, - 0xe5, 0x0c, 0x29, 0x10, 0x23, 0x25, 0xb1, 0x97, 0x51, 0x4c, 0xa7, 0x7a, 0xed, 0x24, 0xdc, 0xc8, - 0xcf, 0xc3, 0x59, 0xb6, 0x5e, 0x62, 0x88, 0xf0, 0x64, 0x9b, 0x19, 0xc3, 0xaf, 0x7c, 0x79, 0xf0, - 0xd6, 0x7e, 0x23, 0x8b, 0x8c, 0x47, 0x82, 0x24, 0x91, 0xf8, 0xd1, 0xbe, 0x6a, 0xf2, 0x65, 0x51, - 0xa0, 0xcb, 0x2a, 0xd6, 0x3e, 0x9c, 0xa9, 0xe0, 0x37, 0x33, 0xe5, 0xdb, 0x45, 0xb9, 0x16, 0xb8, - 0x7c, 0x0b, 0xf5, 0x50, 0x0e, 0x04, 0x91, 0x8f, 0x80, 0x34, 0x7b, 0x3b, 0x3b, 0x34, 0x8c, 0xa8, - 0xcb, 0x61, 0x34, 0x08, 0x67, 0xc6, 0x51, 0x3e, 0xe0, 0x91, 0x51, 0x28, 0x4b, 0xed, 0x40, 0x16, - 0xab, 0x93, 0xa4, 0x9f, 0xf8, 0xd2, 0x36, 0x5c, 0x1c, 0xd8, 0xcc, 0x8c, 0x30, 0x8d, 0x59, 0x3d, - 0x4c, 0xe3, 0xe2, 0x20, 0x71, 0x18, 0xaa, 0xa1, 0x1a, 0xbf, 0x6b, 0xa4, 0xe4, 0x9f, 0x50, 0x56, - 0x78, 0x42, 0xba, 0x41, 0x1b, 0x44, 0x0e, 0x63, 0xf4, 0xb9, 0x84, 0xcc, 0x25, 0x4a, 0x12, 0x93, - 0x90, 0xaa, 0x84, 0x45, 0x59, 0xf9, 0x19, 0x45, 0xa1, 0xf9, 0xcf, 0x0d, 0x20, 0xbc, 0x86, 0xf3, - 0x4e, 0xd7, 0xd9, 0xf6, 0xda, 0x5e, 0xe4, 0xd1, 0x90, 0xdc, 0x87, 0xaa, 0x60, 0xe1, 0x6c, 0xb7, - 0xa9, 0xea, 0x81, 0x25, 0xae, 0x68, 0xe3, 0x32, 0x3b, 0xad, 0xd6, 0xf4, 0x11, 0x0e, 0x18, 0xbc, - 0xdc, 0x67, 0x18, 0x3c, 0xf3, 0x87, 0x06, 0x5c, 0xec, 0xaf, 0xb6, 0xf8, 0x72, 0xdc, 0x79, 0xc6, - 0x09, 0x9d, 0x97, 0xd5, 0xca, 0x1c, 0x1e, 0x43, 0x3e, 0xb5, 0x56, 0xe6, 0x93, 0x53, 0xcd, 0xd3, - 0xb7, 0xf2, 0x97, 0x73, 0x50, 0x59, 0x6b, 0xf7, 0x76, 0xbc, 0xce, 0x82, 0x13, 0x39, 0xcf, 0xac, - 0x49, 0xf1, 0xb6, 0x66, 0x52, 0xc4, 0x3e, 0x57, 0x71, 0xc3, 0x86, 0x4b, 0x0e, 0x66, 0xc0, 0x64, - 0x42, 0xc2, 0x57, 0xe9, 0x3d, 0x28, 0xb0, 0x1f, 0x42, 0x43, 0xb9, 0xd2, 0xc7, 0x18, 0xb1, 0x6e, - 0xc4, 0xff, 0x09, 0x25, 0x5f, 0x4f, 0xc9, 0x86, 0x1c, 0x2e, 0xfd, 0x18, 0xcf, 0xa8, 0x74, 0xfa, - 0xec, 0x8f, 0xff, 0xcc, 0x80, 0x6a, 0xba, 0x25, 0xe4, 0x3e, 0x8c, 0x32, 0x4e, 0x5e, 0x9c, 0x9d, - 0xe9, 0x95, 0x01, 0x6d, 0xbe, 0x21, 0xd0, 0x78, 0xf5, 0xb0, 0xf3, 0x29, 0x87, 0x58, 0x92, 0xc3, - 0x25, 0x0b, 0x2a, 0x2a, 0x56, 0x46, 0xed, 0xde, 0xd0, 0x45, 0xd3, 0xf9, 0xec, 0x7e, 0x50, 0x6b, - 0xfd, 0x3b, 0x5a, 0xad, 0x85, 0x50, 0x1a, 0x36, 0xcd, 0x1e, 0x06, 0x9d, 0xf1, 0x64, 0x22, 0xea, - 0x3c, 0x93, 0x79, 0x47, 0xf4, 0xa0, 0x33, 0x0e, 0x63, 0xb6, 0x08, 0xff, 0x9e, 0x98, 0x67, 0x68, - 0x8b, 0x74, 0x11, 0xa2, 0xea, 0xb3, 0x1c, 0xc7, 0xfc, 0x3b, 0x79, 0x38, 0x9f, 0x54, 0x8f, 0x27, - 0x1d, 0x5c, 0x73, 0x02, 0x67, 0x3f, 0x3c, 0x61, 0x05, 0x5c, 0xed, 0xab, 0x1a, 0x06, 0x55, 0xcb, - 0xaa, 0x29, 0x15, 0x32, 0x53, 0x15, 0x42, 0x23, 0x8e, 0x57, 0x48, 0x56, 0x83, 0xdc, 0x87, 0x7c, - 0x93, 0x46, 0x22, 0xf4, 0xf2, 0xb5, 0xbe, 0x5e, 0x55, 0xeb, 0x75, 0xa3, 0x49, 0x23, 0x3e, 0x88, - 0xdc, 0x7b, 0x9d, 0x6a, 0xde, 0xe4, 0x4c, 0x1d, 0xdf, 0x82, 0xe2, 0xe2, 0x93, 0x2e, 0x6d, 0x45, - 0x22, 0xe2, 0xf2, 0xda, 0xf1, 0xfc, 0x38, 0xae, 0x12, 0xd7, 0x49, 0x11, 0xa0, 0x76, 0x16, 0x47, - 0xb9, 0x74, 0x1b, 0x4a, 0xf2, 0xe3, 0xa7, 0x8a, 0x4f, 0x7c, 0x1b, 0xc6, 0x94, 0x8f, 0x9c, 0x6a, - 0xd2, 0xff, 0xa5, 0x01, 0x45, 0x26, 0xf4, 0x36, 0xdf, 0x7a, 0x46, 0x25, 0xd2, 0x2d, 0x4d, 0x22, - 0x4d, 0x29, 0x81, 0x34, 0xb8, 0x2e, 0xdf, 0x3a, 0x41, 0x16, 0x1d, 0x1a, 0x00, 0x09, 0x32, 0xb9, - 0x0b, 0xa3, 0xfc, 0x22, 0x47, 0x66, 0xf4, 0x54, 0x23, 0x73, 0x44, 0x49, 0xa2, 0xe5, 0xf8, 0xdd, - 0xb4, 0x5a, 0x28, 0xa9, 0xc9, 0x42, 0xe2, 0xbd, 0xac, 0x86, 0x82, 0x32, 0x36, 0xf3, 0x7e, 0x87, - 0x47, 0x6a, 0x84, 0x4a, 0xe6, 0xab, 0x6c, 0x37, 0xe6, 0xba, 0x38, 0xd8, 0xc8, 0x1f, 0xc7, 0xe4, - 0xbc, 0x60, 0x92, 0x7d, 0xe6, 0xf1, 0x9d, 0x31, 0x1e, 0xfb, 0x20, 0x2b, 0xf6, 0x1e, 0x54, 0xee, - 0xf8, 0xc1, 0x63, 0x27, 0x70, 0xeb, 0x3b, 0x54, 0xf8, 0x9d, 0x97, 0xd0, 0x79, 0x7c, 0xfc, 0x21, - 0x87, 0xdb, 0x0e, 0x2b, 0xf8, 0xd1, 0x61, 0xad, 0xd0, 0xf0, 0xfd, 0xb6, 0xa5, 0xa1, 0x93, 0x55, - 0x18, 0x7f, 0xe0, 0x3c, 0x11, 0xf7, 0x75, 0xeb, 0xeb, 0xcb, 0xc2, 0x7b, 0xe5, 0xda, 0xd1, 0x61, - 0xed, 0xe2, 0xbe, 0xf3, 0x24, 0xbe, 0xe7, 0x1b, 0xec, 0x60, 0xad, 0xd3, 0x13, 0x0f, 0x26, 0xd6, - 0xfc, 0x20, 0x12, 0x1f, 0x61, 0x3a, 0x6d, 0x7e, 0xc0, 0x75, 0xdb, 0x6c, 0xe6, 0x75, 0xdb, 0x45, - 0xa6, 0xc8, 0xdb, 0x0f, 0x63, 0x72, 0x2d, 0x60, 0x4f, 0x63, 0x4c, 0xde, 0x83, 0xa9, 0x79, 0x1a, - 0x44, 0xde, 0x43, 0xaf, 0xe5, 0x44, 0xf4, 0x8e, 0x1f, 0xec, 0x3b, 0x91, 0x38, 0x50, 0x41, 0x83, - 0xba, 0x45, 0x39, 0xa7, 0x7d, 0x27, 0xb2, 0xfa, 0x31, 0xc9, 0x37, 0xb2, 0xfc, 0x81, 0x46, 0xb0, - 0xf9, 0x6f, 0x32, 0xa5, 0x20, 0xc3, 0x1f, 0x68, 0x40, 0x17, 0x64, 0x78, 0x06, 0xed, 0x1c, 0x77, - 0xed, 0x59, 0x6a, 0xdc, 0x14, 0x57, 0xb0, 0x27, 0x5f, 0x6b, 0xc6, 0xe3, 0x36, 0xe0, 0x7a, 0x73, - 0x0e, 0xf2, 0x8d, 0xb5, 0x3b, 0x78, 0x44, 0x22, 0xae, 0x19, 0x69, 0x67, 0xd7, 0xe9, 0xb4, 0x50, - 0x97, 0x11, 0xbe, 0x0b, 0xaa, 0xc0, 0x6b, 0xac, 0xdd, 0x21, 0x0e, 0x4c, 0xaf, 0xd1, 0x60, 0xdf, - 0x8b, 0xbe, 0x76, 0xf3, 0xa6, 0x32, 0x50, 0x25, 0xac, 0xda, 0xac, 0xa8, 0x5a, 0xad, 0x8b, 0x28, - 0xf6, 0x93, 0x9b, 0x37, 0x33, 0x87, 0x23, 0xae, 0x58, 0x16, 0x2f, 0xb2, 0x08, 0x13, 0x0f, 0x9c, - 0x27, 0xe2, 0x42, 0x3a, 0xb6, 0xf1, 0xf2, 0xe8, 0x6f, 0x8f, 0x13, 0xab, 0x95, 0x14, 0xa9, 0x43, - 0xac, 0x13, 0x91, 0x77, 0x61, 0x2c, 0x99, 0x5e, 0x21, 0x5e, 0x45, 0xe6, 0xb9, 0xa3, 0xa5, 0x32, - 0x39, 0xb5, 0xb3, 0x24, 0x05, 0x9d, 0x6c, 0xc4, 0x26, 0x3a, 0x57, 0x48, 0x45, 0x8a, 0x96, 0x59, - 0xd5, 0x44, 0x77, 0xb0, 0x44, 0x6b, 0xd6, 0x64, 0xac, 0xa2, 0x73, 0xff, 0x1b, 0x4b, 0xe7, 0xa2, - 0x58, 0xfe, 0x6b, 0x81, 0xbf, 0xdf, 0x8d, 0xd0, 0x0f, 0x31, 0x65, 0xf9, 0x77, 0xb1, 0x24, 0xc3, - 0xf2, 0xe7, 0x24, 0xd9, 0xf7, 0xec, 0xe3, 0x9f, 0xe1, 0x9e, 0x9d, 0x42, 0x61, 0xd9, 0x6f, 0xed, - 0xa1, 0xe3, 0x61, 0xb9, 0xf1, 0x11, 0x93, 0x1f, 0x6d, 0xbf, 0xb5, 0xf7, 0xf4, 0xee, 0x87, 0x91, - 0x3d, 0x59, 0x61, 0x6d, 0x67, 0xd3, 0x4a, 0x7c, 0x7a, 0x66, 0x52, 0xbb, 0x69, 0xd3, 0xca, 0xb8, - 0xa2, 0xc2, 0x67, 0xa1, 0x6c, 0x88, 0xa5, 0x93, 0x13, 0x0a, 0xd5, 0x05, 0x1a, 0xee, 0x45, 0x7e, - 0x77, 0xbe, 0xed, 0x75, 0xb7, 0x7d, 0x27, 0x70, 0x67, 0xaa, 0x03, 0x04, 0xc6, 0xeb, 0x99, 0x02, - 0x63, 0xca, 0xe5, 0xf4, 0x76, 0x4b, 0x32, 0xb0, 0xfa, 0x58, 0x92, 0x6f, 0xc0, 0x04, 0x5b, 0x2d, - 0x8b, 0x4f, 0x22, 0xda, 0xe1, 0x53, 0x69, 0x0a, 0xb7, 0xfa, 0xb3, 0x4a, 0xe8, 0x62, 0x5c, 0xc8, - 0x27, 0x29, 0x4a, 0x0f, 0x1a, 0x13, 0xa8, 0x93, 0x54, 0x67, 0x65, 0xfe, 0x44, 0xaa, 0x4f, 0xc8, - 0x12, 0x8c, 0x8a, 0x1a, 0x88, 0x5d, 0xa7, 0xbf, 0x2d, 0x2f, 0x66, 0xb6, 0x65, 0x54, 0xb4, 0xc5, - 0x92, 0xf4, 0xe6, 0xbf, 0x31, 0x60, 0x5c, 0xfb, 0x1c, 0xb9, 0xad, 0xb8, 0xaf, 0x24, 0xce, 0x6c, - 0x1a, 0x4e, 0x66, 0xa6, 0xfc, 0xdb, 0xc2, 0x67, 0x29, 0x37, 0x98, 0x2e, 0x33, 0x89, 0x99, 0x4c, - 0x25, 0x90, 0x3f, 0x3e, 0x95, 0x40, 0x61, 0x40, 0x2a, 0x81, 0xef, 0x8c, 0xc3, 0x84, 0xbe, 0xc1, - 0x31, 0x8d, 0x73, 0xd9, 0xdf, 0xf1, 0x3a, 0xd2, 0x6e, 0xe5, 0xc9, 0x31, 0x10, 0xa2, 0xa5, 0x9d, - 0x47, 0x08, 0x79, 0x15, 0x20, 0xbe, 0x9a, 0x95, 0xa6, 0xa9, 0x48, 0x92, 0xaf, 0x14, 0x90, 0x9f, - 0x04, 0x58, 0xf1, 0x5d, 0x1a, 0xe7, 0x57, 0x39, 0xe6, 0x40, 0xe9, 0x75, 0x71, 0xa0, 0x24, 0x12, - 0xdb, 0x1f, 0x1d, 0xd6, 0xce, 0x75, 0x7c, 0x97, 0xf6, 0x27, 0x56, 0x51, 0x38, 0x92, 0xaf, 0xc0, - 0x88, 0xd5, 0x6b, 0x53, 0x99, 0xee, 0x63, 0x4c, 0x4e, 0xf8, 0x5e, 0x5b, 0x49, 0x78, 0x19, 0xf4, - 0xd2, 0xf7, 0x08, 0x0c, 0x40, 0x3e, 0x00, 0xb8, 0xdf, 0xdb, 0xa6, 0x77, 0x03, 0xbf, 0xd7, 0x95, - 0xf1, 0xc4, 0x68, 0xc6, 0xee, 0xc5, 0x19, 0xa5, 0xec, 0x1d, 0x2c, 0x54, 0x3f, 0x9e, 0x90, 0x90, - 0x55, 0x18, 0x15, 0xe2, 0x43, 0x9c, 0xd3, 0xbf, 0x94, 0x75, 0x42, 0xa4, 0xe8, 0x10, 0x22, 0xff, - 0x06, 0x82, 0xf5, 0x43, 0x1b, 0x6e, 0x86, 0xbf, 0x0b, 0x65, 0xc6, 0x9e, 0x99, 0xda, 0xa1, 0xd8, - 0x3b, 0xd0, 0x2b, 0x51, 0xa9, 0x10, 0x33, 0xcb, 0xb5, 0xd4, 0x61, 0x31, 0x01, 0xf9, 0x06, 0x66, - 0xcc, 0x11, 0x5d, 0x7d, 0xec, 0x41, 0xe3, 0x6b, 0x7d, 0x5d, 0x7d, 0xd6, 0xe9, 0x76, 0x33, 0xf2, - 0x92, 0xc5, 0xfc, 0xc8, 0x4e, 0x1c, 0xb9, 0x13, 0x67, 0x3d, 0x3e, 0xe6, 0x03, 0xd7, 0xfb, 0x3e, - 0x30, 0x23, 0x83, 0x51, 0xfa, 0xf3, 0xe4, 0x68, 0x7c, 0x49, 0x17, 0xaa, 0x49, 0x46, 0x2f, 0xf1, - 0x2d, 0x38, 0xee, 0x5b, 0x6f, 0xf6, 0x7d, 0x4b, 0x1d, 0xc0, 0xbe, 0xcf, 0xf5, 0x71, 0x27, 0x6e, - 0x92, 0xa1, 0x56, 0x7c, 0x6f, 0xec, 0xb8, 0xef, 0xbd, 0xda, 0xf7, 0xbd, 0x69, 0x77, 0xbb, 0xff, - 0x3b, 0x29, 0x9e, 0xe4, 0x5d, 0x18, 0x97, 0x10, 0x5c, 0x1f, 0x78, 0xc0, 0x27, 0xf4, 0x7b, 0x77, - 0x1b, 0x9d, 0xc6, 0xf4, 0x24, 0x31, 0x2a, 0xb2, 0x4a, 0xcd, 0x67, 0xc7, 0xb8, 0x46, 0x9d, 0x9e, - 0x15, 0x3a, 0x32, 0xf9, 0x3a, 0x8c, 0x2d, 0xed, 0xb3, 0x86, 0xf8, 0x1d, 0x27, 0xa2, 0xb8, 0x19, - 0x25, 0x87, 0xa6, 0x4a, 0x89, 0x32, 0x55, 0x79, 0xba, 0xc9, 0xa4, 0x48, 0xdd, 0xcc, 0x15, 0x0a, - 0xd6, 0x79, 0xfc, 0xf8, 0x45, 0xcc, 0xe1, 0x50, 0x6c, 0x3d, 0x2f, 0x66, 0x1c, 0x5c, 0x2a, 0xec, - 0x51, 0x96, 0xf3, 0x53, 0x1d, 0x5b, 0x2c, 0x08, 0xad, 0xf3, 0x74, 0x9e, 0xe4, 0x3d, 0x18, 0x13, - 0x71, 0x92, 0x75, 0x6b, 0x25, 0x9c, 0xa9, 0x62, 0xe3, 0xd1, 0xa9, 0x56, 0x86, 0x54, 0xda, 0x4e, - 0x90, 0xba, 0xbd, 0x4a, 0xf0, 0xc9, 0xd7, 0xe0, 0xec, 0x96, 0xd7, 0x71, 0xfd, 0xc7, 0xa1, 0x10, - 0xe0, 0x42, 0xd0, 0x4d, 0x25, 0x3e, 0x3a, 0x8f, 0x79, 0xb9, 0x2d, 0xb7, 0xad, 0x3e, 0xc1, 0x97, - 0xc9, 0x81, 0xfc, 0x5c, 0x1f, 0x67, 0x3e, 0x83, 0xc8, 0x71, 0x33, 0x68, 0xae, 0x6f, 0x06, 0xf5, - 0x7f, 0x3e, 0x3d, 0x9d, 0x32, 0x3f, 0x43, 0x7c, 0x20, 0xba, 0xce, 0xf1, 0xa1, 0xef, 0x75, 0x66, - 0xa6, 0xb5, 0x37, 0x45, 0x62, 0x97, 0x59, 0xc4, 0x5b, 0xf3, 0xdb, 0x5e, 0xeb, 0xa0, 0x61, 0x1e, - 0x1d, 0xd6, 0x5e, 0x4a, 0x6b, 0x33, 0x9f, 0xf8, 0xda, 0xe1, 0x42, 0x06, 0x6b, 0xf2, 0x75, 0xa8, - 0xb0, 0xbf, 0xb1, 0xea, 0x77, 0x56, 0xbb, 0xea, 0x52, 0x30, 0xc5, 0x77, 0x70, 0x8c, 0x30, 0x90, - 0x33, 0x43, 0x2b, 0xd4, 0x58, 0x99, 0x3f, 0x34, 0xe0, 0x6c, 0x56, 0x5d, 0x4f, 0xc8, 0x9a, 0x63, - 0xa6, 0x2e, 0xbd, 0xf1, 0x5c, 0x82, 0x5f, 0x7a, 0xc7, 0x57, 0xdd, 0x35, 0x18, 0x61, 0xb6, 0xb2, - 0x74, 0xca, 0xc2, 0xed, 0x90, 0xd9, 0xd3, 0xa1, 0xc5, 0xe1, 0x0c, 0x01, 0x5d, 0xf4, 0x71, 0xbf, - 0x1c, 0xe1, 0x08, 0xe8, 0xc7, 0x6f, 0x71, 0x38, 0x43, 0x60, 0xdb, 0xae, 0xdc, 0x26, 0x10, 0x81, - 0xed, 0xc6, 0xa1, 0xc5, 0xe1, 0xe4, 0x35, 0x18, 0x5d, 0xed, 0x2c, 0x53, 0xe7, 0x11, 0x15, 0x37, - 0x4e, 0x78, 0x8e, 0xe2, 0x77, 0xec, 0x36, 0x83, 0x59, 0xb2, 0xd0, 0xfc, 0xae, 0x01, 0x53, 0x7d, - 0xdd, 0x74, 0x72, 0x62, 0xa0, 0xe3, 0xaf, 0xf7, 0x86, 0x69, 0x1f, 0xaf, 0x7e, 0x21, 0xbb, 0xfa, - 0xe6, 0x9f, 0xe7, 0xe1, 0xc2, 0x80, 0x5d, 0x2b, 0xb9, 0x9a, 0x37, 0x4e, 0xbc, 0x9a, 0xff, 0x26, - 0xdb, 0x25, 0x1c, 0x6f, 0x3f, 0x5c, 0xf7, 0x93, 0x1a, 0x27, 0xb7, 0x18, 0x58, 0x26, 0x33, 0x6f, - 0xc8, 0x2c, 0x11, 0x17, 0x5b, 0x48, 0x61, 0x47, 0x7e, 0xdf, 0x99, 0xb1, 0xce, 0xac, 0xef, 0x72, - 0x3c, 0xff, 0x57, 0xe4, 0x72, 0x5c, 0xbf, 0x92, 0x2a, 0x3c, 0xd5, 0x2b, 0xa9, 0xec, 0x43, 0xf2, - 0x91, 0xcf, 0x72, 0x15, 0xf0, 0xef, 0x52, 0xd7, 0xf1, 0x7f, 0x15, 0x87, 0xfa, 0x1a, 0x8c, 0x6c, - 0xed, 0xd2, 0x40, 0xea, 0xb7, 0x58, 0x91, 0xc7, 0x0c, 0xa0, 0x56, 0x04, 0x31, 0xcc, 0x9f, 0x85, - 0x8a, 0xfa, 0x31, 0x5c, 0xcb, 0xec, 0xb7, 0x58, 0x4c, 0x7c, 0x2d, 0x33, 0x80, 0xc5, 0xe1, 0x27, - 0xe6, 0xd9, 0x4a, 0x7a, 0x21, 0x7f, 0x52, 0x2f, 0x98, 0xff, 0xd6, 0x80, 0x02, 0xa6, 0x19, 0x78, - 0x0b, 0xca, 0xf2, 0xa8, 0x54, 0x0d, 0xbd, 0x9f, 0x96, 0x27, 0xa9, 0xa1, 0xee, 0xcf, 0x20, 0x80, - 0xec, 0x53, 0x9b, 0x34, 0xd8, 0xd6, 0xdc, 0x5e, 0x1e, 0x31, 0x80, 0xfa, 0x29, 0xc4, 0x38, 0x45, - 0x97, 0xa0, 0x6b, 0x8f, 0xb0, 0xef, 0xf9, 0x82, 0xe7, 0xae, 0x3d, 0x7d, 0x76, 0xbd, 0xc4, 0x32, - 0x7f, 0xcb, 0x80, 0x73, 0x99, 0x7a, 0x00, 0xfb, 0x2a, 0x57, 0x38, 0x94, 0x19, 0x91, 0xd6, 0x36, - 0x38, 0xc6, 0x69, 0x5c, 0x78, 0x4e, 0x31, 0xbc, 0x5f, 0x80, 0x72, 0x6c, 0x9f, 0x91, 0xb3, 0x72, - 0xe8, 0xf0, 0x3c, 0x4d, 0x1a, 0x33, 0x7f, 0x69, 0x40, 0x91, 0x55, 0xe1, 0x99, 0x8d, 0xae, 0xc8, - 0x3e, 0x5d, 0x65, 0x4d, 0x1a, 0x2a, 0xa6, 0xe2, 0xf7, 0x8b, 0x00, 0x09, 0x32, 0xd9, 0x86, 0x89, - 0xd5, 0xa5, 0x85, 0xf9, 0x25, 0x97, 0x76, 0x22, 0xbc, 0xe5, 0x4b, 0xc5, 0xee, 0x33, 0xc3, 0x32, - 0xe8, 0x38, 0x6d, 0x81, 0x70, 0x90, 0x2c, 0x4f, 0xdf, 0x73, 0x5b, 0xb6, 0x17, 0xd3, 0xa9, 0x0a, - 0x99, 0xce, 0x91, 0x7d, 0xa3, 0x59, 0x7f, 0xb0, 0xac, 0x7c, 0x23, 0x37, 0xe4, 0x37, 0x42, 0x67, - 0xbf, 0x3d, 0xe0, 0x1b, 0x3a, 0x47, 0xb2, 0x0b, 0xd5, 0xbb, 0x28, 0xbb, 0x95, 0xaf, 0xe4, 0x8f, - 0xff, 0xca, 0xcb, 0xe2, 0x2b, 0x2f, 0x70, 0xa1, 0x9f, 0xfd, 0x9d, 0x3e, 0xae, 0xc9, 0xcc, 0x2d, - 0x9c, 0x38, 0x73, 0xff, 0xa6, 0x01, 0x45, 0xbe, 0x39, 0xc4, 0xcf, 0x6a, 0x64, 0x6e, 0x3f, 0x5b, - 0x4f, 0x67, 0xfb, 0xa9, 0x46, 0xf8, 0x9f, 0x6a, 0x80, 0xf3, 0x32, 0xb2, 0x90, 0x7a, 0xa3, 0x43, - 0x1e, 0xa1, 0xa3, 0x62, 0xca, 0x4b, 0x12, 0x47, 0x28, 0xfe, 0x3c, 0x87, 0xca, 0x85, 0x63, 0xa8, - 0x2f, 0x06, 0x8e, 0x7e, 0xc6, 0x17, 0x03, 0x97, 0xa1, 0x2c, 0x3c, 0x7b, 0x1a, 0x07, 0xc2, 0xfc, - 0x94, 0x07, 0x2c, 0x31, 0x5c, 0xc9, 0x83, 0xcd, 0x41, 0xf6, 0xb6, 0x96, 0x90, 0x2e, 0x46, 0x24, - 0xab, 0x50, 0x4e, 0x42, 0x43, 0xca, 0xda, 0x3d, 0x68, 0x0c, 0x17, 0xae, 0xaf, 0x3c, 0xa6, 0x31, - 0x33, 0x12, 0x24, 0xe1, 0x61, 0x7e, 0xcb, 0x80, 0x6a, 0x7a, 0xbe, 0x90, 0x77, 0x61, 0x2c, 0x8e, - 0xce, 0x89, 0xfd, 0x0b, 0xf0, 0x20, 0x33, 0x09, 0xe7, 0xd1, 0x3c, 0x0d, 0x54, 0x74, 0x32, 0x07, - 0x25, 0xb6, 0xec, 0x94, 0x8c, 0xc4, 0x28, 0x4f, 0x7a, 0x02, 0xa6, 0xde, 0xeb, 0x49, 0x3c, 0x65, - 0xd5, 0xfe, 0x87, 0x3c, 0x8c, 0x29, 0x83, 0x45, 0xae, 0x41, 0x69, 0x29, 0x5c, 0xf6, 0x5b, 0x7b, - 0xd4, 0x15, 0xd7, 0x05, 0xf8, 0x20, 0xa4, 0x17, 0xda, 0x6d, 0x04, 0x5a, 0x71, 0x31, 0x69, 0xc0, - 0x38, 0xff, 0x4f, 0xc6, 0x76, 0xe6, 0x92, 0xa3, 0x4e, 0x8e, 0x2c, 0xa3, 0x3a, 0xd5, 0x1d, 0x56, - 0x23, 0x21, 0x1f, 0x03, 0x70, 0x00, 0x1b, 0xdf, 0x21, 0x1c, 0x7b, 0xe5, 0x02, 0x3e, 0x27, 0x3e, - 0x10, 0x79, 0x6a, 0x0b, 0x71, 0x2a, 0x28, 0x0c, 0xf1, 0x31, 0x3a, 0xbf, 0xb5, 0x37, 0xfc, 0x73, - 0x94, 0xc9, 0x63, 0x74, 0x7e, 0x6b, 0xcf, 0xce, 0xf6, 0xf2, 0x52, 0x59, 0x92, 0x6f, 0x1b, 0x70, - 0xc9, 0xa2, 0x2d, 0xff, 0x11, 0x0d, 0x0e, 0xea, 0x11, 0x62, 0xa9, 0x5f, 0x3c, 0xd9, 0xa5, 0xec, - 0x96, 0xf8, 0xe2, 0xeb, 0x81, 0xe0, 0x82, 0xe1, 0x28, 0xfb, 0xdd, 0xc8, 0x3e, 0xa6, 0x0a, 0xc7, - 0x7c, 0xd2, 0xfc, 0x4f, 0x86, 0xb2, 0x04, 0xc8, 0x0a, 0x94, 0xe3, 0xc9, 0x22, 0x0e, 0x1c, 0x63, - 0xe5, 0x48, 0xc2, 0x2d, 0xfa, 0xb0, 0xf1, 0x82, 0x38, 0xd9, 0x9f, 0x8e, 0xa7, 0x9c, 0xb6, 0x22, - 0x24, 0x90, 0x7c, 0x15, 0x0a, 0x38, 0x54, 0x27, 0xa7, 0xb0, 0x92, 0x5b, 0x4d, 0x81, 0x8d, 0x11, - 0xd6, 0x1a, 0x29, 0xc9, 0x97, 0x84, 0x97, 0x47, 0x5e, 0x4b, 0x0e, 0xcb, 0x40, 0xac, 0x1e, 0xf1, - 0x1e, 0x93, 0x38, 0x16, 0x2a, 0xb3, 0xf5, 0x6f, 0xe5, 0xa0, 0x9a, 0x5e, 0x78, 0xe4, 0x03, 0xa8, - 0xac, 0x39, 0x61, 0xf8, 0xd8, 0x0f, 0xdc, 0x7b, 0x4e, 0xb8, 0x2b, 0x12, 0x4e, 0xf2, 0x60, 0x57, - 0x01, 0xb7, 0x77, 0x1d, 0x2d, 0x31, 0x99, 0x46, 0xc0, 0x36, 0xe4, 0x75, 0xe1, 0xaf, 0xae, 0x2c, - 0xa0, 0xc8, 0x8f, 0xba, 0xa9, 0x84, 0x93, 0x12, 0x8d, 0xbc, 0x05, 0x79, 0x1e, 0xfb, 0xa6, 0x66, - 0x2b, 0x7a, 0x70, 0xa7, 0xce, 0xc3, 0x85, 0xf8, 0x65, 0xb2, 0x7e, 0x2a, 0xcf, 0xf0, 0xc9, 0xb2, - 0x12, 0x39, 0x55, 0xd4, 0xb2, 0xb6, 0x48, 0x70, 0xdc, 0xb8, 0x93, 0x43, 0xa8, 0x3e, 0x2c, 0x94, - 0xf2, 0xd5, 0x82, 0x88, 0xcf, 0xf9, 0x83, 0x3c, 0x94, 0xe3, 0xef, 0x13, 0x02, 0xa8, 0x6f, 0x88, - 0x5b, 0x61, 0xfc, 0x9f, 0x5c, 0x84, 0x92, 0x54, 0x31, 0xc4, 0xcd, 0xf0, 0x68, 0x28, 0xd4, 0x8b, - 0x19, 0x90, 0xba, 0x04, 0x57, 0x2f, 0x2c, 0xf9, 0x93, 0xdc, 0x84, 0x58, 0x51, 0x18, 0xa4, 0x51, - 0x14, 0xd8, 0x80, 0x59, 0x31, 0x1a, 0x99, 0x80, 0x9c, 0xc7, 0x7d, 0x91, 0xcb, 0x56, 0xce, 0x73, - 0xc9, 0x07, 0x50, 0x72, 0x5c, 0x97, 0xba, 0xb6, 0x13, 0x0d, 0xf1, 0x34, 0x68, 0x89, 0x71, 0xe3, - 0x12, 0x1d, 0xa9, 0xea, 0x11, 0xa9, 0x43, 0x19, 0x5f, 0x86, 0xec, 0x85, 0x43, 0x3d, 0x27, 0x99, - 0x70, 0x28, 0x31, 0xb2, 0x8d, 0x90, 0xba, 0xe4, 0x75, 0x28, 0xb0, 0xd1, 0x14, 0xfb, 0x41, 0x9c, - 0x83, 0x6e, 0x75, 0x7d, 0x8d, 0x77, 0xd8, 0xbd, 0x33, 0x16, 0x22, 0x90, 0x57, 0x20, 0xdf, 0x9b, - 0x7b, 0x28, 0x24, 0x7d, 0x35, 0x09, 0x8b, 0x8c, 0xd1, 0x58, 0x31, 0xb9, 0x05, 0xa5, 0xc7, 0x7a, - 0x00, 0xdc, 0xb9, 0xd4, 0x30, 0xc6, 0xf8, 0x31, 0x62, 0xa3, 0x04, 0x45, 0x1e, 0x6e, 0x66, 0xbe, - 0x04, 0x90, 0x7c, 0xba, 0xff, 0x02, 0xdf, 0xfc, 0x18, 0xca, 0xf1, 0x27, 0xc9, 0x8b, 0x00, 0x7b, - 0xf4, 0xc0, 0xde, 0x75, 0x3a, 0xae, 0x78, 0x11, 0xa5, 0x62, 0x95, 0xf7, 0xe8, 0xc1, 0x3d, 0x04, - 0x90, 0x0b, 0x30, 0xda, 0x65, 0xa3, 0x2a, 0xd3, 0xa5, 0x5a, 0xc5, 0x6e, 0x6f, 0x9b, 0xcd, 0xd0, - 0x19, 0x18, 0xc5, 0xa3, 0x03, 0xb1, 0xd0, 0xc6, 0x2d, 0xf9, 0xd3, 0xfc, 0xdd, 0x1c, 0x06, 0xd2, - 0x2b, 0xf5, 0x24, 0x2f, 0xc3, 0x78, 0x2b, 0xa0, 0xb8, 0x1d, 0x39, 0x4c, 0x2d, 0x12, 0xdf, 0xa9, - 0x24, 0xc0, 0x25, 0x97, 0xbc, 0x06, 0x93, 0x49, 0xfe, 0x56, 0xbb, 0xb5, 0x2d, 0xc2, 0x5f, 0x2b, - 0xd6, 0x78, 0x57, 0x26, 0x70, 0x9d, 0xdf, 0x46, 0x1f, 0xfa, 0xaa, 0x1a, 0x6a, 0x16, 0xc9, 0x5c, - 0xac, 0x65, 0x6b, 0x52, 0x81, 0xe3, 0xb5, 0xc3, 0x79, 0x28, 0x3a, 0xce, 0x4e, 0xcf, 0xe3, 0xfe, - 0xbc, 0x15, 0x4b, 0xfc, 0x22, 0x5f, 0x84, 0xa9, 0xd0, 0xdb, 0xe9, 0x38, 0x51, 0x2f, 0x10, 0x99, - 0x0c, 0x68, 0x80, 0x53, 0x6a, 0xdc, 0xaa, 0xc6, 0x05, 0xf3, 0x1c, 0x4e, 0xde, 0x04, 0xa2, 0x7e, - 0xcf, 0xdf, 0xfe, 0x84, 0xb6, 0xf8, 0x54, 0xab, 0x58, 0x53, 0x4a, 0xc9, 0x2a, 0x16, 0x90, 0x2f, - 0x40, 0x25, 0xa0, 0x21, 0xaa, 0x64, 0xd8, 0x6d, 0x98, 0x9f, 0xc5, 0x1a, 0x93, 0xb0, 0xfb, 0xf4, - 0xc0, 0x6c, 0xc0, 0x54, 0xdf, 0x7a, 0x24, 0x6f, 0x72, 0xed, 0x5e, 0xec, 0xcf, 0x15, 0x6e, 0xcc, - 0x30, 0x21, 0x95, 0x7a, 0x4c, 0x98, 0x23, 0x99, 0x1d, 0xa8, 0xa8, 0xf2, 0xf5, 0x84, 0xc0, 0xe2, - 0xf3, 0xe8, 0x58, 0xc8, 0x85, 0x4f, 0xf1, 0xe8, 0xb0, 0x96, 0xf3, 0x5c, 0x74, 0x27, 0xbc, 0x0a, - 0x25, 0xa9, 0x25, 0xa8, 0x2f, 0x82, 0x08, 0x85, 0xf2, 0xc0, 0x8a, 0x4b, 0xcd, 0xd7, 0x61, 0x54, - 0x88, 0xd0, 0xe3, 0x8f, 0x71, 0xcc, 0x5f, 0xcc, 0xc1, 0xa4, 0x45, 0xd9, 0x02, 0x17, 0x6f, 0x6d, - 0x3c, 0x67, 0x99, 0x6c, 0xb5, 0xb6, 0x1d, 0x13, 0xc7, 0xff, 0x3d, 0x03, 0xa6, 0x33, 0x70, 0x3f, - 0x55, 0xea, 0xab, 0xdb, 0x50, 0x5e, 0xf0, 0x9c, 0x76, 0xdd, 0x75, 0x63, 0x07, 0x49, 0xd4, 0x06, - 0x5d, 0xb6, 0x9c, 0x1c, 0x06, 0x55, 0x37, 0xd3, 0x18, 0x95, 0x5c, 0x17, 0x93, 0x22, 0x49, 0xce, - 0x27, 0x73, 0xe5, 0x02, 0xaf, 0x53, 0x92, 0x29, 0x17, 0xc3, 0xd0, 0x38, 0x30, 0xb9, 0x03, 0x7f, - 0x66, 0x87, 0x2e, 0x3b, 0x0c, 0x2d, 0xdd, 0xbc, 0xa1, 0xcc, 0xce, 0x6f, 0xe5, 0xe0, 0x7c, 0x36, - 0xe1, 0xa7, 0xcd, 0x62, 0x86, 0x49, 0x14, 0x94, 0x74, 0xc4, 0x98, 0xc5, 0x8c, 0x67, 0x5c, 0x40, - 0xfc, 0x04, 0x81, 0x3c, 0x84, 0xf1, 0x65, 0x27, 0x8c, 0xee, 0x51, 0x27, 0x88, 0xb6, 0xa9, 0x13, - 0x0d, 0xa1, 0xc1, 0xc6, 0x4f, 0xf6, 0xe2, 0xa6, 0xb6, 0x2b, 0x29, 0xd3, 0x4f, 0xf6, 0x6a, 0x6c, - 0xe3, 0x89, 0x52, 0x18, 0x62, 0xa2, 0xfc, 0x34, 0x4c, 0x36, 0xe9, 0xbe, 0xd3, 0xdd, 0xf5, 0x03, - 0x2a, 0x4e, 0x9e, 0x6f, 0xc0, 0x78, 0x0c, 0xca, 0x9c, 0x2d, 0x7a, 0xb1, 0x86, 0xaf, 0x74, 0x44, - 0x22, 0x4a, 0xf4, 0x62, 0xf3, 0xb7, 0x73, 0x70, 0xa1, 0xde, 0x12, 0xc7, 0xf4, 0xa2, 0x40, 0xde, - 0x26, 0x7e, 0xce, 0xdf, 0x26, 0xb3, 0x50, 0x7e, 0xe0, 0x3c, 0xc1, 0xb7, 0xe7, 0x43, 0x91, 0x0b, - 0x87, 0xab, 0x5f, 0xce, 0x13, 0x3b, 0x3e, 0xf6, 0xb2, 0x12, 0x9c, 0xa7, 0xf9, 0x3c, 0xbd, 0x09, - 0xc5, 0x7b, 0x7e, 0xdb, 0x15, 0x9b, 0x93, 0x38, 0xf5, 0xdf, 0x45, 0x88, 0x25, 0x4a, 0xcc, 0x1f, - 0x1a, 0x30, 0x11, 0xd7, 0x18, 0xab, 0xf0, 0xb9, 0x77, 0x49, 0xea, 0xa1, 0xfe, 0xf2, 0x10, 0x0f, - 0xf5, 0x8f, 0x7c, 0xb6, 0x9e, 0x30, 0xff, 0x11, 0x5e, 0x28, 0xa8, 0xad, 0x64, 0x3b, 0x91, 0x52, - 0x11, 0x63, 0xc8, 0x8a, 0xe4, 0x9e, 0xda, 0x90, 0xe4, 0x07, 0x0e, 0xc9, 0x2f, 0xe5, 0x60, 0x2c, - 0xae, 0xec, 0x73, 0x16, 0xbf, 0x1d, 0xb7, 0x6b, 0x28, 0xef, 0xec, 0xa6, 0x22, 0x2b, 0x84, 0x13, - 0xf4, 0x57, 0xa1, 0x28, 0x16, 0x93, 0x91, 0xba, 0x55, 0x4b, 0x8d, 0x6e, 0xf2, 0xec, 0x2a, 0x0e, - 0x68, 0x68, 0x09, 0x3a, 0x74, 0x7f, 0xdf, 0xa2, 0xdb, 0xe2, 0x7e, 0xe9, 0x99, 0xdd, 0xa3, 0xb2, - 0xdd, 0xdf, 0x93, 0x86, 0x0d, 0xb5, 0x3b, 0xfd, 0xbd, 0x02, 0x54, 0xd3, 0x24, 0x27, 0x47, 0xc8, - 0xaf, 0xf5, 0xb6, 0xc5, 0xeb, 0x07, 0x18, 0x21, 0xdf, 0xed, 0x6d, 0x5b, 0x0c, 0x46, 0x5e, 0x83, - 0xc2, 0x5a, 0xe0, 0x3d, 0xc2, 0x56, 0x8b, 0xc7, 0x1f, 0xba, 0x81, 0xf7, 0x48, 0xf5, 0x03, 0x65, - 0xe5, 0x68, 0xd0, 0x2e, 0x37, 0x95, 0x17, 0xaf, 0xb9, 0x41, 0xdb, 0x0e, 0xd3, 0x69, 0x51, 0x24, - 0x1a, 0xdb, 0x2a, 0x1b, 0xd4, 0x09, 0x44, 0x34, 0xb7, 0x10, 0x67, 0xb8, 0x55, 0x6e, 0x23, 0x98, - 0x67, 0x52, 0xb5, 0x54, 0x24, 0xd2, 0x06, 0xa2, 0xfc, 0x94, 0x0b, 0xf8, 0x64, 0x1b, 0x4f, 0x3e, - 0x5a, 0x74, 0x56, 0x65, 0x6d, 0xab, 0xab, 0x39, 0x83, 0xef, 0xd3, 0x3c, 0x23, 0x5c, 0x83, 0x32, - 0x1e, 0x79, 0xe1, 0x41, 0x46, 0xe9, 0x44, 0x66, 0xd2, 0xe7, 0x16, 0xf0, 0x36, 0xde, 0x8e, 0x8f, - 0x33, 0x12, 0x26, 0xe4, 0x7d, 0x18, 0x53, 0x1d, 0x45, 0xb9, 0x3b, 0xe3, 0x65, 0x1e, 0x21, 0x34, - 0x20, 0x29, 0x99, 0x4a, 0x60, 0x7e, 0x49, 0x9d, 0x25, 0x62, 0xd3, 0x3e, 0x76, 0x96, 0x98, 0xbf, - 0x89, 0x6a, 0xfc, 0xbe, 0x1f, 0x51, 0xa1, 0xbd, 0x3c, 0xb3, 0x72, 0x2c, 0x39, 0x42, 0x1e, 0xd1, - 0x3c, 0x42, 0xb4, 0xd6, 0x9d, 0xe2, 0xad, 0xe7, 0xbf, 0x6f, 0xc0, 0xb9, 0x4c, 0x5a, 0x72, 0x03, - 0x20, 0xd1, 0x11, 0x45, 0x2f, 0xf1, 0x14, 0xb5, 0x31, 0xd4, 0x52, 0x30, 0xc8, 0x37, 0xd3, 0xda, - 0xdd, 0xc9, 0x9b, 0x93, 0x7c, 0xc8, 0x61, 0x42, 0xd7, 0xee, 0x32, 0x74, 0x3a, 0xf3, 0x7b, 0x79, - 0x98, 0xea, 0x7b, 0x35, 0xf0, 0x84, 0x3b, 0xf8, 0xbd, 0xd4, 0xf3, 0x52, 0xfc, 0xba, 0xe3, 0xfa, - 0xa0, 0x37, 0x0b, 0x33, 0x1e, 0x9b, 0xc2, 0x63, 0x31, 0x91, 0x1d, 0xf9, 0x84, 0x37, 0xa7, 0xc2, - 0xec, 0x87, 0xc9, 0xbe, 0x38, 0xf0, 0x6b, 0x4f, 0xe1, 0x81, 0xb2, 0xbf, 0xc2, 0xef, 0x37, 0xfd, - 0x66, 0x0e, 0xa6, 0xfb, 0xda, 0xfc, 0xcc, 0xae, 0xba, 0xaf, 0x6a, 0xbb, 0xdb, 0x4b, 0x83, 0xc6, - 0x74, 0x28, 0x2d, 0xe2, 0x7f, 0x18, 0x70, 0x61, 0x00, 0x25, 0x39, 0x48, 0x4f, 0x22, 0xae, 0x55, - 0xdc, 0x3c, 0xfe, 0x83, 0x4f, 0x65, 0x2a, 0x7d, 0x6e, 0x33, 0xe1, 0x17, 0x73, 0x00, 0x5b, 0x74, - 0xfb, 0xd9, 0x4e, 0xff, 0x93, 0xfd, 0x2c, 0xbf, 0x6c, 0xd6, 0x50, 0xe3, 0xbe, 0x8a, 0x07, 0x89, - 0xc3, 0xe7, 0xfe, 0x89, 0x1f, 0xab, 0xc8, 0x65, 0x3f, 0x56, 0x61, 0x6e, 0xc3, 0xd9, 0xbb, 0x34, - 0x4a, 0x76, 0x42, 0x69, 0x43, 0x1e, 0xcf, 0xf6, 0x0d, 0x28, 0x0b, 0x7c, 0x3d, 0xf1, 0xb8, 0x74, - 0x28, 0xf3, 0x5c, 0x2b, 0x41, 0x30, 0x29, 0x5c, 0x58, 0xa0, 0x6d, 0x1a, 0xd1, 0xcf, 0xf7, 0x33, - 0x4d, 0x20, 0xbc, 0x29, 0xfc, 0x0d, 0x83, 0xa1, 0xbe, 0x70, 0x62, 0xff, 0x6c, 0xc2, 0xb9, 0xb8, - 0xee, 0x4f, 0x93, 0xef, 0x2c, 0xd3, 0x25, 0x44, 0xac, 0x5d, 0xc2, 0xf1, 0x98, 0x43, 0xc4, 0x27, - 0x70, 0x49, 0x12, 0x6c, 0x79, 0xf1, 0x4d, 0xcc, 0x50, 0xb4, 0xe4, 0x5d, 0x18, 0x53, 0x68, 0x44, - 0xe0, 0x2e, 0xde, 0x76, 0x3e, 0xf6, 0xa2, 0x5d, 0x3b, 0xe4, 0x70, 0xf5, 0xb6, 0x53, 0x41, 0x37, - 0xbf, 0x01, 0x2f, 0xc4, 0x7e, 0x2b, 0x19, 0x9f, 0x4e, 0x31, 0x37, 0x4e, 0xc7, 0x7c, 0x25, 0x69, - 0xd6, 0x52, 0x27, 0xf6, 0x1f, 0x97, 0xbc, 0x89, 0xda, 0x2c, 0xd1, 0x98, 0xcb, 0x4a, 0x5a, 0x34, - 0xb1, 0x17, 0x25, 0x00, 0xf3, 0x1d, 0xa5, 0xb2, 0x19, 0x0c, 0x35, 0x62, 0x23, 0x4d, 0xfc, 0x8b, - 0x39, 0x98, 0x5c, 0x5d, 0x5a, 0x98, 0x8f, 0x8f, 0x91, 0x9f, 0xb3, 0xdc, 0x44, 0x5a, 0xdb, 0x06, - 0xcb, 0x1b, 0x73, 0x03, 0xa6, 0x53, 0xdd, 0x80, 0x4f, 0xb4, 0xbc, 0xcf, 0xfd, 0x4b, 0x62, 0xb0, - 0xdc, 0x59, 0xce, 0x67, 0xb1, 0xdf, 0xbc, 0x65, 0xa5, 0xb0, 0xcd, 0xef, 0x15, 0x53, 0x7c, 0x85, - 0x08, 0x7b, 0x03, 0xca, 0x4b, 0x61, 0xd8, 0xa3, 0xc1, 0x86, 0xb5, 0xac, 0xea, 0x88, 0x1e, 0x02, - 0xed, 0x5e, 0xd0, 0xb6, 0x12, 0x04, 0x72, 0x0d, 0x4a, 0x22, 0xbe, 0x4b, 0xca, 0x04, 0xbc, 0x2e, - 0x8f, 0xc3, 0xc3, 0xac, 0xb8, 0x98, 0xbc, 0x05, 0x15, 0xfe, 0x3f, 0x9f, 0x6d, 0xa2, 0xc3, 0xf1, - 0xac, 0x4a, 0xa0, 0xf3, 0xd9, 0x69, 0x69, 0x68, 0xcc, 0x32, 0x93, 0x6f, 0x40, 0xb2, 0x1a, 0x15, - 0x12, 0xcb, 0x4c, 0x3e, 0x17, 0x89, 0x75, 0x52, 0x91, 0xc8, 0x75, 0xc8, 0xd7, 0xe7, 0x2d, 0x35, - 0xd7, 0xb2, 0xd3, 0x0a, 0x78, 0xae, 0x72, 0xed, 0x99, 0xa5, 0xfa, 0xbc, 0x45, 0xe6, 0xa0, 0x84, - 0xcf, 0x68, 0xb8, 0x34, 0x10, 0x3e, 0xa3, 0x38, 0x6b, 0xba, 0x02, 0xa6, 0x3d, 0x52, 0x2d, 0x60, - 0x64, 0x16, 0x46, 0x17, 0xbc, 0xb0, 0xdb, 0x76, 0x0e, 0x44, 0x52, 0x12, 0xbc, 0x0c, 0x71, 0x39, - 0x48, 0x9d, 0x67, 0x02, 0x8b, 0x5c, 0x83, 0x91, 0x66, 0xcb, 0xef, 0x32, 0x6b, 0x2b, 0x76, 0x6d, - 0x09, 0x19, 0x40, 0xcb, 0x6c, 0xc0, 0x00, 0x18, 0x72, 0xcc, 0x23, 0xa7, 0xca, 0x4a, 0xc8, 0x71, - 0x3a, 0x62, 0x4a, 0xe0, 0xf4, 0xfb, 0xff, 0xc1, 0xd3, 0xf4, 0xff, 0xdb, 0x86, 0x0b, 0x77, 0x51, - 0xd5, 0x6f, 0xd2, 0x00, 0xf3, 0x40, 0xf2, 0x27, 0x79, 0x36, 0xac, 0x25, 0x11, 0x2d, 0x76, 0xf5, - 0xe8, 0xb0, 0xf6, 0x0a, 0xb7, 0x06, 0xec, 0x90, 0xe3, 0xc8, 0xd7, 0x7c, 0x52, 0xef, 0x10, 0x0c, - 0x62, 0x44, 0xbe, 0x06, 0x67, 0xb3, 0x8a, 0x44, 0xdc, 0x18, 0x7a, 0x85, 0x67, 0x7f, 0x40, 0x75, - 0xcb, 0xce, 0xe2, 0x40, 0x96, 0xa1, 0xca, 0xe1, 0x75, 0x77, 0xdf, 0xeb, 0x2c, 0xee, 0x3b, 0x5e, - 0x1b, 0xa3, 0xc8, 0x44, 0x28, 0xa0, 0xe0, 0xea, 0xb0, 0x42, 0x9b, 0xb2, 0x52, 0xcd, 0x3b, 0x29, - 0x45, 0x89, 0xe2, 0xa8, 0x59, 0x7f, 0xb0, 0x9c, 0xac, 0xa9, 0xe7, 0xeb, 0xde, 0x48, 0x6b, 0xdb, - 0x31, 0xf7, 0x46, 0x1b, 0x30, 0x9d, 0xea, 0x06, 0x29, 0x8e, 0x34, 0x70, 0x5a, 0x1c, 0xa5, 0x68, - 0xac, 0x14, 0xb6, 0xf9, 0x1f, 0x8b, 0x29, 0xbe, 0xe2, 0xac, 0xc8, 0x84, 0x22, 0x97, 0x36, 0x6a, - 0xd6, 0x32, 0x2e, 0x8b, 0x2c, 0x51, 0x42, 0x2e, 0x42, 0xbe, 0xd9, 0x5c, 0x55, 0x73, 0x2a, 0x86, - 0xa1, 0x6f, 0x31, 0x18, 0x1b, 0x21, 0x3c, 0x06, 0x52, 0x02, 0xb4, 0x5a, 0x34, 0x88, 0xc4, 0x23, - 0xa1, 0xaf, 0x26, 0xeb, 0xb8, 0x90, 0xf4, 0xb7, 0x58, 0xc7, 0xc9, 0xea, 0x9d, 0x87, 0x99, 0x7a, - 0x18, 0xd2, 0x20, 0xe2, 0xa9, 0xde, 0xc3, 0xde, 0x3e, 0x0d, 0xc4, 0x5c, 0x13, 0x32, 0x86, 0x3f, - 0x31, 0xde, 0x0a, 0xad, 0x81, 0x88, 0xe4, 0x2a, 0x94, 0xea, 0x3d, 0xd7, 0xa3, 0x9d, 0x96, 0xe6, - 0x9b, 0xee, 0x08, 0x98, 0x15, 0x97, 0x92, 0x8f, 0xe0, 0x9c, 0x20, 0x92, 0x02, 0x47, 0xf4, 0x00, - 0x97, 0x35, 0xdc, 0x82, 0x15, 0x6b, 0x41, 0x8a, 0x29, 0x5b, 0x74, 0x49, 0x36, 0x25, 0xa9, 0x43, - 0x75, 0x11, 0xef, 0x49, 0xe5, 0x53, 0xc1, 0x7e, 0x20, 0x92, 0xef, 0xa2, 0xe4, 0xe2, 0x77, 0xa8, - 0xb6, 0x1b, 0x17, 0x5a, 0x7d, 0xe8, 0xe4, 0x3e, 0x4c, 0xa7, 0x61, 0x4c, 0x1e, 0x97, 0x93, 0xa7, - 0xbc, 0xfa, 0xb8, 0xa0, 0x60, 0xce, 0xa2, 0x22, 0xdb, 0x30, 0x55, 0x8f, 0xa2, 0xc0, 0xdb, 0xee, - 0x45, 0x34, 0x25, 0xba, 0xe4, 0x41, 0x63, 0x5c, 0x2e, 0xc5, 0xd7, 0x0b, 0x62, 0x32, 0x4e, 0x3b, - 0x31, 0x65, 0x2c, 0xc2, 0xac, 0x7e, 0x76, 0xc4, 0x8d, 0x5f, 0x03, 0x14, 0x2f, 0xe6, 0x89, 0x80, - 0x22, 0x79, 0xa0, 0x5b, 0x0f, 0x0f, 0xf6, 0xf7, 0x69, 0x14, 0xe0, 0xcd, 0x3d, 0xbe, 0xa8, 0x67, - 0x0a, 0x1f, 0xa0, 0x4b, 0xca, 0x23, 0x98, 0xf8, 0x6a, 0xa2, 0xe6, 0x1e, 0xa9, 0xf1, 0xd4, 0xb6, - 0x8f, 0xca, 0x90, 0xdb, 0x47, 0x1b, 0xa6, 0x16, 0x3b, 0xad, 0xe0, 0x00, 0x23, 0x1b, 0x65, 0xe5, - 0xc6, 0x4f, 0xa8, 0x9c, 0x7c, 0x2e, 0xe3, 0xb2, 0x23, 0x67, 0x58, 0x56, 0xf5, 0xfa, 0x19, 0x9b, - 0x7f, 0x0d, 0xaa, 0xe9, 0xbe, 0xfc, 0x8c, 0x4f, 0x20, 0x9f, 0xc6, 0x35, 0x9b, 0x8d, 0x74, 0xba, - 0x2d, 0x64, 0x56, 0x7b, 0xe7, 0xd6, 0x48, 0xa2, 0xd2, 0x95, 0x17, 0x69, 0xb5, 0xd7, 0x6d, 0xe5, - 0x32, 0xce, 0x65, 0x2d, 0x63, 0xf3, 0x97, 0x73, 0x30, 0xc5, 0xbd, 0x49, 0x9f, 0x7d, 0x5d, 0xf1, - 0x7d, 0x4d, 0x38, 0xcb, 0xb3, 0xc0, 0x54, 0xeb, 0x8e, 0xd1, 0x16, 0x3f, 0x86, 0x73, 0x7d, 0x5d, - 0x81, 0x02, 0x7a, 0x41, 0xfa, 0xf1, 0xf6, 0x89, 0xe8, 0x99, 0xec, 0x8f, 0x6c, 0xde, 0xb2, 0xfa, - 0x28, 0xcc, 0x7f, 0x90, 0xeb, 0xe3, 0x2f, 0xf4, 0x46, 0x55, 0x13, 0x34, 0x4e, 0xa7, 0x09, 0xe6, - 0x3e, 0x95, 0x26, 0x98, 0x1f, 0x46, 0x13, 0xfc, 0x08, 0xc6, 0xd7, 0xa9, 0xc3, 0x34, 0x1a, 0x11, - 0x6c, 0x56, 0xd0, 0xde, 0xa0, 0x65, 0x65, 0x52, 0xbe, 0xc4, 0x81, 0xaa, 0x11, 0x23, 0x60, 0xa2, - 0x85, 0x47, 0x9f, 0x59, 0x3a, 0x07, 0x75, 0xd3, 0x18, 0x19, 0xbc, 0x69, 0x98, 0xdf, 0xca, 0xc1, - 0x98, 0xc2, 0x9e, 0x7c, 0x19, 0x2a, 0xab, 0xc1, 0x8e, 0xd3, 0xf1, 0x7e, 0xc6, 0x51, 0x8e, 0x5f, - 0xb1, 0xfa, 0xbe, 0x02, 0xb7, 0x34, 0x2c, 0x74, 0x9b, 0xa1, 0xce, 0xbe, 0x3a, 0xf1, 0x59, 0xf5, - 0x2c, 0x84, 0x2a, 0xc1, 0xc2, 0xf9, 0x21, 0x82, 0x85, 0xf5, 0x48, 0xdb, 0xc2, 0xe9, 0x23, 0x6d, - 0xb5, 0xc0, 0xd8, 0x91, 0x53, 0x06, 0xc6, 0x9a, 0xbf, 0x9a, 0x83, 0xaa, 0x78, 0xad, 0x55, 0x1e, - 0x1e, 0x3e, 0x5f, 0xef, 0x30, 0xe8, 0x8d, 0x3b, 0xe6, 0x7a, 0xac, 0xf0, 0x5b, 0xbf, 0x57, 0xc3, - 0xb7, 0x37, 0xd3, 0xdd, 0x21, 0xdf, 0xde, 0xd4, 0xe1, 0xe9, 0xc8, 0x81, 0x34, 0x95, 0x95, 0xc6, - 0x37, 0xff, 0x24, 0x97, 0xe6, 0x2d, 0xb4, 0xa9, 0x57, 0x61, 0x94, 0x3f, 0xb6, 0x25, 0x9d, 0x9b, - 0x45, 0xee, 0x26, 0x04, 0x59, 0xb2, 0xec, 0x34, 0x31, 0x24, 0x27, 0x3d, 0xc0, 0x4a, 0x6e, 0x8b, - 0xf7, 0x59, 0xea, 0xae, 0x1b, 0xd0, 0x30, 0x14, 0x8a, 0x16, 0xde, 0xdd, 0x3d, 0xa6, 0xdb, 0x36, - 0xf7, 0x2b, 0x71, 0x5c, 0x37, 0xb0, 0x34, 0x3c, 0x32, 0x0f, 0x67, 0x35, 0xf7, 0x24, 0x49, 0x3f, - 0x92, 0xec, 0x16, 0x11, 0x16, 0x70, 0xe2, 0x4c, 0xe4, 0xa7, 0xf7, 0xf8, 0xb4, 0xf9, 0xbf, 0x0d, - 0xb6, 0xd6, 0x5a, 0x7b, 0xcf, 0x59, 0x74, 0x0b, 0x6b, 0xd2, 0x31, 0xca, 0xfe, 0xbf, 0x37, 0xb8, - 0x7f, 0xba, 0x98, 0x3e, 0x6f, 0x43, 0x91, 0x3f, 0xed, 0x25, 0x3c, 0xa9, 0x55, 0x2e, 0xbc, 0x20, - 0xb9, 0x9f, 0xe2, 0x0f, 0x84, 0x59, 0x82, 0x80, 0x99, 0xcc, 0xba, 0x9b, 0x3c, 0x2a, 0x9e, 0xfd, - 0xfe, 0xf1, 0x12, 0x4b, 0xcd, 0x4b, 0x3a, 0x5c, 0xbe, 0x6b, 0xe3, 0xe4, 0xbc, 0xa4, 0xe6, 0xff, - 0xcd, 0xf1, 0xf6, 0x88, 0x4a, 0x0d, 0x9b, 0x70, 0xef, 0x35, 0x28, 0xe0, 0x23, 0xb2, 0x4a, 0x56, - 0xc3, 0xd4, 0x03, 0xb2, 0x58, 0xce, 0xd6, 0x0d, 0xca, 0x5a, 0x35, 0xa0, 0x0a, 0xc5, 0xb1, 0xba, - 0x6e, 0x10, 0x03, 0xb3, 0x49, 0xfb, 0x2e, 0x55, 0x97, 0x43, 0x47, 0x4f, 0xfc, 0x8d, 0xe5, 0xe4, - 0xb6, 0xe2, 0xd7, 0xac, 0x1e, 0x68, 0xec, 0x3f, 0x74, 0x6c, 0xee, 0x4f, 0xab, 0x4a, 0xdb, 0xc4, - 0x05, 0x7a, 0x11, 0x26, 0xf4, 0x58, 0x65, 0x61, 0x74, 0x60, 0xc8, 0x77, 0x2a, 0xce, 0x59, 0x55, - 0x6f, 0x75, 0x22, 0xd2, 0x80, 0x71, 0x2d, 0x20, 0x55, 0x4d, 0xc2, 0xca, 0xb3, 0xc3, 0xd8, 0xfd, - 0x99, 0x14, 0x74, 0x12, 0xe5, 0xc0, 0xfc, 0x4b, 0x50, 0x15, 0x2b, 0x33, 0x8e, 0x6d, 0x43, 0xd5, - 0x6e, 0x69, 0xc1, 0x52, 0x57, 0x53, 0xcb, 0x73, 0x03, 0x0b, 0xa1, 0xe6, 0x77, 0x0d, 0xb8, 0x28, - 0x9e, 0x2c, 0xb3, 0x68, 0xc8, 0x74, 0x48, 0x0c, 0x88, 0xc3, 0xf9, 0xf8, 0x65, 0xf2, 0xae, 0x4c, - 0x3c, 0xa5, 0x0b, 0xc8, 0xf4, 0x37, 0x1a, 0xe3, 0x62, 0x52, 0x8e, 0x60, 0xea, 0x29, 0x99, 0x70, - 0xea, 0x6d, 0x91, 0x70, 0x2a, 0x77, 0x3c, 0x71, 0xbc, 0x2e, 0x5c, 0xda, 0x91, 0x89, 0xa6, 0x7e, - 0x2d, 0x07, 0xe7, 0x32, 0xaa, 0xb5, 0xf9, 0xe5, 0x67, 0x54, 0x38, 0x34, 0x34, 0xe1, 0x20, 0x33, - 0x12, 0x0e, 0xec, 0xf8, 0x4c, 0x59, 0xf1, 0x3b, 0x06, 0x5c, 0xd0, 0x67, 0x8f, 0xb0, 0x45, 0x37, - 0x6f, 0x91, 0x77, 0xa0, 0x78, 0x8f, 0x3a, 0x2e, 0x95, 0x21, 0x18, 0x71, 0x76, 0x2f, 0x71, 0x3a, - 0xcc, 0x0b, 0x39, 0xdb, 0x3f, 0xe1, 0x4b, 0xf9, 0x8c, 0x25, 0x48, 0xc8, 0x82, 0xa8, 0x1c, 0xbf, - 0x9e, 0x32, 0xe5, 0x4d, 0x4d, 0xd6, 0xa7, 0x8e, 0x51, 0x8c, 0x7f, 0x16, 0x5e, 0x38, 0x86, 0x84, - 0x8d, 0x1b, 0x1b, 0x79, 0x75, 0xdc, 0x70, 0x5f, 0x41, 0x28, 0x79, 0x1f, 0x26, 0xd7, 0x45, 0xa0, - 0x98, 0x1c, 0x0d, 0x25, 0xb9, 0xbb, 0x8c, 0x21, 0xb3, 0xe5, 0xb0, 0xa4, 0x91, 0xd9, 0x5e, 0xaf, - 0x7f, 0x5c, 0xf8, 0x38, 0xbc, 0x0c, 0xc5, 0x7b, 0xbe, 0x92, 0x75, 0x1b, 0x07, 0x17, 0xdf, 0xb3, - 0xf2, 0x5c, 0x4b, 0x14, 0xc5, 0xc6, 0x5a, 0x2e, 0xf3, 0x2a, 0xe2, 0x5b, 0x06, 0x54, 0x75, 0xde, - 0x9f, 0xb5, 0xbf, 0xdf, 0xd3, 0xfa, 0xfb, 0x85, 0xec, 0xfe, 0x1e, 0xdc, 0xd1, 0x7d, 0xc9, 0x18, - 0x86, 0xea, 0x61, 0x13, 0x8a, 0x0b, 0xfe, 0xbe, 0xe3, 0x75, 0xd4, 0x04, 0x02, 0x2e, 0x42, 0x2c, - 0x51, 0xa2, 0xf4, 0x56, 0x7e, 0x60, 0x6f, 0x99, 0xdf, 0x29, 0xc0, 0x45, 0x8b, 0xee, 0x78, 0x4c, - 0xeb, 0xd9, 0x08, 0xbd, 0xce, 0x8e, 0x76, 0x51, 0x64, 0xa6, 0x3a, 0x5c, 0xb8, 0xc7, 0x31, 0x48, - 0xdc, 0xdf, 0xd7, 0xa0, 0xc4, 0x44, 0xaf, 0xd2, 0xe7, 0x68, 0xc9, 0x60, 0x1a, 0x1c, 0xec, 0xf8, - 0xb8, 0x98, 0x5c, 0x17, 0x1b, 0x83, 0xe2, 0xc0, 0xcc, 0x36, 0x86, 0xd4, 0x23, 0xdf, 0x7c, 0x73, - 0x88, 0x35, 0xa5, 0xc2, 0x00, 0x4d, 0xe9, 0x01, 0x9c, 0xad, 0xbb, 0x5c, 0xe8, 0x38, 0xed, 0xb5, - 0xc0, 0xeb, 0xb4, 0xbc, 0xae, 0xd3, 0x96, 0x9a, 0x36, 0x7f, 0xf2, 0x3c, 0x2e, 0xb7, 0xbb, 0x31, - 0x82, 0x95, 0x49, 0xc6, 0x9a, 0xb1, 0xb0, 0xd2, 0xe4, 0x59, 0x4e, 0x8a, 0xc8, 0x02, 0x9b, 0xe1, - 0x76, 0x42, 0x9e, 0xe6, 0xc4, 0x8a, 0x8b, 0x51, 0x47, 0xc3, 0x18, 0x86, 0xf5, 0xe5, 0xe6, 0x7d, - 0x11, 0x13, 0x20, 0xfd, 0xab, 0x78, 0xc8, 0x43, 0xd4, 0x0e, 0xd1, 0x28, 0xd7, 0xf0, 0x12, 0xba, - 0x66, 0xf3, 0x1e, 0xa3, 0x2b, 0xf5, 0xd1, 0x85, 0xe1, 0xae, 0x4a, 0xc7, 0xf1, 0x98, 0xfd, 0xcf, - 0x3d, 0x54, 0x70, 0x42, 0x94, 0x13, 0x8d, 0x2e, 0x40, 0x28, 0xd7, 0xe8, 0x14, 0x14, 0xf2, 0x2e, - 0x4c, 0x2f, 0xce, 0xcf, 0x49, 0x67, 0xff, 0x05, 0xbf, 0xd5, 0xdb, 0xa7, 0x9d, 0x08, 0x83, 0x4f, - 0x2a, 0x7c, 0x0c, 0x69, 0x6b, 0x8e, 0xcd, 0x82, 0x2c, 0x34, 0xe1, 0xf2, 0xcf, 0x03, 0xc6, 0xe6, - 0x7d, 0x97, 0x86, 0x9b, 0x37, 0x9f, 0x33, 0x97, 0x7f, 0xa5, 0x6d, 0xb8, 0xda, 0x6e, 0x66, 0xae, - 0xcc, 0xbf, 0x8d, 0x2e, 0xff, 0x7d, 0xb8, 0xe4, 0xc7, 0x61, 0x04, 0x7f, 0x8a, 0x6d, 0x74, 0x3a, - 0x83, 0x6d, 0xb2, 0x85, 0xb6, 0x78, 0xc2, 0x0a, 0x24, 0x20, 0x4b, 0x49, 0x46, 0xfa, 0x53, 0x38, - 0xae, 0x8a, 0xa8, 0x53, 0xfd, 0x29, 0x12, 0x17, 0x2a, 0xea, 0x07, 0xd9, 0x1c, 0xb9, 0xe7, 0x84, - 0xbb, 0xd4, 0x9d, 0x97, 0x8f, 0x09, 0x56, 0xf8, 0x1c, 0xd9, 0x45, 0x28, 0x3e, 0x93, 0x62, 0x29, - 0x28, 0x4c, 0x3a, 0x2c, 0x85, 0x1b, 0xa1, 0xa8, 0x8a, 0x30, 0x6d, 0x3c, 0x34, 0x49, 0x5d, 0x4b, - 0x14, 0xa1, 0xb4, 0x94, 0x09, 0x19, 0x03, 0xa7, 0xb5, 0x47, 0x83, 0xcd, 0x9b, 0x9f, 0x87, 0xb4, - 0xd4, 0xbf, 0x71, 0xcc, 0x98, 0xfc, 0x7a, 0x29, 0xce, 0xb7, 0xa2, 0x21, 0x33, 0xc5, 0x2f, 0xb9, - 0x6e, 0x37, 0x12, 0xc5, 0x2f, 0xb9, 0x6e, 0x57, 0x15, 0xbf, 0x18, 0x35, 0x4e, 0x87, 0x9b, 0x3b, - 0x21, 0x1d, 0xee, 0x80, 0x0c, 0xdc, 0xd2, 0x53, 0xf3, 0x39, 0x7a, 0x8c, 0xe0, 0x2b, 0x50, 0xa9, - 0x47, 0x91, 0xd3, 0xda, 0xa5, 0x2e, 0xa6, 0x5d, 0x56, 0x6e, 0xf9, 0x1c, 0x01, 0x57, 0x7d, 0xc0, - 0x54, 0x5c, 0xe5, 0x31, 0x92, 0xd1, 0x21, 0x1e, 0x23, 0x99, 0x85, 0xd1, 0xa5, 0xce, 0x23, 0x8f, - 0xf5, 0x49, 0x29, 0xc9, 0xf8, 0xe0, 0x71, 0x90, 0xfe, 0x82, 0x05, 0x82, 0xc8, 0xdb, 0x50, 0x62, - 0x9b, 0x0e, 0xc6, 0x2e, 0x97, 0x13, 0xfd, 0x5c, 0x3c, 0xae, 0xbc, 0x2b, 0x8a, 0xd4, 0x43, 0x64, - 0x89, 0x4e, 0x6e, 0xc3, 0xa8, 0x34, 0x89, 0x21, 0xd1, 0xc9, 0x05, 0xa5, 0xc3, 0x4b, 0xb4, 0x24, - 0x13, 0xc2, 0x24, 0x7e, 0x57, 0x0f, 0x0a, 0x19, 0x53, 0x82, 0xad, 0x95, 0xa0, 0x10, 0x2d, 0xd8, - 0x5a, 0x09, 0x0f, 0x89, 0x2d, 0x9c, 0xca, 0x89, 0x16, 0xce, 0x26, 0x54, 0xd6, 0x9c, 0x20, 0xf2, - 0xd8, 0x76, 0xd4, 0x89, 0x78, 0xae, 0xac, 0xc4, 0x00, 0x57, 0x8a, 0x1a, 0x2f, 0xc9, 0xa0, 0xe3, - 0xae, 0x82, 0xaf, 0x47, 0xab, 0x26, 0x70, 0xb2, 0x92, 0xe1, 0x36, 0x28, 0x32, 0x3b, 0xe2, 0xbd, - 0x9e, 0x72, 0x1a, 0x25, 0x5a, 0xa4, 0x9e, 0x8f, 0xf7, 0x7b, 0x1c, 0xde, 0xe2, 0x63, 0x80, 0x86, - 0xe0, 0x24, 0xb2, 0xc1, 0x94, 0x21, 0xa8, 0x57, 0xa4, 0xac, 0xc1, 0x18, 0x91, 0x7c, 0x13, 0x2a, - 0xec, 0x7f, 0x4c, 0x1c, 0xe4, 0x51, 0x9e, 0x0b, 0x2b, 0x71, 0x23, 0xd3, 0x17, 0x34, 0xcf, 0x2e, - 0xd4, 0xa4, 0x11, 0x5f, 0xc0, 0xc8, 0x38, 0x7d, 0x9a, 0xa2, 0x71, 0x33, 0x7f, 0x68, 0xc0, 0x85, - 0x01, 0x3c, 0x86, 0x7e, 0x86, 0x68, 0x36, 0xd9, 0x90, 0x14, 0x83, 0x5b, 0x6c, 0x48, 0xea, 0xc4, - 0x90, 0x5b, 0x53, 0x76, 0x16, 0xab, 0xfc, 0xe7, 0x96, 0xc5, 0xca, 0x3c, 0x34, 0x60, 0x4c, 0x19, - 0xd9, 0xa7, 0xf8, 0xba, 0xc0, 0x6b, 0x22, 0x9d, 0x63, 0x3e, 0xc1, 0x4b, 0x3d, 0x55, 0xcc, 0xd3, - 0x37, 0x7e, 0x0c, 0xb0, 0xec, 0x84, 0x51, 0xbd, 0x15, 0x79, 0x8f, 0xe8, 0x10, 0x62, 0x2c, 0x89, - 0xbe, 0x77, 0x30, 0x3b, 0x2a, 0x23, 0xeb, 0x8b, 0xbe, 0x8f, 0x19, 0x9a, 0x2b, 0x50, 0x6c, 0xfa, - 0x41, 0xd4, 0x38, 0xe0, 0x7b, 0xd3, 0x02, 0x0d, 0x5b, 0xea, 0xb1, 0x9b, 0x87, 0x06, 0x78, 0xcb, - 0x12, 0x45, 0x4c, 0x41, 0xbc, 0xe3, 0xd1, 0xb6, 0xab, 0x5e, 0xbb, 0x3c, 0x64, 0x00, 0x8b, 0xc3, - 0xaf, 0x7f, 0x00, 0x93, 0x32, 0xa3, 0xdc, 0xfa, 0x72, 0x13, 0x5b, 0x30, 0x09, 0x63, 0x9b, 0x8b, - 0xd6, 0xd2, 0x9d, 0xaf, 0xdb, 0x77, 0x36, 0x96, 0x97, 0xab, 0x67, 0xc8, 0x38, 0x94, 0x05, 0x60, - 0xbe, 0x5e, 0x35, 0x48, 0x05, 0x4a, 0x4b, 0x2b, 0xcd, 0xc5, 0xf9, 0x0d, 0x6b, 0xb1, 0x9a, 0xbb, - 0xfe, 0x2a, 0x4c, 0x24, 0x97, 0x2a, 0x18, 0x78, 0x39, 0x0a, 0x79, 0xab, 0xbe, 0x55, 0x3d, 0x43, - 0x00, 0x8a, 0x6b, 0xf7, 0xe7, 0x9b, 0x37, 0x6f, 0x56, 0x8d, 0xeb, 0xd7, 0xf4, 0x27, 0x95, 0x19, - 0x93, 0x05, 0x2f, 0xc4, 0xa3, 0xc1, 0xea, 0x19, 0x32, 0x16, 0x9f, 0x21, 0x56, 0x8d, 0xeb, 0x5f, - 0xca, 0x78, 0x4a, 0x9a, 0xe1, 0x37, 0x69, 0xd7, 0x09, 0x9c, 0x88, 0xf2, 0x1a, 0x3d, 0xe8, 0xb5, - 0x23, 0xaf, 0xdb, 0xa6, 0x4f, 0xaa, 0xc6, 0xf5, 0xb7, 0xfb, 0x5e, 0x84, 0x26, 0xe7, 0x60, 0x6a, - 0x63, 0xa5, 0xfe, 0xa0, 0xb1, 0x74, 0x77, 0x63, 0x75, 0xa3, 0x69, 0x3f, 0xa8, 0xaf, 0xcf, 0xdf, - 0xab, 0x9e, 0x61, 0x6d, 0x7b, 0xb0, 0xda, 0x5c, 0xb7, 0xad, 0xc5, 0xf9, 0xc5, 0x95, 0xf5, 0xaa, - 0x71, 0xfd, 0x57, 0x0c, 0x98, 0xd0, 0x5f, 0xc3, 0x23, 0x57, 0xe0, 0xf2, 0x46, 0x73, 0xd1, 0xb2, - 0xd7, 0x57, 0xef, 0x2f, 0xae, 0xd8, 0x1b, 0xcd, 0xfa, 0xdd, 0x45, 0x7b, 0x63, 0xa5, 0xb9, 0xb6, - 0x38, 0xbf, 0x74, 0x67, 0x69, 0x71, 0xa1, 0x7a, 0x86, 0xd4, 0xe0, 0x05, 0x05, 0xc3, 0x5a, 0x9c, - 0x5f, 0xdd, 0x5c, 0xb4, 0xec, 0xb5, 0x7a, 0xb3, 0xb9, 0xb5, 0x6a, 0x2d, 0x54, 0x0d, 0x72, 0x09, - 0xce, 0x67, 0x20, 0x3c, 0xb8, 0x53, 0xaf, 0xe6, 0xfa, 0xca, 0x56, 0x16, 0xb7, 0xea, 0xcb, 0x76, - 0x63, 0x75, 0xbd, 0x9a, 0xbf, 0xfe, 0x01, 0x53, 0x58, 0x92, 0xe7, 0x2a, 0x48, 0x09, 0x0a, 0x2b, - 0xab, 0x2b, 0x8b, 0xbc, 0x87, 0xd6, 0x16, 0x57, 0x16, 0x96, 0x56, 0xee, 0xf2, 0x11, 0xa8, 0xaf, - 0xad, 0x59, 0xab, 0x9b, 0x8b, 0x0b, 0xd5, 0x1c, 0xeb, 0xe6, 0x85, 0xc5, 0x15, 0x56, 0xb3, 0xfc, - 0x75, 0x93, 0xa7, 0x68, 0xd6, 0x32, 0x8c, 0xb2, 0xde, 0x5a, 0xfc, 0xda, 0xfa, 0xe2, 0x4a, 0x73, - 0x69, 0x75, 0xa5, 0x7a, 0xe6, 0xfa, 0xe5, 0x14, 0x8e, 0x1c, 0xb4, 0x66, 0xf3, 0x5e, 0xf5, 0xcc, - 0xf5, 0x6f, 0x42, 0x45, 0xdd, 0xaf, 0xc9, 0x05, 0x98, 0x56, 0x7f, 0xaf, 0xd1, 0x8e, 0xeb, 0x75, - 0x76, 0xaa, 0x67, 0xd2, 0x05, 0x56, 0xaf, 0xd3, 0x61, 0x05, 0xd8, 0x78, 0xb5, 0x60, 0x9d, 0x06, - 0xfb, 0x5e, 0x87, 0x6d, 0xc5, 0xd5, 0x5c, 0xa3, 0xfa, 0xfd, 0x3f, 0x7b, 0xe9, 0xcc, 0xf7, 0x7f, - 0xf0, 0x92, 0xf1, 0x27, 0x3f, 0x78, 0xc9, 0xf8, 0x6f, 0x3f, 0x78, 0xc9, 0xd8, 0x2e, 0xe2, 0x9a, - 0xb8, 0xf5, 0xff, 0x03, 0x00, 0x00, 0xff, 0xff, 0x34, 0x26, 0x2a, 0x84, 0xfa, 0xb5, 0x00, 0x00, + // 11760 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xdc, 0xbd, 0x6f, 0x6c, 0x1c, 0x49, + 0x76, 0x18, 0xae, 0x9e, 0x19, 0x92, 0x33, 0x8f, 0x43, 0x72, 0x58, 0xa4, 0x24, 0x4a, 0xab, 0xdd, + 0xd1, 0xf6, 0xee, 0x6a, 0x25, 0xdd, 0xae, 0x78, 0xa2, 0x6e, 0x75, 0xde, 0xdb, 0x7f, 0x37, 0x43, + 0x52, 0x22, 0x57, 0x14, 0xc9, 0xed, 0xe1, 0x9f, 0x3b, 0xdf, 0x9d, 0xdb, 0xcd, 0xe9, 0x12, 0xd9, + 0xcb, 0xe1, 0xf4, 0xb8, 0xbb, 0x47, 0x12, 0xed, 0x9f, 0x61, 0x1b, 0x86, 0x7f, 0x86, 0x63, 0xf8, + 0xee, 0x6c, 0x9c, 0x63, 0x3b, 0x70, 0x60, 0xc7, 0x48, 0x90, 0x38, 0xc1, 0xe5, 0x83, 0x13, 0x20, + 0x09, 0x10, 0x04, 0x30, 0x10, 0x18, 0xf7, 0x21, 0x41, 0xfc, 0x2d, 0x88, 0x13, 0x30, 0xf1, 0x5d, + 0xbe, 0x98, 0x40, 0x82, 0xc0, 0xf9, 0xe4, 0x8b, 0x8d, 0x04, 0xf5, 0xaa, 0xaa, 0xbb, 0xaa, 0xa7, + 0x87, 0x1c, 0xad, 0xb4, 0xc0, 0x69, 0x3f, 0xcd, 0xf4, 0xab, 0xf7, 0x5e, 0xfd, 0x7f, 0xf5, 0x5e, + 0xd5, 0xab, 0x57, 0x30, 0x1a, 0x1d, 0x76, 0x68, 0x78, 0xa3, 0x13, 0xf8, 0x91, 0x4f, 0x86, 0xf0, + 0xe3, 0xe2, 0xf4, 0xae, 0xbf, 0xeb, 0x23, 0x64, 0x96, 0xfd, 0xe3, 0x89, 0x17, 0xab, 0xbb, 0xbe, + 0xbf, 0xdb, 0xa2, 0xb3, 0xf8, 0xb5, 0xd3, 0x7d, 0x30, 0x1b, 0x79, 0x07, 0x34, 0x8c, 0x9c, 0x83, + 0x8e, 0x40, 0x98, 0xdf, 0xf5, 0xa2, 0xbd, 0xee, 0xce, 0x8d, 0xa6, 0x7f, 0x30, 0xbb, 0x1b, 0x38, + 0x0f, 0xbd, 0xc8, 0x89, 0x3c, 0xbf, 0xed, 0xb4, 0x66, 0x23, 0xda, 0xa2, 0x1d, 0x3f, 0x88, 0x66, + 0x9d, 0x8e, 0x37, 0x8b, 0x79, 0xcc, 0x3e, 0x0a, 0x9c, 0x4e, 0x87, 0x06, 0xc9, 0x1f, 0xce, 0xc4, + 0xfc, 0x7b, 0x79, 0x28, 0xdd, 0xa3, 0xb4, 0x53, 0x6b, 0x79, 0x0f, 0x29, 0x79, 0x05, 0x0a, 0xab, + 0xce, 0x01, 0x9d, 0x31, 0x2e, 0x1b, 0x57, 0x4b, 0xf5, 0x89, 0xe3, 0xa3, 0xea, 0x68, 0x48, 0x83, + 0x87, 0x34, 0xb0, 0xdb, 0xce, 0x01, 0xb5, 0x30, 0x91, 0x7c, 0x0e, 0x4a, 0xec, 0x37, 0xec, 0x38, + 0x4d, 0x3a, 0x93, 0x43, 0xcc, 0xb1, 0xe3, 0xa3, 0x6a, 0xa9, 0x2d, 0x81, 0x56, 0x92, 0x4e, 0xae, + 0xc0, 0xc8, 0x0a, 0x75, 0x42, 0xba, 0xbc, 0x30, 0x93, 0xbf, 0x6c, 0x5c, 0xcd, 0xd7, 0xcb, 0xc7, + 0x47, 0xd5, 0x62, 0x8b, 0x81, 0x6c, 0xcf, 0xb5, 0x64, 0x22, 0x59, 0x86, 0x91, 0xc5, 0xc7, 0x1d, + 0x2f, 0xa0, 0xe1, 0x4c, 0xe1, 0xb2, 0x71, 0x75, 0x74, 0xee, 0xe2, 0x0d, 0x5e, 0xff, 0x1b, 0xb2, + 0xfe, 0x37, 0x36, 0x64, 0xfd, 0xeb, 0x53, 0xdf, 0x3b, 0xaa, 0x9e, 0x39, 0x3e, 0xaa, 0x8e, 0x50, + 0x4e, 0xf2, 0xed, 0xff, 0x5a, 0x35, 0x2c, 0x49, 0x4f, 0xde, 0x85, 0xc2, 0xc6, 0x61, 0x87, 0xce, + 0x94, 0x2e, 0x1b, 0x57, 0xc7, 0xe7, 0x5e, 0xba, 0xc1, 0x5b, 0x3c, 0xae, 0x64, 0xf2, 0x8f, 0x61, + 0xd5, 0x8b, 0xc7, 0x47, 0xd5, 0x02, 0x43, 0xb1, 0x90, 0x8a, 0xbc, 0x09, 0xc3, 0x4b, 0x7e, 0x18, + 0x2d, 0x2f, 0xcc, 0x00, 0x56, 0xed, 0xec, 0xf1, 0x51, 0x75, 0x72, 0xcf, 0x0f, 0x23, 0xdb, 0x73, + 0xdf, 0xf0, 0x0f, 0xbc, 0x88, 0x1e, 0x74, 0xa2, 0x43, 0x4b, 0x20, 0x99, 0x3b, 0x30, 0xa6, 0xf1, + 0x23, 0xa3, 0x30, 0xb2, 0xb9, 0x7a, 0x6f, 0x75, 0x6d, 0x7b, 0xb5, 0x72, 0x86, 0x14, 0xa1, 0xb0, + 0xba, 0xb6, 0xb0, 0x58, 0x31, 0xc8, 0x08, 0xe4, 0x6b, 0xeb, 0xeb, 0x95, 0x1c, 0x29, 0x43, 0x71, + 0xa1, 0xb6, 0x51, 0xab, 0xd7, 0x1a, 0x8b, 0x95, 0x3c, 0x99, 0x82, 0x89, 0xed, 0xe5, 0xd5, 0x85, + 0xb5, 0xed, 0x86, 0xbd, 0xb0, 0xd8, 0xb8, 0xb7, 0xb1, 0xb6, 0x5e, 0x29, 0x90, 0x71, 0x80, 0x7b, + 0x9b, 0xf5, 0x45, 0x6b, 0x75, 0x71, 0x63, 0xb1, 0x51, 0x19, 0x32, 0x7f, 0x39, 0x0f, 0xc5, 0xfb, + 0x34, 0x72, 0x5c, 0x27, 0x72, 0xc8, 0x25, 0xad, 0x8b, 0xb0, 0xf4, 0x4a, 0xdf, 0xbc, 0xd2, 0xdb, + 0x37, 0x43, 0xc7, 0x47, 0x55, 0xe3, 0x4d, 0xb5, 0x4f, 0xde, 0x81, 0xd1, 0x05, 0x1a, 0x36, 0x03, + 0xaf, 0xc3, 0xc6, 0x0b, 0xf6, 0x4b, 0xa9, 0x7e, 0xe1, 0xf8, 0xa8, 0x7a, 0xd6, 0x4d, 0xc0, 0x4a, + 0x5d, 0x55, 0x6c, 0xb2, 0x0c, 0xc3, 0x2b, 0xce, 0x0e, 0x6d, 0x85, 0x33, 0x43, 0x97, 0xf3, 0x57, + 0x47, 0xe7, 0x5e, 0x10, 0xed, 0x2b, 0x0b, 0x78, 0x83, 0xa7, 0x2e, 0xb6, 0xa3, 0xe0, 0xb0, 0x3e, + 0x7d, 0x7c, 0x54, 0xad, 0xb4, 0x10, 0xa0, 0xb6, 0x1d, 0x47, 0x21, 0x8d, 0xa4, 0xcf, 0x87, 0x4f, + 0xed, 0xf3, 0x17, 0xbf, 0x77, 0x54, 0x35, 0x58, 0x5f, 0x88, 0x3e, 0x4f, 0xf8, 0xe9, 0xbd, 0x7f, + 0x19, 0x72, 0xcb, 0x0b, 0x33, 0x23, 0x38, 0xd6, 0x2a, 0xc7, 0x47, 0xd5, 0xb2, 0xd6, 0x6d, 0xb9, + 0xe5, 0x85, 0x8b, 0x6f, 0xc3, 0xa8, 0x52, 0x46, 0x52, 0x81, 0xfc, 0x3e, 0x3d, 0xe4, 0xed, 0x69, + 0xb1, 0xbf, 0x64, 0x1a, 0x86, 0x1e, 0x3a, 0xad, 0xae, 0x68, 0x40, 0x8b, 0x7f, 0x7c, 0x29, 0xf7, + 0x63, 0x86, 0xf9, 0x1b, 0x05, 0x28, 0x5a, 0x3e, 0x9f, 0x67, 0xe4, 0x1a, 0x0c, 0x35, 0x22, 0x27, + 0x92, 0x5d, 0x31, 0x75, 0x7c, 0x54, 0x9d, 0x08, 0x19, 0x40, 0xc9, 0x8f, 0x63, 0x30, 0xd4, 0xf5, + 0x3d, 0x27, 0x94, 0x5d, 0x82, 0xa8, 0x1d, 0x06, 0x50, 0x51, 0x11, 0x83, 0x5c, 0x81, 0xc2, 0x7d, + 0xdf, 0xa5, 0xa2, 0x57, 0xc8, 0xf1, 0x51, 0x75, 0xfc, 0xc0, 0x77, 0x55, 0x44, 0x4c, 0x27, 0x6f, + 0x40, 0x69, 0xbe, 0x1b, 0x04, 0xb4, 0xcd, 0x86, 0x6a, 0x01, 0x91, 0xc7, 0x8f, 0x8f, 0xaa, 0xd0, + 0xe4, 0x40, 0x36, 0xb9, 0x12, 0x04, 0xd6, 0xd4, 0x8d, 0xc8, 0x09, 0x22, 0xea, 0xce, 0x0c, 0x0d, + 0xd4, 0xd4, 0x6c, 0x7a, 0x4d, 0x86, 0x9c, 0x24, 0xdd, 0xd4, 0x82, 0x13, 0x59, 0x82, 0xd1, 0xbb, + 0x81, 0xd3, 0xa4, 0xeb, 0x34, 0xf0, 0x7c, 0x17, 0xfb, 0x30, 0x5f, 0xbf, 0x72, 0x7c, 0x54, 0x3d, + 0xb7, 0xcb, 0xc0, 0x76, 0x07, 0xe1, 0x09, 0xf5, 0x0f, 0x8f, 0xaa, 0xc5, 0x85, 0x6e, 0x80, 0xad, + 0x67, 0xa9, 0xa4, 0xe4, 0x27, 0x59, 0x97, 0x84, 0x11, 0x36, 0x2d, 0x75, 0xb1, 0xf7, 0x4e, 0x2e, + 0xa2, 0x29, 0x8a, 0x78, 0xae, 0xe5, 0x84, 0x91, 0x1d, 0x70, 0xba, 0x54, 0x39, 0x55, 0x96, 0x64, + 0x0d, 0x8a, 0x8d, 0xe6, 0x1e, 0x75, 0xbb, 0x2d, 0x3a, 0x53, 0x44, 0xf6, 0xe7, 0xc5, 0xc0, 0x95, + 0xfd, 0x29, 0x93, 0xeb, 0x17, 0x05, 0x6f, 0x12, 0x0a, 0x88, 0xd2, 0xf6, 0x31, 0x93, 0x2f, 0x15, + 0x7f, 0xfb, 0xf7, 0xab, 0x67, 0x7e, 0xfe, 0xbf, 0x5c, 0x3e, 0x63, 0xfe, 0x8b, 0x1c, 0x54, 0xd2, + 0x4c, 0xc8, 0x03, 0x18, 0xdb, 0xec, 0xb8, 0x4e, 0x44, 0xe7, 0x5b, 0x1e, 0x6d, 0x47, 0x21, 0x0e, + 0x92, 0x93, 0xeb, 0xf4, 0xaa, 0xc8, 0x77, 0xa6, 0x8b, 0x84, 0x76, 0x93, 0x53, 0xa6, 0x6a, 0xa5, + 0xb3, 0x4d, 0xf2, 0x69, 0xa0, 0x9c, 0x0e, 0x71, 0x84, 0x3d, 0x59, 0x3e, 0x5c, 0xc2, 0xf7, 0xc9, + 0x47, 0xb0, 0x15, 0x03, 0xa8, 0xed, 0xee, 0x1c, 0xe2, 0xc8, 0x1c, 0x7c, 0x00, 0x31, 0x92, 0x8c, + 0x01, 0xc4, 0xc0, 0xe6, 0x7f, 0x37, 0x60, 0xdc, 0xa2, 0xa1, 0xdf, 0x0d, 0x9a, 0x74, 0x89, 0x3a, + 0x2e, 0x0d, 0xd8, 0xf0, 0xbf, 0xe7, 0xb5, 0x5d, 0x31, 0xa7, 0x70, 0xf8, 0xef, 0x7b, 0x6d, 0x75, + 0x0a, 0x63, 0x3a, 0xf9, 0x3c, 0x8c, 0x34, 0xba, 0x3b, 0x88, 0xca, 0xe7, 0xd4, 0x39, 0xec, 0xb1, + 0xee, 0x8e, 0x9d, 0x42, 0x97, 0x68, 0x64, 0x16, 0x46, 0xb6, 0x68, 0x10, 0x26, 0x12, 0x0f, 0x25, + 0xfb, 0x43, 0x0e, 0x52, 0x09, 0x04, 0x16, 0xb9, 0x9b, 0x48, 0x5d, 0xb1, 0x26, 0x4d, 0xa4, 0x64, + 0x5d, 0x32, 0x54, 0x0e, 0x04, 0x44, 0x1d, 0x2a, 0x12, 0xcb, 0xfc, 0xf5, 0x1c, 0x54, 0x16, 0x9c, + 0xc8, 0xd9, 0x71, 0x42, 0xd1, 0x9e, 0x5b, 0xb7, 0x98, 0x1c, 0x57, 0x2a, 0x8a, 0x72, 0x9c, 0x95, + 0xfc, 0x13, 0x57, 0xef, 0xb5, 0x74, 0xf5, 0x46, 0xd9, 0x02, 0x29, 0xaa, 0x97, 0x54, 0xea, 0xbd, + 0xd3, 0x2b, 0x55, 0x11, 0x95, 0x2a, 0xca, 0x4a, 0x25, 0x55, 0x21, 0xef, 0x41, 0xa1, 0xd1, 0xa1, + 0x4d, 0x21, 0x44, 0xa4, 0xec, 0xd7, 0x2b, 0xc7, 0x10, 0xb6, 0x6e, 0xd5, 0xcb, 0x82, 0x4d, 0x21, + 0xec, 0xd0, 0xa6, 0x85, 0x64, 0xca, 0xa4, 0xf9, 0xce, 0x30, 0x4c, 0x67, 0x91, 0x91, 0xf7, 0xf4, + 0xc5, 0x89, 0x37, 0xcf, 0x0b, 0x7d, 0x17, 0xa7, 0x19, 0x43, 0x5f, 0x9e, 0xae, 0x43, 0x71, 0x9d, + 0x0d, 0xc8, 0xa6, 0xdf, 0x12, 0x2d, 0xc7, 0xa4, 0x62, 0xb1, 0x23, 0x61, 0x86, 0x15, 0xa7, 0x93, + 0x17, 0x20, 0xbf, 0x69, 0x2d, 0x8b, 0xe6, 0x2a, 0x1d, 0x1f, 0x55, 0xf3, 0xdd, 0xc0, 0x9b, 0x31, + 0x2c, 0x06, 0x25, 0xb3, 0x30, 0x3c, 0x5f, 0x9b, 0xa7, 0x41, 0x84, 0xcd, 0x54, 0xae, 0x9f, 0x67, + 0xa3, 0xa5, 0xe9, 0xd8, 0x4d, 0x1a, 0x44, 0x5a, 0xf6, 0x02, 0x8d, 0x7c, 0x0e, 0xf2, 0xb5, 0xed, + 0x86, 0x68, 0x19, 0x10, 0x2d, 0x53, 0xdb, 0x6e, 0xd4, 0xc7, 0x44, 0x43, 0xe4, 0x9d, 0x47, 0x21, + 0xe3, 0x5e, 0xdb, 0x6e, 0xa8, 0xbd, 0x35, 0x7c, 0x42, 0x6f, 0x5d, 0x85, 0x22, 0xd3, 0x33, 0xd8, + 0x02, 0x8f, 0x42, 0xb1, 0xc4, 0xd5, 0xa7, 0x3d, 0x01, 0xb3, 0xe2, 0x54, 0xf2, 0x4a, 0xac, 0xb6, + 0x14, 0x13, 0x7e, 0x42, 0x6d, 0x91, 0xca, 0x0a, 0x79, 0x0c, 0x63, 0x0b, 0x87, 0x6d, 0xe7, 0xc0, + 0x6b, 0x8a, 0x25, 0xbc, 0x84, 0x4b, 0xf8, 0x8d, 0x13, 0xba, 0xf1, 0x86, 0x46, 0xc0, 0x57, 0x75, + 0x29, 0x7c, 0x67, 0x5c, 0x9e, 0x66, 0xa7, 0x57, 0xf8, 0x19, 0xc3, 0xd2, 0x33, 0x62, 0x73, 0x49, + 0x8a, 0x48, 0xd4, 0xab, 0x92, 0x61, 0x27, 0xc1, 0xc9, 0x5c, 0x0a, 0x04, 0x44, 0x9d, 0x4b, 0xf1, + 0xa2, 0xfb, 0x1e, 0xe4, 0xef, 0xce, 0xaf, 0xcf, 0x8c, 0x22, 0x0f, 0x22, 0x78, 0xdc, 0x9d, 0x5f, + 0x9f, 0x6f, 0xf9, 0x5d, 0xb7, 0xf1, 0xd1, 0x4a, 0xfd, 0xbc, 0x60, 0x33, 0xb6, 0xdb, 0xec, 0x68, + 0x25, 0x62, 0x74, 0x64, 0x11, 0x8a, 0xb2, 0x96, 0x33, 0x65, 0xe4, 0x31, 0x99, 0xaa, 0xfc, 0xd6, + 0x2d, 0x3e, 0xd7, 0x5c, 0xf1, 0xad, 0x96, 0x42, 0xe2, 0x5c, 0xdc, 0x06, 0xd2, 0xdb, 0x2e, 0x19, + 0x9a, 0xc4, 0xe7, 0x54, 0x4d, 0x62, 0x74, 0xee, 0xac, 0xc8, 0x6b, 0xde, 0x3f, 0x38, 0x70, 0xda, + 0x2e, 0xd2, 0x6e, 0xcd, 0xa9, 0x0a, 0x46, 0x0d, 0xc6, 0x93, 0x82, 0xac, 0x78, 0x61, 0x44, 0x66, + 0xa1, 0x24, 0x21, 0x6c, 0x11, 0xc9, 0x67, 0x16, 0xd9, 0x4a, 0x70, 0xcc, 0x3f, 0xc9, 0x01, 0x24, + 0x29, 0xcf, 0xa9, 0x9c, 0xf9, 0xa2, 0x26, 0x67, 0xce, 0xa6, 0x07, 0x68, 0x5f, 0x09, 0x43, 0x3e, + 0x80, 0x61, 0xa6, 0x72, 0x75, 0xa5, 0x4a, 0x79, 0x3e, 0x4d, 0x8a, 0x89, 0x5b, 0xb7, 0xea, 0xe3, + 0x82, 0x78, 0x38, 0x44, 0x88, 0x25, 0xc8, 0x14, 0x11, 0xf5, 0x3f, 0x0b, 0x49, 0x67, 0x08, 0xe1, + 0x74, 0x55, 0x91, 0x2e, 0x46, 0x32, 0x1f, 0xa5, 0x74, 0x51, 0x64, 0xcb, 0x05, 0x2e, 0x5b, 0x78, + 0xa3, 0x8e, 0x08, 0xd9, 0x92, 0x96, 0x2c, 0xbc, 0x01, 0x4f, 0x95, 0x2c, 0x9d, 0xf4, 0xb4, 0x2d, + 0xe0, 0x30, 0xb8, 0x9a, 0xd9, 0x2a, 0x59, 0x13, 0xf6, 0xf2, 0x69, 0x13, 0x36, 0x3d, 0x5d, 0x6f, + 0xf5, 0x93, 0x65, 0x67, 0xe5, 0xec, 0x72, 0x1e, 0xa9, 0xe4, 0x28, 0xd3, 0xde, 0xe1, 0x53, 0x73, + 0xb8, 0xef, 0xd4, 0x3c, 0x9b, 0x39, 0x35, 0xf9, 0xc4, 0x7c, 0x07, 0x86, 0x6a, 0x3f, 0xdd, 0x0d, + 0xa8, 0xd0, 0xfd, 0xca, 0x32, 0x4f, 0x06, 0x8b, 0xe7, 0xf4, 0x84, 0xc3, 0x3e, 0x55, 0x9d, 0x19, + 0xd3, 0x59, 0xce, 0x1b, 0x2b, 0x0d, 0xa1, 0xd7, 0x91, 0x54, 0xb3, 0x6c, 0xac, 0x28, 0xc5, 0x8e, + 0xb4, 0x5a, 0x33, 0x2a, 0x32, 0x0b, 0xb9, 0xda, 0x02, 0x1a, 0x8b, 0xa3, 0x73, 0x25, 0x99, 0xed, + 0x42, 0x7d, 0x5a, 0x90, 0x94, 0x1d, 0xcd, 0x7e, 0xa8, 0x2d, 0x7c, 0x7a, 0x93, 0xbf, 0xa5, 0xa8, + 0x09, 0x62, 0x98, 0x32, 0x73, 0x54, 0x0c, 0x16, 0x23, 0x51, 0x5a, 0x7a, 0x06, 0x4b, 0x3c, 0x54, + 0xae, 0xf1, 0x8e, 0xcb, 0xf5, 0x74, 0xdc, 0xa8, 0xb2, 0x08, 0x61, 0x77, 0x99, 0x7f, 0x61, 0x20, + 0x2e, 0x79, 0x03, 0x86, 0x2d, 0xba, 0x9b, 0xac, 0xb5, 0x68, 0xb3, 0x05, 0x08, 0x51, 0x33, 0xe0, + 0x38, 0x28, 0xc8, 0xa9, 0x1b, 0xee, 0x79, 0x0f, 0x22, 0x91, 0x4b, 0x2c, 0xc8, 0x05, 0x58, 0x11, + 0xe4, 0x02, 0xa2, 0x09, 0x72, 0x01, 0x63, 0x43, 0xcc, 0x5a, 0x68, 0x08, 0x65, 0x52, 0x96, 0xd4, + 0x5a, 0x50, 0xfa, 0x2a, 0x70, 0xb5, 0xbe, 0xb2, 0x16, 0x1a, 0xe4, 0x36, 0x94, 0x6a, 0xcd, 0xa6, + 0xdf, 0x55, 0x8c, 0x9e, 0x99, 0xe3, 0xa3, 0xea, 0xb4, 0xc3, 0x81, 0xba, 0x89, 0x9e, 0xa0, 0x9a, + 0xf5, 0xa4, 0xd4, 0x8c, 0xc7, 0x7c, 0xab, 0x1b, 0x46, 0x34, 0x58, 0x5e, 0x10, 0x55, 0x46, 0x1e, + 0x4d, 0x0e, 0x4c, 0xf1, 0x88, 0x51, 0xcd, 0xff, 0x6c, 0x60, 0x89, 0xc9, 0xdb, 0x00, 0xcb, 0x6d, + 0xa6, 0xd8, 0x36, 0x69, 0xcc, 0x00, 0x8d, 0x67, 0x4f, 0x40, 0x75, 0x0e, 0x0a, 0xb2, 0x9e, 0x75, + 0x6e, 0xe0, 0xac, 0x59, 0x96, 0x52, 0x4d, 0x16, 0xfb, 0x28, 0x22, 0xcb, 0x40, 0x40, 0x53, 0x59, + 0x26, 0xc8, 0xe4, 0x0a, 0x8c, 0x2c, 0xd7, 0xee, 0xd7, 0xba, 0xd1, 0x1e, 0xb6, 0x57, 0x91, 0x0b, + 0x2c, 0xcf, 0x39, 0xb0, 0x9d, 0x6e, 0xb4, 0x67, 0xc9, 0x44, 0xf3, 0xe7, 0x0d, 0x18, 0x55, 0xe6, + 0x2a, 0x2b, 0xea, 0x7a, 0xe0, 0x7f, 0x4c, 0x9b, 0x91, 0xde, 0x4a, 0x1d, 0x0e, 0x4c, 0x15, 0x35, + 0x46, 0x4d, 0xb5, 0x4e, 0xee, 0x09, 0x5a, 0xc7, 0x9c, 0x15, 0x22, 0x80, 0xd9, 0x00, 0xca, 0x16, + 0x07, 0xda, 0x00, 0x4c, 0xc7, 0x51, 0x6d, 0x00, 0x96, 0x6e, 0xfe, 0xa1, 0xc1, 0xa6, 0x2e, 0x99, + 0x05, 0xb8, 0x47, 0x0f, 0x23, 0x67, 0xe7, 0x8e, 0xd7, 0xd2, 0xb6, 0xae, 0xf6, 0x11, 0x6a, 0x3f, + 0xf0, 0x5a, 0xd4, 0x52, 0x50, 0xc8, 0x2d, 0x28, 0xde, 0x0b, 0x76, 0xde, 0x42, 0xf4, 0x5c, 0x2c, + 0x82, 0xa7, 0xf6, 0x83, 0x9d, 0xb7, 0x10, 0x59, 0x1d, 0xaf, 0x12, 0x91, 0x98, 0x30, 0xbc, 0xe0, + 0x1f, 0x38, 0x9e, 0x5c, 0xf6, 0x80, 0xad, 0x1d, 0x2e, 0x42, 0x2c, 0x91, 0xc2, 0x84, 0x7e, 0x63, + 0x7d, 0x55, 0x0c, 0x4c, 0x14, 0xfa, 0x61, 0xa7, 0x6d, 0x31, 0x98, 0xf9, 0x5d, 0x03, 0x46, 0x15, + 0x89, 0x44, 0xbe, 0x20, 0xcc, 0x7c, 0x03, 0x37, 0xa9, 0xce, 0xf5, 0xca, 0x2c, 0x96, 0xca, 0x97, + 0x6b, 0x66, 0xfe, 0x0b, 0xa3, 0x3f, 0x91, 0x06, 0xb9, 0x41, 0xa4, 0xc1, 0xdb, 0x00, 0x5c, 0x97, + 0xc3, 0xe6, 0x54, 0xc6, 0x8d, 0xb2, 0xa9, 0xa7, 0x76, 0x46, 0x82, 0x6c, 0xfe, 0x42, 0x0e, 0x8a, + 0xc2, 0x56, 0x99, 0x7b, 0x4e, 0x75, 0x88, 0xb7, 0x34, 0x1d, 0x62, 0x4a, 0x90, 0x2a, 0xca, 0xed, + 0xdc, 0x29, 0x36, 0xca, 0xdb, 0x50, 0x96, 0x4d, 0x80, 0xaa, 0xd8, 0x35, 0x18, 0x91, 0x56, 0x36, + 0x57, 0xc4, 0x26, 0x34, 0x9e, 0x5b, 0x73, 0x96, 0x4c, 0x37, 0xff, 0x64, 0x48, 0xd2, 0xf2, 0x9c, + 0x58, 0x13, 0xd6, 0x5c, 0x37, 0x50, 0x9b, 0xd0, 0x71, 0xdd, 0xc0, 0x42, 0x28, 0xeb, 0xa8, 0xf5, + 0xee, 0x4e, 0xcb, 0x6b, 0x22, 0x8e, 0x32, 0x6b, 0x3a, 0x08, 0xb5, 0x19, 0xaa, 0xda, 0x51, 0x09, + 0xb2, 0x66, 0x22, 0xe4, 0x4f, 0x34, 0x11, 0x7e, 0x02, 0x4a, 0xf3, 0x07, 0xae, 0xa6, 0x42, 0x98, + 0x19, 0x8d, 0x72, 0x23, 0x46, 0xe2, 0xca, 0xc3, 0x25, 0xd1, 0x46, 0xd3, 0xcd, 0x03, 0xb7, 0x57, + 0x71, 0x48, 0x58, 0x6a, 0x3a, 0xfe, 0xd0, 0xd3, 0xe8, 0xf8, 0xb7, 0xa1, 0xb4, 0x19, 0xd2, 0x8d, + 0x6e, 0xbb, 0x4d, 0x5b, 0xa8, 0x4e, 0x14, 0xb9, 0xec, 0xe9, 0x86, 0xd4, 0x8e, 0x10, 0xaa, 0x16, + 0x20, 0x46, 0x55, 0x87, 0xd5, 0xc8, 0x09, 0xc3, 0xea, 0x0b, 0x50, 0xa8, 0x75, 0x3a, 0xd2, 0xf8, + 0x89, 0x17, 0xc9, 0x4e, 0x07, 0x97, 0xbe, 0x71, 0xa7, 0xd3, 0xd1, 0x4d, 0x19, 0xc4, 0x26, 0x14, + 0xc8, 0xbd, 0xee, 0x0e, 0x0d, 0xda, 0x34, 0xa2, 0xa1, 0x10, 0xcd, 0xe1, 0x0c, 0x20, 0x8f, 0x19, + 0xb9, 0xc7, 0x9c, 0x46, 0x40, 0xc3, 0xf5, 0xfc, 0x7e, 0x77, 0x87, 0xda, 0x42, 0xc6, 0xab, 0x6d, + 0x97, 0xc1, 0x90, 0xc9, 0xa6, 0x75, 0x4a, 0x03, 0x1c, 0x07, 0xa3, 0x89, 0x6c, 0xea, 0x50, 0x1a, + 0xa4, 0x47, 0x41, 0x8c, 0x78, 0xb1, 0x01, 0xe3, 0x7a, 0xa7, 0x3d, 0x03, 0x6d, 0xe4, 0xc3, 0x42, + 0xb1, 0x58, 0x29, 0x99, 0xbf, 0x9c, 0x83, 0xd1, 0x5a, 0xa7, 0xf3, 0x9c, 0x6f, 0x5b, 0xfc, 0x98, + 0x26, 0x0a, 0xce, 0x25, 0x5d, 0xfe, 0x04, 0x3b, 0x16, 0x7f, 0x65, 0xc0, 0x44, 0x8a, 0x42, 0x2d, + 0xbd, 0x31, 0xa0, 0x19, 0x9f, 0x1b, 0xd0, 0x8c, 0xcf, 0xf7, 0x37, 0xe3, 0xd5, 0x89, 0x56, 0x78, + 0x9a, 0x89, 0xf6, 0x3a, 0xe4, 0x6b, 0x9d, 0x8e, 0x68, 0x95, 0x72, 0xd2, 0x2a, 0x5b, 0xb7, 0xf8, + 0xea, 0xe5, 0x74, 0x3a, 0x16, 0xc3, 0x30, 0xdf, 0x84, 0x12, 0x82, 0x51, 0x0c, 0x5e, 0x16, 0xf3, + 0x87, 0xcb, 0x40, 0x8d, 0x8c, 0xcf, 0x15, 0xf3, 0xff, 0x18, 0x30, 0x84, 0xdf, 0xcf, 0xe9, 0x70, + 0x99, 0xd3, 0x86, 0x4b, 0x45, 0x19, 0x2e, 0x83, 0x0c, 0x94, 0x3f, 0xca, 0x63, 0x6b, 0x89, 0x21, + 0x22, 0x0c, 0x41, 0x23, 0xc3, 0x10, 0x7c, 0x0a, 0xa9, 0xbf, 0x9f, 0x36, 0x09, 0xf3, 0xd8, 0x19, + 0xaf, 0xa4, 0x8b, 0xfa, 0x4c, 0xac, 0xc1, 0x25, 0x20, 0xcb, 0xed, 0x90, 0x36, 0xbb, 0x01, 0x6d, + 0xec, 0x7b, 0x9d, 0x2d, 0x1a, 0x78, 0x0f, 0x0e, 0x85, 0x3a, 0x89, 0x82, 0xd9, 0x13, 0xa9, 0x76, + 0xb8, 0xef, 0x75, 0xec, 0x87, 0x98, 0x6e, 0x65, 0xd0, 0x90, 0x0f, 0x60, 0xc4, 0xa2, 0x8f, 0x02, + 0x2f, 0xa2, 0xa2, 0x6d, 0xc7, 0x63, 0xe3, 0x01, 0xa1, 0x5c, 0xa1, 0x09, 0xf8, 0x87, 0xda, 0xff, + 0x22, 0xfd, 0xd3, 0xb3, 0xbd, 0xbe, 0x33, 0x84, 0x73, 0xe1, 0x94, 0xe3, 0xb5, 0x13, 0xac, 0x7a, + 0xbd, 0x33, 0xf3, 0x4f, 0xd2, 0x99, 0x5b, 0x50, 0x66, 0xf6, 0x5e, 0xca, 0xbc, 0xbf, 0x94, 0xf4, + 0xe5, 0x0d, 0x35, 0xf9, 0xa4, 0x93, 0x35, 0x8d, 0x0f, 0xb1, 0xd3, 0x83, 0x84, 0x9f, 0xd8, 0xbd, + 0xa8, 0x30, 0xce, 0x18, 0x1e, 0xb1, 0xe8, 0x68, 0xf2, 0xc6, 0x7a, 0xe2, 0x81, 0x31, 0xfc, 0x74, + 0x03, 0x63, 0xe4, 0x93, 0x0c, 0x8c, 0xf4, 0x99, 0x66, 0xf1, 0x49, 0xce, 0x34, 0x2f, 0x7e, 0x00, + 0x93, 0x3d, 0x2d, 0xfc, 0x24, 0xe7, 0x82, 0x9f, 0xde, 0xb0, 0xfc, 0xd9, 0xb8, 0x5d, 0xc8, 0x1c, + 0xda, 0xb0, 0x5e, 0x40, 0x9b, 0x11, 0x8a, 0x5e, 0x21, 0x2d, 0x03, 0x01, 0x4b, 0x19, 0xd9, 0x08, + 0x23, 0xef, 0xc3, 0x08, 0x3f, 0x57, 0x09, 0x67, 0x72, 0xd8, 0xf7, 0x63, 0x22, 0x47, 0x0e, 0x15, + 0x87, 0xdb, 0x1c, 0x43, 0x6d, 0x55, 0x41, 0x64, 0xde, 0x85, 0x61, 0x71, 0x2e, 0x73, 0xf2, 0xbc, + 0xa8, 0xc2, 0xd0, 0x56, 0xd2, 0x32, 0xb8, 0x97, 0xce, 0x2b, 0x61, 0x71, 0xb8, 0xf9, 0xab, 0x06, + 0x8c, 0xeb, 0xb5, 0x24, 0x37, 0x60, 0x58, 0x1c, 0x1c, 0x1a, 0x78, 0x70, 0xc8, 0x6a, 0x33, 0xcc, + 0x8f, 0x0c, 0xb5, 0x83, 0x42, 0x81, 0xc5, 0x44, 0xbf, 0xe0, 0x80, 0x75, 0x11, 0xa2, 0x5f, 0x0c, + 0x52, 0x4b, 0xa6, 0x31, 0x3b, 0xcd, 0xa2, 0x61, 0xb7, 0x15, 0xa9, 0x76, 0x5a, 0x80, 0x10, 0x4b, + 0xa4, 0x98, 0x47, 0x06, 0x40, 0xa3, 0xb1, 0x74, 0x8f, 0x1e, 0xae, 0x3b, 0x5e, 0x80, 0xb6, 0x2e, + 0xce, 0xc6, 0x7b, 0xa2, 0xb7, 0xca, 0xc2, 0xd6, 0xe5, 0x33, 0x77, 0x9f, 0x1e, 0x6a, 0xb6, 0xae, + 0x44, 0xc5, 0x29, 0x1f, 0x78, 0x0f, 0x9d, 0x88, 0x32, 0xc2, 0x1c, 0x12, 0xf2, 0x29, 0xcf, 0xa1, + 0x29, 0x4a, 0x05, 0x99, 0x7c, 0x03, 0xc6, 0x93, 0x2f, 0xf4, 0x56, 0xc8, 0xa3, 0x21, 0x28, 0x47, + 0x84, 0x9e, 0x58, 0x7f, 0xe9, 0xf8, 0xa8, 0x7a, 0x51, 0xe1, 0x6a, 0x33, 0x2c, 0x85, 0x75, 0x8a, + 0x99, 0xf9, 0x07, 0x06, 0xc0, 0xc6, 0x4a, 0x43, 0x56, 0xf0, 0x0a, 0x14, 0xe2, 0x2d, 0xa4, 0x32, + 0x37, 0xa8, 0x53, 0x16, 0x23, 0xa6, 0x93, 0x57, 0x20, 0x9f, 0xd4, 0x64, 0xf2, 0xf8, 0xa8, 0x3a, + 0xa6, 0xd7, 0x80, 0xa5, 0x92, 0xbb, 0x30, 0x32, 0x50, 0x99, 0x71, 0x74, 0x66, 0x94, 0x55, 0x52, + 0x63, 0x2f, 0x7c, 0xb8, 0xbd, 0xf1, 0xd9, 0xed, 0x85, 0x6f, 0xe5, 0x60, 0x82, 0xb5, 0x6b, 0xad, + 0x1b, 0xed, 0xf9, 0x81, 0x17, 0x1d, 0x3e, 0xb7, 0xa6, 0xf4, 0xbb, 0x9a, 0x42, 0x74, 0x51, 0x8a, + 0x2d, 0xb5, 0x6e, 0x03, 0x59, 0xd4, 0x7f, 0x3e, 0x02, 0x53, 0x19, 0x54, 0xe4, 0x0d, 0xe1, 0xb2, + 0x93, 0x6c, 0x34, 0xa1, 0x4b, 0xce, 0x0f, 0x8f, 0xaa, 0x65, 0x89, 0xbe, 0x91, 0xb8, 0xe8, 0xcc, + 0xc1, 0xa8, 0xb0, 0x97, 0x56, 0x13, 0x8d, 0x1a, 0x7d, 0x3d, 0xe4, 0x46, 0x1a, 0x8a, 0x26, 0x15, + 0x89, 0xd4, 0xa0, 0x3c, 0xbf, 0x47, 0x9b, 0xfb, 0x5e, 0x7b, 0xf7, 0x1e, 0x3d, 0xe4, 0xfa, 0x52, + 0xb9, 0xfe, 0x22, 0x33, 0xcf, 0x9a, 0x02, 0xce, 0xba, 0x54, 0xb7, 0xfc, 0x34, 0x12, 0xf2, 0x3e, + 0x8c, 0x36, 0xbc, 0xdd, 0xb6, 0xe4, 0x50, 0x40, 0x0e, 0x97, 0x8e, 0x8f, 0xaa, 0xe7, 0x42, 0x0e, + 0xee, 0x65, 0xa0, 0x12, 0x90, 0x6b, 0x30, 0x64, 0xf9, 0x2d, 0xca, 0x97, 0x61, 0xe1, 0x04, 0x12, + 0x30, 0x80, 0xba, 0xa1, 0x8d, 0x18, 0x64, 0x09, 0x46, 0xd8, 0x9f, 0xfb, 0x4e, 0x67, 0x66, 0x18, + 0xe5, 0x36, 0x89, 0x15, 0x7c, 0x84, 0x76, 0xbc, 0xf6, 0xae, 0xaa, 0xe3, 0xb7, 0xa8, 0x7d, 0xe0, + 0x74, 0xb4, 0x75, 0x91, 0x23, 0x92, 0x2d, 0x18, 0x4d, 0x04, 0x41, 0x38, 0x33, 0xa2, 0x1d, 0x20, + 0x25, 0x29, 0xf5, 0x97, 0x05, 0xb3, 0xf3, 0x51, 0x2b, 0xc4, 0xb1, 0xdd, 0x61, 0xf8, 0x7a, 0x65, + 0x14, 0x46, 0x9a, 0x0d, 0x52, 0xec, 0x6f, 0x83, 0x18, 0xa7, 0xda, 0x20, 0x2e, 0x80, 0x68, 0xa4, + 0x5a, 0x6b, 0x57, 0xf8, 0x6c, 0x5d, 0xeb, 0x3f, 0xc0, 0x6e, 0x24, 0xc8, 0x38, 0x27, 0xf9, 0x76, + 0x96, 0x68, 0x7f, 0xa7, 0xb5, 0xab, 0x6d, 0x67, 0xc5, 0xa8, 0xac, 0x19, 0x12, 0x51, 0x23, 0xcd, + 0x76, 0xd9, 0x0c, 0x49, 0x4a, 0xd2, 0x0c, 0x1f, 0x3f, 0x8a, 0xfa, 0x35, 0x83, 0xc2, 0x88, 0xac, + 0x02, 0xd4, 0x9a, 0x91, 0xf7, 0x90, 0xe2, 0x90, 0x18, 0xd5, 0x1a, 0x62, 0xbe, 0x76, 0x8f, 0x1e, + 0x36, 0x68, 0x14, 0xbb, 0x43, 0x9c, 0x75, 0x10, 0x35, 0x35, 0x4c, 0x2c, 0x85, 0x03, 0xe9, 0xc0, + 0xd9, 0x9a, 0xeb, 0x7a, 0xdc, 0x8f, 0x6f, 0x23, 0x60, 0xe3, 0xd7, 0x45, 0xd6, 0xe5, 0x6c, 0xd6, + 0xd7, 0x04, 0xeb, 0x97, 0x9d, 0x98, 0xca, 0x8e, 0x38, 0x59, 0x3a, 0x9b, 0x6c, 0xc6, 0xe6, 0x1a, + 0x8c, 0xeb, 0x4d, 0xaa, 0x7b, 0xb0, 0x95, 0xa1, 0x68, 0x35, 0x6a, 0x76, 0x63, 0xa9, 0x76, 0xb3, + 0x62, 0x90, 0x0a, 0x94, 0xc5, 0xd7, 0x9c, 0x3d, 0xf7, 0xd6, 0xed, 0x4a, 0x4e, 0x83, 0xbc, 0x75, + 0x73, 0xae, 0x92, 0x37, 0xff, 0xc8, 0x80, 0xa2, 0x2c, 0x1f, 0xb9, 0x0d, 0xf9, 0x46, 0x63, 0x29, + 0x75, 0x6e, 0x99, 0x2c, 0xbd, 0x7c, 0x91, 0x09, 0xc3, 0x3d, 0x75, 0x91, 0x69, 0x34, 0x96, 0x18, + 0xdd, 0xc6, 0x4a, 0x43, 0x28, 0x2d, 0x19, 0xc3, 0x75, 0xb2, 0xcf, 0x61, 0xce, 0x6d, 0xc8, 0x7f, + 0xb8, 0xbd, 0x21, 0xac, 0xa1, 0x8c, 0xfe, 0x45, 0xba, 0x8f, 0x1f, 0xa9, 0x4b, 0x1f, 0x23, 0x30, + 0x2d, 0x18, 0x55, 0xa6, 0x16, 0x57, 0x22, 0x0e, 0xfc, 0xd8, 0xb7, 0x4b, 0x28, 0x11, 0x0c, 0x62, + 0x89, 0x14, 0xa6, 0xf3, 0xac, 0xf8, 0x4d, 0xa7, 0x25, 0xb4, 0x11, 0xd4, 0x79, 0x5a, 0x0c, 0x60, + 0x71, 0xb8, 0xf9, 0xc7, 0x06, 0x54, 0xd6, 0x03, 0xff, 0xa1, 0xc7, 0x24, 0xf0, 0x86, 0xbf, 0x4f, + 0xdb, 0x5b, 0x37, 0xc9, 0x9b, 0x52, 0x08, 0x70, 0x15, 0xee, 0x3c, 0xa3, 0x42, 0x21, 0xf0, 0xc3, + 0xa3, 0x2a, 0x34, 0x0e, 0xc3, 0x88, 0x1e, 0xb0, 0x74, 0x29, 0x08, 0x14, 0x17, 0xb9, 0xdc, 0xe0, + 0x6e, 0x37, 0xa7, 0xb8, 0xc8, 0x55, 0x61, 0x08, 0x8b, 0xa3, 0x78, 0x3e, 0x0c, 0x45, 0x0c, 0x60, + 0x71, 0xb8, 0x22, 0xb0, 0x7f, 0x3d, 0xd7, 0x53, 0x87, 0xb9, 0xcf, 0x94, 0xeb, 0x8a, 0x5e, 0xb9, + 0x81, 0x16, 0xb1, 0xaf, 0xc2, 0x74, 0xba, 0x49, 0x70, 0x5f, 0xa4, 0x06, 0x13, 0x3a, 0x5c, 0x6e, + 0x91, 0x9c, 0xcf, 0xcc, 0x6b, 0x6b, 0xce, 0x4a, 0xe3, 0x9b, 0xdf, 0x37, 0xa0, 0x84, 0x7f, 0xad, + 0x6e, 0x8b, 0x32, 0xcd, 0xa6, 0xb6, 0xdd, 0x10, 0xa7, 0x58, 0xea, 0x49, 0x93, 0xf3, 0x28, 0xb4, + 0xc5, 0x91, 0x97, 0x26, 0x47, 0x62, 0x64, 0x41, 0xca, 0xcf, 0xec, 0x42, 0x31, 0x42, 0x63, 0x52, + 0x7e, 0xb8, 0x17, 0xa6, 0x48, 0x05, 0x32, 0xeb, 0x3f, 0xf6, 0xe5, 0xb7, 0xe4, 0x7e, 0x32, 0xf6, + 0x1f, 0xd2, 0xf9, 0xda, 0xd9, 0x88, 0x44, 0x23, 0x6f, 0xc2, 0x30, 0xcb, 0xda, 0x92, 0x27, 0x1f, + 0x68, 0x55, 0x60, 0x19, 0x03, 0xed, 0x08, 0x91, 0x23, 0x99, 0xff, 0x32, 0x97, 0x6e, 0x40, 0xa1, + 0x05, 0x3c, 0xe1, 0xdc, 0x78, 0x07, 0x86, 0x6a, 0xad, 0x96, 0xff, 0x48, 0x48, 0x09, 0xb9, 0x4d, + 0x13, 0xb7, 0x1f, 0x5f, 0x61, 0x1d, 0x86, 0xa2, 0x1d, 0x19, 0x33, 0x00, 0x99, 0x87, 0x52, 0x6d, + 0xbb, 0xb1, 0xbc, 0xbc, 0xb0, 0xb1, 0xb1, 0x22, 0x3c, 0x93, 0x5f, 0x93, 0xed, 0xe3, 0x79, 0xae, + 0x1d, 0x45, 0xad, 0x3e, 0x8e, 0x8b, 0x09, 0x1d, 0x79, 0x0f, 0xe0, 0x43, 0xdf, 0x6b, 0xdf, 0xa7, + 0xd1, 0x9e, 0xef, 0x8a, 0xca, 0x33, 0x95, 0x62, 0xf4, 0x63, 0xdf, 0x6b, 0xdb, 0x07, 0x08, 0x66, + 0x65, 0x4f, 0x90, 0x2c, 0xe5, 0x3f, 0x6b, 0xe9, 0xba, 0x1f, 0xa1, 0x0e, 0x33, 0x94, 0xb4, 0xf4, + 0x8e, 0x1f, 0xa5, 0x0f, 0x66, 0x24, 0x9a, 0xf9, 0x6b, 0x39, 0x18, 0xe7, 0x96, 0x2a, 0x1f, 0x30, + 0xcf, 0xed, 0x64, 0x7c, 0x47, 0x9b, 0x8c, 0x17, 0xe4, 0xc2, 0xa0, 0x54, 0x6d, 0xa0, 0xa9, 0xb8, + 0x07, 0xa4, 0x97, 0x86, 0x58, 0x72, 0x3f, 0x65, 0x90, 0x59, 0x78, 0x33, 0x39, 0x70, 0x0e, 0x91, + 0xc8, 0x46, 0x51, 0x18, 0x5a, 0x1a, 0x0f, 0xf3, 0x57, 0x73, 0x30, 0xa6, 0xe8, 0x93, 0xcf, 0x6d, + 0xc3, 0x7f, 0x49, 0x6b, 0x78, 0x79, 0x70, 0xa1, 0xd4, 0x6c, 0xa0, 0x76, 0xef, 0xc2, 0x64, 0x0f, + 0x49, 0x5a, 0x2d, 0x37, 0x06, 0x51, 0xcb, 0xdf, 0xe8, 0x3d, 0x11, 0xe7, 0x5e, 0xcc, 0xf1, 0x89, + 0xb8, 0x7a, 0x04, 0xff, 0xad, 0x1c, 0x4c, 0x8b, 0xaf, 0x5a, 0xd7, 0xf5, 0xa2, 0x79, 0xbf, 0xfd, + 0xc0, 0xdb, 0x7d, 0x6e, 0xfb, 0xa2, 0xa6, 0xf5, 0x45, 0x55, 0xef, 0x0b, 0xa5, 0x82, 0xfd, 0xbb, + 0xc4, 0xfc, 0xd7, 0x45, 0x98, 0xe9, 0x47, 0xc0, 0xcc, 0x7e, 0xc5, 0xaa, 0x42, 0xb3, 0x3f, 0x65, + 0xb1, 0x72, 0x7b, 0x2a, 0xf1, 0x00, 0xc9, 0x0d, 0xe0, 0x01, 0xb2, 0x02, 0x15, 0xcc, 0xaa, 0x41, + 0x43, 0xd6, 0x08, 0x61, 0xe2, 0x42, 0x79, 0xf9, 0xf8, 0xa8, 0x7a, 0xc9, 0x61, 0x69, 0x76, 0x28, + 0x12, 0xed, 0x6e, 0xe0, 0x29, 0x3c, 0x7a, 0x28, 0xc9, 0x1f, 0x18, 0x30, 0x8e, 0xc0, 0xc5, 0x87, + 0xb4, 0x1d, 0x21, 0xb3, 0x82, 0x38, 0xa4, 0x89, 0x6f, 0xaa, 0x34, 0xa2, 0xc0, 0x6b, 0xef, 0xe2, + 0x46, 0x52, 0x58, 0xdf, 0x61, 0xad, 0xf0, 0x67, 0x47, 0xd5, 0x77, 0x3f, 0xc9, 0xed, 0x17, 0xc1, + 0x2a, 0x64, 0x86, 0x3c, 0x2f, 0x28, 0xc5, 0x6c, 0x53, 0xc5, 0x4c, 0x95, 0x88, 0xfc, 0x38, 0x9c, + 0x5f, 0x6c, 0x3b, 0x3b, 0x2d, 0x3a, 0xef, 0xb7, 0x23, 0xaf, 0xdd, 0xf5, 0xbb, 0x61, 0xdd, 0x69, + 0xee, 0x77, 0x3b, 0xa1, 0xd8, 0xec, 0xc4, 0x9a, 0x37, 0xe3, 0x44, 0x7b, 0x87, 0xa7, 0x2a, 0x2c, + 0xfb, 0x31, 0x20, 0x4b, 0x30, 0xc9, 0x93, 0x6a, 0xdd, 0xc8, 0x6f, 0x34, 0x9d, 0x96, 0xd7, 0xde, + 0xc5, 0x3d, 0xd0, 0x62, 0xfd, 0x22, 0xb3, 0x2d, 0x9d, 0x6e, 0xe4, 0xdb, 0x21, 0x87, 0x2b, 0xfc, + 0x7a, 0x89, 0xc8, 0x32, 0x4c, 0x58, 0xd4, 0x71, 0xef, 0x3b, 0x8f, 0xe7, 0x9d, 0x8e, 0xd3, 0xf4, + 0xa2, 0x43, 0xb4, 0xcc, 0xf2, 0xf5, 0xea, 0xf1, 0x51, 0xf5, 0x85, 0x80, 0x3a, 0xae, 0x7d, 0xe0, + 0x3c, 0xb6, 0x9b, 0x22, 0x51, 0x61, 0x96, 0xa6, 0x8b, 0x59, 0x79, 0xed, 0x98, 0x55, 0x29, 0xcd, + 0xca, 0x6b, 0xf7, 0x67, 0x95, 0xd0, 0x49, 0x56, 0x1b, 0x4e, 0xb0, 0x4b, 0x23, 0xbe, 0x49, 0x08, + 0x97, 0x8d, 0xab, 0x86, 0xc2, 0x2a, 0xc2, 0x34, 0x1b, 0x37, 0x0c, 0xd3, 0xac, 0x14, 0x3a, 0x36, + 0xf2, 0xb6, 0x03, 0x2f, 0xa2, 0x6a, 0x0d, 0x47, 0xb1, 0x58, 0xd8, 0xfe, 0xb8, 0x4d, 0xda, 0xaf, + 0x8a, 0x3d, 0x94, 0x09, 0x37, 0xa5, 0x92, 0xe5, 0x1e, 0x6e, 0xd9, 0xb5, 0xec, 0xa1, 0x8c, 0xb9, + 0xa9, 0xf5, 0x1c, 0xc3, 0x7a, 0x2a, 0xdc, 0xfa, 0x54, 0xb4, 0x87, 0x92, 0xac, 0xb2, 0x46, 0x8b, + 0x68, 0x9b, 0x8d, 0x68, 0xb1, 0x49, 0x3a, 0x8e, 0x45, 0x7b, 0x55, 0xd8, 0xd4, 0x95, 0x40, 0x26, + 0xdb, 0x19, 0x5b, 0xa6, 0x69, 0xe2, 0x0f, 0x0b, 0xc5, 0xa1, 0xca, 0xb0, 0x55, 0xe1, 0x43, 0x3e, + 0x62, 0x03, 0x07, 0x65, 0xb1, 0xf9, 0x3b, 0x39, 0xb8, 0x20, 0xc5, 0x31, 0x8d, 0x1e, 0xf9, 0xc1, + 0xbe, 0xd7, 0xde, 0x7d, 0xce, 0xa5, 0xea, 0x1d, 0x4d, 0xaa, 0xbe, 0x9a, 0x5a, 0xe1, 0x52, 0xb5, + 0x3c, 0x41, 0xb4, 0xfe, 0xf5, 0x08, 0xbc, 0x78, 0x22, 0x15, 0xf9, 0x88, 0xad, 0x82, 0x1e, 0x6d, + 0x47, 0xcb, 0x6e, 0x8b, 0x32, 0x33, 0xcc, 0xef, 0x46, 0x62, 0x33, 0xfb, 0x95, 0xe3, 0xa3, 0xea, + 0x14, 0xbf, 0xc0, 0x61, 0x7b, 0x6e, 0x8b, 0xda, 0x11, 0x4f, 0xd6, 0xba, 0xa9, 0x97, 0x9a, 0xb1, + 0x8c, 0xaf, 0x93, 0x2d, 0xb7, 0x23, 0x1a, 0x3c, 0x74, 0xb8, 0x1f, 0xbb, 0x60, 0xb9, 0x4f, 0x69, + 0xc7, 0x76, 0x58, 0xaa, 0xed, 0x89, 0x64, 0x9d, 0x65, 0x0f, 0x35, 0xb9, 0xa3, 0xb0, 0x9c, 0x67, + 0xc6, 0xc1, 0x7d, 0xe7, 0xb1, 0xd0, 0x78, 0x71, 0x7f, 0x55, 0x61, 0xc9, 0x9d, 0xe8, 0x0e, 0x9c, + 0xc7, 0x56, 0x2f, 0x09, 0xf9, 0x06, 0x9c, 0x15, 0x82, 0x9b, 0x09, 0xb1, 0xc0, 0x6f, 0xc9, 0x1a, + 0x17, 0x90, 0xd7, 0xeb, 0xc7, 0x47, 0xd5, 0xf3, 0x42, 0xec, 0xdb, 0x4d, 0x8e, 0x91, 0x59, 0xeb, + 0x6c, 0x2e, 0x64, 0x83, 0x2d, 0x64, 0xa9, 0xe6, 0xb8, 0x4f, 0xc3, 0xd0, 0xd9, 0x95, 0xda, 0x31, + 0x3f, 0x51, 0x52, 0x1a, 0xd3, 0x3e, 0xe0, 0xe9, 0x56, 0x5f, 0x4a, 0xb2, 0x04, 0xe3, 0xdb, 0x74, + 0x47, 0xed, 0x9f, 0xe1, 0x78, 0x8a, 0x57, 0x1e, 0xd1, 0x9d, 0xfe, 0x9d, 0x93, 0xa2, 0x23, 0x1e, + 0x4c, 0xae, 0x07, 0xfe, 0xe3, 0x43, 0x66, 0xea, 0xd1, 0x36, 0x0d, 0xd0, 0x7b, 0x6b, 0x04, 0xb7, + 0xab, 0x66, 0x12, 0xcd, 0x52, 0x4f, 0xaf, 0xbf, 0x7c, 0x7c, 0x54, 0x7d, 0xb1, 0xc3, 0xc0, 0x76, + 0x4b, 0xc0, 0xed, 0xd4, 0x6d, 0xae, 0x5e, 0xae, 0xe4, 0x27, 0x61, 0xc2, 0xf2, 0xbb, 0x91, 0xd7, + 0xde, 0x6d, 0x44, 0x81, 0x13, 0xd1, 0x5d, 0x2e, 0xc8, 0x13, 0x37, 0xb1, 0x54, 0x2a, 0xdf, 0x98, + 0x0e, 0x38, 0xd0, 0x0e, 0x05, 0x54, 0x93, 0xa4, 0x3a, 0x01, 0xf9, 0x05, 0x03, 0x4a, 0xb5, 0x5d, + 0xda, 0x66, 0xed, 0xb4, 0x27, 0x7c, 0x5f, 0xe5, 0x45, 0xc9, 0x18, 0xce, 0xbd, 0x6a, 0xe2, 0x4c, + 0x6a, 0xc7, 0x47, 0xd5, 0x0b, 0xdc, 0xfd, 0x26, 0x23, 0x8f, 0xbf, 0x3c, 0xaa, 0x5e, 0x3e, 0x74, + 0x0e, 0x5a, 0x5f, 0x32, 0xfb, 0xa2, 0x98, 0x4b, 0x67, 0xac, 0x24, 0x57, 0xf2, 0xb7, 0x0c, 0x28, + 0x63, 0xdd, 0xd7, 0x29, 0x65, 0x8b, 0xb2, 0xb8, 0x17, 0xf0, 0xb2, 0xda, 0x98, 0x22, 0xe9, 0xd3, + 0x28, 0x89, 0x96, 0x77, 0xbd, 0x02, 0xe3, 0x7a, 0x26, 0x66, 0x07, 0xce, 0xf7, 0x69, 0x09, 0xb2, + 0xa9, 0xe9, 0x55, 0xb5, 0x5e, 0xbd, 0xea, 0x2f, 0x8f, 0xaa, 0x67, 0x45, 0x11, 0x34, 0xb8, 0xf9, + 0xc3, 0xa3, 0x2a, 0xd1, 0x99, 0x25, 0xdb, 0xda, 0xe6, 0x5f, 0x19, 0x70, 0xb1, 0x7f, 0xad, 0x3f, + 0xa5, 0x5c, 0xc9, 0x2f, 0x1a, 0x30, 0x8d, 0x15, 0x9d, 0xf7, 0xdb, 0x6d, 0xda, 0x8c, 0x70, 0x66, + 0x76, 0xdb, 0x91, 0x90, 0x3a, 0x6b, 0xc7, 0x47, 0xd5, 0xcb, 0x0e, 0x4b, 0x67, 0x93, 0x5a, 0x20, + 0xd8, 0xa9, 0xad, 0x87, 0xbf, 0x3c, 0xaa, 0xbe, 0xce, 0x73, 0x3e, 0x0d, 0xd3, 0xb4, 0x32, 0x33, + 0x33, 0x7f, 0x2b, 0x07, 0x33, 0x42, 0x2e, 0x58, 0xb4, 0xe9, 0x07, 0xee, 0xf3, 0xbf, 0x0e, 0x2d, + 0x6a, 0xeb, 0xd0, 0x2b, 0xb1, 0xa7, 0x5d, 0x56, 0x25, 0x4f, 0x58, 0x86, 0xfe, 0xa9, 0x01, 0x97, + 0x4e, 0x22, 0x62, 0xad, 0x13, 0x7b, 0x92, 0x96, 0x7a, 0x3c, 0x46, 0x3b, 0x30, 0x85, 0x63, 0x0a, + 0x4f, 0x32, 0xc2, 0x25, 0x3f, 0x8c, 0x70, 0x3b, 0x39, 0xa7, 0x79, 0xb6, 0xd4, 0x7d, 0xbf, 0x85, + 0x8a, 0x47, 0xfd, 0x0d, 0xa6, 0x5f, 0xfc, 0xd9, 0x51, 0x15, 0x18, 0x68, 0x0d, 0x4f, 0xc7, 0x99, + 0x12, 0xca, 0x45, 0x18, 0x1e, 0x94, 0x84, 0x36, 0xba, 0x23, 0xed, 0xd3, 0xc3, 0xd0, 0xca, 0x62, + 0x8d, 0x5b, 0x86, 0xb5, 0x6e, 0xb4, 0xb7, 0x1e, 0xd0, 0x07, 0x34, 0xa0, 0xed, 0x26, 0xfd, 0x8c, + 0x6d, 0x19, 0xea, 0x95, 0x1b, 0xc8, 0x5e, 0xfe, 0xbf, 0xc3, 0x30, 0x9d, 0x45, 0xc6, 0xda, 0x45, + 0x99, 0xd4, 0xe9, 0xbb, 0xe8, 0xbf, 0x68, 0x40, 0xb9, 0x41, 0x9b, 0x7e, 0xdb, 0xbd, 0xe3, 0x34, + 0x23, 0x5f, 0xfa, 0x08, 0xd9, 0x7c, 0xa9, 0x65, 0x70, 0xfb, 0x01, 0x26, 0x68, 0x5b, 0x55, 0x5f, + 0x1e, 0xcc, 0x32, 0x6a, 0xfa, 0xe8, 0x7a, 0x1d, 0xb1, 0x31, 0x99, 0x64, 0x81, 0x92, 0x41, 0xcb, + 0x94, 0xd4, 0x61, 0x4c, 0x4c, 0x57, 0x5f, 0x75, 0x24, 0xbe, 0x74, 0x7c, 0x54, 0x9d, 0x69, 0xca, + 0x84, 0xf4, 0x96, 0x95, 0x4e, 0x42, 0x6e, 0x41, 0x7e, 0x73, 0xee, 0x8e, 0xe8, 0x03, 0xe9, 0x72, + 0xb9, 0x39, 0x77, 0x07, 0x37, 0x5f, 0x98, 0x42, 0x3b, 0xd6, 0x9d, 0x7b, 0xa0, 0x6e, 0xca, 0x6f, + 0xce, 0xdd, 0x21, 0x6b, 0x30, 0x69, 0xd1, 0x9f, 0xea, 0x7a, 0x01, 0x15, 0x13, 0xe0, 0xfe, 0x9d, + 0x1a, 0xf6, 0x45, 0x91, 0x2f, 0xac, 0x01, 0x4f, 0x94, 0xc6, 0xa6, 0x7d, 0xf0, 0x40, 0xbd, 0x7f, + 0xd9, 0x4b, 0x4b, 0x7e, 0x0e, 0xce, 0x2e, 0x78, 0xa1, 0x28, 0x33, 0xdf, 0x0d, 0x77, 0xf1, 0x60, + 0x7c, 0xb8, 0xcf, 0x74, 0xf8, 0x62, 0xe6, 0x74, 0x78, 0xd9, 0x8d, 0x99, 0xd8, 0x7c, 0xab, 0xdd, + 0x4d, 0x7b, 0x60, 0x67, 0xe7, 0x43, 0x3e, 0x86, 0x71, 0xdc, 0x7e, 0xc4, 0x03, 0x02, 0x74, 0xca, + 0x1f, 0xe9, 0x93, 0xf3, 0xe7, 0x33, 0x73, 0xbe, 0x88, 0xbb, 0x99, 0x36, 0x1e, 0x33, 0xa0, 0x03, + 0xbf, 0x66, 0xb4, 0x6a, 0x9c, 0xc9, 0x87, 0x30, 0x21, 0xb4, 0xa0, 0xb5, 0x07, 0x1b, 0x7b, 0x74, + 0xc1, 0x39, 0x14, 0x5e, 0x31, 0x68, 0x90, 0x08, 0xd5, 0xc9, 0xf6, 0x1f, 0xd8, 0xd1, 0x1e, 0xb5, + 0x5d, 0x47, 0xd3, 0x17, 0x52, 0x84, 0xe4, 0x67, 0x60, 0x74, 0xc5, 0xc7, 0x93, 0x50, 0x14, 0x35, + 0x25, 0xe4, 0xf3, 0x55, 0xbc, 0x7f, 0xcd, 0xc1, 0x29, 0xad, 0xe6, 0x87, 0x47, 0xd5, 0x77, 0x9e, + 0x74, 0x14, 0x2a, 0x19, 0x58, 0x6a, 0x6e, 0x64, 0x1e, 0x8a, 0xdb, 0x74, 0x87, 0xd5, 0x36, 0x7d, + 0x77, 0x50, 0x82, 0xb9, 0xbc, 0x78, 0x24, 0xbe, 0xd4, 0x63, 0x46, 0x89, 0x61, 0xfe, 0x2b, 0x03, + 0x47, 0x20, 0xb9, 0x8e, 0x9e, 0x89, 0xf1, 0x9d, 0x06, 0xdc, 0xea, 0x70, 0x3a, 0x1d, 0xfd, 0x56, + 0x02, 0x47, 0x21, 0x6f, 0xc0, 0xf0, 0x1d, 0xa7, 0x49, 0x23, 0xb9, 0x81, 0x8e, 0xc8, 0x0f, 0x10, + 0xa2, 0xee, 0x8b, 0x70, 0x1c, 0xf2, 0x15, 0x98, 0x5e, 0xa0, 0x0f, 0xbd, 0x26, 0xad, 0x45, 0x11, + 0x0d, 0x79, 0x6d, 0xe7, 0x6b, 0xfc, 0xa4, 0xb9, 0x54, 0x7f, 0x95, 0xad, 0xa3, 0x2e, 0xa6, 0xdb, + 0x4e, 0x82, 0x60, 0x37, 0x1d, 0x95, 0x57, 0x26, 0x07, 0xf3, 0x7f, 0x19, 0x49, 0x0b, 0x90, 0xd7, + 0xa1, 0x60, 0xad, 0xc7, 0xe5, 0xe7, 0x87, 0xc8, 0xa9, 0xe2, 0x23, 0x02, 0xf9, 0x1a, 0x9c, 0x55, + 0xf8, 0xe0, 0xe0, 0xa0, 0x2e, 0x2b, 0x10, 0xaf, 0xcc, 0x6b, 0x78, 0x6a, 0xa8, 0x94, 0xc4, 0xe1, + 0x18, 0xa9, 0x12, 0x65, 0xf3, 0x60, 0x95, 0x55, 0x12, 0x16, 0x68, 0xdb, 0xe3, 0xbc, 0x95, 0xca, + 0xaa, 0xbc, 0x5d, 0x44, 0x48, 0x57, 0x36, 0x8b, 0xc3, 0x87, 0x85, 0x62, 0xa1, 0x32, 0xc4, 0x74, + 0x21, 0x25, 0x60, 0xc5, 0xf3, 0xb9, 0x7a, 0xdc, 0xd6, 0x56, 0x8f, 0x69, 0x41, 0x1a, 0xd7, 0x8a, + 0xa5, 0x65, 0xae, 0xf8, 0x13, 0x30, 0xa6, 0x21, 0xa1, 0x0f, 0xf6, 0x66, 0x48, 0x03, 0xbe, 0x61, + 0xfd, 0xd9, 0xf2, 0xc1, 0x8e, 0xeb, 0x35, 0x90, 0x6b, 0xed, 0x9f, 0x1b, 0x30, 0x91, 0xa2, 0x60, + 0xad, 0xc1, 0x40, 0x6a, 0x6b, 0x74, 0x43, 0x1a, 0x58, 0x08, 0xe5, 0x1e, 0x9b, 0x2b, 0xba, 0xc7, + 0x66, 0xcb, 0x62, 0x30, 0xf2, 0x65, 0x18, 0xda, 0x44, 0xf3, 0x52, 0x77, 0xfa, 0x89, 0xf9, 0x63, + 0x22, 0x9f, 0x61, 0x5d, 0xf6, 0x57, 0x15, 0x10, 0x98, 0x46, 0x1a, 0x30, 0x32, 0x1f, 0x50, 0x0c, + 0x59, 0x51, 0x18, 0xfc, 0x74, 0xb6, 0xc9, 0x49, 0xd2, 0xa7, 0xb3, 0x82, 0x93, 0xf9, 0x9b, 0x39, + 0x20, 0x49, 0x1d, 0x69, 0x33, 0xa0, 0x51, 0xf8, 0xdc, 0x76, 0xfa, 0x07, 0x5a, 0xa7, 0xbf, 0xd8, + 0xd3, 0xe9, 0xbc, 0x7a, 0x03, 0xf5, 0xfd, 0x1f, 0x1b, 0x70, 0x2e, 0x9b, 0x90, 0xbc, 0x02, 0xc3, + 0x6b, 0x1b, 0xeb, 0xd2, 0x6f, 0x4c, 0x54, 0xc5, 0xef, 0xa0, 0x96, 0x6a, 0x89, 0x24, 0xf2, 0x26, + 0x0c, 0x7f, 0x64, 0xcd, 0xb3, 0xe5, 0x4b, 0xb9, 0x3b, 0xf5, 0x53, 0x81, 0xdd, 0xd4, 0xed, 0x71, + 0x81, 0xa4, 0xf6, 0x6d, 0xfe, 0x99, 0xf5, 0xed, 0xb7, 0x72, 0x30, 0x51, 0x6b, 0x36, 0x69, 0x18, + 0x32, 0xe5, 0x84, 0x86, 0xd1, 0x73, 0xdb, 0xb1, 0xd9, 0x1e, 0x61, 0x5a, 0xdd, 0x06, 0xea, 0xd5, + 0x3f, 0x31, 0xe0, 0xac, 0xa4, 0x7a, 0xe8, 0xd1, 0x47, 0x1b, 0x7b, 0x01, 0x0d, 0xf7, 0xfc, 0x96, + 0x3b, 0xe8, 0x2d, 0x40, 0x5c, 0xa5, 0xbd, 0x56, 0x44, 0x03, 0xf5, 0xf4, 0xe2, 0x01, 0x42, 0xb4, + 0x55, 0x1a, 0x21, 0x64, 0x16, 0x46, 0x6a, 0x9d, 0x4e, 0xe0, 0x3f, 0xe4, 0xd3, 0x7e, 0x4c, 0x1c, + 0x56, 0x73, 0x90, 0x76, 0xb8, 0xcd, 0x41, 0xac, 0x18, 0x0b, 0xb4, 0xcd, 0xdd, 0xdd, 0xc7, 0x78, + 0x31, 0x5c, 0xda, 0x56, 0xb5, 0x25, 0x4c, 0x37, 0xbf, 0x59, 0x80, 0xb2, 0x5a, 0x11, 0x62, 0xc2, + 0x30, 0xf7, 0x5d, 0x52, 0x7d, 0x48, 0x1c, 0x84, 0x58, 0x22, 0x25, 0x71, 0x09, 0xcb, 0x9d, 0xea, + 0x12, 0xb6, 0x0d, 0x63, 0xeb, 0x81, 0xdf, 0xf1, 0x43, 0xea, 0xf2, 0xa8, 0x43, 0x5c, 0x6a, 0x4d, + 0xc5, 0x7e, 0xd2, 0xbc, 0xcd, 0x59, 0x12, 0x57, 0xcd, 0x3b, 0x02, 0xdb, 0x4e, 0xc7, 0x24, 0xd2, + 0xf9, 0xf0, 0xd3, 0x1f, 0x27, 0x14, 0x77, 0x49, 0xe2, 0xd3, 0x1f, 0x06, 0xd1, 0x4f, 0x7f, 0x18, + 0x44, 0x9d, 0x16, 0x43, 0xcf, 0x6a, 0x5a, 0x90, 0xdf, 0x34, 0x60, 0xb4, 0xd6, 0x6e, 0x0b, 0x97, + 0x30, 0x79, 0x75, 0xff, 0x6c, 0x72, 0x02, 0xc4, 0x7d, 0x86, 0xf9, 0x01, 0xd0, 0xd7, 0xc5, 0x01, + 0xd0, 0x3b, 0x9f, 0xe8, 0x00, 0x68, 0x23, 0x70, 0xbc, 0x28, 0xc4, 0x93, 0xfe, 0x24, 0x43, 0xd5, + 0x2f, 0x5c, 0x29, 0x07, 0x79, 0x07, 0x2a, 0xf1, 0x78, 0x5c, 0x6e, 0xbb, 0xf4, 0x31, 0xe5, 0x1e, + 0x74, 0x63, 0xfc, 0x7e, 0xa9, 0x76, 0xb2, 0x95, 0x46, 0x34, 0xbf, 0x65, 0xc0, 0x39, 0x75, 0x40, + 0x34, 0xba, 0x3b, 0x07, 0x1e, 0x9a, 0x22, 0xe4, 0x06, 0x94, 0x44, 0x7f, 0xc5, 0x8a, 0x5c, 0x6f, + 0xa8, 0xaa, 0x04, 0x85, 0x2c, 0xb2, 0x2e, 0x62, 0x3c, 0x84, 0xdd, 0x3e, 0x95, 0x9a, 0x6e, 0x2c, + 0xa9, 0x3e, 0x23, 0x1a, 0xbb, 0x12, 0xe0, 0xb7, 0xde, 0x77, 0x0c, 0x62, 0xbe, 0x0f, 0x93, 0x7a, + 0x29, 0x1b, 0x14, 0x2f, 0x35, 0xca, 0xaa, 0x19, 0xd9, 0x55, 0x93, 0xe9, 0xe6, 0x36, 0x90, 0x1e, + 0xfa, 0x10, 0x4f, 0x31, 0x69, 0x24, 0x4f, 0xd9, 0xe5, 0x5e, 0x68, 0x0f, 0x62, 0x1c, 0xb4, 0x6d, + 0x54, 0x6d, 0x6e, 0x24, 0x35, 0xff, 0xa6, 0x04, 0x53, 0x19, 0xa2, 0xe3, 0x94, 0xa5, 0xbd, 0xaa, + 0x4f, 0x9e, 0x52, 0xec, 0x2e, 0x22, 0xa7, 0xcc, 0xfb, 0x32, 0x40, 0xd7, 0x09, 0x53, 0xe5, 0xa4, + 0xa8, 0x5d, 0x9f, 0xc6, 0xf2, 0xae, 0x7a, 0x74, 0x0d, 0x3d, 0x33, 0x8f, 0xae, 0x3a, 0x8c, 0x89, + 0x5a, 0x89, 0xa9, 0x3c, 0x9c, 0x98, 0xe8, 0x01, 0x4f, 0xb0, 0x7b, 0xa6, 0xb4, 0x4e, 0xc2, 0x79, + 0x84, 0x7e, 0xeb, 0x21, 0x15, 0x3c, 0x46, 0x54, 0x1e, 0x98, 0x90, 0xc9, 0x43, 0x21, 0x21, 0xff, + 0xc4, 0x00, 0x22, 0x20, 0xea, 0x7c, 0x2e, 0x9e, 0x34, 0x9f, 0xdd, 0x67, 0x33, 0x9f, 0x5f, 0x94, + 0x65, 0xcc, 0x9e, 0xd7, 0x19, 0xc5, 0x22, 0xff, 0xc8, 0x80, 0x49, 0xee, 0x56, 0xa4, 0x16, 0xb6, + 0x74, 0x52, 0x61, 0x9b, 0xcf, 0xa6, 0xb0, 0x97, 0x42, 0xcc, 0xb6, 0x4f, 0x59, 0x7b, 0x0b, 0x45, + 0x7e, 0x1c, 0x20, 0x9e, 0x51, 0xd2, 0x7d, 0xf5, 0x52, 0x86, 0x14, 0x88, 0x91, 0x92, 0x6b, 0xbb, + 0x51, 0x4c, 0xa7, 0x3a, 0x7c, 0x25, 0xdc, 0xc8, 0xcf, 0xc1, 0x34, 0x9b, 0x2f, 0x31, 0x44, 0x38, + 0x41, 0xce, 0x8c, 0x62, 0x2e, 0x5f, 0xe8, 0xbf, 0xb4, 0xdf, 0xc8, 0x22, 0xe3, 0x97, 0x88, 0x92, + 0x20, 0x0e, 0xd1, 0x81, 0x6a, 0xf2, 0x65, 0x51, 0xa0, 0xb7, 0x33, 0x96, 0x3e, 0x9c, 0x29, 0x63, + 0x9e, 0x99, 0xf2, 0xed, 0x82, 0x9c, 0x0b, 0x5c, 0xbe, 0x85, 0xfa, 0x2d, 0x20, 0x04, 0x91, 0x8f, + 0x80, 0x34, 0xba, 0xbb, 0xbb, 0x34, 0x8c, 0xa8, 0xcb, 0x61, 0x34, 0x08, 0x67, 0xc6, 0x50, 0x3e, + 0xe0, 0x96, 0x51, 0x28, 0x53, 0xed, 0x40, 0x26, 0xab, 0x83, 0xa4, 0x97, 0xf8, 0xe2, 0x0e, 0x5c, + 0xe8, 0x5b, 0xcd, 0x8c, 0x1b, 0x3e, 0xb3, 0xfa, 0x0d, 0x9f, 0x0b, 0xfd, 0xc4, 0x61, 0xa8, 0xde, + 0xf2, 0xf9, 0x3d, 0x23, 0x25, 0xff, 0x84, 0xb2, 0xc2, 0x63, 0x19, 0xf6, 0x5b, 0x20, 0x72, 0x18, + 0xde, 0x81, 0x4b, 0xc8, 0x5c, 0xa2, 0x24, 0x31, 0x09, 0xa9, 0x4a, 0x58, 0x94, 0x95, 0x4f, 0x29, + 0x0a, 0xcd, 0x7f, 0x6e, 0x00, 0xe1, 0x25, 0x9c, 0x77, 0x3a, 0xce, 0x8e, 0xd7, 0xf2, 0x22, 0x8f, + 0x86, 0xe4, 0x1e, 0x54, 0x04, 0x0b, 0x67, 0xa7, 0x45, 0x55, 0xe7, 0x3d, 0x71, 0xba, 0x1f, 0xa7, + 0xd9, 0x69, 0xb5, 0xa6, 0x87, 0xb0, 0x4f, 0xe7, 0xe5, 0x9e, 0xa2, 0xf3, 0xcc, 0x1f, 0x18, 0x70, + 0xa1, 0xb7, 0xd8, 0x22, 0xe7, 0xb8, 0xf1, 0x8c, 0x53, 0x1a, 0x2f, 0xab, 0x96, 0x39, 0xdc, 0x86, + 0x7c, 0x66, 0xb5, 0xcc, 0x27, 0xbb, 0x9a, 0x4f, 0x5e, 0xcb, 0x5f, 0xc9, 0x41, 0x79, 0xbd, 0xd5, + 0xdd, 0xf5, 0xda, 0x0b, 0x4e, 0xe4, 0x3c, 0xb7, 0x26, 0xc5, 0xdb, 0x9a, 0x49, 0x11, 0xbb, 0xeb, + 0xc5, 0x15, 0x1b, 0x2c, 0xae, 0x9c, 0x01, 0x13, 0x09, 0x09, 0x9f, 0xa5, 0x4b, 0x50, 0x60, 0x1f, + 0x42, 0x43, 0xb9, 0xdc, 0xc3, 0x18, 0xb1, 0x6e, 0xc4, 0xff, 0x84, 0x92, 0xaf, 0x47, 0xf3, 0x43, + 0x0e, 0x17, 0xbf, 0xc8, 0x83, 0x71, 0x3d, 0x79, 0xe0, 0xd0, 0x7f, 0x66, 0x40, 0x25, 0x5d, 0x13, + 0x72, 0x0f, 0x46, 0x18, 0x27, 0x2f, 0x0e, 0xec, 0xf5, 0x6a, 0x9f, 0x3a, 0xdf, 0x10, 0x68, 0xbc, + 0x78, 0xd8, 0xf8, 0x94, 0x43, 0x2c, 0xc9, 0xe1, 0xa2, 0x05, 0x65, 0x15, 0x2b, 0xa3, 0x74, 0x6f, + 0xe8, 0xa2, 0xe9, 0x5c, 0x76, 0x3b, 0xa8, 0xa5, 0xfe, 0x5d, 0xad, 0xd4, 0x42, 0x28, 0x0d, 0x1a, + 0xa1, 0x11, 0xef, 0x2b, 0xf2, 0x38, 0x34, 0xea, 0x38, 0x93, 0x21, 0x6b, 0xf4, 0xfb, 0x8a, 0x1c, + 0xc6, 0x6c, 0x11, 0x9e, 0x9f, 0x18, 0x67, 0x68, 0x8b, 0x74, 0x10, 0xa2, 0xea, 0xb3, 0x1c, 0xc7, + 0xfc, 0xbb, 0x79, 0x38, 0x97, 0x14, 0x8f, 0xc7, 0xab, 0x5c, 0x77, 0x02, 0xe7, 0x20, 0x3c, 0x65, + 0x06, 0x5c, 0xed, 0x29, 0x1a, 0xde, 0xc7, 0x97, 0x45, 0x53, 0x0a, 0x64, 0xa6, 0x0a, 0x84, 0x46, + 0x1c, 0x2f, 0x90, 0x2c, 0x06, 0xb9, 0x07, 0xf9, 0x06, 0x8d, 0xc4, 0xad, 0xdd, 0x2b, 0x3d, 0xad, + 0xaa, 0x96, 0xeb, 0x46, 0x83, 0x46, 0xbc, 0x13, 0xf9, 0xc5, 0x07, 0xaa, 0x5d, 0x44, 0x60, 0xea, + 0xf8, 0x36, 0x0c, 0x2f, 0x3e, 0xee, 0xd0, 0x66, 0x24, 0x2e, 0xeb, 0x5e, 0x3b, 0x99, 0x1f, 0xc7, + 0x55, 0xae, 0x04, 0x53, 0x04, 0xa8, 0x8d, 0xc5, 0x51, 0x2e, 0xde, 0x86, 0xa2, 0xcc, 0xfc, 0x89, + 0xae, 0xb6, 0xbe, 0x0d, 0xa3, 0x4a, 0x26, 0x4f, 0x34, 0xe8, 0xff, 0xc6, 0x80, 0x61, 0x26, 0xf4, + 0xb6, 0xde, 0x7a, 0x4e, 0x25, 0xd2, 0x2d, 0x4d, 0x22, 0x4d, 0x2a, 0x77, 0xb0, 0x70, 0x5e, 0xbe, + 0x75, 0x8a, 0x2c, 0x3a, 0x32, 0x00, 0x12, 0x64, 0x72, 0x17, 0x46, 0xf8, 0x41, 0x8e, 0x0c, 0x06, + 0xab, 0x5e, 0xea, 0x12, 0x29, 0x89, 0x96, 0xe3, 0x77, 0xd2, 0x6a, 0xa1, 0xa4, 0x26, 0x0b, 0x89, + 0xe3, 0xbb, 0x7a, 0x8b, 0x98, 0xb1, 0x99, 0xf7, 0xdb, 0xfc, 0x92, 0x4f, 0xa8, 0x04, 0x4d, 0xcb, + 0xf6, 0x80, 0xaf, 0x89, 0x8d, 0x8d, 0xfc, 0x49, 0x4c, 0xce, 0x09, 0x26, 0xd9, 0x7b, 0x1e, 0xdf, + 0x1e, 0xe5, 0xd7, 0x66, 0x64, 0xc1, 0xde, 0x83, 0xf2, 0x1d, 0x3f, 0x78, 0xe4, 0x04, 0x2e, 0x1e, + 0xf2, 0x63, 0x35, 0x8b, 0x78, 0xef, 0x60, 0xec, 0x01, 0x87, 0xdb, 0xe8, 0x20, 0xf0, 0xc3, 0xa3, + 0x6a, 0xa1, 0xee, 0xfb, 0x2d, 0x4b, 0x43, 0x27, 0x6b, 0x30, 0x76, 0xdf, 0x79, 0x2c, 0xce, 0xeb, + 0x36, 0x36, 0x56, 0x84, 0x0b, 0xc2, 0xb5, 0xe3, 0xa3, 0xea, 0x85, 0x03, 0xe7, 0x71, 0x7c, 0xce, + 0xd7, 0xdf, 0x37, 0x5f, 0xa7, 0x27, 0x1e, 0x8c, 0xaf, 0xfb, 0x41, 0x24, 0x32, 0x61, 0x3a, 0x6d, + 0xbe, 0xcf, 0x71, 0xdb, 0x6c, 0xe6, 0x71, 0xdb, 0x05, 0xa6, 0xc8, 0xdb, 0x0f, 0x62, 0x72, 0xed, + 0xae, 0xa7, 0xc6, 0x98, 0xbc, 0x07, 0x93, 0xf3, 0x34, 0x88, 0xbc, 0x07, 0x5e, 0xd3, 0x89, 0xe8, + 0x1d, 0x3f, 0x38, 0x70, 0x22, 0xb1, 0xa1, 0x82, 0x06, 0x75, 0x93, 0x72, 0x4e, 0x07, 0x4e, 0x64, + 0xf5, 0x62, 0x92, 0xaf, 0x65, 0xb9, 0x92, 0x0d, 0x61, 0xf5, 0xdf, 0x64, 0x4a, 0x41, 0x86, 0x2b, + 0x59, 0x9f, 0x26, 0xc8, 0x70, 0x2a, 0xdb, 0x3d, 0xe9, 0xd8, 0xb3, 0x58, 0xbf, 0x29, 0x8e, 0x60, + 0x4f, 0x3f, 0xd6, 0x8c, 0xfb, 0xad, 0xcf, 0xf1, 0xe6, 0x1c, 0xe4, 0xeb, 0xeb, 0x77, 0x70, 0x8b, + 0x44, 0x1c, 0x33, 0xd2, 0xf6, 0x9e, 0xd3, 0x6e, 0xa2, 0x2e, 0x23, 0x7c, 0x17, 0x54, 0x81, 0x57, + 0x5f, 0xbf, 0x43, 0x1c, 0x98, 0x5a, 0xa7, 0xc1, 0x81, 0x17, 0x7d, 0xe5, 0xe6, 0x4d, 0xa5, 0xa3, + 0x8a, 0x58, 0xb4, 0x59, 0x51, 0xb4, 0x6a, 0x07, 0x51, 0xec, 0xc7, 0x37, 0x6f, 0x66, 0x76, 0x47, + 0x5c, 0xb0, 0x2c, 0x5e, 0x64, 0x11, 0xc6, 0xef, 0x3b, 0x8f, 0x13, 0x97, 0x93, 0x50, 0x38, 0xb3, + 0xbe, 0x28, 0x07, 0x56, 0xe2, 0xaf, 0xa2, 0xce, 0xb7, 0x14, 0x11, 0x79, 0x17, 0x46, 0x93, 0xe1, + 0x15, 0xe2, 0x51, 0x64, 0x9e, 0xfb, 0xe8, 0x2a, 0x83, 0x53, 0xdb, 0x4b, 0x52, 0xd0, 0xc9, 0x66, + 0x6c, 0xa2, 0x73, 0x85, 0x54, 0x44, 0xf7, 0x99, 0x55, 0x4d, 0x74, 0x07, 0x53, 0xb4, 0x6a, 0x4d, + 0xc4, 0x2a, 0x3a, 0xf7, 0xdc, 0xb1, 0x74, 0x2e, 0x8a, 0xe5, 0xbf, 0x1e, 0xf8, 0x07, 0x9d, 0x08, + 0x5d, 0x58, 0x53, 0x96, 0x7f, 0x07, 0x53, 0x32, 0x2c, 0x7f, 0x4e, 0x92, 0x7d, 0xce, 0x3e, 0xf6, + 0x14, 0xe7, 0xec, 0x14, 0x0a, 0x2b, 0x7e, 0x73, 0x1f, 0x7d, 0x56, 0x4b, 0xf5, 0x8f, 0x98, 0xfc, + 0x68, 0xf9, 0xcd, 0xfd, 0x67, 0x77, 0x3e, 0x8c, 0xec, 0xc9, 0x2a, 0xab, 0x3b, 0x1b, 0x56, 0x22, + 0xeb, 0x99, 0x09, 0xed, 0xa4, 0x4d, 0x4b, 0xe3, 0x8a, 0x0a, 0x1f, 0x85, 0xb2, 0x22, 0x96, 0x4e, + 0x4e, 0x28, 0x54, 0x16, 0x68, 0xb8, 0x1f, 0xf9, 0x9d, 0xf9, 0x96, 0xd7, 0xd9, 0xf1, 0x9d, 0xc0, + 0x9d, 0xa9, 0xf4, 0x11, 0x18, 0xaf, 0x67, 0x0a, 0x8c, 0x49, 0x97, 0xd3, 0xdb, 0x4d, 0xc9, 0xc0, + 0xea, 0x61, 0x49, 0xbe, 0x06, 0xe3, 0x6c, 0xb6, 0x2c, 0x3e, 0x8e, 0x68, 0x9b, 0x0f, 0xa5, 0x49, + 0x5c, 0xea, 0xa7, 0x95, 0x5b, 0xaf, 0x71, 0x22, 0x1f, 0xa4, 0x28, 0x3d, 0x68, 0x4c, 0xa0, 0x0e, + 0x52, 0x9d, 0x95, 0xf9, 0xe3, 0xa9, 0x36, 0x21, 0xcb, 0x30, 0x22, 0x4a, 0x20, 0x56, 0x9d, 0xde, + 0xba, 0xbc, 0x98, 0x59, 0x97, 0x11, 0x51, 0x17, 0x4b, 0xd2, 0x9b, 0xff, 0xc6, 0x80, 0x31, 0x2d, + 0x3b, 0x72, 0x5b, 0x71, 0x5f, 0x49, 0xfc, 0x20, 0x35, 0x9c, 0xcc, 0x47, 0x16, 0x6e, 0x0b, 0x9f, + 0xa5, 0x5c, 0x7f, 0xba, 0xcc, 0xf8, 0x77, 0x32, 0x0a, 0x45, 0xfe, 0xe4, 0x28, 0x14, 0x85, 0x3e, + 0x51, 0x28, 0xbe, 0x3d, 0x06, 0xe3, 0xfa, 0x02, 0xc7, 0x34, 0xce, 0x15, 0x7f, 0xd7, 0x6b, 0x4b, + 0xbb, 0x95, 0xc7, 0x55, 0x41, 0x88, 0xf6, 0x62, 0x01, 0x42, 0xc8, 0x6b, 0x00, 0xf1, 0xd1, 0xac, + 0x34, 0x4d, 0xc5, 0xfb, 0x0a, 0x4a, 0x02, 0xf9, 0x09, 0x80, 0x55, 0xdf, 0xa5, 0x71, 0x68, 0x9e, + 0x13, 0x36, 0x94, 0x5e, 0x17, 0x1b, 0x4a, 0xe2, 0x4d, 0x84, 0xe3, 0xa3, 0xea, 0xd9, 0xb6, 0xef, + 0xd2, 0xde, 0x98, 0x3c, 0x0a, 0x47, 0xf2, 0x25, 0x18, 0xb2, 0xba, 0x2d, 0x2a, 0x23, 0xc5, 0x8c, + 0xca, 0x01, 0xdf, 0x6d, 0x29, 0xb1, 0x52, 0x83, 0x6e, 0xfa, 0x1c, 0x81, 0x01, 0xc8, 0x07, 0x00, + 0xf7, 0xba, 0x3b, 0xf4, 0x6e, 0xe0, 0x77, 0x3b, 0xf2, 0x2a, 0x3a, 0x9a, 0xb1, 0xfb, 0x71, 0x30, + 0x32, 0x7b, 0x17, 0x13, 0xd5, 0xcc, 0x13, 0x12, 0xb2, 0x06, 0x23, 0x42, 0x7c, 0x88, 0x7d, 0xfa, + 0x97, 0xb2, 0x76, 0x88, 0x14, 0x1d, 0x42, 0x84, 0x6e, 0x41, 0xb0, 0xbe, 0x69, 0xc3, 0xcd, 0xf0, + 0x77, 0xa1, 0xc4, 0xd8, 0x33, 0x53, 0x3b, 0x14, 0x6b, 0x07, 0x3a, 0xb4, 0x2a, 0x05, 0x62, 0x66, + 0xb9, 0x16, 0x75, 0x2e, 0x26, 0x20, 0x5f, 0xc3, 0x60, 0x4b, 0xa2, 0xa9, 0x4f, 0xdc, 0x68, 0xbc, + 0xd2, 0xd3, 0xd4, 0xd3, 0x4e, 0xa7, 0x93, 0x11, 0xd2, 0x2e, 0xe6, 0x47, 0x76, 0xe3, 0x4b, 0x5f, + 0x71, 0xc0, 0xec, 0x13, 0x32, 0xb8, 0xde, 0x93, 0xc1, 0x8c, 0xbc, 0xc7, 0xd4, 0x1b, 0x62, 0x49, + 0xe3, 0x4b, 0x3a, 0x50, 0x49, 0x82, 0xc1, 0x89, 0xbc, 0xe0, 0xa4, 0xbc, 0xde, 0xec, 0xc9, 0x4b, + 0xed, 0xc0, 0x9e, 0xec, 0x7a, 0xb8, 0x13, 0x37, 0x09, 0x6e, 0x2c, 0xf2, 0x1b, 0x3d, 0x29, 0xbf, + 0xd7, 0x7a, 0xf2, 0x9b, 0x72, 0x77, 0x7a, 0xf3, 0x49, 0xf1, 0x24, 0xef, 0xc2, 0x98, 0x84, 0xe0, + 0xfc, 0xc0, 0x0d, 0x3e, 0xa1, 0xdf, 0xbb, 0x3b, 0xe8, 0x34, 0xa6, 0xc7, 0x17, 0x52, 0x91, 0x55, + 0x6a, 0x3e, 0x3a, 0xc6, 0x34, 0xea, 0xf4, 0xa8, 0xd0, 0x91, 0xc9, 0x57, 0x61, 0x74, 0xf9, 0x80, + 0x55, 0xc4, 0x6f, 0x3b, 0x11, 0xc5, 0xc5, 0x28, 0xd9, 0x34, 0x55, 0x52, 0x94, 0xa1, 0xca, 0x23, + 0x95, 0x26, 0x49, 0xea, 0x62, 0xae, 0x50, 0xb0, 0xc6, 0xe3, 0xdb, 0x2f, 0x62, 0x0c, 0x87, 0x62, + 0xe9, 0x79, 0x31, 0x63, 0xe3, 0x52, 0x61, 0x8f, 0xb2, 0x9c, 0xef, 0xea, 0xd8, 0x62, 0x42, 0x68, + 0x8d, 0xa7, 0xf3, 0x24, 0xef, 0xc1, 0xa8, 0xb8, 0x62, 0x5b, 0xb3, 0x56, 0xc3, 0x99, 0x0a, 0x56, + 0x1e, 0x23, 0x0a, 0xca, 0xdb, 0xb8, 0xb6, 0x13, 0xa4, 0x4e, 0xaf, 0x12, 0x7c, 0xf2, 0x15, 0x98, + 0xde, 0xf6, 0xda, 0xae, 0xff, 0x28, 0x14, 0x02, 0x5c, 0x08, 0xba, 0xc9, 0xc4, 0x47, 0xe7, 0x11, + 0x4f, 0xb7, 0xe5, 0xb2, 0xd5, 0x23, 0xf8, 0x32, 0x39, 0x90, 0x9f, 0xed, 0xe1, 0xcc, 0x47, 0x10, + 0x39, 0x69, 0x04, 0xcd, 0xf5, 0x8c, 0xa0, 0xde, 0xec, 0xd3, 0xc3, 0x29, 0x33, 0x1b, 0xe2, 0x03, + 0xd1, 0x75, 0x8e, 0x0f, 0x7d, 0xaf, 0x3d, 0x33, 0xa5, 0x3d, 0x47, 0x13, 0xbb, 0xcc, 0x22, 0xde, + 0xba, 0xdf, 0xf2, 0x9a, 0x87, 0x75, 0xf3, 0xf8, 0xa8, 0xfa, 0x52, 0x5a, 0x9b, 0xf9, 0xd8, 0xd7, + 0x36, 0x17, 0x32, 0x58, 0x93, 0xaf, 0x42, 0x99, 0xfd, 0xc6, 0xaa, 0xdf, 0xb4, 0x76, 0xd4, 0xa5, + 0x60, 0x8a, 0x7c, 0xb0, 0x8f, 0xf0, 0x0e, 0x70, 0x86, 0x56, 0xa8, 0xb1, 0x32, 0x7f, 0x60, 0xc0, + 0x74, 0x56, 0x59, 0x4f, 0x09, 0xb8, 0x64, 0xa6, 0x0e, 0xbd, 0x71, 0x5f, 0x82, 0x1f, 0x7a, 0xc7, + 0x47, 0xdd, 0x55, 0x18, 0x62, 0xb6, 0xb2, 0x74, 0xca, 0xc2, 0xe5, 0x90, 0xd9, 0xd3, 0xa1, 0xc5, + 0xe1, 0x0c, 0x81, 0xbb, 0x7a, 0xb3, 0xf5, 0x72, 0x88, 0x23, 0xa0, 0xbf, 0xb6, 0xc5, 0xe1, 0x0c, + 0x81, 0x2d, 0xbb, 0x72, 0x99, 0x40, 0x04, 0xb6, 0x1a, 0x87, 0x16, 0x87, 0x93, 0x2b, 0x30, 0xb2, + 0xd6, 0x5e, 0xa1, 0xce, 0x43, 0x2a, 0x4e, 0x9c, 0x70, 0x1f, 0xc5, 0x6f, 0xdb, 0x2d, 0x06, 0xb3, + 0x64, 0xa2, 0xf9, 0x1d, 0x03, 0x26, 0x7b, 0x9a, 0xe9, 0xf4, 0x98, 0x52, 0x27, 0x1f, 0xef, 0x0d, + 0x52, 0x3f, 0x5e, 0xfc, 0x42, 0x76, 0xf1, 0xcd, 0xbf, 0xc8, 0xc3, 0xf9, 0x3e, 0xab, 0x56, 0x72, + 0x34, 0x6f, 0x9c, 0x7a, 0x34, 0xff, 0x75, 0xb6, 0x4a, 0x38, 0xde, 0x41, 0xb8, 0xe1, 0x27, 0x25, + 0x4e, 0x4e, 0x31, 0x30, 0x4d, 0x06, 0x6d, 0x91, 0x01, 0x46, 0x2e, 0x34, 0x91, 0xc2, 0x8e, 0xfc, + 0x9e, 0x3d, 0x63, 0x9d, 0x59, 0xcf, 0xe1, 0x78, 0xfe, 0x47, 0xe4, 0x70, 0x5c, 0x3f, 0x92, 0x2a, + 0x3c, 0xd3, 0x23, 0xa9, 0xec, 0x4d, 0xf2, 0xa1, 0xa7, 0x39, 0x0a, 0xf8, 0x77, 0xa9, 0xe3, 0xf8, + 0x1f, 0xc5, 0xae, 0xbe, 0x06, 0x43, 0xdb, 0x7b, 0x34, 0x90, 0xfa, 0x2d, 0x16, 0xe4, 0x11, 0x03, + 0xa8, 0x05, 0x41, 0x0c, 0xf3, 0x67, 0xa0, 0xac, 0x66, 0x86, 0x73, 0x99, 0x7d, 0x8b, 0xc9, 0xc4, + 0xe7, 0x32, 0x03, 0x58, 0x1c, 0x7e, 0x6a, 0x88, 0xb6, 0xa4, 0x15, 0xf2, 0xa7, 0xb5, 0x82, 0xf9, + 0x6f, 0x0d, 0x28, 0x60, 0x84, 0x8a, 0xb7, 0xa0, 0x24, 0xb7, 0x4a, 0xd5, 0xa8, 0x0d, 0x53, 0x72, + 0x27, 0x35, 0xd4, 0xfd, 0x19, 0x04, 0x90, 0x65, 0xb5, 0x45, 0x83, 0x1d, 0xcd, 0xed, 0xe5, 0x21, + 0x03, 0xa8, 0x59, 0x21, 0xc6, 0x13, 0x34, 0x09, 0xba, 0xf6, 0x08, 0xfb, 0x9e, 0x4f, 0x78, 0xee, + 0xda, 0xd3, 0x63, 0xd7, 0x4b, 0x2c, 0xf3, 0xb7, 0x0d, 0x38, 0x9b, 0xa9, 0x07, 0xb0, 0x5c, 0xb9, + 0xc2, 0xa1, 0x8c, 0x88, 0xb4, 0xb6, 0xc1, 0x31, 0x9e, 0xc4, 0x85, 0xe7, 0x09, 0xba, 0xf7, 0x65, + 0x28, 0xc5, 0xf6, 0x19, 0x99, 0x96, 0x5d, 0x87, 0xfb, 0x69, 0xd2, 0x98, 0xf9, 0x1b, 0x03, 0x86, + 0x59, 0x11, 0x9e, 0xdb, 0xdb, 0x15, 0xd9, 0xbb, 0xab, 0xac, 0x4a, 0x03, 0xdd, 0xa9, 0xf8, 0x83, + 0x61, 0x80, 0x04, 0x99, 0xec, 0xc0, 0xf8, 0xda, 0xf2, 0xc2, 0xfc, 0xb2, 0x4b, 0xdb, 0x11, 0x9e, + 0xf2, 0xa5, 0xc2, 0x3e, 0x30, 0xc3, 0x32, 0x68, 0x3b, 0x2d, 0x81, 0x70, 0x98, 0x4c, 0x4f, 0xdf, + 0x73, 0x9b, 0xb6, 0x17, 0xd3, 0xa9, 0x0a, 0x99, 0xce, 0x91, 0xe5, 0xd1, 0xa8, 0xdd, 0x5f, 0x51, + 0xf2, 0xc8, 0x0d, 0x98, 0x47, 0xe8, 0x1c, 0xb4, 0xfa, 0xe4, 0xa1, 0x73, 0x24, 0x7b, 0x50, 0xb9, + 0x8b, 0xb2, 0x5b, 0xc9, 0x25, 0x7f, 0x72, 0x2e, 0xaf, 0x88, 0x5c, 0x5e, 0xe0, 0x42, 0x3f, 0x3b, + 0x9f, 0x1e, 0xae, 0xc9, 0xc8, 0x2d, 0x9c, 0x3a, 0x72, 0xff, 0x7f, 0x03, 0x86, 0xf9, 0xe2, 0x10, + 0xbf, 0xc8, 0x92, 0xb9, 0xfc, 0x6c, 0x3f, 0x9b, 0xe5, 0xa7, 0x12, 0xe1, 0x3f, 0xd5, 0x00, 0xe7, + 0x69, 0x64, 0x21, 0xf5, 0xbc, 0x8b, 0xdc, 0x42, 0x47, 0xc5, 0x94, 0xa7, 0x24, 0x8e, 0x50, 0xfc, + 0x65, 0x17, 0x95, 0x0b, 0xc7, 0x50, 0x1f, 0x9b, 0x1c, 0x79, 0xca, 0xc7, 0x26, 0x57, 0xa0, 0x24, + 0x3c, 0x7b, 0xea, 0x87, 0xc2, 0xfc, 0x94, 0x1b, 0x2c, 0x31, 0x5c, 0x09, 0xa1, 0xce, 0x41, 0xf6, + 0x8e, 0x16, 0xcb, 0x30, 0x46, 0x24, 0x6b, 0x50, 0x4a, 0xae, 0x86, 0x94, 0xb4, 0x73, 0xd0, 0x18, + 0x2e, 0x5c, 0x5f, 0xf9, 0x75, 0xd8, 0xcc, 0x9b, 0x20, 0x09, 0x0f, 0xf3, 0x9b, 0x06, 0x54, 0xd2, + 0xe3, 0x85, 0xbc, 0x0b, 0xa3, 0xf1, 0xed, 0x9c, 0xd8, 0xbf, 0x00, 0x37, 0x32, 0x93, 0xeb, 0x3c, + 0x9a, 0xa7, 0x81, 0x8a, 0x4e, 0xe6, 0xa0, 0xc8, 0xa6, 0x9d, 0x12, 0xcc, 0x1a, 0xe5, 0x49, 0x57, + 0xc0, 0xd4, 0x73, 0x3d, 0x89, 0xa7, 0xcc, 0xda, 0xff, 0x90, 0x87, 0x51, 0xa5, 0xb3, 0xc8, 0x35, + 0x28, 0x2e, 0x87, 0x2b, 0x7e, 0x73, 0x9f, 0xba, 0xe2, 0xb8, 0x00, 0xdf, 0x12, 0xf5, 0x42, 0xbb, + 0x85, 0x40, 0x2b, 0x4e, 0x26, 0x75, 0x18, 0xe3, 0xff, 0xe4, 0xb5, 0xe0, 0x5c, 0xb2, 0xd5, 0xc9, + 0x91, 0xe5, 0x85, 0x60, 0x75, 0x85, 0xd5, 0x48, 0xc8, 0x37, 0x00, 0x38, 0x80, 0xf5, 0xef, 0x00, + 0x8e, 0xbd, 0x72, 0x02, 0x9f, 0x15, 0x19, 0x44, 0x9e, 0x5a, 0x43, 0x1c, 0x0a, 0x0a, 0x43, 0x7c, + 0xc7, 0xd0, 0x6f, 0xee, 0x0f, 0xfe, 0x92, 0x69, 0xf2, 0x8e, 0xa1, 0xdf, 0xdc, 0xb7, 0xb3, 0xbd, + 0xbc, 0x54, 0x96, 0xe4, 0x5b, 0x06, 0x5c, 0xb4, 0x68, 0xd3, 0x7f, 0x48, 0x83, 0xc3, 0x5a, 0x84, + 0x58, 0x6a, 0x8e, 0xa7, 0xbb, 0x94, 0xdd, 0x12, 0x39, 0xbe, 0x1e, 0x08, 0x2e, 0x78, 0x1d, 0xe5, + 0xa0, 0x13, 0xd9, 0x27, 0x14, 0xe1, 0x84, 0x2c, 0xcd, 0xff, 0x64, 0x28, 0x53, 0x80, 0xac, 0x42, + 0x29, 0x1e, 0x2c, 0x62, 0xc3, 0x31, 0x56, 0x8e, 0x24, 0xdc, 0xa2, 0x0f, 0xea, 0x2f, 0x88, 0x9d, + 0xfd, 0xa9, 0x78, 0xc8, 0x69, 0x33, 0x42, 0x02, 0xc9, 0x97, 0xa1, 0x80, 0x5d, 0x75, 0x7a, 0xf4, + 0x33, 0xb9, 0xd4, 0x14, 0x58, 0x1f, 0x61, 0xa9, 0x91, 0x92, 0x7c, 0x5e, 0x78, 0x79, 0xe4, 0xb5, + 0xb8, 0xc2, 0x0c, 0xc4, 0xca, 0x11, 0xaf, 0x31, 0x89, 0x63, 0xa1, 0x32, 0x5a, 0xff, 0x76, 0x0e, + 0x2a, 0xe9, 0x89, 0x47, 0x3e, 0x80, 0xf2, 0xba, 0x13, 0x86, 0x8f, 0xfc, 0xc0, 0x5d, 0x72, 0xc2, + 0x3d, 0x11, 0xab, 0x14, 0x6d, 0xbe, 0x8e, 0x80, 0xdb, 0x7b, 0x8e, 0x16, 0xd3, 0x4e, 0x23, 0x60, + 0x0b, 0xf2, 0x86, 0xf0, 0x57, 0x57, 0x26, 0x50, 0xe4, 0x47, 0x9d, 0x54, 0xac, 0x52, 0x89, 0x46, + 0xde, 0x82, 0x3c, 0xbf, 0xfb, 0xa6, 0x06, 0xba, 0xba, 0x7f, 0xa7, 0xc6, 0xaf, 0x0b, 0xf1, 0xc3, + 0x64, 0x7d, 0x57, 0x9e, 0xe1, 0x93, 0x15, 0xe5, 0xe6, 0xd4, 0xb0, 0x16, 0xf0, 0x47, 0x82, 0xe3, + 0xca, 0x9d, 0x7e, 0x85, 0xea, 0xc3, 0x42, 0x31, 0x5f, 0x29, 0x88, 0xfb, 0x39, 0x7f, 0x98, 0x87, + 0x52, 0x9c, 0x3f, 0x21, 0x80, 0xfa, 0x86, 0x38, 0x15, 0xc6, 0xff, 0xe4, 0x02, 0x14, 0xa5, 0x8a, + 0x21, 0x4e, 0x86, 0x47, 0x42, 0xa1, 0x5e, 0xcc, 0x80, 0xd4, 0x25, 0xb8, 0x7a, 0x61, 0xc9, 0x4f, + 0x72, 0x13, 0x62, 0x45, 0xa1, 0x9f, 0x46, 0x51, 0x60, 0x1d, 0x66, 0xc5, 0x68, 0x64, 0x1c, 0x72, + 0x1e, 0xf7, 0x45, 0x2e, 0x59, 0x39, 0xcf, 0x25, 0x1f, 0x40, 0xd1, 0x71, 0x5d, 0xea, 0xda, 0x4e, + 0x34, 0xc0, 0xab, 0xb2, 0x45, 0xc6, 0x8d, 0x4b, 0x74, 0xa4, 0xaa, 0x45, 0xa4, 0x06, 0x25, 0x7c, + 0x54, 0xb4, 0x1b, 0x0e, 0xf4, 0x12, 0x69, 0xc2, 0xa1, 0xc8, 0xc8, 0x36, 0x43, 0xea, 0x92, 0xd7, + 0xa1, 0xc0, 0x7a, 0x53, 0xac, 0x07, 0x71, 0xf8, 0xc2, 0xb5, 0x8d, 0x75, 0xde, 0x60, 0x4b, 0x67, + 0x2c, 0x44, 0x20, 0xaf, 0x42, 0xbe, 0x3b, 0xf7, 0x40, 0x48, 0xfa, 0x4a, 0x72, 0x2d, 0x32, 0x46, + 0x63, 0xc9, 0xe4, 0x16, 0x14, 0x1f, 0xe9, 0x17, 0xe0, 0xce, 0xa6, 0xba, 0x31, 0xc6, 0x8f, 0x11, + 0xeb, 0x45, 0x18, 0xe6, 0xd7, 0xcd, 0xcc, 0x97, 0x00, 0x92, 0xac, 0x7b, 0x0f, 0xf0, 0xcd, 0x6f, + 0x40, 0x29, 0xce, 0x92, 0xbc, 0x08, 0xb0, 0x4f, 0x0f, 0xed, 0x3d, 0xa7, 0xed, 0x8a, 0xc7, 0x74, + 0xca, 0x56, 0x69, 0x9f, 0x1e, 0x2e, 0x21, 0x80, 0x9c, 0x87, 0x91, 0x0e, 0xeb, 0x55, 0x19, 0x69, + 0xd7, 0x1a, 0xee, 0x74, 0x77, 0xd8, 0x08, 0x9d, 0x81, 0x11, 0xdc, 0x3a, 0x10, 0x13, 0x6d, 0xcc, + 0x92, 0x9f, 0xe6, 0xef, 0xe5, 0x30, 0x06, 0x83, 0x52, 0x4e, 0xf2, 0x0a, 0x8c, 0x35, 0x03, 0x8a, + 0xcb, 0x91, 0xc3, 0xd4, 0x22, 0x91, 0x4f, 0x39, 0x01, 0x2e, 0xbb, 0xe4, 0x0a, 0x4c, 0x24, 0xa1, + 0x7f, 0xed, 0xe6, 0x8e, 0xb8, 0xfe, 0x5a, 0xb6, 0xc6, 0x3a, 0x32, 0xf6, 0xef, 0xfc, 0x0e, 0xfa, + 0xd0, 0x57, 0xd4, 0xab, 0x66, 0x91, 0x0c, 0xe3, 0x5b, 0xb2, 0x26, 0x14, 0x38, 0x1e, 0x3b, 0x9c, + 0x83, 0x61, 0xc7, 0xd9, 0xed, 0x7a, 0xdc, 0x9f, 0xb7, 0x6c, 0x89, 0x2f, 0xf2, 0x39, 0x98, 0x0c, + 0xbd, 0xdd, 0xb6, 0x13, 0x75, 0x03, 0x11, 0x04, 0x83, 0x06, 0x38, 0xa4, 0xc6, 0xac, 0x4a, 0x9c, + 0x30, 0xcf, 0xe1, 0xe4, 0x4d, 0x20, 0x6a, 0x7e, 0xfe, 0xce, 0xc7, 0xb4, 0xc9, 0x87, 0x5a, 0xd9, + 0x9a, 0x54, 0x52, 0xd6, 0x30, 0x81, 0xbc, 0x0c, 0xe5, 0x80, 0x86, 0xa8, 0x92, 0x61, 0xb3, 0x61, + 0x68, 0x1f, 0x6b, 0x54, 0xc2, 0xee, 0xd1, 0x43, 0xb3, 0x0e, 0x93, 0x3d, 0xf3, 0x91, 0xbc, 0xc9, + 0xb5, 0x7b, 0xb1, 0x3e, 0x97, 0xb9, 0x31, 0xc3, 0x84, 0x54, 0xea, 0x1d, 0x6a, 0x8e, 0x64, 0xb6, + 0xa1, 0xac, 0xca, 0xd7, 0x53, 0x2e, 0x16, 0x9f, 0x43, 0xc7, 0x42, 0x2e, 0x7c, 0x86, 0x8f, 0x8f, + 0xaa, 0x39, 0xcf, 0x45, 0x77, 0xc2, 0xab, 0x50, 0x94, 0x5a, 0x82, 0xfa, 0x98, 0x8c, 0x50, 0x28, + 0x0f, 0xad, 0x38, 0xd5, 0x7c, 0x1d, 0x46, 0x84, 0x08, 0x3d, 0x79, 0x1b, 0xc7, 0xfc, 0xa5, 0x1c, + 0x4c, 0x58, 0x94, 0x4d, 0x70, 0xf1, 0x4c, 0xcb, 0x67, 0x2c, 0x08, 0xb2, 0x56, 0xb7, 0x13, 0xee, + 0xf1, 0x7f, 0xd7, 0x80, 0xa9, 0x0c, 0xdc, 0x4f, 0x14, 0x35, 0xed, 0x36, 0x94, 0x16, 0x3c, 0xa7, + 0x55, 0x73, 0xdd, 0xd8, 0x41, 0x12, 0xb5, 0x41, 0x97, 0x4d, 0x27, 0x87, 0x41, 0xd5, 0xc5, 0x34, + 0x46, 0x25, 0xd7, 0xc5, 0xa0, 0x48, 0xe2, 0x3a, 0xca, 0x30, 0xcb, 0xc0, 0xcb, 0xa4, 0x44, 0xa3, + 0xf8, 0xcd, 0x1c, 0x88, 0xa0, 0x11, 0xc9, 0x19, 0xf8, 0x73, 0xdb, 0x75, 0xd9, 0xd7, 0xd0, 0xd2, + 0xd5, 0x1b, 0xc8, 0xec, 0xfc, 0x66, 0x0e, 0xce, 0x65, 0x13, 0x7e, 0xd2, 0x00, 0x78, 0x18, 0x44, + 0x41, 0x89, 0x64, 0x8d, 0x01, 0xf0, 0x78, 0xc4, 0x05, 0xc4, 0x4f, 0x10, 0xc8, 0x03, 0x18, 0x5b, + 0x71, 0xc2, 0x68, 0x89, 0x3a, 0x41, 0xb4, 0x43, 0x9d, 0x68, 0x00, 0x0d, 0x36, 0x7e, 0xed, 0x19, + 0x17, 0xb5, 0x3d, 0x49, 0x99, 0x7e, 0xed, 0x59, 0x63, 0x1b, 0x0f, 0x94, 0xc2, 0x00, 0x03, 0xe5, + 0xa7, 0x60, 0xa2, 0x41, 0x0f, 0x9c, 0xce, 0x9e, 0x1f, 0x50, 0xb1, 0xf3, 0x7c, 0x03, 0xc6, 0x62, + 0x50, 0xe6, 0x68, 0xd1, 0x93, 0x35, 0x7c, 0xa5, 0x21, 0x12, 0x51, 0xa2, 0x27, 0x9b, 0xbf, 0x93, + 0x83, 0xf3, 0xb5, 0xa6, 0xd8, 0xa6, 0x17, 0x09, 0xf2, 0x34, 0xf1, 0x53, 0xce, 0x9b, 0xcc, 0x42, + 0xe9, 0xbe, 0xf3, 0x78, 0x85, 0xe2, 0x7b, 0xac, 0x3c, 0x8c, 0x12, 0x57, 0xbf, 0x9c, 0xc7, 0x76, + 0xbc, 0xed, 0x65, 0x25, 0x38, 0xaa, 0xb1, 0x59, 0x78, 0x4a, 0x63, 0xd3, 0x84, 0xe1, 0x25, 0xbf, + 0xe5, 0x8a, 0xc5, 0x49, 0xec, 0xfa, 0xef, 0x21, 0xc4, 0x12, 0x29, 0xe6, 0x0f, 0x0c, 0x18, 0x8f, + 0x4b, 0x8c, 0x45, 0xf8, 0xd4, 0x9b, 0xe4, 0x0a, 0x8c, 0x60, 0x46, 0xf1, 0xab, 0x45, 0xb8, 0x68, + 0xb4, 0x18, 0xc8, 0xf6, 0x5c, 0x4b, 0x26, 0xaa, 0x2d, 0x31, 0xf4, 0x74, 0x2d, 0x61, 0xfe, 0x63, + 0x3c, 0x50, 0x50, 0x6b, 0xc9, 0x56, 0x22, 0xa5, 0x20, 0xc6, 0x80, 0x05, 0xc9, 0x3d, 0xb3, 0x2e, + 0xc9, 0xf7, 0xed, 0x92, 0x5f, 0xce, 0xc1, 0x68, 0x5c, 0xd8, 0xcf, 0xd8, 0xfd, 0xed, 0xb8, 0x5e, + 0x03, 0x79, 0x67, 0x37, 0x14, 0x59, 0x21, 0x9c, 0xa0, 0xbf, 0x0c, 0xc3, 0x62, 0x32, 0x19, 0xa9, + 0x53, 0xb5, 0x54, 0xef, 0x26, 0x2f, 0xf6, 0x62, 0x87, 0x86, 0x96, 0xa0, 0x43, 0xf7, 0xf7, 0x6d, + 0xba, 0x23, 0xce, 0x97, 0x9e, 0xdb, 0x35, 0x2a, 0xdb, 0xfd, 0x3d, 0xa9, 0xd8, 0x40, 0xab, 0xd3, + 0xdf, 0x2f, 0x40, 0x25, 0x4d, 0x72, 0xfa, 0x0d, 0xf9, 0xf5, 0xee, 0x8e, 0x78, 0x38, 0x03, 0x6f, + 0xc8, 0x77, 0xba, 0x3b, 0x16, 0x83, 0x91, 0x2b, 0x50, 0x58, 0x0f, 0xbc, 0x87, 0x58, 0x6b, 0xf1, + 0x6e, 0x48, 0x27, 0xf0, 0x1e, 0xaa, 0x7e, 0xa0, 0x2c, 0x1d, 0x0d, 0xda, 0x95, 0x86, 0xf2, 0x58, + 0x3a, 0x37, 0x68, 0x5b, 0x61, 0x3a, 0x2c, 0x8a, 0x44, 0x63, 0x4b, 0x65, 0x9d, 0x3a, 0x81, 0xb8, + 0xcd, 0x2d, 0xc4, 0x19, 0x2e, 0x95, 0x3b, 0x08, 0xe6, 0x41, 0x78, 0x2d, 0x15, 0x89, 0xb4, 0x80, + 0x28, 0x9f, 0x72, 0x02, 0x9f, 0x6e, 0xe3, 0xc9, 0xf7, 0xae, 0xa6, 0x55, 0xd6, 0xb6, 0x3a, 0x9b, + 0x33, 0xf8, 0x3e, 0xcb, 0x3d, 0xc2, 0x75, 0x28, 0xe1, 0x96, 0x17, 0x6e, 0x64, 0x14, 0x4f, 0x65, + 0x26, 0x7d, 0x6e, 0x01, 0x4f, 0xe3, 0xed, 0x78, 0x3b, 0x23, 0x61, 0x42, 0xde, 0x87, 0x51, 0xd5, + 0x51, 0x94, 0xbb, 0x33, 0x5e, 0xe2, 0x37, 0x84, 0xfa, 0xc4, 0xb3, 0x53, 0x09, 0xcc, 0xcf, 0xab, + 0xa3, 0x44, 0x2c, 0xda, 0x27, 0x8e, 0x12, 0xf3, 0xb7, 0x50, 0x8d, 0x3f, 0xf0, 0x23, 0x2a, 0xb4, + 0x97, 0xe7, 0x56, 0x8e, 0x25, 0x5b, 0xc8, 0x43, 0x9a, 0x47, 0x88, 0x56, 0xbb, 0x27, 0x78, 0x26, + 0xfc, 0x1f, 0x18, 0x70, 0x36, 0x93, 0x96, 0xdc, 0x00, 0x48, 0x74, 0x44, 0xd1, 0x4a, 0x3c, 0xba, + 0x71, 0x0c, 0xb5, 0x14, 0x0c, 0xf2, 0xf5, 0xb4, 0x76, 0x77, 0xfa, 0xe2, 0x24, 0xdf, 0x00, 0x19, + 0xd7, 0xb5, 0xbb, 0x0c, 0x9d, 0xce, 0xfc, 0x6e, 0x1e, 0x26, 0x7b, 0x1e, 0x9c, 0x3c, 0xe5, 0x0c, + 0x7e, 0x3f, 0xf5, 0x32, 0x19, 0x3f, 0xee, 0xb8, 0xde, 0xef, 0xb9, 0xcb, 0x8c, 0x77, 0xca, 0x70, + 0x5b, 0x4c, 0x04, 0xd6, 0x3e, 0xe5, 0xb9, 0xb2, 0x30, 0xfb, 0x4d, 0xbb, 0xcf, 0xf5, 0xcd, 0xed, + 0x19, 0xbc, 0x6d, 0xf7, 0x23, 0xfc, 0xf4, 0xd7, 0x6f, 0xe5, 0x60, 0xaa, 0xa7, 0xce, 0xcf, 0xed, + 0xac, 0xfb, 0xb2, 0xb6, 0xba, 0xbd, 0xd4, 0xaf, 0x4f, 0x07, 0xd2, 0x22, 0xfe, 0x87, 0x01, 0xe7, + 0xfb, 0x50, 0x92, 0xc3, 0xf4, 0x20, 0xe2, 0x5a, 0xc5, 0xcd, 0x93, 0x33, 0x7c, 0x26, 0x43, 0xe9, + 0x53, 0x1b, 0x09, 0xbf, 0x94, 0x03, 0xd8, 0xa6, 0x3b, 0xcf, 0x77, 0xf8, 0x9f, 0x2f, 0x6a, 0x03, + 0x40, 0xd9, 0xc0, 0x1c, 0x3c, 0xfa, 0xcf, 0x1a, 0x6e, 0x24, 0x0e, 0x1e, 0xfb, 0x27, 0x7e, 0xe7, + 0x24, 0x97, 0xfd, 0xce, 0x89, 0xb9, 0x03, 0xd3, 0x77, 0x69, 0x94, 0xac, 0x84, 0xd2, 0x86, 0x3c, + 0x99, 0xed, 0x1b, 0x50, 0x12, 0xf8, 0x7a, 0xcc, 0x7a, 0xe9, 0x50, 0xe6, 0xb9, 0x56, 0x82, 0x60, + 0x52, 0x38, 0xbf, 0x40, 0x5b, 0x34, 0xa2, 0x9f, 0x6e, 0x36, 0x0d, 0x20, 0xbc, 0x2a, 0xfc, 0xf9, + 0x8b, 0x81, 0x72, 0x38, 0xb5, 0x7d, 0xb6, 0xe0, 0x6c, 0x5c, 0xf6, 0x67, 0xc9, 0x77, 0x96, 0xe9, + 0x12, 0xe2, 0xae, 0x5d, 0xc2, 0xf1, 0x84, 0x4d, 0xc4, 0xc7, 0x70, 0x51, 0x12, 0x6c, 0x7b, 0xf1, + 0x49, 0xcc, 0x40, 0xb4, 0xe4, 0x5d, 0x18, 0x55, 0x68, 0xc4, 0xc5, 0x5d, 0x3c, 0xed, 0x7c, 0xe4, + 0x45, 0x7b, 0x76, 0xc8, 0xe1, 0xea, 0x69, 0xa7, 0x82, 0x6e, 0x7e, 0x0d, 0x5e, 0x88, 0xfd, 0x56, + 0x32, 0xb2, 0x4e, 0x31, 0x37, 0x9e, 0x8c, 0xf9, 0x6a, 0x52, 0xad, 0xe5, 0x76, 0xec, 0x3f, 0x2e, + 0x79, 0x13, 0xb5, 0x5a, 0xa2, 0x32, 0x97, 0x94, 0xb0, 0x68, 0x62, 0x2d, 0x4a, 0x00, 0xe6, 0x3b, + 0x4a, 0x61, 0x33, 0x18, 0x6a, 0xc4, 0x46, 0x9a, 0xf8, 0x97, 0x72, 0x30, 0xb1, 0xb6, 0xbc, 0x30, + 0x1f, 0x6f, 0x23, 0x7f, 0xc6, 0x62, 0x13, 0x69, 0x75, 0xeb, 0x2f, 0x6f, 0xcc, 0x4d, 0x98, 0x4a, + 0x35, 0x03, 0xbe, 0xee, 0xf3, 0x3e, 0xf7, 0x2f, 0x89, 0xc1, 0x72, 0x65, 0x39, 0x97, 0xc5, 0x7e, + 0xeb, 0x96, 0x95, 0xc2, 0x36, 0xbf, 0x3b, 0x9c, 0xe2, 0x2b, 0x44, 0xd8, 0x1b, 0x50, 0x5a, 0x0e, + 0xc3, 0x2e, 0x0d, 0x36, 0xad, 0x15, 0x55, 0x47, 0xf4, 0x10, 0x68, 0x77, 0x83, 0x96, 0x95, 0x20, + 0x90, 0x6b, 0x50, 0x14, 0xf7, 0xbb, 0xa4, 0x4c, 0xc0, 0xe3, 0xf2, 0xf8, 0x7a, 0x98, 0x15, 0x27, + 0x93, 0xb7, 0xa0, 0xcc, 0xff, 0xf3, 0xd1, 0x26, 0x1a, 0x1c, 0xf7, 0xaa, 0x04, 0x3a, 0x1f, 0x9d, + 0x96, 0x86, 0xc6, 0x2c, 0x33, 0xf9, 0x7c, 0x28, 0x2b, 0x51, 0x21, 0xb1, 0xcc, 0xe4, 0x4b, 0xa3, + 0x58, 0x26, 0x15, 0x89, 0x5c, 0x87, 0x7c, 0x6d, 0xde, 0x52, 0xc3, 0x74, 0x3b, 0xcd, 0x80, 0x87, + 0xb9, 0xd7, 0x5e, 0xe8, 0xaa, 0xcd, 0x5b, 0x64, 0x0e, 0x8a, 0xf8, 0x02, 0x8b, 0x4b, 0x03, 0xe1, + 0x33, 0x8a, 0xa3, 0xa6, 0x23, 0x60, 0xda, 0xfb, 0xe6, 0x02, 0x46, 0x66, 0x61, 0x64, 0xc1, 0x0b, + 0x3b, 0x2d, 0xe7, 0x50, 0x04, 0x25, 0xc1, 0xc3, 0x10, 0x97, 0x83, 0xd4, 0x71, 0x26, 0xb0, 0xc8, + 0x35, 0x18, 0x6a, 0x34, 0xfd, 0x0e, 0xb3, 0xb6, 0x62, 0xd7, 0x96, 0x90, 0x01, 0xb4, 0xc8, 0x06, + 0x0c, 0x80, 0x57, 0x8e, 0xf9, 0xcd, 0xa9, 0x92, 0x72, 0xe5, 0x38, 0x7d, 0x63, 0x4a, 0xe0, 0xf4, + 0xfa, 0xff, 0xc1, 0xb3, 0xf4, 0xff, 0xdb, 0x81, 0xf3, 0x77, 0x51, 0xd5, 0x6f, 0xd0, 0x00, 0xe3, + 0x40, 0xf2, 0xd7, 0x9c, 0x36, 0xad, 0x65, 0x71, 0x5b, 0xec, 0xea, 0xf1, 0x51, 0xf5, 0x55, 0x6e, + 0x0d, 0xd8, 0x21, 0xc7, 0x91, 0x0f, 0x41, 0xa5, 0x9e, 0xb0, 0xe8, 0xc7, 0x88, 0x7c, 0x05, 0xa6, + 0xb3, 0x92, 0xc4, 0xbd, 0x31, 0xf4, 0x0a, 0xcf, 0xce, 0x40, 0x75, 0xcb, 0xce, 0xe2, 0x40, 0x56, + 0xa0, 0xc2, 0xe1, 0x35, 0xf7, 0xc0, 0x6b, 0x2f, 0x1e, 0x38, 0x5e, 0x0b, 0x6f, 0x91, 0x89, 0xab, + 0x80, 0x82, 0xab, 0xc3, 0x12, 0x6d, 0xca, 0x52, 0x35, 0xef, 0xa4, 0x14, 0x25, 0x8a, 0xa3, 0x46, + 0xed, 0xfe, 0x4a, 0x32, 0xa7, 0x3e, 0x5b, 0xe7, 0x46, 0x5a, 0xdd, 0x4e, 0x38, 0x37, 0xda, 0x84, + 0xa9, 0x54, 0x33, 0x48, 0x71, 0xa4, 0x81, 0xd3, 0xe2, 0x28, 0x45, 0x63, 0xa5, 0xb0, 0xcd, 0xff, + 0x38, 0x9c, 0xe2, 0x2b, 0xf6, 0x8a, 0x4c, 0x18, 0xe6, 0xd2, 0x46, 0x8d, 0x5a, 0xc6, 0x65, 0x91, + 0x25, 0x52, 0xc8, 0x05, 0xc8, 0x37, 0x1a, 0x6b, 0x6a, 0x4c, 0xc5, 0x30, 0xf4, 0x2d, 0x06, 0x63, + 0x3d, 0x84, 0xdb, 0x40, 0xca, 0x05, 0xad, 0x26, 0x0d, 0x22, 0xf1, 0xbe, 0xec, 0x6b, 0xc9, 0x3c, + 0x2e, 0x24, 0xed, 0x2d, 0xe6, 0x71, 0x32, 0x7b, 0xe7, 0x61, 0xa6, 0x16, 0x86, 0x34, 0xe0, 0xe1, + 0xc1, 0xdb, 0x61, 0xf7, 0x80, 0x06, 0x62, 0xac, 0x09, 0x19, 0xc3, 0x5f, 0xa7, 0x6f, 0x86, 0x56, + 0x5f, 0x44, 0x72, 0x15, 0x8a, 0xb5, 0xae, 0xeb, 0xd1, 0x76, 0x53, 0xf3, 0x4d, 0x77, 0x04, 0xcc, + 0x8a, 0x53, 0xc9, 0x47, 0x70, 0x56, 0x10, 0x49, 0x81, 0x23, 0x5a, 0x80, 0xcb, 0x1a, 0x6e, 0xc1, + 0x8a, 0xb9, 0x20, 0xc5, 0x94, 0x2d, 0x9a, 0x24, 0x9b, 0x92, 0xd4, 0xa0, 0xb2, 0x88, 0xe7, 0xa4, + 0xf2, 0x95, 0x69, 0x3f, 0x10, 0xc1, 0x77, 0x51, 0x72, 0xf1, 0x33, 0x54, 0xdb, 0x8d, 0x13, 0xad, + 0x1e, 0x74, 0x72, 0x0f, 0xa6, 0xd2, 0x30, 0x26, 0x8f, 0x4b, 0xc9, 0x2b, 0x70, 0x3d, 0x5c, 0x50, + 0x30, 0x67, 0x51, 0x91, 0x1d, 0x98, 0xac, 0x45, 0x51, 0xe0, 0xed, 0x74, 0x23, 0x9a, 0x12, 0x5d, + 0x72, 0xa3, 0x31, 0x4e, 0x97, 0xe2, 0xeb, 0x05, 0x31, 0x18, 0xa7, 0x9c, 0x98, 0x32, 0x16, 0x61, + 0x56, 0x2f, 0x3b, 0xe2, 0xc6, 0x0f, 0x49, 0x8a, 0xc7, 0x16, 0xc5, 0x85, 0x22, 0xb9, 0xa1, 0x5b, + 0x0b, 0x0f, 0x0f, 0x0e, 0x68, 0x14, 0xe0, 0xc9, 0x3d, 0x3e, 0xc6, 0x68, 0x0a, 0x1f, 0xa0, 0x8b, + 0xca, 0xfb, 0xa9, 0xf8, 0xe0, 0xa6, 0xe6, 0x1e, 0xa9, 0xf1, 0xd4, 0x96, 0x8f, 0xf2, 0x80, 0xcb, + 0x47, 0x0b, 0x26, 0x17, 0xdb, 0xcd, 0xe0, 0x10, 0x6f, 0x36, 0xca, 0xc2, 0x8d, 0x9d, 0x52, 0x38, + 0xf9, 0xd2, 0xca, 0x25, 0x47, 0x8e, 0xb0, 0xac, 0xe2, 0xf5, 0x32, 0x36, 0xff, 0x3f, 0xa8, 0xa4, + 0xdb, 0xf2, 0x29, 0x5f, 0xcf, 0x7e, 0x12, 0xd7, 0x6c, 0xd6, 0xd3, 0xe9, 0xba, 0x90, 0x59, 0xed, + 0x89, 0x64, 0x23, 0xb9, 0x95, 0xae, 0x3c, 0x66, 0xac, 0x3d, 0x8c, 0x2c, 0xa7, 0x71, 0x2e, 0x6b, + 0x1a, 0x9b, 0xbf, 0x92, 0x83, 0x49, 0xee, 0x4d, 0xfa, 0xfc, 0xeb, 0x8a, 0xef, 0x6b, 0xc2, 0x59, + 0xee, 0x05, 0xa6, 0x6a, 0x77, 0x82, 0xb6, 0xf8, 0x0d, 0x38, 0xdb, 0xd3, 0x14, 0x28, 0xa0, 0x17, + 0xa4, 0x1f, 0x6f, 0x8f, 0x88, 0x9e, 0xc9, 0xce, 0x64, 0xeb, 0x96, 0xd5, 0x43, 0x61, 0xfe, 0xc3, + 0x5c, 0x0f, 0x7f, 0xa1, 0x37, 0xaa, 0x9a, 0xa0, 0xf1, 0x64, 0x9a, 0x60, 0xee, 0x13, 0x69, 0x82, + 0xf9, 0x41, 0x34, 0xc1, 0x8f, 0x60, 0x6c, 0x83, 0x3a, 0x4c, 0xa3, 0x11, 0x97, 0xcd, 0x0a, 0xda, + 0xf3, 0xc5, 0x2c, 0x4d, 0xca, 0x97, 0xf8, 0xa2, 0x6a, 0xc4, 0x08, 0x98, 0x68, 0xe1, 0xb7, 0xcf, + 0x2c, 0x9d, 0x83, 0xba, 0x68, 0x0c, 0xf5, 0x5f, 0x34, 0xcc, 0x6f, 0xe6, 0x60, 0x54, 0x61, 0x4f, + 0xbe, 0x00, 0xe5, 0xb5, 0x60, 0xd7, 0x69, 0x7b, 0x3f, 0xed, 0x28, 0xdb, 0xaf, 0x58, 0x7c, 0x5f, + 0x81, 0x5b, 0x1a, 0x16, 0xba, 0xcd, 0x50, 0xe7, 0x40, 0x1d, 0xf8, 0xac, 0x78, 0x16, 0x42, 0x95, + 0xcb, 0xc2, 0xf9, 0x01, 0x2e, 0x0b, 0xeb, 0x37, 0x6d, 0x0b, 0x4f, 0x7e, 0xd3, 0x56, 0xbb, 0x18, + 0x3b, 0xf4, 0x84, 0x17, 0x63, 0xcd, 0x5f, 0xcb, 0x41, 0x45, 0x3c, 0xf4, 0x2b, 0x37, 0x0f, 0x3f, + 0x5b, 0xef, 0x30, 0xe8, 0x95, 0x3b, 0xe1, 0x78, 0xac, 0xf0, 0xdb, 0xbf, 0x5f, 0xc5, 0x67, 0x5b, + 0xd3, 0xcd, 0x21, 0x9f, 0x6d, 0xd5, 0xe1, 0xe9, 0x9b, 0x03, 0x69, 0x2a, 0x2b, 0x8d, 0x6f, 0xfe, + 0x69, 0x2e, 0xcd, 0x5b, 0x68, 0x53, 0xaf, 0xc1, 0x08, 0x7f, 0xa7, 0x4d, 0x3a, 0x37, 0x8b, 0xd8, + 0x4d, 0x08, 0xb2, 0x64, 0xda, 0x93, 0xdc, 0x21, 0x39, 0xed, 0xed, 0x5e, 0x72, 0x5b, 0xbc, 0xaa, + 0x53, 0x73, 0xdd, 0x80, 0x86, 0xa1, 0x50, 0xb4, 0xf0, 0xec, 0xee, 0x11, 0xdd, 0xb1, 0xb9, 0x5f, + 0x89, 0xe3, 0xba, 0x81, 0xa5, 0xe1, 0x91, 0x79, 0x98, 0xd6, 0xdc, 0x93, 0x24, 0xfd, 0x50, 0xb2, + 0x5a, 0x88, 0xf7, 0x74, 0x90, 0x38, 0x13, 0xf9, 0xd9, 0xbd, 0x5b, 0x6e, 0xfe, 0x6f, 0x83, 0xcd, + 0xb5, 0xe6, 0xfe, 0x67, 0xec, 0x76, 0x0b, 0xab, 0xd2, 0x09, 0xca, 0xfe, 0xbf, 0x37, 0xb8, 0x7f, + 0xba, 0x18, 0x3e, 0x6f, 0xc3, 0x30, 0x7f, 0x15, 0x4e, 0x78, 0x52, 0xab, 0x5c, 0x78, 0x42, 0x72, + 0x3e, 0xc5, 0xdf, 0x96, 0xb3, 0x04, 0x01, 0x33, 0x99, 0x75, 0x37, 0x79, 0x54, 0x3c, 0x7b, 0xfd, + 0xe3, 0x25, 0x96, 0x1a, 0x97, 0x74, 0xb0, 0x78, 0xd7, 0xc6, 0xe9, 0x71, 0x49, 0xcd, 0xbf, 0xce, + 0xf1, 0xfa, 0x88, 0x42, 0x0d, 0x1a, 0x70, 0xef, 0x0a, 0x14, 0xf0, 0xfd, 0x61, 0x25, 0xaa, 0x61, + 0xea, 0xed, 0x61, 0x4c, 0x67, 0xf3, 0x06, 0x65, 0xad, 0x7a, 0xa1, 0x0a, 0xc5, 0xb1, 0x3a, 0x6f, + 0x10, 0x03, 0xa3, 0x49, 0xfb, 0x2e, 0x55, 0xa7, 0x43, 0x5b, 0x0f, 0xfc, 0x8d, 0xe9, 0xe4, 0xb6, + 0xe2, 0xd7, 0xac, 0x6e, 0x68, 0x1c, 0x3c, 0x70, 0x6c, 0xee, 0x4f, 0xab, 0x4a, 0xdb, 0xc4, 0x05, + 0x7a, 0x11, 0xc6, 0xf5, 0xbb, 0xca, 0xc2, 0xe8, 0xc0, 0x2b, 0xdf, 0xa9, 0x7b, 0xce, 0xaa, 0x7a, + 0xab, 0x13, 0x91, 0x3a, 0x8c, 0x69, 0x17, 0x52, 0xd5, 0x20, 0xac, 0x3c, 0x3a, 0x8c, 0xdd, 0x1b, + 0x49, 0x41, 0x27, 0x51, 0x36, 0xcc, 0x3f, 0x0f, 0x15, 0x31, 0x33, 0xe3, 0xbb, 0x6d, 0xa8, 0xda, + 0x2d, 0x2f, 0x58, 0xea, 0x6c, 0x6a, 0x7a, 0x6e, 0x60, 0x21, 0xd4, 0xfc, 0x8e, 0x01, 0x17, 0xc4, + 0x6b, 0x77, 0x16, 0x0d, 0x99, 0x0e, 0x89, 0x17, 0xe2, 0x70, 0x3c, 0x7e, 0x81, 0xbc, 0x2b, 0x03, + 0x4f, 0xe9, 0x02, 0x32, 0x9d, 0x47, 0x7d, 0x4c, 0x0c, 0xca, 0x21, 0x0c, 0x3d, 0x25, 0x03, 0x4e, + 0xbd, 0x2d, 0x02, 0x4e, 0xe5, 0x4e, 0x26, 0x8e, 0xe7, 0x85, 0x4b, 0xdb, 0x32, 0xd0, 0xd4, 0xaf, + 0xe7, 0xe0, 0x6c, 0x46, 0xb1, 0xb6, 0xbe, 0xf0, 0x9c, 0x0a, 0x87, 0xba, 0x26, 0x1c, 0x64, 0x44, + 0xc2, 0xbe, 0x0d, 0x9f, 0x29, 0x2b, 0x7e, 0xd7, 0x80, 0xf3, 0xfa, 0xe8, 0x11, 0xb6, 0xe8, 0xd6, + 0x2d, 0xf2, 0x0e, 0x0c, 0x2f, 0x51, 0xc7, 0xa5, 0xf2, 0x0a, 0x46, 0x1c, 0xdd, 0x4b, 0xec, 0x0e, + 0xf3, 0x44, 0xce, 0xf6, 0x4f, 0xf9, 0x54, 0x3e, 0x63, 0x09, 0x12, 0xb2, 0x20, 0x0a, 0xc7, 0x8f, + 0xa7, 0x4c, 0x79, 0x52, 0x93, 0x95, 0xd5, 0x09, 0x8a, 0xf1, 0xcf, 0xc0, 0x0b, 0x27, 0x90, 0xb0, + 0x7e, 0x63, 0x3d, 0xaf, 0xf6, 0x1b, 0xae, 0x2b, 0x08, 0x25, 0xef, 0xc3, 0xc4, 0x86, 0xb8, 0x28, + 0x26, 0x7b, 0x43, 0x09, 0xee, 0x2e, 0xef, 0x90, 0xd9, 0xb2, 0x5b, 0xd2, 0xc8, 0x6c, 0xad, 0xd7, + 0x33, 0x17, 0x3e, 0x0e, 0xaf, 0xc0, 0xf0, 0x92, 0xaf, 0x44, 0xdd, 0xc6, 0xce, 0xc5, 0xf7, 0xac, + 0x3c, 0xd7, 0x12, 0x49, 0xb1, 0xb1, 0x96, 0xcb, 0x3c, 0x8a, 0xf8, 0xa6, 0x01, 0x15, 0x9d, 0xf7, + 0xd3, 0xb6, 0xf7, 0x7b, 0x5a, 0x7b, 0xbf, 0x90, 0xdd, 0xde, 0xfd, 0x1b, 0xba, 0x27, 0x18, 0xc3, + 0x40, 0x2d, 0x6c, 0xc2, 0xf0, 0x82, 0x7f, 0xe0, 0x78, 0x6d, 0x35, 0x80, 0x80, 0x8b, 0x10, 0x4b, + 0xa4, 0x28, 0xad, 0x95, 0xef, 0xdb, 0x5a, 0xe6, 0xb7, 0x0b, 0x70, 0xc1, 0xa2, 0xbb, 0x1e, 0xd3, + 0x7a, 0x36, 0x43, 0xaf, 0xbd, 0xab, 0x1d, 0x14, 0x99, 0xa9, 0x06, 0x17, 0xee, 0x71, 0x0c, 0x12, + 0xb7, 0xf7, 0x35, 0x28, 0x32, 0xd1, 0xab, 0xb4, 0x39, 0x5a, 0x32, 0x18, 0x06, 0x07, 0x1b, 0x3e, + 0x4e, 0x26, 0xd7, 0xc5, 0xc2, 0xa0, 0x38, 0x30, 0xb3, 0x85, 0x21, 0xf5, 0x3e, 0x3c, 0x5f, 0x1c, + 0x62, 0x4d, 0xa9, 0xd0, 0x47, 0x53, 0xba, 0x0f, 0xd3, 0x35, 0x97, 0x0b, 0x1d, 0xa7, 0xb5, 0x1e, + 0x78, 0xed, 0xa6, 0xd7, 0x71, 0x5a, 0x52, 0xd3, 0xe6, 0xaf, 0xe5, 0xc7, 0xe9, 0x76, 0x27, 0x46, + 0xb0, 0x32, 0xc9, 0x58, 0x35, 0x16, 0x56, 0x1b, 0x3c, 0xca, 0xc9, 0x30, 0xb2, 0xc0, 0x6a, 0xb8, + 0xed, 0x90, 0x87, 0x39, 0xb1, 0xe2, 0x64, 0xd4, 0xd1, 0xf0, 0x0e, 0xc3, 0xc6, 0x4a, 0xe3, 0x9e, + 0xb8, 0x13, 0x20, 0xfd, 0xab, 0xf8, 0x95, 0x87, 0xa8, 0x15, 0xa2, 0x51, 0xae, 0xe1, 0x25, 0x74, + 0x8d, 0xc6, 0x12, 0xa3, 0x2b, 0xf6, 0xd0, 0x85, 0xe1, 0x9e, 0x4a, 0xc7, 0xf1, 0x98, 0xfd, 0xcf, + 0x3d, 0x54, 0x70, 0x40, 0x94, 0x12, 0x8d, 0x2e, 0x40, 0x28, 0xd7, 0xe8, 0x14, 0x14, 0xf2, 0x2e, + 0x4c, 0x2d, 0xce, 0xcf, 0x49, 0x67, 0xff, 0x05, 0xbf, 0xd9, 0x3d, 0xa0, 0xed, 0x08, 0x2f, 0x9f, + 0x94, 0x79, 0x1f, 0xd2, 0xe6, 0x1c, 0x1b, 0x05, 0x59, 0x68, 0xc2, 0xe5, 0x9f, 0x5f, 0x18, 0x9b, + 0xf7, 0x5d, 0x1a, 0x6e, 0xdd, 0xfc, 0x8c, 0xb9, 0xfc, 0x2b, 0x75, 0xc3, 0xd9, 0x76, 0x33, 0x73, + 0x66, 0xfe, 0x1d, 0x74, 0xf9, 0xef, 0xc1, 0x25, 0x3f, 0x06, 0x43, 0xf8, 0x29, 0x96, 0xd1, 0xa9, + 0x0c, 0xb6, 0xc9, 0x12, 0xda, 0xe4, 0x01, 0x2b, 0x90, 0x80, 0x2c, 0x27, 0x11, 0xe9, 0x9f, 0xc0, + 0x71, 0x55, 0xdc, 0x3a, 0xd5, 0x9f, 0x22, 0x71, 0xa1, 0xac, 0x66, 0xc8, 0xc6, 0xc8, 0x92, 0x13, + 0xee, 0x51, 0x77, 0x5e, 0x3e, 0x26, 0x58, 0xe6, 0x63, 0x64, 0x0f, 0xa1, 0xf8, 0x4c, 0x8a, 0xa5, + 0xa0, 0x30, 0xe9, 0xb0, 0x1c, 0x6e, 0x86, 0xa2, 0x28, 0xc2, 0xb4, 0xf1, 0xd0, 0x24, 0x75, 0x2d, + 0x91, 0x84, 0xd2, 0x52, 0x06, 0x64, 0x0c, 0x9c, 0xe6, 0x3e, 0x0d, 0xb6, 0x6e, 0x7e, 0x1a, 0xd2, + 0x52, 0xcf, 0xe3, 0x84, 0x3e, 0xf9, 0x8d, 0x62, 0x1c, 0x6f, 0x45, 0x43, 0x66, 0x8a, 0x5f, 0x72, + 0xdc, 0x6e, 0x24, 0x8a, 0x5f, 0x72, 0xdc, 0xae, 0x2a, 0x7e, 0x31, 0x6a, 0x1c, 0x0e, 0x37, 0x77, + 0x4a, 0x38, 0xdc, 0x3e, 0x11, 0xb8, 0xa5, 0xa7, 0xe6, 0x67, 0xe8, 0x31, 0x82, 0x2f, 0x41, 0xb9, + 0x16, 0x45, 0x4e, 0x73, 0x8f, 0xba, 0x18, 0x76, 0x59, 0x39, 0xe5, 0x73, 0x04, 0x5c, 0xf5, 0x01, + 0x53, 0x71, 0x95, 0xc7, 0x48, 0x46, 0x06, 0x78, 0x8c, 0x64, 0x16, 0x46, 0x96, 0xdb, 0x0f, 0x3d, + 0xd6, 0x26, 0xc5, 0x24, 0xe2, 0x83, 0xc7, 0x41, 0xfa, 0x0b, 0x16, 0x08, 0x22, 0x6f, 0x43, 0x91, + 0x2d, 0x3a, 0x78, 0x77, 0xb9, 0x94, 0xe8, 0xe7, 0xe2, 0x5d, 0xee, 0x3d, 0x91, 0xa4, 0x6e, 0x22, + 0x4b, 0x74, 0x72, 0x1b, 0x46, 0xa4, 0x49, 0x0c, 0x89, 0x4e, 0x2e, 0x28, 0x1d, 0x9e, 0xa2, 0x05, + 0x99, 0x10, 0x26, 0xf1, 0xbb, 0xfa, 0xa5, 0x90, 0x51, 0xe5, 0xb2, 0xb5, 0x72, 0x29, 0x44, 0xbb, + 0x6c, 0xad, 0x5c, 0x0f, 0x89, 0x2d, 0x9c, 0xf2, 0xa9, 0x16, 0xce, 0x16, 0x94, 0xd7, 0x9d, 0x20, + 0xf2, 0xd8, 0x72, 0xd4, 0x8e, 0x78, 0xac, 0xac, 0xc4, 0x00, 0x57, 0x92, 0xea, 0x2f, 0xc9, 0x4b, + 0xc7, 0x1d, 0x05, 0x5f, 0xbf, 0xad, 0x9a, 0xc0, 0xc9, 0x6a, 0x86, 0xdb, 0xa0, 0x88, 0xec, 0x88, + 0xe7, 0x7a, 0xca, 0x6e, 0x94, 0xa8, 0x91, 0xba, 0x3f, 0xde, 0xeb, 0x71, 0x78, 0x8b, 0xf7, 0x01, + 0x1a, 0x82, 0x13, 0xc8, 0x06, 0x43, 0x86, 0xa0, 0x5e, 0x91, 0xb2, 0x06, 0x63, 0x44, 0xf2, 0x75, + 0x28, 0xb3, 0xff, 0x18, 0x38, 0xc8, 0xa3, 0x3c, 0x16, 0x56, 0xe2, 0x46, 0xa6, 0x4f, 0x68, 0x1e, + 0x5d, 0xa8, 0x41, 0x23, 0x3e, 0x81, 0x91, 0x71, 0x7a, 0x37, 0x45, 0xe3, 0x66, 0xfe, 0xc0, 0x80, + 0xf3, 0x7d, 0x78, 0x0c, 0xfc, 0x0c, 0xd1, 0x6c, 0xb2, 0x20, 0x29, 0x06, 0xb7, 0x58, 0x90, 0xd4, + 0x81, 0x21, 0x97, 0xa6, 0xec, 0x28, 0x56, 0xf9, 0x4f, 0x2d, 0x8a, 0x95, 0x79, 0x64, 0xc0, 0xa8, + 0xd2, 0xb3, 0xcf, 0xf0, 0x75, 0x81, 0x2b, 0x22, 0x9c, 0x63, 0x3e, 0xc1, 0x4b, 0xbd, 0x72, 0xcd, + 0xc3, 0x37, 0x7e, 0x03, 0x60, 0xc5, 0x09, 0xa3, 0x5a, 0x33, 0xf2, 0x1e, 0xd2, 0x01, 0xc4, 0x58, + 0x72, 0xfb, 0xde, 0xc1, 0xe8, 0xa8, 0x8c, 0xac, 0xe7, 0xf6, 0x7d, 0xcc, 0xd0, 0x5c, 0x85, 0xe1, + 0x86, 0x1f, 0x44, 0xf5, 0x43, 0xbe, 0x36, 0x2d, 0xd0, 0xb0, 0xa9, 0x6e, 0xbb, 0x79, 0x68, 0x80, + 0x37, 0x2d, 0x91, 0xc4, 0x14, 0xc4, 0x3b, 0x1e, 0x6d, 0xb9, 0xea, 0xb1, 0xcb, 0x03, 0x06, 0xb0, + 0x38, 0xfc, 0xfa, 0x07, 0x30, 0x21, 0x23, 0xca, 0x6d, 0xac, 0x34, 0xb0, 0x06, 0x13, 0x30, 0xba, + 0xb5, 0x68, 0x2d, 0xdf, 0xf9, 0xaa, 0x7d, 0x67, 0x73, 0x65, 0xa5, 0x72, 0x86, 0x8c, 0x41, 0x49, + 0x00, 0xe6, 0x6b, 0x15, 0x83, 0x94, 0xa1, 0xb8, 0xbc, 0xda, 0x58, 0x9c, 0xdf, 0xb4, 0x16, 0x2b, + 0xb9, 0xeb, 0xaf, 0xc1, 0x78, 0x72, 0xa8, 0x82, 0x17, 0x2f, 0x47, 0x20, 0x6f, 0xd5, 0xb6, 0x2b, + 0x67, 0x08, 0xc0, 0xf0, 0xfa, 0xbd, 0xf9, 0xc6, 0xcd, 0x9b, 0x15, 0xe3, 0xfa, 0xe7, 0x33, 0x9e, + 0x16, 0x67, 0x9c, 0x1a, 0xb4, 0xe3, 0x04, 0x4e, 0x44, 0x79, 0x36, 0xf7, 0xbb, 0xad, 0xc8, 0xeb, + 0xb4, 0xe8, 0xe3, 0x8a, 0x71, 0xfd, 0xed, 0x9e, 0x17, 0xc2, 0xc9, 0x59, 0x98, 0xdc, 0x5c, 0xad, + 0xdd, 0xaf, 0x2f, 0xdf, 0xdd, 0x5c, 0xdb, 0x6c, 0xd8, 0xf7, 0x6b, 0x1b, 0xf3, 0x4b, 0x95, 0x33, + 0xac, 0xc0, 0xf7, 0xd7, 0x1a, 0x1b, 0xb6, 0xb5, 0x38, 0xbf, 0xb8, 0xba, 0x51, 0x31, 0xae, 0xff, + 0xaa, 0x01, 0xe3, 0xfa, 0x13, 0x77, 0xe4, 0x32, 0x5c, 0xda, 0x6c, 0x2c, 0x5a, 0xf6, 0xc6, 0xda, + 0xbd, 0xc5, 0x55, 0x7b, 0xb3, 0x51, 0xbb, 0xbb, 0x68, 0x6f, 0xae, 0x36, 0xd6, 0x17, 0xe7, 0x97, + 0xef, 0x2c, 0x2f, 0x2e, 0x54, 0xce, 0x90, 0x2a, 0xbc, 0xa0, 0x60, 0x58, 0x8b, 0xf3, 0x6b, 0x5b, + 0x8b, 0x96, 0xbd, 0x5e, 0x6b, 0x34, 0xb6, 0xd7, 0xac, 0x85, 0x8a, 0x41, 0x2e, 0xc2, 0xb9, 0x0c, + 0x84, 0xfb, 0x77, 0x6a, 0x95, 0x5c, 0x4f, 0xda, 0xea, 0xe2, 0x76, 0x6d, 0xc5, 0xae, 0xaf, 0x6d, + 0x54, 0xf2, 0xd7, 0x3f, 0x60, 0x5a, 0x48, 0xf2, 0x06, 0x05, 0x29, 0x42, 0x61, 0x75, 0x6d, 0x75, + 0xb1, 0x72, 0x86, 0x8c, 0xc2, 0xc8, 0xfa, 0xe2, 0xea, 0xc2, 0xf2, 0xea, 0x5d, 0xde, 0xac, 0xb5, + 0xf5, 0x75, 0x6b, 0x6d, 0x6b, 0x71, 0xa1, 0x92, 0x63, 0x6d, 0xb7, 0xb0, 0xb8, 0xca, 0x4a, 0x96, + 0xbf, 0x6e, 0xf2, 0xb8, 0xcb, 0x5a, 0xd8, 0x50, 0xd6, 0x5a, 0x8b, 0x5f, 0xd9, 0x58, 0x5c, 0x6d, + 0x2c, 0xaf, 0xad, 0x56, 0xce, 0x5c, 0xbf, 0x94, 0xc2, 0x91, 0x3d, 0xd1, 0x68, 0x2c, 0x55, 0xce, + 0x5c, 0xff, 0x3a, 0x94, 0xd5, 0x45, 0x98, 0x9c, 0x87, 0x29, 0xf5, 0x7b, 0x9d, 0xb6, 0x5d, 0xaf, + 0xbd, 0x5b, 0x39, 0x93, 0x4e, 0xb0, 0xba, 0xed, 0x36, 0x4b, 0xc0, 0xca, 0xab, 0x09, 0x1b, 0x34, + 0x38, 0xf0, 0xda, 0x6c, 0x7d, 0xad, 0xe4, 0xea, 0x95, 0xef, 0xfd, 0xf9, 0x4b, 0x67, 0xbe, 0xf7, + 0xfd, 0x97, 0x8c, 0x3f, 0xfd, 0xfe, 0x4b, 0xc6, 0x7f, 0xfb, 0xfe, 0x4b, 0xc6, 0xce, 0x30, 0x0e, + 0xf4, 0x5b, 0xff, 0x2f, 0x00, 0x00, 0xff, 0xff, 0x37, 0x69, 0x6e, 0xcf, 0x0a, 0xb8, 0x00, 0x00, } func (m *KeepAlive) Marshal() (dAtA []byte, err error) { @@ -13009,10 +13123,14 @@ func (m *ClusterNetworkingConfigSpecV2) MarshalToSizedBuffer(dAtA []byte) (int, i -= len(m.XXX_unrecognized) copy(dAtA[i:], m.XXX_unrecognized) } - if m.ProxyPeering != 0 { - i = encodeVarintTypes(dAtA, i, uint64(m.ProxyPeering)) - i-- - dAtA[i] = 0x48 + if m.TunnelStrategy != nil { + { + size := m.TunnelStrategy.Size() + i -= size + if _, err := m.TunnelStrategy.MarshalTo(dAtA[i:]); err != nil { + return 0, err + } + } } if m.RoutingStrategy != 0 { i = encodeVarintTypes(dAtA, i, uint64(m.RoutingStrategy)) @@ -13059,6 +13177,121 @@ func (m *ClusterNetworkingConfigSpecV2) MarshalToSizedBuffer(dAtA []byte) (int, return len(dAtA) - i, nil } +func (m *ClusterNetworkingConfigSpecV2_AgentMesh) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *ClusterNetworkingConfigSpecV2_AgentMesh) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + if m.AgentMesh != nil { + { + size, err := m.AgentMesh.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTypes(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x4a + } + return len(dAtA) - i, nil +} +func (m *ClusterNetworkingConfigSpecV2_ProxyPeering) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *ClusterNetworkingConfigSpecV2_ProxyPeering) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + if m.ProxyPeering != nil { + { + size, err := m.ProxyPeering.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTypes(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x52 + } + return len(dAtA) - i, nil +} +func (m *AgentMeshTunnelStrategy) 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 *AgentMeshTunnelStrategy) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *AgentMeshTunnelStrategy) 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.Type) > 0 { + i -= len(m.Type) + copy(dAtA[i:], m.Type) + i = encodeVarintTypes(dAtA, i, uint64(len(m.Type))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *ProxyPeeringTunnelStrategy) 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 *ProxyPeeringTunnelStrategy) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *ProxyPeeringTunnelStrategy) 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 m.AgentConnectionCount != 0 { + i = encodeVarintTypes(dAtA, i, uint64(m.AgentConnectionCount)) + i-- + dAtA[i] = 0x10 + } + if len(m.Type) > 0 { + i -= len(m.Type) + copy(dAtA[i:], m.Type) + i = encodeVarintTypes(dAtA, i, uint64(len(m.Type))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + func (m *SessionRecordingConfigV2) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) @@ -13652,12 +13885,12 @@ func (m *UserTokenSpecV3) MarshalToSizedBuffer(dAtA []byte) (int, error) { i -= len(m.XXX_unrecognized) copy(dAtA[i:], m.XXX_unrecognized) } - n73, err73 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.Created, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.Created):]) - if err73 != nil { - return 0, err73 + n75, err75 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.Created, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.Created):]) + if err75 != nil { + return 0, err75 } - i -= n73 - i = encodeVarintTypes(dAtA, i, uint64(n73)) + i -= n75 + i = encodeVarintTypes(dAtA, i, uint64(n75)) i-- dAtA[i] = 0x22 if m.Usage != 0 { @@ -13774,12 +14007,12 @@ func (m *UserTokenSecretsSpecV3) MarshalToSizedBuffer(dAtA []byte) (int, error) i -= len(m.XXX_unrecognized) copy(dAtA[i:], m.XXX_unrecognized) } - n76, err76 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.Created, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.Created):]) - if err76 != nil { - return 0, err76 + n78, err78 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.Created, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.Created):]) + if err78 != nil { + return 0, err78 } - i -= n76 - i = encodeVarintTypes(dAtA, i, uint64(n76)) + i -= n78 + i = encodeVarintTypes(dAtA, i, uint64(n78)) i-- dAtA[i] = 0x1a if len(m.QRCode) > 0 { @@ -13943,20 +14176,20 @@ func (m *AccessReview) MarshalToSizedBuffer(dAtA []byte) (int, error) { copy(dAtA[i:], m.XXX_unrecognized) } if len(m.ThresholdIndexes) > 0 { - dAtA80 := make([]byte, len(m.ThresholdIndexes)*10) - var j79 int + dAtA82 := make([]byte, len(m.ThresholdIndexes)*10) + var j81 int for _, num := range m.ThresholdIndexes { for num >= 1<<7 { - dAtA80[j79] = uint8(uint64(num)&0x7f | 0x80) + dAtA82[j81] = uint8(uint64(num)&0x7f | 0x80) num >>= 7 - j79++ + j81++ } - dAtA80[j79] = uint8(num) - j79++ + dAtA82[j81] = uint8(num) + j81++ } - i -= j79 - copy(dAtA[i:], dAtA80[:j79]) - i = encodeVarintTypes(dAtA, i, uint64(j79)) + i -= j81 + copy(dAtA[i:], dAtA82[:j81]) + i = encodeVarintTypes(dAtA, i, uint64(j81)) i-- dAtA[i] = 0x3a } @@ -13970,12 +14203,12 @@ func (m *AccessReview) MarshalToSizedBuffer(dAtA []byte) (int, error) { } i-- dAtA[i] = 0x32 - n82, err82 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.Created, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.Created):]) - if err82 != nil { - return 0, err82 + n84, err84 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.Created, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.Created):]) + if err84 != nil { + return 0, err84 } - i -= n82 - i = encodeVarintTypes(dAtA, i, uint64(n82)) + i -= n84 + i = encodeVarintTypes(dAtA, i, uint64(n84)) i-- dAtA[i] = 0x2a if len(m.Reason) > 0 { @@ -14078,20 +14311,20 @@ func (m *ThresholdIndexSet) MarshalToSizedBuffer(dAtA []byte) (int, error) { copy(dAtA[i:], m.XXX_unrecognized) } if len(m.Indexes) > 0 { - dAtA85 := make([]byte, len(m.Indexes)*10) - var j84 int + dAtA87 := make([]byte, len(m.Indexes)*10) + var j86 int for _, num := range m.Indexes { for num >= 1<<7 { - dAtA85[j84] = uint8(uint64(num)&0x7f | 0x80) + dAtA87[j86] = uint8(uint64(num)&0x7f | 0x80) num >>= 7 - j84++ + j86++ } - dAtA85[j84] = uint8(num) - j84++ + dAtA87[j86] = uint8(num) + j86++ } - i -= j84 - copy(dAtA[i:], dAtA85[:j84]) - i = encodeVarintTypes(dAtA, i, uint64(j84)) + i -= j86 + copy(dAtA[i:], dAtA87[:j86]) + i = encodeVarintTypes(dAtA, i, uint64(j86)) i-- dAtA[i] = 0xa } @@ -14258,20 +14491,20 @@ func (m *AccessRequestSpecV3) MarshalToSizedBuffer(dAtA []byte) (int, error) { i-- dAtA[i] = 0x32 } - n89, err89 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.Expires, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.Expires):]) - if err89 != nil { - return 0, err89 + n91, err91 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.Expires, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.Expires):]) + if err91 != nil { + return 0, err91 } - i -= n89 - i = encodeVarintTypes(dAtA, i, uint64(n89)) + i -= n91 + i = encodeVarintTypes(dAtA, i, uint64(n91)) i-- dAtA[i] = 0x2a - n90, err90 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.Created, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.Created):]) - if err90 != nil { - return 0, err90 + n92, err92 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.Created, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.Created):]) + if err92 != nil { + return 0, err92 } - i -= n90 - i = encodeVarintTypes(dAtA, i, uint64(n90)) + i -= n92 + i = encodeVarintTypes(dAtA, i, uint64(n92)) i-- dAtA[i] = 0x22 if m.State != 0 { @@ -15970,12 +16203,12 @@ func (m *UserSpecV2) MarshalToSizedBuffer(dAtA []byte) (int, error) { } i-- dAtA[i] = 0x42 - n117, err117 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.Expires, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.Expires):]) - if err117 != nil { - return 0, err117 + n119, err119 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.Expires, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.Expires):]) + if err119 != nil { + return 0, err119 } - i -= n117 - i = encodeVarintTypes(dAtA, i, uint64(n117)) + i -= n119 + i = encodeVarintTypes(dAtA, i, uint64(n119)) i-- dAtA[i] = 0x3a { @@ -16117,28 +16350,28 @@ func (m *LoginStatus) MarshalToSizedBuffer(dAtA []byte) (int, error) { i -= len(m.XXX_unrecognized) copy(dAtA[i:], m.XXX_unrecognized) } - n120, err120 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.RecoveryAttemptLockExpires, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.RecoveryAttemptLockExpires):]) - if err120 != nil { - return 0, err120 + n122, err122 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.RecoveryAttemptLockExpires, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.RecoveryAttemptLockExpires):]) + if err122 != nil { + return 0, err122 } - i -= n120 - i = encodeVarintTypes(dAtA, i, uint64(n120)) + i -= n122 + i = encodeVarintTypes(dAtA, i, uint64(n122)) i-- dAtA[i] = 0x2a - n121, err121 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.LockExpires, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.LockExpires):]) - if err121 != nil { - return 0, err121 + n123, err123 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.LockExpires, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.LockExpires):]) + if err123 != nil { + return 0, err123 } - i -= n121 - i = encodeVarintTypes(dAtA, i, uint64(n121)) + i -= n123 + i = encodeVarintTypes(dAtA, i, uint64(n123)) i-- dAtA[i] = 0x22 - n122, err122 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.LockedTime, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.LockedTime):]) - if err122 != nil { - return 0, err122 + n124, err124 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.LockedTime, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.LockedTime):]) + if err124 != nil { + return 0, err124 } - i -= n122 - i = encodeVarintTypes(dAtA, i, uint64(n122)) + i -= n124 + i = encodeVarintTypes(dAtA, i, uint64(n124)) i-- dAtA[i] = 0x1a if len(m.LockedMessage) > 0 { @@ -16195,12 +16428,12 @@ func (m *CreatedBy) MarshalToSizedBuffer(dAtA []byte) (int, error) { } i-- dAtA[i] = 0x1a - n124, err124 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.Time, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.Time):]) - if err124 != nil { - return 0, err124 + n126, err126 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.Time, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.Time):]) + if err126 != nil { + return 0, err126 } - i -= n124 - i = encodeVarintTypes(dAtA, i, uint64(n124)) + i -= n126 + i = encodeVarintTypes(dAtA, i, uint64(n126)) i-- dAtA[i] = 0x12 if m.Connector != nil { @@ -16318,20 +16551,20 @@ func (m *MFADevice) MarshalToSizedBuffer(dAtA []byte) (int, error) { } } } - n127, err127 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.LastUsed, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.LastUsed):]) - if err127 != nil { - return 0, err127 + n129, err129 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.LastUsed, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.LastUsed):]) + if err129 != nil { + return 0, err129 } - i -= n127 - i = encodeVarintTypes(dAtA, i, uint64(n127)) + i -= n129 + i = encodeVarintTypes(dAtA, i, uint64(n129)) i-- dAtA[i] = 0x3a - n128, err128 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.AddedAt, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.AddedAt):]) - if err128 != nil { - return 0, err128 + n130, err130 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.AddedAt, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.AddedAt):]) + if err130 != nil { + return 0, err130 } - i -= n128 - i = encodeVarintTypes(dAtA, i, uint64(n128)) + i -= n130 + i = encodeVarintTypes(dAtA, i, uint64(n130)) i-- dAtA[i] = 0x32 if len(m.Id) > 0 { @@ -16928,12 +17161,12 @@ func (m *TunnelConnectionSpecV2) MarshalToSizedBuffer(dAtA []byte) (int, error) i-- dAtA[i] = 0x22 } - n137, err137 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.LastHeartbeat, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.LastHeartbeat):]) - if err137 != nil { - return 0, err137 + n139, err139 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.LastHeartbeat, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.LastHeartbeat):]) + if err139 != nil { + return 0, err139 } - i -= n137 - i = encodeVarintTypes(dAtA, i, uint64(n137)) + i -= n139 + i = encodeVarintTypes(dAtA, i, uint64(n139)) i-- dAtA[i] = 0x1a if len(m.ProxyName) > 0 { @@ -17025,12 +17258,12 @@ func (m *AcquireSemaphoreRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) i-- dAtA[i] = 0x2a } - n138, err138 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.Expires, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.Expires):]) - if err138 != nil { - return 0, err138 + n140, err140 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.Expires, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.Expires):]) + if err140 != nil { + return 0, err140 } - i -= n138 - i = encodeVarintTypes(dAtA, i, uint64(n138)) + i -= n140 + i = encodeVarintTypes(dAtA, i, uint64(n140)) i-- dAtA[i] = 0x22 if m.MaxLeases != 0 { @@ -17079,12 +17312,12 @@ func (m *SemaphoreLease) MarshalToSizedBuffer(dAtA []byte) (int, error) { i -= len(m.XXX_unrecognized) copy(dAtA[i:], m.XXX_unrecognized) } - n139, err139 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.Expires, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.Expires):]) - if err139 != nil { - return 0, err139 + n141, err141 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.Expires, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.Expires):]) + if err141 != nil { + return 0, err141 } - i -= n139 - i = encodeVarintTypes(dAtA, i, uint64(n139)) + i -= n141 + i = encodeVarintTypes(dAtA, i, uint64(n141)) i-- dAtA[i] = 0x2a if len(m.LeaseID) > 0 { @@ -17142,12 +17375,12 @@ func (m *SemaphoreLeaseRef) MarshalToSizedBuffer(dAtA []byte) (int, error) { i-- dAtA[i] = 0x1a } - n140, err140 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.Expires, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.Expires):]) - if err140 != nil { - return 0, err140 + n142, err142 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.Expires, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.Expires):]) + if err142 != nil { + return 0, err142 } - i -= n140 - i = encodeVarintTypes(dAtA, i, uint64(n140)) + i -= n142 + i = encodeVarintTypes(dAtA, i, uint64(n142)) i-- dAtA[i] = 0x12 if len(m.LeaseID) > 0 { @@ -17366,28 +17599,28 @@ func (m *WebSessionSpecV2) MarshalToSizedBuffer(dAtA []byte) (int, error) { i-- dAtA[i] = 0x48 } - n145, err145 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.LoginTime, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.LoginTime):]) - if err145 != nil { - return 0, err145 + n147, err147 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.LoginTime, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.LoginTime):]) + if err147 != nil { + return 0, err147 } - i -= n145 - i = encodeVarintTypes(dAtA, i, uint64(n145)) + i -= n147 + i = encodeVarintTypes(dAtA, i, uint64(n147)) i-- dAtA[i] = 0x42 - n146, err146 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.Expires, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.Expires):]) - if err146 != nil { - return 0, err146 + n148, err148 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.Expires, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.Expires):]) + if err148 != nil { + return 0, err148 } - i -= n146 - i = encodeVarintTypes(dAtA, i, uint64(n146)) + i -= n148 + i = encodeVarintTypes(dAtA, i, uint64(n148)) i-- dAtA[i] = 0x3a - n147, err147 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.BearerTokenExpires, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.BearerTokenExpires):]) - if err147 != nil { - return 0, err147 + n149, err149 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.BearerTokenExpires, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.BearerTokenExpires):]) + if err149 != nil { + return 0, err149 } - i -= n147 - i = encodeVarintTypes(dAtA, i, uint64(n147)) + i -= n149 + i = encodeVarintTypes(dAtA, i, uint64(n149)) i-- dAtA[i] = 0x32 if len(m.BearerToken) > 0 { @@ -17554,12 +17787,12 @@ func (m *RemoteClusterStatusV3) MarshalToSizedBuffer(dAtA []byte) (int, error) { i -= len(m.XXX_unrecognized) copy(dAtA[i:], m.XXX_unrecognized) } - n150, err150 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.LastHeartbeat, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.LastHeartbeat):]) - if err150 != nil { - return 0, err150 + n152, err152 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.LastHeartbeat, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.LastHeartbeat):]) + if err152 != nil { + return 0, err152 } - i -= n150 - i = encodeVarintTypes(dAtA, i, uint64(n150)) + i -= n152 + i = encodeVarintTypes(dAtA, i, uint64(n152)) i-- dAtA[i] = 0x12 if len(m.Connection) > 0 { @@ -19331,12 +19564,12 @@ func (m *LockSpecV2) MarshalToSizedBuffer(dAtA []byte) (int, error) { copy(dAtA[i:], m.XXX_unrecognized) } if m.Expires != nil { - n169, err169 := github_com_gogo_protobuf_types.StdTimeMarshalTo(*m.Expires, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(*m.Expires):]) - if err169 != nil { - return 0, err169 + n171, err171 := github_com_gogo_protobuf_types.StdTimeMarshalTo(*m.Expires, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(*m.Expires):]) + if err171 != nil { + return 0, err171 } - i -= n169 - i = encodeVarintTypes(dAtA, i, uint64(n169)) + i -= n171 + i = encodeVarintTypes(dAtA, i, uint64(n171)) i-- dAtA[i] = 0x1a } @@ -20010,12 +20243,12 @@ func (m *RecoveryCodesSpecV1) MarshalToSizedBuffer(dAtA []byte) (int, error) { i -= len(m.XXX_unrecognized) copy(dAtA[i:], m.XXX_unrecognized) } - n179, err179 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.Created, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.Created):]) - if err179 != nil { - return 0, err179 + n181, err181 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.Created, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.Created):]) + if err181 != nil { + return 0, err181 } - i -= n179 - i = encodeVarintTypes(dAtA, i, uint64(n179)) + i -= n181 + i = encodeVarintTypes(dAtA, i, uint64(n181)) i-- dAtA[i] = 0x12 if len(m.Codes) > 0 { @@ -20245,20 +20478,20 @@ func (m *SessionTrackerSpecV1) MarshalToSizedBuffer(dAtA []byte) (int, error) { i-- dAtA[i] = 0x32 } - n182, err182 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.Expires, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.Expires):]) - if err182 != nil { - return 0, err182 + n184, err184 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.Expires, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.Expires):]) + if err184 != nil { + return 0, err184 } - i -= n182 - i = encodeVarintTypes(dAtA, i, uint64(n182)) + i -= n184 + i = encodeVarintTypes(dAtA, i, uint64(n184)) i-- dAtA[i] = 0x2a - n183, err183 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.Created, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.Created):]) - if err183 != nil { - return 0, err183 + n185, err185 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.Created, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.Created):]) + if err185 != nil { + return 0, err185 } - i -= n183 - i = encodeVarintTypes(dAtA, i, uint64(n183)) + i -= n185 + i = encodeVarintTypes(dAtA, i, uint64(n185)) i-- dAtA[i] = 0x22 if m.State != 0 { @@ -20362,12 +20595,12 @@ func (m *Participant) MarshalToSizedBuffer(dAtA []byte) (int, error) { i -= len(m.XXX_unrecognized) copy(dAtA[i:], m.XXX_unrecognized) } - n184, err184 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.LastActive, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.LastActive):]) - if err184 != nil { - return 0, err184 + n186, err186 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.LastActive, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.LastActive):]) + if err186 != nil { + return 0, err186 } - i -= n184 - i = encodeVarintTypes(dAtA, i, uint64(n184)) + i -= n186 + i = encodeVarintTypes(dAtA, i, uint64(n186)) i-- dAtA[i] = 0x22 if len(m.Mode) > 0 { @@ -21901,8 +22134,67 @@ func (m *ClusterNetworkingConfigSpecV2) Size() (n int) { if m.RoutingStrategy != 0 { n += 1 + sovTypes(uint64(m.RoutingStrategy)) } - if m.ProxyPeering != 0 { - n += 1 + sovTypes(uint64(m.ProxyPeering)) + if m.TunnelStrategy != nil { + n += m.TunnelStrategy.Size() + } + if m.XXX_unrecognized != nil { + n += len(m.XXX_unrecognized) + } + return n +} + +func (m *ClusterNetworkingConfigSpecV2_AgentMesh) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.AgentMesh != nil { + l = m.AgentMesh.Size() + n += 1 + l + sovTypes(uint64(l)) + } + return n +} +func (m *ClusterNetworkingConfigSpecV2_ProxyPeering) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.ProxyPeering != nil { + l = m.ProxyPeering.Size() + n += 1 + l + sovTypes(uint64(l)) + } + return n +} +func (m *AgentMeshTunnelStrategy) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Type) + if l > 0 { + n += 1 + l + sovTypes(uint64(l)) + } + if m.XXX_unrecognized != nil { + n += len(m.XXX_unrecognized) + } + return n +} + +func (m *ProxyPeeringTunnelStrategy) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Type) + if l > 0 { + n += 1 + l + sovTypes(uint64(l)) + } + if m.AgentConnectionCount != 0 { + n += 1 + sovTypes(uint64(m.AgentConnectionCount)) } if m.XXX_unrecognized != nil { n += len(m.XXX_unrecognized) @@ -35383,10 +35675,246 @@ func (m *ClusterNetworkingConfigSpecV2) Unmarshal(dAtA []byte) error { } } case 9: - if wireType != 0 { + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field AgentMesh", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTypes + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthTypes + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthTypes + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + v := &AgentMeshTunnelStrategy{} + if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + m.TunnelStrategy = &ClusterNetworkingConfigSpecV2_AgentMesh{v} + iNdEx = postIndex + case 10: + if wireType != 2 { return fmt.Errorf("proto: wrong wireType = %d for field ProxyPeering", wireType) } - m.ProxyPeering = 0 + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTypes + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthTypes + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthTypes + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + v := &ProxyPeeringTunnelStrategy{} + if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + m.TunnelStrategy = &ClusterNetworkingConfigSpecV2_ProxyPeering{v} + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipTypes(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthTypes + } + 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 *AgentMeshTunnelStrategy) 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 ErrIntOverflowTypes + } + 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: AgentMeshTunnelStrategy: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: AgentMeshTunnelStrategy: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + 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 ErrIntOverflowTypes + } + 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 ErrInvalidLengthTypes + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthTypes + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Type = TunnelStrategyType(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipTypes(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthTypes + } + 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 *ProxyPeeringTunnelStrategy) 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 ErrIntOverflowTypes + } + 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: ProxyPeeringTunnelStrategy: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ProxyPeeringTunnelStrategy: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + 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 ErrIntOverflowTypes + } + 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 ErrInvalidLengthTypes + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthTypes + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Type = TunnelStrategyType(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field AgentConnectionCount", wireType) + } + m.AgentConnectionCount = 0 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowTypes @@ -35396,7 +35924,7 @@ func (m *ClusterNetworkingConfigSpecV2) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.ProxyPeering |= ProxyPeering(b&0x7F) << shift + m.AgentConnectionCount |= int64(b&0x7F) << shift if b < 0x80 { break } diff --git a/api/types/types.proto b/api/types/types.proto index 06e603e535b9..67215d6ff874 100644 --- a/api/types/types.proto +++ b/api/types/types.proto @@ -923,16 +923,39 @@ message ClusterNetworkingConfigSpecV2 { // RoutingStrategy determines the strategy used to route to nodes. RoutingStrategy RoutingStrategy = 8 [ (gogoproto.jsontag) = "routing_strategy,omitempty" ]; - // ProxyPeeringMode determines if proxy peering is enabled in the cluster. - ProxyPeering ProxyPeering = 9 [ (gogoproto.jsontag) = "proxy_peering,omitempty" ]; + // TunnelStrategy determines the tunnel strategy used in the cluster. + oneof TunnelStrategy { + AgentMeshTunnelStrategy AgentMesh = 9 [ + (gogoproto.jsontag) = "tunnel_strategy,omitempty", + (gogoproto.moretags) = "yaml:\"tunnel_strategy,omitempty\"" + ]; + ProxyPeeringTunnelStrategy ProxyPeering = 10 [ + (gogoproto.jsontag) = "tunnel_strategy,omitempty", + (gogoproto.moretags) = "yaml:\"tunnel_strategy,omitempty\"" + ]; + } +} + +// AgentMeshTunnelStrategy requires reverse tunnels to dial every proxy. +message AgentMeshTunnelStrategy { + string Type = 1 [ + (gogoproto.jsontag) = "type,omitempty", + (gogoproto.moretags) = "yaml:\"type,omitempty\"", + (gogoproto.casttype) = "TunnelStrategyType" + ]; } -// ProxyPeeringMode represents the cluster proxy peering mode. -enum ProxyPeering { - // Disabled is set if proxy peering is disabled. - Disabled = 0; - // Enabled is set if proxy peering is enabled. - Enabled = 1; +// ProxyPeeringTunnelStrategy requires reverse tunnels to dial a fixed number of proxies. +message ProxyPeeringTunnelStrategy { + string Type = 1 [ + (gogoproto.jsontag) = "type,omitempty", + (gogoproto.moretags) = "yaml:\"type,omitempty\"", + (gogoproto.casttype) = "TunnelStrategyType" + ]; + int64 AgentConnectionCount = 2 [ + (gogoproto.jsontag) = "agent_connection_count,omitempty", + (gogoproto.moretags) = "yaml:\"agent_connection_count,omitempty\"" + ]; } // ProxyListenerMode represents the cluster proxy listener mode. diff --git a/lib/config/configuration.go b/lib/config/configuration.go index 56b95cc57da2..edb0cb277669 100644 --- a/lib/config/configuration.go +++ b/lib/config/configuration.go @@ -573,6 +573,15 @@ func applyAuthConfig(fc *FileConfig, cfg *service.Config) error { return trace.Wrap(err) } + tunnelStrategy, err := fc.Auth.TunnelStrategy.Parse() + if err != nil { + return trace.Wrap(err) + } + err = cfg.Auth.NetworkingConfig.SetTunnelStrategy(tunnelStrategy) + if err != nil { + return trace.Wrap(err) + } + // Set cluster networking configuration from file configuration. cfg.Auth.NetworkingConfig, err = types.NewClusterNetworkingConfigFromConfigFile(types.ClusterNetworkingConfigSpecV2{ ClientIdleTimeout: fc.Auth.ClientIdleTimeout, @@ -583,7 +592,7 @@ func applyAuthConfig(fc *FileConfig, cfg *service.Config) error { SessionControlTimeout: fc.Auth.SessionControlTimeout, ProxyListenerMode: fc.Auth.ProxyListenerMode, RoutingStrategy: fc.Auth.RoutingStrategy, - ProxyPeering: fc.Auth.ProxyPeering, + TunnelStrategy: tunnelStrategy, }) if err != nil { return trace.Wrap(err) diff --git a/lib/config/configuration_test.go b/lib/config/configuration_test.go index 85ac2a38d47d..be7562dbde24 100644 --- a/lib/config/configuration_test.go +++ b/lib/config/configuration_test.go @@ -26,6 +26,7 @@ import ( "path" "path/filepath" "strconv" + "strings" "testing" "time" @@ -654,7 +655,10 @@ func TestApplyConfig(t *testing.T) { require.Equal(t, "magadan", cfg.Auth.ClusterName.GetClusterName()) require.True(t, cfg.Auth.Preference.GetAllowLocalAuth()) require.Equal(t, "10.10.10.1", cfg.AdvertiseIP) - require.Equal(t, types.ProxyPeering_Enabled, cfg.Auth.NetworkingConfig.GetProxyPeering()) + tunnelStrategyType, err := cfg.Auth.NetworkingConfig.GetTunnelStrategyType() + require.NoError(t, err) + require.Equal(t, types.AgentMesh, tunnelStrategyType) + require.Equal(t, types.DefaultAgentMeshTunnelStrategy(), cfg.Auth.NetworkingConfig.GetAgentMeshTunnelStrategy()) require.True(t, cfg.Proxy.Enabled) require.Equal(t, "tcp://webhost:3080", cfg.Proxy.WebAddr.FullAddress()) @@ -877,6 +881,81 @@ func TestBackendDefaults(t *testing.T) { require.False(t, cfg.Proxy.Kube.Enabled) } +func TestTunnelStrategy(t *testing.T) { + tests := []struct { + desc string + config string + applyErr require.ErrorAssertionFunc + tunnelStrategy interface{} + }{ + { + desc: "Ensure default is used when no tunnel strategy is given", + config: strings.Join([]string{ + "auth_service:", + " enabled: yes", + }, "\n"), + applyErr: require.NoError, + tunnelStrategy: types.DefaultAgentMeshTunnelStrategy(), + }, + { + desc: "Ensure default parameters are used for proxy peering strategy", + config: strings.Join([]string{ + "auth_service:", + " enabled: yes", + " tunnel_strategy:", + " type: proxy_peering", + }, "\n"), + applyErr: require.NoError, + tunnelStrategy: types.DefaultProxyPeeringTunnelStrategy(), + }, + { + desc: "Ensure proxy peering strategy parameters are set", + config: strings.Join([]string{ + "auth_service:", + " enabled: yes", + " tunnel_strategy:", + " type: proxy_peering", + " agent_connection_count: 2", + }, "\n"), + applyErr: require.NoError, + tunnelStrategy: &types.ProxyPeeringTunnelStrategy{ + Type: types.ProxyPeering, + AgentConnectionCount: 2, + }, + }, + { + desc: "Ensure tunnel strategy cannot take unknown parameters", + config: strings.Join([]string{ + "auth_service:", + " enabled: yes", + " tunnel_strategy:", + " type: agent_mesh", + " agent_connection_count: 2", + }, "\n"), + applyErr: require.Error, + tunnelStrategy: types.DefaultAgentMeshTunnelStrategy(), + }, + } + + for _, tc := range tests { + conf, err := ReadConfig(bytes.NewBufferString(tc.config)) + require.NoError(t, err, tc.desc) + + cfg := service.MakeDefaultConfig() + err = ApplyFileConfig(conf, cfg) + tc.applyErr(t, err, tc.desc) + + var actualStrategy interface{} + if cfg.Auth.NetworkingConfig == nil { + } else if s := cfg.Auth.NetworkingConfig.GetAgentMeshTunnelStrategy(); s != nil { + actualStrategy = s + } else if s := cfg.Auth.NetworkingConfig.GetProxyPeeringTunnelStrategy(); s != nil { + actualStrategy = s + } + require.Equal(t, tc.tunnelStrategy, actualStrategy, tc.desc) + } +} + // TestParseKey ensures that keys are parsed correctly if they are in // authorized_keys format or known_hosts format. func TestParseKey(t *testing.T) { diff --git a/lib/config/fileconf.go b/lib/config/fileconf.go index 634a432076a4..72a4033cfd29 100644 --- a/lib/config/fileconf.go +++ b/lib/config/fileconf.go @@ -581,8 +581,8 @@ type Auth struct { // RoutingStrategy configures the routing strategy to nodes. RoutingStrategy types.RoutingStrategy `yaml:"routing_strategy,omitempty"` - // ProxyPeering configures proxy to proxy communication. - ProxyPeering types.ProxyPeering `yaml:"proxy_peering,omitempty"` + // TunnelStrategy configures the tunnel strategy used by the cluster. + TunnelStrategy types.TunnelStrategyConfig `yaml:"tunnel_strategy,omitempty"` } // CAKeyParams configures how CA private keys will be created and stored. diff --git a/lib/config/testdata_test.go b/lib/config/testdata_test.go index 0ea162c79aba..a03b0b120d18 100644 --- a/lib/config/testdata_test.go +++ b/lib/config/testdata_test.go @@ -110,7 +110,6 @@ teleport: auth_service: enabled: yes listen_addr: 10.5.5.1:3025 - proxy_peering: enabled cluster_name: magadan tokens: - "proxy,node:xxx" diff --git a/lib/service/service.go b/lib/service/service.go index 832ac2e3562c..372dfe09703f 100644 --- a/lib/service/service.go +++ b/lib/service/service.go @@ -2637,7 +2637,12 @@ func (process *TeleportProcess) setupProxyListeners(networkingConfig types.Clust listeners.db.mongo = listener } - if !cfg.Proxy.DisableReverseTunnel && networkingConfig.GetProxyPeering() == types.ProxyPeering_Enabled { + tunnelStrategy, err := networkingConfig.GetTunnelStrategyType() + if err != nil { + return nil, trace.Wrap(err) + } + + if !cfg.Proxy.DisableReverseTunnel && tunnelStrategy == types.ProxyPeering { addr, err := peerAddr(&process.Config.Proxy.PeerAddr) if err != nil { return nil, trace.Wrap(err) From 1b0a583b5ddd06a5fd37bedf61212a4cb9e85d31 Mon Sep 17 00:00:00 2001 From: David Date: Thu, 17 Mar 2022 15:31:56 -0600 Subject: [PATCH 16/30] Refactor tunnel strategy configuration --- api/types/constants.go | 6 +- api/types/networking.go | 35 +- api/types/tunnel_strategy.go | 222 ++- api/types/tunnel_strategy_test.go | 55 +- api/types/types.pb.go | 2345 +++++++++++++++-------------- api/types/types.proto | 34 +- api/utils/conv.go | 18 + lib/config/configuration.go | 11 +- lib/config/configuration_test.go | 38 +- lib/config/fileconf.go | 2 +- 10 files changed, 1462 insertions(+), 1304 deletions(-) diff --git a/api/types/constants.go b/api/types/constants.go index 03fadda0f0d4..a615724263db 100644 --- a/api/types/constants.go +++ b/api/types/constants.go @@ -370,11 +370,11 @@ const ( type TunnelStrategyType string const ( - // WarDialTunnelStrategy requires agents to create a reverse tunnel to + // AgentMesh requires agents to create a reverse tunnel to // every proxy server. AgentMesh TunnelStrategyType = "agent_mesh" - // ProxyPeering requires agents to create a reverse tunnel to - // a single proxy instance and enables proxy to proxy communication. + // ProxyPeering requires agents to create a reverse tunnel to a configured + // number of proxy servers and enables proxy to proxy communication. ProxyPeering TunnelStrategyType = "proxy_peering" ) diff --git a/api/types/networking.go b/api/types/networking.go index dc0251f7993d..7f7935174be0 100644 --- a/api/types/networking.go +++ b/api/types/networking.go @@ -99,7 +99,7 @@ type ClusterNetworkingConfig interface { GetProxyPeeringTunnelStrategy() *ProxyPeeringTunnelStrategy // SetTunnelStrategy sets the tunnel strategy. - SetTunnelStrategy(TunnelStrategy) error + SetTunnelStrategy(*TunnelStrategyV1) } // NewClusterNetworkingConfigFromConfigFile is a convenience method to create @@ -292,38 +292,29 @@ func (c *ClusterNetworkingConfigV2) SetRoutingStrategy(strategy RoutingStrategy) // GetTunnelStrategy gets the tunnel strategy type. func (c *ClusterNetworkingConfigV2) GetTunnelStrategyType() (TunnelStrategyType, error) { - switch c.Spec.TunnelStrategy.(type) { - case *ClusterNetworkingConfigSpecV2_AgentMesh: + switch c.Spec.TunnelStrategy.Strategy.(type) { + case *TunnelStrategyV1_AgentMesh: return AgentMesh, nil - case *ClusterNetworkingConfigSpecV2_ProxyPeering: + case *TunnelStrategyV1_ProxyPeering: return ProxyPeering, nil } - return "", trace.BadParameter("unknown tunnel strategy type: %T", c.Spec.TunnelStrategy) + return "", trace.BadParameter("unknown tunnel strategy type: %T", c.Spec.TunnelStrategy.Strategy) } -// GetAgentMeshTunnelStrategy gets the war dial tunnel strategy. +// GetAgentMeshTunnelStrategy gets the agent mesh tunnel strategy. func (c *ClusterNetworkingConfigV2) GetAgentMeshTunnelStrategy() *AgentMeshTunnelStrategy { - return c.Spec.GetAgentMesh() + return c.Spec.TunnelStrategy.GetAgentMesh() } // GetProxyPeeringTunnelStrategy gets the proxy peering tunnel strategy. func (c *ClusterNetworkingConfigV2) GetProxyPeeringTunnelStrategy() *ProxyPeeringTunnelStrategy { - return c.Spec.GetProxyPeering() + return c.Spec.TunnelStrategy.GetProxyPeering() } // SetTunnelStrategy sets the tunnel strategy. -func (c *ClusterNetworkingConfigV2) SetTunnelStrategy(strategy TunnelStrategy) error { - switch strategy.(type) { - case *ClusterNetworkingConfigSpecV2_AgentMesh: - case *ClusterNetworkingConfigSpecV2_ProxyPeering: - default: - return trace.BadParameter("unknown tunnel strategy: %T", strategy) - } - +func (c *ClusterNetworkingConfigV2) SetTunnelStrategy(strategy *TunnelStrategyV1) { c.Spec.TunnelStrategy = strategy - - return nil } // CheckAndSetDefaults verifies the constraints for ClusterNetworkingConfig. @@ -347,11 +338,13 @@ func (c *ClusterNetworkingConfigV2) CheckAndSetDefaults() error { } if c.Spec.TunnelStrategy == nil { - err := c.SetTunnelStrategy(DefaultTunnelStrategy()) - if err != nil { - return trace.Wrap(err) + c.Spec.TunnelStrategy = &TunnelStrategyV1{ + Strategy: DefaultTunnelStrategy(), } } + if err := c.Spec.TunnelStrategy.CheckAndSetDefaults(); err != nil { + return trace.Wrap(err) + } return nil } diff --git a/api/types/tunnel_strategy.go b/api/types/tunnel_strategy.go index ebf4de72f39c..ffc866c0f5d7 100644 --- a/api/types/tunnel_strategy.go +++ b/api/types/tunnel_strategy.go @@ -1,7 +1,6 @@ package types import ( - "bytes" "encoding/json" "github.com/gravitational/teleport/api/utils" @@ -9,20 +8,20 @@ import ( ) const ( + tunnelStrategyTypeParam = "type" defaultAgentConnectionCount = 1 ) // DefaultAgentMeshTunnelStrategy sets default values for a agent mesh // tunnel strategy. func DefaultAgentMeshTunnelStrategy() *AgentMeshTunnelStrategy { - return &AgentMeshTunnelStrategy{Type: AgentMesh} + return &AgentMeshTunnelStrategy{} } // DefaultProxyPeeringTunnelStrategy sets default values for a proxy peering // tunnel strategy. func DefaultProxyPeeringTunnelStrategy() *ProxyPeeringTunnelStrategy { return &ProxyPeeringTunnelStrategy{ - Type: ProxyPeering, AgentConnectionCount: defaultAgentConnectionCount, } } @@ -30,14 +29,14 @@ func DefaultProxyPeeringTunnelStrategy() *ProxyPeeringTunnelStrategy { // DefaultTunnelStrategy is the default tunnel strategy used when one is not // specified. func DefaultTunnelStrategy() TunnelStrategy { - return &ClusterNetworkingConfigSpecV2_AgentMesh{ + return &TunnelStrategyV1_AgentMesh{ AgentMesh: DefaultAgentMeshTunnelStrategy(), } } // TunnelStrategy defines methods to be implemented by any TunnelStrategy. type TunnelStrategy interface { - isClusterNetworkingConfigSpecV2_TunnelStrategy + isTunnelStrategyV1_Strategy CheckAndSetDefaults() error } @@ -47,107 +46,188 @@ type TunnelStrategyConfig struct { Params map[string]interface{} `yaml:",inline" json:"-"` } -// Parse parses a TunnelStrategyConfig into a TunnelStrategy. -// The default tunnel strategy is used if the TunnelStrategyConfig is empty. -func (c *TunnelStrategyConfig) Parse() (TunnelStrategy, error) { - var strategy TunnelStrategy +// SetFromMap sets a TunnelStrategyConfig from a map. +func (c *TunnelStrategyConfig) SetFromMap(m map[string]interface{}) error { + rawStrategy, ok := m[tunnelStrategyTypeParam] + if !ok { + return trace.BadParameter("missing type parameter") + } + strategyType, ok := rawStrategy.(string) + if !ok { + return trace.BadParameter("invalid type parameter") + } + c.Type = TunnelStrategyType(strategyType) + + for k, v := range m { + if k == tunnelStrategyTypeParam { + continue + } + c.Params[k] = v + } + return nil +} + +// GetMapCopy returns a TunnelStrategyConfig as a map. +func (c *TunnelStrategyConfig) GetMapCopy() map[string]interface{} { + mCopy := make(map[string]interface{}) + for k, v := range c.Params { + mCopy[k] = v + } + mCopy[tunnelStrategyTypeParam] = c.Type + return mCopy +} + +// MarshalYAML converts a TunnelStrategyV1 to yaml. +func (s *TunnelStrategyV1) MarshalYAML() (interface{}, error) { + var config *TunnelStrategyConfig + err := s.marshal(func(c *TunnelStrategyConfig) error { + config = c + return nil + }) + if err != nil { + return nil, trace.Wrap(err) + } + return config.GetMapCopy(), nil +} - if c.Type == "" && len(c.Params) == 0 { - return DefaultTunnelStrategy(), nil +// UnmarshalYAML converts yaml to a TunnelStrategyV1 using a strict policy to +// disallow unknown fields. +func (s *TunnelStrategyV1) UnmarshalYAML(unmarshal func(interface{}) error) error { + err := s.unmarshal(utils.StrictObjectToStruct, func(c *TunnelStrategyConfig) error { + return trace.Wrap(unmarshal(c)) + }) + return trace.Wrap(err) +} + +// MarshalJSON converts a TunnelStrategyV1 to json. +func (s *TunnelStrategyV1) MarshalJSON() ([]byte, error) { + var data []byte + err := s.marshal(func(c *TunnelStrategyConfig) error { + var err error + data, err = json.Marshal(c.GetMapCopy()) + return trace.Wrap(err) + }) + if err != nil { + return nil, trace.Wrap(err) } + return data, nil +} + +// UnmarshalJSON converts json to a TunnelStrategyV1. Unknown fields are allowed +// to prevent rollbacks causing issues decoding this data from the backend. +func (s *TunnelStrategyV1) UnmarshalJSON(data []byte) error { + err := s.unmarshal(utils.ObjectToStruct, func(c *TunnelStrategyConfig) error { + params := make(map[string]interface{}) + err := json.Unmarshal(data, ¶ms) + if err != nil { + return trace.Wrap(err) + } + return trace.Wrap(c.SetFromMap(params)) + }) + return trace.Wrap(err) +} + +// marshal converts a TunnelStrategyV1 to a TunnelStrategyConfig before calling +// the given marshal function. +func (s *TunnelStrategyV1) marshal(marshal func(*TunnelStrategyConfig) error) error { + config := &TunnelStrategyConfig{ + Params: make(map[string]interface{}), + } + switch strategy := s.Strategy.(type) { + case *TunnelStrategyV1_AgentMesh: + config.Type = AgentMesh + err := utils.ObjectToStruct(strategy.AgentMesh, &config.Params) + if err != nil { + return trace.Wrap(err) + } + case *TunnelStrategyV1_ProxyPeering: + config.Type = ProxyPeering + err := utils.ObjectToStruct(strategy.ProxyPeering, &config.Params) + if err != nil { + return trace.Wrap(err) + } + default: + return trace.BadParameter("unknown tunnel strategy: \"%s\"", config.Type) + } + + return trace.Wrap(marshal(config)) +} + +// objectToStructFunc is a function that converts one struct to another. +type objectToStructFunc func(interface{}, interface{}) error - bytes, err := json.Marshal(c.Params) +func (s *TunnelStrategyV1) unmarshal(ots objectToStructFunc, unmarshal func(*TunnelStrategyConfig) error) error { + config := &TunnelStrategyConfig{ + Params: make(map[string]interface{}), + } + err := unmarshal(config) if err != nil { - return nil, trace.Wrap(err, "failed to marshal %v", c) + return trace.Wrap(err) } - switch c.Type { + switch config.Type { case AgentMesh: - agentMesh := &ClusterNetworkingConfigSpecV2_AgentMesh{ - AgentMesh: DefaultAgentMeshTunnelStrategy(), + strategy := &TunnelStrategyV1_AgentMesh{ + AgentMesh: &AgentMeshTunnelStrategy{}, } - if err = UnmarshalStrict(bytes, agentMesh.AgentMesh); err != nil { - return nil, trace.Wrap(err) + err = ots(&config.Params, strategy.AgentMesh) + if err != nil { + return trace.Wrap(err) } - strategy = agentMesh + s.Strategy = strategy case ProxyPeering: - proxyPeering := &ClusterNetworkingConfigSpecV2_ProxyPeering{ - ProxyPeering: DefaultProxyPeeringTunnelStrategy(), + strategy := &TunnelStrategyV1_ProxyPeering{ + ProxyPeering: &ProxyPeeringTunnelStrategy{}, } - if err = UnmarshalStrict(bytes, proxyPeering.ProxyPeering); err != nil { - return nil, trace.Wrap(err) + + err = ots(&config.Params, strategy.ProxyPeering) + if err != nil { + return trace.Wrap(err) } - strategy = proxyPeering + s.Strategy = strategy default: - return nil, trace.BadParameter("unknown tunnel strategy: \"%s\"", c.Type) + return trace.BadParameter("unknown tunnel strategy: \"%s\"", config.Type) } - err = strategy.CheckAndSetDefaults() - if err != nil { - return nil, trace.Wrap(err) + return nil +} + +func (s *TunnelStrategyV1) CheckAndSetDefaults() error { + if s.Strategy == nil { + s.Strategy = DefaultTunnelStrategy() } - return strategy, nil + switch strategy := s.Strategy.(type) { + case TunnelStrategy: + err := strategy.CheckAndSetDefaults() + if err != nil { + return trace.Wrap(err) + } + default: + return trace.BadParameter("unknown tunnel strategy: %T", strategy) + } + + return nil } // CheckAndSetDefaults validates an agent mesh tunnel strategy. -func (s *ClusterNetworkingConfigSpecV2_AgentMesh) CheckAndSetDefaults() error { +func (s *TunnelStrategyV1_AgentMesh) CheckAndSetDefaults() error { if s.AgentMesh == nil { s.AgentMesh = DefaultAgentMeshTunnelStrategy() } - if s.AgentMesh.Type != AgentMesh { - return trace.BadParameter("tunnel strategy must be %s: got %s", AgentMesh, s.AgentMesh.Type) - } return nil } -// MarshalYAML defines how a proxy listener mode should be marshalled to a string -func (s *AgentMeshTunnelStrategy) MarshalYAML() (interface{}, error) { - params, err := tunnelStrategyMarshalYAML(s) - return params, trace.Wrap(err) -} - // CheckAndSetDefaults validates a proxy peering tunnel strategy. -func (s *ClusterNetworkingConfigSpecV2_ProxyPeering) CheckAndSetDefaults() error { +func (s *TunnelStrategyV1_ProxyPeering) CheckAndSetDefaults() error { if s.ProxyPeering == nil { s.ProxyPeering = DefaultProxyPeeringTunnelStrategy() } - - if s.ProxyPeering.Type != ProxyPeering { - return trace.BadParameter("tunnel strategy must be %s: got %s", ProxyPeering, s.ProxyPeering.Type) - } if s.ProxyPeering.AgentConnectionCount == 0 { s.ProxyPeering.AgentConnectionCount = defaultAgentConnectionCount } return nil } - -// MarshalYAML defines how a proxy listener mode should be marshalled to a string -func (s *ProxyPeeringTunnelStrategy) MarshalYAML() (interface{}, error) { - params, err := tunnelStrategyMarshalYAML(s) - return params, trace.Wrap(err) -} - -// tunnelStratgeyMarshalYAML returns a map ready for YAML marshalling -// removing XXX_ fields from protobuf structs. -func tunnelStrategyMarshalYAML(strategy interface{}) (map[string]interface{}, error) { - params := make(map[string]interface{}) - - // We must use json conversion first to remove xxx_ fields. - err := utils.ObjectToStruct(strategy, ¶ms) - if err != nil { - return nil, trace.Wrap(err) - } - - return params, nil -} - -// UnmarshalStrict is a strict json unmarshaller. -func UnmarshalStrict(data []byte, v interface{}) error { - dec := json.NewDecoder(bytes.NewReader(data)) - dec.DisallowUnknownFields() - return trace.Wrap(dec.Decode(v)) -} diff --git a/api/types/tunnel_strategy_test.go b/api/types/tunnel_strategy_test.go index 5feaaf59dd56..329e8e95f999 100644 --- a/api/types/tunnel_strategy_test.go +++ b/api/types/tunnel_strategy_test.go @@ -12,62 +12,49 @@ func TestTunnelStrategyMarshalling(t *testing.T) { tests := []struct { json string yaml string - strategy isClusterNetworkingConfigSpecV2_TunnelStrategy + strategy *TunnelStrategyV1 }{ { - json: `{"tunnel_strategy":{"type":"agent_mesh"}}`, - yaml: "tunnel_strategy:\n type: agent_mesh\n", - strategy: &ClusterNetworkingConfigSpecV2_AgentMesh{ - AgentMesh: &AgentMeshTunnelStrategy{Type: AgentMesh}, - }, + json: `{"type":"agent_mesh"}`, + yaml: "type: agent_mesh\n", + strategy: &TunnelStrategyV1{Strategy: &TunnelStrategyV1_AgentMesh{ + AgentMesh: &AgentMeshTunnelStrategy{}, + }}, }, { - json: `{"tunnel_strategy":{"type":"proxy_peering"}}`, - yaml: "tunnel_strategy:\n type: proxy_peering\n", - strategy: &ClusterNetworkingConfigSpecV2_ProxyPeering{ - ProxyPeering: &ProxyPeeringTunnelStrategy{Type: ProxyPeering}, - }, - }, + json: `{"type":"proxy_peering"}`, + yaml: "type: proxy_peering\n", + strategy: &TunnelStrategyV1{Strategy: &TunnelStrategyV1_ProxyPeering{ + ProxyPeering: &ProxyPeeringTunnelStrategy{}, + }}}, { - json: `{"tunnel_strategy":{"type":"proxy_peering","agent_connection_count":2}}`, - yaml: "tunnel_strategy:\n agent_connection_count: 2\n type: proxy_peering\n", - strategy: &ClusterNetworkingConfigSpecV2_ProxyPeering{ + json: `{"agent_connection_count":2,"type":"proxy_peering"}`, + yaml: "agent_connection_count: 2\ntype: proxy_peering\n", + strategy: &TunnelStrategyV1{Strategy: &TunnelStrategyV1_ProxyPeering{ ProxyPeering: &ProxyPeeringTunnelStrategy{ - Type: ProxyPeering, AgentConnectionCount: 2, }, - }, + }}, }, } for _, tc := range tests { data, err := yaml.Marshal(tc.strategy) require.NoError(t, err) - s := string(data) - _ = s require.Equal(t, []byte(tc.yaml), data) data, err = json.Marshal(tc.strategy) require.NoError(t, err) - s = string(data) - _ = s require.Equal(t, []byte(tc.json), data) - var actual interface{} - switch tc.strategy.(type) { - case *ClusterNetworkingConfigSpecV2_AgentMesh: - actual = &ClusterNetworkingConfigSpecV2_AgentMesh{} - case *ClusterNetworkingConfigSpecV2_ProxyPeering: - actual = &ClusterNetworkingConfigSpecV2_ProxyPeering{} - default: - require.FailNow(t, "unexpected type: %T", tc.strategy) - } - err = json.Unmarshal([]byte(tc.json), actual) + strategy := &TunnelStrategyV1{} + err = json.Unmarshal([]byte(tc.json), strategy) require.NoError(t, err) - require.Equal(t, tc.strategy, actual) + require.Equal(t, tc.strategy, strategy) - err = yaml.Unmarshal([]byte(tc.yaml), actual) + strategy = &TunnelStrategyV1{} + err = yaml.Unmarshal([]byte(tc.yaml), strategy) require.NoError(t, err) - require.Equal(t, tc.strategy, actual) + require.Equal(t, tc.strategy, strategy) } } diff --git a/api/types/types.pb.go b/api/types/types.pb.go index d9e97f008691..75d86f708ccc 100644 --- a/api/types/types.pb.go +++ b/api/types/types.pb.go @@ -2867,15 +2867,11 @@ type ClusterNetworkingConfigSpecV2 struct { ProxyListenerMode ProxyListenerMode `protobuf:"varint,7,opt,name=ProxyListenerMode,proto3,enum=types.ProxyListenerMode" json:"proxy_listener_mode,omitempty"` // RoutingStrategy determines the strategy used to route to nodes. RoutingStrategy RoutingStrategy `protobuf:"varint,8,opt,name=RoutingStrategy,proto3,enum=types.RoutingStrategy" json:"routing_strategy,omitempty"` - // TunnelStrategy determines the tunnel strategy used in the cluster. - // - // Types that are valid to be assigned to TunnelStrategy: - // *ClusterNetworkingConfigSpecV2_AgentMesh - // *ClusterNetworkingConfigSpecV2_ProxyPeering - TunnelStrategy isClusterNetworkingConfigSpecV2_TunnelStrategy `protobuf_oneof:"TunnelStrategy"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + // TunnelStrategyV1 determines the tunnel strategy used in the cluster. + TunnelStrategy *TunnelStrategyV1 `protobuf:"bytes,9,opt,name=TunnelStrategy,proto3" json:"tunnel_strategy,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } func (m *ClusterNetworkingConfigSpecV2) Reset() { *m = ClusterNetworkingConfigSpecV2{} } @@ -2911,64 +2907,107 @@ func (m *ClusterNetworkingConfigSpecV2) XXX_DiscardUnknown() { var xxx_messageInfo_ClusterNetworkingConfigSpecV2 proto.InternalMessageInfo -type isClusterNetworkingConfigSpecV2_TunnelStrategy interface { - isClusterNetworkingConfigSpecV2_TunnelStrategy() +// TunnelStrategyV1 defines possible tunnel strategy types. +type TunnelStrategyV1 struct { + // Types that are valid to be assigned to Strategy: + // *TunnelStrategyV1_AgentMesh + // *TunnelStrategyV1_ProxyPeering + Strategy isTunnelStrategyV1_Strategy `protobuf_oneof:"Strategy"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *TunnelStrategyV1) Reset() { *m = TunnelStrategyV1{} } +func (m *TunnelStrategyV1) String() string { return proto.CompactTextString(m) } +func (*TunnelStrategyV1) ProtoMessage() {} +func (*TunnelStrategyV1) Descriptor() ([]byte, []int) { + return fileDescriptor_d938547f84707355, []int{50} +} +func (m *TunnelStrategyV1) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *TunnelStrategyV1) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_TunnelStrategyV1.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 *TunnelStrategyV1) XXX_Merge(src proto.Message) { + xxx_messageInfo_TunnelStrategyV1.Merge(m, src) +} +func (m *TunnelStrategyV1) XXX_Size() int { + return m.Size() +} +func (m *TunnelStrategyV1) XXX_DiscardUnknown() { + xxx_messageInfo_TunnelStrategyV1.DiscardUnknown(m) +} + +var xxx_messageInfo_TunnelStrategyV1 proto.InternalMessageInfo + +type isTunnelStrategyV1_Strategy interface { + isTunnelStrategyV1_Strategy() MarshalTo([]byte) (int, error) Size() int } -type ClusterNetworkingConfigSpecV2_AgentMesh struct { - AgentMesh *AgentMeshTunnelStrategy `protobuf:"bytes,9,opt,name=AgentMesh,proto3,oneof" json:"tunnel_strategy,omitempty" yaml:"tunnel_strategy,omitempty"` +type TunnelStrategyV1_AgentMesh struct { + AgentMesh *AgentMeshTunnelStrategy `protobuf:"bytes,1,opt,name=AgentMesh,proto3,oneof" json:"agent_mesh,omitempty"` } -type ClusterNetworkingConfigSpecV2_ProxyPeering struct { - ProxyPeering *ProxyPeeringTunnelStrategy `protobuf:"bytes,10,opt,name=ProxyPeering,proto3,oneof" json:"tunnel_strategy,omitempty" yaml:"tunnel_strategy,omitempty"` +type TunnelStrategyV1_ProxyPeering struct { + ProxyPeering *ProxyPeeringTunnelStrategy `protobuf:"bytes,2,opt,name=ProxyPeering,proto3,oneof" json:"proxy_peering,omitempty"` } -func (*ClusterNetworkingConfigSpecV2_AgentMesh) isClusterNetworkingConfigSpecV2_TunnelStrategy() {} -func (*ClusterNetworkingConfigSpecV2_ProxyPeering) isClusterNetworkingConfigSpecV2_TunnelStrategy() {} +func (*TunnelStrategyV1_AgentMesh) isTunnelStrategyV1_Strategy() {} +func (*TunnelStrategyV1_ProxyPeering) isTunnelStrategyV1_Strategy() {} -func (m *ClusterNetworkingConfigSpecV2) GetTunnelStrategy() isClusterNetworkingConfigSpecV2_TunnelStrategy { +func (m *TunnelStrategyV1) GetStrategy() isTunnelStrategyV1_Strategy { if m != nil { - return m.TunnelStrategy + return m.Strategy } return nil } -func (m *ClusterNetworkingConfigSpecV2) GetAgentMesh() *AgentMeshTunnelStrategy { - if x, ok := m.GetTunnelStrategy().(*ClusterNetworkingConfigSpecV2_AgentMesh); ok { +func (m *TunnelStrategyV1) GetAgentMesh() *AgentMeshTunnelStrategy { + if x, ok := m.GetStrategy().(*TunnelStrategyV1_AgentMesh); ok { return x.AgentMesh } return nil } -func (m *ClusterNetworkingConfigSpecV2) GetProxyPeering() *ProxyPeeringTunnelStrategy { - if x, ok := m.GetTunnelStrategy().(*ClusterNetworkingConfigSpecV2_ProxyPeering); ok { +func (m *TunnelStrategyV1) GetProxyPeering() *ProxyPeeringTunnelStrategy { + if x, ok := m.GetStrategy().(*TunnelStrategyV1_ProxyPeering); ok { return x.ProxyPeering } return nil } // XXX_OneofWrappers is for the internal use of the proto package. -func (*ClusterNetworkingConfigSpecV2) XXX_OneofWrappers() []interface{} { +func (*TunnelStrategyV1) XXX_OneofWrappers() []interface{} { return []interface{}{ - (*ClusterNetworkingConfigSpecV2_AgentMesh)(nil), - (*ClusterNetworkingConfigSpecV2_ProxyPeering)(nil), + (*TunnelStrategyV1_AgentMesh)(nil), + (*TunnelStrategyV1_ProxyPeering)(nil), } } // AgentMeshTunnelStrategy requires reverse tunnels to dial every proxy. type AgentMeshTunnelStrategy struct { - Type TunnelStrategyType `protobuf:"bytes,1,opt,name=Type,proto3,casttype=TunnelStrategyType" json:"type,omitempty" yaml:"type,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } func (m *AgentMeshTunnelStrategy) Reset() { *m = AgentMeshTunnelStrategy{} } func (m *AgentMeshTunnelStrategy) String() string { return proto.CompactTextString(m) } func (*AgentMeshTunnelStrategy) ProtoMessage() {} func (*AgentMeshTunnelStrategy) Descriptor() ([]byte, []int) { - return fileDescriptor_d938547f84707355, []int{50} + return fileDescriptor_d938547f84707355, []int{51} } func (m *AgentMeshTunnelStrategy) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2999,18 +3038,17 @@ var xxx_messageInfo_AgentMeshTunnelStrategy proto.InternalMessageInfo // ProxyPeeringTunnelStrategy requires reverse tunnels to dial a fixed number of proxies. type ProxyPeeringTunnelStrategy struct { - Type TunnelStrategyType `protobuf:"bytes,1,opt,name=Type,proto3,casttype=TunnelStrategyType" json:"type,omitempty" yaml:"type,omitempty"` - AgentConnectionCount int64 `protobuf:"varint,2,opt,name=AgentConnectionCount,proto3" json:"agent_connection_count,omitempty" yaml:"agent_connection_count,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + AgentConnectionCount int64 `protobuf:"varint,1,opt,name=AgentConnectionCount,proto3" json:"agent_connection_count,omitempty" yaml:"agent_connection_count,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } func (m *ProxyPeeringTunnelStrategy) Reset() { *m = ProxyPeeringTunnelStrategy{} } func (m *ProxyPeeringTunnelStrategy) String() string { return proto.CompactTextString(m) } func (*ProxyPeeringTunnelStrategy) ProtoMessage() {} func (*ProxyPeeringTunnelStrategy) Descriptor() ([]byte, []int) { - return fileDescriptor_d938547f84707355, []int{51} + return fileDescriptor_d938547f84707355, []int{52} } func (m *ProxyPeeringTunnelStrategy) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3060,7 +3098,7 @@ func (m *SessionRecordingConfigV2) Reset() { *m = SessionRecordingConfig func (m *SessionRecordingConfigV2) String() string { return proto.CompactTextString(m) } func (*SessionRecordingConfigV2) ProtoMessage() {} func (*SessionRecordingConfigV2) Descriptor() ([]byte, []int) { - return fileDescriptor_d938547f84707355, []int{52} + return fileDescriptor_d938547f84707355, []int{53} } func (m *SessionRecordingConfigV2) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3106,7 +3144,7 @@ func (m *SessionRecordingConfigSpecV2) Reset() { *m = SessionRecordingCo func (m *SessionRecordingConfigSpecV2) String() string { return proto.CompactTextString(m) } func (*SessionRecordingConfigSpecV2) ProtoMessage() {} func (*SessionRecordingConfigSpecV2) Descriptor() ([]byte, []int) { - return fileDescriptor_d938547f84707355, []int{53} + return fileDescriptor_d938547f84707355, []int{54} } func (m *SessionRecordingConfigSpecV2) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3155,7 +3193,7 @@ type AuthPreferenceV2 struct { func (m *AuthPreferenceV2) Reset() { *m = AuthPreferenceV2{} } func (*AuthPreferenceV2) ProtoMessage() {} func (*AuthPreferenceV2) Descriptor() ([]byte, []int) { - return fileDescriptor_d938547f84707355, []int{54} + return fileDescriptor_d938547f84707355, []int{55} } func (m *AuthPreferenceV2) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3217,7 +3255,7 @@ func (m *AuthPreferenceSpecV2) Reset() { *m = AuthPreferenceSpecV2{} } func (m *AuthPreferenceSpecV2) String() string { return proto.CompactTextString(m) } func (*AuthPreferenceSpecV2) ProtoMessage() {} func (*AuthPreferenceSpecV2) Descriptor() ([]byte, []int) { - return fileDescriptor_d938547f84707355, []int{55} + return fileDescriptor_d938547f84707355, []int{56} } func (m *AuthPreferenceSpecV2) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3266,7 +3304,7 @@ func (m *U2F) Reset() { *m = U2F{} } func (m *U2F) String() string { return proto.CompactTextString(m) } func (*U2F) ProtoMessage() {} func (*U2F) Descriptor() ([]byte, []int) { - return fileDescriptor_d938547f84707355, []int{56} + return fileDescriptor_d938547f84707355, []int{57} } func (m *U2F) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3334,7 +3372,7 @@ func (m *Webauthn) Reset() { *m = Webauthn{} } func (m *Webauthn) String() string { return proto.CompactTextString(m) } func (*Webauthn) ProtoMessage() {} func (*Webauthn) Descriptor() ([]byte, []int) { - return fileDescriptor_d938547f84707355, []int{57} + return fileDescriptor_d938547f84707355, []int{58} } func (m *Webauthn) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3384,7 +3422,7 @@ func (m *Namespace) Reset() { *m = Namespace{} } func (m *Namespace) String() string { return proto.CompactTextString(m) } func (*Namespace) ProtoMessage() {} func (*Namespace) Descriptor() ([]byte, []int) { - return fileDescriptor_d938547f84707355, []int{58} + return fileDescriptor_d938547f84707355, []int{59} } func (m *Namespace) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3424,7 +3462,7 @@ func (m *NamespaceSpec) Reset() { *m = NamespaceSpec{} } func (m *NamespaceSpec) String() string { return proto.CompactTextString(m) } func (*NamespaceSpec) ProtoMessage() {} func (*NamespaceSpec) Descriptor() ([]byte, []int) { - return fileDescriptor_d938547f84707355, []int{59} + return fileDescriptor_d938547f84707355, []int{60} } func (m *NamespaceSpec) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3472,7 +3510,7 @@ type UserTokenV3 struct { func (m *UserTokenV3) Reset() { *m = UserTokenV3{} } func (*UserTokenV3) ProtoMessage() {} func (*UserTokenV3) Descriptor() ([]byte, []int) { - return fileDescriptor_d938547f84707355, []int{60} + return fileDescriptor_d938547f84707355, []int{61} } func (m *UserTokenV3) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3519,7 +3557,7 @@ func (m *UserTokenSpecV3) Reset() { *m = UserTokenSpecV3{} } func (m *UserTokenSpecV3) String() string { return proto.CompactTextString(m) } func (*UserTokenSpecV3) ProtoMessage() {} func (*UserTokenSpecV3) Descriptor() ([]byte, []int) { - return fileDescriptor_d938547f84707355, []int{61} + return fileDescriptor_d938547f84707355, []int{62} } func (m *UserTokenSpecV3) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3567,7 +3605,7 @@ type UserTokenSecretsV3 struct { func (m *UserTokenSecretsV3) Reset() { *m = UserTokenSecretsV3{} } func (*UserTokenSecretsV3) ProtoMessage() {} func (*UserTokenSecretsV3) Descriptor() ([]byte, []int) { - return fileDescriptor_d938547f84707355, []int{62} + return fileDescriptor_d938547f84707355, []int{63} } func (m *UserTokenSecretsV3) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3612,7 +3650,7 @@ func (m *UserTokenSecretsSpecV3) Reset() { *m = UserTokenSecretsSpecV3{} func (m *UserTokenSecretsSpecV3) String() string { return proto.CompactTextString(m) } func (*UserTokenSecretsSpecV3) ProtoMessage() {} func (*UserTokenSecretsSpecV3) Descriptor() ([]byte, []int) { - return fileDescriptor_d938547f84707355, []int{63} + return fileDescriptor_d938547f84707355, []int{64} } func (m *UserTokenSecretsSpecV3) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3661,7 +3699,7 @@ type AccessRequestV3 struct { func (m *AccessRequestV3) Reset() { *m = AccessRequestV3{} } func (*AccessRequestV3) ProtoMessage() {} func (*AccessRequestV3) Descriptor() ([]byte, []int) { - return fileDescriptor_d938547f84707355, []int{64} + return fileDescriptor_d938547f84707355, []int{65} } func (m *AccessRequestV3) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3713,7 +3751,7 @@ func (m *AccessReviewThreshold) Reset() { *m = AccessReviewThreshold{} } func (m *AccessReviewThreshold) String() string { return proto.CompactTextString(m) } func (*AccessReviewThreshold) ProtoMessage() {} func (*AccessReviewThreshold) Descriptor() ([]byte, []int) { - return fileDescriptor_d938547f84707355, []int{65} + return fileDescriptor_d938547f84707355, []int{66} } func (m *AccessReviewThreshold) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3769,7 +3807,7 @@ func (m *AccessReview) Reset() { *m = AccessReview{} } func (m *AccessReview) String() string { return proto.CompactTextString(m) } func (*AccessReview) ProtoMessage() {} func (*AccessReview) Descriptor() ([]byte, []int) { - return fileDescriptor_d938547f84707355, []int{66} + return fileDescriptor_d938547f84707355, []int{67} } func (m *AccessReview) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3814,7 +3852,7 @@ func (m *AccessReviewSubmission) Reset() { *m = AccessReviewSubmission{} func (m *AccessReviewSubmission) String() string { return proto.CompactTextString(m) } func (*AccessReviewSubmission) ProtoMessage() {} func (*AccessReviewSubmission) Descriptor() ([]byte, []int) { - return fileDescriptor_d938547f84707355, []int{67} + return fileDescriptor_d938547f84707355, []int{68} } func (m *AccessReviewSubmission) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3857,7 +3895,7 @@ func (m *ThresholdIndexSet) Reset() { *m = ThresholdIndexSet{} } func (m *ThresholdIndexSet) String() string { return proto.CompactTextString(m) } func (*ThresholdIndexSet) ProtoMessage() {} func (*ThresholdIndexSet) Descriptor() ([]byte, []int) { - return fileDescriptor_d938547f84707355, []int{68} + return fileDescriptor_d938547f84707355, []int{69} } func (m *ThresholdIndexSet) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3900,7 +3938,7 @@ func (m *ThresholdIndexSets) Reset() { *m = ThresholdIndexSets{} } func (m *ThresholdIndexSets) String() string { return proto.CompactTextString(m) } func (*ThresholdIndexSets) ProtoMessage() {} func (*ThresholdIndexSets) Descriptor() ([]byte, []int) { - return fileDescriptor_d938547f84707355, []int{69} + return fileDescriptor_d938547f84707355, []int{70} } func (m *ThresholdIndexSets) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3985,7 +4023,7 @@ func (m *AccessRequestSpecV3) Reset() { *m = AccessRequestSpecV3{} } func (m *AccessRequestSpecV3) String() string { return proto.CompactTextString(m) } func (*AccessRequestSpecV3) ProtoMessage() {} func (*AccessRequestSpecV3) Descriptor() ([]byte, []int) { - return fileDescriptor_d938547f84707355, []int{70} + return fileDescriptor_d938547f84707355, []int{71} } func (m *AccessRequestSpecV3) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4031,7 +4069,7 @@ func (m *AccessRequestFilter) Reset() { *m = AccessRequestFilter{} } func (m *AccessRequestFilter) String() string { return proto.CompactTextString(m) } func (*AccessRequestFilter) ProtoMessage() {} func (*AccessRequestFilter) Descriptor() ([]byte, []int) { - return fileDescriptor_d938547f84707355, []int{71} + return fileDescriptor_d938547f84707355, []int{72} } func (m *AccessRequestFilter) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4077,7 +4115,7 @@ func (m *AccessCapabilities) Reset() { *m = AccessCapabilities{} } func (m *AccessCapabilities) String() string { return proto.CompactTextString(m) } func (*AccessCapabilities) ProtoMessage() {} func (*AccessCapabilities) Descriptor() ([]byte, []int) { - return fileDescriptor_d938547f84707355, []int{72} + return fileDescriptor_d938547f84707355, []int{73} } func (m *AccessCapabilities) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4126,7 +4164,7 @@ func (m *AccessCapabilitiesRequest) Reset() { *m = AccessCapabilitiesReq func (m *AccessCapabilitiesRequest) String() string { return proto.CompactTextString(m) } func (*AccessCapabilitiesRequest) ProtoMessage() {} func (*AccessCapabilitiesRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_d938547f84707355, []int{73} + return fileDescriptor_d938547f84707355, []int{74} } func (m *AccessCapabilitiesRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4175,7 +4213,7 @@ type PluginDataV3 struct { func (m *PluginDataV3) Reset() { *m = PluginDataV3{} } func (*PluginDataV3) ProtoMessage() {} func (*PluginDataV3) Descriptor() ([]byte, []int) { - return fileDescriptor_d938547f84707355, []int{74} + return fileDescriptor_d938547f84707355, []int{75} } func (m *PluginDataV3) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4218,7 +4256,7 @@ func (m *PluginDataEntry) Reset() { *m = PluginDataEntry{} } func (m *PluginDataEntry) String() string { return proto.CompactTextString(m) } func (*PluginDataEntry) ProtoMessage() {} func (*PluginDataEntry) Descriptor() ([]byte, []int) { - return fileDescriptor_d938547f84707355, []int{75} + return fileDescriptor_d938547f84707355, []int{76} } func (m *PluginDataEntry) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4260,7 +4298,7 @@ func (m *PluginDataSpecV3) Reset() { *m = PluginDataSpecV3{} } func (m *PluginDataSpecV3) String() string { return proto.CompactTextString(m) } func (*PluginDataSpecV3) ProtoMessage() {} func (*PluginDataSpecV3) Descriptor() ([]byte, []int) { - return fileDescriptor_d938547f84707355, []int{76} + return fileDescriptor_d938547f84707355, []int{77} } func (m *PluginDataSpecV3) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4307,7 +4345,7 @@ func (m *PluginDataFilter) Reset() { *m = PluginDataFilter{} } func (m *PluginDataFilter) String() string { return proto.CompactTextString(m) } func (*PluginDataFilter) ProtoMessage() {} func (*PluginDataFilter) Descriptor() ([]byte, []int) { - return fileDescriptor_d938547f84707355, []int{77} + return fileDescriptor_d938547f84707355, []int{78} } func (m *PluginDataFilter) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4358,7 +4396,7 @@ func (m *PluginDataUpdateParams) Reset() { *m = PluginDataUpdateParams{} func (m *PluginDataUpdateParams) String() string { return proto.CompactTextString(m) } func (*PluginDataUpdateParams) ProtoMessage() {} func (*PluginDataUpdateParams) Descriptor() ([]byte, []int) { - return fileDescriptor_d938547f84707355, []int{78} + return fileDescriptor_d938547f84707355, []int{79} } func (m *PluginDataUpdateParams) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4407,7 +4445,7 @@ type RoleV5 struct { func (m *RoleV5) Reset() { *m = RoleV5{} } func (*RoleV5) ProtoMessage() {} func (*RoleV5) Descriptor() ([]byte, []int) { - return fileDescriptor_d938547f84707355, []int{79} + return fileDescriptor_d938547f84707355, []int{80} } func (m *RoleV5) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4454,7 +4492,7 @@ func (m *RoleSpecV5) Reset() { *m = RoleSpecV5{} } func (m *RoleSpecV5) String() string { return proto.CompactTextString(m) } func (*RoleSpecV5) ProtoMessage() {} func (*RoleSpecV5) Descriptor() ([]byte, []int) { - return fileDescriptor_d938547f84707355, []int{80} + return fileDescriptor_d938547f84707355, []int{81} } func (m *RoleSpecV5) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4542,7 +4580,7 @@ func (m *RoleOptions) Reset() { *m = RoleOptions{} } func (m *RoleOptions) String() string { return proto.CompactTextString(m) } func (*RoleOptions) ProtoMessage() {} func (*RoleOptions) Descriptor() ([]byte, []int) { - return fileDescriptor_d938547f84707355, []int{81} + return fileDescriptor_d938547f84707355, []int{82} } func (m *RoleOptions) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4584,7 +4622,7 @@ func (m *RecordSession) Reset() { *m = RecordSession{} } func (m *RecordSession) String() string { return proto.CompactTextString(m) } func (*RecordSession) ProtoMessage() {} func (*RecordSession) Descriptor() ([]byte, []int) { - return fileDescriptor_d938547f84707355, []int{82} + return fileDescriptor_d938547f84707355, []int{83} } func (m *RecordSession) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4634,7 +4672,7 @@ func (m *CertExtension) Reset() { *m = CertExtension{} } func (m *CertExtension) String() string { return proto.CompactTextString(m) } func (*CertExtension) ProtoMessage() {} func (*CertExtension) Descriptor() ([]byte, []int) { - return fileDescriptor_d938547f84707355, []int{83} + return fileDescriptor_d938547f84707355, []int{84} } func (m *CertExtension) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4719,7 +4757,7 @@ func (m *RoleConditions) Reset() { *m = RoleConditions{} } func (m *RoleConditions) String() string { return proto.CompactTextString(m) } func (*RoleConditions) ProtoMessage() {} func (*RoleConditions) Descriptor() ([]byte, []int) { - return fileDescriptor_d938547f84707355, []int{84} + return fileDescriptor_d938547f84707355, []int{85} } func (m *RoleConditions) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4772,7 +4810,7 @@ func (m *SessionRequirePolicy) Reset() { *m = SessionRequirePolicy{} } func (m *SessionRequirePolicy) String() string { return proto.CompactTextString(m) } func (*SessionRequirePolicy) ProtoMessage() {} func (*SessionRequirePolicy) Descriptor() ([]byte, []int) { - return fileDescriptor_d938547f84707355, []int{85} + return fileDescriptor_d938547f84707355, []int{86} } func (m *SessionRequirePolicy) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4820,7 +4858,7 @@ func (m *SessionJoinPolicy) Reset() { *m = SessionJoinPolicy{} } func (m *SessionJoinPolicy) String() string { return proto.CompactTextString(m) } func (*SessionJoinPolicy) ProtoMessage() {} func (*SessionJoinPolicy) Descriptor() ([]byte, []int) { - return fileDescriptor_d938547f84707355, []int{86} + return fileDescriptor_d938547f84707355, []int{87} } func (m *SessionJoinPolicy) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4880,7 +4918,7 @@ func (m *AccessRequestConditions) Reset() { *m = AccessRequestConditions func (m *AccessRequestConditions) String() string { return proto.CompactTextString(m) } func (*AccessRequestConditions) ProtoMessage() {} func (*AccessRequestConditions) Descriptor() ([]byte, []int) { - return fileDescriptor_d938547f84707355, []int{87} + return fileDescriptor_d938547f84707355, []int{88} } func (m *AccessRequestConditions) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4928,7 +4966,7 @@ func (m *AccessReviewConditions) Reset() { *m = AccessReviewConditions{} func (m *AccessReviewConditions) String() string { return proto.CompactTextString(m) } func (*AccessReviewConditions) ProtoMessage() {} func (*AccessReviewConditions) Descriptor() ([]byte, []int) { - return fileDescriptor_d938547f84707355, []int{88} + return fileDescriptor_d938547f84707355, []int{89} } func (m *AccessReviewConditions) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4974,7 +5012,7 @@ func (m *ClaimMapping) Reset() { *m = ClaimMapping{} } func (m *ClaimMapping) String() string { return proto.CompactTextString(m) } func (*ClaimMapping) ProtoMessage() {} func (*ClaimMapping) Descriptor() ([]byte, []int) { - return fileDescriptor_d938547f84707355, []int{89} + return fileDescriptor_d938547f84707355, []int{90} } func (m *ClaimMapping) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5023,7 +5061,7 @@ func (m *Rule) Reset() { *m = Rule{} } func (m *Rule) String() string { return proto.CompactTextString(m) } func (*Rule) ProtoMessage() {} func (*Rule) Descriptor() ([]byte, []int) { - return fileDescriptor_d938547f84707355, []int{90} + return fileDescriptor_d938547f84707355, []int{91} } func (m *Rule) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5071,7 +5109,7 @@ func (m *ImpersonateConditions) Reset() { *m = ImpersonateConditions{} } func (m *ImpersonateConditions) String() string { return proto.CompactTextString(m) } func (*ImpersonateConditions) ProtoMessage() {} func (*ImpersonateConditions) Descriptor() ([]byte, []int) { - return fileDescriptor_d938547f84707355, []int{91} + return fileDescriptor_d938547f84707355, []int{92} } func (m *ImpersonateConditions) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5113,7 +5151,7 @@ func (m *BoolValue) Reset() { *m = BoolValue{} } func (m *BoolValue) String() string { return proto.CompactTextString(m) } func (*BoolValue) ProtoMessage() {} func (*BoolValue) Descriptor() ([]byte, []int) { - return fileDescriptor_d938547f84707355, []int{92} + return fileDescriptor_d938547f84707355, []int{93} } func (m *BoolValue) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5162,7 +5200,7 @@ type UserV2 struct { func (m *UserV2) Reset() { *m = UserV2{} } func (*UserV2) ProtoMessage() {} func (*UserV2) Descriptor() ([]byte, []int) { - return fileDescriptor_d938547f84707355, []int{93} + return fileDescriptor_d938547f84707355, []int{94} } func (m *UserV2) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5226,7 +5264,7 @@ func (m *UserSpecV2) Reset() { *m = UserSpecV2{} } func (m *UserSpecV2) String() string { return proto.CompactTextString(m) } func (*UserSpecV2) ProtoMessage() {} func (*UserSpecV2) Descriptor() ([]byte, []int) { - return fileDescriptor_d938547f84707355, []int{94} + return fileDescriptor_d938547f84707355, []int{95} } func (m *UserSpecV2) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5271,7 +5309,7 @@ type ExternalIdentity struct { func (m *ExternalIdentity) Reset() { *m = ExternalIdentity{} } func (*ExternalIdentity) ProtoMessage() {} func (*ExternalIdentity) Descriptor() ([]byte, []int) { - return fileDescriptor_d938547f84707355, []int{95} + return fileDescriptor_d938547f84707355, []int{96} } func (m *ExternalIdentity) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5323,7 +5361,7 @@ func (m *LoginStatus) Reset() { *m = LoginStatus{} } func (m *LoginStatus) String() string { return proto.CompactTextString(m) } func (*LoginStatus) ProtoMessage() {} func (*LoginStatus) Descriptor() ([]byte, []int) { - return fileDescriptor_d938547f84707355, []int{96} + return fileDescriptor_d938547f84707355, []int{97} } func (m *LoginStatus) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5368,7 +5406,7 @@ type CreatedBy struct { func (m *CreatedBy) Reset() { *m = CreatedBy{} } func (*CreatedBy) ProtoMessage() {} func (*CreatedBy) Descriptor() ([]byte, []int) { - return fileDescriptor_d938547f84707355, []int{97} + return fileDescriptor_d938547f84707355, []int{98} } func (m *CreatedBy) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5417,7 +5455,7 @@ func (m *LocalAuthSecrets) Reset() { *m = LocalAuthSecrets{} } func (m *LocalAuthSecrets) String() string { return proto.CompactTextString(m) } func (*LocalAuthSecrets) ProtoMessage() {} func (*LocalAuthSecrets) Descriptor() ([]byte, []int) { - return fileDescriptor_d938547f84707355, []int{98} + return fileDescriptor_d938547f84707355, []int{99} } func (m *LocalAuthSecrets) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5472,7 +5510,7 @@ func (m *MFADevice) Reset() { *m = MFADevice{} } func (m *MFADevice) String() string { return proto.CompactTextString(m) } func (*MFADevice) ProtoMessage() {} func (*MFADevice) Descriptor() ([]byte, []int) { - return fileDescriptor_d938547f84707355, []int{99} + return fileDescriptor_d938547f84707355, []int{100} } func (m *MFADevice) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5570,7 +5608,7 @@ func (m *TOTPDevice) Reset() { *m = TOTPDevice{} } func (m *TOTPDevice) String() string { return proto.CompactTextString(m) } func (*TOTPDevice) ProtoMessage() {} func (*TOTPDevice) Descriptor() ([]byte, []int) { - return fileDescriptor_d938547f84707355, []int{100} + return fileDescriptor_d938547f84707355, []int{101} } func (m *TOTPDevice) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5616,7 +5654,7 @@ func (m *U2FDevice) Reset() { *m = U2FDevice{} } func (m *U2FDevice) String() string { return proto.CompactTextString(m) } func (*U2FDevice) ProtoMessage() {} func (*U2FDevice) Descriptor() ([]byte, []int) { - return fileDescriptor_d938547f84707355, []int{101} + return fileDescriptor_d938547f84707355, []int{102} } func (m *U2FDevice) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5683,7 +5721,7 @@ func (m *WebauthnDevice) Reset() { *m = WebauthnDevice{} } func (m *WebauthnDevice) String() string { return proto.CompactTextString(m) } func (*WebauthnDevice) ProtoMessage() {} func (*WebauthnDevice) Descriptor() ([]byte, []int) { - return fileDescriptor_d938547f84707355, []int{102} + return fileDescriptor_d938547f84707355, []int{103} } func (m *WebauthnDevice) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5726,7 +5764,7 @@ func (m *WebauthnLocalAuth) Reset() { *m = WebauthnLocalAuth{} } func (m *WebauthnLocalAuth) String() string { return proto.CompactTextString(m) } func (*WebauthnLocalAuth) ProtoMessage() {} func (*WebauthnLocalAuth) Descriptor() ([]byte, []int) { - return fileDescriptor_d938547f84707355, []int{103} + return fileDescriptor_d938547f84707355, []int{104} } func (m *WebauthnLocalAuth) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5772,7 +5810,7 @@ func (m *ConnectorRef) Reset() { *m = ConnectorRef{} } func (m *ConnectorRef) String() string { return proto.CompactTextString(m) } func (*ConnectorRef) ProtoMessage() {} func (*ConnectorRef) Descriptor() ([]byte, []int) { - return fileDescriptor_d938547f84707355, []int{104} + return fileDescriptor_d938547f84707355, []int{105} } func (m *ConnectorRef) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5814,7 +5852,7 @@ func (m *UserRef) Reset() { *m = UserRef{} } func (m *UserRef) String() string { return proto.CompactTextString(m) } func (*UserRef) ProtoMessage() {} func (*UserRef) Descriptor() ([]byte, []int) { - return fileDescriptor_d938547f84707355, []int{105} + return fileDescriptor_d938547f84707355, []int{106} } func (m *UserRef) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5864,7 +5902,7 @@ func (m *ReverseTunnelV2) Reset() { *m = ReverseTunnelV2{} } func (m *ReverseTunnelV2) String() string { return proto.CompactTextString(m) } func (*ReverseTunnelV2) ProtoMessage() {} func (*ReverseTunnelV2) Descriptor() ([]byte, []int) { - return fileDescriptor_d938547f84707355, []int{106} + return fileDescriptor_d938547f84707355, []int{107} } func (m *ReverseTunnelV2) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5911,7 +5949,7 @@ func (m *ReverseTunnelSpecV2) Reset() { *m = ReverseTunnelSpecV2{} } func (m *ReverseTunnelSpecV2) String() string { return proto.CompactTextString(m) } func (*ReverseTunnelSpecV2) ProtoMessage() {} func (*ReverseTunnelSpecV2) Descriptor() ([]byte, []int) { - return fileDescriptor_d938547f84707355, []int{107} + return fileDescriptor_d938547f84707355, []int{108} } func (m *ReverseTunnelSpecV2) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5960,7 +5998,7 @@ type TunnelConnectionV2 struct { func (m *TunnelConnectionV2) Reset() { *m = TunnelConnectionV2{} } func (*TunnelConnectionV2) ProtoMessage() {} func (*TunnelConnectionV2) Descriptor() ([]byte, []int) { - return fileDescriptor_d938547f84707355, []int{108} + return fileDescriptor_d938547f84707355, []int{109} } func (m *TunnelConnectionV2) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6008,7 +6046,7 @@ func (m *TunnelConnectionSpecV2) Reset() { *m = TunnelConnectionSpecV2{} func (m *TunnelConnectionSpecV2) String() string { return proto.CompactTextString(m) } func (*TunnelConnectionSpecV2) ProtoMessage() {} func (*TunnelConnectionSpecV2) Descriptor() ([]byte, []int) { - return fileDescriptor_d938547f84707355, []int{109} + return fileDescriptor_d938547f84707355, []int{110} } func (m *TunnelConnectionSpecV2) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6056,7 +6094,7 @@ func (m *SemaphoreFilter) Reset() { *m = SemaphoreFilter{} } func (m *SemaphoreFilter) String() string { return proto.CompactTextString(m) } func (*SemaphoreFilter) ProtoMessage() {} func (*SemaphoreFilter) Descriptor() ([]byte, []int) { - return fileDescriptor_d938547f84707355, []int{110} + return fileDescriptor_d938547f84707355, []int{111} } func (m *SemaphoreFilter) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6107,7 +6145,7 @@ func (m *AcquireSemaphoreRequest) Reset() { *m = AcquireSemaphoreRequest func (m *AcquireSemaphoreRequest) String() string { return proto.CompactTextString(m) } func (*AcquireSemaphoreRequest) ProtoMessage() {} func (*AcquireSemaphoreRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_d938547f84707355, []int{111} + return fileDescriptor_d938547f84707355, []int{112} } func (m *AcquireSemaphoreRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6155,7 +6193,7 @@ func (m *SemaphoreLease) Reset() { *m = SemaphoreLease{} } func (m *SemaphoreLease) String() string { return proto.CompactTextString(m) } func (*SemaphoreLease) ProtoMessage() {} func (*SemaphoreLease) Descriptor() ([]byte, []int) { - return fileDescriptor_d938547f84707355, []int{112} + return fileDescriptor_d938547f84707355, []int{113} } func (m *SemaphoreLease) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6201,7 +6239,7 @@ func (m *SemaphoreLeaseRef) Reset() { *m = SemaphoreLeaseRef{} } func (m *SemaphoreLeaseRef) String() string { return proto.CompactTextString(m) } func (*SemaphoreLeaseRef) ProtoMessage() {} func (*SemaphoreLeaseRef) Descriptor() ([]byte, []int) { - return fileDescriptor_d938547f84707355, []int{113} + return fileDescriptor_d938547f84707355, []int{114} } func (m *SemaphoreLeaseRef) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6250,7 +6288,7 @@ type SemaphoreV3 struct { func (m *SemaphoreV3) Reset() { *m = SemaphoreV3{} } func (*SemaphoreV3) ProtoMessage() {} func (*SemaphoreV3) Descriptor() ([]byte, []int) { - return fileDescriptor_d938547f84707355, []int{114} + return fileDescriptor_d938547f84707355, []int{115} } func (m *SemaphoreV3) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6292,7 +6330,7 @@ func (m *SemaphoreSpecV3) Reset() { *m = SemaphoreSpecV3{} } func (m *SemaphoreSpecV3) String() string { return proto.CompactTextString(m) } func (*SemaphoreSpecV3) ProtoMessage() {} func (*SemaphoreSpecV3) Descriptor() ([]byte, []int) { - return fileDescriptor_d938547f84707355, []int{115} + return fileDescriptor_d938547f84707355, []int{116} } func (m *SemaphoreSpecV3) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6341,7 +6379,7 @@ type WebSessionV2 struct { func (m *WebSessionV2) Reset() { *m = WebSessionV2{} } func (*WebSessionV2) ProtoMessage() {} func (*WebSessionV2) Descriptor() ([]byte, []int) { - return fileDescriptor_d938547f84707355, []int{116} + return fileDescriptor_d938547f84707355, []int{117} } func (m *WebSessionV2) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6402,7 +6440,7 @@ func (m *WebSessionSpecV2) Reset() { *m = WebSessionSpecV2{} } func (m *WebSessionSpecV2) String() string { return proto.CompactTextString(m) } func (*WebSessionSpecV2) ProtoMessage() {} func (*WebSessionSpecV2) Descriptor() ([]byte, []int) { - return fileDescriptor_d938547f84707355, []int{117} + return fileDescriptor_d938547f84707355, []int{118} } func (m *WebSessionSpecV2) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6444,7 +6482,7 @@ func (m *WebSessionFilter) Reset() { *m = WebSessionFilter{} } func (m *WebSessionFilter) String() string { return proto.CompactTextString(m) } func (*WebSessionFilter) ProtoMessage() {} func (*WebSessionFilter) Descriptor() ([]byte, []int) { - return fileDescriptor_d938547f84707355, []int{118} + return fileDescriptor_d938547f84707355, []int{119} } func (m *WebSessionFilter) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6493,7 +6531,7 @@ type RemoteClusterV3 struct { func (m *RemoteClusterV3) Reset() { *m = RemoteClusterV3{} } func (*RemoteClusterV3) ProtoMessage() {} func (*RemoteClusterV3) Descriptor() ([]byte, []int) { - return fileDescriptor_d938547f84707355, []int{119} + return fileDescriptor_d938547f84707355, []int{120} } func (m *RemoteClusterV3) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6537,7 +6575,7 @@ func (m *RemoteClusterStatusV3) Reset() { *m = RemoteClusterStatusV3{} } func (m *RemoteClusterStatusV3) String() string { return proto.CompactTextString(m) } func (*RemoteClusterStatusV3) ProtoMessage() {} func (*RemoteClusterStatusV3) Descriptor() ([]byte, []int) { - return fileDescriptor_d938547f84707355, []int{120} + return fileDescriptor_d938547f84707355, []int{121} } func (m *RemoteClusterStatusV3) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6587,7 +6625,7 @@ func (m *KubernetesCluster) Reset() { *m = KubernetesCluster{} } func (m *KubernetesCluster) String() string { return proto.CompactTextString(m) } func (*KubernetesCluster) ProtoMessage() {} func (*KubernetesCluster) Descriptor() ([]byte, []int) { - return fileDescriptor_d938547f84707355, []int{121} + return fileDescriptor_d938547f84707355, []int{122} } func (m *KubernetesCluster) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6636,7 +6674,7 @@ type KubernetesClusterV3 struct { func (m *KubernetesClusterV3) Reset() { *m = KubernetesClusterV3{} } func (*KubernetesClusterV3) ProtoMessage() {} func (*KubernetesClusterV3) Descriptor() ([]byte, []int) { - return fileDescriptor_d938547f84707355, []int{122} + return fileDescriptor_d938547f84707355, []int{123} } func (m *KubernetesClusterV3) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6678,7 +6716,7 @@ func (m *KubernetesClusterSpecV3) Reset() { *m = KubernetesClusterSpecV3 func (m *KubernetesClusterSpecV3) String() string { return proto.CompactTextString(m) } func (*KubernetesClusterSpecV3) ProtoMessage() {} func (*KubernetesClusterSpecV3) Descriptor() ([]byte, []int) { - return fileDescriptor_d938547f84707355, []int{123} + return fileDescriptor_d938547f84707355, []int{124} } func (m *KubernetesClusterSpecV3) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6730,7 +6768,7 @@ type WebTokenV3 struct { func (m *WebTokenV3) Reset() { *m = WebTokenV3{} } func (*WebTokenV3) ProtoMessage() {} func (*WebTokenV3) Descriptor() ([]byte, []int) { - return fileDescriptor_d938547f84707355, []int{124} + return fileDescriptor_d938547f84707355, []int{125} } func (m *WebTokenV3) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6774,7 +6812,7 @@ func (m *WebTokenSpecV3) Reset() { *m = WebTokenSpecV3{} } func (m *WebTokenSpecV3) String() string { return proto.CompactTextString(m) } func (*WebTokenSpecV3) ProtoMessage() {} func (*WebTokenSpecV3) Descriptor() ([]byte, []int) { - return fileDescriptor_d938547f84707355, []int{125} + return fileDescriptor_d938547f84707355, []int{126} } func (m *WebTokenSpecV3) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6818,7 +6856,7 @@ func (m *GetWebSessionRequest) Reset() { *m = GetWebSessionRequest{} } func (m *GetWebSessionRequest) String() string { return proto.CompactTextString(m) } func (*GetWebSessionRequest) ProtoMessage() {} func (*GetWebSessionRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_d938547f84707355, []int{126} + return fileDescriptor_d938547f84707355, []int{127} } func (m *GetWebSessionRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6862,7 +6900,7 @@ func (m *DeleteWebSessionRequest) Reset() { *m = DeleteWebSessionRequest func (m *DeleteWebSessionRequest) String() string { return proto.CompactTextString(m) } func (*DeleteWebSessionRequest) ProtoMessage() {} func (*DeleteWebSessionRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_d938547f84707355, []int{127} + return fileDescriptor_d938547f84707355, []int{128} } func (m *DeleteWebSessionRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6906,7 +6944,7 @@ func (m *GetWebTokenRequest) Reset() { *m = GetWebTokenRequest{} } func (m *GetWebTokenRequest) String() string { return proto.CompactTextString(m) } func (*GetWebTokenRequest) ProtoMessage() {} func (*GetWebTokenRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_d938547f84707355, []int{128} + return fileDescriptor_d938547f84707355, []int{129} } func (m *GetWebTokenRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6950,7 +6988,7 @@ func (m *DeleteWebTokenRequest) Reset() { *m = DeleteWebTokenRequest{} } func (m *DeleteWebTokenRequest) String() string { return proto.CompactTextString(m) } func (*DeleteWebTokenRequest) ProtoMessage() {} func (*DeleteWebTokenRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_d938547f84707355, []int{129} + return fileDescriptor_d938547f84707355, []int{130} } func (m *DeleteWebTokenRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6992,7 +7030,7 @@ func (m *ResourceRequest) Reset() { *m = ResourceRequest{} } func (m *ResourceRequest) String() string { return proto.CompactTextString(m) } func (*ResourceRequest) ProtoMessage() {} func (*ResourceRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_d938547f84707355, []int{130} + return fileDescriptor_d938547f84707355, []int{131} } func (m *ResourceRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -7036,7 +7074,7 @@ func (m *ResourceWithSecretsRequest) Reset() { *m = ResourceWithSecretsR func (m *ResourceWithSecretsRequest) String() string { return proto.CompactTextString(m) } func (*ResourceWithSecretsRequest) ProtoMessage() {} func (*ResourceWithSecretsRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_d938547f84707355, []int{131} + return fileDescriptor_d938547f84707355, []int{132} } func (m *ResourceWithSecretsRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -7078,7 +7116,7 @@ func (m *ResourcesWithSecretsRequest) Reset() { *m = ResourcesWithSecret func (m *ResourcesWithSecretsRequest) String() string { return proto.CompactTextString(m) } func (*ResourcesWithSecretsRequest) ProtoMessage() {} func (*ResourcesWithSecretsRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_d938547f84707355, []int{132} + return fileDescriptor_d938547f84707355, []int{133} } func (m *ResourcesWithSecretsRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -7122,7 +7160,7 @@ func (m *ResourceInNamespaceRequest) Reset() { *m = ResourceInNamespaceR func (m *ResourceInNamespaceRequest) String() string { return proto.CompactTextString(m) } func (*ResourceInNamespaceRequest) ProtoMessage() {} func (*ResourceInNamespaceRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_d938547f84707355, []int{133} + return fileDescriptor_d938547f84707355, []int{134} } func (m *ResourceInNamespaceRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -7164,7 +7202,7 @@ func (m *ResourcesInNamespaceRequest) Reset() { *m = ResourcesInNamespac func (m *ResourcesInNamespaceRequest) String() string { return proto.CompactTextString(m) } func (*ResourcesInNamespaceRequest) ProtoMessage() {} func (*ResourcesInNamespaceRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_d938547f84707355, []int{134} + return fileDescriptor_d938547f84707355, []int{135} } func (m *ResourcesInNamespaceRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -7214,7 +7252,7 @@ func (m *OIDCConnectorV3) Reset() { *m = OIDCConnectorV3{} } func (m *OIDCConnectorV3) String() string { return proto.CompactTextString(m) } func (*OIDCConnectorV3) ProtoMessage() {} func (*OIDCConnectorV3) Descriptor() ([]byte, []int) { - return fileDescriptor_d938547f84707355, []int{135} + return fileDescriptor_d938547f84707355, []int{136} } func (m *OIDCConnectorV3) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -7256,7 +7294,7 @@ func (m *OIDCConnectorV3List) Reset() { *m = OIDCConnectorV3List{} } func (m *OIDCConnectorV3List) String() string { return proto.CompactTextString(m) } func (*OIDCConnectorV3List) ProtoMessage() {} func (*OIDCConnectorV3List) Descriptor() ([]byte, []int) { - return fileDescriptor_d938547f84707355, []int{136} + return fileDescriptor_d938547f84707355, []int{137} } func (m *OIDCConnectorV3List) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -7329,7 +7367,7 @@ func (m *OIDCConnectorSpecV3) Reset() { *m = OIDCConnectorSpecV3{} } func (m *OIDCConnectorSpecV3) String() string { return proto.CompactTextString(m) } func (*OIDCConnectorSpecV3) ProtoMessage() {} func (*OIDCConnectorSpecV3) Descriptor() ([]byte, []int) { - return fileDescriptor_d938547f84707355, []int{137} + return fileDescriptor_d938547f84707355, []int{138} } func (m *OIDCConnectorSpecV3) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -7379,7 +7417,7 @@ func (m *SAMLConnectorV2) Reset() { *m = SAMLConnectorV2{} } func (m *SAMLConnectorV2) String() string { return proto.CompactTextString(m) } func (*SAMLConnectorV2) ProtoMessage() {} func (*SAMLConnectorV2) Descriptor() ([]byte, []int) { - return fileDescriptor_d938547f84707355, []int{138} + return fileDescriptor_d938547f84707355, []int{139} } func (m *SAMLConnectorV2) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -7421,7 +7459,7 @@ func (m *SAMLConnectorV2List) Reset() { *m = SAMLConnectorV2List{} } func (m *SAMLConnectorV2List) String() string { return proto.CompactTextString(m) } func (*SAMLConnectorV2List) ProtoMessage() {} func (*SAMLConnectorV2List) Descriptor() ([]byte, []int) { - return fileDescriptor_d938547f84707355, []int{139} + return fileDescriptor_d938547f84707355, []int{140} } func (m *SAMLConnectorV2List) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -7490,7 +7528,7 @@ func (m *SAMLConnectorSpecV2) Reset() { *m = SAMLConnectorSpecV2{} } func (m *SAMLConnectorSpecV2) String() string { return proto.CompactTextString(m) } func (*SAMLConnectorSpecV2) ProtoMessage() {} func (*SAMLConnectorSpecV2) Descriptor() ([]byte, []int) { - return fileDescriptor_d938547f84707355, []int{140} + return fileDescriptor_d938547f84707355, []int{141} } func (m *SAMLConnectorSpecV2) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -7536,7 +7574,7 @@ func (m *AttributeMapping) Reset() { *m = AttributeMapping{} } func (m *AttributeMapping) String() string { return proto.CompactTextString(m) } func (*AttributeMapping) ProtoMessage() {} func (*AttributeMapping) Descriptor() ([]byte, []int) { - return fileDescriptor_d938547f84707355, []int{141} + return fileDescriptor_d938547f84707355, []int{142} } func (m *AttributeMapping) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -7581,7 +7619,7 @@ func (m *AsymmetricKeyPair) Reset() { *m = AsymmetricKeyPair{} } func (m *AsymmetricKeyPair) String() string { return proto.CompactTextString(m) } func (*AsymmetricKeyPair) ProtoMessage() {} func (*AsymmetricKeyPair) Descriptor() ([]byte, []int) { - return fileDescriptor_d938547f84707355, []int{142} + return fileDescriptor_d938547f84707355, []int{143} } func (m *AsymmetricKeyPair) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -7631,7 +7669,7 @@ func (m *GithubConnectorV3) Reset() { *m = GithubConnectorV3{} } func (m *GithubConnectorV3) String() string { return proto.CompactTextString(m) } func (*GithubConnectorV3) ProtoMessage() {} func (*GithubConnectorV3) Descriptor() ([]byte, []int) { - return fileDescriptor_d938547f84707355, []int{143} + return fileDescriptor_d938547f84707355, []int{144} } func (m *GithubConnectorV3) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -7673,7 +7711,7 @@ func (m *GithubConnectorV3List) Reset() { *m = GithubConnectorV3List{} } func (m *GithubConnectorV3List) String() string { return proto.CompactTextString(m) } func (*GithubConnectorV3List) ProtoMessage() {} func (*GithubConnectorV3List) Descriptor() ([]byte, []int) { - return fileDescriptor_d938547f84707355, []int{144} + return fileDescriptor_d938547f84707355, []int{145} } func (m *GithubConnectorV3List) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -7723,7 +7761,7 @@ func (m *GithubConnectorSpecV3) Reset() { *m = GithubConnectorSpecV3{} } func (m *GithubConnectorSpecV3) String() string { return proto.CompactTextString(m) } func (*GithubConnectorSpecV3) ProtoMessage() {} func (*GithubConnectorSpecV3) Descriptor() ([]byte, []int) { - return fileDescriptor_d938547f84707355, []int{145} + return fileDescriptor_d938547f84707355, []int{146} } func (m *GithubConnectorSpecV3) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -7773,7 +7811,7 @@ func (m *TeamMapping) Reset() { *m = TeamMapping{} } func (m *TeamMapping) String() string { return proto.CompactTextString(m) } func (*TeamMapping) ProtoMessage() {} func (*TeamMapping) Descriptor() ([]byte, []int) { - return fileDescriptor_d938547f84707355, []int{146} + return fileDescriptor_d938547f84707355, []int{147} } func (m *TeamMapping) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -7822,7 +7860,7 @@ type TrustedClusterV2 struct { func (m *TrustedClusterV2) Reset() { *m = TrustedClusterV2{} } func (*TrustedClusterV2) ProtoMessage() {} func (*TrustedClusterV2) Descriptor() ([]byte, []int) { - return fileDescriptor_d938547f84707355, []int{147} + return fileDescriptor_d938547f84707355, []int{148} } func (m *TrustedClusterV2) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -7864,7 +7902,7 @@ func (m *TrustedClusterV2List) Reset() { *m = TrustedClusterV2List{} } func (m *TrustedClusterV2List) String() string { return proto.CompactTextString(m) } func (*TrustedClusterV2List) ProtoMessage() {} func (*TrustedClusterV2List) Descriptor() ([]byte, []int) { - return fileDescriptor_d938547f84707355, []int{148} + return fileDescriptor_d938547f84707355, []int{149} } func (m *TrustedClusterV2List) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -7920,7 +7958,7 @@ func (m *TrustedClusterSpecV2) Reset() { *m = TrustedClusterSpecV2{} } func (m *TrustedClusterSpecV2) String() string { return proto.CompactTextString(m) } func (*TrustedClusterSpecV2) ProtoMessage() {} func (*TrustedClusterSpecV2) Descriptor() ([]byte, []int) { - return fileDescriptor_d938547f84707355, []int{149} + return fileDescriptor_d938547f84707355, []int{150} } func (m *TrustedClusterSpecV2) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -7973,7 +8011,7 @@ func (m *LockV2) Reset() { *m = LockV2{} } func (m *LockV2) String() string { return proto.CompactTextString(m) } func (*LockV2) ProtoMessage() {} func (*LockV2) Descriptor() ([]byte, []int) { - return fileDescriptor_d938547f84707355, []int{150} + return fileDescriptor_d938547f84707355, []int{151} } func (m *LockV2) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -8019,7 +8057,7 @@ func (m *LockSpecV2) Reset() { *m = LockSpecV2{} } func (m *LockSpecV2) String() string { return proto.CompactTextString(m) } func (*LockSpecV2) ProtoMessage() {} func (*LockSpecV2) Descriptor() ([]byte, []int) { - return fileDescriptor_d938547f84707355, []int{151} + return fileDescriptor_d938547f84707355, []int{152} } func (m *LockSpecV2) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -8074,7 +8112,7 @@ type LockTarget struct { func (m *LockTarget) Reset() { *m = LockTarget{} } func (*LockTarget) ProtoMessage() {} func (*LockTarget) Descriptor() ([]byte, []int) { - return fileDescriptor_d938547f84707355, []int{152} + return fileDescriptor_d938547f84707355, []int{153} } func (m *LockTarget) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -8118,7 +8156,7 @@ func (m *AddressCondition) Reset() { *m = AddressCondition{} } func (m *AddressCondition) String() string { return proto.CompactTextString(m) } func (*AddressCondition) ProtoMessage() {} func (*AddressCondition) Descriptor() ([]byte, []int) { - return fileDescriptor_d938547f84707355, []int{153} + return fileDescriptor_d938547f84707355, []int{154} } func (m *AddressCondition) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -8161,7 +8199,7 @@ func (m *NetworkRestrictionsSpecV4) Reset() { *m = NetworkRestrictionsSp func (m *NetworkRestrictionsSpecV4) String() string { return proto.CompactTextString(m) } func (*NetworkRestrictionsSpecV4) ProtoMessage() {} func (*NetworkRestrictionsSpecV4) Descriptor() ([]byte, []int) { - return fileDescriptor_d938547f84707355, []int{154} + return fileDescriptor_d938547f84707355, []int{155} } func (m *NetworkRestrictionsSpecV4) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -8214,7 +8252,7 @@ func (m *NetworkRestrictionsV4) Reset() { *m = NetworkRestrictionsV4{} } func (m *NetworkRestrictionsV4) String() string { return proto.CompactTextString(m) } func (*NetworkRestrictionsV4) ProtoMessage() {} func (*NetworkRestrictionsV4) Descriptor() ([]byte, []int) { - return fileDescriptor_d938547f84707355, []int{155} + return fileDescriptor_d938547f84707355, []int{156} } func (m *NetworkRestrictionsV4) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -8258,7 +8296,7 @@ func (m *WindowsDesktopServiceV3) Reset() { *m = WindowsDesktopServiceV3 func (m *WindowsDesktopServiceV3) String() string { return proto.CompactTextString(m) } func (*WindowsDesktopServiceV3) ProtoMessage() {} func (*WindowsDesktopServiceV3) Descriptor() ([]byte, []int) { - return fileDescriptor_d938547f84707355, []int{156} + return fileDescriptor_d938547f84707355, []int{157} } func (m *WindowsDesktopServiceV3) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -8302,7 +8340,7 @@ func (m *WindowsDesktopServiceSpecV3) Reset() { *m = WindowsDesktopServi func (m *WindowsDesktopServiceSpecV3) String() string { return proto.CompactTextString(m) } func (*WindowsDesktopServiceSpecV3) ProtoMessage() {} func (*WindowsDesktopServiceSpecV3) Descriptor() ([]byte, []int) { - return fileDescriptor_d938547f84707355, []int{157} + return fileDescriptor_d938547f84707355, []int{158} } func (m *WindowsDesktopServiceSpecV3) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -8343,7 +8381,7 @@ func (m *WindowsDesktopFilter) Reset() { *m = WindowsDesktopFilter{} } func (m *WindowsDesktopFilter) String() string { return proto.CompactTextString(m) } func (*WindowsDesktopFilter) ProtoMessage() {} func (*WindowsDesktopFilter) Descriptor() ([]byte, []int) { - return fileDescriptor_d938547f84707355, []int{158} + return fileDescriptor_d938547f84707355, []int{159} } func (m *WindowsDesktopFilter) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -8387,7 +8425,7 @@ func (m *WindowsDesktopV3) Reset() { *m = WindowsDesktopV3{} } func (m *WindowsDesktopV3) String() string { return proto.CompactTextString(m) } func (*WindowsDesktopV3) ProtoMessage() {} func (*WindowsDesktopV3) Descriptor() ([]byte, []int) { - return fileDescriptor_d938547f84707355, []int{159} + return fileDescriptor_d938547f84707355, []int{160} } func (m *WindowsDesktopV3) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -8433,7 +8471,7 @@ func (m *WindowsDesktopSpecV3) Reset() { *m = WindowsDesktopSpecV3{} } func (m *WindowsDesktopSpecV3) String() string { return proto.CompactTextString(m) } func (*WindowsDesktopSpecV3) ProtoMessage() {} func (*WindowsDesktopSpecV3) Descriptor() ([]byte, []int) { - return fileDescriptor_d938547f84707355, []int{160} + return fileDescriptor_d938547f84707355, []int{161} } func (m *WindowsDesktopSpecV3) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -8499,7 +8537,7 @@ func (m *RegisterUsingTokenRequest) Reset() { *m = RegisterUsingTokenReq func (m *RegisterUsingTokenRequest) String() string { return proto.CompactTextString(m) } func (*RegisterUsingTokenRequest) ProtoMessage() {} func (*RegisterUsingTokenRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_d938547f84707355, []int{161} + return fileDescriptor_d938547f84707355, []int{162} } func (m *RegisterUsingTokenRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -8553,7 +8591,7 @@ func (m *RecoveryCodesV1) Reset() { *m = RecoveryCodesV1{} } func (m *RecoveryCodesV1) String() string { return proto.CompactTextString(m) } func (*RecoveryCodesV1) ProtoMessage() {} func (*RecoveryCodesV1) Descriptor() ([]byte, []int) { - return fileDescriptor_d938547f84707355, []int{162} + return fileDescriptor_d938547f84707355, []int{163} } func (m *RecoveryCodesV1) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -8598,7 +8636,7 @@ func (m *RecoveryCodesSpecV1) Reset() { *m = RecoveryCodesSpecV1{} } func (m *RecoveryCodesSpecV1) String() string { return proto.CompactTextString(m) } func (*RecoveryCodesSpecV1) ProtoMessage() {} func (*RecoveryCodesSpecV1) Descriptor() ([]byte, []int) { - return fileDescriptor_d938547f84707355, []int{163} + return fileDescriptor_d938547f84707355, []int{164} } func (m *RecoveryCodesSpecV1) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -8642,7 +8680,7 @@ func (m *RecoveryCode) Reset() { *m = RecoveryCode{} } func (m *RecoveryCode) String() string { return proto.CompactTextString(m) } func (*RecoveryCode) ProtoMessage() {} func (*RecoveryCode) Descriptor() ([]byte, []int) { - return fileDescriptor_d938547f84707355, []int{164} + return fileDescriptor_d938547f84707355, []int{165} } func (m *RecoveryCode) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -8686,7 +8724,7 @@ func (m *SessionTrackerV1) Reset() { *m = SessionTrackerV1{} } func (m *SessionTrackerV1) String() string { return proto.CompactTextString(m) } func (*SessionTrackerV1) ProtoMessage() {} func (*SessionTrackerV1) Descriptor() ([]byte, []int) { - return fileDescriptor_d938547f84707355, []int{165} + return fileDescriptor_d938547f84707355, []int{166} } func (m *SessionTrackerV1) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -8768,7 +8806,7 @@ func (m *SessionTrackerSpecV1) Reset() { *m = SessionTrackerSpecV1{} } func (m *SessionTrackerSpecV1) String() string { return proto.CompactTextString(m) } func (*SessionTrackerSpecV1) ProtoMessage() {} func (*SessionTrackerSpecV1) Descriptor() ([]byte, []int) { - return fileDescriptor_d938547f84707355, []int{166} + return fileDescriptor_d938547f84707355, []int{167} } func (m *SessionTrackerSpecV1) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -8815,7 +8853,7 @@ func (m *SessionTrackerPolicySet) Reset() { *m = SessionTrackerPolicySet func (m *SessionTrackerPolicySet) String() string { return proto.CompactTextString(m) } func (*SessionTrackerPolicySet) ProtoMessage() {} func (*SessionTrackerPolicySet) Descriptor() ([]byte, []int) { - return fileDescriptor_d938547f84707355, []int{167} + return fileDescriptor_d938547f84707355, []int{168} } func (m *SessionTrackerPolicySet) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -8863,7 +8901,7 @@ func (m *Participant) Reset() { *m = Participant{} } func (m *Participant) String() string { return proto.CompactTextString(m) } func (*Participant) ProtoMessage() {} func (*Participant) Descriptor() ([]byte, []int) { - return fileDescriptor_d938547f84707355, []int{168} + return fileDescriptor_d938547f84707355, []int{169} } func (m *Participant) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -8907,7 +8945,7 @@ func (m *SortBy) Reset() { *m = SortBy{} } func (m *SortBy) String() string { return proto.CompactTextString(m) } func (*SortBy) ProtoMessage() {} func (*SortBy) Descriptor() ([]byte, []int) { - return fileDescriptor_d938547f84707355, []int{169} + return fileDescriptor_d938547f84707355, []int{170} } func (m *SortBy) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -9005,6 +9043,7 @@ func init() { proto.RegisterType((*ClusterAuditConfigSpecV2)(nil), "types.ClusterAuditConfigSpecV2") proto.RegisterType((*ClusterNetworkingConfigV2)(nil), "types.ClusterNetworkingConfigV2") proto.RegisterType((*ClusterNetworkingConfigSpecV2)(nil), "types.ClusterNetworkingConfigSpecV2") + proto.RegisterType((*TunnelStrategyV1)(nil), "types.TunnelStrategyV1") proto.RegisterType((*AgentMeshTunnelStrategy)(nil), "types.AgentMeshTunnelStrategy") proto.RegisterType((*ProxyPeeringTunnelStrategy)(nil), "types.ProxyPeeringTunnelStrategy") proto.RegisterType((*SessionRecordingConfigV2)(nil), "types.SessionRecordingConfigV2") @@ -9138,742 +9177,742 @@ func init() { func init() { proto.RegisterFile("types.proto", fileDescriptor_d938547f84707355) } var fileDescriptor_d938547f84707355 = []byte{ - // 11760 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xdc, 0xbd, 0x6f, 0x6c, 0x1c, 0x49, - 0x76, 0x18, 0xae, 0x9e, 0x19, 0x92, 0x33, 0x8f, 0x43, 0x72, 0x58, 0xa4, 0x24, 0x4a, 0xab, 0xdd, - 0xd1, 0xf6, 0xee, 0x6a, 0x25, 0xdd, 0xae, 0x78, 0xa2, 0x6e, 0x75, 0xde, 0xdb, 0x7f, 0x37, 0x43, - 0x52, 0x22, 0x57, 0x14, 0xc9, 0xed, 0xe1, 0x9f, 0x3b, 0xdf, 0x9d, 0xdb, 0xcd, 0xe9, 0x12, 0xd9, - 0xcb, 0xe1, 0xf4, 0xb8, 0xbb, 0x47, 0x12, 0xed, 0x9f, 0x61, 0x1b, 0x86, 0x7f, 0x86, 0x63, 0xf8, - 0xee, 0x6c, 0x9c, 0x63, 0x3b, 0x70, 0x60, 0xc7, 0x48, 0x90, 0x38, 0xc1, 0xe5, 0x83, 0x13, 0x20, - 0x09, 0x10, 0x04, 0x30, 0x10, 0x18, 0xf7, 0x21, 0x41, 0xfc, 0x2d, 0x88, 0x13, 0x30, 0xf1, 0x5d, - 0xbe, 0x98, 0x40, 0x82, 0xc0, 0xf9, 0xe4, 0x8b, 0x8d, 0x04, 0xf5, 0xaa, 0xaa, 0xbb, 0xaa, 0xa7, - 0x87, 0x1c, 0xad, 0xb4, 0xc0, 0x69, 0x3f, 0xcd, 0xf4, 0xab, 0xf7, 0x5e, 0xfd, 0x7f, 0xf5, 0x5e, - 0xd5, 0xab, 0x57, 0x30, 0x1a, 0x1d, 0x76, 0x68, 0x78, 0xa3, 0x13, 0xf8, 0x91, 0x4f, 0x86, 0xf0, - 0xe3, 0xe2, 0xf4, 0xae, 0xbf, 0xeb, 0x23, 0x64, 0x96, 0xfd, 0xe3, 0x89, 0x17, 0xab, 0xbb, 0xbe, - 0xbf, 0xdb, 0xa2, 0xb3, 0xf8, 0xb5, 0xd3, 0x7d, 0x30, 0x1b, 0x79, 0x07, 0x34, 0x8c, 0x9c, 0x83, - 0x8e, 0x40, 0x98, 0xdf, 0xf5, 0xa2, 0xbd, 0xee, 0xce, 0x8d, 0xa6, 0x7f, 0x30, 0xbb, 0x1b, 0x38, - 0x0f, 0xbd, 0xc8, 0x89, 0x3c, 0xbf, 0xed, 0xb4, 0x66, 0x23, 0xda, 0xa2, 0x1d, 0x3f, 0x88, 0x66, - 0x9d, 0x8e, 0x37, 0x8b, 0x79, 0xcc, 0x3e, 0x0a, 0x9c, 0x4e, 0x87, 0x06, 0xc9, 0x1f, 0xce, 0xc4, - 0xfc, 0x7b, 0x79, 0x28, 0xdd, 0xa3, 0xb4, 0x53, 0x6b, 0x79, 0x0f, 0x29, 0x79, 0x05, 0x0a, 0xab, - 0xce, 0x01, 0x9d, 0x31, 0x2e, 0x1b, 0x57, 0x4b, 0xf5, 0x89, 0xe3, 0xa3, 0xea, 0x68, 0x48, 0x83, - 0x87, 0x34, 0xb0, 0xdb, 0xce, 0x01, 0xb5, 0x30, 0x91, 0x7c, 0x0e, 0x4a, 0xec, 0x37, 0xec, 0x38, - 0x4d, 0x3a, 0x93, 0x43, 0xcc, 0xb1, 0xe3, 0xa3, 0x6a, 0xa9, 0x2d, 0x81, 0x56, 0x92, 0x4e, 0xae, - 0xc0, 0xc8, 0x0a, 0x75, 0x42, 0xba, 0xbc, 0x30, 0x93, 0xbf, 0x6c, 0x5c, 0xcd, 0xd7, 0xcb, 0xc7, - 0x47, 0xd5, 0x62, 0x8b, 0x81, 0x6c, 0xcf, 0xb5, 0x64, 0x22, 0x59, 0x86, 0x91, 0xc5, 0xc7, 0x1d, - 0x2f, 0xa0, 0xe1, 0x4c, 0xe1, 0xb2, 0x71, 0x75, 0x74, 0xee, 0xe2, 0x0d, 0x5e, 0xff, 0x1b, 0xb2, - 0xfe, 0x37, 0x36, 0x64, 0xfd, 0xeb, 0x53, 0xdf, 0x3b, 0xaa, 0x9e, 0x39, 0x3e, 0xaa, 0x8e, 0x50, - 0x4e, 0xf2, 0xed, 0xff, 0x5a, 0x35, 0x2c, 0x49, 0x4f, 0xde, 0x85, 0xc2, 0xc6, 0x61, 0x87, 0xce, - 0x94, 0x2e, 0x1b, 0x57, 0xc7, 0xe7, 0x5e, 0xba, 0xc1, 0x5b, 0x3c, 0xae, 0x64, 0xf2, 0x8f, 0x61, - 0xd5, 0x8b, 0xc7, 0x47, 0xd5, 0x02, 0x43, 0xb1, 0x90, 0x8a, 0xbc, 0x09, 0xc3, 0x4b, 0x7e, 0x18, - 0x2d, 0x2f, 0xcc, 0x00, 0x56, 0xed, 0xec, 0xf1, 0x51, 0x75, 0x72, 0xcf, 0x0f, 0x23, 0xdb, 0x73, - 0xdf, 0xf0, 0x0f, 0xbc, 0x88, 0x1e, 0x74, 0xa2, 0x43, 0x4b, 0x20, 0x99, 0x3b, 0x30, 0xa6, 0xf1, - 0x23, 0xa3, 0x30, 0xb2, 0xb9, 0x7a, 0x6f, 0x75, 0x6d, 0x7b, 0xb5, 0x72, 0x86, 0x14, 0xa1, 0xb0, - 0xba, 0xb6, 0xb0, 0x58, 0x31, 0xc8, 0x08, 0xe4, 0x6b, 0xeb, 0xeb, 0x95, 0x1c, 0x29, 0x43, 0x71, - 0xa1, 0xb6, 0x51, 0xab, 0xd7, 0x1a, 0x8b, 0x95, 0x3c, 0x99, 0x82, 0x89, 0xed, 0xe5, 0xd5, 0x85, - 0xb5, 0xed, 0x86, 0xbd, 0xb0, 0xd8, 0xb8, 0xb7, 0xb1, 0xb6, 0x5e, 0x29, 0x90, 0x71, 0x80, 0x7b, - 0x9b, 0xf5, 0x45, 0x6b, 0x75, 0x71, 0x63, 0xb1, 0x51, 0x19, 0x32, 0x7f, 0x39, 0x0f, 0xc5, 0xfb, - 0x34, 0x72, 0x5c, 0x27, 0x72, 0xc8, 0x25, 0xad, 0x8b, 0xb0, 0xf4, 0x4a, 0xdf, 0xbc, 0xd2, 0xdb, - 0x37, 0x43, 0xc7, 0x47, 0x55, 0xe3, 0x4d, 0xb5, 0x4f, 0xde, 0x81, 0xd1, 0x05, 0x1a, 0x36, 0x03, - 0xaf, 0xc3, 0xc6, 0x0b, 0xf6, 0x4b, 0xa9, 0x7e, 0xe1, 0xf8, 0xa8, 0x7a, 0xd6, 0x4d, 0xc0, 0x4a, - 0x5d, 0x55, 0x6c, 0xb2, 0x0c, 0xc3, 0x2b, 0xce, 0x0e, 0x6d, 0x85, 0x33, 0x43, 0x97, 0xf3, 0x57, - 0x47, 0xe7, 0x5e, 0x10, 0xed, 0x2b, 0x0b, 0x78, 0x83, 0xa7, 0x2e, 0xb6, 0xa3, 0xe0, 0xb0, 0x3e, - 0x7d, 0x7c, 0x54, 0xad, 0xb4, 0x10, 0xa0, 0xb6, 0x1d, 0x47, 0x21, 0x8d, 0xa4, 0xcf, 0x87, 0x4f, - 0xed, 0xf3, 0x17, 0xbf, 0x77, 0x54, 0x35, 0x58, 0x5f, 0x88, 0x3e, 0x4f, 0xf8, 0xe9, 0xbd, 0x7f, - 0x19, 0x72, 0xcb, 0x0b, 0x33, 0x23, 0x38, 0xd6, 0x2a, 0xc7, 0x47, 0xd5, 0xb2, 0xd6, 0x6d, 0xb9, - 0xe5, 0x85, 0x8b, 0x6f, 0xc3, 0xa8, 0x52, 0x46, 0x52, 0x81, 0xfc, 0x3e, 0x3d, 0xe4, 0xed, 0x69, - 0xb1, 0xbf, 0x64, 0x1a, 0x86, 0x1e, 0x3a, 0xad, 0xae, 0x68, 0x40, 0x8b, 0x7f, 0x7c, 0x29, 0xf7, - 0x63, 0x86, 0xf9, 0x1b, 0x05, 0x28, 0x5a, 0x3e, 0x9f, 0x67, 0xe4, 0x1a, 0x0c, 0x35, 0x22, 0x27, - 0x92, 0x5d, 0x31, 0x75, 0x7c, 0x54, 0x9d, 0x08, 0x19, 0x40, 0xc9, 0x8f, 0x63, 0x30, 0xd4, 0xf5, - 0x3d, 0x27, 0x94, 0x5d, 0x82, 0xa8, 0x1d, 0x06, 0x50, 0x51, 0x11, 0x83, 0x5c, 0x81, 0xc2, 0x7d, - 0xdf, 0xa5, 0xa2, 0x57, 0xc8, 0xf1, 0x51, 0x75, 0xfc, 0xc0, 0x77, 0x55, 0x44, 0x4c, 0x27, 0x6f, - 0x40, 0x69, 0xbe, 0x1b, 0x04, 0xb4, 0xcd, 0x86, 0x6a, 0x01, 0x91, 0xc7, 0x8f, 0x8f, 0xaa, 0xd0, - 0xe4, 0x40, 0x36, 0xb9, 0x12, 0x04, 0xd6, 0xd4, 0x8d, 0xc8, 0x09, 0x22, 0xea, 0xce, 0x0c, 0x0d, - 0xd4, 0xd4, 0x6c, 0x7a, 0x4d, 0x86, 0x9c, 0x24, 0xdd, 0xd4, 0x82, 0x13, 0x59, 0x82, 0xd1, 0xbb, - 0x81, 0xd3, 0xa4, 0xeb, 0x34, 0xf0, 0x7c, 0x17, 0xfb, 0x30, 0x5f, 0xbf, 0x72, 0x7c, 0x54, 0x3d, - 0xb7, 0xcb, 0xc0, 0x76, 0x07, 0xe1, 0x09, 0xf5, 0x0f, 0x8f, 0xaa, 0xc5, 0x85, 0x6e, 0x80, 0xad, - 0x67, 0xa9, 0xa4, 0xe4, 0x27, 0x59, 0x97, 0x84, 0x11, 0x36, 0x2d, 0x75, 0xb1, 0xf7, 0x4e, 0x2e, - 0xa2, 0x29, 0x8a, 0x78, 0xae, 0xe5, 0x84, 0x91, 0x1d, 0x70, 0xba, 0x54, 0x39, 0x55, 0x96, 0x64, - 0x0d, 0x8a, 0x8d, 0xe6, 0x1e, 0x75, 0xbb, 0x2d, 0x3a, 0x53, 0x44, 0xf6, 0xe7, 0xc5, 0xc0, 0x95, - 0xfd, 0x29, 0x93, 0xeb, 0x17, 0x05, 0x6f, 0x12, 0x0a, 0x88, 0xd2, 0xf6, 0x31, 0x93, 0x2f, 0x15, - 0x7f, 0xfb, 0xf7, 0xab, 0x67, 0x7e, 0xfe, 0xbf, 0x5c, 0x3e, 0x63, 0xfe, 0x8b, 0x1c, 0x54, 0xd2, - 0x4c, 0xc8, 0x03, 0x18, 0xdb, 0xec, 0xb8, 0x4e, 0x44, 0xe7, 0x5b, 0x1e, 0x6d, 0x47, 0x21, 0x0e, - 0x92, 0x93, 0xeb, 0xf4, 0xaa, 0xc8, 0x77, 0xa6, 0x8b, 0x84, 0x76, 0x93, 0x53, 0xa6, 0x6a, 0xa5, - 0xb3, 0x4d, 0xf2, 0x69, 0xa0, 0x9c, 0x0e, 0x71, 0x84, 0x3d, 0x59, 0x3e, 0x5c, 0xc2, 0xf7, 0xc9, - 0x47, 0xb0, 0x15, 0x03, 0xa8, 0xed, 0xee, 0x1c, 0xe2, 0xc8, 0x1c, 0x7c, 0x00, 0x31, 0x92, 0x8c, - 0x01, 0xc4, 0xc0, 0xe6, 0x7f, 0x37, 0x60, 0xdc, 0xa2, 0xa1, 0xdf, 0x0d, 0x9a, 0x74, 0x89, 0x3a, - 0x2e, 0x0d, 0xd8, 0xf0, 0xbf, 0xe7, 0xb5, 0x5d, 0x31, 0xa7, 0x70, 0xf8, 0xef, 0x7b, 0x6d, 0x75, - 0x0a, 0x63, 0x3a, 0xf9, 0x3c, 0x8c, 0x34, 0xba, 0x3b, 0x88, 0xca, 0xe7, 0xd4, 0x39, 0xec, 0xb1, - 0xee, 0x8e, 0x9d, 0x42, 0x97, 0x68, 0x64, 0x16, 0x46, 0xb6, 0x68, 0x10, 0x26, 0x12, 0x0f, 0x25, - 0xfb, 0x43, 0x0e, 0x52, 0x09, 0x04, 0x16, 0xb9, 0x9b, 0x48, 0x5d, 0xb1, 0x26, 0x4d, 0xa4, 0x64, - 0x5d, 0x32, 0x54, 0x0e, 0x04, 0x44, 0x1d, 0x2a, 0x12, 0xcb, 0xfc, 0xf5, 0x1c, 0x54, 0x16, 0x9c, - 0xc8, 0xd9, 0x71, 0x42, 0xd1, 0x9e, 0x5b, 0xb7, 0x98, 0x1c, 0x57, 0x2a, 0x8a, 0x72, 0x9c, 0x95, - 0xfc, 0x13, 0x57, 0xef, 0xb5, 0x74, 0xf5, 0x46, 0xd9, 0x02, 0x29, 0xaa, 0x97, 0x54, 0xea, 0xbd, - 0xd3, 0x2b, 0x55, 0x11, 0x95, 0x2a, 0xca, 0x4a, 0x25, 0x55, 0x21, 0xef, 0x41, 0xa1, 0xd1, 0xa1, - 0x4d, 0x21, 0x44, 0xa4, 0xec, 0xd7, 0x2b, 0xc7, 0x10, 0xb6, 0x6e, 0xd5, 0xcb, 0x82, 0x4d, 0x21, - 0xec, 0xd0, 0xa6, 0x85, 0x64, 0xca, 0xa4, 0xf9, 0xce, 0x30, 0x4c, 0x67, 0x91, 0x91, 0xf7, 0xf4, - 0xc5, 0x89, 0x37, 0xcf, 0x0b, 0x7d, 0x17, 0xa7, 0x19, 0x43, 0x5f, 0x9e, 0xae, 0x43, 0x71, 0x9d, - 0x0d, 0xc8, 0xa6, 0xdf, 0x12, 0x2d, 0xc7, 0xa4, 0x62, 0xb1, 0x23, 0x61, 0x86, 0x15, 0xa7, 0x93, - 0x17, 0x20, 0xbf, 0x69, 0x2d, 0x8b, 0xe6, 0x2a, 0x1d, 0x1f, 0x55, 0xf3, 0xdd, 0xc0, 0x9b, 0x31, - 0x2c, 0x06, 0x25, 0xb3, 0x30, 0x3c, 0x5f, 0x9b, 0xa7, 0x41, 0x84, 0xcd, 0x54, 0xae, 0x9f, 0x67, - 0xa3, 0xa5, 0xe9, 0xd8, 0x4d, 0x1a, 0x44, 0x5a, 0xf6, 0x02, 0x8d, 0x7c, 0x0e, 0xf2, 0xb5, 0xed, - 0x86, 0x68, 0x19, 0x10, 0x2d, 0x53, 0xdb, 0x6e, 0xd4, 0xc7, 0x44, 0x43, 0xe4, 0x9d, 0x47, 0x21, - 0xe3, 0x5e, 0xdb, 0x6e, 0xa8, 0xbd, 0x35, 0x7c, 0x42, 0x6f, 0x5d, 0x85, 0x22, 0xd3, 0x33, 0xd8, - 0x02, 0x8f, 0x42, 0xb1, 0xc4, 0xd5, 0xa7, 0x3d, 0x01, 0xb3, 0xe2, 0x54, 0xf2, 0x4a, 0xac, 0xb6, - 0x14, 0x13, 0x7e, 0x42, 0x6d, 0x91, 0xca, 0x0a, 0x79, 0x0c, 0x63, 0x0b, 0x87, 0x6d, 0xe7, 0xc0, - 0x6b, 0x8a, 0x25, 0xbc, 0x84, 0x4b, 0xf8, 0x8d, 0x13, 0xba, 0xf1, 0x86, 0x46, 0xc0, 0x57, 0x75, - 0x29, 0x7c, 0x67, 0x5c, 0x9e, 0x66, 0xa7, 0x57, 0xf8, 0x19, 0xc3, 0xd2, 0x33, 0x62, 0x73, 0x49, - 0x8a, 0x48, 0xd4, 0xab, 0x92, 0x61, 0x27, 0xc1, 0xc9, 0x5c, 0x0a, 0x04, 0x44, 0x9d, 0x4b, 0xf1, - 0xa2, 0xfb, 0x1e, 0xe4, 0xef, 0xce, 0xaf, 0xcf, 0x8c, 0x22, 0x0f, 0x22, 0x78, 0xdc, 0x9d, 0x5f, - 0x9f, 0x6f, 0xf9, 0x5d, 0xb7, 0xf1, 0xd1, 0x4a, 0xfd, 0xbc, 0x60, 0x33, 0xb6, 0xdb, 0xec, 0x68, - 0x25, 0x62, 0x74, 0x64, 0x11, 0x8a, 0xb2, 0x96, 0x33, 0x65, 0xe4, 0x31, 0x99, 0xaa, 0xfc, 0xd6, - 0x2d, 0x3e, 0xd7, 0x5c, 0xf1, 0xad, 0x96, 0x42, 0xe2, 0x5c, 0xdc, 0x06, 0xd2, 0xdb, 0x2e, 0x19, - 0x9a, 0xc4, 0xe7, 0x54, 0x4d, 0x62, 0x74, 0xee, 0xac, 0xc8, 0x6b, 0xde, 0x3f, 0x38, 0x70, 0xda, - 0x2e, 0xd2, 0x6e, 0xcd, 0xa9, 0x0a, 0x46, 0x0d, 0xc6, 0x93, 0x82, 0xac, 0x78, 0x61, 0x44, 0x66, - 0xa1, 0x24, 0x21, 0x6c, 0x11, 0xc9, 0x67, 0x16, 0xd9, 0x4a, 0x70, 0xcc, 0x3f, 0xc9, 0x01, 0x24, - 0x29, 0xcf, 0xa9, 0x9c, 0xf9, 0xa2, 0x26, 0x67, 0xce, 0xa6, 0x07, 0x68, 0x5f, 0x09, 0x43, 0x3e, - 0x80, 0x61, 0xa6, 0x72, 0x75, 0xa5, 0x4a, 0x79, 0x3e, 0x4d, 0x8a, 0x89, 0x5b, 0xb7, 0xea, 0xe3, - 0x82, 0x78, 0x38, 0x44, 0x88, 0x25, 0xc8, 0x14, 0x11, 0xf5, 0x3f, 0x0b, 0x49, 0x67, 0x08, 0xe1, - 0x74, 0x55, 0x91, 0x2e, 0x46, 0x32, 0x1f, 0xa5, 0x74, 0x51, 0x64, 0xcb, 0x05, 0x2e, 0x5b, 0x78, - 0xa3, 0x8e, 0x08, 0xd9, 0x92, 0x96, 0x2c, 0xbc, 0x01, 0x4f, 0x95, 0x2c, 0x9d, 0xf4, 0xb4, 0x2d, - 0xe0, 0x30, 0xb8, 0x9a, 0xd9, 0x2a, 0x59, 0x13, 0xf6, 0xf2, 0x69, 0x13, 0x36, 0x3d, 0x5d, 0x6f, - 0xf5, 0x93, 0x65, 0x67, 0xe5, 0xec, 0x72, 0x1e, 0xa9, 0xe4, 0x28, 0xd3, 0xde, 0xe1, 0x53, 0x73, - 0xb8, 0xef, 0xd4, 0x3c, 0x9b, 0x39, 0x35, 0xf9, 0xc4, 0x7c, 0x07, 0x86, 0x6a, 0x3f, 0xdd, 0x0d, - 0xa8, 0xd0, 0xfd, 0xca, 0x32, 0x4f, 0x06, 0x8b, 0xe7, 0xf4, 0x84, 0xc3, 0x3e, 0x55, 0x9d, 0x19, - 0xd3, 0x59, 0xce, 0x1b, 0x2b, 0x0d, 0xa1, 0xd7, 0x91, 0x54, 0xb3, 0x6c, 0xac, 0x28, 0xc5, 0x8e, - 0xb4, 0x5a, 0x33, 0x2a, 0x32, 0x0b, 0xb9, 0xda, 0x02, 0x1a, 0x8b, 0xa3, 0x73, 0x25, 0x99, 0xed, - 0x42, 0x7d, 0x5a, 0x90, 0x94, 0x1d, 0xcd, 0x7e, 0xa8, 0x2d, 0x7c, 0x7a, 0x93, 0xbf, 0xa5, 0xa8, - 0x09, 0x62, 0x98, 0x32, 0x73, 0x54, 0x0c, 0x16, 0x23, 0x51, 0x5a, 0x7a, 0x06, 0x4b, 0x3c, 0x54, - 0xae, 0xf1, 0x8e, 0xcb, 0xf5, 0x74, 0xdc, 0xa8, 0xb2, 0x08, 0x61, 0x77, 0x99, 0x7f, 0x61, 0x20, - 0x2e, 0x79, 0x03, 0x86, 0x2d, 0xba, 0x9b, 0xac, 0xb5, 0x68, 0xb3, 0x05, 0x08, 0x51, 0x33, 0xe0, - 0x38, 0x28, 0xc8, 0xa9, 0x1b, 0xee, 0x79, 0x0f, 0x22, 0x91, 0x4b, 0x2c, 0xc8, 0x05, 0x58, 0x11, - 0xe4, 0x02, 0xa2, 0x09, 0x72, 0x01, 0x63, 0x43, 0xcc, 0x5a, 0x68, 0x08, 0x65, 0x52, 0x96, 0xd4, - 0x5a, 0x50, 0xfa, 0x2a, 0x70, 0xb5, 0xbe, 0xb2, 0x16, 0x1a, 0xe4, 0x36, 0x94, 0x6a, 0xcd, 0xa6, - 0xdf, 0x55, 0x8c, 0x9e, 0x99, 0xe3, 0xa3, 0xea, 0xb4, 0xc3, 0x81, 0xba, 0x89, 0x9e, 0xa0, 0x9a, - 0xf5, 0xa4, 0xd4, 0x8c, 0xc7, 0x7c, 0xab, 0x1b, 0x46, 0x34, 0x58, 0x5e, 0x10, 0x55, 0x46, 0x1e, - 0x4d, 0x0e, 0x4c, 0xf1, 0x88, 0x51, 0xcd, 0xff, 0x6c, 0x60, 0x89, 0xc9, 0xdb, 0x00, 0xcb, 0x6d, - 0xa6, 0xd8, 0x36, 0x69, 0xcc, 0x00, 0x8d, 0x67, 0x4f, 0x40, 0x75, 0x0e, 0x0a, 0xb2, 0x9e, 0x75, - 0x6e, 0xe0, 0xac, 0x59, 0x96, 0x52, 0x4d, 0x16, 0xfb, 0x28, 0x22, 0xcb, 0x40, 0x40, 0x53, 0x59, - 0x26, 0xc8, 0xe4, 0x0a, 0x8c, 0x2c, 0xd7, 0xee, 0xd7, 0xba, 0xd1, 0x1e, 0xb6, 0x57, 0x91, 0x0b, - 0x2c, 0xcf, 0x39, 0xb0, 0x9d, 0x6e, 0xb4, 0x67, 0xc9, 0x44, 0xf3, 0xe7, 0x0d, 0x18, 0x55, 0xe6, - 0x2a, 0x2b, 0xea, 0x7a, 0xe0, 0x7f, 0x4c, 0x9b, 0x91, 0xde, 0x4a, 0x1d, 0x0e, 0x4c, 0x15, 0x35, - 0x46, 0x4d, 0xb5, 0x4e, 0xee, 0x09, 0x5a, 0xc7, 0x9c, 0x15, 0x22, 0x80, 0xd9, 0x00, 0xca, 0x16, - 0x07, 0xda, 0x00, 0x4c, 0xc7, 0x51, 0x6d, 0x00, 0x96, 0x6e, 0xfe, 0xa1, 0xc1, 0xa6, 0x2e, 0x99, - 0x05, 0xb8, 0x47, 0x0f, 0x23, 0x67, 0xe7, 0x8e, 0xd7, 0xd2, 0xb6, 0xae, 0xf6, 0x11, 0x6a, 0x3f, - 0xf0, 0x5a, 0xd4, 0x52, 0x50, 0xc8, 0x2d, 0x28, 0xde, 0x0b, 0x76, 0xde, 0x42, 0xf4, 0x5c, 0x2c, - 0x82, 0xa7, 0xf6, 0x83, 0x9d, 0xb7, 0x10, 0x59, 0x1d, 0xaf, 0x12, 0x91, 0x98, 0x30, 0xbc, 0xe0, - 0x1f, 0x38, 0x9e, 0x5c, 0xf6, 0x80, 0xad, 0x1d, 0x2e, 0x42, 0x2c, 0x91, 0xc2, 0x84, 0x7e, 0x63, - 0x7d, 0x55, 0x0c, 0x4c, 0x14, 0xfa, 0x61, 0xa7, 0x6d, 0x31, 0x98, 0xf9, 0x5d, 0x03, 0x46, 0x15, - 0x89, 0x44, 0xbe, 0x20, 0xcc, 0x7c, 0x03, 0x37, 0xa9, 0xce, 0xf5, 0xca, 0x2c, 0x96, 0xca, 0x97, - 0x6b, 0x66, 0xfe, 0x0b, 0xa3, 0x3f, 0x91, 0x06, 0xb9, 0x41, 0xa4, 0xc1, 0xdb, 0x00, 0x5c, 0x97, - 0xc3, 0xe6, 0x54, 0xc6, 0x8d, 0xb2, 0xa9, 0xa7, 0x76, 0x46, 0x82, 0x6c, 0xfe, 0x42, 0x0e, 0x8a, - 0xc2, 0x56, 0x99, 0x7b, 0x4e, 0x75, 0x88, 0xb7, 0x34, 0x1d, 0x62, 0x4a, 0x90, 0x2a, 0xca, 0xed, - 0xdc, 0x29, 0x36, 0xca, 0xdb, 0x50, 0x96, 0x4d, 0x80, 0xaa, 0xd8, 0x35, 0x18, 0x91, 0x56, 0x36, - 0x57, 0xc4, 0x26, 0x34, 0x9e, 0x5b, 0x73, 0x96, 0x4c, 0x37, 0xff, 0x64, 0x48, 0xd2, 0xf2, 0x9c, - 0x58, 0x13, 0xd6, 0x5c, 0x37, 0x50, 0x9b, 0xd0, 0x71, 0xdd, 0xc0, 0x42, 0x28, 0xeb, 0xa8, 0xf5, - 0xee, 0x4e, 0xcb, 0x6b, 0x22, 0x8e, 0x32, 0x6b, 0x3a, 0x08, 0xb5, 0x19, 0xaa, 0xda, 0x51, 0x09, - 0xb2, 0x66, 0x22, 0xe4, 0x4f, 0x34, 0x11, 0x7e, 0x02, 0x4a, 0xf3, 0x07, 0xae, 0xa6, 0x42, 0x98, - 0x19, 0x8d, 0x72, 0x23, 0x46, 0xe2, 0xca, 0xc3, 0x25, 0xd1, 0x46, 0xd3, 0xcd, 0x03, 0xb7, 0x57, - 0x71, 0x48, 0x58, 0x6a, 0x3a, 0xfe, 0xd0, 0xd3, 0xe8, 0xf8, 0xb7, 0xa1, 0xb4, 0x19, 0xd2, 0x8d, - 0x6e, 0xbb, 0x4d, 0x5b, 0xa8, 0x4e, 0x14, 0xb9, 0xec, 0xe9, 0x86, 0xd4, 0x8e, 0x10, 0xaa, 0x16, - 0x20, 0x46, 0x55, 0x87, 0xd5, 0xc8, 0x09, 0xc3, 0xea, 0x0b, 0x50, 0xa8, 0x75, 0x3a, 0xd2, 0xf8, - 0x89, 0x17, 0xc9, 0x4e, 0x07, 0x97, 0xbe, 0x71, 0xa7, 0xd3, 0xd1, 0x4d, 0x19, 0xc4, 0x26, 0x14, - 0xc8, 0xbd, 0xee, 0x0e, 0x0d, 0xda, 0x34, 0xa2, 0xa1, 0x10, 0xcd, 0xe1, 0x0c, 0x20, 0x8f, 0x19, - 0xb9, 0xc7, 0x9c, 0x46, 0x40, 0xc3, 0xf5, 0xfc, 0x7e, 0x77, 0x87, 0xda, 0x42, 0xc6, 0xab, 0x6d, - 0x97, 0xc1, 0x90, 0xc9, 0xa6, 0x75, 0x4a, 0x03, 0x1c, 0x07, 0xa3, 0x89, 0x6c, 0xea, 0x50, 0x1a, - 0xa4, 0x47, 0x41, 0x8c, 0x78, 0xb1, 0x01, 0xe3, 0x7a, 0xa7, 0x3d, 0x03, 0x6d, 0xe4, 0xc3, 0x42, - 0xb1, 0x58, 0x29, 0x99, 0xbf, 0x9c, 0x83, 0xd1, 0x5a, 0xa7, 0xf3, 0x9c, 0x6f, 0x5b, 0xfc, 0x98, - 0x26, 0x0a, 0xce, 0x25, 0x5d, 0xfe, 0x04, 0x3b, 0x16, 0x7f, 0x65, 0xc0, 0x44, 0x8a, 0x42, 0x2d, - 0xbd, 0x31, 0xa0, 0x19, 0x9f, 0x1b, 0xd0, 0x8c, 0xcf, 0xf7, 0x37, 0xe3, 0xd5, 0x89, 0x56, 0x78, - 0x9a, 0x89, 0xf6, 0x3a, 0xe4, 0x6b, 0x9d, 0x8e, 0x68, 0x95, 0x72, 0xd2, 0x2a, 0x5b, 0xb7, 0xf8, - 0xea, 0xe5, 0x74, 0x3a, 0x16, 0xc3, 0x30, 0xdf, 0x84, 0x12, 0x82, 0x51, 0x0c, 0x5e, 0x16, 0xf3, - 0x87, 0xcb, 0x40, 0x8d, 0x8c, 0xcf, 0x15, 0xf3, 0xff, 0x18, 0x30, 0x84, 0xdf, 0xcf, 0xe9, 0x70, - 0x99, 0xd3, 0x86, 0x4b, 0x45, 0x19, 0x2e, 0x83, 0x0c, 0x94, 0x3f, 0xca, 0x63, 0x6b, 0x89, 0x21, - 0x22, 0x0c, 0x41, 0x23, 0xc3, 0x10, 0x7c, 0x0a, 0xa9, 0xbf, 0x9f, 0x36, 0x09, 0xf3, 0xd8, 0x19, - 0xaf, 0xa4, 0x8b, 0xfa, 0x4c, 0xac, 0xc1, 0x25, 0x20, 0xcb, 0xed, 0x90, 0x36, 0xbb, 0x01, 0x6d, - 0xec, 0x7b, 0x9d, 0x2d, 0x1a, 0x78, 0x0f, 0x0e, 0x85, 0x3a, 0x89, 0x82, 0xd9, 0x13, 0xa9, 0x76, - 0xb8, 0xef, 0x75, 0xec, 0x87, 0x98, 0x6e, 0x65, 0xd0, 0x90, 0x0f, 0x60, 0xc4, 0xa2, 0x8f, 0x02, - 0x2f, 0xa2, 0xa2, 0x6d, 0xc7, 0x63, 0xe3, 0x01, 0xa1, 0x5c, 0xa1, 0x09, 0xf8, 0x87, 0xda, 0xff, - 0x22, 0xfd, 0xd3, 0xb3, 0xbd, 0xbe, 0x33, 0x84, 0x73, 0xe1, 0x94, 0xe3, 0xb5, 0x13, 0xac, 0x7a, - 0xbd, 0x33, 0xf3, 0x4f, 0xd2, 0x99, 0x5b, 0x50, 0x66, 0xf6, 0x5e, 0xca, 0xbc, 0xbf, 0x94, 0xf4, - 0xe5, 0x0d, 0x35, 0xf9, 0xa4, 0x93, 0x35, 0x8d, 0x0f, 0xb1, 0xd3, 0x83, 0x84, 0x9f, 0xd8, 0xbd, - 0xa8, 0x30, 0xce, 0x18, 0x1e, 0xb1, 0xe8, 0x68, 0xf2, 0xc6, 0x7a, 0xe2, 0x81, 0x31, 0xfc, 0x74, - 0x03, 0x63, 0xe4, 0x93, 0x0c, 0x8c, 0xf4, 0x99, 0x66, 0xf1, 0x49, 0xce, 0x34, 0x2f, 0x7e, 0x00, - 0x93, 0x3d, 0x2d, 0xfc, 0x24, 0xe7, 0x82, 0x9f, 0xde, 0xb0, 0xfc, 0xd9, 0xb8, 0x5d, 0xc8, 0x1c, - 0xda, 0xb0, 0x5e, 0x40, 0x9b, 0x11, 0x8a, 0x5e, 0x21, 0x2d, 0x03, 0x01, 0x4b, 0x19, 0xd9, 0x08, - 0x23, 0xef, 0xc3, 0x08, 0x3f, 0x57, 0x09, 0x67, 0x72, 0xd8, 0xf7, 0x63, 0x22, 0x47, 0x0e, 0x15, - 0x87, 0xdb, 0x1c, 0x43, 0x6d, 0x55, 0x41, 0x64, 0xde, 0x85, 0x61, 0x71, 0x2e, 0x73, 0xf2, 0xbc, - 0xa8, 0xc2, 0xd0, 0x56, 0xd2, 0x32, 0xb8, 0x97, 0xce, 0x2b, 0x61, 0x71, 0xb8, 0xf9, 0xab, 0x06, - 0x8c, 0xeb, 0xb5, 0x24, 0x37, 0x60, 0x58, 0x1c, 0x1c, 0x1a, 0x78, 0x70, 0xc8, 0x6a, 0x33, 0xcc, - 0x8f, 0x0c, 0xb5, 0x83, 0x42, 0x81, 0xc5, 0x44, 0xbf, 0xe0, 0x80, 0x75, 0x11, 0xa2, 0x5f, 0x0c, - 0x52, 0x4b, 0xa6, 0x31, 0x3b, 0xcd, 0xa2, 0x61, 0xb7, 0x15, 0xa9, 0x76, 0x5a, 0x80, 0x10, 0x4b, - 0xa4, 0x98, 0x47, 0x06, 0x40, 0xa3, 0xb1, 0x74, 0x8f, 0x1e, 0xae, 0x3b, 0x5e, 0x80, 0xb6, 0x2e, - 0xce, 0xc6, 0x7b, 0xa2, 0xb7, 0xca, 0xc2, 0xd6, 0xe5, 0x33, 0x77, 0x9f, 0x1e, 0x6a, 0xb6, 0xae, - 0x44, 0xc5, 0x29, 0x1f, 0x78, 0x0f, 0x9d, 0x88, 0x32, 0xc2, 0x1c, 0x12, 0xf2, 0x29, 0xcf, 0xa1, - 0x29, 0x4a, 0x05, 0x99, 0x7c, 0x03, 0xc6, 0x93, 0x2f, 0xf4, 0x56, 0xc8, 0xa3, 0x21, 0x28, 0x47, - 0x84, 0x9e, 0x58, 0x7f, 0xe9, 0xf8, 0xa8, 0x7a, 0x51, 0xe1, 0x6a, 0x33, 0x2c, 0x85, 0x75, 0x8a, - 0x99, 0xf9, 0x07, 0x06, 0xc0, 0xc6, 0x4a, 0x43, 0x56, 0xf0, 0x0a, 0x14, 0xe2, 0x2d, 0xa4, 0x32, - 0x37, 0xa8, 0x53, 0x16, 0x23, 0xa6, 0x93, 0x57, 0x20, 0x9f, 0xd4, 0x64, 0xf2, 0xf8, 0xa8, 0x3a, - 0xa6, 0xd7, 0x80, 0xa5, 0x92, 0xbb, 0x30, 0x32, 0x50, 0x99, 0x71, 0x74, 0x66, 0x94, 0x55, 0x52, - 0x63, 0x2f, 0x7c, 0xb8, 0xbd, 0xf1, 0xd9, 0xed, 0x85, 0x6f, 0xe5, 0x60, 0x82, 0xb5, 0x6b, 0xad, - 0x1b, 0xed, 0xf9, 0x81, 0x17, 0x1d, 0x3e, 0xb7, 0xa6, 0xf4, 0xbb, 0x9a, 0x42, 0x74, 0x51, 0x8a, - 0x2d, 0xb5, 0x6e, 0x03, 0x59, 0xd4, 0x7f, 0x3e, 0x02, 0x53, 0x19, 0x54, 0xe4, 0x0d, 0xe1, 0xb2, - 0x93, 0x6c, 0x34, 0xa1, 0x4b, 0xce, 0x0f, 0x8f, 0xaa, 0x65, 0x89, 0xbe, 0x91, 0xb8, 0xe8, 0xcc, - 0xc1, 0xa8, 0xb0, 0x97, 0x56, 0x13, 0x8d, 0x1a, 0x7d, 0x3d, 0xe4, 0x46, 0x1a, 0x8a, 0x26, 0x15, - 0x89, 0xd4, 0xa0, 0x3c, 0xbf, 0x47, 0x9b, 0xfb, 0x5e, 0x7b, 0xf7, 0x1e, 0x3d, 0xe4, 0xfa, 0x52, - 0xb9, 0xfe, 0x22, 0x33, 0xcf, 0x9a, 0x02, 0xce, 0xba, 0x54, 0xb7, 0xfc, 0x34, 0x12, 0xf2, 0x3e, - 0x8c, 0x36, 0xbc, 0xdd, 0xb6, 0xe4, 0x50, 0x40, 0x0e, 0x97, 0x8e, 0x8f, 0xaa, 0xe7, 0x42, 0x0e, - 0xee, 0x65, 0xa0, 0x12, 0x90, 0x6b, 0x30, 0x64, 0xf9, 0x2d, 0xca, 0x97, 0x61, 0xe1, 0x04, 0x12, - 0x30, 0x80, 0xba, 0xa1, 0x8d, 0x18, 0x64, 0x09, 0x46, 0xd8, 0x9f, 0xfb, 0x4e, 0x67, 0x66, 0x18, - 0xe5, 0x36, 0x89, 0x15, 0x7c, 0x84, 0x76, 0xbc, 0xf6, 0xae, 0xaa, 0xe3, 0xb7, 0xa8, 0x7d, 0xe0, - 0x74, 0xb4, 0x75, 0x91, 0x23, 0x92, 0x2d, 0x18, 0x4d, 0x04, 0x41, 0x38, 0x33, 0xa2, 0x1d, 0x20, - 0x25, 0x29, 0xf5, 0x97, 0x05, 0xb3, 0xf3, 0x51, 0x2b, 0xc4, 0xb1, 0xdd, 0x61, 0xf8, 0x7a, 0x65, - 0x14, 0x46, 0x9a, 0x0d, 0x52, 0xec, 0x6f, 0x83, 0x18, 0xa7, 0xda, 0x20, 0x2e, 0x80, 0x68, 0xa4, - 0x5a, 0x6b, 0x57, 0xf8, 0x6c, 0x5d, 0xeb, 0x3f, 0xc0, 0x6e, 0x24, 0xc8, 0x38, 0x27, 0xf9, 0x76, - 0x96, 0x68, 0x7f, 0xa7, 0xb5, 0xab, 0x6d, 0x67, 0xc5, 0xa8, 0xac, 0x19, 0x12, 0x51, 0x23, 0xcd, - 0x76, 0xd9, 0x0c, 0x49, 0x4a, 0xd2, 0x0c, 0x1f, 0x3f, 0x8a, 0xfa, 0x35, 0x83, 0xc2, 0x88, 0xac, - 0x02, 0xd4, 0x9a, 0x91, 0xf7, 0x90, 0xe2, 0x90, 0x18, 0xd5, 0x1a, 0x62, 0xbe, 0x76, 0x8f, 0x1e, - 0x36, 0x68, 0x14, 0xbb, 0x43, 0x9c, 0x75, 0x10, 0x35, 0x35, 0x4c, 0x2c, 0x85, 0x03, 0xe9, 0xc0, - 0xd9, 0x9a, 0xeb, 0x7a, 0xdc, 0x8f, 0x6f, 0x23, 0x60, 0xe3, 0xd7, 0x45, 0xd6, 0xe5, 0x6c, 0xd6, - 0xd7, 0x04, 0xeb, 0x97, 0x9d, 0x98, 0xca, 0x8e, 0x38, 0x59, 0x3a, 0x9b, 0x6c, 0xc6, 0xe6, 0x1a, - 0x8c, 0xeb, 0x4d, 0xaa, 0x7b, 0xb0, 0x95, 0xa1, 0x68, 0x35, 0x6a, 0x76, 0x63, 0xa9, 0x76, 0xb3, - 0x62, 0x90, 0x0a, 0x94, 0xc5, 0xd7, 0x9c, 0x3d, 0xf7, 0xd6, 0xed, 0x4a, 0x4e, 0x83, 0xbc, 0x75, - 0x73, 0xae, 0x92, 0x37, 0xff, 0xc8, 0x80, 0xa2, 0x2c, 0x1f, 0xb9, 0x0d, 0xf9, 0x46, 0x63, 0x29, - 0x75, 0x6e, 0x99, 0x2c, 0xbd, 0x7c, 0x91, 0x09, 0xc3, 0x3d, 0x75, 0x91, 0x69, 0x34, 0x96, 0x18, - 0xdd, 0xc6, 0x4a, 0x43, 0x28, 0x2d, 0x19, 0xc3, 0x75, 0xb2, 0xcf, 0x61, 0xce, 0x6d, 0xc8, 0x7f, - 0xb8, 0xbd, 0x21, 0xac, 0xa1, 0x8c, 0xfe, 0x45, 0xba, 0x8f, 0x1f, 0xa9, 0x4b, 0x1f, 0x23, 0x30, - 0x2d, 0x18, 0x55, 0xa6, 0x16, 0x57, 0x22, 0x0e, 0xfc, 0xd8, 0xb7, 0x4b, 0x28, 0x11, 0x0c, 0x62, - 0x89, 0x14, 0xa6, 0xf3, 0xac, 0xf8, 0x4d, 0xa7, 0x25, 0xb4, 0x11, 0xd4, 0x79, 0x5a, 0x0c, 0x60, - 0x71, 0xb8, 0xf9, 0xc7, 0x06, 0x54, 0xd6, 0x03, 0xff, 0xa1, 0xc7, 0x24, 0xf0, 0x86, 0xbf, 0x4f, - 0xdb, 0x5b, 0x37, 0xc9, 0x9b, 0x52, 0x08, 0x70, 0x15, 0xee, 0x3c, 0xa3, 0x42, 0x21, 0xf0, 0xc3, - 0xa3, 0x2a, 0x34, 0x0e, 0xc3, 0x88, 0x1e, 0xb0, 0x74, 0x29, 0x08, 0x14, 0x17, 0xb9, 0xdc, 0xe0, - 0x6e, 0x37, 0xa7, 0xb8, 0xc8, 0x55, 0x61, 0x08, 0x8b, 0xa3, 0x78, 0x3e, 0x0c, 0x45, 0x0c, 0x60, - 0x71, 0xb8, 0x22, 0xb0, 0x7f, 0x3d, 0xd7, 0x53, 0x87, 0xb9, 0xcf, 0x94, 0xeb, 0x8a, 0x5e, 0xb9, - 0x81, 0x16, 0xb1, 0xaf, 0xc2, 0x74, 0xba, 0x49, 0x70, 0x5f, 0xa4, 0x06, 0x13, 0x3a, 0x5c, 0x6e, - 0x91, 0x9c, 0xcf, 0xcc, 0x6b, 0x6b, 0xce, 0x4a, 0xe3, 0x9b, 0xdf, 0x37, 0xa0, 0x84, 0x7f, 0xad, - 0x6e, 0x8b, 0x32, 0xcd, 0xa6, 0xb6, 0xdd, 0x10, 0xa7, 0x58, 0xea, 0x49, 0x93, 0xf3, 0x28, 0xb4, - 0xc5, 0x91, 0x97, 0x26, 0x47, 0x62, 0x64, 0x41, 0xca, 0xcf, 0xec, 0x42, 0x31, 0x42, 0x63, 0x52, - 0x7e, 0xb8, 0x17, 0xa6, 0x48, 0x05, 0x32, 0xeb, 0x3f, 0xf6, 0xe5, 0xb7, 0xe4, 0x7e, 0x32, 0xf6, - 0x1f, 0xd2, 0xf9, 0xda, 0xd9, 0x88, 0x44, 0x23, 0x6f, 0xc2, 0x30, 0xcb, 0xda, 0x92, 0x27, 0x1f, - 0x68, 0x55, 0x60, 0x19, 0x03, 0xed, 0x08, 0x91, 0x23, 0x99, 0xff, 0x32, 0x97, 0x6e, 0x40, 0xa1, - 0x05, 0x3c, 0xe1, 0xdc, 0x78, 0x07, 0x86, 0x6a, 0xad, 0x96, 0xff, 0x48, 0x48, 0x09, 0xb9, 0x4d, - 0x13, 0xb7, 0x1f, 0x5f, 0x61, 0x1d, 0x86, 0xa2, 0x1d, 0x19, 0x33, 0x00, 0x99, 0x87, 0x52, 0x6d, - 0xbb, 0xb1, 0xbc, 0xbc, 0xb0, 0xb1, 0xb1, 0x22, 0x3c, 0x93, 0x5f, 0x93, 0xed, 0xe3, 0x79, 0xae, - 0x1d, 0x45, 0xad, 0x3e, 0x8e, 0x8b, 0x09, 0x1d, 0x79, 0x0f, 0xe0, 0x43, 0xdf, 0x6b, 0xdf, 0xa7, - 0xd1, 0x9e, 0xef, 0x8a, 0xca, 0x33, 0x95, 0x62, 0xf4, 0x63, 0xdf, 0x6b, 0xdb, 0x07, 0x08, 0x66, - 0x65, 0x4f, 0x90, 0x2c, 0xe5, 0x3f, 0x6b, 0xe9, 0xba, 0x1f, 0xa1, 0x0e, 0x33, 0x94, 0xb4, 0xf4, - 0x8e, 0x1f, 0xa5, 0x0f, 0x66, 0x24, 0x9a, 0xf9, 0x6b, 0x39, 0x18, 0xe7, 0x96, 0x2a, 0x1f, 0x30, - 0xcf, 0xed, 0x64, 0x7c, 0x47, 0x9b, 0x8c, 0x17, 0xe4, 0xc2, 0xa0, 0x54, 0x6d, 0xa0, 0xa9, 0xb8, - 0x07, 0xa4, 0x97, 0x86, 0x58, 0x72, 0x3f, 0x65, 0x90, 0x59, 0x78, 0x33, 0x39, 0x70, 0x0e, 0x91, - 0xc8, 0x46, 0x51, 0x18, 0x5a, 0x1a, 0x0f, 0xf3, 0x57, 0x73, 0x30, 0xa6, 0xe8, 0x93, 0xcf, 0x6d, - 0xc3, 0x7f, 0x49, 0x6b, 0x78, 0x79, 0x70, 0xa1, 0xd4, 0x6c, 0xa0, 0x76, 0xef, 0xc2, 0x64, 0x0f, - 0x49, 0x5a, 0x2d, 0x37, 0x06, 0x51, 0xcb, 0xdf, 0xe8, 0x3d, 0x11, 0xe7, 0x5e, 0xcc, 0xf1, 0x89, - 0xb8, 0x7a, 0x04, 0xff, 0xad, 0x1c, 0x4c, 0x8b, 0xaf, 0x5a, 0xd7, 0xf5, 0xa2, 0x79, 0xbf, 0xfd, - 0xc0, 0xdb, 0x7d, 0x6e, 0xfb, 0xa2, 0xa6, 0xf5, 0x45, 0x55, 0xef, 0x0b, 0xa5, 0x82, 0xfd, 0xbb, - 0xc4, 0xfc, 0xd7, 0x45, 0x98, 0xe9, 0x47, 0xc0, 0xcc, 0x7e, 0xc5, 0xaa, 0x42, 0xb3, 0x3f, 0x65, - 0xb1, 0x72, 0x7b, 0x2a, 0xf1, 0x00, 0xc9, 0x0d, 0xe0, 0x01, 0xb2, 0x02, 0x15, 0xcc, 0xaa, 0x41, - 0x43, 0xd6, 0x08, 0x61, 0xe2, 0x42, 0x79, 0xf9, 0xf8, 0xa8, 0x7a, 0xc9, 0x61, 0x69, 0x76, 0x28, - 0x12, 0xed, 0x6e, 0xe0, 0x29, 0x3c, 0x7a, 0x28, 0xc9, 0x1f, 0x18, 0x30, 0x8e, 0xc0, 0xc5, 0x87, - 0xb4, 0x1d, 0x21, 0xb3, 0x82, 0x38, 0xa4, 0x89, 0x6f, 0xaa, 0x34, 0xa2, 0xc0, 0x6b, 0xef, 0xe2, - 0x46, 0x52, 0x58, 0xdf, 0x61, 0xad, 0xf0, 0x67, 0x47, 0xd5, 0x77, 0x3f, 0xc9, 0xed, 0x17, 0xc1, - 0x2a, 0x64, 0x86, 0x3c, 0x2f, 0x28, 0xc5, 0x6c, 0x53, 0xc5, 0x4c, 0x95, 0x88, 0xfc, 0x38, 0x9c, - 0x5f, 0x6c, 0x3b, 0x3b, 0x2d, 0x3a, 0xef, 0xb7, 0x23, 0xaf, 0xdd, 0xf5, 0xbb, 0x61, 0xdd, 0x69, - 0xee, 0x77, 0x3b, 0xa1, 0xd8, 0xec, 0xc4, 0x9a, 0x37, 0xe3, 0x44, 0x7b, 0x87, 0xa7, 0x2a, 0x2c, - 0xfb, 0x31, 0x20, 0x4b, 0x30, 0xc9, 0x93, 0x6a, 0xdd, 0xc8, 0x6f, 0x34, 0x9d, 0x96, 0xd7, 0xde, - 0xc5, 0x3d, 0xd0, 0x62, 0xfd, 0x22, 0xb3, 0x2d, 0x9d, 0x6e, 0xe4, 0xdb, 0x21, 0x87, 0x2b, 0xfc, - 0x7a, 0x89, 0xc8, 0x32, 0x4c, 0x58, 0xd4, 0x71, 0xef, 0x3b, 0x8f, 0xe7, 0x9d, 0x8e, 0xd3, 0xf4, - 0xa2, 0x43, 0xb4, 0xcc, 0xf2, 0xf5, 0xea, 0xf1, 0x51, 0xf5, 0x85, 0x80, 0x3a, 0xae, 0x7d, 0xe0, - 0x3c, 0xb6, 0x9b, 0x22, 0x51, 0x61, 0x96, 0xa6, 0x8b, 0x59, 0x79, 0xed, 0x98, 0x55, 0x29, 0xcd, - 0xca, 0x6b, 0xf7, 0x67, 0x95, 0xd0, 0x49, 0x56, 0x1b, 0x4e, 0xb0, 0x4b, 0x23, 0xbe, 0x49, 0x08, - 0x97, 0x8d, 0xab, 0x86, 0xc2, 0x2a, 0xc2, 0x34, 0x1b, 0x37, 0x0c, 0xd3, 0xac, 0x14, 0x3a, 0x36, - 0xf2, 0xb6, 0x03, 0x2f, 0xa2, 0x6a, 0x0d, 0x47, 0xb1, 0x58, 0xd8, 0xfe, 0xb8, 0x4d, 0xda, 0xaf, - 0x8a, 0x3d, 0x94, 0x09, 0x37, 0xa5, 0x92, 0xe5, 0x1e, 0x6e, 0xd9, 0xb5, 0xec, 0xa1, 0x8c, 0xb9, - 0xa9, 0xf5, 0x1c, 0xc3, 0x7a, 0x2a, 0xdc, 0xfa, 0x54, 0xb4, 0x87, 0x92, 0xac, 0xb2, 0x46, 0x8b, - 0x68, 0x9b, 0x8d, 0x68, 0xb1, 0x49, 0x3a, 0x8e, 0x45, 0x7b, 0x55, 0xd8, 0xd4, 0x95, 0x40, 0x26, - 0xdb, 0x19, 0x5b, 0xa6, 0x69, 0xe2, 0x0f, 0x0b, 0xc5, 0xa1, 0xca, 0xb0, 0x55, 0xe1, 0x43, 0x3e, - 0x62, 0x03, 0x07, 0x65, 0xb1, 0xf9, 0x3b, 0x39, 0xb8, 0x20, 0xc5, 0x31, 0x8d, 0x1e, 0xf9, 0xc1, - 0xbe, 0xd7, 0xde, 0x7d, 0xce, 0xa5, 0xea, 0x1d, 0x4d, 0xaa, 0xbe, 0x9a, 0x5a, 0xe1, 0x52, 0xb5, - 0x3c, 0x41, 0xb4, 0xfe, 0xf5, 0x08, 0xbc, 0x78, 0x22, 0x15, 0xf9, 0x88, 0xad, 0x82, 0x1e, 0x6d, - 0x47, 0xcb, 0x6e, 0x8b, 0x32, 0x33, 0xcc, 0xef, 0x46, 0x62, 0x33, 0xfb, 0x95, 0xe3, 0xa3, 0xea, - 0x14, 0xbf, 0xc0, 0x61, 0x7b, 0x6e, 0x8b, 0xda, 0x11, 0x4f, 0xd6, 0xba, 0xa9, 0x97, 0x9a, 0xb1, - 0x8c, 0xaf, 0x93, 0x2d, 0xb7, 0x23, 0x1a, 0x3c, 0x74, 0xb8, 0x1f, 0xbb, 0x60, 0xb9, 0x4f, 0x69, - 0xc7, 0x76, 0x58, 0xaa, 0xed, 0x89, 0x64, 0x9d, 0x65, 0x0f, 0x35, 0xb9, 0xa3, 0xb0, 0x9c, 0x67, - 0xc6, 0xc1, 0x7d, 0xe7, 0xb1, 0xd0, 0x78, 0x71, 0x7f, 0x55, 0x61, 0xc9, 0x9d, 0xe8, 0x0e, 0x9c, - 0xc7, 0x56, 0x2f, 0x09, 0xf9, 0x06, 0x9c, 0x15, 0x82, 0x9b, 0x09, 0xb1, 0xc0, 0x6f, 0xc9, 0x1a, - 0x17, 0x90, 0xd7, 0xeb, 0xc7, 0x47, 0xd5, 0xf3, 0x42, 0xec, 0xdb, 0x4d, 0x8e, 0x91, 0x59, 0xeb, - 0x6c, 0x2e, 0x64, 0x83, 0x2d, 0x64, 0xa9, 0xe6, 0xb8, 0x4f, 0xc3, 0xd0, 0xd9, 0x95, 0xda, 0x31, - 0x3f, 0x51, 0x52, 0x1a, 0xd3, 0x3e, 0xe0, 0xe9, 0x56, 0x5f, 0x4a, 0xb2, 0x04, 0xe3, 0xdb, 0x74, - 0x47, 0xed, 0x9f, 0xe1, 0x78, 0x8a, 0x57, 0x1e, 0xd1, 0x9d, 0xfe, 0x9d, 0x93, 0xa2, 0x23, 0x1e, - 0x4c, 0xae, 0x07, 0xfe, 0xe3, 0x43, 0x66, 0xea, 0xd1, 0x36, 0x0d, 0xd0, 0x7b, 0x6b, 0x04, 0xb7, - 0xab, 0x66, 0x12, 0xcd, 0x52, 0x4f, 0xaf, 0xbf, 0x7c, 0x7c, 0x54, 0x7d, 0xb1, 0xc3, 0xc0, 0x76, - 0x4b, 0xc0, 0xed, 0xd4, 0x6d, 0xae, 0x5e, 0xae, 0xe4, 0x27, 0x61, 0xc2, 0xf2, 0xbb, 0x91, 0xd7, - 0xde, 0x6d, 0x44, 0x81, 0x13, 0xd1, 0x5d, 0x2e, 0xc8, 0x13, 0x37, 0xb1, 0x54, 0x2a, 0xdf, 0x98, - 0x0e, 0x38, 0xd0, 0x0e, 0x05, 0x54, 0x93, 0xa4, 0x3a, 0x01, 0xf9, 0x05, 0x03, 0x4a, 0xb5, 0x5d, - 0xda, 0x66, 0xed, 0xb4, 0x27, 0x7c, 0x5f, 0xe5, 0x45, 0xc9, 0x18, 0xce, 0xbd, 0x6a, 0xe2, 0x4c, - 0x6a, 0xc7, 0x47, 0xd5, 0x0b, 0xdc, 0xfd, 0x26, 0x23, 0x8f, 0xbf, 0x3c, 0xaa, 0x5e, 0x3e, 0x74, - 0x0e, 0x5a, 0x5f, 0x32, 0xfb, 0xa2, 0x98, 0x4b, 0x67, 0xac, 0x24, 0x57, 0xf2, 0xb7, 0x0c, 0x28, - 0x63, 0xdd, 0xd7, 0x29, 0x65, 0x8b, 0xb2, 0xb8, 0x17, 0xf0, 0xb2, 0xda, 0x98, 0x22, 0xe9, 0xd3, - 0x28, 0x89, 0x96, 0x77, 0xbd, 0x02, 0xe3, 0x7a, 0x26, 0x66, 0x07, 0xce, 0xf7, 0x69, 0x09, 0xb2, - 0xa9, 0xe9, 0x55, 0xb5, 0x5e, 0xbd, 0xea, 0x2f, 0x8f, 0xaa, 0x67, 0x45, 0x11, 0x34, 0xb8, 0xf9, - 0xc3, 0xa3, 0x2a, 0xd1, 0x99, 0x25, 0xdb, 0xda, 0xe6, 0x5f, 0x19, 0x70, 0xb1, 0x7f, 0xad, 0x3f, - 0xa5, 0x5c, 0xc9, 0x2f, 0x1a, 0x30, 0x8d, 0x15, 0x9d, 0xf7, 0xdb, 0x6d, 0xda, 0x8c, 0x70, 0x66, - 0x76, 0xdb, 0x91, 0x90, 0x3a, 0x6b, 0xc7, 0x47, 0xd5, 0xcb, 0x0e, 0x4b, 0x67, 0x93, 0x5a, 0x20, - 0xd8, 0xa9, 0xad, 0x87, 0xbf, 0x3c, 0xaa, 0xbe, 0xce, 0x73, 0x3e, 0x0d, 0xd3, 0xb4, 0x32, 0x33, - 0x33, 0x7f, 0x2b, 0x07, 0x33, 0x42, 0x2e, 0x58, 0xb4, 0xe9, 0x07, 0xee, 0xf3, 0xbf, 0x0e, 0x2d, - 0x6a, 0xeb, 0xd0, 0x2b, 0xb1, 0xa7, 0x5d, 0x56, 0x25, 0x4f, 0x58, 0x86, 0xfe, 0xa9, 0x01, 0x97, - 0x4e, 0x22, 0x62, 0xad, 0x13, 0x7b, 0x92, 0x96, 0x7a, 0x3c, 0x46, 0x3b, 0x30, 0x85, 0x63, 0x0a, - 0x4f, 0x32, 0xc2, 0x25, 0x3f, 0x8c, 0x70, 0x3b, 0x39, 0xa7, 0x79, 0xb6, 0xd4, 0x7d, 0xbf, 0x85, - 0x8a, 0x47, 0xfd, 0x0d, 0xa6, 0x5f, 0xfc, 0xd9, 0x51, 0x15, 0x18, 0x68, 0x0d, 0x4f, 0xc7, 0x99, - 0x12, 0xca, 0x45, 0x18, 0x1e, 0x94, 0x84, 0x36, 0xba, 0x23, 0xed, 0xd3, 0xc3, 0xd0, 0xca, 0x62, - 0x8d, 0x5b, 0x86, 0xb5, 0x6e, 0xb4, 0xb7, 0x1e, 0xd0, 0x07, 0x34, 0xa0, 0xed, 0x26, 0xfd, 0x8c, - 0x6d, 0x19, 0xea, 0x95, 0x1b, 0xc8, 0x5e, 0xfe, 0xbf, 0xc3, 0x30, 0x9d, 0x45, 0xc6, 0xda, 0x45, - 0x99, 0xd4, 0xe9, 0xbb, 0xe8, 0xbf, 0x68, 0x40, 0xb9, 0x41, 0x9b, 0x7e, 0xdb, 0xbd, 0xe3, 0x34, - 0x23, 0x5f, 0xfa, 0x08, 0xd9, 0x7c, 0xa9, 0x65, 0x70, 0xfb, 0x01, 0x26, 0x68, 0x5b, 0x55, 0x5f, - 0x1e, 0xcc, 0x32, 0x6a, 0xfa, 0xe8, 0x7a, 0x1d, 0xb1, 0x31, 0x99, 0x64, 0x81, 0x92, 0x41, 0xcb, - 0x94, 0xd4, 0x61, 0x4c, 0x4c, 0x57, 0x5f, 0x75, 0x24, 0xbe, 0x74, 0x7c, 0x54, 0x9d, 0x69, 0xca, - 0x84, 0xf4, 0x96, 0x95, 0x4e, 0x42, 0x6e, 0x41, 0x7e, 0x73, 0xee, 0x8e, 0xe8, 0x03, 0xe9, 0x72, - 0xb9, 0x39, 0x77, 0x07, 0x37, 0x5f, 0x98, 0x42, 0x3b, 0xd6, 0x9d, 0x7b, 0xa0, 0x6e, 0xca, 0x6f, - 0xce, 0xdd, 0x21, 0x6b, 0x30, 0x69, 0xd1, 0x9f, 0xea, 0x7a, 0x01, 0x15, 0x13, 0xe0, 0xfe, 0x9d, - 0x1a, 0xf6, 0x45, 0x91, 0x2f, 0xac, 0x01, 0x4f, 0x94, 0xc6, 0xa6, 0x7d, 0xf0, 0x40, 0xbd, 0x7f, - 0xd9, 0x4b, 0x4b, 0x7e, 0x0e, 0xce, 0x2e, 0x78, 0xa1, 0x28, 0x33, 0xdf, 0x0d, 0x77, 0xf1, 0x60, - 0x7c, 0xb8, 0xcf, 0x74, 0xf8, 0x62, 0xe6, 0x74, 0x78, 0xd9, 0x8d, 0x99, 0xd8, 0x7c, 0xab, 0xdd, - 0x4d, 0x7b, 0x60, 0x67, 0xe7, 0x43, 0x3e, 0x86, 0x71, 0xdc, 0x7e, 0xc4, 0x03, 0x02, 0x74, 0xca, - 0x1f, 0xe9, 0x93, 0xf3, 0xe7, 0x33, 0x73, 0xbe, 0x88, 0xbb, 0x99, 0x36, 0x1e, 0x33, 0xa0, 0x03, - 0xbf, 0x66, 0xb4, 0x6a, 0x9c, 0xc9, 0x87, 0x30, 0x21, 0xb4, 0xa0, 0xb5, 0x07, 0x1b, 0x7b, 0x74, - 0xc1, 0x39, 0x14, 0x5e, 0x31, 0x68, 0x90, 0x08, 0xd5, 0xc9, 0xf6, 0x1f, 0xd8, 0xd1, 0x1e, 0xb5, - 0x5d, 0x47, 0xd3, 0x17, 0x52, 0x84, 0xe4, 0x67, 0x60, 0x74, 0xc5, 0xc7, 0x93, 0x50, 0x14, 0x35, - 0x25, 0xe4, 0xf3, 0x55, 0xbc, 0x7f, 0xcd, 0xc1, 0x29, 0xad, 0xe6, 0x87, 0x47, 0xd5, 0x77, 0x9e, - 0x74, 0x14, 0x2a, 0x19, 0x58, 0x6a, 0x6e, 0x64, 0x1e, 0x8a, 0xdb, 0x74, 0x87, 0xd5, 0x36, 0x7d, - 0x77, 0x50, 0x82, 0xb9, 0xbc, 0x78, 0x24, 0xbe, 0xd4, 0x63, 0x46, 0x89, 0x61, 0xfe, 0x2b, 0x03, - 0x47, 0x20, 0xb9, 0x8e, 0x9e, 0x89, 0xf1, 0x9d, 0x06, 0xdc, 0xea, 0x70, 0x3a, 0x1d, 0xfd, 0x56, - 0x02, 0x47, 0x21, 0x6f, 0xc0, 0xf0, 0x1d, 0xa7, 0x49, 0x23, 0xb9, 0x81, 0x8e, 0xc8, 0x0f, 0x10, - 0xa2, 0xee, 0x8b, 0x70, 0x1c, 0xf2, 0x15, 0x98, 0x5e, 0xa0, 0x0f, 0xbd, 0x26, 0xad, 0x45, 0x11, - 0x0d, 0x79, 0x6d, 0xe7, 0x6b, 0xfc, 0xa4, 0xb9, 0x54, 0x7f, 0x95, 0xad, 0xa3, 0x2e, 0xa6, 0xdb, - 0x4e, 0x82, 0x60, 0x37, 0x1d, 0x95, 0x57, 0x26, 0x07, 0xf3, 0x7f, 0x19, 0x49, 0x0b, 0x90, 0xd7, - 0xa1, 0x60, 0xad, 0xc7, 0xe5, 0xe7, 0x87, 0xc8, 0xa9, 0xe2, 0x23, 0x02, 0xf9, 0x1a, 0x9c, 0x55, - 0xf8, 0xe0, 0xe0, 0xa0, 0x2e, 0x2b, 0x10, 0xaf, 0xcc, 0x6b, 0x78, 0x6a, 0xa8, 0x94, 0xc4, 0xe1, - 0x18, 0xa9, 0x12, 0x65, 0xf3, 0x60, 0x95, 0x55, 0x12, 0x16, 0x68, 0xdb, 0xe3, 0xbc, 0x95, 0xca, - 0xaa, 0xbc, 0x5d, 0x44, 0x48, 0x57, 0x36, 0x8b, 0xc3, 0x87, 0x85, 0x62, 0xa1, 0x32, 0xc4, 0x74, - 0x21, 0x25, 0x60, 0xc5, 0xf3, 0xb9, 0x7a, 0xdc, 0xd6, 0x56, 0x8f, 0x69, 0x41, 0x1a, 0xd7, 0x8a, - 0xa5, 0x65, 0xae, 0xf8, 0x13, 0x30, 0xa6, 0x21, 0xa1, 0x0f, 0xf6, 0x66, 0x48, 0x03, 0xbe, 0x61, - 0xfd, 0xd9, 0xf2, 0xc1, 0x8e, 0xeb, 0x35, 0x90, 0x6b, 0xed, 0x9f, 0x1b, 0x30, 0x91, 0xa2, 0x60, - 0xad, 0xc1, 0x40, 0x6a, 0x6b, 0x74, 0x43, 0x1a, 0x58, 0x08, 0xe5, 0x1e, 0x9b, 0x2b, 0xba, 0xc7, - 0x66, 0xcb, 0x62, 0x30, 0xf2, 0x65, 0x18, 0xda, 0x44, 0xf3, 0x52, 0x77, 0xfa, 0x89, 0xf9, 0x63, - 0x22, 0x9f, 0x61, 0x5d, 0xf6, 0x57, 0x15, 0x10, 0x98, 0x46, 0x1a, 0x30, 0x32, 0x1f, 0x50, 0x0c, - 0x59, 0x51, 0x18, 0xfc, 0x74, 0xb6, 0xc9, 0x49, 0xd2, 0xa7, 0xb3, 0x82, 0x93, 0xf9, 0x9b, 0x39, - 0x20, 0x49, 0x1d, 0x69, 0x33, 0xa0, 0x51, 0xf8, 0xdc, 0x76, 0xfa, 0x07, 0x5a, 0xa7, 0xbf, 0xd8, - 0xd3, 0xe9, 0xbc, 0x7a, 0x03, 0xf5, 0xfd, 0x1f, 0x1b, 0x70, 0x2e, 0x9b, 0x90, 0xbc, 0x02, 0xc3, - 0x6b, 0x1b, 0xeb, 0xd2, 0x6f, 0x4c, 0x54, 0xc5, 0xef, 0xa0, 0x96, 0x6a, 0x89, 0x24, 0xf2, 0x26, - 0x0c, 0x7f, 0x64, 0xcd, 0xb3, 0xe5, 0x4b, 0xb9, 0x3b, 0xf5, 0x53, 0x81, 0xdd, 0xd4, 0xed, 0x71, - 0x81, 0xa4, 0xf6, 0x6d, 0xfe, 0x99, 0xf5, 0xed, 0xb7, 0x72, 0x30, 0x51, 0x6b, 0x36, 0x69, 0x18, - 0x32, 0xe5, 0x84, 0x86, 0xd1, 0x73, 0xdb, 0xb1, 0xd9, 0x1e, 0x61, 0x5a, 0xdd, 0x06, 0xea, 0xd5, - 0x3f, 0x31, 0xe0, 0xac, 0xa4, 0x7a, 0xe8, 0xd1, 0x47, 0x1b, 0x7b, 0x01, 0x0d, 0xf7, 0xfc, 0x96, - 0x3b, 0xe8, 0x2d, 0x40, 0x5c, 0xa5, 0xbd, 0x56, 0x44, 0x03, 0xf5, 0xf4, 0xe2, 0x01, 0x42, 0xb4, - 0x55, 0x1a, 0x21, 0x64, 0x16, 0x46, 0x6a, 0x9d, 0x4e, 0xe0, 0x3f, 0xe4, 0xd3, 0x7e, 0x4c, 0x1c, - 0x56, 0x73, 0x90, 0x76, 0xb8, 0xcd, 0x41, 0xac, 0x18, 0x0b, 0xb4, 0xcd, 0xdd, 0xdd, 0xc7, 0x78, - 0x31, 0x5c, 0xda, 0x56, 0xb5, 0x25, 0x4c, 0x37, 0xbf, 0x59, 0x80, 0xb2, 0x5a, 0x11, 0x62, 0xc2, - 0x30, 0xf7, 0x5d, 0x52, 0x7d, 0x48, 0x1c, 0x84, 0x58, 0x22, 0x25, 0x71, 0x09, 0xcb, 0x9d, 0xea, - 0x12, 0xb6, 0x0d, 0x63, 0xeb, 0x81, 0xdf, 0xf1, 0x43, 0xea, 0xf2, 0xa8, 0x43, 0x5c, 0x6a, 0x4d, - 0xc5, 0x7e, 0xd2, 0xbc, 0xcd, 0x59, 0x12, 0x57, 0xcd, 0x3b, 0x02, 0xdb, 0x4e, 0xc7, 0x24, 0xd2, - 0xf9, 0xf0, 0xd3, 0x1f, 0x27, 0x14, 0x77, 0x49, 0xe2, 0xd3, 0x1f, 0x06, 0xd1, 0x4f, 0x7f, 0x18, - 0x44, 0x9d, 0x16, 0x43, 0xcf, 0x6a, 0x5a, 0x90, 0xdf, 0x34, 0x60, 0xb4, 0xd6, 0x6e, 0x0b, 0x97, - 0x30, 0x79, 0x75, 0xff, 0x6c, 0x72, 0x02, 0xc4, 0x7d, 0x86, 0xf9, 0x01, 0xd0, 0xd7, 0xc5, 0x01, - 0xd0, 0x3b, 0x9f, 0xe8, 0x00, 0x68, 0x23, 0x70, 0xbc, 0x28, 0xc4, 0x93, 0xfe, 0x24, 0x43, 0xd5, - 0x2f, 0x5c, 0x29, 0x07, 0x79, 0x07, 0x2a, 0xf1, 0x78, 0x5c, 0x6e, 0xbb, 0xf4, 0x31, 0xe5, 0x1e, - 0x74, 0x63, 0xfc, 0x7e, 0xa9, 0x76, 0xb2, 0x95, 0x46, 0x34, 0xbf, 0x65, 0xc0, 0x39, 0x75, 0x40, - 0x34, 0xba, 0x3b, 0x07, 0x1e, 0x9a, 0x22, 0xe4, 0x06, 0x94, 0x44, 0x7f, 0xc5, 0x8a, 0x5c, 0x6f, - 0xa8, 0xaa, 0x04, 0x85, 0x2c, 0xb2, 0x2e, 0x62, 0x3c, 0x84, 0xdd, 0x3e, 0x95, 0x9a, 0x6e, 0x2c, - 0xa9, 0x3e, 0x23, 0x1a, 0xbb, 0x12, 0xe0, 0xb7, 0xde, 0x77, 0x0c, 0x62, 0xbe, 0x0f, 0x93, 0x7a, - 0x29, 0x1b, 0x14, 0x2f, 0x35, 0xca, 0xaa, 0x19, 0xd9, 0x55, 0x93, 0xe9, 0xe6, 0x36, 0x90, 0x1e, - 0xfa, 0x10, 0x4f, 0x31, 0x69, 0x24, 0x4f, 0xd9, 0xe5, 0x5e, 0x68, 0x0f, 0x62, 0x1c, 0xb4, 0x6d, - 0x54, 0x6d, 0x6e, 0x24, 0x35, 0xff, 0xa6, 0x04, 0x53, 0x19, 0xa2, 0xe3, 0x94, 0xa5, 0xbd, 0xaa, - 0x4f, 0x9e, 0x52, 0xec, 0x2e, 0x22, 0xa7, 0xcc, 0xfb, 0x32, 0x40, 0xd7, 0x09, 0x53, 0xe5, 0xa4, - 0xa8, 0x5d, 0x9f, 0xc6, 0xf2, 0xae, 0x7a, 0x74, 0x0d, 0x3d, 0x33, 0x8f, 0xae, 0x3a, 0x8c, 0x89, - 0x5a, 0x89, 0xa9, 0x3c, 0x9c, 0x98, 0xe8, 0x01, 0x4f, 0xb0, 0x7b, 0xa6, 0xb4, 0x4e, 0xc2, 0x79, - 0x84, 0x7e, 0xeb, 0x21, 0x15, 0x3c, 0x46, 0x54, 0x1e, 0x98, 0x90, 0xc9, 0x43, 0x21, 0x21, 0xff, - 0xc4, 0x00, 0x22, 0x20, 0xea, 0x7c, 0x2e, 0x9e, 0x34, 0x9f, 0xdd, 0x67, 0x33, 0x9f, 0x5f, 0x94, - 0x65, 0xcc, 0x9e, 0xd7, 0x19, 0xc5, 0x22, 0xff, 0xc8, 0x80, 0x49, 0xee, 0x56, 0xa4, 0x16, 0xb6, - 0x74, 0x52, 0x61, 0x9b, 0xcf, 0xa6, 0xb0, 0x97, 0x42, 0xcc, 0xb6, 0x4f, 0x59, 0x7b, 0x0b, 0x45, - 0x7e, 0x1c, 0x20, 0x9e, 0x51, 0xd2, 0x7d, 0xf5, 0x52, 0x86, 0x14, 0x88, 0x91, 0x92, 0x6b, 0xbb, - 0x51, 0x4c, 0xa7, 0x3a, 0x7c, 0x25, 0xdc, 0xc8, 0xcf, 0xc1, 0x34, 0x9b, 0x2f, 0x31, 0x44, 0x38, - 0x41, 0xce, 0x8c, 0x62, 0x2e, 0x5f, 0xe8, 0xbf, 0xb4, 0xdf, 0xc8, 0x22, 0xe3, 0x97, 0x88, 0x92, - 0x20, 0x0e, 0xd1, 0x81, 0x6a, 0xf2, 0x65, 0x51, 0xa0, 0xb7, 0x33, 0x96, 0x3e, 0x9c, 0x29, 0x63, - 0x9e, 0x99, 0xf2, 0xed, 0x82, 0x9c, 0x0b, 0x5c, 0xbe, 0x85, 0xfa, 0x2d, 0x20, 0x04, 0x91, 0x8f, - 0x80, 0x34, 0xba, 0xbb, 0xbb, 0x34, 0x8c, 0xa8, 0xcb, 0x61, 0x34, 0x08, 0x67, 0xc6, 0x50, 0x3e, - 0xe0, 0x96, 0x51, 0x28, 0x53, 0xed, 0x40, 0x26, 0xab, 0x83, 0xa4, 0x97, 0xf8, 0xe2, 0x0e, 0x5c, - 0xe8, 0x5b, 0xcd, 0x8c, 0x1b, 0x3e, 0xb3, 0xfa, 0x0d, 0x9f, 0x0b, 0xfd, 0xc4, 0x61, 0xa8, 0xde, - 0xf2, 0xf9, 0x3d, 0x23, 0x25, 0xff, 0x84, 0xb2, 0xc2, 0x63, 0x19, 0xf6, 0x5b, 0x20, 0x72, 0x18, - 0xde, 0x81, 0x4b, 0xc8, 0x5c, 0xa2, 0x24, 0x31, 0x09, 0xa9, 0x4a, 0x58, 0x94, 0x95, 0x4f, 0x29, - 0x0a, 0xcd, 0x7f, 0x6e, 0x00, 0xe1, 0x25, 0x9c, 0x77, 0x3a, 0xce, 0x8e, 0xd7, 0xf2, 0x22, 0x8f, - 0x86, 0xe4, 0x1e, 0x54, 0x04, 0x0b, 0x67, 0xa7, 0x45, 0x55, 0xe7, 0x3d, 0x71, 0xba, 0x1f, 0xa7, - 0xd9, 0x69, 0xb5, 0xa6, 0x87, 0xb0, 0x4f, 0xe7, 0xe5, 0x9e, 0xa2, 0xf3, 0xcc, 0x1f, 0x18, 0x70, - 0xa1, 0xb7, 0xd8, 0x22, 0xe7, 0xb8, 0xf1, 0x8c, 0x53, 0x1a, 0x2f, 0xab, 0x96, 0x39, 0xdc, 0x86, - 0x7c, 0x66, 0xb5, 0xcc, 0x27, 0xbb, 0x9a, 0x4f, 0x5e, 0xcb, 0x5f, 0xc9, 0x41, 0x79, 0xbd, 0xd5, - 0xdd, 0xf5, 0xda, 0x0b, 0x4e, 0xe4, 0x3c, 0xb7, 0x26, 0xc5, 0xdb, 0x9a, 0x49, 0x11, 0xbb, 0xeb, - 0xc5, 0x15, 0x1b, 0x2c, 0xae, 0x9c, 0x01, 0x13, 0x09, 0x09, 0x9f, 0xa5, 0x4b, 0x50, 0x60, 0x1f, - 0x42, 0x43, 0xb9, 0xdc, 0xc3, 0x18, 0xb1, 0x6e, 0xc4, 0xff, 0x84, 0x92, 0xaf, 0x47, 0xf3, 0x43, - 0x0e, 0x17, 0xbf, 0xc8, 0x83, 0x71, 0x3d, 0x79, 0xe0, 0xd0, 0x7f, 0x66, 0x40, 0x25, 0x5d, 0x13, - 0x72, 0x0f, 0x46, 0x18, 0x27, 0x2f, 0x0e, 0xec, 0xf5, 0x6a, 0x9f, 0x3a, 0xdf, 0x10, 0x68, 0xbc, - 0x78, 0xd8, 0xf8, 0x94, 0x43, 0x2c, 0xc9, 0xe1, 0xa2, 0x05, 0x65, 0x15, 0x2b, 0xa3, 0x74, 0x6f, - 0xe8, 0xa2, 0xe9, 0x5c, 0x76, 0x3b, 0xa8, 0xa5, 0xfe, 0x5d, 0xad, 0xd4, 0x42, 0x28, 0x0d, 0x1a, - 0xa1, 0x11, 0xef, 0x2b, 0xf2, 0x38, 0x34, 0xea, 0x38, 0x93, 0x21, 0x6b, 0xf4, 0xfb, 0x8a, 0x1c, - 0xc6, 0x6c, 0x11, 0x9e, 0x9f, 0x18, 0x67, 0x68, 0x8b, 0x74, 0x10, 0xa2, 0xea, 0xb3, 0x1c, 0xc7, - 0xfc, 0xbb, 0x79, 0x38, 0x97, 0x14, 0x8f, 0xc7, 0xab, 0x5c, 0x77, 0x02, 0xe7, 0x20, 0x3c, 0x65, - 0x06, 0x5c, 0xed, 0x29, 0x1a, 0xde, 0xc7, 0x97, 0x45, 0x53, 0x0a, 0x64, 0xa6, 0x0a, 0x84, 0x46, - 0x1c, 0x2f, 0x90, 0x2c, 0x06, 0xb9, 0x07, 0xf9, 0x06, 0x8d, 0xc4, 0xad, 0xdd, 0x2b, 0x3d, 0xad, - 0xaa, 0x96, 0xeb, 0x46, 0x83, 0x46, 0xbc, 0x13, 0xf9, 0xc5, 0x07, 0xaa, 0x5d, 0x44, 0x60, 0xea, - 0xf8, 0x36, 0x0c, 0x2f, 0x3e, 0xee, 0xd0, 0x66, 0x24, 0x2e, 0xeb, 0x5e, 0x3b, 0x99, 0x1f, 0xc7, - 0x55, 0xae, 0x04, 0x53, 0x04, 0xa8, 0x8d, 0xc5, 0x51, 0x2e, 0xde, 0x86, 0xa2, 0xcc, 0xfc, 0x89, - 0xae, 0xb6, 0xbe, 0x0d, 0xa3, 0x4a, 0x26, 0x4f, 0x34, 0xe8, 0xff, 0xc6, 0x80, 0x61, 0x26, 0xf4, - 0xb6, 0xde, 0x7a, 0x4e, 0x25, 0xd2, 0x2d, 0x4d, 0x22, 0x4d, 0x2a, 0x77, 0xb0, 0x70, 0x5e, 0xbe, - 0x75, 0x8a, 0x2c, 0x3a, 0x32, 0x00, 0x12, 0x64, 0x72, 0x17, 0x46, 0xf8, 0x41, 0x8e, 0x0c, 0x06, - 0xab, 0x5e, 0xea, 0x12, 0x29, 0x89, 0x96, 0xe3, 0x77, 0xd2, 0x6a, 0xa1, 0xa4, 0x26, 0x0b, 0x89, - 0xe3, 0xbb, 0x7a, 0x8b, 0x98, 0xb1, 0x99, 0xf7, 0xdb, 0xfc, 0x92, 0x4f, 0xa8, 0x04, 0x4d, 0xcb, - 0xf6, 0x80, 0xaf, 0x89, 0x8d, 0x8d, 0xfc, 0x49, 0x4c, 0xce, 0x09, 0x26, 0xd9, 0x7b, 0x1e, 0xdf, - 0x1e, 0xe5, 0xd7, 0x66, 0x64, 0xc1, 0xde, 0x83, 0xf2, 0x1d, 0x3f, 0x78, 0xe4, 0x04, 0x2e, 0x1e, - 0xf2, 0x63, 0x35, 0x8b, 0x78, 0xef, 0x60, 0xec, 0x01, 0x87, 0xdb, 0xe8, 0x20, 0xf0, 0xc3, 0xa3, - 0x6a, 0xa1, 0xee, 0xfb, 0x2d, 0x4b, 0x43, 0x27, 0x6b, 0x30, 0x76, 0xdf, 0x79, 0x2c, 0xce, 0xeb, - 0x36, 0x36, 0x56, 0x84, 0x0b, 0xc2, 0xb5, 0xe3, 0xa3, 0xea, 0x85, 0x03, 0xe7, 0x71, 0x7c, 0xce, - 0xd7, 0xdf, 0x37, 0x5f, 0xa7, 0x27, 0x1e, 0x8c, 0xaf, 0xfb, 0x41, 0x24, 0x32, 0x61, 0x3a, 0x6d, - 0xbe, 0xcf, 0x71, 0xdb, 0x6c, 0xe6, 0x71, 0xdb, 0x05, 0xa6, 0xc8, 0xdb, 0x0f, 0x62, 0x72, 0xed, - 0xae, 0xa7, 0xc6, 0x98, 0xbc, 0x07, 0x93, 0xf3, 0x34, 0x88, 0xbc, 0x07, 0x5e, 0xd3, 0x89, 0xe8, - 0x1d, 0x3f, 0x38, 0x70, 0x22, 0xb1, 0xa1, 0x82, 0x06, 0x75, 0x93, 0x72, 0x4e, 0x07, 0x4e, 0x64, - 0xf5, 0x62, 0x92, 0xaf, 0x65, 0xb9, 0x92, 0x0d, 0x61, 0xf5, 0xdf, 0x64, 0x4a, 0x41, 0x86, 0x2b, - 0x59, 0x9f, 0x26, 0xc8, 0x70, 0x2a, 0xdb, 0x3d, 0xe9, 0xd8, 0xb3, 0x58, 0xbf, 0x29, 0x8e, 0x60, - 0x4f, 0x3f, 0xd6, 0x8c, 0xfb, 0xad, 0xcf, 0xf1, 0xe6, 0x1c, 0xe4, 0xeb, 0xeb, 0x77, 0x70, 0x8b, - 0x44, 0x1c, 0x33, 0xd2, 0xf6, 0x9e, 0xd3, 0x6e, 0xa2, 0x2e, 0x23, 0x7c, 0x17, 0x54, 0x81, 0x57, - 0x5f, 0xbf, 0x43, 0x1c, 0x98, 0x5a, 0xa7, 0xc1, 0x81, 0x17, 0x7d, 0xe5, 0xe6, 0x4d, 0xa5, 0xa3, - 0x8a, 0x58, 0xb4, 0x59, 0x51, 0xb4, 0x6a, 0x07, 0x51, 0xec, 0xc7, 0x37, 0x6f, 0x66, 0x76, 0x47, - 0x5c, 0xb0, 0x2c, 0x5e, 0x64, 0x11, 0xc6, 0xef, 0x3b, 0x8f, 0x13, 0x97, 0x93, 0x50, 0x38, 0xb3, - 0xbe, 0x28, 0x07, 0x56, 0xe2, 0xaf, 0xa2, 0xce, 0xb7, 0x14, 0x11, 0x79, 0x17, 0x46, 0x93, 0xe1, - 0x15, 0xe2, 0x51, 0x64, 0x9e, 0xfb, 0xe8, 0x2a, 0x83, 0x53, 0xdb, 0x4b, 0x52, 0xd0, 0xc9, 0x66, - 0x6c, 0xa2, 0x73, 0x85, 0x54, 0x44, 0xf7, 0x99, 0x55, 0x4d, 0x74, 0x07, 0x53, 0xb4, 0x6a, 0x4d, - 0xc4, 0x2a, 0x3a, 0xf7, 0xdc, 0xb1, 0x74, 0x2e, 0x8a, 0xe5, 0xbf, 0x1e, 0xf8, 0x07, 0x9d, 0x08, - 0x5d, 0x58, 0x53, 0x96, 0x7f, 0x07, 0x53, 0x32, 0x2c, 0x7f, 0x4e, 0x92, 0x7d, 0xce, 0x3e, 0xf6, - 0x14, 0xe7, 0xec, 0x14, 0x0a, 0x2b, 0x7e, 0x73, 0x1f, 0x7d, 0x56, 0x4b, 0xf5, 0x8f, 0x98, 0xfc, - 0x68, 0xf9, 0xcd, 0xfd, 0x67, 0x77, 0x3e, 0x8c, 0xec, 0xc9, 0x2a, 0xab, 0x3b, 0x1b, 0x56, 0x22, - 0xeb, 0x99, 0x09, 0xed, 0xa4, 0x4d, 0x4b, 0xe3, 0x8a, 0x0a, 0x1f, 0x85, 0xb2, 0x22, 0x96, 0x4e, - 0x4e, 0x28, 0x54, 0x16, 0x68, 0xb8, 0x1f, 0xf9, 0x9d, 0xf9, 0x96, 0xd7, 0xd9, 0xf1, 0x9d, 0xc0, - 0x9d, 0xa9, 0xf4, 0x11, 0x18, 0xaf, 0x67, 0x0a, 0x8c, 0x49, 0x97, 0xd3, 0xdb, 0x4d, 0xc9, 0xc0, - 0xea, 0x61, 0x49, 0xbe, 0x06, 0xe3, 0x6c, 0xb6, 0x2c, 0x3e, 0x8e, 0x68, 0x9b, 0x0f, 0xa5, 0x49, - 0x5c, 0xea, 0xa7, 0x95, 0x5b, 0xaf, 0x71, 0x22, 0x1f, 0xa4, 0x28, 0x3d, 0x68, 0x4c, 0xa0, 0x0e, - 0x52, 0x9d, 0x95, 0xf9, 0xe3, 0xa9, 0x36, 0x21, 0xcb, 0x30, 0x22, 0x4a, 0x20, 0x56, 0x9d, 0xde, - 0xba, 0xbc, 0x98, 0x59, 0x97, 0x11, 0x51, 0x17, 0x4b, 0xd2, 0x9b, 0xff, 0xc6, 0x80, 0x31, 0x2d, - 0x3b, 0x72, 0x5b, 0x71, 0x5f, 0x49, 0xfc, 0x20, 0x35, 0x9c, 0xcc, 0x47, 0x16, 0x6e, 0x0b, 0x9f, - 0xa5, 0x5c, 0x7f, 0xba, 0xcc, 0xf8, 0x77, 0x32, 0x0a, 0x45, 0xfe, 0xe4, 0x28, 0x14, 0x85, 0x3e, - 0x51, 0x28, 0xbe, 0x3d, 0x06, 0xe3, 0xfa, 0x02, 0xc7, 0x34, 0xce, 0x15, 0x7f, 0xd7, 0x6b, 0x4b, - 0xbb, 0x95, 0xc7, 0x55, 0x41, 0x88, 0xf6, 0x62, 0x01, 0x42, 0xc8, 0x6b, 0x00, 0xf1, 0xd1, 0xac, - 0x34, 0x4d, 0xc5, 0xfb, 0x0a, 0x4a, 0x02, 0xf9, 0x09, 0x80, 0x55, 0xdf, 0xa5, 0x71, 0x68, 0x9e, - 0x13, 0x36, 0x94, 0x5e, 0x17, 0x1b, 0x4a, 0xe2, 0x4d, 0x84, 0xe3, 0xa3, 0xea, 0xd9, 0xb6, 0xef, - 0xd2, 0xde, 0x98, 0x3c, 0x0a, 0x47, 0xf2, 0x25, 0x18, 0xb2, 0xba, 0x2d, 0x2a, 0x23, 0xc5, 0x8c, - 0xca, 0x01, 0xdf, 0x6d, 0x29, 0xb1, 0x52, 0x83, 0x6e, 0xfa, 0x1c, 0x81, 0x01, 0xc8, 0x07, 0x00, - 0xf7, 0xba, 0x3b, 0xf4, 0x6e, 0xe0, 0x77, 0x3b, 0xf2, 0x2a, 0x3a, 0x9a, 0xb1, 0xfb, 0x71, 0x30, - 0x32, 0x7b, 0x17, 0x13, 0xd5, 0xcc, 0x13, 0x12, 0xb2, 0x06, 0x23, 0x42, 0x7c, 0x88, 0x7d, 0xfa, - 0x97, 0xb2, 0x76, 0x88, 0x14, 0x1d, 0x42, 0x84, 0x6e, 0x41, 0xb0, 0xbe, 0x69, 0xc3, 0xcd, 0xf0, - 0x77, 0xa1, 0xc4, 0xd8, 0x33, 0x53, 0x3b, 0x14, 0x6b, 0x07, 0x3a, 0xb4, 0x2a, 0x05, 0x62, 0x66, - 0xb9, 0x16, 0x75, 0x2e, 0x26, 0x20, 0x5f, 0xc3, 0x60, 0x4b, 0xa2, 0xa9, 0x4f, 0xdc, 0x68, 0xbc, - 0xd2, 0xd3, 0xd4, 0xd3, 0x4e, 0xa7, 0x93, 0x11, 0xd2, 0x2e, 0xe6, 0x47, 0x76, 0xe3, 0x4b, 0x5f, - 0x71, 0xc0, 0xec, 0x13, 0x32, 0xb8, 0xde, 0x93, 0xc1, 0x8c, 0xbc, 0xc7, 0xd4, 0x1b, 0x62, 0x49, - 0xe3, 0x4b, 0x3a, 0x50, 0x49, 0x82, 0xc1, 0x89, 0xbc, 0xe0, 0xa4, 0xbc, 0xde, 0xec, 0xc9, 0x4b, - 0xed, 0xc0, 0x9e, 0xec, 0x7a, 0xb8, 0x13, 0x37, 0x09, 0x6e, 0x2c, 0xf2, 0x1b, 0x3d, 0x29, 0xbf, - 0xd7, 0x7a, 0xf2, 0x9b, 0x72, 0x77, 0x7a, 0xf3, 0x49, 0xf1, 0x24, 0xef, 0xc2, 0x98, 0x84, 0xe0, - 0xfc, 0xc0, 0x0d, 0x3e, 0xa1, 0xdf, 0xbb, 0x3b, 0xe8, 0x34, 0xa6, 0xc7, 0x17, 0x52, 0x91, 0x55, - 0x6a, 0x3e, 0x3a, 0xc6, 0x34, 0xea, 0xf4, 0xa8, 0xd0, 0x91, 0xc9, 0x57, 0x61, 0x74, 0xf9, 0x80, - 0x55, 0xc4, 0x6f, 0x3b, 0x11, 0xc5, 0xc5, 0x28, 0xd9, 0x34, 0x55, 0x52, 0x94, 0xa1, 0xca, 0x23, - 0x95, 0x26, 0x49, 0xea, 0x62, 0xae, 0x50, 0xb0, 0xc6, 0xe3, 0xdb, 0x2f, 0x62, 0x0c, 0x87, 0x62, - 0xe9, 0x79, 0x31, 0x63, 0xe3, 0x52, 0x61, 0x8f, 0xb2, 0x9c, 0xef, 0xea, 0xd8, 0x62, 0x42, 0x68, - 0x8d, 0xa7, 0xf3, 0x24, 0xef, 0xc1, 0xa8, 0xb8, 0x62, 0x5b, 0xb3, 0x56, 0xc3, 0x99, 0x0a, 0x56, - 0x1e, 0x23, 0x0a, 0xca, 0xdb, 0xb8, 0xb6, 0x13, 0xa4, 0x4e, 0xaf, 0x12, 0x7c, 0xf2, 0x15, 0x98, - 0xde, 0xf6, 0xda, 0xae, 0xff, 0x28, 0x14, 0x02, 0x5c, 0x08, 0xba, 0xc9, 0xc4, 0x47, 0xe7, 0x11, - 0x4f, 0xb7, 0xe5, 0xb2, 0xd5, 0x23, 0xf8, 0x32, 0x39, 0x90, 0x9f, 0xed, 0xe1, 0xcc, 0x47, 0x10, - 0x39, 0x69, 0x04, 0xcd, 0xf5, 0x8c, 0xa0, 0xde, 0xec, 0xd3, 0xc3, 0x29, 0x33, 0x1b, 0xe2, 0x03, - 0xd1, 0x75, 0x8e, 0x0f, 0x7d, 0xaf, 0x3d, 0x33, 0xa5, 0x3d, 0x47, 0x13, 0xbb, 0xcc, 0x22, 0xde, - 0xba, 0xdf, 0xf2, 0x9a, 0x87, 0x75, 0xf3, 0xf8, 0xa8, 0xfa, 0x52, 0x5a, 0x9b, 0xf9, 0xd8, 0xd7, - 0x36, 0x17, 0x32, 0x58, 0x93, 0xaf, 0x42, 0x99, 0xfd, 0xc6, 0xaa, 0xdf, 0xb4, 0x76, 0xd4, 0xa5, - 0x60, 0x8a, 0x7c, 0xb0, 0x8f, 0xf0, 0x0e, 0x70, 0x86, 0x56, 0xa8, 0xb1, 0x32, 0x7f, 0x60, 0xc0, - 0x74, 0x56, 0x59, 0x4f, 0x09, 0xb8, 0x64, 0xa6, 0x0e, 0xbd, 0x71, 0x5f, 0x82, 0x1f, 0x7a, 0xc7, - 0x47, 0xdd, 0x55, 0x18, 0x62, 0xb6, 0xb2, 0x74, 0xca, 0xc2, 0xe5, 0x90, 0xd9, 0xd3, 0xa1, 0xc5, - 0xe1, 0x0c, 0x81, 0xbb, 0x7a, 0xb3, 0xf5, 0x72, 0x88, 0x23, 0xa0, 0xbf, 0xb6, 0xc5, 0xe1, 0x0c, - 0x81, 0x2d, 0xbb, 0x72, 0x99, 0x40, 0x04, 0xb6, 0x1a, 0x87, 0x16, 0x87, 0x93, 0x2b, 0x30, 0xb2, - 0xd6, 0x5e, 0xa1, 0xce, 0x43, 0x2a, 0x4e, 0x9c, 0x70, 0x1f, 0xc5, 0x6f, 0xdb, 0x2d, 0x06, 0xb3, - 0x64, 0xa2, 0xf9, 0x1d, 0x03, 0x26, 0x7b, 0x9a, 0xe9, 0xf4, 0x98, 0x52, 0x27, 0x1f, 0xef, 0x0d, - 0x52, 0x3f, 0x5e, 0xfc, 0x42, 0x76, 0xf1, 0xcd, 0xbf, 0xc8, 0xc3, 0xf9, 0x3e, 0xab, 0x56, 0x72, - 0x34, 0x6f, 0x9c, 0x7a, 0x34, 0xff, 0x75, 0xb6, 0x4a, 0x38, 0xde, 0x41, 0xb8, 0xe1, 0x27, 0x25, - 0x4e, 0x4e, 0x31, 0x30, 0x4d, 0x06, 0x6d, 0x91, 0x01, 0x46, 0x2e, 0x34, 0x91, 0xc2, 0x8e, 0xfc, - 0x9e, 0x3d, 0x63, 0x9d, 0x59, 0xcf, 0xe1, 0x78, 0xfe, 0x47, 0xe4, 0x70, 0x5c, 0x3f, 0x92, 0x2a, - 0x3c, 0xd3, 0x23, 0xa9, 0xec, 0x4d, 0xf2, 0xa1, 0xa7, 0x39, 0x0a, 0xf8, 0x77, 0xa9, 0xe3, 0xf8, - 0x1f, 0xc5, 0xae, 0xbe, 0x06, 0x43, 0xdb, 0x7b, 0x34, 0x90, 0xfa, 0x2d, 0x16, 0xe4, 0x11, 0x03, - 0xa8, 0x05, 0x41, 0x0c, 0xf3, 0x67, 0xa0, 0xac, 0x66, 0x86, 0x73, 0x99, 0x7d, 0x8b, 0xc9, 0xc4, - 0xe7, 0x32, 0x03, 0x58, 0x1c, 0x7e, 0x6a, 0x88, 0xb6, 0xa4, 0x15, 0xf2, 0xa7, 0xb5, 0x82, 0xf9, - 0x6f, 0x0d, 0x28, 0x60, 0x84, 0x8a, 0xb7, 0xa0, 0x24, 0xb7, 0x4a, 0xd5, 0xa8, 0x0d, 0x53, 0x72, - 0x27, 0x35, 0xd4, 0xfd, 0x19, 0x04, 0x90, 0x65, 0xb5, 0x45, 0x83, 0x1d, 0xcd, 0xed, 0xe5, 0x21, - 0x03, 0xa8, 0x59, 0x21, 0xc6, 0x13, 0x34, 0x09, 0xba, 0xf6, 0x08, 0xfb, 0x9e, 0x4f, 0x78, 0xee, - 0xda, 0xd3, 0x63, 0xd7, 0x4b, 0x2c, 0xf3, 0xb7, 0x0d, 0x38, 0x9b, 0xa9, 0x07, 0xb0, 0x5c, 0xb9, - 0xc2, 0xa1, 0x8c, 0x88, 0xb4, 0xb6, 0xc1, 0x31, 0x9e, 0xc4, 0x85, 0xe7, 0x09, 0xba, 0xf7, 0x65, - 0x28, 0xc5, 0xf6, 0x19, 0x99, 0x96, 0x5d, 0x87, 0xfb, 0x69, 0xd2, 0x98, 0xf9, 0x1b, 0x03, 0x86, - 0x59, 0x11, 0x9e, 0xdb, 0xdb, 0x15, 0xd9, 0xbb, 0xab, 0xac, 0x4a, 0x03, 0xdd, 0xa9, 0xf8, 0x83, - 0x61, 0x80, 0x04, 0x99, 0xec, 0xc0, 0xf8, 0xda, 0xf2, 0xc2, 0xfc, 0xb2, 0x4b, 0xdb, 0x11, 0x9e, - 0xf2, 0xa5, 0xc2, 0x3e, 0x30, 0xc3, 0x32, 0x68, 0x3b, 0x2d, 0x81, 0x70, 0x98, 0x4c, 0x4f, 0xdf, - 0x73, 0x9b, 0xb6, 0x17, 0xd3, 0xa9, 0x0a, 0x99, 0xce, 0x91, 0xe5, 0xd1, 0xa8, 0xdd, 0x5f, 0x51, - 0xf2, 0xc8, 0x0d, 0x98, 0x47, 0xe8, 0x1c, 0xb4, 0xfa, 0xe4, 0xa1, 0x73, 0x24, 0x7b, 0x50, 0xb9, - 0x8b, 0xb2, 0x5b, 0xc9, 0x25, 0x7f, 0x72, 0x2e, 0xaf, 0x88, 0x5c, 0x5e, 0xe0, 0x42, 0x3f, 0x3b, - 0x9f, 0x1e, 0xae, 0xc9, 0xc8, 0x2d, 0x9c, 0x3a, 0x72, 0xff, 0x7f, 0x03, 0x86, 0xf9, 0xe2, 0x10, - 0xbf, 0xc8, 0x92, 0xb9, 0xfc, 0x6c, 0x3f, 0x9b, 0xe5, 0xa7, 0x12, 0xe1, 0x3f, 0xd5, 0x00, 0xe7, - 0x69, 0x64, 0x21, 0xf5, 0xbc, 0x8b, 0xdc, 0x42, 0x47, 0xc5, 0x94, 0xa7, 0x24, 0x8e, 0x50, 0xfc, - 0x65, 0x17, 0x95, 0x0b, 0xc7, 0x50, 0x1f, 0x9b, 0x1c, 0x79, 0xca, 0xc7, 0x26, 0x57, 0xa0, 0x24, - 0x3c, 0x7b, 0xea, 0x87, 0xc2, 0xfc, 0x94, 0x1b, 0x2c, 0x31, 0x5c, 0x09, 0xa1, 0xce, 0x41, 0xf6, - 0x8e, 0x16, 0xcb, 0x30, 0x46, 0x24, 0x6b, 0x50, 0x4a, 0xae, 0x86, 0x94, 0xb4, 0x73, 0xd0, 0x18, - 0x2e, 0x5c, 0x5f, 0xf9, 0x75, 0xd8, 0xcc, 0x9b, 0x20, 0x09, 0x0f, 0xf3, 0x9b, 0x06, 0x54, 0xd2, - 0xe3, 0x85, 0xbc, 0x0b, 0xa3, 0xf1, 0xed, 0x9c, 0xd8, 0xbf, 0x00, 0x37, 0x32, 0x93, 0xeb, 0x3c, - 0x9a, 0xa7, 0x81, 0x8a, 0x4e, 0xe6, 0xa0, 0xc8, 0xa6, 0x9d, 0x12, 0xcc, 0x1a, 0xe5, 0x49, 0x57, - 0xc0, 0xd4, 0x73, 0x3d, 0x89, 0xa7, 0xcc, 0xda, 0xff, 0x90, 0x87, 0x51, 0xa5, 0xb3, 0xc8, 0x35, - 0x28, 0x2e, 0x87, 0x2b, 0x7e, 0x73, 0x9f, 0xba, 0xe2, 0xb8, 0x00, 0xdf, 0x12, 0xf5, 0x42, 0xbb, - 0x85, 0x40, 0x2b, 0x4e, 0x26, 0x75, 0x18, 0xe3, 0xff, 0xe4, 0xb5, 0xe0, 0x5c, 0xb2, 0xd5, 0xc9, - 0x91, 0xe5, 0x85, 0x60, 0x75, 0x85, 0xd5, 0x48, 0xc8, 0x37, 0x00, 0x38, 0x80, 0xf5, 0xef, 0x00, - 0x8e, 0xbd, 0x72, 0x02, 0x9f, 0x15, 0x19, 0x44, 0x9e, 0x5a, 0x43, 0x1c, 0x0a, 0x0a, 0x43, 0x7c, - 0xc7, 0xd0, 0x6f, 0xee, 0x0f, 0xfe, 0x92, 0x69, 0xf2, 0x8e, 0xa1, 0xdf, 0xdc, 0xb7, 0xb3, 0xbd, - 0xbc, 0x54, 0x96, 0xe4, 0x5b, 0x06, 0x5c, 0xb4, 0x68, 0xd3, 0x7f, 0x48, 0x83, 0xc3, 0x5a, 0x84, - 0x58, 0x6a, 0x8e, 0xa7, 0xbb, 0x94, 0xdd, 0x12, 0x39, 0xbe, 0x1e, 0x08, 0x2e, 0x78, 0x1d, 0xe5, - 0xa0, 0x13, 0xd9, 0x27, 0x14, 0xe1, 0x84, 0x2c, 0xcd, 0xff, 0x64, 0x28, 0x53, 0x80, 0xac, 0x42, - 0x29, 0x1e, 0x2c, 0x62, 0xc3, 0x31, 0x56, 0x8e, 0x24, 0xdc, 0xa2, 0x0f, 0xea, 0x2f, 0x88, 0x9d, - 0xfd, 0xa9, 0x78, 0xc8, 0x69, 0x33, 0x42, 0x02, 0xc9, 0x97, 0xa1, 0x80, 0x5d, 0x75, 0x7a, 0xf4, - 0x33, 0xb9, 0xd4, 0x14, 0x58, 0x1f, 0x61, 0xa9, 0x91, 0x92, 0x7c, 0x5e, 0x78, 0x79, 0xe4, 0xb5, - 0xb8, 0xc2, 0x0c, 0xc4, 0xca, 0x11, 0xaf, 0x31, 0x89, 0x63, 0xa1, 0x32, 0x5a, 0xff, 0x76, 0x0e, - 0x2a, 0xe9, 0x89, 0x47, 0x3e, 0x80, 0xf2, 0xba, 0x13, 0x86, 0x8f, 0xfc, 0xc0, 0x5d, 0x72, 0xc2, - 0x3d, 0x11, 0xab, 0x14, 0x6d, 0xbe, 0x8e, 0x80, 0xdb, 0x7b, 0x8e, 0x16, 0xd3, 0x4e, 0x23, 0x60, - 0x0b, 0xf2, 0x86, 0xf0, 0x57, 0x57, 0x26, 0x50, 0xe4, 0x47, 0x9d, 0x54, 0xac, 0x52, 0x89, 0x46, - 0xde, 0x82, 0x3c, 0xbf, 0xfb, 0xa6, 0x06, 0xba, 0xba, 0x7f, 0xa7, 0xc6, 0xaf, 0x0b, 0xf1, 0xc3, - 0x64, 0x7d, 0x57, 0x9e, 0xe1, 0x93, 0x15, 0xe5, 0xe6, 0xd4, 0xb0, 0x16, 0xf0, 0x47, 0x82, 0xe3, - 0xca, 0x9d, 0x7e, 0x85, 0xea, 0xc3, 0x42, 0x31, 0x5f, 0x29, 0x88, 0xfb, 0x39, 0x7f, 0x98, 0x87, - 0x52, 0x9c, 0x3f, 0x21, 0x80, 0xfa, 0x86, 0x38, 0x15, 0xc6, 0xff, 0xe4, 0x02, 0x14, 0xa5, 0x8a, - 0x21, 0x4e, 0x86, 0x47, 0x42, 0xa1, 0x5e, 0xcc, 0x80, 0xd4, 0x25, 0xb8, 0x7a, 0x61, 0xc9, 0x4f, - 0x72, 0x13, 0x62, 0x45, 0xa1, 0x9f, 0x46, 0x51, 0x60, 0x1d, 0x66, 0xc5, 0x68, 0x64, 0x1c, 0x72, - 0x1e, 0xf7, 0x45, 0x2e, 0x59, 0x39, 0xcf, 0x25, 0x1f, 0x40, 0xd1, 0x71, 0x5d, 0xea, 0xda, 0x4e, - 0x34, 0xc0, 0xab, 0xb2, 0x45, 0xc6, 0x8d, 0x4b, 0x74, 0xa4, 0xaa, 0x45, 0xa4, 0x06, 0x25, 0x7c, - 0x54, 0xb4, 0x1b, 0x0e, 0xf4, 0x12, 0x69, 0xc2, 0xa1, 0xc8, 0xc8, 0x36, 0x43, 0xea, 0x92, 0xd7, - 0xa1, 0xc0, 0x7a, 0x53, 0xac, 0x07, 0x71, 0xf8, 0xc2, 0xb5, 0x8d, 0x75, 0xde, 0x60, 0x4b, 0x67, - 0x2c, 0x44, 0x20, 0xaf, 0x42, 0xbe, 0x3b, 0xf7, 0x40, 0x48, 0xfa, 0x4a, 0x72, 0x2d, 0x32, 0x46, - 0x63, 0xc9, 0xe4, 0x16, 0x14, 0x1f, 0xe9, 0x17, 0xe0, 0xce, 0xa6, 0xba, 0x31, 0xc6, 0x8f, 0x11, - 0xeb, 0x45, 0x18, 0xe6, 0xd7, 0xcd, 0xcc, 0x97, 0x00, 0x92, 0xac, 0x7b, 0x0f, 0xf0, 0xcd, 0x6f, - 0x40, 0x29, 0xce, 0x92, 0xbc, 0x08, 0xb0, 0x4f, 0x0f, 0xed, 0x3d, 0xa7, 0xed, 0x8a, 0xc7, 0x74, - 0xca, 0x56, 0x69, 0x9f, 0x1e, 0x2e, 0x21, 0x80, 0x9c, 0x87, 0x91, 0x0e, 0xeb, 0x55, 0x19, 0x69, - 0xd7, 0x1a, 0xee, 0x74, 0x77, 0xd8, 0x08, 0x9d, 0x81, 0x11, 0xdc, 0x3a, 0x10, 0x13, 0x6d, 0xcc, - 0x92, 0x9f, 0xe6, 0xef, 0xe5, 0x30, 0x06, 0x83, 0x52, 0x4e, 0xf2, 0x0a, 0x8c, 0x35, 0x03, 0x8a, - 0xcb, 0x91, 0xc3, 0xd4, 0x22, 0x91, 0x4f, 0x39, 0x01, 0x2e, 0xbb, 0xe4, 0x0a, 0x4c, 0x24, 0xa1, - 0x7f, 0xed, 0xe6, 0x8e, 0xb8, 0xfe, 0x5a, 0xb6, 0xc6, 0x3a, 0x32, 0xf6, 0xef, 0xfc, 0x0e, 0xfa, - 0xd0, 0x57, 0xd4, 0xab, 0x66, 0x91, 0x0c, 0xe3, 0x5b, 0xb2, 0x26, 0x14, 0x38, 0x1e, 0x3b, 0x9c, - 0x83, 0x61, 0xc7, 0xd9, 0xed, 0x7a, 0xdc, 0x9f, 0xb7, 0x6c, 0x89, 0x2f, 0xf2, 0x39, 0x98, 0x0c, - 0xbd, 0xdd, 0xb6, 0x13, 0x75, 0x03, 0x11, 0x04, 0x83, 0x06, 0x38, 0xa4, 0xc6, 0xac, 0x4a, 0x9c, - 0x30, 0xcf, 0xe1, 0xe4, 0x4d, 0x20, 0x6a, 0x7e, 0xfe, 0xce, 0xc7, 0xb4, 0xc9, 0x87, 0x5a, 0xd9, - 0x9a, 0x54, 0x52, 0xd6, 0x30, 0x81, 0xbc, 0x0c, 0xe5, 0x80, 0x86, 0xa8, 0x92, 0x61, 0xb3, 0x61, - 0x68, 0x1f, 0x6b, 0x54, 0xc2, 0xee, 0xd1, 0x43, 0xb3, 0x0e, 0x93, 0x3d, 0xf3, 0x91, 0xbc, 0xc9, - 0xb5, 0x7b, 0xb1, 0x3e, 0x97, 0xb9, 0x31, 0xc3, 0x84, 0x54, 0xea, 0x1d, 0x6a, 0x8e, 0x64, 0xb6, - 0xa1, 0xac, 0xca, 0xd7, 0x53, 0x2e, 0x16, 0x9f, 0x43, 0xc7, 0x42, 0x2e, 0x7c, 0x86, 0x8f, 0x8f, - 0xaa, 0x39, 0xcf, 0x45, 0x77, 0xc2, 0xab, 0x50, 0x94, 0x5a, 0x82, 0xfa, 0x98, 0x8c, 0x50, 0x28, - 0x0f, 0xad, 0x38, 0xd5, 0x7c, 0x1d, 0x46, 0x84, 0x08, 0x3d, 0x79, 0x1b, 0xc7, 0xfc, 0xa5, 0x1c, - 0x4c, 0x58, 0x94, 0x4d, 0x70, 0xf1, 0x4c, 0xcb, 0x67, 0x2c, 0x08, 0xb2, 0x56, 0xb7, 0x13, 0xee, - 0xf1, 0x7f, 0xd7, 0x80, 0xa9, 0x0c, 0xdc, 0x4f, 0x14, 0x35, 0xed, 0x36, 0x94, 0x16, 0x3c, 0xa7, - 0x55, 0x73, 0xdd, 0xd8, 0x41, 0x12, 0xb5, 0x41, 0x97, 0x4d, 0x27, 0x87, 0x41, 0xd5, 0xc5, 0x34, - 0x46, 0x25, 0xd7, 0xc5, 0xa0, 0x48, 0xe2, 0x3a, 0xca, 0x30, 0xcb, 0xc0, 0xcb, 0xa4, 0x44, 0xa3, - 0xf8, 0xcd, 0x1c, 0x88, 0xa0, 0x11, 0xc9, 0x19, 0xf8, 0x73, 0xdb, 0x75, 0xd9, 0xd7, 0xd0, 0xd2, - 0xd5, 0x1b, 0xc8, 0xec, 0xfc, 0x66, 0x0e, 0xce, 0x65, 0x13, 0x7e, 0xd2, 0x00, 0x78, 0x18, 0x44, - 0x41, 0x89, 0x64, 0x8d, 0x01, 0xf0, 0x78, 0xc4, 0x05, 0xc4, 0x4f, 0x10, 0xc8, 0x03, 0x18, 0x5b, - 0x71, 0xc2, 0x68, 0x89, 0x3a, 0x41, 0xb4, 0x43, 0x9d, 0x68, 0x00, 0x0d, 0x36, 0x7e, 0xed, 0x19, - 0x17, 0xb5, 0x3d, 0x49, 0x99, 0x7e, 0xed, 0x59, 0x63, 0x1b, 0x0f, 0x94, 0xc2, 0x00, 0x03, 0xe5, - 0xa7, 0x60, 0xa2, 0x41, 0x0f, 0x9c, 0xce, 0x9e, 0x1f, 0x50, 0xb1, 0xf3, 0x7c, 0x03, 0xc6, 0x62, - 0x50, 0xe6, 0x68, 0xd1, 0x93, 0x35, 0x7c, 0xa5, 0x21, 0x12, 0x51, 0xa2, 0x27, 0x9b, 0xbf, 0x93, - 0x83, 0xf3, 0xb5, 0xa6, 0xd8, 0xa6, 0x17, 0x09, 0xf2, 0x34, 0xf1, 0x53, 0xce, 0x9b, 0xcc, 0x42, - 0xe9, 0xbe, 0xf3, 0x78, 0x85, 0xe2, 0x7b, 0xac, 0x3c, 0x8c, 0x12, 0x57, 0xbf, 0x9c, 0xc7, 0x76, - 0xbc, 0xed, 0x65, 0x25, 0x38, 0xaa, 0xb1, 0x59, 0x78, 0x4a, 0x63, 0xd3, 0x84, 0xe1, 0x25, 0xbf, - 0xe5, 0x8a, 0xc5, 0x49, 0xec, 0xfa, 0xef, 0x21, 0xc4, 0x12, 0x29, 0xe6, 0x0f, 0x0c, 0x18, 0x8f, - 0x4b, 0x8c, 0x45, 0xf8, 0xd4, 0x9b, 0xe4, 0x0a, 0x8c, 0x60, 0x46, 0xf1, 0xab, 0x45, 0xb8, 0x68, - 0xb4, 0x18, 0xc8, 0xf6, 0x5c, 0x4b, 0x26, 0xaa, 0x2d, 0x31, 0xf4, 0x74, 0x2d, 0x61, 0xfe, 0x63, - 0x3c, 0x50, 0x50, 0x6b, 0xc9, 0x56, 0x22, 0xa5, 0x20, 0xc6, 0x80, 0x05, 0xc9, 0x3d, 0xb3, 0x2e, - 0xc9, 0xf7, 0xed, 0x92, 0x5f, 0xce, 0xc1, 0x68, 0x5c, 0xd8, 0xcf, 0xd8, 0xfd, 0xed, 0xb8, 0x5e, - 0x03, 0x79, 0x67, 0x37, 0x14, 0x59, 0x21, 0x9c, 0xa0, 0xbf, 0x0c, 0xc3, 0x62, 0x32, 0x19, 0xa9, - 0x53, 0xb5, 0x54, 0xef, 0x26, 0x2f, 0xf6, 0x62, 0x87, 0x86, 0x96, 0xa0, 0x43, 0xf7, 0xf7, 0x6d, - 0xba, 0x23, 0xce, 0x97, 0x9e, 0xdb, 0x35, 0x2a, 0xdb, 0xfd, 0x3d, 0xa9, 0xd8, 0x40, 0xab, 0xd3, - 0xdf, 0x2f, 0x40, 0x25, 0x4d, 0x72, 0xfa, 0x0d, 0xf9, 0xf5, 0xee, 0x8e, 0x78, 0x38, 0x03, 0x6f, - 0xc8, 0x77, 0xba, 0x3b, 0x16, 0x83, 0x91, 0x2b, 0x50, 0x58, 0x0f, 0xbc, 0x87, 0x58, 0x6b, 0xf1, - 0x6e, 0x48, 0x27, 0xf0, 0x1e, 0xaa, 0x7e, 0xa0, 0x2c, 0x1d, 0x0d, 0xda, 0x95, 0x86, 0xf2, 0x58, - 0x3a, 0x37, 0x68, 0x5b, 0x61, 0x3a, 0x2c, 0x8a, 0x44, 0x63, 0x4b, 0x65, 0x9d, 0x3a, 0x81, 0xb8, - 0xcd, 0x2d, 0xc4, 0x19, 0x2e, 0x95, 0x3b, 0x08, 0xe6, 0x41, 0x78, 0x2d, 0x15, 0x89, 0xb4, 0x80, - 0x28, 0x9f, 0x72, 0x02, 0x9f, 0x6e, 0xe3, 0xc9, 0xf7, 0xae, 0xa6, 0x55, 0xd6, 0xb6, 0x3a, 0x9b, - 0x33, 0xf8, 0x3e, 0xcb, 0x3d, 0xc2, 0x75, 0x28, 0xe1, 0x96, 0x17, 0x6e, 0x64, 0x14, 0x4f, 0x65, - 0x26, 0x7d, 0x6e, 0x01, 0x4f, 0xe3, 0xed, 0x78, 0x3b, 0x23, 0x61, 0x42, 0xde, 0x87, 0x51, 0xd5, - 0x51, 0x94, 0xbb, 0x33, 0x5e, 0xe2, 0x37, 0x84, 0xfa, 0xc4, 0xb3, 0x53, 0x09, 0xcc, 0xcf, 0xab, - 0xa3, 0x44, 0x2c, 0xda, 0x27, 0x8e, 0x12, 0xf3, 0xb7, 0x50, 0x8d, 0x3f, 0xf0, 0x23, 0x2a, 0xb4, - 0x97, 0xe7, 0x56, 0x8e, 0x25, 0x5b, 0xc8, 0x43, 0x9a, 0x47, 0x88, 0x56, 0xbb, 0x27, 0x78, 0x26, - 0xfc, 0x1f, 0x18, 0x70, 0x36, 0x93, 0x96, 0xdc, 0x00, 0x48, 0x74, 0x44, 0xd1, 0x4a, 0x3c, 0xba, - 0x71, 0x0c, 0xb5, 0x14, 0x0c, 0xf2, 0xf5, 0xb4, 0x76, 0x77, 0xfa, 0xe2, 0x24, 0xdf, 0x00, 0x19, - 0xd7, 0xb5, 0xbb, 0x0c, 0x9d, 0xce, 0xfc, 0x6e, 0x1e, 0x26, 0x7b, 0x1e, 0x9c, 0x3c, 0xe5, 0x0c, - 0x7e, 0x3f, 0xf5, 0x32, 0x19, 0x3f, 0xee, 0xb8, 0xde, 0xef, 0xb9, 0xcb, 0x8c, 0x77, 0xca, 0x70, - 0x5b, 0x4c, 0x04, 0xd6, 0x3e, 0xe5, 0xb9, 0xb2, 0x30, 0xfb, 0x4d, 0xbb, 0xcf, 0xf5, 0xcd, 0xed, - 0x19, 0xbc, 0x6d, 0xf7, 0x23, 0xfc, 0xf4, 0xd7, 0x6f, 0xe5, 0x60, 0xaa, 0xa7, 0xce, 0xcf, 0xed, - 0xac, 0xfb, 0xb2, 0xb6, 0xba, 0xbd, 0xd4, 0xaf, 0x4f, 0x07, 0xd2, 0x22, 0xfe, 0x87, 0x01, 0xe7, - 0xfb, 0x50, 0x92, 0xc3, 0xf4, 0x20, 0xe2, 0x5a, 0xc5, 0xcd, 0x93, 0x33, 0x7c, 0x26, 0x43, 0xe9, - 0x53, 0x1b, 0x09, 0xbf, 0x94, 0x03, 0xd8, 0xa6, 0x3b, 0xcf, 0x77, 0xf8, 0x9f, 0x2f, 0x6a, 0x03, - 0x40, 0xd9, 0xc0, 0x1c, 0x3c, 0xfa, 0xcf, 0x1a, 0x6e, 0x24, 0x0e, 0x1e, 0xfb, 0x27, 0x7e, 0xe7, - 0x24, 0x97, 0xfd, 0xce, 0x89, 0xb9, 0x03, 0xd3, 0x77, 0x69, 0x94, 0xac, 0x84, 0xd2, 0x86, 0x3c, - 0x99, 0xed, 0x1b, 0x50, 0x12, 0xf8, 0x7a, 0xcc, 0x7a, 0xe9, 0x50, 0xe6, 0xb9, 0x56, 0x82, 0x60, - 0x52, 0x38, 0xbf, 0x40, 0x5b, 0x34, 0xa2, 0x9f, 0x6e, 0x36, 0x0d, 0x20, 0xbc, 0x2a, 0xfc, 0xf9, - 0x8b, 0x81, 0x72, 0x38, 0xb5, 0x7d, 0xb6, 0xe0, 0x6c, 0x5c, 0xf6, 0x67, 0xc9, 0x77, 0x96, 0xe9, - 0x12, 0xe2, 0xae, 0x5d, 0xc2, 0xf1, 0x84, 0x4d, 0xc4, 0xc7, 0x70, 0x51, 0x12, 0x6c, 0x7b, 0xf1, - 0x49, 0xcc, 0x40, 0xb4, 0xe4, 0x5d, 0x18, 0x55, 0x68, 0xc4, 0xc5, 0x5d, 0x3c, 0xed, 0x7c, 0xe4, - 0x45, 0x7b, 0x76, 0xc8, 0xe1, 0xea, 0x69, 0xa7, 0x82, 0x6e, 0x7e, 0x0d, 0x5e, 0x88, 0xfd, 0x56, - 0x32, 0xb2, 0x4e, 0x31, 0x37, 0x9e, 0x8c, 0xf9, 0x6a, 0x52, 0xad, 0xe5, 0x76, 0xec, 0x3f, 0x2e, - 0x79, 0x13, 0xb5, 0x5a, 0xa2, 0x32, 0x97, 0x94, 0xb0, 0x68, 0x62, 0x2d, 0x4a, 0x00, 0xe6, 0x3b, - 0x4a, 0x61, 0x33, 0x18, 0x6a, 0xc4, 0x46, 0x9a, 0xf8, 0x97, 0x72, 0x30, 0xb1, 0xb6, 0xbc, 0x30, - 0x1f, 0x6f, 0x23, 0x7f, 0xc6, 0x62, 0x13, 0x69, 0x75, 0xeb, 0x2f, 0x6f, 0xcc, 0x4d, 0x98, 0x4a, - 0x35, 0x03, 0xbe, 0xee, 0xf3, 0x3e, 0xf7, 0x2f, 0x89, 0xc1, 0x72, 0x65, 0x39, 0x97, 0xc5, 0x7e, - 0xeb, 0x96, 0x95, 0xc2, 0x36, 0xbf, 0x3b, 0x9c, 0xe2, 0x2b, 0x44, 0xd8, 0x1b, 0x50, 0x5a, 0x0e, - 0xc3, 0x2e, 0x0d, 0x36, 0xad, 0x15, 0x55, 0x47, 0xf4, 0x10, 0x68, 0x77, 0x83, 0x96, 0x95, 0x20, - 0x90, 0x6b, 0x50, 0x14, 0xf7, 0xbb, 0xa4, 0x4c, 0xc0, 0xe3, 0xf2, 0xf8, 0x7a, 0x98, 0x15, 0x27, - 0x93, 0xb7, 0xa0, 0xcc, 0xff, 0xf3, 0xd1, 0x26, 0x1a, 0x1c, 0xf7, 0xaa, 0x04, 0x3a, 0x1f, 0x9d, - 0x96, 0x86, 0xc6, 0x2c, 0x33, 0xf9, 0x7c, 0x28, 0x2b, 0x51, 0x21, 0xb1, 0xcc, 0xe4, 0x4b, 0xa3, - 0x58, 0x26, 0x15, 0x89, 0x5c, 0x87, 0x7c, 0x6d, 0xde, 0x52, 0xc3, 0x74, 0x3b, 0xcd, 0x80, 0x87, - 0xb9, 0xd7, 0x5e, 0xe8, 0xaa, 0xcd, 0x5b, 0x64, 0x0e, 0x8a, 0xf8, 0x02, 0x8b, 0x4b, 0x03, 0xe1, - 0x33, 0x8a, 0xa3, 0xa6, 0x23, 0x60, 0xda, 0xfb, 0xe6, 0x02, 0x46, 0x66, 0x61, 0x64, 0xc1, 0x0b, - 0x3b, 0x2d, 0xe7, 0x50, 0x04, 0x25, 0xc1, 0xc3, 0x10, 0x97, 0x83, 0xd4, 0x71, 0x26, 0xb0, 0xc8, - 0x35, 0x18, 0x6a, 0x34, 0xfd, 0x0e, 0xb3, 0xb6, 0x62, 0xd7, 0x96, 0x90, 0x01, 0xb4, 0xc8, 0x06, - 0x0c, 0x80, 0x57, 0x8e, 0xf9, 0xcd, 0xa9, 0x92, 0x72, 0xe5, 0x38, 0x7d, 0x63, 0x4a, 0xe0, 0xf4, - 0xfa, 0xff, 0xc1, 0xb3, 0xf4, 0xff, 0xdb, 0x81, 0xf3, 0x77, 0x51, 0xd5, 0x6f, 0xd0, 0x00, 0xe3, - 0x40, 0xf2, 0xd7, 0x9c, 0x36, 0xad, 0x65, 0x71, 0x5b, 0xec, 0xea, 0xf1, 0x51, 0xf5, 0x55, 0x6e, - 0x0d, 0xd8, 0x21, 0xc7, 0x91, 0x0f, 0x41, 0xa5, 0x9e, 0xb0, 0xe8, 0xc7, 0x88, 0x7c, 0x05, 0xa6, - 0xb3, 0x92, 0xc4, 0xbd, 0x31, 0xf4, 0x0a, 0xcf, 0xce, 0x40, 0x75, 0xcb, 0xce, 0xe2, 0x40, 0x56, - 0xa0, 0xc2, 0xe1, 0x35, 0xf7, 0xc0, 0x6b, 0x2f, 0x1e, 0x38, 0x5e, 0x0b, 0x6f, 0x91, 0x89, 0xab, - 0x80, 0x82, 0xab, 0xc3, 0x12, 0x6d, 0xca, 0x52, 0x35, 0xef, 0xa4, 0x14, 0x25, 0x8a, 0xa3, 0x46, - 0xed, 0xfe, 0x4a, 0x32, 0xa7, 0x3e, 0x5b, 0xe7, 0x46, 0x5a, 0xdd, 0x4e, 0x38, 0x37, 0xda, 0x84, - 0xa9, 0x54, 0x33, 0x48, 0x71, 0xa4, 0x81, 0xd3, 0xe2, 0x28, 0x45, 0x63, 0xa5, 0xb0, 0xcd, 0xff, - 0x38, 0x9c, 0xe2, 0x2b, 0xf6, 0x8a, 0x4c, 0x18, 0xe6, 0xd2, 0x46, 0x8d, 0x5a, 0xc6, 0x65, 0x91, - 0x25, 0x52, 0xc8, 0x05, 0xc8, 0x37, 0x1a, 0x6b, 0x6a, 0x4c, 0xc5, 0x30, 0xf4, 0x2d, 0x06, 0x63, - 0x3d, 0x84, 0xdb, 0x40, 0xca, 0x05, 0xad, 0x26, 0x0d, 0x22, 0xf1, 0xbe, 0xec, 0x6b, 0xc9, 0x3c, - 0x2e, 0x24, 0xed, 0x2d, 0xe6, 0x71, 0x32, 0x7b, 0xe7, 0x61, 0xa6, 0x16, 0x86, 0x34, 0xe0, 0xe1, - 0xc1, 0xdb, 0x61, 0xf7, 0x80, 0x06, 0x62, 0xac, 0x09, 0x19, 0xc3, 0x5f, 0xa7, 0x6f, 0x86, 0x56, - 0x5f, 0x44, 0x72, 0x15, 0x8a, 0xb5, 0xae, 0xeb, 0xd1, 0x76, 0x53, 0xf3, 0x4d, 0x77, 0x04, 0xcc, - 0x8a, 0x53, 0xc9, 0x47, 0x70, 0x56, 0x10, 0x49, 0x81, 0x23, 0x5a, 0x80, 0xcb, 0x1a, 0x6e, 0xc1, - 0x8a, 0xb9, 0x20, 0xc5, 0x94, 0x2d, 0x9a, 0x24, 0x9b, 0x92, 0xd4, 0xa0, 0xb2, 0x88, 0xe7, 0xa4, - 0xf2, 0x95, 0x69, 0x3f, 0x10, 0xc1, 0x77, 0x51, 0x72, 0xf1, 0x33, 0x54, 0xdb, 0x8d, 0x13, 0xad, - 0x1e, 0x74, 0x72, 0x0f, 0xa6, 0xd2, 0x30, 0x26, 0x8f, 0x4b, 0xc9, 0x2b, 0x70, 0x3d, 0x5c, 0x50, - 0x30, 0x67, 0x51, 0x91, 0x1d, 0x98, 0xac, 0x45, 0x51, 0xe0, 0xed, 0x74, 0x23, 0x9a, 0x12, 0x5d, - 0x72, 0xa3, 0x31, 0x4e, 0x97, 0xe2, 0xeb, 0x05, 0x31, 0x18, 0xa7, 0x9c, 0x98, 0x32, 0x16, 0x61, - 0x56, 0x2f, 0x3b, 0xe2, 0xc6, 0x0f, 0x49, 0x8a, 0xc7, 0x16, 0xc5, 0x85, 0x22, 0xb9, 0xa1, 0x5b, - 0x0b, 0x0f, 0x0f, 0x0e, 0x68, 0x14, 0xe0, 0xc9, 0x3d, 0x3e, 0xc6, 0x68, 0x0a, 0x1f, 0xa0, 0x8b, - 0xca, 0xfb, 0xa9, 0xf8, 0xe0, 0xa6, 0xe6, 0x1e, 0xa9, 0xf1, 0xd4, 0x96, 0x8f, 0xf2, 0x80, 0xcb, - 0x47, 0x0b, 0x26, 0x17, 0xdb, 0xcd, 0xe0, 0x10, 0x6f, 0x36, 0xca, 0xc2, 0x8d, 0x9d, 0x52, 0x38, - 0xf9, 0xd2, 0xca, 0x25, 0x47, 0x8e, 0xb0, 0xac, 0xe2, 0xf5, 0x32, 0x36, 0xff, 0x3f, 0xa8, 0xa4, - 0xdb, 0xf2, 0x29, 0x5f, 0xcf, 0x7e, 0x12, 0xd7, 0x6c, 0xd6, 0xd3, 0xe9, 0xba, 0x90, 0x59, 0xed, - 0x89, 0x64, 0x23, 0xb9, 0x95, 0xae, 0x3c, 0x66, 0xac, 0x3d, 0x8c, 0x2c, 0xa7, 0x71, 0x2e, 0x6b, - 0x1a, 0x9b, 0xbf, 0x92, 0x83, 0x49, 0xee, 0x4d, 0xfa, 0xfc, 0xeb, 0x8a, 0xef, 0x6b, 0xc2, 0x59, - 0xee, 0x05, 0xa6, 0x6a, 0x77, 0x82, 0xb6, 0xf8, 0x0d, 0x38, 0xdb, 0xd3, 0x14, 0x28, 0xa0, 0x17, - 0xa4, 0x1f, 0x6f, 0x8f, 0x88, 0x9e, 0xc9, 0xce, 0x64, 0xeb, 0x96, 0xd5, 0x43, 0x61, 0xfe, 0xc3, - 0x5c, 0x0f, 0x7f, 0xa1, 0x37, 0xaa, 0x9a, 0xa0, 0xf1, 0x64, 0x9a, 0x60, 0xee, 0x13, 0x69, 0x82, - 0xf9, 0x41, 0x34, 0xc1, 0x8f, 0x60, 0x6c, 0x83, 0x3a, 0x4c, 0xa3, 0x11, 0x97, 0xcd, 0x0a, 0xda, - 0xf3, 0xc5, 0x2c, 0x4d, 0xca, 0x97, 0xf8, 0xa2, 0x6a, 0xc4, 0x08, 0x98, 0x68, 0xe1, 0xb7, 0xcf, - 0x2c, 0x9d, 0x83, 0xba, 0x68, 0x0c, 0xf5, 0x5f, 0x34, 0xcc, 0x6f, 0xe6, 0x60, 0x54, 0x61, 0x4f, - 0xbe, 0x00, 0xe5, 0xb5, 0x60, 0xd7, 0x69, 0x7b, 0x3f, 0xed, 0x28, 0xdb, 0xaf, 0x58, 0x7c, 0x5f, - 0x81, 0x5b, 0x1a, 0x16, 0xba, 0xcd, 0x50, 0xe7, 0x40, 0x1d, 0xf8, 0xac, 0x78, 0x16, 0x42, 0x95, - 0xcb, 0xc2, 0xf9, 0x01, 0x2e, 0x0b, 0xeb, 0x37, 0x6d, 0x0b, 0x4f, 0x7e, 0xd3, 0x56, 0xbb, 0x18, - 0x3b, 0xf4, 0x84, 0x17, 0x63, 0xcd, 0x5f, 0xcb, 0x41, 0x45, 0x3c, 0xf4, 0x2b, 0x37, 0x0f, 0x3f, - 0x5b, 0xef, 0x30, 0xe8, 0x95, 0x3b, 0xe1, 0x78, 0xac, 0xf0, 0xdb, 0xbf, 0x5f, 0xc5, 0x67, 0x5b, - 0xd3, 0xcd, 0x21, 0x9f, 0x6d, 0xd5, 0xe1, 0xe9, 0x9b, 0x03, 0x69, 0x2a, 0x2b, 0x8d, 0x6f, 0xfe, - 0x69, 0x2e, 0xcd, 0x5b, 0x68, 0x53, 0xaf, 0xc1, 0x08, 0x7f, 0xa7, 0x4d, 0x3a, 0x37, 0x8b, 0xd8, - 0x4d, 0x08, 0xb2, 0x64, 0xda, 0x93, 0xdc, 0x21, 0x39, 0xed, 0xed, 0x5e, 0x72, 0x5b, 0xbc, 0xaa, - 0x53, 0x73, 0xdd, 0x80, 0x86, 0xa1, 0x50, 0xb4, 0xf0, 0xec, 0xee, 0x11, 0xdd, 0xb1, 0xb9, 0x5f, - 0x89, 0xe3, 0xba, 0x81, 0xa5, 0xe1, 0x91, 0x79, 0x98, 0xd6, 0xdc, 0x93, 0x24, 0xfd, 0x50, 0xb2, - 0x5a, 0x88, 0xf7, 0x74, 0x90, 0x38, 0x13, 0xf9, 0xd9, 0xbd, 0x5b, 0x6e, 0xfe, 0x6f, 0x83, 0xcd, - 0xb5, 0xe6, 0xfe, 0x67, 0xec, 0x76, 0x0b, 0xab, 0xd2, 0x09, 0xca, 0xfe, 0xbf, 0x37, 0xb8, 0x7f, - 0xba, 0x18, 0x3e, 0x6f, 0xc3, 0x30, 0x7f, 0x15, 0x4e, 0x78, 0x52, 0xab, 0x5c, 0x78, 0x42, 0x72, - 0x3e, 0xc5, 0xdf, 0x96, 0xb3, 0x04, 0x01, 0x33, 0x99, 0x75, 0x37, 0x79, 0x54, 0x3c, 0x7b, 0xfd, - 0xe3, 0x25, 0x96, 0x1a, 0x97, 0x74, 0xb0, 0x78, 0xd7, 0xc6, 0xe9, 0x71, 0x49, 0xcd, 0xbf, 0xce, - 0xf1, 0xfa, 0x88, 0x42, 0x0d, 0x1a, 0x70, 0xef, 0x0a, 0x14, 0xf0, 0xfd, 0x61, 0x25, 0xaa, 0x61, - 0xea, 0xed, 0x61, 0x4c, 0x67, 0xf3, 0x06, 0x65, 0xad, 0x7a, 0xa1, 0x0a, 0xc5, 0xb1, 0x3a, 0x6f, - 0x10, 0x03, 0xa3, 0x49, 0xfb, 0x2e, 0x55, 0xa7, 0x43, 0x5b, 0x0f, 0xfc, 0x8d, 0xe9, 0xe4, 0xb6, - 0xe2, 0xd7, 0xac, 0x6e, 0x68, 0x1c, 0x3c, 0x70, 0x6c, 0xee, 0x4f, 0xab, 0x4a, 0xdb, 0xc4, 0x05, - 0x7a, 0x11, 0xc6, 0xf5, 0xbb, 0xca, 0xc2, 0xe8, 0xc0, 0x2b, 0xdf, 0xa9, 0x7b, 0xce, 0xaa, 0x7a, - 0xab, 0x13, 0x91, 0x3a, 0x8c, 0x69, 0x17, 0x52, 0xd5, 0x20, 0xac, 0x3c, 0x3a, 0x8c, 0xdd, 0x1b, - 0x49, 0x41, 0x27, 0x51, 0x36, 0xcc, 0x3f, 0x0f, 0x15, 0x31, 0x33, 0xe3, 0xbb, 0x6d, 0xa8, 0xda, - 0x2d, 0x2f, 0x58, 0xea, 0x6c, 0x6a, 0x7a, 0x6e, 0x60, 0x21, 0xd4, 0xfc, 0x8e, 0x01, 0x17, 0xc4, - 0x6b, 0x77, 0x16, 0x0d, 0x99, 0x0e, 0x89, 0x17, 0xe2, 0x70, 0x3c, 0x7e, 0x81, 0xbc, 0x2b, 0x03, - 0x4f, 0xe9, 0x02, 0x32, 0x9d, 0x47, 0x7d, 0x4c, 0x0c, 0xca, 0x21, 0x0c, 0x3d, 0x25, 0x03, 0x4e, - 0xbd, 0x2d, 0x02, 0x4e, 0xe5, 0x4e, 0x26, 0x8e, 0xe7, 0x85, 0x4b, 0xdb, 0x32, 0xd0, 0xd4, 0xaf, - 0xe7, 0xe0, 0x6c, 0x46, 0xb1, 0xb6, 0xbe, 0xf0, 0x9c, 0x0a, 0x87, 0xba, 0x26, 0x1c, 0x64, 0x44, - 0xc2, 0xbe, 0x0d, 0x9f, 0x29, 0x2b, 0x7e, 0xd7, 0x80, 0xf3, 0xfa, 0xe8, 0x11, 0xb6, 0xe8, 0xd6, - 0x2d, 0xf2, 0x0e, 0x0c, 0x2f, 0x51, 0xc7, 0xa5, 0xf2, 0x0a, 0x46, 0x1c, 0xdd, 0x4b, 0xec, 0x0e, - 0xf3, 0x44, 0xce, 0xf6, 0x4f, 0xf9, 0x54, 0x3e, 0x63, 0x09, 0x12, 0xb2, 0x20, 0x0a, 0xc7, 0x8f, - 0xa7, 0x4c, 0x79, 0x52, 0x93, 0x95, 0xd5, 0x09, 0x8a, 0xf1, 0xcf, 0xc0, 0x0b, 0x27, 0x90, 0xb0, - 0x7e, 0x63, 0x3d, 0xaf, 0xf6, 0x1b, 0xae, 0x2b, 0x08, 0x25, 0xef, 0xc3, 0xc4, 0x86, 0xb8, 0x28, - 0x26, 0x7b, 0x43, 0x09, 0xee, 0x2e, 0xef, 0x90, 0xd9, 0xb2, 0x5b, 0xd2, 0xc8, 0x6c, 0xad, 0xd7, - 0x33, 0x17, 0x3e, 0x0e, 0xaf, 0xc0, 0xf0, 0x92, 0xaf, 0x44, 0xdd, 0xc6, 0xce, 0xc5, 0xf7, 0xac, - 0x3c, 0xd7, 0x12, 0x49, 0xb1, 0xb1, 0x96, 0xcb, 0x3c, 0x8a, 0xf8, 0xa6, 0x01, 0x15, 0x9d, 0xf7, - 0xd3, 0xb6, 0xf7, 0x7b, 0x5a, 0x7b, 0xbf, 0x90, 0xdd, 0xde, 0xfd, 0x1b, 0xba, 0x27, 0x18, 0xc3, - 0x40, 0x2d, 0x6c, 0xc2, 0xf0, 0x82, 0x7f, 0xe0, 0x78, 0x6d, 0x35, 0x80, 0x80, 0x8b, 0x10, 0x4b, - 0xa4, 0x28, 0xad, 0x95, 0xef, 0xdb, 0x5a, 0xe6, 0xb7, 0x0b, 0x70, 0xc1, 0xa2, 0xbb, 0x1e, 0xd3, - 0x7a, 0x36, 0x43, 0xaf, 0xbd, 0xab, 0x1d, 0x14, 0x99, 0xa9, 0x06, 0x17, 0xee, 0x71, 0x0c, 0x12, - 0xb7, 0xf7, 0x35, 0x28, 0x32, 0xd1, 0xab, 0xb4, 0x39, 0x5a, 0x32, 0x18, 0x06, 0x07, 0x1b, 0x3e, - 0x4e, 0x26, 0xd7, 0xc5, 0xc2, 0xa0, 0x38, 0x30, 0xb3, 0x85, 0x21, 0xf5, 0x3e, 0x3c, 0x5f, 0x1c, - 0x62, 0x4d, 0xa9, 0xd0, 0x47, 0x53, 0xba, 0x0f, 0xd3, 0x35, 0x97, 0x0b, 0x1d, 0xa7, 0xb5, 0x1e, - 0x78, 0xed, 0xa6, 0xd7, 0x71, 0x5a, 0x52, 0xd3, 0xe6, 0xaf, 0xe5, 0xc7, 0xe9, 0x76, 0x27, 0x46, - 0xb0, 0x32, 0xc9, 0x58, 0x35, 0x16, 0x56, 0x1b, 0x3c, 0xca, 0xc9, 0x30, 0xb2, 0xc0, 0x6a, 0xb8, - 0xed, 0x90, 0x87, 0x39, 0xb1, 0xe2, 0x64, 0xd4, 0xd1, 0xf0, 0x0e, 0xc3, 0xc6, 0x4a, 0xe3, 0x9e, - 0xb8, 0x13, 0x20, 0xfd, 0xab, 0xf8, 0x95, 0x87, 0xa8, 0x15, 0xa2, 0x51, 0xae, 0xe1, 0x25, 0x74, - 0x8d, 0xc6, 0x12, 0xa3, 0x2b, 0xf6, 0xd0, 0x85, 0xe1, 0x9e, 0x4a, 0xc7, 0xf1, 0x98, 0xfd, 0xcf, - 0x3d, 0x54, 0x70, 0x40, 0x94, 0x12, 0x8d, 0x2e, 0x40, 0x28, 0xd7, 0xe8, 0x14, 0x14, 0xf2, 0x2e, - 0x4c, 0x2d, 0xce, 0xcf, 0x49, 0x67, 0xff, 0x05, 0xbf, 0xd9, 0x3d, 0xa0, 0xed, 0x08, 0x2f, 0x9f, - 0x94, 0x79, 0x1f, 0xd2, 0xe6, 0x1c, 0x1b, 0x05, 0x59, 0x68, 0xc2, 0xe5, 0x9f, 0x5f, 0x18, 0x9b, - 0xf7, 0x5d, 0x1a, 0x6e, 0xdd, 0xfc, 0x8c, 0xb9, 0xfc, 0x2b, 0x75, 0xc3, 0xd9, 0x76, 0x33, 0x73, - 0x66, 0xfe, 0x1d, 0x74, 0xf9, 0xef, 0xc1, 0x25, 0x3f, 0x06, 0x43, 0xf8, 0x29, 0x96, 0xd1, 0xa9, - 0x0c, 0xb6, 0xc9, 0x12, 0xda, 0xe4, 0x01, 0x2b, 0x90, 0x80, 0x2c, 0x27, 0x11, 0xe9, 0x9f, 0xc0, - 0x71, 0x55, 0xdc, 0x3a, 0xd5, 0x9f, 0x22, 0x71, 0xa1, 0xac, 0x66, 0xc8, 0xc6, 0xc8, 0x92, 0x13, - 0xee, 0x51, 0x77, 0x5e, 0x3e, 0x26, 0x58, 0xe6, 0x63, 0x64, 0x0f, 0xa1, 0xf8, 0x4c, 0x8a, 0xa5, - 0xa0, 0x30, 0xe9, 0xb0, 0x1c, 0x6e, 0x86, 0xa2, 0x28, 0xc2, 0xb4, 0xf1, 0xd0, 0x24, 0x75, 0x2d, - 0x91, 0x84, 0xd2, 0x52, 0x06, 0x64, 0x0c, 0x9c, 0xe6, 0x3e, 0x0d, 0xb6, 0x6e, 0x7e, 0x1a, 0xd2, - 0x52, 0xcf, 0xe3, 0x84, 0x3e, 0xf9, 0x8d, 0x62, 0x1c, 0x6f, 0x45, 0x43, 0x66, 0x8a, 0x5f, 0x72, - 0xdc, 0x6e, 0x24, 0x8a, 0x5f, 0x72, 0xdc, 0xae, 0x2a, 0x7e, 0x31, 0x6a, 0x1c, 0x0e, 0x37, 0x77, - 0x4a, 0x38, 0xdc, 0x3e, 0x11, 0xb8, 0xa5, 0xa7, 0xe6, 0x67, 0xe8, 0x31, 0x82, 0x2f, 0x41, 0xb9, - 0x16, 0x45, 0x4e, 0x73, 0x8f, 0xba, 0x18, 0x76, 0x59, 0x39, 0xe5, 0x73, 0x04, 0x5c, 0xf5, 0x01, - 0x53, 0x71, 0x95, 0xc7, 0x48, 0x46, 0x06, 0x78, 0x8c, 0x64, 0x16, 0x46, 0x96, 0xdb, 0x0f, 0x3d, - 0xd6, 0x26, 0xc5, 0x24, 0xe2, 0x83, 0xc7, 0x41, 0xfa, 0x0b, 0x16, 0x08, 0x22, 0x6f, 0x43, 0x91, - 0x2d, 0x3a, 0x78, 0x77, 0xb9, 0x94, 0xe8, 0xe7, 0xe2, 0x5d, 0xee, 0x3d, 0x91, 0xa4, 0x6e, 0x22, - 0x4b, 0x74, 0x72, 0x1b, 0x46, 0xa4, 0x49, 0x0c, 0x89, 0x4e, 0x2e, 0x28, 0x1d, 0x9e, 0xa2, 0x05, - 0x99, 0x10, 0x26, 0xf1, 0xbb, 0xfa, 0xa5, 0x90, 0x51, 0xe5, 0xb2, 0xb5, 0x72, 0x29, 0x44, 0xbb, - 0x6c, 0xad, 0x5c, 0x0f, 0x89, 0x2d, 0x9c, 0xf2, 0xa9, 0x16, 0xce, 0x16, 0x94, 0xd7, 0x9d, 0x20, - 0xf2, 0xd8, 0x72, 0xd4, 0x8e, 0x78, 0xac, 0xac, 0xc4, 0x00, 0x57, 0x92, 0xea, 0x2f, 0xc9, 0x4b, - 0xc7, 0x1d, 0x05, 0x5f, 0xbf, 0xad, 0x9a, 0xc0, 0xc9, 0x6a, 0x86, 0xdb, 0xa0, 0x88, 0xec, 0x88, - 0xe7, 0x7a, 0xca, 0x6e, 0x94, 0xa8, 0x91, 0xba, 0x3f, 0xde, 0xeb, 0x71, 0x78, 0x8b, 0xf7, 0x01, - 0x1a, 0x82, 0x13, 0xc8, 0x06, 0x43, 0x86, 0xa0, 0x5e, 0x91, 0xb2, 0x06, 0x63, 0x44, 0xf2, 0x75, - 0x28, 0xb3, 0xff, 0x18, 0x38, 0xc8, 0xa3, 0x3c, 0x16, 0x56, 0xe2, 0x46, 0xa6, 0x4f, 0x68, 0x1e, - 0x5d, 0xa8, 0x41, 0x23, 0x3e, 0x81, 0x91, 0x71, 0x7a, 0x37, 0x45, 0xe3, 0x66, 0xfe, 0xc0, 0x80, - 0xf3, 0x7d, 0x78, 0x0c, 0xfc, 0x0c, 0xd1, 0x6c, 0xb2, 0x20, 0x29, 0x06, 0xb7, 0x58, 0x90, 0xd4, - 0x81, 0x21, 0x97, 0xa6, 0xec, 0x28, 0x56, 0xf9, 0x4f, 0x2d, 0x8a, 0x95, 0x79, 0x64, 0xc0, 0xa8, - 0xd2, 0xb3, 0xcf, 0xf0, 0x75, 0x81, 0x2b, 0x22, 0x9c, 0x63, 0x3e, 0xc1, 0x4b, 0xbd, 0x72, 0xcd, - 0xc3, 0x37, 0x7e, 0x03, 0x60, 0xc5, 0x09, 0xa3, 0x5a, 0x33, 0xf2, 0x1e, 0xd2, 0x01, 0xc4, 0x58, - 0x72, 0xfb, 0xde, 0xc1, 0xe8, 0xa8, 0x8c, 0xac, 0xe7, 0xf6, 0x7d, 0xcc, 0xd0, 0x5c, 0x85, 0xe1, - 0x86, 0x1f, 0x44, 0xf5, 0x43, 0xbe, 0x36, 0x2d, 0xd0, 0xb0, 0xa9, 0x6e, 0xbb, 0x79, 0x68, 0x80, - 0x37, 0x2d, 0x91, 0xc4, 0x14, 0xc4, 0x3b, 0x1e, 0x6d, 0xb9, 0xea, 0xb1, 0xcb, 0x03, 0x06, 0xb0, - 0x38, 0xfc, 0xfa, 0x07, 0x30, 0x21, 0x23, 0xca, 0x6d, 0xac, 0x34, 0xb0, 0x06, 0x13, 0x30, 0xba, - 0xb5, 0x68, 0x2d, 0xdf, 0xf9, 0xaa, 0x7d, 0x67, 0x73, 0x65, 0xa5, 0x72, 0x86, 0x8c, 0x41, 0x49, - 0x00, 0xe6, 0x6b, 0x15, 0x83, 0x94, 0xa1, 0xb8, 0xbc, 0xda, 0x58, 0x9c, 0xdf, 0xb4, 0x16, 0x2b, - 0xb9, 0xeb, 0xaf, 0xc1, 0x78, 0x72, 0xa8, 0x82, 0x17, 0x2f, 0x47, 0x20, 0x6f, 0xd5, 0xb6, 0x2b, - 0x67, 0x08, 0xc0, 0xf0, 0xfa, 0xbd, 0xf9, 0xc6, 0xcd, 0x9b, 0x15, 0xe3, 0xfa, 0xe7, 0x33, 0x9e, - 0x16, 0x67, 0x9c, 0x1a, 0xb4, 0xe3, 0x04, 0x4e, 0x44, 0x79, 0x36, 0xf7, 0xbb, 0xad, 0xc8, 0xeb, - 0xb4, 0xe8, 0xe3, 0x8a, 0x71, 0xfd, 0xed, 0x9e, 0x17, 0xc2, 0xc9, 0x59, 0x98, 0xdc, 0x5c, 0xad, - 0xdd, 0xaf, 0x2f, 0xdf, 0xdd, 0x5c, 0xdb, 0x6c, 0xd8, 0xf7, 0x6b, 0x1b, 0xf3, 0x4b, 0x95, 0x33, - 0xac, 0xc0, 0xf7, 0xd7, 0x1a, 0x1b, 0xb6, 0xb5, 0x38, 0xbf, 0xb8, 0xba, 0x51, 0x31, 0xae, 0xff, - 0xaa, 0x01, 0xe3, 0xfa, 0x13, 0x77, 0xe4, 0x32, 0x5c, 0xda, 0x6c, 0x2c, 0x5a, 0xf6, 0xc6, 0xda, - 0xbd, 0xc5, 0x55, 0x7b, 0xb3, 0x51, 0xbb, 0xbb, 0x68, 0x6f, 0xae, 0x36, 0xd6, 0x17, 0xe7, 0x97, - 0xef, 0x2c, 0x2f, 0x2e, 0x54, 0xce, 0x90, 0x2a, 0xbc, 0xa0, 0x60, 0x58, 0x8b, 0xf3, 0x6b, 0x5b, - 0x8b, 0x96, 0xbd, 0x5e, 0x6b, 0x34, 0xb6, 0xd7, 0xac, 0x85, 0x8a, 0x41, 0x2e, 0xc2, 0xb9, 0x0c, - 0x84, 0xfb, 0x77, 0x6a, 0x95, 0x5c, 0x4f, 0xda, 0xea, 0xe2, 0x76, 0x6d, 0xc5, 0xae, 0xaf, 0x6d, - 0x54, 0xf2, 0xd7, 0x3f, 0x60, 0x5a, 0x48, 0xf2, 0x06, 0x05, 0x29, 0x42, 0x61, 0x75, 0x6d, 0x75, - 0xb1, 0x72, 0x86, 0x8c, 0xc2, 0xc8, 0xfa, 0xe2, 0xea, 0xc2, 0xf2, 0xea, 0x5d, 0xde, 0xac, 0xb5, - 0xf5, 0x75, 0x6b, 0x6d, 0x6b, 0x71, 0xa1, 0x92, 0x63, 0x6d, 0xb7, 0xb0, 0xb8, 0xca, 0x4a, 0x96, - 0xbf, 0x6e, 0xf2, 0xb8, 0xcb, 0x5a, 0xd8, 0x50, 0xd6, 0x5a, 0x8b, 0x5f, 0xd9, 0x58, 0x5c, 0x6d, - 0x2c, 0xaf, 0xad, 0x56, 0xce, 0x5c, 0xbf, 0x94, 0xc2, 0x91, 0x3d, 0xd1, 0x68, 0x2c, 0x55, 0xce, - 0x5c, 0xff, 0x3a, 0x94, 0xd5, 0x45, 0x98, 0x9c, 0x87, 0x29, 0xf5, 0x7b, 0x9d, 0xb6, 0x5d, 0xaf, - 0xbd, 0x5b, 0x39, 0x93, 0x4e, 0xb0, 0xba, 0xed, 0x36, 0x4b, 0xc0, 0xca, 0xab, 0x09, 0x1b, 0x34, - 0x38, 0xf0, 0xda, 0x6c, 0x7d, 0xad, 0xe4, 0xea, 0x95, 0xef, 0xfd, 0xf9, 0x4b, 0x67, 0xbe, 0xf7, - 0xfd, 0x97, 0x8c, 0x3f, 0xfd, 0xfe, 0x4b, 0xc6, 0x7f, 0xfb, 0xfe, 0x4b, 0xc6, 0xce, 0x30, 0x0e, - 0xf4, 0x5b, 0xff, 0x2f, 0x00, 0x00, 0xff, 0xff, 0x37, 0x69, 0x6e, 0xcf, 0x0a, 0xb8, 0x00, 0x00, + // 11747 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xdc, 0x7d, 0x6d, 0x6c, 0x1c, 0x49, + 0x76, 0x98, 0x7a, 0x66, 0x38, 0x9c, 0x79, 0x1c, 0x92, 0xc3, 0xd2, 0x17, 0xa5, 0xd5, 0xee, 0x68, + 0x7b, 0x77, 0xb5, 0x92, 0x6e, 0x57, 0x3c, 0x51, 0xb7, 0x3a, 0xef, 0xed, 0xd7, 0xcd, 0x90, 0x94, + 0xc8, 0x15, 0x45, 0x72, 0x7b, 0xf8, 0x71, 0xe7, 0xbb, 0x73, 0xbb, 0x39, 0x5d, 0x22, 0x7b, 0x39, + 0x9c, 0x1e, 0x77, 0xf7, 0x48, 0xa2, 0x1d, 0xc3, 0x0e, 0x0c, 0xc7, 0x30, 0x0c, 0xdf, 0x9d, 0x8d, + 0x73, 0x6c, 0x07, 0x0e, 0xec, 0x1c, 0x12, 0x24, 0x4e, 0x70, 0xf9, 0xe1, 0x04, 0x48, 0x0c, 0x04, + 0x01, 0x0c, 0x04, 0xc6, 0xfd, 0x48, 0x10, 0xff, 0x0b, 0xe2, 0x04, 0x4c, 0x7c, 0x97, 0x3f, 0x26, + 0x90, 0x20, 0x48, 0x7e, 0xf9, 0x12, 0x23, 0x41, 0xbd, 0xaa, 0xea, 0xae, 0xea, 0xe9, 0x21, 0x47, + 0x2b, 0x2d, 0x70, 0xda, 0x5f, 0x33, 0xfd, 0xea, 0xbd, 0x57, 0xdf, 0xaf, 0xde, 0xab, 0x7a, 0xf5, + 0x0a, 0xc6, 0xa2, 0x83, 0x2e, 0x0d, 0x6f, 0x74, 0x03, 0x3f, 0xf2, 0xc9, 0x08, 0x7e, 0x5c, 0x3c, + 0xb3, 0xe3, 0xef, 0xf8, 0x08, 0x99, 0x61, 0xff, 0x78, 0xe2, 0xc5, 0xda, 0x8e, 0xef, 0xef, 0xb4, + 0xe9, 0x0c, 0x7e, 0x6d, 0xf7, 0x1e, 0xcc, 0x44, 0xde, 0x3e, 0x0d, 0x23, 0x67, 0xbf, 0x2b, 0x10, + 0xe6, 0x76, 0xbc, 0x68, 0xb7, 0xb7, 0x7d, 0xa3, 0xe5, 0xef, 0xcf, 0xec, 0x04, 0xce, 0x43, 0x2f, + 0x72, 0x22, 0xcf, 0xef, 0x38, 0xed, 0x99, 0x88, 0xb6, 0x69, 0xd7, 0x0f, 0xa2, 0x19, 0xa7, 0xeb, + 0xcd, 0x60, 0x1e, 0x33, 0x8f, 0x02, 0xa7, 0xdb, 0xa5, 0x41, 0xf2, 0x87, 0x33, 0x31, 0xff, 0x5e, + 0x1e, 0xca, 0xf7, 0x28, 0xed, 0xd6, 0xdb, 0xde, 0x43, 0x4a, 0x5e, 0x81, 0xc2, 0x8a, 0xb3, 0x4f, + 0xa7, 0x8d, 0xcb, 0xc6, 0xd5, 0x72, 0x63, 0xf2, 0xe8, 0xb0, 0x36, 0x16, 0xd2, 0xe0, 0x21, 0x0d, + 0xec, 0x8e, 0xb3, 0x4f, 0x2d, 0x4c, 0x24, 0x9f, 0x83, 0x32, 0xfb, 0x0d, 0xbb, 0x4e, 0x8b, 0x4e, + 0xe7, 0x10, 0x73, 0xfc, 0xe8, 0xb0, 0x56, 0xee, 0x48, 0xa0, 0x95, 0xa4, 0x93, 0x2b, 0x30, 0xba, + 0x4c, 0x9d, 0x90, 0x2e, 0xcd, 0x4f, 0xe7, 0x2f, 0x1b, 0x57, 0xf3, 0x8d, 0xca, 0xd1, 0x61, 0xad, + 0xd4, 0x66, 0x20, 0xdb, 0x73, 0x2d, 0x99, 0x48, 0x96, 0x60, 0x74, 0xe1, 0x71, 0xd7, 0x0b, 0x68, + 0x38, 0x5d, 0xb8, 0x6c, 0x5c, 0x1d, 0x9b, 0xbd, 0x78, 0x83, 0xd7, 0xff, 0x86, 0xac, 0xff, 0x8d, + 0x75, 0x59, 0xff, 0xc6, 0xe9, 0xef, 0x1f, 0xd6, 0x4e, 0x1d, 0x1d, 0xd6, 0x46, 0x29, 0x27, 0xf9, + 0xf6, 0x7f, 0xa9, 0x19, 0x96, 0xa4, 0x27, 0xef, 0x42, 0x61, 0xfd, 0xa0, 0x4b, 0xa7, 0xcb, 0x97, + 0x8d, 0xab, 0x13, 0xb3, 0x2f, 0xdd, 0xe0, 0x2d, 0x1e, 0x57, 0x32, 0xf9, 0xc7, 0xb0, 0x1a, 0xa5, + 0xa3, 0xc3, 0x5a, 0x81, 0xa1, 0x58, 0x48, 0x45, 0xde, 0x84, 0xe2, 0xa2, 0x1f, 0x46, 0x4b, 0xf3, + 0xd3, 0x80, 0x55, 0x3b, 0x7b, 0x74, 0x58, 0x9b, 0xda, 0xf5, 0xc3, 0xc8, 0xf6, 0xdc, 0x37, 0xfc, + 0x7d, 0x2f, 0xa2, 0xfb, 0xdd, 0xe8, 0xc0, 0x12, 0x48, 0xe6, 0x36, 0x8c, 0x6b, 0xfc, 0xc8, 0x18, + 0x8c, 0x6e, 0xac, 0xdc, 0x5b, 0x59, 0xdd, 0x5a, 0xa9, 0x9e, 0x22, 0x25, 0x28, 0xac, 0xac, 0xce, + 0x2f, 0x54, 0x0d, 0x32, 0x0a, 0xf9, 0xfa, 0xda, 0x5a, 0x35, 0x47, 0x2a, 0x50, 0x9a, 0xaf, 0xaf, + 0xd7, 0x1b, 0xf5, 0xe6, 0x42, 0x35, 0x4f, 0x4e, 0xc3, 0xe4, 0xd6, 0xd2, 0xca, 0xfc, 0xea, 0x56, + 0xd3, 0x9e, 0x5f, 0x68, 0xde, 0x5b, 0x5f, 0x5d, 0xab, 0x16, 0xc8, 0x04, 0xc0, 0xbd, 0x8d, 0xc6, + 0x82, 0xb5, 0xb2, 0xb0, 0xbe, 0xd0, 0xac, 0x8e, 0x98, 0xbf, 0x92, 0x87, 0xd2, 0x7d, 0x1a, 0x39, + 0xae, 0x13, 0x39, 0xe4, 0x92, 0xd6, 0x45, 0x58, 0x7a, 0xa5, 0x6f, 0x5e, 0xe9, 0xef, 0x9b, 0x91, + 0xa3, 0xc3, 0x9a, 0xf1, 0xa6, 0xda, 0x27, 0xef, 0xc0, 0xd8, 0x3c, 0x0d, 0x5b, 0x81, 0xd7, 0x65, + 0xe3, 0x05, 0xfb, 0xa5, 0xdc, 0xb8, 0x70, 0x74, 0x58, 0x3b, 0xeb, 0x26, 0x60, 0xa5, 0xae, 0x2a, + 0x36, 0x59, 0x82, 0xe2, 0xb2, 0xb3, 0x4d, 0xdb, 0xe1, 0xf4, 0xc8, 0xe5, 0xfc, 0xd5, 0xb1, 0xd9, + 0x17, 0x44, 0xfb, 0xca, 0x02, 0xde, 0xe0, 0xa9, 0x0b, 0x9d, 0x28, 0x38, 0x68, 0x9c, 0x39, 0x3a, + 0xac, 0x55, 0xdb, 0x08, 0x50, 0xdb, 0x8e, 0xa3, 0x90, 0x66, 0xd2, 0xe7, 0xc5, 0x13, 0xfb, 0xfc, + 0xc5, 0xef, 0x1f, 0xd6, 0x0c, 0xd6, 0x17, 0xa2, 0xcf, 0x13, 0x7e, 0x7a, 0xef, 0x5f, 0x86, 0xdc, + 0xd2, 0xfc, 0xf4, 0x28, 0x8e, 0xb5, 0xea, 0xd1, 0x61, 0xad, 0xa2, 0x75, 0x5b, 0x6e, 0x69, 0xfe, + 0xe2, 0xdb, 0x30, 0xa6, 0x94, 0x91, 0x54, 0x21, 0xbf, 0x47, 0x0f, 0x78, 0x7b, 0x5a, 0xec, 0x2f, + 0x39, 0x03, 0x23, 0x0f, 0x9d, 0x76, 0x4f, 0x34, 0xa0, 0xc5, 0x3f, 0xbe, 0x94, 0xfb, 0x09, 0xc3, + 0xfc, 0xcd, 0x02, 0x94, 0x2c, 0x9f, 0xcf, 0x33, 0x72, 0x0d, 0x46, 0x9a, 0x91, 0x13, 0xc9, 0xae, + 0x38, 0x7d, 0x74, 0x58, 0x9b, 0x0c, 0x19, 0x40, 0xc9, 0x8f, 0x63, 0x30, 0xd4, 0xb5, 0x5d, 0x27, + 0x94, 0x5d, 0x82, 0xa8, 0x5d, 0x06, 0x50, 0x51, 0x11, 0x83, 0x5c, 0x81, 0xc2, 0x7d, 0xdf, 0xa5, + 0xa2, 0x57, 0xc8, 0xd1, 0x61, 0x6d, 0x62, 0xdf, 0x77, 0x55, 0x44, 0x4c, 0x27, 0x6f, 0x40, 0x79, + 0xae, 0x17, 0x04, 0xb4, 0xc3, 0x86, 0x6a, 0x01, 0x91, 0x27, 0x8e, 0x0e, 0x6b, 0xd0, 0xe2, 0x40, + 0x36, 0xb9, 0x12, 0x04, 0xd6, 0xd4, 0xcd, 0xc8, 0x09, 0x22, 0xea, 0x4e, 0x8f, 0x0c, 0xd5, 0xd4, + 0x6c, 0x7a, 0x4d, 0x85, 0x9c, 0x24, 0xdd, 0xd4, 0x82, 0x13, 0x59, 0x84, 0xb1, 0xbb, 0x81, 0xd3, + 0xa2, 0x6b, 0x34, 0xf0, 0x7c, 0x17, 0xfb, 0x30, 0xdf, 0xb8, 0x72, 0x74, 0x58, 0x3b, 0xb7, 0xc3, + 0xc0, 0x76, 0x17, 0xe1, 0x09, 0xf5, 0x8f, 0x0e, 0x6b, 0xa5, 0xf9, 0x5e, 0x80, 0xad, 0x67, 0xa9, + 0xa4, 0xe4, 0xa7, 0x59, 0x97, 0x84, 0x11, 0x36, 0x2d, 0x75, 0xb1, 0xf7, 0x8e, 0x2f, 0xa2, 0x29, + 0x8a, 0x78, 0xae, 0xed, 0x84, 0x91, 0x1d, 0x70, 0xba, 0x54, 0x39, 0x55, 0x96, 0x64, 0x15, 0x4a, + 0xcd, 0xd6, 0x2e, 0x75, 0x7b, 0x6d, 0x3a, 0x5d, 0x42, 0xf6, 0xe7, 0xc5, 0xc0, 0x95, 0xfd, 0x29, + 0x93, 0x1b, 0x17, 0x05, 0x6f, 0x12, 0x0a, 0x88, 0xd2, 0xf6, 0x31, 0x93, 0x2f, 0x95, 0x7e, 0xe7, + 0x0f, 0x6a, 0xa7, 0x7e, 0xf1, 0x3f, 0x5f, 0x3e, 0x65, 0xfe, 0x8b, 0x1c, 0x54, 0xd3, 0x4c, 0xc8, + 0x03, 0x18, 0xdf, 0xe8, 0xba, 0x4e, 0x44, 0xe7, 0xda, 0x1e, 0xed, 0x44, 0x21, 0x0e, 0x92, 0xe3, + 0xeb, 0xf4, 0xaa, 0xc8, 0x77, 0xba, 0x87, 0x84, 0x76, 0x8b, 0x53, 0xa6, 0x6a, 0xa5, 0xb3, 0x4d, + 0xf2, 0x69, 0xa2, 0x9c, 0x0e, 0x71, 0x84, 0x3d, 0x59, 0x3e, 0x5c, 0xc2, 0x0f, 0xc8, 0x47, 0xb0, + 0x15, 0x03, 0xa8, 0xe3, 0x6e, 0x1f, 0xe0, 0xc8, 0x1c, 0x7e, 0x00, 0x31, 0x92, 0x8c, 0x01, 0xc4, + 0xc0, 0xe6, 0x7f, 0x33, 0x60, 0xc2, 0xa2, 0xa1, 0xdf, 0x0b, 0x5a, 0x74, 0x91, 0x3a, 0x2e, 0x0d, + 0xd8, 0xf0, 0xbf, 0xe7, 0x75, 0x5c, 0x31, 0xa7, 0x70, 0xf8, 0xef, 0x79, 0x1d, 0x75, 0x0a, 0x63, + 0x3a, 0xf9, 0x3c, 0x8c, 0x36, 0x7b, 0xdb, 0x88, 0xca, 0xe7, 0xd4, 0x39, 0xec, 0xb1, 0xde, 0xb6, + 0x9d, 0x42, 0x97, 0x68, 0x64, 0x06, 0x46, 0x37, 0x69, 0x10, 0x26, 0x12, 0x0f, 0x25, 0xfb, 0x43, + 0x0e, 0x52, 0x09, 0x04, 0x16, 0xb9, 0x9b, 0x48, 0x5d, 0xb1, 0x26, 0x4d, 0xa6, 0x64, 0x5d, 0x32, + 0x54, 0xf6, 0x05, 0x44, 0x1d, 0x2a, 0x12, 0xcb, 0xfc, 0x8d, 0x1c, 0x54, 0xe7, 0x9d, 0xc8, 0xd9, + 0x76, 0x42, 0xd1, 0x9e, 0x9b, 0xb7, 0x98, 0x1c, 0x57, 0x2a, 0x8a, 0x72, 0x9c, 0x95, 0xfc, 0x13, + 0x57, 0xef, 0xb5, 0x74, 0xf5, 0xc6, 0xd8, 0x02, 0x29, 0xaa, 0x97, 0x54, 0xea, 0xbd, 0x93, 0x2b, + 0x55, 0x15, 0x95, 0x2a, 0xc9, 0x4a, 0x25, 0x55, 0x21, 0xef, 0x41, 0xa1, 0xd9, 0xa5, 0x2d, 0x21, + 0x44, 0xa4, 0xec, 0xd7, 0x2b, 0xc7, 0x10, 0x36, 0x6f, 0x35, 0x2a, 0x82, 0x4d, 0x21, 0xec, 0xd2, + 0x96, 0x85, 0x64, 0xca, 0xa4, 0xf9, 0x4e, 0x11, 0xce, 0x64, 0x91, 0x91, 0xf7, 0xf4, 0xc5, 0x89, + 0x37, 0xcf, 0x0b, 0x03, 0x17, 0xa7, 0x69, 0x43, 0x5f, 0x9e, 0xae, 0x43, 0x69, 0x8d, 0x0d, 0xc8, + 0x96, 0xdf, 0x16, 0x2d, 0xc7, 0xa4, 0x62, 0xa9, 0x2b, 0x61, 0x86, 0x15, 0xa7, 0x93, 0x17, 0x20, + 0xbf, 0x61, 0x2d, 0x89, 0xe6, 0x2a, 0x1f, 0x1d, 0xd6, 0xf2, 0xbd, 0xc0, 0x9b, 0x36, 0x2c, 0x06, + 0x25, 0x33, 0x50, 0x9c, 0xab, 0xcf, 0xd1, 0x20, 0xc2, 0x66, 0xaa, 0x34, 0xce, 0xb3, 0xd1, 0xd2, + 0x72, 0xec, 0x16, 0x0d, 0x22, 0x2d, 0x7b, 0x81, 0x46, 0x3e, 0x07, 0xf9, 0xfa, 0x56, 0x53, 0xb4, + 0x0c, 0x88, 0x96, 0xa9, 0x6f, 0x35, 0x1b, 0xe3, 0xa2, 0x21, 0xf2, 0xce, 0xa3, 0x90, 0x71, 0xaf, + 0x6f, 0x35, 0xd5, 0xde, 0x2a, 0x1e, 0xd3, 0x5b, 0x57, 0xa1, 0xc4, 0xf4, 0x0c, 0xb6, 0xc0, 0xa3, + 0x50, 0x2c, 0x73, 0xf5, 0x69, 0x57, 0xc0, 0xac, 0x38, 0x95, 0xbc, 0x12, 0xab, 0x2d, 0xa5, 0x84, + 0x9f, 0x50, 0x5b, 0xa4, 0xb2, 0x42, 0x1e, 0xc3, 0xf8, 0xfc, 0x41, 0xc7, 0xd9, 0xf7, 0x5a, 0x62, + 0x09, 0x2f, 0xe3, 0x12, 0x7e, 0xe3, 0x98, 0x6e, 0xbc, 0xa1, 0x11, 0xf0, 0x55, 0x5d, 0x0a, 0xdf, + 0x69, 0x97, 0xa7, 0xd9, 0xe9, 0x15, 0x7e, 0xda, 0xb0, 0xf4, 0x8c, 0xd8, 0x5c, 0x92, 0x22, 0x12, + 0xf5, 0xaa, 0x64, 0xd8, 0x49, 0x70, 0x32, 0x97, 0x02, 0x01, 0x51, 0xe7, 0x52, 0xbc, 0xe8, 0xbe, + 0x07, 0xf9, 0xbb, 0x73, 0x6b, 0xd3, 0x63, 0xc8, 0x83, 0x08, 0x1e, 0x77, 0xe7, 0xd6, 0xe6, 0xda, + 0x7e, 0xcf, 0x6d, 0x7e, 0xb4, 0xdc, 0x38, 0x2f, 0xd8, 0x8c, 0xef, 0xb4, 0xba, 0x5a, 0x89, 0x18, + 0x1d, 0x59, 0x80, 0x92, 0xac, 0xe5, 0x74, 0x05, 0x79, 0x4c, 0xa5, 0x2a, 0xbf, 0x79, 0x8b, 0xcf, + 0x35, 0x57, 0x7c, 0xab, 0xa5, 0x90, 0x38, 0x17, 0xb7, 0x80, 0xf4, 0xb7, 0x4b, 0x86, 0x26, 0xf1, + 0x39, 0x55, 0x93, 0x18, 0x9b, 0x3d, 0x2b, 0xf2, 0x9a, 0xf3, 0xf7, 0xf7, 0x9d, 0x8e, 0x8b, 0xb4, + 0x9b, 0xb3, 0xaa, 0x82, 0x51, 0x87, 0x89, 0xa4, 0x20, 0xcb, 0x5e, 0x18, 0x91, 0x19, 0x28, 0x4b, + 0x08, 0x5b, 0x44, 0xf2, 0x99, 0x45, 0xb6, 0x12, 0x1c, 0xf3, 0x4f, 0x73, 0x00, 0x49, 0xca, 0x73, + 0x2a, 0x67, 0xbe, 0xa8, 0xc9, 0x99, 0xb3, 0xe9, 0x01, 0x3a, 0x50, 0xc2, 0x90, 0x0f, 0xa0, 0xc8, + 0x54, 0xae, 0x9e, 0x54, 0x29, 0xcf, 0xa7, 0x49, 0x31, 0x71, 0xf3, 0x56, 0x63, 0x42, 0x10, 0x17, + 0x43, 0x84, 0x58, 0x82, 0x4c, 0x11, 0x51, 0xff, 0xa3, 0x90, 0x74, 0x86, 0x10, 0x4e, 0x57, 0x15, + 0xe9, 0x62, 0x24, 0xf3, 0x51, 0x4a, 0x17, 0x45, 0xb6, 0x5c, 0xe0, 0xb2, 0x85, 0x37, 0xea, 0xa8, + 0x90, 0x2d, 0x69, 0xc9, 0xc2, 0x1b, 0xf0, 0x44, 0xc9, 0xd2, 0x4d, 0x4f, 0xdb, 0x02, 0x0e, 0x83, + 0xab, 0x99, 0xad, 0x92, 0x35, 0x61, 0x2f, 0x9f, 0x34, 0x61, 0xd3, 0xd3, 0xf5, 0xd6, 0x20, 0x59, + 0x76, 0x56, 0xce, 0x2e, 0xe7, 0x91, 0x4a, 0x8e, 0x32, 0xed, 0x1d, 0x3e, 0x35, 0x8b, 0x03, 0xa7, + 0xe6, 0xd9, 0xcc, 0xa9, 0xc9, 0x27, 0xe6, 0x3b, 0x30, 0x52, 0xff, 0xd9, 0x5e, 0x40, 0x85, 0xee, + 0x57, 0x91, 0x79, 0x32, 0x58, 0x3c, 0xa7, 0x27, 0x1d, 0xf6, 0xa9, 0xea, 0xcc, 0x98, 0xce, 0x72, + 0x5e, 0x5f, 0x6e, 0x0a, 0xbd, 0x8e, 0xa4, 0x9a, 0x65, 0x7d, 0x59, 0x29, 0x76, 0xa4, 0xd5, 0x9a, + 0x51, 0x91, 0x19, 0xc8, 0xd5, 0xe7, 0xd1, 0x58, 0x1c, 0x9b, 0x2d, 0xcb, 0x6c, 0xe7, 0x1b, 0x67, + 0x04, 0x49, 0xc5, 0xd1, 0xec, 0x87, 0xfa, 0xfc, 0xa7, 0x37, 0xf9, 0xdb, 0x8a, 0x9a, 0x20, 0x86, + 0x29, 0x33, 0x47, 0xc5, 0x60, 0x31, 0x12, 0xa5, 0xa5, 0x6f, 0xb0, 0xc4, 0x43, 0xe5, 0x1a, 0xef, + 0xb8, 0x5c, 0x5f, 0xc7, 0x8d, 0x29, 0x8b, 0x10, 0x76, 0x97, 0xf9, 0x97, 0x06, 0xe2, 0x92, 0x37, + 0xa0, 0x68, 0xd1, 0x9d, 0x64, 0xad, 0x45, 0x9b, 0x2d, 0x40, 0x88, 0x9a, 0x01, 0xc7, 0x41, 0x41, + 0x4e, 0xdd, 0x70, 0xd7, 0x7b, 0x10, 0x89, 0x5c, 0x62, 0x41, 0x2e, 0xc0, 0x8a, 0x20, 0x17, 0x10, + 0x4d, 0x90, 0x0b, 0x18, 0x1b, 0x62, 0xd6, 0x7c, 0x53, 0x28, 0x93, 0xb2, 0xa4, 0xd6, 0xbc, 0xd2, + 0x57, 0x81, 0xab, 0xf5, 0x95, 0x35, 0xdf, 0x24, 0xb7, 0xa1, 0x5c, 0x6f, 0xb5, 0xfc, 0x9e, 0x62, + 0xf4, 0x4c, 0x1f, 0x1d, 0xd6, 0xce, 0x38, 0x1c, 0xa8, 0x9b, 0xe8, 0x09, 0xaa, 0xd9, 0x48, 0x4a, + 0xcd, 0x78, 0xcc, 0xb5, 0x7b, 0x61, 0x44, 0x83, 0xa5, 0x79, 0x51, 0x65, 0xe4, 0xd1, 0xe2, 0xc0, + 0x14, 0x8f, 0x18, 0xd5, 0xfc, 0x4f, 0x06, 0x96, 0x98, 0xbc, 0x0d, 0xb0, 0xd4, 0x61, 0x8a, 0x6d, + 0x8b, 0xc6, 0x0c, 0xd0, 0x78, 0xf6, 0x04, 0x54, 0xe7, 0xa0, 0x20, 0xeb, 0x59, 0xe7, 0x86, 0xce, + 0x9a, 0x65, 0x29, 0xd5, 0x64, 0xb1, 0x8f, 0x22, 0xb2, 0x0c, 0x04, 0x34, 0x95, 0x65, 0x82, 0x4c, + 0xae, 0xc0, 0xe8, 0x52, 0xfd, 0x7e, 0xbd, 0x17, 0xed, 0x62, 0x7b, 0x95, 0xb8, 0xc0, 0xf2, 0x9c, + 0x7d, 0xdb, 0xe9, 0x45, 0xbb, 0x96, 0x4c, 0x34, 0x7f, 0xd1, 0x80, 0x31, 0x65, 0xae, 0xb2, 0xa2, + 0xae, 0x05, 0xfe, 0xc7, 0xb4, 0x15, 0xe9, 0xad, 0xd4, 0xe5, 0xc0, 0x54, 0x51, 0x63, 0xd4, 0x54, + 0xeb, 0xe4, 0x9e, 0xa0, 0x75, 0xcc, 0x19, 0x21, 0x02, 0x98, 0x0d, 0xa0, 0x6c, 0x71, 0xa0, 0x0d, + 0xc0, 0x74, 0x1c, 0xd5, 0x06, 0x60, 0xe9, 0xe6, 0x1f, 0x1a, 0x6c, 0xea, 0x92, 0x19, 0x80, 0x7b, + 0xf4, 0x20, 0x72, 0xb6, 0xef, 0x78, 0x6d, 0x6d, 0xeb, 0x6a, 0x0f, 0xa1, 0xf6, 0x03, 0xaf, 0x4d, + 0x2d, 0x05, 0x85, 0xdc, 0x82, 0xd2, 0xbd, 0x60, 0xfb, 0x2d, 0x44, 0xcf, 0xc5, 0x22, 0xf8, 0xf4, + 0x5e, 0xb0, 0xfd, 0x16, 0x22, 0xab, 0xe3, 0x55, 0x22, 0x12, 0x13, 0x8a, 0xf3, 0xfe, 0xbe, 0xe3, + 0xc9, 0x65, 0x0f, 0xd8, 0xda, 0xe1, 0x22, 0xc4, 0x12, 0x29, 0x4c, 0xe8, 0x37, 0xd7, 0x56, 0xc4, + 0xc0, 0x44, 0xa1, 0x1f, 0x76, 0x3b, 0x16, 0x83, 0x99, 0xdf, 0x33, 0x60, 0x4c, 0x91, 0x48, 0xe4, + 0x0b, 0xc2, 0xcc, 0x37, 0x70, 0x93, 0xea, 0x5c, 0xbf, 0xcc, 0x62, 0xa9, 0x7c, 0xb9, 0x66, 0xe6, + 0xbf, 0x30, 0xfa, 0x13, 0x69, 0x90, 0x1b, 0x46, 0x1a, 0xbc, 0x0d, 0xc0, 0x75, 0x39, 0x6c, 0x4e, + 0x65, 0xdc, 0x28, 0x9b, 0x7a, 0x6a, 0x67, 0x24, 0xc8, 0xe6, 0xdf, 0xcc, 0x41, 0x49, 0xd8, 0x2a, + 0xb3, 0xcf, 0xa9, 0x0e, 0xf1, 0x96, 0xa6, 0x43, 0x9c, 0x16, 0xa4, 0x8a, 0x72, 0x3b, 0x7b, 0x82, + 0x8d, 0xf2, 0x36, 0x54, 0x64, 0x13, 0xa0, 0x2a, 0x76, 0x0d, 0x46, 0xa5, 0x95, 0xcd, 0x15, 0xb1, + 0x49, 0x8d, 0xe7, 0xe6, 0xac, 0x25, 0xd3, 0xcd, 0x3f, 0x1d, 0x91, 0xb4, 0x3c, 0x27, 0xd6, 0x84, + 0x75, 0xd7, 0x0d, 0xd4, 0x26, 0x74, 0x5c, 0x37, 0xb0, 0x10, 0xca, 0x3a, 0x6a, 0xad, 0xb7, 0xdd, + 0xf6, 0x5a, 0x88, 0xa3, 0xcc, 0x9a, 0x2e, 0x42, 0x6d, 0x86, 0xaa, 0x76, 0x54, 0x82, 0xac, 0x99, + 0x08, 0xf9, 0x63, 0x4d, 0x84, 0x9f, 0x82, 0xf2, 0xdc, 0xbe, 0xab, 0xa9, 0x10, 0x66, 0x46, 0xa3, + 0xdc, 0x88, 0x91, 0xb8, 0xf2, 0x70, 0x49, 0xb4, 0xd1, 0x99, 0xd6, 0xbe, 0xdb, 0xaf, 0x38, 0x24, + 0x2c, 0x35, 0x1d, 0x7f, 0xe4, 0x69, 0x74, 0xfc, 0xdb, 0x50, 0xde, 0x08, 0xe9, 0x7a, 0xaf, 0xd3, + 0xa1, 0x6d, 0x54, 0x27, 0x4a, 0x5c, 0xf6, 0xf4, 0x42, 0x6a, 0x47, 0x08, 0x55, 0x0b, 0x10, 0xa3, + 0xaa, 0xc3, 0x6a, 0xf4, 0x98, 0x61, 0xf5, 0x05, 0x28, 0xd4, 0xbb, 0x5d, 0x69, 0xfc, 0xc4, 0x8b, + 0x64, 0xb7, 0x8b, 0x4b, 0xdf, 0x84, 0xd3, 0xed, 0xea, 0xa6, 0x0c, 0x62, 0x13, 0x0a, 0xe4, 0x5e, + 0x6f, 0x9b, 0x06, 0x1d, 0x1a, 0xd1, 0x50, 0x88, 0xe6, 0x70, 0x1a, 0x90, 0xc7, 0xb4, 0xdc, 0x63, + 0x4e, 0x23, 0xa0, 0xe1, 0x7a, 0x7e, 0xaf, 0xb7, 0x4d, 0x6d, 0x21, 0xe3, 0xd5, 0xb6, 0xcb, 0x60, + 0xc8, 0x64, 0xd3, 0x1a, 0xa5, 0x01, 0x8e, 0x83, 0xb1, 0x44, 0x36, 0x75, 0x29, 0x0d, 0xd2, 0xa3, + 0x20, 0x46, 0xbc, 0xd8, 0x84, 0x09, 0xbd, 0xd3, 0x9e, 0x81, 0x36, 0xf2, 0x61, 0xa1, 0x54, 0xaa, + 0x96, 0xcd, 0x5f, 0xc9, 0xc1, 0x58, 0xbd, 0xdb, 0x7d, 0xce, 0xb7, 0x2d, 0x7e, 0x42, 0x13, 0x05, + 0xe7, 0x92, 0x2e, 0x7f, 0x82, 0x1d, 0x8b, 0xbf, 0x32, 0x60, 0x32, 0x45, 0xa1, 0x96, 0xde, 0x18, + 0xd2, 0x8c, 0xcf, 0x0d, 0x69, 0xc6, 0xe7, 0x07, 0x9b, 0xf1, 0xea, 0x44, 0x2b, 0x3c, 0xcd, 0x44, + 0x7b, 0x1d, 0xf2, 0xf5, 0x6e, 0x57, 0xb4, 0x4a, 0x25, 0x69, 0x95, 0xcd, 0x5b, 0x7c, 0xf5, 0x72, + 0xba, 0x5d, 0x8b, 0x61, 0x98, 0x6f, 0x42, 0x19, 0xc1, 0x28, 0x06, 0x2f, 0x8b, 0xf9, 0xc3, 0x65, + 0xa0, 0x46, 0xc6, 0xe7, 0x8a, 0xf9, 0x7f, 0x0c, 0x18, 0xc1, 0xef, 0xe7, 0x74, 0xb8, 0xcc, 0x6a, + 0xc3, 0xa5, 0xaa, 0x0c, 0x97, 0x61, 0x06, 0xca, 0x1f, 0xe5, 0xb1, 0xb5, 0xc4, 0x10, 0x11, 0x86, + 0xa0, 0x91, 0x61, 0x08, 0x3e, 0x85, 0xd4, 0xdf, 0x4b, 0x9b, 0x84, 0x79, 0xec, 0x8c, 0x57, 0xd2, + 0x45, 0x7d, 0x26, 0xd6, 0xe0, 0x22, 0x90, 0xa5, 0x4e, 0x48, 0x5b, 0xbd, 0x80, 0x36, 0xf7, 0xbc, + 0xee, 0x26, 0x0d, 0xbc, 0x07, 0x07, 0x42, 0x9d, 0x44, 0xc1, 0xec, 0x89, 0x54, 0x3b, 0xdc, 0xf3, + 0xba, 0xf6, 0x43, 0x4c, 0xb7, 0x32, 0x68, 0xc8, 0x07, 0x30, 0x6a, 0xd1, 0x47, 0x81, 0x17, 0x51, + 0xd1, 0xb6, 0x13, 0xb1, 0xf1, 0x80, 0x50, 0xae, 0xd0, 0x04, 0xfc, 0x43, 0xed, 0x7f, 0x91, 0xfe, + 0xe9, 0xd9, 0x5e, 0xdf, 0x19, 0xc1, 0xb9, 0x70, 0xc2, 0xf1, 0xda, 0x31, 0x56, 0xbd, 0xde, 0x99, + 0xf9, 0x27, 0xe9, 0xcc, 0x4d, 0xa8, 0x30, 0x7b, 0x2f, 0x65, 0xde, 0x5f, 0x4a, 0xfa, 0xf2, 0x86, + 0x9a, 0x7c, 0xdc, 0xc9, 0x9a, 0xc6, 0x87, 0xd8, 0xe9, 0x41, 0xc2, 0x4f, 0xec, 0x5e, 0x54, 0x18, + 0x67, 0x0c, 0x8f, 0x58, 0x74, 0xb4, 0x78, 0x63, 0x3d, 0xf1, 0xc0, 0x28, 0x3e, 0xdd, 0xc0, 0x18, + 0xfd, 0x24, 0x03, 0x23, 0x7d, 0xa6, 0x59, 0x7a, 0x92, 0x33, 0xcd, 0x8b, 0x1f, 0xc0, 0x54, 0x5f, + 0x0b, 0x3f, 0xc9, 0xb9, 0xe0, 0xa7, 0x37, 0x2c, 0x7f, 0x3e, 0x6e, 0x17, 0x32, 0x8b, 0x36, 0xac, + 0x17, 0xd0, 0x56, 0x84, 0xa2, 0x57, 0x48, 0xcb, 0x40, 0xc0, 0x52, 0x46, 0x36, 0xc2, 0xc8, 0xfb, + 0x30, 0xca, 0xcf, 0x55, 0xc2, 0xe9, 0x1c, 0xf6, 0xfd, 0xb8, 0xc8, 0x91, 0x43, 0xc5, 0xe1, 0x36, + 0xc7, 0x50, 0x5b, 0x55, 0x10, 0x99, 0x77, 0xa1, 0x28, 0xce, 0x65, 0x8e, 0x9f, 0x17, 0x35, 0x18, + 0xd9, 0x4c, 0x5a, 0x06, 0xf7, 0xd2, 0x79, 0x25, 0x2c, 0x0e, 0x37, 0x7f, 0xcd, 0x80, 0x09, 0xbd, + 0x96, 0xe4, 0x06, 0x14, 0xc5, 0xc1, 0xa1, 0x81, 0x07, 0x87, 0xac, 0x36, 0x45, 0x7e, 0x64, 0xa8, + 0x1d, 0x14, 0x0a, 0x2c, 0x26, 0xfa, 0x05, 0x07, 0xac, 0x8b, 0x10, 0xfd, 0x62, 0x90, 0x5a, 0x32, + 0x8d, 0xd9, 0x69, 0x16, 0x0d, 0x7b, 0xed, 0x48, 0xb5, 0xd3, 0x02, 0x84, 0x58, 0x22, 0xc5, 0x3c, + 0x34, 0x00, 0x9a, 0xcd, 0xc5, 0x7b, 0xf4, 0x60, 0xcd, 0xf1, 0x02, 0xb4, 0x75, 0x71, 0x36, 0xde, + 0x13, 0xbd, 0x55, 0x11, 0xb6, 0x2e, 0x9f, 0xb9, 0x7b, 0xf4, 0x40, 0xb3, 0x75, 0x25, 0x2a, 0x4e, + 0xf9, 0xc0, 0x7b, 0xe8, 0x44, 0x94, 0x11, 0xe6, 0x90, 0x90, 0x4f, 0x79, 0x0e, 0x4d, 0x51, 0x2a, + 0xc8, 0xe4, 0x1b, 0x30, 0x91, 0x7c, 0xa1, 0xb7, 0x42, 0x1e, 0x0d, 0x41, 0x39, 0x22, 0xf4, 0xc4, + 0xc6, 0x4b, 0x47, 0x87, 0xb5, 0x8b, 0x0a, 0x57, 0x9b, 0x61, 0x29, 0xac, 0x53, 0xcc, 0xcc, 0xef, + 0x1a, 0x00, 0xeb, 0xcb, 0x4d, 0x59, 0xc1, 0x2b, 0x50, 0x88, 0xb7, 0x90, 0x2a, 0xdc, 0xa0, 0x4e, + 0x59, 0x8c, 0x98, 0x4e, 0x5e, 0x81, 0x7c, 0x52, 0x93, 0xa9, 0xa3, 0xc3, 0xda, 0xb8, 0x5e, 0x03, + 0x96, 0x4a, 0xee, 0xc2, 0xe8, 0x50, 0x65, 0xc6, 0xd1, 0x99, 0x51, 0x56, 0x49, 0x8d, 0xbd, 0xf0, + 0xe1, 0xd6, 0xfa, 0x67, 0xb7, 0x17, 0xbe, 0x95, 0x83, 0x49, 0xd6, 0xae, 0xf5, 0x5e, 0xb4, 0xeb, + 0x07, 0x5e, 0x74, 0xf0, 0xdc, 0x9a, 0xd2, 0xef, 0x6a, 0x0a, 0xd1, 0x45, 0x29, 0xb6, 0xd4, 0xba, + 0x0d, 0x65, 0x51, 0xff, 0xc5, 0x28, 0x9c, 0xce, 0xa0, 0x22, 0x6f, 0x08, 0x97, 0x9d, 0x64, 0xa3, + 0x09, 0x5d, 0x72, 0x7e, 0x74, 0x58, 0xab, 0x48, 0xf4, 0xf5, 0xc4, 0x45, 0x67, 0x16, 0xc6, 0x84, + 0xbd, 0xb4, 0x92, 0x68, 0xd4, 0xe8, 0xeb, 0x21, 0x37, 0xd2, 0x50, 0x34, 0xa9, 0x48, 0xa4, 0x0e, + 0x95, 0xb9, 0x5d, 0xda, 0xda, 0xf3, 0x3a, 0x3b, 0xf7, 0xe8, 0x01, 0xd7, 0x97, 0x2a, 0x8d, 0x17, + 0x99, 0x79, 0xd6, 0x12, 0x70, 0xd6, 0xa5, 0xba, 0xe5, 0xa7, 0x91, 0x90, 0xf7, 0x61, 0xac, 0xe9, + 0xed, 0x74, 0x24, 0x87, 0x02, 0x72, 0xb8, 0x74, 0x74, 0x58, 0x3b, 0x17, 0x72, 0x70, 0x3f, 0x03, + 0x95, 0x80, 0x5c, 0x83, 0x11, 0xcb, 0x6f, 0x53, 0xbe, 0x0c, 0x0b, 0x27, 0x90, 0x80, 0x01, 0xd4, + 0x0d, 0x6d, 0xc4, 0x20, 0x8b, 0x30, 0xca, 0xfe, 0xdc, 0x77, 0xba, 0xd3, 0x45, 0x94, 0xdb, 0x24, + 0x56, 0xf0, 0x11, 0xda, 0xf5, 0x3a, 0x3b, 0xaa, 0x8e, 0xdf, 0xa6, 0xf6, 0xbe, 0xd3, 0xd5, 0xd6, + 0x45, 0x8e, 0x48, 0x36, 0x61, 0x2c, 0x11, 0x04, 0xe1, 0xf4, 0xa8, 0x76, 0x80, 0x94, 0xa4, 0x34, + 0x5e, 0x16, 0xcc, 0xce, 0x47, 0xed, 0x10, 0xc7, 0x76, 0x97, 0xe1, 0xeb, 0x95, 0x51, 0x18, 0x69, + 0x36, 0x48, 0x69, 0xb0, 0x0d, 0x62, 0x9c, 0x68, 0x83, 0xb8, 0x00, 0xa2, 0x91, 0xea, 0xed, 0x1d, + 0xe1, 0xb3, 0x75, 0x6d, 0xf0, 0x00, 0xbb, 0x91, 0x20, 0xe3, 0x9c, 0xe4, 0xdb, 0x59, 0xa2, 0xfd, + 0x9d, 0xf6, 0x8e, 0xb6, 0x9d, 0x15, 0xa3, 0xb2, 0x66, 0x48, 0x44, 0x8d, 0x34, 0xdb, 0x65, 0x33, + 0x24, 0x29, 0x49, 0x33, 0x7c, 0xfc, 0x28, 0x1a, 0xd4, 0x0c, 0x0a, 0x23, 0xb2, 0x02, 0x50, 0x6f, + 0x45, 0xde, 0x43, 0x8a, 0x43, 0x62, 0x4c, 0x6b, 0x88, 0xb9, 0xfa, 0x3d, 0x7a, 0xd0, 0xa4, 0x51, + 0xec, 0x0e, 0x71, 0xd6, 0x41, 0xd4, 0xd4, 0x30, 0xb1, 0x14, 0x0e, 0xa4, 0x0b, 0x67, 0xeb, 0xae, + 0xeb, 0x71, 0x3f, 0xbe, 0xf5, 0x80, 0x8d, 0x5f, 0x17, 0x59, 0x57, 0xb2, 0x59, 0x5f, 0x13, 0xac, + 0x5f, 0x76, 0x62, 0x2a, 0x3b, 0xe2, 0x64, 0xe9, 0x6c, 0xb2, 0x19, 0x9b, 0xab, 0x30, 0xa1, 0x37, + 0xa9, 0xee, 0xc1, 0x56, 0x81, 0x92, 0xd5, 0xac, 0xdb, 0xcd, 0xc5, 0xfa, 0xcd, 0xaa, 0x41, 0xaa, + 0x50, 0x11, 0x5f, 0xb3, 0xf6, 0xec, 0x5b, 0xb7, 0xab, 0x39, 0x0d, 0xf2, 0xd6, 0xcd, 0xd9, 0x6a, + 0xde, 0xfc, 0x23, 0x03, 0x4a, 0xb2, 0x7c, 0xe4, 0x36, 0xe4, 0x9b, 0xcd, 0xc5, 0xd4, 0xb9, 0x65, + 0xb2, 0xf4, 0xf2, 0x45, 0x26, 0x0c, 0x77, 0xd5, 0x45, 0xa6, 0xd9, 0x5c, 0x64, 0x74, 0xeb, 0xcb, + 0x4d, 0xa1, 0xb4, 0x64, 0x0c, 0xd7, 0xa9, 0x01, 0x87, 0x39, 0xb7, 0x21, 0xff, 0xe1, 0xd6, 0xba, + 0xb0, 0x86, 0x32, 0xfa, 0x17, 0xe9, 0x3e, 0x7e, 0xa4, 0x2e, 0x7d, 0x8c, 0xc0, 0xb4, 0x60, 0x4c, + 0x99, 0x5a, 0x5c, 0x89, 0xd8, 0xf7, 0x63, 0xdf, 0x2e, 0xa1, 0x44, 0x30, 0x88, 0x25, 0x52, 0x98, + 0xce, 0xb3, 0xec, 0xb7, 0x9c, 0xb6, 0xd0, 0x46, 0x50, 0xe7, 0x69, 0x33, 0x80, 0xc5, 0xe1, 0xe6, + 0x9f, 0x18, 0x50, 0x5d, 0x0b, 0xfc, 0x87, 0x1e, 0x93, 0xc0, 0xeb, 0xfe, 0x1e, 0xed, 0x6c, 0xde, + 0x24, 0x6f, 0x4a, 0x21, 0xc0, 0x55, 0xb8, 0xf3, 0x8c, 0x0a, 0x85, 0xc0, 0x8f, 0x0e, 0x6b, 0xd0, + 0x3c, 0x08, 0x23, 0xba, 0xcf, 0xd2, 0xa5, 0x20, 0x50, 0x5c, 0xe4, 0x72, 0xc3, 0xbb, 0xdd, 0x9c, + 0xe0, 0x22, 0x57, 0x83, 0x11, 0x2c, 0x8e, 0xe2, 0xf9, 0x30, 0x12, 0x31, 0x80, 0xc5, 0xe1, 0x8a, + 0xc0, 0xfe, 0x8d, 0x5c, 0x5f, 0x1d, 0x66, 0x3f, 0x53, 0xae, 0x2b, 0x7a, 0xe5, 0x86, 0x5a, 0xc4, + 0xbe, 0x0a, 0x67, 0xd2, 0x4d, 0x82, 0xfb, 0x22, 0x75, 0x98, 0xd4, 0xe1, 0x72, 0x8b, 0xe4, 0x7c, + 0x66, 0x5e, 0x9b, 0xb3, 0x56, 0x1a, 0xdf, 0xfc, 0x81, 0x01, 0x65, 0xfc, 0x6b, 0xf5, 0xda, 0x94, + 0x69, 0x36, 0xf5, 0xad, 0xa6, 0x38, 0xc5, 0x52, 0x4f, 0x9a, 0x9c, 0x47, 0xa1, 0x2d, 0x8e, 0xbc, + 0x34, 0x39, 0x12, 0x23, 0x0b, 0x52, 0x7e, 0x66, 0x17, 0x8a, 0x11, 0x1a, 0x93, 0xf2, 0xc3, 0xbd, + 0x30, 0x45, 0x2a, 0x90, 0x59, 0xff, 0xb1, 0x2f, 0xbf, 0x2d, 0xf7, 0x93, 0xb1, 0xff, 0x90, 0xce, + 0xd7, 0xce, 0x46, 0x24, 0x1a, 0x79, 0x13, 0x8a, 0x2c, 0x6b, 0x4b, 0x9e, 0x7c, 0xa0, 0x55, 0x81, + 0x65, 0x0c, 0xb4, 0x23, 0x44, 0x8e, 0x64, 0xfe, 0xcb, 0x5c, 0xba, 0x01, 0x85, 0x16, 0xf0, 0x84, + 0x73, 0xe3, 0x1d, 0x18, 0xa9, 0xb7, 0xdb, 0xfe, 0x23, 0x21, 0x25, 0xe4, 0x36, 0x4d, 0xdc, 0x7e, + 0x7c, 0x85, 0x75, 0x18, 0x8a, 0x76, 0x64, 0xcc, 0x00, 0x64, 0x0e, 0xca, 0xf5, 0xad, 0xe6, 0xd2, + 0xd2, 0xfc, 0xfa, 0xfa, 0xb2, 0xf0, 0x4c, 0x7e, 0x4d, 0xb6, 0x8f, 0xe7, 0xb9, 0x76, 0x14, 0xb5, + 0x07, 0x38, 0x2e, 0x26, 0x74, 0xe4, 0x3d, 0x80, 0x0f, 0x7d, 0xaf, 0x73, 0x9f, 0x46, 0xbb, 0xbe, + 0x2b, 0x2a, 0xcf, 0x54, 0x8a, 0xb1, 0x8f, 0x7d, 0xaf, 0x63, 0xef, 0x23, 0x98, 0x95, 0x3d, 0x41, + 0xb2, 0x94, 0xff, 0xac, 0xa5, 0x1b, 0x7e, 0x84, 0x3a, 0xcc, 0x48, 0xd2, 0xd2, 0xdb, 0x7e, 0x94, + 0x3e, 0x98, 0x91, 0x68, 0xe6, 0xaf, 0xe7, 0x60, 0x82, 0x5b, 0xaa, 0x7c, 0xc0, 0x3c, 0xb7, 0x93, + 0xf1, 0x1d, 0x6d, 0x32, 0x5e, 0x90, 0x0b, 0x83, 0x52, 0xb5, 0xa1, 0xa6, 0xe2, 0x2e, 0x90, 0x7e, + 0x1a, 0x62, 0xc9, 0xfd, 0x94, 0x61, 0x66, 0xe1, 0xcd, 0xe4, 0xc0, 0x39, 0x44, 0x22, 0x1b, 0x45, + 0x61, 0x68, 0x69, 0x3c, 0xcc, 0x5f, 0xcb, 0xc1, 0xb8, 0xa2, 0x4f, 0x3e, 0xb7, 0x0d, 0xff, 0x25, + 0xad, 0xe1, 0xe5, 0xc1, 0x85, 0x52, 0xb3, 0xa1, 0xda, 0xbd, 0x07, 0x53, 0x7d, 0x24, 0x69, 0xb5, + 0xdc, 0x18, 0x46, 0x2d, 0x7f, 0xa3, 0xff, 0x44, 0x9c, 0x7b, 0x31, 0xc7, 0x27, 0xe2, 0xea, 0x11, + 0xfc, 0xb7, 0x72, 0x70, 0x46, 0x7c, 0xd5, 0x7b, 0xae, 0x17, 0xcd, 0xf9, 0x9d, 0x07, 0xde, 0xce, + 0x73, 0xdb, 0x17, 0x75, 0xad, 0x2f, 0x6a, 0x7a, 0x5f, 0x28, 0x15, 0x1c, 0xdc, 0x25, 0xe6, 0xbf, + 0x2a, 0xc1, 0xf4, 0x20, 0x02, 0x66, 0xf6, 0x2b, 0x56, 0x15, 0x9a, 0xfd, 0x29, 0x8b, 0x95, 0xdb, + 0x53, 0x89, 0x07, 0x48, 0x6e, 0x08, 0x0f, 0x90, 0x65, 0xa8, 0x62, 0x56, 0x4d, 0x1a, 0xb2, 0x46, + 0x08, 0x13, 0x17, 0xca, 0xcb, 0x47, 0x87, 0xb5, 0x4b, 0x0e, 0x4b, 0xb3, 0x43, 0x91, 0x68, 0xf7, + 0x02, 0x4f, 0xe1, 0xd1, 0x47, 0x49, 0xbe, 0x6b, 0xc0, 0x04, 0x02, 0x17, 0x1e, 0xd2, 0x4e, 0x84, + 0xcc, 0x0a, 0xe2, 0x90, 0x26, 0xbe, 0xa9, 0xd2, 0x8c, 0x02, 0xaf, 0xb3, 0x83, 0x1b, 0x49, 0x61, + 0x63, 0x9b, 0xb5, 0xc2, 0x9f, 0x1f, 0xd6, 0xde, 0xfd, 0x24, 0xb7, 0x5f, 0x04, 0xab, 0x90, 0x19, + 0xf2, 0xbc, 0xa0, 0x14, 0xb3, 0x4d, 0x15, 0x33, 0x55, 0x22, 0xf2, 0x93, 0x70, 0x7e, 0xa1, 0xe3, + 0x6c, 0xb7, 0xe9, 0x9c, 0xdf, 0x89, 0xbc, 0x4e, 0xcf, 0xef, 0x85, 0x0d, 0xa7, 0xb5, 0xd7, 0xeb, + 0x86, 0x62, 0xb3, 0x13, 0x6b, 0xde, 0x8a, 0x13, 0xed, 0x6d, 0x9e, 0xaa, 0xb0, 0x1c, 0xc4, 0x80, + 0x2c, 0xc2, 0x14, 0x4f, 0xaa, 0xf7, 0x22, 0xbf, 0xd9, 0x72, 0xda, 0x5e, 0x67, 0x07, 0xf7, 0x40, + 0x4b, 0x8d, 0x8b, 0xcc, 0xb6, 0x74, 0x7a, 0x91, 0x6f, 0x87, 0x1c, 0xae, 0xf0, 0xeb, 0x27, 0x22, + 0x4b, 0x30, 0x69, 0x51, 0xc7, 0xbd, 0xef, 0x3c, 0x9e, 0x73, 0xba, 0x4e, 0xcb, 0x8b, 0x0e, 0xd0, + 0x32, 0xcb, 0x37, 0x6a, 0x47, 0x87, 0xb5, 0x17, 0x02, 0xea, 0xb8, 0xf6, 0xbe, 0xf3, 0xd8, 0x6e, + 0x89, 0x44, 0x85, 0x59, 0x9a, 0x2e, 0x66, 0xe5, 0x75, 0x62, 0x56, 0xe5, 0x34, 0x2b, 0xaf, 0x33, + 0x98, 0x55, 0x42, 0x27, 0x59, 0xad, 0x3b, 0xc1, 0x0e, 0x8d, 0xf8, 0x26, 0x21, 0x5c, 0x36, 0xae, + 0x1a, 0x0a, 0xab, 0x08, 0xd3, 0x6c, 0xdc, 0x30, 0x4c, 0xb3, 0x52, 0xe8, 0xd8, 0xc8, 0xdb, 0x0a, + 0xbc, 0x88, 0xaa, 0x35, 0x1c, 0xc3, 0x62, 0x61, 0xfb, 0xe3, 0x36, 0xe9, 0xa0, 0x2a, 0xf6, 0x51, + 0x26, 0xdc, 0x94, 0x4a, 0x56, 0xfa, 0xb8, 0x65, 0xd7, 0xb2, 0x8f, 0x32, 0xe6, 0xa6, 0xd6, 0x73, + 0x1c, 0xeb, 0xa9, 0x70, 0x1b, 0x50, 0xd1, 0x3e, 0x4a, 0xb2, 0xc2, 0x1a, 0x2d, 0xa2, 0x1d, 0x36, + 0xa2, 0xc5, 0x26, 0xe9, 0x04, 0x16, 0xed, 0x55, 0x61, 0x53, 0x57, 0x03, 0x99, 0x6c, 0x67, 0x6c, + 0x99, 0xa6, 0x89, 0x3f, 0x2c, 0x94, 0x46, 0xaa, 0x45, 0xab, 0xca, 0x87, 0x7c, 0xc4, 0x06, 0x0e, + 0xca, 0x62, 0xf3, 0x77, 0x73, 0x70, 0x41, 0x8a, 0x63, 0x1a, 0x3d, 0xf2, 0x83, 0x3d, 0xaf, 0xb3, + 0xf3, 0x9c, 0x4b, 0xd5, 0x3b, 0x9a, 0x54, 0x7d, 0x35, 0xb5, 0xc2, 0xa5, 0x6a, 0x79, 0x8c, 0x68, + 0xfd, 0xe3, 0x22, 0xbc, 0x78, 0x2c, 0x15, 0xf9, 0x88, 0xad, 0x82, 0x1e, 0xed, 0x44, 0x4b, 0x6e, + 0x9b, 0x32, 0x33, 0xcc, 0xef, 0x45, 0x62, 0x33, 0xfb, 0x95, 0xa3, 0xc3, 0xda, 0x69, 0x7e, 0x81, + 0xc3, 0xf6, 0xdc, 0x36, 0xb5, 0x23, 0x9e, 0xac, 0x75, 0x53, 0x3f, 0x35, 0x63, 0x19, 0x5f, 0x27, + 0x5b, 0xea, 0x44, 0x34, 0x78, 0xe8, 0x70, 0x3f, 0x76, 0xc1, 0x72, 0x8f, 0xd2, 0xae, 0xed, 0xb0, + 0x54, 0xdb, 0x13, 0xc9, 0x3a, 0xcb, 0x3e, 0x6a, 0x72, 0x47, 0x61, 0x39, 0xc7, 0x8c, 0x83, 0xfb, + 0xce, 0x63, 0xa1, 0xf1, 0xe2, 0xfe, 0xaa, 0xc2, 0x92, 0x3b, 0xd1, 0xed, 0x3b, 0x8f, 0xad, 0x7e, + 0x12, 0xf2, 0x0d, 0x38, 0x2b, 0x04, 0x37, 0x13, 0x62, 0x81, 0xdf, 0x96, 0x35, 0x2e, 0x20, 0xaf, + 0xd7, 0x8f, 0x0e, 0x6b, 0xe7, 0x85, 0xd8, 0xb7, 0x5b, 0x1c, 0x23, 0xb3, 0xd6, 0xd9, 0x5c, 0xc8, + 0x3a, 0x5b, 0xc8, 0x52, 0xcd, 0x71, 0x9f, 0x86, 0xa1, 0xb3, 0x23, 0xb5, 0x63, 0x7e, 0xa2, 0xa4, + 0x34, 0xa6, 0xbd, 0xcf, 0xd3, 0xad, 0x81, 0x94, 0x64, 0x11, 0x26, 0xb6, 0xe8, 0xb6, 0xda, 0x3f, + 0xc5, 0x78, 0x8a, 0x57, 0x1f, 0xd1, 0xed, 0xc1, 0x9d, 0x93, 0xa2, 0x23, 0x1e, 0x4c, 0xad, 0x05, + 0xfe, 0xe3, 0x03, 0x66, 0xea, 0xd1, 0x0e, 0x0d, 0xd0, 0x7b, 0x6b, 0x14, 0xb7, 0xab, 0xa6, 0x13, + 0xcd, 0x52, 0x4f, 0x6f, 0xbc, 0x7c, 0x74, 0x58, 0x7b, 0xb1, 0xcb, 0xc0, 0x76, 0x5b, 0xc0, 0xed, + 0xd4, 0x6d, 0xae, 0x7e, 0xae, 0xe4, 0xa7, 0x61, 0xd2, 0xf2, 0x7b, 0x91, 0xd7, 0xd9, 0x69, 0x46, + 0x81, 0x13, 0xd1, 0x1d, 0x2e, 0xc8, 0x13, 0x37, 0xb1, 0x54, 0x2a, 0xdf, 0x98, 0x0e, 0x38, 0xd0, + 0x0e, 0x05, 0x54, 0x93, 0xa4, 0x3a, 0x01, 0xf9, 0x29, 0x98, 0xe0, 0x3e, 0x33, 0x71, 0x06, 0x65, + 0xcd, 0x5b, 0x5a, 0x4f, 0xdc, 0xbc, 0x89, 0x56, 0xcd, 0x05, 0xee, 0x7b, 0x93, 0x95, 0x41, 0x8a, + 0x9b, 0x79, 0x68, 0x40, 0x35, 0xcd, 0x83, 0x7c, 0x05, 0xca, 0xf5, 0x1d, 0xda, 0x61, 0x7d, 0xb3, + 0x2b, 0xae, 0x43, 0xc9, 0xcb, 0x99, 0x31, 0x5c, 0x27, 0x12, 0xce, 0x9d, 0x2c, 0x91, 0xf5, 0xb5, + 0xb2, 0x4b, 0xb4, 0x78, 0xca, 0x4a, 0x98, 0x11, 0x17, 0x2a, 0xd8, 0x8a, 0x6b, 0x94, 0xb2, 0xe5, + 0x5d, 0x6c, 0x95, 0xbc, 0xac, 0x76, 0x8b, 0x48, 0x4a, 0xf1, 0x47, 0xf7, 0x1c, 0xde, 0x3f, 0x5d, + 0x8e, 0xa0, 0x65, 0xa1, 0x71, 0x6d, 0x00, 0x94, 0xe2, 0x0a, 0x5e, 0x80, 0xf3, 0x03, 0xca, 0x6c, + 0x7e, 0xd7, 0x80, 0x8b, 0x83, 0xb3, 0x24, 0xbf, 0x64, 0xc0, 0x19, 0x24, 0x9d, 0xf3, 0x3b, 0x1d, + 0xda, 0x8a, 0x70, 0x26, 0x48, 0xfb, 0x3e, 0xdf, 0x58, 0x3d, 0x3a, 0xac, 0x5d, 0xe6, 0x35, 0x6e, + 0xc5, 0x08, 0x76, 0xca, 0xd4, 0xff, 0x5f, 0x87, 0xb5, 0xd7, 0x0f, 0x9c, 0xfd, 0xf6, 0x97, 0xcc, + 0x93, 0x30, 0x4d, 0x2b, 0x33, 0x33, 0xf3, 0xb7, 0x73, 0x30, 0x2d, 0xe6, 0xa1, 0x45, 0x5b, 0x7e, + 0xe0, 0x3e, 0xff, 0x72, 0x7f, 0x41, 0x93, 0xfb, 0xaf, 0xc4, 0x9e, 0x6d, 0x59, 0x95, 0x3c, 0x46, + 0xec, 0xff, 0x53, 0x03, 0x2e, 0x1d, 0x47, 0xc4, 0x5a, 0x27, 0xf6, 0xdc, 0x2c, 0xf7, 0x79, 0x68, + 0x76, 0xe1, 0x34, 0x76, 0x3e, 0x9e, 0x1c, 0x84, 0x8b, 0x7e, 0x18, 0xe1, 0xf6, 0x6d, 0x4e, 0xf3, + 0x24, 0x69, 0xf8, 0x7e, 0x1b, 0x17, 0xfa, 0xc6, 0x1b, 0x6c, 0x3d, 0xff, 0xf3, 0xc3, 0x1a, 0x30, + 0xd0, 0x2a, 0x9e, 0x46, 0x33, 0xa5, 0x8f, 0x0f, 0x49, 0x3c, 0x98, 0x08, 0x6d, 0x74, 0xff, 0xd9, + 0xa3, 0x07, 0xa1, 0x95, 0xc5, 0x1a, 0xb7, 0xe8, 0xea, 0xbd, 0x68, 0x77, 0x2d, 0xa0, 0x0f, 0x68, + 0x40, 0x3b, 0x2d, 0xfa, 0x19, 0xdb, 0xa2, 0xd3, 0x2b, 0x37, 0x94, 0x7d, 0xfa, 0xff, 0x8a, 0x70, + 0x26, 0x8b, 0x8c, 0xb5, 0x8b, 0x62, 0x12, 0xa5, 0xef, 0x7e, 0xff, 0x92, 0x01, 0x95, 0x26, 0x6d, + 0xf9, 0x1d, 0xf7, 0x8e, 0xd3, 0x8a, 0x7c, 0xe9, 0x93, 0x63, 0xf3, 0xa5, 0x8d, 0xc1, 0xed, 0x07, + 0x98, 0xa0, 0x6d, 0x0d, 0x7d, 0x79, 0x38, 0x4b, 0xa4, 0xe5, 0xa3, 0xab, 0x73, 0xc4, 0xc6, 0x64, + 0x92, 0x05, 0x1e, 0x6b, 0x69, 0x99, 0x92, 0x06, 0x8c, 0x8b, 0xe9, 0xea, 0xab, 0x8e, 0xbb, 0x97, + 0x8e, 0x0e, 0x6b, 0xd3, 0x2d, 0x99, 0x90, 0xde, 0x22, 0xd2, 0x49, 0xc8, 0x2d, 0xc8, 0x6f, 0xcc, + 0xde, 0x11, 0x7d, 0x20, 0x5d, 0x1c, 0x37, 0x66, 0xef, 0xe0, 0x66, 0x07, 0x53, 0x20, 0xc7, 0x7b, + 0xb3, 0x0f, 0xd4, 0x4d, 0xf0, 0x8d, 0xd9, 0x3b, 0x64, 0x15, 0xa6, 0x2c, 0xfa, 0x33, 0x3d, 0x2f, + 0xa0, 0x62, 0x02, 0xdc, 0xbf, 0x53, 0xc7, 0xbe, 0x28, 0xf1, 0x85, 0x2c, 0xe0, 0x89, 0xd2, 0xb8, + 0xb3, 0xf7, 0x1f, 0xa8, 0xf7, 0x1d, 0xfb, 0x69, 0xc9, 0x2f, 0xc0, 0xd9, 0x79, 0x2f, 0x14, 0x65, + 0xe6, 0xbb, 0xcf, 0x2e, 0x1e, 0x44, 0x17, 0x07, 0x4c, 0x87, 0x2f, 0x66, 0x4e, 0x87, 0x97, 0xdd, + 0x98, 0x89, 0xcd, 0xb7, 0xb6, 0xdd, 0xb4, 0xc7, 0x73, 0x76, 0x3e, 0xe4, 0x63, 0x98, 0xc0, 0xed, + 0x3e, 0xdc, 0x90, 0x47, 0x27, 0xf8, 0xd1, 0x01, 0x39, 0x7f, 0x3e, 0x33, 0xe7, 0x8b, 0xb8, 0x7b, + 0x68, 0xe3, 0xb6, 0x3e, 0x3a, 0xcc, 0x6b, 0x46, 0xa2, 0xc6, 0x99, 0x7c, 0x08, 0x93, 0x42, 0xeb, + 0x58, 0x7d, 0xb0, 0xbe, 0x4b, 0xe7, 0x9d, 0x03, 0xe1, 0x85, 0x82, 0x06, 0x80, 0x50, 0x55, 0x6c, + 0xff, 0x81, 0x1d, 0xed, 0x52, 0xdb, 0x75, 0xb4, 0xf5, 0x39, 0x45, 0x48, 0x7e, 0x0e, 0xc6, 0x96, + 0x7d, 0x3c, 0x79, 0x44, 0x51, 0x53, 0x46, 0x3e, 0x5f, 0xc5, 0xfb, 0xce, 0x1c, 0x9c, 0xd2, 0x22, + 0x7e, 0x74, 0x58, 0x7b, 0xe7, 0x49, 0x47, 0xa1, 0x92, 0x81, 0xa5, 0xe6, 0x46, 0xe6, 0xa0, 0xb4, + 0x45, 0xb7, 0x59, 0x6d, 0xd3, 0x77, 0xf5, 0x24, 0x98, 0xcb, 0x8b, 0x47, 0xe2, 0x4b, 0x3d, 0xd6, + 0x93, 0x18, 0xe6, 0x1f, 0x1b, 0x38, 0x02, 0xc9, 0x75, 0xf4, 0x04, 0x8c, 0xef, 0x10, 0xe0, 0xd6, + 0x82, 0xd3, 0xed, 0xea, 0xb7, 0x00, 0x38, 0x0a, 0x79, 0x03, 0x8a, 0x77, 0x9c, 0x16, 0x8d, 0xe4, + 0x86, 0x35, 0x22, 0x3f, 0x40, 0x88, 0xba, 0x0f, 0xc1, 0x71, 0xc8, 0x57, 0xe0, 0xcc, 0x3c, 0x7d, + 0xe8, 0xb5, 0x68, 0x3d, 0x8a, 0x68, 0xc8, 0x6b, 0x3b, 0x57, 0xe7, 0x27, 0xbb, 0xe5, 0xc6, 0xab, + 0x6c, 0x1d, 0x75, 0x31, 0xdd, 0x76, 0x12, 0x04, 0xbb, 0xe5, 0xa8, 0xbc, 0x32, 0x39, 0x98, 0xff, + 0xd3, 0x48, 0x5a, 0x80, 0xbc, 0x0e, 0x05, 0x6b, 0x2d, 0x2e, 0x3f, 0x3f, 0xb4, 0x4d, 0x15, 0x1f, + 0x11, 0xc8, 0xd7, 0xe0, 0xac, 0xc2, 0x07, 0x07, 0x07, 0x75, 0x59, 0x81, 0x78, 0x65, 0x5e, 0xc3, + 0x53, 0x3a, 0xa5, 0x24, 0x0e, 0xc7, 0x48, 0x95, 0x28, 0x9b, 0x07, 0xab, 0xac, 0x92, 0x30, 0x4f, + 0x3b, 0x1e, 0xe7, 0xad, 0x54, 0x56, 0xe5, 0xed, 0x22, 0x42, 0xba, 0xb2, 0x59, 0x1c, 0x3e, 0x2c, + 0x94, 0x0a, 0xd5, 0x11, 0xf3, 0xaf, 0x0c, 0x25, 0x70, 0xc4, 0x73, 0xba, 0x7a, 0xdc, 0xd6, 0x56, + 0x8f, 0x33, 0x82, 0x34, 0xae, 0x15, 0x4b, 0xcb, 0x5c, 0xf1, 0x27, 0x61, 0x5c, 0x43, 0x42, 0x9f, + 0xe7, 0x8d, 0x90, 0x06, 0x7c, 0x83, 0xf8, 0xb3, 0xe5, 0xf3, 0x1c, 0xd7, 0x6b, 0x28, 0x57, 0xd6, + 0xbf, 0x30, 0x60, 0x32, 0x45, 0xc1, 0x5a, 0x83, 0x81, 0xd4, 0xd6, 0xe8, 0x85, 0x34, 0xb0, 0x10, + 0xca, 0x3d, 0x24, 0x97, 0x75, 0x0f, 0xc9, 0xb6, 0xc5, 0x60, 0xe4, 0xcb, 0x30, 0xb2, 0x81, 0xe6, + 0x9c, 0xee, 0x64, 0x13, 0xf3, 0xc7, 0x44, 0x3e, 0xc3, 0x7a, 0xec, 0xaf, 0x2a, 0x20, 0x30, 0x8d, + 0x34, 0x61, 0x74, 0x2e, 0xa0, 0x18, 0x22, 0xa2, 0x30, 0xfc, 0x69, 0x68, 0x8b, 0x93, 0xa4, 0x4f, + 0x43, 0x05, 0x27, 0xf3, 0xb7, 0x72, 0x40, 0x92, 0x3a, 0xd2, 0x56, 0x40, 0xa3, 0xf0, 0xb9, 0xed, + 0xf4, 0x0f, 0xb4, 0x4e, 0x7f, 0xb1, 0xaf, 0xd3, 0x79, 0xf5, 0x86, 0xea, 0xfb, 0x3f, 0x31, 0xe0, + 0x5c, 0x36, 0x21, 0x79, 0x05, 0x8a, 0xab, 0xeb, 0x6b, 0xd2, 0x4f, 0x4b, 0x54, 0xc5, 0xef, 0xa2, + 0x96, 0x6a, 0x89, 0x24, 0xf2, 0x26, 0x14, 0x3f, 0xb2, 0xe6, 0xd8, 0xf2, 0xa5, 0xdc, 0x55, 0xfa, + 0x99, 0xc0, 0x6e, 0xe9, 0xf6, 0xaf, 0x40, 0x52, 0xfb, 0x36, 0xff, 0xcc, 0xfa, 0xf6, 0x5b, 0x39, + 0x98, 0xac, 0xb7, 0x5a, 0x34, 0x0c, 0x99, 0x72, 0x42, 0xc3, 0xe8, 0xb9, 0xed, 0xd8, 0x6c, 0x0f, + 0x2c, 0xad, 0x6e, 0x43, 0xf5, 0xea, 0x9f, 0x1a, 0x70, 0x56, 0x52, 0x3d, 0xf4, 0xe8, 0xa3, 0xf5, + 0xdd, 0x80, 0x86, 0xbb, 0x7e, 0xdb, 0x1d, 0xf6, 0xd6, 0x1d, 0xae, 0xd2, 0x5e, 0x3b, 0xa2, 0x81, + 0x7a, 0x5a, 0xf0, 0x00, 0x21, 0xda, 0x2a, 0x8d, 0x10, 0x32, 0x03, 0xa3, 0xf5, 0x6e, 0x37, 0xf0, + 0x1f, 0xf2, 0x69, 0x3f, 0x2e, 0x0e, 0x87, 0x39, 0x48, 0x3b, 0x4c, 0xe6, 0x20, 0x56, 0x8c, 0x79, + 0xda, 0xe1, 0xee, 0xe5, 0xe3, 0xbc, 0x18, 0x2e, 0xed, 0xa8, 0xda, 0x12, 0xa6, 0x9b, 0xdf, 0x2c, + 0x40, 0x45, 0xad, 0x08, 0x31, 0xa1, 0xc8, 0x7d, 0x85, 0x54, 0x9f, 0x0d, 0x07, 0x21, 0x96, 0x48, + 0x49, 0x5c, 0xb0, 0x72, 0x27, 0xba, 0x60, 0x6d, 0xc1, 0xf8, 0x5a, 0xe0, 0x77, 0xfd, 0x90, 0xba, + 0x3c, 0xca, 0x0f, 0x97, 0x5a, 0xa7, 0x63, 0xbf, 0x64, 0xde, 0xe6, 0x2c, 0x89, 0xab, 0xe6, 0x5d, + 0x81, 0x6d, 0xa7, 0x63, 0x00, 0xe9, 0x7c, 0xf8, 0x69, 0x8b, 0x13, 0x8a, 0xbb, 0x1b, 0xf1, 0x69, + 0x0b, 0x83, 0xe8, 0xa7, 0x2d, 0x0c, 0xa2, 0x4e, 0x8b, 0x91, 0x67, 0x35, 0x2d, 0xc8, 0x6f, 0x19, + 0x30, 0x56, 0xef, 0x74, 0x84, 0x0b, 0x96, 0xbc, 0x2a, 0x7f, 0x36, 0x39, 0x71, 0xe1, 0x3e, 0xba, + 0xfc, 0xc0, 0xe5, 0xeb, 0xe2, 0xc0, 0xe5, 0x9d, 0x4f, 0x74, 0xe0, 0xb2, 0x1e, 0x38, 0x5e, 0x14, + 0xe2, 0xc9, 0x7a, 0x92, 0xa1, 0xea, 0x87, 0xad, 0x94, 0x83, 0xbc, 0x03, 0xd5, 0x78, 0x3c, 0x2e, + 0x75, 0x5c, 0xfa, 0x98, 0x72, 0x8f, 0xb5, 0x71, 0x7e, 0x9f, 0x53, 0x3b, 0x49, 0x4a, 0x23, 0x9a, + 0xdf, 0x32, 0xe0, 0x9c, 0x3a, 0x20, 0x9a, 0xbd, 0xed, 0x7d, 0x0f, 0x4d, 0x11, 0x72, 0x03, 0xca, + 0xa2, 0xbf, 0x62, 0x45, 0xae, 0x3f, 0x34, 0x54, 0x82, 0x42, 0x16, 0x58, 0x17, 0x31, 0x1e, 0xc2, + 0x6e, 0x3f, 0x9d, 0x9a, 0x6e, 0x2c, 0xa9, 0x31, 0x2d, 0x1a, 0xbb, 0x1a, 0xe0, 0xb7, 0xde, 0x77, + 0x0c, 0x62, 0xbe, 0x0f, 0x53, 0x7a, 0x29, 0x9b, 0x14, 0x2f, 0x11, 0xca, 0xaa, 0x19, 0xd9, 0x55, + 0x93, 0xe9, 0xe6, 0x16, 0x90, 0x3e, 0xfa, 0x10, 0x4f, 0x0d, 0x69, 0x24, 0x4f, 0xb5, 0xe5, 0xde, + 0x63, 0x1f, 0x62, 0x1c, 0x24, 0x6d, 0x4c, 0x6d, 0x6e, 0x24, 0x35, 0xff, 0xba, 0x0c, 0xa7, 0x33, + 0x44, 0xc7, 0x09, 0x4b, 0x7b, 0x4d, 0x9f, 0x3c, 0xe5, 0xd8, 0x3d, 0x43, 0x4e, 0x99, 0xf7, 0x65, + 0x40, 0xac, 0x63, 0xa6, 0xca, 0x71, 0x51, 0xb2, 0x3e, 0x8d, 0xe5, 0x5d, 0xf5, 0xa0, 0x1a, 0x79, + 0x66, 0x1e, 0x54, 0x0d, 0x18, 0x17, 0xb5, 0x12, 0x53, 0xb9, 0x98, 0x98, 0xe8, 0x01, 0x4f, 0xb0, + 0xfb, 0xa6, 0xb4, 0x4e, 0xc2, 0x79, 0x84, 0x7e, 0xfb, 0x21, 0x15, 0x3c, 0x46, 0x55, 0x1e, 0x98, + 0x90, 0xc9, 0x43, 0x21, 0x21, 0xff, 0xc4, 0x00, 0x22, 0x20, 0xea, 0x7c, 0x2e, 0x1d, 0x37, 0x9f, + 0xdd, 0x67, 0x33, 0x9f, 0x5f, 0x94, 0x65, 0xcc, 0x9e, 0xd7, 0x19, 0xc5, 0x22, 0xff, 0xc8, 0x80, + 0x29, 0xee, 0xc6, 0xa3, 0x16, 0xb6, 0x7c, 0x5c, 0x61, 0x5b, 0xcf, 0xa6, 0xb0, 0x97, 0x42, 0xcc, + 0x76, 0x40, 0x59, 0xfb, 0x0b, 0x45, 0x7e, 0x12, 0x20, 0x9e, 0x51, 0xd2, 0x5d, 0xf4, 0x52, 0x86, + 0x14, 0x88, 0x91, 0x92, 0x6b, 0xb2, 0x51, 0x4c, 0xa7, 0x3a, 0x58, 0x25, 0xdc, 0xc8, 0x2f, 0xc0, + 0x19, 0x36, 0x5f, 0x62, 0x88, 0x70, 0x3a, 0x9c, 0x1e, 0xc3, 0x5c, 0xbe, 0x30, 0x78, 0x69, 0xbf, + 0x91, 0x45, 0xc6, 0x2f, 0xed, 0x24, 0x41, 0x13, 0xa2, 0x7d, 0xd5, 0xe4, 0xcb, 0xa2, 0x40, 0xef, + 0x62, 0x2c, 0x7d, 0x38, 0x5d, 0xc1, 0x3c, 0x33, 0xe5, 0xdb, 0x05, 0x39, 0x17, 0xb8, 0x7c, 0x0b, + 0xf5, 0x5b, 0x37, 0x08, 0x22, 0x1f, 0x01, 0x69, 0xf6, 0x76, 0x76, 0x68, 0x18, 0x51, 0x97, 0xc3, + 0x68, 0x10, 0x4e, 0x8f, 0xa3, 0x7c, 0xc0, 0x2d, 0xa3, 0x50, 0xa6, 0xda, 0x81, 0x4c, 0x56, 0x07, + 0x49, 0x3f, 0xf1, 0xc5, 0x6d, 0xb8, 0x30, 0xb0, 0x9a, 0x19, 0x37, 0x6a, 0x66, 0xf4, 0x1b, 0x35, + 0x17, 0x06, 0x89, 0xc3, 0x50, 0xbd, 0x55, 0xf3, 0xfb, 0x46, 0x4a, 0xfe, 0x09, 0x65, 0x85, 0xc7, + 0x0e, 0x1c, 0xb4, 0x40, 0xe4, 0x30, 0x9c, 0x02, 0x97, 0x90, 0xb9, 0x44, 0x49, 0x62, 0x12, 0x52, + 0x95, 0xb0, 0x28, 0x2b, 0x9f, 0x52, 0x14, 0x9a, 0xff, 0xdc, 0x00, 0xc2, 0x4b, 0x38, 0xe7, 0x74, + 0x9d, 0x6d, 0xaf, 0xed, 0x45, 0x1e, 0x0d, 0xc9, 0x3d, 0xa8, 0x0a, 0x16, 0xce, 0x76, 0x9b, 0xaa, + 0xce, 0x72, 0xe2, 0x34, 0x3d, 0x4e, 0xb3, 0xd3, 0x6a, 0x4d, 0x1f, 0xe1, 0x80, 0xce, 0xcb, 0x3d, + 0x45, 0xe7, 0x99, 0x3f, 0x34, 0xe0, 0x42, 0x7f, 0xb1, 0x45, 0xce, 0x71, 0xe3, 0x19, 0x27, 0x34, + 0x5e, 0x56, 0x2d, 0x73, 0xb8, 0x0d, 0xf9, 0xcc, 0x6a, 0x99, 0x4f, 0x76, 0x35, 0x9f, 0xbc, 0x96, + 0xbf, 0x9a, 0x83, 0xca, 0x5a, 0xbb, 0xb7, 0xe3, 0x75, 0xe6, 0x9d, 0xc8, 0x79, 0x6e, 0x4d, 0x8a, + 0xb7, 0x35, 0x93, 0x22, 0x76, 0x8f, 0x8b, 0x2b, 0x36, 0x5c, 0x1c, 0x37, 0x03, 0x26, 0x13, 0x12, + 0x3e, 0x4b, 0x17, 0xa1, 0xc0, 0x3e, 0x84, 0x86, 0x72, 0xb9, 0x8f, 0x31, 0x62, 0xdd, 0x88, 0xff, + 0x09, 0x25, 0x5f, 0x8f, 0x9e, 0x87, 0x1c, 0x2e, 0x7e, 0x91, 0x07, 0xbf, 0x7a, 0xf2, 0x40, 0x9d, + 0xff, 0xcc, 0x80, 0x6a, 0xba, 0x26, 0xe4, 0x1e, 0x8c, 0x32, 0x4e, 0x5e, 0x1c, 0x48, 0xeb, 0xd5, + 0x01, 0x75, 0xbe, 0x21, 0xd0, 0x78, 0xf1, 0xb0, 0xf1, 0x29, 0x87, 0x58, 0x92, 0xc3, 0x45, 0x0b, + 0x2a, 0x2a, 0x56, 0x46, 0xe9, 0xde, 0xd0, 0x45, 0xd3, 0xb9, 0xec, 0x76, 0x50, 0x4b, 0xfd, 0x7b, + 0x5a, 0xa9, 0x85, 0x50, 0x1a, 0x36, 0x22, 0x22, 0xde, 0x0f, 0xe4, 0x71, 0x5f, 0xd4, 0x71, 0x26, + 0x43, 0xc4, 0xe8, 0xf7, 0x03, 0x39, 0x8c, 0xd9, 0x22, 0x3c, 0x3f, 0x31, 0xce, 0xd0, 0x16, 0xe9, + 0x22, 0x44, 0xd5, 0x67, 0x39, 0x8e, 0xf9, 0x77, 0xf3, 0x70, 0x2e, 0x29, 0x1e, 0x8f, 0x0f, 0xb9, + 0xe6, 0x04, 0xce, 0x7e, 0x78, 0xc2, 0x0c, 0xb8, 0xda, 0x57, 0x34, 0xbc, 0xff, 0x2e, 0x8b, 0xa6, + 0x14, 0xc8, 0x4c, 0x15, 0x08, 0x8d, 0x38, 0x5e, 0x20, 0x59, 0x0c, 0x72, 0x0f, 0xf2, 0x4d, 0x1a, + 0x89, 0x5b, 0xb2, 0x57, 0xfa, 0x5a, 0x55, 0x2d, 0xd7, 0x8d, 0x26, 0x8d, 0x78, 0x27, 0xf2, 0x8b, + 0x06, 0x54, 0x73, 0xfc, 0x67, 0xea, 0xf8, 0x16, 0x14, 0x17, 0x1e, 0x77, 0x69, 0x2b, 0x12, 0x97, + 0x63, 0xaf, 0x1d, 0xcf, 0x8f, 0xe3, 0x2a, 0x57, 0x70, 0x29, 0x02, 0xd4, 0xc6, 0xe2, 0x28, 0x17, + 0x6f, 0x43, 0x49, 0x66, 0xfe, 0x44, 0x57, 0x49, 0xdf, 0x86, 0x31, 0x25, 0x93, 0x27, 0x1a, 0xf4, + 0x7f, 0x6d, 0x40, 0x91, 0x09, 0xbd, 0xcd, 0xb7, 0x9e, 0x53, 0x89, 0x74, 0x4b, 0x93, 0x48, 0x53, + 0xca, 0x9d, 0x27, 0x9c, 0x97, 0x6f, 0x9d, 0x20, 0x8b, 0x0e, 0x0d, 0x80, 0x04, 0x99, 0xdc, 0x85, + 0x51, 0x7e, 0x90, 0x23, 0x83, 0xaf, 0xaa, 0x97, 0xa8, 0x44, 0x4a, 0xa2, 0xe5, 0xf8, 0xdd, 0xb4, + 0x5a, 0x28, 0xa9, 0xc9, 0x7c, 0xe2, 0x68, 0xae, 0xde, 0xda, 0x65, 0x6c, 0xe6, 0xfc, 0x0e, 0xbf, + 0x54, 0x13, 0x2a, 0x41, 0xca, 0xb2, 0x3d, 0xce, 0xeb, 0x62, 0x63, 0x23, 0x7f, 0x1c, 0x93, 0x73, + 0x82, 0x49, 0xf6, 0x9e, 0xc7, 0xb7, 0xc7, 0xf8, 0x35, 0x15, 0x59, 0xb0, 0xf7, 0xa0, 0x72, 0xc7, + 0x0f, 0x1e, 0x39, 0x81, 0x8b, 0x87, 0xfc, 0x58, 0xcd, 0x12, 0xfa, 0xf9, 0x8f, 0x3f, 0xe0, 0x70, + 0x1b, 0x1d, 0x04, 0x7e, 0x74, 0x58, 0x2b, 0x34, 0x7c, 0xbf, 0x6d, 0x69, 0xe8, 0x64, 0x15, 0xc6, + 0xef, 0x3b, 0x8f, 0xc5, 0x79, 0xdd, 0xfa, 0xfa, 0xb2, 0x70, 0x34, 0xba, 0x76, 0x74, 0x58, 0xbb, + 0xb0, 0xef, 0x3c, 0x8e, 0xcf, 0xf9, 0x06, 0xfb, 0xc2, 0xeb, 0xf4, 0xc4, 0x83, 0x89, 0x35, 0x3f, + 0x88, 0x44, 0x26, 0x4c, 0xa7, 0xcd, 0x0f, 0x38, 0x6e, 0x9b, 0xc9, 0x3c, 0x6e, 0xbb, 0xc0, 0x14, + 0x79, 0xfb, 0x41, 0x4c, 0xae, 0xdd, 0xad, 0xd4, 0x18, 0x93, 0xf7, 0x60, 0x6a, 0x8e, 0x06, 0x91, + 0xf7, 0xc0, 0x6b, 0x39, 0x11, 0xbd, 0xe3, 0x07, 0xfb, 0x4e, 0x24, 0x36, 0x54, 0xd0, 0xa0, 0x6e, + 0x51, 0xce, 0x69, 0xdf, 0x89, 0xac, 0x7e, 0x4c, 0xf2, 0xb5, 0x2c, 0xd7, 0xad, 0x11, 0xac, 0xfe, + 0x9b, 0x4c, 0x29, 0xc8, 0x70, 0xdd, 0x1a, 0xd0, 0x04, 0x19, 0x4e, 0x5c, 0x3b, 0xc7, 0x1d, 0x7b, + 0x96, 0x1a, 0x37, 0xc5, 0x11, 0xec, 0xc9, 0xc7, 0x9a, 0x71, 0xbf, 0x0d, 0x38, 0xde, 0x9c, 0x85, + 0x7c, 0x63, 0xed, 0x0e, 0x6e, 0x91, 0x88, 0x63, 0x46, 0xda, 0xd9, 0x75, 0x3a, 0x2d, 0xd4, 0x65, + 0x84, 0xef, 0x82, 0x2a, 0xf0, 0x1a, 0x6b, 0x77, 0x88, 0x03, 0xa7, 0xd7, 0x68, 0xb0, 0xef, 0x45, + 0x5f, 0xb9, 0x79, 0x53, 0xe9, 0xa8, 0x12, 0x16, 0x6d, 0x46, 0x14, 0xad, 0xd6, 0x45, 0x14, 0xfb, + 0xf1, 0xcd, 0x9b, 0x99, 0xdd, 0x11, 0x17, 0x2c, 0x8b, 0x17, 0x59, 0x80, 0x89, 0xfb, 0xce, 0xe3, + 0xc4, 0xe5, 0x24, 0x14, 0xce, 0xa3, 0x2f, 0xca, 0x81, 0x95, 0xf8, 0xab, 0xa8, 0xf3, 0x2d, 0x45, + 0x44, 0xde, 0x85, 0xb1, 0x64, 0x78, 0x85, 0x78, 0x14, 0x99, 0xe7, 0x3e, 0xb1, 0xca, 0xe0, 0xd4, + 0xf6, 0x92, 0x14, 0x74, 0xb2, 0x11, 0x9b, 0xe8, 0x5c, 0x21, 0x15, 0xd1, 0x74, 0x66, 0x54, 0x13, + 0xdd, 0xc1, 0x14, 0xad, 0x5a, 0x93, 0xb1, 0x8a, 0xce, 0xfd, 0x75, 0x2c, 0x9d, 0x8b, 0x62, 0xf9, + 0xaf, 0x05, 0xfe, 0x7e, 0x37, 0x42, 0x97, 0xd1, 0x94, 0xe5, 0xdf, 0xc5, 0x94, 0x0c, 0xcb, 0x9f, + 0x93, 0x64, 0x9f, 0xb3, 0x8f, 0x3f, 0xc5, 0x39, 0x3b, 0x85, 0xc2, 0xb2, 0xdf, 0xda, 0x43, 0x1f, + 0xd1, 0x72, 0xe3, 0x23, 0x26, 0x3f, 0xda, 0x7e, 0x6b, 0xef, 0xd9, 0x9d, 0x0f, 0x23, 0x7b, 0xb2, + 0xc2, 0xea, 0xce, 0x86, 0x95, 0xc8, 0x7a, 0x7a, 0x52, 0x3b, 0x69, 0xd3, 0xd2, 0xb8, 0xa2, 0xc2, + 0x47, 0xa1, 0xac, 0x88, 0xa5, 0x93, 0x13, 0x0a, 0xd5, 0x79, 0x1a, 0xee, 0x45, 0x7e, 0x77, 0xae, + 0xed, 0x75, 0xb7, 0x7d, 0x27, 0x70, 0xa7, 0xab, 0x03, 0x04, 0xc6, 0xeb, 0x99, 0x02, 0x63, 0xca, + 0xe5, 0xf4, 0x76, 0x4b, 0x32, 0xb0, 0xfa, 0x58, 0x92, 0xaf, 0xc1, 0x04, 0x9b, 0x2d, 0x0b, 0x8f, + 0x23, 0xda, 0xe1, 0x43, 0x69, 0x0a, 0x97, 0xfa, 0x33, 0xca, 0x2d, 0xd3, 0x38, 0x91, 0x0f, 0x52, + 0x94, 0x1e, 0x34, 0x26, 0x50, 0x07, 0xa9, 0xce, 0xca, 0xfc, 0xc9, 0x54, 0x9b, 0x90, 0x25, 0x18, + 0x15, 0x25, 0x10, 0xab, 0x4e, 0x7f, 0x5d, 0x5e, 0xcc, 0xac, 0xcb, 0xa8, 0xa8, 0x8b, 0x25, 0xe9, + 0xcd, 0x7f, 0x6d, 0xc0, 0xb8, 0x96, 0x1d, 0xb9, 0xad, 0xb8, 0xaf, 0x24, 0x7e, 0x87, 0x1a, 0x4e, + 0xe6, 0xa3, 0x06, 0xb7, 0x85, 0xcf, 0x52, 0x6e, 0x30, 0x5d, 0x66, 0xbc, 0x39, 0x19, 0xf5, 0x21, + 0x7f, 0x7c, 0xd4, 0x87, 0xc2, 0x80, 0xa8, 0x0f, 0xdf, 0x1e, 0x87, 0x09, 0x7d, 0x81, 0x63, 0x1a, + 0xe7, 0xb2, 0xbf, 0xe3, 0x75, 0xa4, 0xdd, 0xca, 0xe3, 0x98, 0x20, 0x44, 0x7b, 0x21, 0x00, 0x21, + 0xe4, 0x35, 0x80, 0xf8, 0x68, 0x56, 0x9a, 0xa6, 0xe2, 0x3d, 0x03, 0x25, 0x81, 0xfc, 0x14, 0xc0, + 0x8a, 0xef, 0xd2, 0x38, 0x14, 0xce, 0x31, 0x1b, 0x4a, 0xaf, 0x8b, 0x0d, 0x25, 0xf1, 0x06, 0xc1, + 0xd1, 0x61, 0xed, 0x6c, 0xc7, 0x77, 0x69, 0x7f, 0x0c, 0x1c, 0x85, 0x23, 0xf9, 0x12, 0x8c, 0x58, + 0xbd, 0x36, 0x95, 0x91, 0x59, 0xc6, 0xe4, 0x80, 0xef, 0xb5, 0x95, 0xd8, 0xa4, 0x41, 0x2f, 0x7d, + 0x8e, 0xc0, 0x00, 0xe4, 0x03, 0x80, 0x7b, 0xbd, 0x6d, 0x7a, 0x37, 0xf0, 0x7b, 0x5d, 0x79, 0xf5, + 0x1b, 0xcd, 0xd8, 0xbd, 0x38, 0xf8, 0x97, 0xbd, 0x83, 0x89, 0x6a, 0xe6, 0x09, 0x09, 0x59, 0x85, + 0x51, 0x21, 0x3e, 0xc4, 0x3e, 0xfd, 0x4b, 0x59, 0x3b, 0x44, 0x8a, 0x0e, 0x21, 0x42, 0xa5, 0x20, + 0x58, 0xdf, 0xb4, 0xe1, 0x66, 0xf8, 0xbb, 0x50, 0x66, 0xec, 0x99, 0xa9, 0x1d, 0x8a, 0xb5, 0x03, + 0x1d, 0x48, 0x95, 0x02, 0x31, 0xb3, 0x5c, 0x8b, 0xf2, 0x16, 0x13, 0x90, 0xaf, 0x61, 0x70, 0x23, + 0xd1, 0xd4, 0xc7, 0x6e, 0x34, 0x5e, 0xe9, 0x6b, 0xea, 0x33, 0x4e, 0xb7, 0x9b, 0x11, 0x42, 0x2e, + 0xe6, 0x47, 0x76, 0xe2, 0x4b, 0x56, 0x71, 0x80, 0xea, 0x63, 0x32, 0xb8, 0xde, 0x97, 0xc1, 0xb4, + 0xbc, 0x37, 0xd4, 0x1f, 0xd2, 0x48, 0xe3, 0x4b, 0xba, 0x50, 0x4d, 0x82, 0xaf, 0x89, 0xbc, 0xe0, + 0xb8, 0xbc, 0xde, 0xec, 0xcb, 0x4b, 0xed, 0xc0, 0xbe, 0xec, 0xfa, 0xb8, 0x13, 0x37, 0x09, 0x26, + 0x2c, 0xf2, 0x1b, 0x3b, 0x2e, 0xbf, 0xd7, 0xfa, 0xf2, 0x3b, 0xed, 0x6e, 0xf7, 0xe7, 0x93, 0xe2, + 0x49, 0xde, 0x85, 0x71, 0x09, 0xc1, 0xf9, 0x81, 0x1b, 0x7c, 0x42, 0xbf, 0x77, 0xb7, 0xd1, 0x69, + 0x4c, 0x8f, 0xe7, 0xa3, 0x22, 0xab, 0xd4, 0x7c, 0x74, 0x8c, 0x6b, 0xd4, 0xe9, 0x51, 0xa1, 0x23, + 0x93, 0xaf, 0xc2, 0xd8, 0xd2, 0x3e, 0xab, 0x88, 0xdf, 0x71, 0x22, 0x8a, 0x8b, 0x51, 0xb2, 0x69, + 0xaa, 0xa4, 0x28, 0x43, 0x95, 0x47, 0x06, 0x4d, 0x92, 0xd4, 0xc5, 0x5c, 0xa1, 0x60, 0x8d, 0xc7, + 0xb7, 0x5f, 0xc4, 0x18, 0x0e, 0xc5, 0xd2, 0xf3, 0x62, 0xc6, 0xc6, 0xa5, 0xc2, 0x1e, 0x65, 0x39, + 0xdf, 0xd5, 0xb1, 0xc5, 0x84, 0xd0, 0x1a, 0x4f, 0xe7, 0x49, 0xde, 0x83, 0x31, 0x71, 0xa5, 0xb5, + 0x6e, 0xad, 0x84, 0xd3, 0x55, 0xac, 0x3c, 0xba, 0x08, 0xcb, 0xdb, 0xaf, 0xb6, 0x13, 0xa4, 0x4e, + 0xaf, 0x12, 0x7c, 0xf2, 0x15, 0x38, 0xb3, 0xe5, 0x75, 0x5c, 0xff, 0x51, 0x28, 0x04, 0xb8, 0x10, + 0x74, 0x53, 0x89, 0x8f, 0xce, 0x23, 0x9e, 0x6e, 0xcb, 0x65, 0xab, 0x4f, 0xf0, 0x65, 0x72, 0x20, + 0x3f, 0xdf, 0xc7, 0x99, 0x8f, 0x20, 0x72, 0xdc, 0x08, 0x9a, 0xed, 0x1b, 0x41, 0xfd, 0xd9, 0xa7, + 0x87, 0x53, 0x66, 0x36, 0xc4, 0x07, 0xa2, 0xeb, 0x1c, 0x1f, 0xfa, 0x5e, 0x67, 0xfa, 0xb4, 0xf6, + 0xfc, 0x4b, 0xec, 0x32, 0x8b, 0x78, 0x6b, 0x7e, 0xdb, 0x6b, 0x1d, 0x34, 0xcc, 0xa3, 0xc3, 0xda, + 0x4b, 0x69, 0x6d, 0xe6, 0x63, 0x5f, 0xdb, 0x5c, 0xc8, 0x60, 0x4d, 0xbe, 0x0a, 0x15, 0xf6, 0x1b, + 0xab, 0x7e, 0x67, 0xb4, 0xa3, 0x2e, 0x05, 0x53, 0xe4, 0x83, 0x7d, 0x84, 0x77, 0x6e, 0x33, 0xb4, + 0x42, 0x8d, 0x95, 0xf9, 0x43, 0x03, 0xce, 0x64, 0x95, 0xf5, 0x84, 0x00, 0x47, 0x66, 0xea, 0xd0, + 0x1b, 0xf7, 0x25, 0xf8, 0xa1, 0x77, 0x7c, 0xd4, 0x5d, 0x83, 0x11, 0x66, 0x2b, 0x4b, 0xa7, 0x2c, + 0x5c, 0x0e, 0x99, 0x3d, 0x1d, 0x5a, 0x1c, 0xce, 0x10, 0xb8, 0xab, 0x37, 0x5b, 0x2f, 0x47, 0x38, + 0x02, 0xfa, 0x6b, 0x5b, 0x1c, 0xce, 0x10, 0xd8, 0xb2, 0x2b, 0x97, 0x09, 0x44, 0x60, 0xab, 0x71, + 0x68, 0x71, 0x38, 0xb9, 0x02, 0xa3, 0xab, 0x9d, 0x65, 0xea, 0x3c, 0xa4, 0xe2, 0xc4, 0x09, 0xf7, + 0x51, 0xfc, 0x8e, 0xdd, 0x66, 0x30, 0x4b, 0x26, 0x9a, 0xdf, 0x31, 0x60, 0xaa, 0xaf, 0x99, 0x4e, + 0x8e, 0xe1, 0x74, 0xfc, 0xf1, 0xde, 0x30, 0xf5, 0xe3, 0xc5, 0x2f, 0x64, 0x17, 0xdf, 0xfc, 0xcb, + 0x3c, 0x9c, 0x1f, 0xb0, 0x6a, 0x25, 0x47, 0xf3, 0xc6, 0x89, 0x47, 0xf3, 0x5f, 0x67, 0xab, 0x84, + 0xe3, 0xed, 0x87, 0xeb, 0x7e, 0x52, 0xe2, 0xe4, 0x14, 0x03, 0xd3, 0x64, 0x90, 0x14, 0x19, 0xd0, + 0xe3, 0x42, 0x0b, 0x29, 0xec, 0xc8, 0xef, 0xdb, 0x33, 0xd6, 0x99, 0xf5, 0x1d, 0x8e, 0xe7, 0x7f, + 0x4c, 0x0e, 0xc7, 0xf5, 0x23, 0xa9, 0xc2, 0x33, 0x3d, 0x92, 0xca, 0xde, 0x24, 0x1f, 0x79, 0x9a, + 0xa3, 0x80, 0x7f, 0x9b, 0x3a, 0x8e, 0xff, 0x71, 0xec, 0xea, 0x6b, 0x30, 0xb2, 0xb5, 0x4b, 0x03, + 0xa9, 0xdf, 0x62, 0x41, 0x1e, 0x31, 0x80, 0x5a, 0x10, 0xc4, 0x30, 0x7f, 0x0e, 0x2a, 0x6a, 0x66, + 0x38, 0x97, 0xd9, 0xb7, 0x98, 0x4c, 0x7c, 0x2e, 0x33, 0x80, 0xc5, 0xe1, 0x27, 0x86, 0x44, 0x4b, + 0x5a, 0x21, 0x7f, 0x52, 0x2b, 0x98, 0xff, 0xc6, 0x80, 0x02, 0x46, 0x84, 0x78, 0x0b, 0xca, 0x72, + 0xab, 0x54, 0x8d, 0x92, 0x70, 0x5a, 0xee, 0xa4, 0x86, 0xba, 0x3f, 0x83, 0x00, 0xb2, 0xac, 0x36, + 0x69, 0xb0, 0xad, 0xb9, 0xbd, 0x3c, 0x64, 0x00, 0x35, 0x2b, 0xc4, 0x78, 0x82, 0x26, 0x41, 0xd7, + 0x1e, 0x61, 0xdf, 0xf3, 0x09, 0xcf, 0x5d, 0x7b, 0xfa, 0xec, 0x7a, 0x89, 0x65, 0xfe, 0x8e, 0x01, + 0x67, 0x33, 0xf5, 0x00, 0x96, 0x2b, 0x57, 0x38, 0x94, 0x11, 0x91, 0xd6, 0x36, 0x38, 0xc6, 0x93, + 0xb8, 0xf0, 0x3c, 0x41, 0xf7, 0xbe, 0x0c, 0xe5, 0xd8, 0x3e, 0x23, 0x67, 0x64, 0xd7, 0xe1, 0x7e, + 0x9a, 0x34, 0x66, 0xfe, 0xda, 0x80, 0x22, 0x2b, 0xc2, 0x73, 0x7b, 0xbb, 0x22, 0x7b, 0x77, 0x95, + 0x55, 0x69, 0xa8, 0x3b, 0x15, 0xdf, 0x2d, 0x02, 0x24, 0xc8, 0x64, 0x1b, 0x26, 0x56, 0x97, 0xe6, + 0xe7, 0x96, 0x5c, 0xda, 0x89, 0xf0, 0x94, 0x2f, 0x15, 0x66, 0x81, 0x19, 0x96, 0x41, 0xc7, 0x69, + 0x0b, 0x84, 0x83, 0x64, 0x7a, 0xfa, 0x9e, 0xdb, 0xb2, 0xbd, 0x98, 0x4e, 0x55, 0xc8, 0x74, 0x8e, + 0x2c, 0x8f, 0x66, 0xfd, 0xfe, 0xb2, 0x92, 0x47, 0x6e, 0xc8, 0x3c, 0x42, 0x67, 0xbf, 0x3d, 0x20, + 0x0f, 0x9d, 0x23, 0xd9, 0x85, 0xea, 0x5d, 0x94, 0xdd, 0x4a, 0x2e, 0xf9, 0xe3, 0x73, 0x79, 0x45, + 0xe4, 0xf2, 0x02, 0x17, 0xfa, 0xd9, 0xf9, 0xf4, 0x71, 0x4d, 0x46, 0x6e, 0xe1, 0xc4, 0x91, 0xfb, + 0xb7, 0x0c, 0x28, 0xf2, 0xc5, 0x21, 0x7e, 0x01, 0x25, 0x73, 0xf9, 0xd9, 0x7a, 0x36, 0xcb, 0x4f, + 0x35, 0xc2, 0x7f, 0xaa, 0x01, 0xce, 0xd3, 0xc8, 0x7c, 0xea, 0x39, 0x15, 0xb9, 0x85, 0x8e, 0x8a, + 0x29, 0x4f, 0x49, 0x1c, 0xa1, 0xf8, 0x4b, 0x2a, 0x2a, 0x17, 0x8e, 0xa1, 0x3e, 0xee, 0x38, 0xfa, + 0x94, 0x8f, 0x3b, 0x2e, 0x43, 0x59, 0x78, 0xf6, 0x34, 0x0e, 0x84, 0xf9, 0x29, 0x37, 0x58, 0x62, + 0xb8, 0x12, 0xb2, 0x9c, 0x83, 0xec, 0x6d, 0x2d, 0x76, 0x60, 0x8c, 0x48, 0x56, 0xa1, 0x9c, 0x5c, + 0x0d, 0xd1, 0xaf, 0x40, 0xc6, 0x70, 0xe1, 0xfa, 0xca, 0xef, 0x22, 0x66, 0xde, 0x04, 0x49, 0x78, + 0x98, 0xdf, 0x34, 0xa0, 0x9a, 0x1e, 0x2f, 0xe4, 0x5d, 0x18, 0x8b, 0x6f, 0xe7, 0xc4, 0xfe, 0x05, + 0xb8, 0x91, 0x99, 0x5c, 0xe7, 0xd1, 0x3c, 0x0d, 0x54, 0x74, 0x32, 0x0b, 0x25, 0x36, 0xed, 0x94, + 0xe0, 0xd1, 0x28, 0x4f, 0x7a, 0x02, 0xa6, 0x9e, 0xeb, 0x49, 0x3c, 0x65, 0xd6, 0xfe, 0xfb, 0x3c, + 0x8c, 0x29, 0x9d, 0x45, 0xae, 0x41, 0x69, 0x29, 0x5c, 0xf6, 0x5b, 0x7b, 0xd4, 0x15, 0xc7, 0x05, + 0xf8, 0x76, 0xa7, 0x17, 0xda, 0x6d, 0x04, 0x5a, 0x71, 0x32, 0x69, 0xc0, 0x38, 0xff, 0x27, 0xaf, + 0xe1, 0xe6, 0x92, 0xad, 0x4e, 0x8e, 0x2c, 0x2f, 0xe0, 0xaa, 0x2b, 0xac, 0x46, 0x42, 0xbe, 0x01, + 0xc0, 0x01, 0xac, 0x7f, 0x87, 0x70, 0xec, 0x95, 0x13, 0xf8, 0xac, 0xc8, 0x20, 0xf2, 0xd4, 0x1a, + 0xe2, 0x50, 0x50, 0x18, 0xe2, 0xbb, 0x81, 0x7e, 0x6b, 0x6f, 0xf8, 0x97, 0x43, 0x93, 0x77, 0x03, + 0xfd, 0xd6, 0x9e, 0x9d, 0xed, 0xe5, 0xa5, 0xb2, 0x24, 0xdf, 0x32, 0xe0, 0xa2, 0x45, 0x5b, 0xfe, + 0x43, 0x1a, 0x1c, 0xd4, 0x23, 0xc4, 0x52, 0x73, 0x3c, 0xd9, 0xa5, 0xec, 0x96, 0xc8, 0xf1, 0xf5, + 0x40, 0x70, 0xc1, 0xeb, 0x28, 0xfb, 0xdd, 0xc8, 0x3e, 0xa6, 0x08, 0xc7, 0x64, 0x69, 0xfe, 0x47, + 0x43, 0x99, 0x02, 0x64, 0x05, 0xca, 0xf1, 0x60, 0x11, 0x1b, 0x8e, 0xb1, 0x72, 0x24, 0xe1, 0x16, + 0x7d, 0xd0, 0x78, 0x41, 0xec, 0xec, 0x9f, 0x8e, 0x87, 0x9c, 0x36, 0x23, 0x24, 0x90, 0x7c, 0x19, + 0x0a, 0xd8, 0x55, 0x27, 0x47, 0x1b, 0x93, 0x4b, 0x4d, 0x81, 0xf5, 0x11, 0x96, 0x1a, 0x29, 0xc9, + 0xe7, 0x85, 0x97, 0x47, 0x5e, 0x8b, 0xe3, 0xcb, 0x40, 0xac, 0x1c, 0xf1, 0x1a, 0x93, 0x38, 0x16, + 0x2a, 0xa3, 0xf5, 0x6f, 0xe7, 0xa0, 0x9a, 0x9e, 0x78, 0xe4, 0x03, 0xa8, 0xac, 0x39, 0x61, 0xf8, + 0xc8, 0x0f, 0xdc, 0x45, 0x47, 0x5c, 0x1d, 0xae, 0x88, 0xab, 0xbb, 0x02, 0x6e, 0xef, 0x3a, 0x5a, + 0x0c, 0x39, 0x8d, 0x80, 0x2d, 0xc8, 0xeb, 0xc2, 0x5f, 0x5d, 0x99, 0x40, 0x91, 0x1f, 0x75, 0x53, + 0xb1, 0x41, 0x25, 0x1a, 0x79, 0x0b, 0xf2, 0xfc, 0xee, 0x9b, 0x1a, 0x58, 0xea, 0xfe, 0x9d, 0x3a, + 0xbf, 0x2e, 0xc4, 0x0f, 0x93, 0xf5, 0x5d, 0x79, 0x86, 0x4f, 0x96, 0x95, 0x9b, 0x53, 0x45, 0x2d, + 0xc0, 0x8e, 0x04, 0xc7, 0x95, 0x3b, 0xf9, 0x0a, 0xd5, 0x87, 0x85, 0x52, 0xbe, 0x5a, 0x10, 0xf7, + 0x73, 0xfe, 0x30, 0x0f, 0xe5, 0x38, 0x7f, 0x42, 0x00, 0xf5, 0x0d, 0x71, 0x2a, 0x8c, 0xff, 0xc9, + 0x05, 0x28, 0x49, 0x15, 0x43, 0x9c, 0x0c, 0x8f, 0x86, 0x42, 0xbd, 0x98, 0x06, 0xa9, 0x4b, 0x70, + 0xf5, 0xc2, 0x92, 0x9f, 0xe4, 0x26, 0xc4, 0x8a, 0xc2, 0x20, 0x8d, 0xa2, 0xc0, 0x3a, 0xcc, 0x8a, + 0xd1, 0xc8, 0x04, 0xe4, 0x3c, 0xee, 0x8b, 0x5c, 0xb6, 0x72, 0x9e, 0x4b, 0x3e, 0x80, 0x92, 0xe3, + 0xba, 0xd4, 0xb5, 0x9d, 0x68, 0x88, 0x57, 0x5c, 0x4b, 0x8c, 0x1b, 0x97, 0xe8, 0x48, 0x55, 0x8f, + 0x48, 0x1d, 0xca, 0xf8, 0x88, 0x67, 0x2f, 0x1c, 0xea, 0xe5, 0xcf, 0x84, 0x43, 0x89, 0x91, 0x6d, + 0x84, 0xd4, 0x25, 0xaf, 0x43, 0x81, 0xf5, 0xa6, 0x58, 0x0f, 0xe2, 0x70, 0x81, 0xab, 0xeb, 0x6b, + 0xbc, 0xc1, 0x16, 0x4f, 0x59, 0x88, 0x40, 0x5e, 0x85, 0x7c, 0x6f, 0xf6, 0x81, 0x90, 0xf4, 0xd5, + 0xe4, 0x5a, 0x64, 0x8c, 0xc6, 0x92, 0xc9, 0x2d, 0x28, 0x3d, 0xd2, 0x2f, 0xc0, 0x9d, 0x4d, 0x75, + 0x63, 0x8c, 0x1f, 0x23, 0x36, 0x4a, 0x50, 0xe4, 0xd7, 0xcd, 0xcc, 0x97, 0x00, 0x92, 0xac, 0xfb, + 0x0f, 0xf0, 0xcd, 0x6f, 0x40, 0x39, 0xce, 0x92, 0xbc, 0x08, 0xb0, 0x47, 0x0f, 0xec, 0x5d, 0xa7, + 0xe3, 0x8a, 0xc7, 0x6b, 0x2a, 0x56, 0x79, 0x8f, 0x1e, 0x2c, 0x22, 0x80, 0x9c, 0x87, 0xd1, 0x2e, + 0xeb, 0x55, 0x19, 0xd9, 0xd6, 0x2a, 0x76, 0x7b, 0xdb, 0x6c, 0x84, 0x4e, 0xc3, 0x28, 0x6e, 0x1d, + 0x88, 0x89, 0x36, 0x6e, 0xc9, 0x4f, 0xf3, 0xf7, 0x73, 0x18, 0xf3, 0x40, 0x29, 0x27, 0x79, 0x05, + 0xc6, 0x5b, 0x01, 0xc5, 0xe5, 0xc8, 0x61, 0x6a, 0x91, 0xc8, 0xa7, 0x92, 0x00, 0x97, 0x5c, 0x72, + 0x05, 0x26, 0x93, 0x50, 0xbb, 0x76, 0x6b, 0x5b, 0x5c, 0x7f, 0xad, 0x58, 0xe3, 0x5d, 0x19, 0x6b, + 0x77, 0x6e, 0x1b, 0x7d, 0xe8, 0xab, 0xea, 0x55, 0xb3, 0x48, 0x86, 0xcd, 0x2d, 0x5b, 0x93, 0x0a, + 0x1c, 0x8f, 0x1d, 0xce, 0x41, 0xd1, 0x71, 0x76, 0x7a, 0x1e, 0xf7, 0xe7, 0xad, 0x58, 0xe2, 0x8b, + 0x7c, 0x0e, 0xa6, 0x42, 0x6f, 0xa7, 0xe3, 0x44, 0xbd, 0x40, 0x04, 0x9d, 0xa0, 0x01, 0x0e, 0xa9, + 0x71, 0xab, 0x1a, 0x27, 0xcc, 0x71, 0x38, 0x79, 0x13, 0x88, 0x9a, 0x9f, 0xbf, 0xfd, 0x31, 0x6d, + 0xf1, 0xa1, 0x56, 0xb1, 0xa6, 0x94, 0x94, 0x55, 0x4c, 0x20, 0x2f, 0x43, 0x25, 0xa0, 0x21, 0xaa, + 0x64, 0xd8, 0x6c, 0x18, 0x4a, 0xc7, 0x1a, 0x93, 0xb0, 0x7b, 0xf4, 0xc0, 0x6c, 0xc0, 0x54, 0xdf, + 0x7c, 0x24, 0x6f, 0x72, 0xed, 0x5e, 0xac, 0xcf, 0x15, 0x6e, 0xcc, 0x30, 0x21, 0x95, 0x7a, 0xf7, + 0x99, 0x23, 0x99, 0x1d, 0xa8, 0xa8, 0xf2, 0xf5, 0x84, 0x8b, 0xc5, 0xe7, 0xd0, 0xb1, 0x90, 0x0b, + 0x9f, 0xe2, 0xd1, 0x61, 0x2d, 0xe7, 0xb9, 0xe8, 0x4e, 0x78, 0x15, 0x4a, 0x52, 0x4b, 0x50, 0x1f, + 0x6f, 0x11, 0x0a, 0xe5, 0x81, 0x15, 0xa7, 0x9a, 0xaf, 0xc3, 0xa8, 0x10, 0xa1, 0xc7, 0x6f, 0xe3, + 0x98, 0xbf, 0x9c, 0x83, 0x49, 0x8b, 0xb2, 0x09, 0x2e, 0x9e, 0x45, 0xf9, 0x8c, 0x05, 0x1d, 0xd6, + 0xea, 0x76, 0xcc, 0x3d, 0xfe, 0xef, 0x19, 0x70, 0x3a, 0x03, 0xf7, 0x13, 0x45, 0x29, 0xbb, 0x0d, + 0xe5, 0x79, 0xcf, 0x69, 0xd7, 0x5d, 0x37, 0x76, 0x90, 0x44, 0x6d, 0xd0, 0x65, 0xd3, 0xc9, 0x61, + 0x50, 0x75, 0x31, 0x8d, 0x51, 0xc9, 0x75, 0x31, 0x28, 0x92, 0x38, 0x8a, 0x32, 0xac, 0x31, 0xf0, + 0x32, 0x25, 0x41, 0x8d, 0xf1, 0x1a, 0x1a, 0x07, 0x26, 0x67, 0xe0, 0xcf, 0x6d, 0xd7, 0x65, 0x5f, + 0x43, 0x4b, 0x57, 0x6f, 0x28, 0xb3, 0xf3, 0x9b, 0x39, 0x38, 0x97, 0x4d, 0xf8, 0x49, 0x03, 0xce, + 0x61, 0x10, 0x05, 0x25, 0x72, 0x34, 0x06, 0x9c, 0xe3, 0x11, 0x17, 0x10, 0x3f, 0x41, 0x20, 0x0f, + 0x60, 0x7c, 0xd9, 0x09, 0xa3, 0x45, 0xea, 0x04, 0xd1, 0x36, 0x75, 0xa2, 0x21, 0x34, 0xd8, 0xf8, + 0x75, 0x65, 0x5c, 0xd4, 0x76, 0x25, 0x65, 0xfa, 0x75, 0x65, 0x8d, 0x6d, 0x3c, 0x50, 0x0a, 0x43, + 0x0c, 0x94, 0x9f, 0x81, 0xc9, 0x26, 0xdd, 0x77, 0xba, 0xbb, 0x7e, 0x40, 0xc5, 0xce, 0xf3, 0x0d, + 0x18, 0x8f, 0x41, 0x99, 0xa3, 0x45, 0x4f, 0xd6, 0xf0, 0x95, 0x86, 0x48, 0x44, 0x89, 0x9e, 0x6c, + 0xfe, 0x6e, 0x0e, 0xce, 0xd7, 0x5b, 0x62, 0x9b, 0x5e, 0x24, 0xc8, 0xd3, 0xc4, 0x4f, 0x39, 0x6f, + 0x32, 0x03, 0xe5, 0xfb, 0xce, 0xe3, 0x65, 0x8a, 0xef, 0x9f, 0xf2, 0xb0, 0x45, 0x5c, 0xfd, 0x72, + 0x1e, 0xdb, 0xf1, 0xb6, 0x97, 0x95, 0xe0, 0xa8, 0xc6, 0x66, 0xe1, 0x29, 0x8d, 0x4d, 0x13, 0x8a, + 0x8b, 0x7e, 0xdb, 0x15, 0x8b, 0x93, 0xd8, 0xf5, 0xdf, 0x45, 0x88, 0x25, 0x52, 0xcc, 0x1f, 0x1a, + 0x30, 0x11, 0x97, 0x18, 0x8b, 0xf0, 0xa9, 0x37, 0xc9, 0x15, 0x18, 0xc5, 0x8c, 0xe2, 0x57, 0x82, + 0x70, 0xd1, 0x68, 0x33, 0x90, 0xed, 0xb9, 0x96, 0x4c, 0x54, 0x5b, 0x62, 0xe4, 0xe9, 0x5a, 0xc2, + 0xfc, 0xc7, 0x78, 0xa0, 0xa0, 0xd6, 0x92, 0xad, 0x44, 0x4a, 0x41, 0x8c, 0x21, 0x0b, 0x92, 0x7b, + 0x66, 0x5d, 0x92, 0x1f, 0xd8, 0x25, 0xbf, 0x92, 0x83, 0xb1, 0xb8, 0xb0, 0x9f, 0xb1, 0xfb, 0xdb, + 0x71, 0xbd, 0x86, 0xf2, 0xce, 0x6e, 0x2a, 0xb2, 0x42, 0x38, 0x41, 0x7f, 0x19, 0x8a, 0x62, 0x32, + 0x19, 0xa9, 0x53, 0xb5, 0x54, 0xef, 0x26, 0x2f, 0xe4, 0x62, 0x87, 0x86, 0x96, 0xa0, 0x43, 0xf7, + 0xf7, 0x2d, 0xba, 0x2d, 0xce, 0x97, 0x9e, 0xdb, 0x35, 0x2a, 0xdb, 0xfd, 0x3d, 0xa9, 0xd8, 0x50, + 0xab, 0xd3, 0xdf, 0x2f, 0x40, 0x35, 0x4d, 0x72, 0xf2, 0x0d, 0xf9, 0xb5, 0xde, 0xb6, 0x78, 0xa8, + 0x02, 0x6f, 0xc8, 0x77, 0x7b, 0xdb, 0x16, 0x83, 0x91, 0x2b, 0x50, 0x58, 0x0b, 0xbc, 0x87, 0x58, + 0x6b, 0xf1, 0x4e, 0x47, 0x37, 0xf0, 0x1e, 0xaa, 0x7e, 0xa0, 0x2c, 0x1d, 0x0d, 0xda, 0xe5, 0xa6, + 0xf2, 0x38, 0x39, 0x37, 0x68, 0xdb, 0x61, 0x3a, 0x2c, 0x8a, 0x44, 0x63, 0x4b, 0x65, 0x83, 0x3a, + 0x81, 0xb8, 0xcd, 0x2d, 0xc4, 0x19, 0x2e, 0x95, 0xdb, 0x08, 0xe6, 0x41, 0x6f, 0x2d, 0x15, 0x89, + 0xb4, 0x81, 0x28, 0x9f, 0x72, 0x02, 0x9f, 0x6c, 0xe3, 0xc9, 0xf7, 0xa5, 0xce, 0xa8, 0xac, 0x6d, + 0x75, 0x36, 0x67, 0xf0, 0x7d, 0x96, 0x7b, 0x84, 0x6b, 0x50, 0xc6, 0x2d, 0x2f, 0xdc, 0xc8, 0x28, + 0x9d, 0xc8, 0x4c, 0xfa, 0xdc, 0x02, 0x9e, 0xc6, 0xdb, 0xf1, 0x76, 0x46, 0xc2, 0x84, 0xbc, 0x0f, + 0x63, 0xaa, 0xa3, 0x28, 0x77, 0x67, 0xbc, 0xc4, 0x6f, 0x08, 0x0d, 0x88, 0x1f, 0xa7, 0x12, 0x98, + 0x9f, 0x57, 0x47, 0x89, 0x58, 0xb4, 0x8f, 0x1d, 0x25, 0xe6, 0x6f, 0xa3, 0x1a, 0xbf, 0xef, 0x47, + 0x54, 0x68, 0x2f, 0xcf, 0xad, 0x1c, 0x4b, 0xb6, 0x90, 0x47, 0x34, 0x8f, 0x10, 0xad, 0x76, 0x4f, + 0xf0, 0x2c, 0xf7, 0x3f, 0x30, 0xe0, 0x6c, 0x26, 0x2d, 0xb9, 0x01, 0x90, 0xe8, 0x88, 0xa2, 0x95, + 0x78, 0x34, 0xe1, 0x18, 0x6a, 0x29, 0x18, 0xe4, 0xeb, 0x69, 0xed, 0xee, 0xe4, 0xc5, 0x49, 0xbe, + 0xb9, 0x31, 0xa1, 0x6b, 0x77, 0x19, 0x3a, 0x9d, 0xf9, 0xbd, 0x3c, 0x4c, 0xf5, 0x3d, 0xf0, 0x78, + 0xc2, 0x19, 0xfc, 0x5e, 0xea, 0x25, 0x30, 0x7e, 0xdc, 0x71, 0x7d, 0xd0, 0xf3, 0x92, 0x19, 0xef, + 0x82, 0xe1, 0xb6, 0x98, 0x08, 0x64, 0x7d, 0xc2, 0xf3, 0x60, 0x61, 0xf6, 0x1b, 0x72, 0x9f, 0x1b, + 0x98, 0xdb, 0x33, 0x78, 0x4b, 0xee, 0xc7, 0xf8, 0xa9, 0xad, 0xdf, 0xce, 0xc1, 0xe9, 0xbe, 0x3a, + 0x3f, 0xb7, 0xb3, 0xee, 0xcb, 0xda, 0xea, 0xf6, 0xd2, 0xa0, 0x3e, 0x1d, 0x4a, 0x8b, 0xf8, 0xef, + 0x06, 0x9c, 0x1f, 0x40, 0x49, 0x0e, 0xd2, 0x83, 0x88, 0x6b, 0x15, 0x37, 0x8f, 0xcf, 0xf0, 0x99, + 0x0c, 0xa5, 0x4f, 0x6d, 0x24, 0xfc, 0x72, 0x0e, 0x60, 0x8b, 0x6e, 0x3f, 0xdf, 0xe1, 0x7f, 0xbe, + 0xa8, 0x0d, 0x00, 0x65, 0x03, 0x73, 0xf8, 0xe8, 0x3f, 0xab, 0xb8, 0x91, 0x38, 0x7c, 0xec, 0x9f, + 0xf8, 0x5d, 0x91, 0x5c, 0xf6, 0xbb, 0x22, 0xe6, 0x36, 0x9c, 0xb9, 0x4b, 0xa3, 0x64, 0x25, 0x94, + 0x36, 0xe4, 0xf1, 0x6c, 0xdf, 0x80, 0xb2, 0xc0, 0xd7, 0x63, 0xc4, 0x4b, 0x87, 0x32, 0xcf, 0xb5, + 0x12, 0x04, 0x93, 0xc2, 0xf9, 0x79, 0xda, 0xa6, 0x11, 0xfd, 0x74, 0xb3, 0x69, 0x02, 0xe1, 0x55, + 0xe1, 0xcf, 0x4d, 0x0c, 0x95, 0xc3, 0x89, 0xed, 0xb3, 0x09, 0x67, 0xe3, 0xb2, 0x3f, 0x4b, 0xbe, + 0x33, 0x4c, 0x97, 0x10, 0x77, 0xed, 0x12, 0x8e, 0xc7, 0x6c, 0x22, 0x3e, 0x86, 0x8b, 0x92, 0x60, + 0xcb, 0x8b, 0x4f, 0x62, 0x86, 0xa2, 0x25, 0xef, 0xc2, 0x98, 0x42, 0x23, 0x2e, 0xee, 0xe2, 0x69, + 0xe7, 0x23, 0x2f, 0xda, 0xb5, 0x43, 0x0e, 0x57, 0x4f, 0x3b, 0x15, 0x74, 0xf3, 0x6b, 0xf0, 0x42, + 0xec, 0xb7, 0x92, 0x91, 0x75, 0x8a, 0xb9, 0xf1, 0x64, 0xcc, 0x57, 0x92, 0x6a, 0x2d, 0x75, 0x62, + 0xff, 0x71, 0xc9, 0x9b, 0xa8, 0xd5, 0x12, 0x95, 0xb9, 0xa4, 0x84, 0x45, 0x13, 0x6b, 0x51, 0x02, + 0x30, 0xdf, 0x51, 0x0a, 0x9b, 0xc1, 0x50, 0x23, 0x36, 0xd2, 0xc4, 0xbf, 0x9c, 0x83, 0xc9, 0xd5, + 0xa5, 0xf9, 0xb9, 0x78, 0x1b, 0xf9, 0x33, 0x16, 0x9b, 0x48, 0xab, 0xdb, 0x60, 0x79, 0x63, 0x6e, + 0xc0, 0xe9, 0x54, 0x33, 0xe0, 0x6b, 0x3a, 0xef, 0x73, 0xff, 0x92, 0x18, 0x2c, 0x57, 0x96, 0x73, + 0x59, 0xec, 0x37, 0x6f, 0x59, 0x29, 0x6c, 0xf3, 0x7b, 0xc5, 0x14, 0x5f, 0x21, 0xc2, 0xde, 0x80, + 0xf2, 0x52, 0x18, 0xf6, 0x68, 0xb0, 0x61, 0x2d, 0xab, 0x3a, 0xa2, 0x87, 0x40, 0xbb, 0x17, 0xb4, + 0xad, 0x04, 0x81, 0x5c, 0x83, 0x92, 0xb8, 0xdf, 0x25, 0x65, 0x02, 0x1e, 0x97, 0xc7, 0xd7, 0xc3, + 0xac, 0x38, 0x99, 0xbc, 0x05, 0x15, 0xfe, 0x9f, 0x8f, 0x36, 0xd1, 0xe0, 0xb8, 0x57, 0x25, 0xd0, + 0xf9, 0xe8, 0xb4, 0x34, 0x34, 0x66, 0x99, 0xc9, 0xe7, 0x3a, 0x59, 0x89, 0x0a, 0x89, 0x65, 0x26, + 0x5f, 0xf6, 0xc4, 0x32, 0xa9, 0x48, 0xe4, 0x3a, 0xe4, 0xeb, 0x73, 0x96, 0x1a, 0x16, 0xdb, 0x69, + 0x05, 0x3c, 0xac, 0xbc, 0xf6, 0x22, 0x56, 0x7d, 0xce, 0x22, 0xb3, 0x50, 0xc2, 0x17, 0x4f, 0x5c, + 0x1a, 0x08, 0x9f, 0x51, 0x1c, 0x35, 0x5d, 0x01, 0xd3, 0xde, 0x13, 0x17, 0x30, 0x32, 0x03, 0xa3, + 0xf3, 0x5e, 0xd8, 0x6d, 0x3b, 0x07, 0x22, 0x28, 0x09, 0x1e, 0x86, 0xb8, 0x1c, 0xa4, 0x8e, 0x33, + 0x81, 0x45, 0xae, 0xc1, 0x48, 0xb3, 0xe5, 0x77, 0x99, 0xb5, 0x15, 0xbb, 0xb6, 0x84, 0x0c, 0xa0, + 0x45, 0x36, 0x60, 0x00, 0xbc, 0x72, 0xcc, 0x6f, 0x4e, 0x95, 0x95, 0x2b, 0xc7, 0xe9, 0x1b, 0x53, + 0x02, 0xa7, 0xdf, 0xff, 0x0f, 0x9e, 0xa5, 0xff, 0xdf, 0x36, 0x9c, 0xbf, 0x8b, 0xaa, 0x7e, 0x93, + 0x06, 0x18, 0x07, 0x92, 0xbf, 0x9e, 0xb4, 0x61, 0x2d, 0x89, 0xdb, 0x62, 0x57, 0x8f, 0x0e, 0x6b, + 0xaf, 0x72, 0x6b, 0xc0, 0x0e, 0x39, 0x8e, 0x7c, 0x78, 0x29, 0xf5, 0x64, 0xc4, 0x20, 0x46, 0xe4, + 0x2b, 0x70, 0x26, 0x2b, 0x49, 0xdc, 0x1b, 0x43, 0xaf, 0xf0, 0xec, 0x0c, 0x54, 0xb7, 0xec, 0x2c, + 0x0e, 0x64, 0x19, 0xaa, 0x1c, 0x5e, 0x77, 0xf7, 0xbd, 0xce, 0xc2, 0xbe, 0xe3, 0xb5, 0xf1, 0x16, + 0x99, 0xb8, 0x0a, 0x28, 0xb8, 0x3a, 0x2c, 0xd1, 0xa6, 0x2c, 0x55, 0xf3, 0x4e, 0x4a, 0x51, 0xa2, + 0x38, 0x6a, 0xd6, 0xef, 0x2f, 0x27, 0x73, 0xea, 0xb3, 0x75, 0x6e, 0xa4, 0xd5, 0xed, 0x98, 0x73, + 0xa3, 0x0d, 0x38, 0x9d, 0x6a, 0x06, 0x29, 0x8e, 0x34, 0x70, 0x5a, 0x1c, 0xa5, 0x68, 0xac, 0x14, + 0xb6, 0xf9, 0x1f, 0x8a, 0x29, 0xbe, 0x62, 0xaf, 0xc8, 0x84, 0x22, 0x97, 0x36, 0x6a, 0xd4, 0x32, + 0x2e, 0x8b, 0x2c, 0x91, 0x42, 0x2e, 0x40, 0xbe, 0xd9, 0x5c, 0x55, 0x63, 0x2a, 0x86, 0xa1, 0x6f, + 0x31, 0x18, 0xeb, 0x21, 0xdc, 0x06, 0x52, 0x2e, 0x68, 0xb5, 0x68, 0x10, 0x89, 0xf7, 0x5c, 0x5f, + 0x4b, 0xe6, 0x71, 0x21, 0x69, 0x6f, 0x31, 0x8f, 0x93, 0xd9, 0x3b, 0x07, 0xd3, 0xf5, 0x30, 0xa4, + 0x01, 0x0f, 0x0f, 0xde, 0x09, 0x7b, 0xfb, 0x34, 0x10, 0x63, 0x4d, 0xc8, 0x18, 0xfe, 0x1a, 0x7c, + 0x2b, 0xb4, 0x06, 0x22, 0x92, 0xab, 0x50, 0xaa, 0xf7, 0x5c, 0x8f, 0x76, 0x5a, 0x9a, 0x6f, 0xba, + 0x23, 0x60, 0x56, 0x9c, 0x4a, 0x3e, 0x82, 0xb3, 0x82, 0x48, 0x0a, 0x1c, 0xd1, 0x02, 0x5c, 0xd6, + 0x70, 0x0b, 0x56, 0xcc, 0x05, 0x29, 0xa6, 0x6c, 0xd1, 0x24, 0xd9, 0x94, 0xa4, 0x0e, 0xd5, 0x05, + 0x3c, 0x27, 0x95, 0xaf, 0x3a, 0xfb, 0x81, 0x08, 0xbe, 0x8b, 0x92, 0x8b, 0x9f, 0xa1, 0xda, 0x6e, + 0x9c, 0x68, 0xf5, 0xa1, 0x93, 0x7b, 0x70, 0x3a, 0x0d, 0x63, 0xf2, 0xb8, 0x9c, 0xbc, 0xba, 0xd6, + 0xc7, 0x05, 0x05, 0x73, 0x16, 0x15, 0xd9, 0x86, 0xa9, 0x7a, 0x14, 0x05, 0xde, 0x76, 0x2f, 0xa2, + 0x29, 0xd1, 0x25, 0x37, 0x1a, 0xe3, 0x74, 0x29, 0xbe, 0x5e, 0x10, 0x83, 0xf1, 0xb4, 0x13, 0x53, + 0xc6, 0x22, 0xcc, 0xea, 0x67, 0x47, 0xdc, 0xf8, 0xe1, 0x46, 0xf1, 0xb8, 0xa1, 0xb8, 0x50, 0x24, + 0x37, 0x74, 0xeb, 0xe1, 0xc1, 0xfe, 0x3e, 0x8d, 0x02, 0x3c, 0xb9, 0xc7, 0xc7, 0x0f, 0x4d, 0xe1, + 0x03, 0x74, 0x51, 0x79, 0xaf, 0x14, 0x1f, 0xb8, 0xd4, 0xdc, 0x23, 0x35, 0x9e, 0xda, 0xf2, 0x51, + 0x19, 0x72, 0xf9, 0x68, 0xc3, 0xd4, 0x42, 0xa7, 0x15, 0x1c, 0xe0, 0xcd, 0x46, 0x59, 0xb8, 0xf1, + 0x13, 0x0a, 0x27, 0x5f, 0x36, 0xb9, 0xe4, 0xc8, 0x11, 0x96, 0x55, 0xbc, 0x7e, 0xc6, 0xe6, 0xdf, + 0x80, 0x6a, 0xba, 0x2d, 0x9f, 0xf2, 0xb5, 0xea, 0x27, 0x71, 0xcd, 0x66, 0x3d, 0x9d, 0xae, 0x0b, + 0x99, 0xd1, 0x9e, 0x24, 0x36, 0x92, 0x5b, 0xe9, 0xca, 0xe3, 0xc1, 0xda, 0x43, 0xc4, 0x72, 0x1a, + 0xe7, 0xb2, 0xa6, 0xb1, 0xf9, 0xab, 0x39, 0x98, 0xe2, 0xde, 0xa4, 0xcf, 0xbf, 0xae, 0xf8, 0xbe, + 0x26, 0x9c, 0xe5, 0x5e, 0x60, 0xaa, 0x76, 0xc7, 0x68, 0x8b, 0xdf, 0x80, 0xb3, 0x7d, 0x4d, 0x81, + 0x02, 0x7a, 0x5e, 0xfa, 0xf1, 0xf6, 0x89, 0xe8, 0xe9, 0xec, 0x4c, 0x36, 0x6f, 0x59, 0x7d, 0x14, + 0xe6, 0x3f, 0xcc, 0xf5, 0xf1, 0x17, 0x7a, 0xa3, 0xaa, 0x09, 0x1a, 0x4f, 0xa6, 0x09, 0xe6, 0x3e, + 0x91, 0x26, 0x98, 0x1f, 0x46, 0x13, 0xfc, 0x08, 0xc6, 0xd7, 0xa9, 0xc3, 0x34, 0x1a, 0x71, 0xd9, + 0xac, 0xa0, 0x3d, 0x17, 0xcc, 0xd2, 0xa4, 0x7c, 0x89, 0x2f, 0xaa, 0x46, 0x8c, 0x80, 0x89, 0x16, + 0x7e, 0xfb, 0xcc, 0xd2, 0x39, 0xa8, 0x8b, 0xc6, 0xc8, 0xe0, 0x45, 0xc3, 0xfc, 0x66, 0x0e, 0xc6, + 0x14, 0xf6, 0xe4, 0x0b, 0x50, 0x59, 0x0d, 0x76, 0x9c, 0x8e, 0xf7, 0xb3, 0x8e, 0xb2, 0xfd, 0x8a, + 0xc5, 0xf7, 0x15, 0xb8, 0xa5, 0x61, 0xa1, 0xdb, 0x0c, 0x75, 0xf6, 0xd5, 0x81, 0xcf, 0x8a, 0x67, + 0x21, 0x54, 0xb9, 0x2c, 0x9c, 0x1f, 0xe2, 0xb2, 0xb0, 0x7e, 0xd3, 0xb6, 0xf0, 0xe4, 0x37, 0x6d, + 0xb5, 0x8b, 0xb1, 0x23, 0x4f, 0x78, 0x31, 0xd6, 0xfc, 0xf5, 0x1c, 0x54, 0xc5, 0xc3, 0xba, 0x72, + 0xf3, 0xf0, 0xb3, 0xf5, 0x0e, 0x83, 0x5e, 0xb9, 0x63, 0x8e, 0xc7, 0x0a, 0xbf, 0xf3, 0x07, 0x35, + 0x7c, 0x26, 0x35, 0xdd, 0x1c, 0xf2, 0x99, 0x54, 0x1d, 0x9e, 0xbe, 0x39, 0x90, 0xa6, 0xb2, 0xd2, + 0xf8, 0xe6, 0x9f, 0xe5, 0xd2, 0xbc, 0x85, 0x36, 0xf5, 0x1a, 0x8c, 0xf2, 0x77, 0xd1, 0xa4, 0x73, + 0xb3, 0x88, 0xdd, 0x84, 0x20, 0x4b, 0xa6, 0x3d, 0xc9, 0x1d, 0x92, 0x93, 0xde, 0xca, 0x25, 0xb7, + 0xc5, 0xdb, 0x33, 0x75, 0xd7, 0x0d, 0x68, 0x18, 0x0a, 0x45, 0x0b, 0xcf, 0xee, 0x1e, 0xd1, 0x6d, + 0x9b, 0xfb, 0x95, 0x38, 0xae, 0x1b, 0x58, 0x1a, 0x1e, 0x99, 0x83, 0x33, 0x9a, 0x7b, 0x92, 0xa4, + 0x1f, 0x49, 0x56, 0x0b, 0xf1, 0xde, 0x0e, 0x12, 0x67, 0x22, 0x3f, 0xbb, 0x77, 0xc2, 0xcd, 0xff, + 0x6d, 0xb0, 0xb9, 0xd6, 0xda, 0xfb, 0x8c, 0xdd, 0x6e, 0x61, 0x55, 0x3a, 0x46, 0xd9, 0xff, 0x77, + 0x06, 0xf7, 0x4f, 0x17, 0xc3, 0xe7, 0x6d, 0x28, 0xf2, 0x57, 0xd8, 0x84, 0x27, 0xb5, 0xca, 0x85, + 0x27, 0x24, 0xe7, 0x53, 0xfc, 0x2d, 0x37, 0x4b, 0x10, 0x30, 0x93, 0x59, 0x77, 0x93, 0x47, 0xc5, + 0xb3, 0xdf, 0x3f, 0x5e, 0x62, 0xa9, 0x71, 0x49, 0x87, 0x8b, 0x77, 0x6d, 0x9c, 0x1c, 0x97, 0xd4, + 0xfc, 0xbf, 0x39, 0x5e, 0x1f, 0x51, 0xa8, 0x61, 0x03, 0xee, 0x5d, 0x81, 0x02, 0xbe, 0xf7, 0xab, + 0x44, 0x35, 0x4c, 0xbd, 0xf5, 0x8b, 0xe9, 0x6c, 0xde, 0xa0, 0xac, 0x55, 0x2f, 0x54, 0xa1, 0x38, + 0x56, 0xe7, 0x0d, 0x62, 0x60, 0x34, 0x69, 0xdf, 0xa5, 0xea, 0x74, 0xe8, 0xe8, 0x81, 0xbf, 0x31, + 0x9d, 0xdc, 0x56, 0xfc, 0x9a, 0xd5, 0x0d, 0x8d, 0xfd, 0x07, 0x8e, 0xcd, 0xfd, 0x69, 0x55, 0x69, + 0x9b, 0xb8, 0x40, 0x2f, 0xc0, 0x84, 0x7e, 0x57, 0x59, 0x18, 0x1d, 0x78, 0xe5, 0x3b, 0x75, 0xcf, + 0x59, 0x55, 0x6f, 0x75, 0x22, 0xd2, 0x80, 0x71, 0xed, 0x42, 0xaa, 0x1a, 0x84, 0x95, 0x47, 0x87, + 0xb1, 0xfb, 0x23, 0x29, 0xe8, 0x24, 0xca, 0x86, 0xf9, 0xe7, 0xa1, 0x2a, 0x66, 0x66, 0x7c, 0xb7, + 0x0d, 0x55, 0xbb, 0xa5, 0x79, 0x4b, 0x9d, 0x4d, 0x2d, 0xcf, 0x0d, 0x2c, 0x84, 0x9a, 0xdf, 0x31, + 0xe0, 0x82, 0x78, 0x5d, 0xce, 0xa2, 0x21, 0xd3, 0x21, 0xf1, 0x42, 0x1c, 0x8e, 0xc7, 0x2f, 0x90, + 0x77, 0x65, 0xe0, 0x29, 0x5d, 0x40, 0xa6, 0xf3, 0x68, 0x8c, 0x8b, 0x41, 0x39, 0x82, 0xa1, 0xa7, + 0x64, 0xc0, 0xa9, 0xb7, 0x45, 0xc0, 0xa9, 0xdc, 0xf1, 0xc4, 0xf1, 0xbc, 0x70, 0x69, 0x47, 0x06, + 0x9a, 0xfa, 0x8d, 0x1c, 0x9c, 0xcd, 0x28, 0xd6, 0xe6, 0x17, 0x9e, 0x53, 0xe1, 0xd0, 0xd0, 0x84, + 0x83, 0x8c, 0x48, 0x38, 0xb0, 0xe1, 0x33, 0x65, 0xc5, 0xef, 0x19, 0x70, 0x5e, 0x1f, 0x3d, 0xc2, + 0x16, 0xdd, 0xbc, 0x45, 0xde, 0x81, 0xe2, 0x22, 0x75, 0x5c, 0x2a, 0xaf, 0x60, 0xc4, 0xd1, 0xbd, + 0xc4, 0xee, 0x30, 0x4f, 0xe4, 0x6c, 0xff, 0x8c, 0x4f, 0xe5, 0x53, 0x96, 0x20, 0x21, 0xf3, 0xa2, + 0x70, 0xfc, 0x78, 0xca, 0x94, 0x27, 0x35, 0x59, 0x59, 0x1d, 0xa3, 0x18, 0xff, 0x1c, 0xbc, 0x70, + 0x0c, 0x09, 0xeb, 0x37, 0xd6, 0xf3, 0x6a, 0xbf, 0xe1, 0xba, 0x82, 0x50, 0xf2, 0x3e, 0x4c, 0xae, + 0x8b, 0x8b, 0x62, 0xb2, 0x37, 0x94, 0xe0, 0xee, 0xf2, 0x0e, 0x99, 0x2d, 0xbb, 0x25, 0x8d, 0xcc, + 0xd6, 0x7a, 0x3d, 0x73, 0xe1, 0xe3, 0xf0, 0x0a, 0x14, 0x17, 0x7d, 0x25, 0xea, 0x36, 0x76, 0x2e, + 0xbe, 0x67, 0xe5, 0xb9, 0x96, 0x48, 0x8a, 0x8d, 0xb5, 0x5c, 0xe6, 0x51, 0xc4, 0x37, 0x0d, 0xa8, + 0xea, 0xbc, 0x9f, 0xb6, 0xbd, 0xdf, 0xd3, 0xda, 0xfb, 0x85, 0xec, 0xf6, 0x1e, 0xdc, 0xd0, 0x7d, + 0xc1, 0x18, 0x86, 0x6a, 0x61, 0x13, 0x8a, 0xf3, 0xfe, 0xbe, 0xe3, 0x75, 0xd4, 0x00, 0x02, 0x2e, + 0x42, 0x2c, 0x91, 0xa2, 0xb4, 0x56, 0x7e, 0x60, 0x6b, 0x99, 0xdf, 0x2e, 0xc0, 0x05, 0x8b, 0xee, + 0x78, 0x4c, 0xeb, 0xd9, 0x08, 0xbd, 0xce, 0x8e, 0x76, 0x50, 0x64, 0xa6, 0x1a, 0x5c, 0xb8, 0xc7, + 0x31, 0x48, 0xdc, 0xde, 0xd7, 0xa0, 0xc4, 0x44, 0xaf, 0xd2, 0xe6, 0x68, 0xc9, 0x60, 0x18, 0x1c, + 0x6c, 0xf8, 0x38, 0x99, 0x5c, 0x17, 0x0b, 0x83, 0xe2, 0xc0, 0xcc, 0x16, 0x86, 0xd4, 0x7b, 0xec, + 0x7c, 0x71, 0x88, 0x35, 0xa5, 0xc2, 0x00, 0x4d, 0xe9, 0x3e, 0x9c, 0xa9, 0xbb, 0x5c, 0xe8, 0x38, + 0xed, 0xb5, 0xc0, 0xeb, 0xb4, 0xbc, 0xae, 0xd3, 0x96, 0x9a, 0x36, 0x7f, 0x9d, 0x3e, 0x4e, 0xb7, + 0xbb, 0x31, 0x82, 0x95, 0x49, 0xc6, 0xaa, 0x31, 0xbf, 0xd2, 0xe4, 0x51, 0x4e, 0x8a, 0xc8, 0x02, + 0xab, 0xe1, 0x76, 0x42, 0x1e, 0xe6, 0xc4, 0x8a, 0x93, 0x51, 0x47, 0xc3, 0x3b, 0x0c, 0xeb, 0xcb, + 0xcd, 0x7b, 0xe2, 0x4e, 0x80, 0xf4, 0xaf, 0xe2, 0x57, 0x1e, 0xa2, 0x76, 0x88, 0x46, 0xb9, 0x86, + 0x97, 0xd0, 0x35, 0x9b, 0x8b, 0x8c, 0xae, 0xd4, 0x47, 0x17, 0x86, 0xbb, 0x2a, 0x1d, 0xc7, 0x63, + 0xf6, 0x3f, 0xf7, 0x50, 0xc1, 0x01, 0x51, 0x4e, 0x34, 0xba, 0x00, 0xa1, 0x5c, 0xa3, 0x53, 0x50, + 0xc8, 0xbb, 0x70, 0x7a, 0x61, 0x6e, 0x56, 0x3a, 0xfb, 0xcf, 0xfb, 0xad, 0xde, 0x3e, 0xed, 0x44, + 0x78, 0xf9, 0xa4, 0xc2, 0xfb, 0x90, 0xb6, 0x66, 0xd9, 0x28, 0xc8, 0x42, 0x13, 0x2e, 0xff, 0xfc, + 0xc2, 0xd8, 0x9c, 0xef, 0xd2, 0x70, 0xf3, 0xe6, 0x67, 0xcc, 0xe5, 0x5f, 0xa9, 0x1b, 0xce, 0xb6, + 0x9b, 0x99, 0x33, 0xf3, 0xef, 0xa0, 0xcb, 0x7f, 0x1f, 0x2e, 0xf9, 0x09, 0x18, 0xc1, 0x4f, 0xb1, + 0x8c, 0x9e, 0xce, 0x60, 0x9b, 0x2c, 0xa1, 0x2d, 0x1e, 0xb0, 0x02, 0x09, 0xc8, 0x52, 0x12, 0x91, + 0xfe, 0x09, 0x1c, 0x57, 0xc5, 0xad, 0x53, 0xfd, 0x29, 0x12, 0x17, 0x2a, 0x6a, 0x86, 0x6c, 0x8c, + 0x2c, 0x3a, 0xe1, 0x2e, 0x75, 0xe7, 0xe4, 0x63, 0x82, 0x15, 0x3e, 0x46, 0x76, 0x11, 0x8a, 0xcf, + 0xa4, 0x58, 0x0a, 0x0a, 0x93, 0x0e, 0x4b, 0xe1, 0x46, 0x28, 0x8a, 0x22, 0x4c, 0x1b, 0x0f, 0x4d, + 0x52, 0xd7, 0x12, 0x49, 0x28, 0x2d, 0x65, 0x40, 0xc6, 0xc0, 0x69, 0xed, 0xd1, 0x60, 0xf3, 0xe6, + 0xa7, 0x21, 0x2d, 0xf5, 0x3c, 0x8e, 0xe9, 0x93, 0xdf, 0x2c, 0xc5, 0xf1, 0x56, 0x34, 0x64, 0xa6, + 0xf8, 0x25, 0xc7, 0xed, 0x46, 0xa2, 0xf8, 0x25, 0xc7, 0xed, 0xaa, 0xe2, 0x17, 0xa3, 0xc6, 0xe1, + 0x70, 0x73, 0x27, 0x84, 0xc3, 0x1d, 0x10, 0x81, 0x5b, 0x7a, 0x6a, 0x7e, 0x86, 0x1e, 0x23, 0xf8, + 0x12, 0x54, 0xea, 0x51, 0xe4, 0xb4, 0x76, 0xa9, 0x8b, 0x61, 0x97, 0x95, 0x53, 0x3e, 0x47, 0xc0, + 0x55, 0x1f, 0x30, 0x15, 0x57, 0x79, 0x8c, 0x64, 0x74, 0x88, 0xc7, 0x48, 0x66, 0x60, 0x74, 0xa9, + 0xf3, 0xd0, 0x63, 0x6d, 0x52, 0x4a, 0x22, 0x3e, 0x78, 0x1c, 0xa4, 0xbf, 0x60, 0x81, 0x20, 0xf2, + 0x36, 0x94, 0xd8, 0xa2, 0x83, 0x77, 0x97, 0xcb, 0x89, 0x7e, 0x2e, 0xde, 0xc1, 0xde, 0x15, 0x49, + 0xea, 0x26, 0xb2, 0x44, 0x27, 0xb7, 0x61, 0x54, 0x9a, 0xc4, 0x90, 0xe8, 0xe4, 0x82, 0xd2, 0xe1, + 0x29, 0x5a, 0x90, 0x09, 0x61, 0x12, 0xbf, 0xab, 0x5f, 0x0a, 0x19, 0x53, 0x2e, 0x5b, 0x2b, 0x97, + 0x42, 0xb4, 0xcb, 0xd6, 0xca, 0xf5, 0x90, 0xd8, 0xc2, 0xa9, 0x9c, 0x68, 0xe1, 0x6c, 0x42, 0x65, + 0xcd, 0x09, 0x22, 0x8f, 0x2d, 0x47, 0x9d, 0x88, 0xc7, 0xca, 0x4a, 0x0c, 0x70, 0x25, 0xa9, 0xf1, + 0x92, 0xbc, 0x74, 0xdc, 0x55, 0xf0, 0xf5, 0xdb, 0xaa, 0x09, 0x9c, 0xac, 0x64, 0xb8, 0x0d, 0x8a, + 0xc8, 0x8e, 0x78, 0xae, 0xa7, 0xec, 0x46, 0x89, 0x1a, 0xa9, 0xfb, 0xe3, 0xfd, 0x1e, 0x87, 0xb7, + 0x78, 0x1f, 0xa0, 0x21, 0x38, 0x89, 0x6c, 0x30, 0x64, 0x08, 0xea, 0x15, 0x29, 0x6b, 0x30, 0x46, + 0x24, 0x5f, 0x87, 0x0a, 0xfb, 0x8f, 0x81, 0x83, 0x3c, 0xca, 0x63, 0x61, 0x25, 0x6e, 0x64, 0xfa, + 0x84, 0xe6, 0xd1, 0x85, 0x9a, 0x34, 0xe2, 0x13, 0x18, 0x19, 0xa7, 0x77, 0x53, 0x34, 0x6e, 0xe6, + 0x0f, 0x0d, 0x38, 0x3f, 0x80, 0xc7, 0xd0, 0xcf, 0x10, 0xcd, 0x24, 0x0b, 0x92, 0x62, 0x70, 0x8b, + 0x05, 0x49, 0x1d, 0x18, 0x72, 0x69, 0xca, 0x8e, 0x62, 0x95, 0xff, 0xd4, 0xa2, 0x58, 0x99, 0x87, + 0x06, 0x8c, 0x29, 0x3d, 0xfb, 0x0c, 0x5f, 0x17, 0xb8, 0x22, 0xc2, 0x39, 0xe6, 0x13, 0xbc, 0xd4, + 0xab, 0xd2, 0x3c, 0x7c, 0xe3, 0x37, 0x00, 0x96, 0x9d, 0x30, 0xaa, 0xb7, 0x22, 0xef, 0x21, 0x1d, + 0x42, 0x8c, 0x25, 0xb7, 0xef, 0x1d, 0x8c, 0x8e, 0xca, 0xc8, 0xfa, 0x6e, 0xdf, 0xc7, 0x0c, 0xcd, + 0x15, 0x28, 0x36, 0xfd, 0x20, 0x6a, 0x1c, 0xf0, 0xb5, 0x69, 0x9e, 0x86, 0x2d, 0x75, 0xdb, 0xcd, + 0x43, 0x03, 0xbc, 0x65, 0x89, 0x24, 0xa6, 0x20, 0xde, 0xf1, 0x68, 0xdb, 0x55, 0x8f, 0x5d, 0x1e, + 0x30, 0x80, 0xc5, 0xe1, 0xd7, 0x3f, 0x80, 0x49, 0x19, 0x51, 0x6e, 0x7d, 0xb9, 0x89, 0x35, 0x98, + 0x84, 0xb1, 0xcd, 0x05, 0x6b, 0xe9, 0xce, 0x57, 0xed, 0x3b, 0x1b, 0xcb, 0xcb, 0xd5, 0x53, 0x64, + 0x1c, 0xca, 0x02, 0x30, 0x57, 0xaf, 0x1a, 0xa4, 0x02, 0xa5, 0xa5, 0x95, 0xe6, 0xc2, 0xdc, 0x86, + 0xb5, 0x50, 0xcd, 0x5d, 0x7f, 0x0d, 0x26, 0x92, 0x43, 0x15, 0xbc, 0x78, 0x39, 0x0a, 0x79, 0xab, + 0xbe, 0x55, 0x3d, 0x45, 0x00, 0x8a, 0x6b, 0xf7, 0xe6, 0x9a, 0x37, 0x6f, 0x56, 0x8d, 0xeb, 0x9f, + 0xcf, 0x78, 0xca, 0x9b, 0x71, 0x6a, 0xd2, 0xae, 0x13, 0x38, 0x11, 0xe5, 0xd9, 0xdc, 0xef, 0xb5, + 0x23, 0xaf, 0xdb, 0xa6, 0x8f, 0xab, 0xc6, 0xf5, 0xb7, 0xfb, 0x5e, 0xe4, 0x26, 0x67, 0x61, 0x6a, + 0x63, 0xa5, 0x7e, 0xbf, 0xb1, 0x74, 0x77, 0x63, 0x75, 0xa3, 0x69, 0xdf, 0xaf, 0xaf, 0xcf, 0x2d, + 0x56, 0x4f, 0xb1, 0x02, 0xdf, 0x5f, 0x6d, 0xae, 0xdb, 0xd6, 0xc2, 0xdc, 0xc2, 0xca, 0x7a, 0xd5, + 0xb8, 0xfe, 0x6b, 0x06, 0x4c, 0xe8, 0x4f, 0xdc, 0x91, 0xcb, 0x70, 0x69, 0xa3, 0xb9, 0x60, 0xd9, + 0xeb, 0xab, 0xf7, 0x16, 0x56, 0xec, 0x8d, 0x66, 0xfd, 0xee, 0x82, 0xbd, 0xb1, 0xd2, 0x5c, 0x5b, + 0x98, 0x5b, 0xba, 0xb3, 0xb4, 0x30, 0x5f, 0x3d, 0x45, 0x6a, 0xf0, 0x82, 0x82, 0x61, 0x2d, 0xcc, + 0xad, 0x6e, 0x2e, 0x58, 0xf6, 0x5a, 0xbd, 0xd9, 0xdc, 0x5a, 0xb5, 0xe6, 0xab, 0x06, 0xb9, 0x08, + 0xe7, 0x32, 0x10, 0xee, 0xdf, 0xa9, 0x57, 0x73, 0x7d, 0x69, 0x2b, 0x0b, 0x5b, 0xf5, 0x65, 0xbb, + 0xb1, 0xba, 0x5e, 0xcd, 0x5f, 0xff, 0x80, 0x69, 0x21, 0xc9, 0x1b, 0x14, 0xa4, 0x04, 0x85, 0x95, + 0xd5, 0x95, 0x85, 0xea, 0x29, 0x32, 0x06, 0xa3, 0x6b, 0x0b, 0x2b, 0xf3, 0x4b, 0x2b, 0x77, 0x79, + 0xb3, 0xd6, 0xd7, 0xd6, 0xac, 0xd5, 0xcd, 0x85, 0xf9, 0x6a, 0x8e, 0xb5, 0xdd, 0xfc, 0xc2, 0x0a, + 0x2b, 0x59, 0xfe, 0xba, 0xc9, 0xe3, 0x2e, 0x6b, 0x61, 0x43, 0x59, 0x6b, 0x2d, 0x7c, 0x65, 0x7d, + 0x61, 0xa5, 0xb9, 0xb4, 0xba, 0x52, 0x3d, 0x75, 0xfd, 0x52, 0x0a, 0x47, 0xf6, 0x44, 0xb3, 0xb9, + 0x58, 0x3d, 0x75, 0xfd, 0xeb, 0x50, 0x51, 0x17, 0x61, 0x72, 0x1e, 0x4e, 0xab, 0xdf, 0x6b, 0xb4, + 0xe3, 0x7a, 0x9d, 0x9d, 0xea, 0xa9, 0x74, 0x82, 0xd5, 0xeb, 0x74, 0x58, 0x02, 0x56, 0x5e, 0x4d, + 0x58, 0xa7, 0xc1, 0xbe, 0xd7, 0x61, 0xeb, 0x6b, 0x35, 0xd7, 0xa8, 0x7e, 0xff, 0x2f, 0x5e, 0x3a, + 0xf5, 0xfd, 0x1f, 0xbc, 0x64, 0xfc, 0xd9, 0x0f, 0x5e, 0x32, 0xfe, 0xeb, 0x0f, 0x5e, 0x32, 0xb6, + 0x8b, 0x38, 0xd0, 0x6f, 0xfd, 0xff, 0x00, 0x00, 0x00, 0xff, 0xff, 0xd2, 0x17, 0xe4, 0xd4, 0x7a, + 0xb7, 0x00, 0x00, } func (m *KeepAlive) Marshal() (dAtA []byte, err error) { @@ -13125,12 +13164,15 @@ func (m *ClusterNetworkingConfigSpecV2) MarshalToSizedBuffer(dAtA []byte) (int, } if m.TunnelStrategy != nil { { - size := m.TunnelStrategy.Size() - i -= size - if _, err := m.TunnelStrategy.MarshalTo(dAtA[i:]); err != nil { + size, err := m.TunnelStrategy.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { return 0, err } + i -= size + i = encodeVarintTypes(dAtA, i, uint64(size)) } + i-- + dAtA[i] = 0x4a } if m.RoutingStrategy != 0 { i = encodeVarintTypes(dAtA, i, uint64(m.RoutingStrategy)) @@ -13177,12 +13219,48 @@ func (m *ClusterNetworkingConfigSpecV2) MarshalToSizedBuffer(dAtA []byte) (int, return len(dAtA) - i, nil } -func (m *ClusterNetworkingConfigSpecV2_AgentMesh) MarshalTo(dAtA []byte) (int, error) { +func (m *TunnelStrategyV1) 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 *TunnelStrategyV1) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *TunnelStrategyV1) 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 m.Strategy != nil { + { + size := m.Strategy.Size() + i -= size + if _, err := m.Strategy.MarshalTo(dAtA[i:]); err != nil { + return 0, err + } + } + } + return len(dAtA) - i, nil +} + +func (m *TunnelStrategyV1_AgentMesh) MarshalTo(dAtA []byte) (int, error) { size := m.Size() return m.MarshalToSizedBuffer(dAtA[:size]) } -func (m *ClusterNetworkingConfigSpecV2_AgentMesh) MarshalToSizedBuffer(dAtA []byte) (int, error) { +func (m *TunnelStrategyV1_AgentMesh) MarshalToSizedBuffer(dAtA []byte) (int, error) { i := len(dAtA) if m.AgentMesh != nil { { @@ -13194,16 +13272,16 @@ func (m *ClusterNetworkingConfigSpecV2_AgentMesh) MarshalToSizedBuffer(dAtA []by i = encodeVarintTypes(dAtA, i, uint64(size)) } i-- - dAtA[i] = 0x4a + dAtA[i] = 0xa } return len(dAtA) - i, nil } -func (m *ClusterNetworkingConfigSpecV2_ProxyPeering) MarshalTo(dAtA []byte) (int, error) { +func (m *TunnelStrategyV1_ProxyPeering) MarshalTo(dAtA []byte) (int, error) { size := m.Size() return m.MarshalToSizedBuffer(dAtA[:size]) } -func (m *ClusterNetworkingConfigSpecV2_ProxyPeering) MarshalToSizedBuffer(dAtA []byte) (int, error) { +func (m *TunnelStrategyV1_ProxyPeering) MarshalToSizedBuffer(dAtA []byte) (int, error) { i := len(dAtA) if m.ProxyPeering != nil { { @@ -13215,7 +13293,7 @@ func (m *ClusterNetworkingConfigSpecV2_ProxyPeering) MarshalToSizedBuffer(dAtA [ i = encodeVarintTypes(dAtA, i, uint64(size)) } i-- - dAtA[i] = 0x52 + dAtA[i] = 0x12 } return len(dAtA) - i, nil } @@ -13243,13 +13321,6 @@ func (m *AgentMeshTunnelStrategy) MarshalToSizedBuffer(dAtA []byte) (int, error) i -= len(m.XXX_unrecognized) copy(dAtA[i:], m.XXX_unrecognized) } - if len(m.Type) > 0 { - i -= len(m.Type) - copy(dAtA[i:], m.Type) - i = encodeVarintTypes(dAtA, i, uint64(len(m.Type))) - i-- - dAtA[i] = 0xa - } return len(dAtA) - i, nil } @@ -13280,14 +13351,7 @@ func (m *ProxyPeeringTunnelStrategy) MarshalToSizedBuffer(dAtA []byte) (int, err if m.AgentConnectionCount != 0 { i = encodeVarintTypes(dAtA, i, uint64(m.AgentConnectionCount)) i-- - dAtA[i] = 0x10 - } - if len(m.Type) > 0 { - i -= len(m.Type) - copy(dAtA[i:], m.Type) - i = encodeVarintTypes(dAtA, i, uint64(len(m.Type))) - i-- - dAtA[i] = 0xa + dAtA[i] = 0x8 } return len(dAtA) - i, nil } @@ -13885,12 +13949,12 @@ func (m *UserTokenSpecV3) MarshalToSizedBuffer(dAtA []byte) (int, error) { i -= len(m.XXX_unrecognized) copy(dAtA[i:], m.XXX_unrecognized) } - n75, err75 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.Created, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.Created):]) - if err75 != nil { - return 0, err75 + n76, err76 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.Created, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.Created):]) + if err76 != nil { + return 0, err76 } - i -= n75 - i = encodeVarintTypes(dAtA, i, uint64(n75)) + i -= n76 + i = encodeVarintTypes(dAtA, i, uint64(n76)) i-- dAtA[i] = 0x22 if m.Usage != 0 { @@ -14007,12 +14071,12 @@ func (m *UserTokenSecretsSpecV3) MarshalToSizedBuffer(dAtA []byte) (int, error) i -= len(m.XXX_unrecognized) copy(dAtA[i:], m.XXX_unrecognized) } - n78, err78 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.Created, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.Created):]) - if err78 != nil { - return 0, err78 + n79, err79 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.Created, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.Created):]) + if err79 != nil { + return 0, err79 } - i -= n78 - i = encodeVarintTypes(dAtA, i, uint64(n78)) + i -= n79 + i = encodeVarintTypes(dAtA, i, uint64(n79)) i-- dAtA[i] = 0x1a if len(m.QRCode) > 0 { @@ -14176,20 +14240,20 @@ func (m *AccessReview) MarshalToSizedBuffer(dAtA []byte) (int, error) { copy(dAtA[i:], m.XXX_unrecognized) } if len(m.ThresholdIndexes) > 0 { - dAtA82 := make([]byte, len(m.ThresholdIndexes)*10) - var j81 int + dAtA83 := make([]byte, len(m.ThresholdIndexes)*10) + var j82 int for _, num := range m.ThresholdIndexes { for num >= 1<<7 { - dAtA82[j81] = uint8(uint64(num)&0x7f | 0x80) + dAtA83[j82] = uint8(uint64(num)&0x7f | 0x80) num >>= 7 - j81++ + j82++ } - dAtA82[j81] = uint8(num) - j81++ + dAtA83[j82] = uint8(num) + j82++ } - i -= j81 - copy(dAtA[i:], dAtA82[:j81]) - i = encodeVarintTypes(dAtA, i, uint64(j81)) + i -= j82 + copy(dAtA[i:], dAtA83[:j82]) + i = encodeVarintTypes(dAtA, i, uint64(j82)) i-- dAtA[i] = 0x3a } @@ -14203,12 +14267,12 @@ func (m *AccessReview) MarshalToSizedBuffer(dAtA []byte) (int, error) { } i-- dAtA[i] = 0x32 - n84, err84 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.Created, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.Created):]) - if err84 != nil { - return 0, err84 + n85, err85 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.Created, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.Created):]) + if err85 != nil { + return 0, err85 } - i -= n84 - i = encodeVarintTypes(dAtA, i, uint64(n84)) + i -= n85 + i = encodeVarintTypes(dAtA, i, uint64(n85)) i-- dAtA[i] = 0x2a if len(m.Reason) > 0 { @@ -14311,20 +14375,20 @@ func (m *ThresholdIndexSet) MarshalToSizedBuffer(dAtA []byte) (int, error) { copy(dAtA[i:], m.XXX_unrecognized) } if len(m.Indexes) > 0 { - dAtA87 := make([]byte, len(m.Indexes)*10) - var j86 int + dAtA88 := make([]byte, len(m.Indexes)*10) + var j87 int for _, num := range m.Indexes { for num >= 1<<7 { - dAtA87[j86] = uint8(uint64(num)&0x7f | 0x80) + dAtA88[j87] = uint8(uint64(num)&0x7f | 0x80) num >>= 7 - j86++ + j87++ } - dAtA87[j86] = uint8(num) - j86++ + dAtA88[j87] = uint8(num) + j87++ } - i -= j86 - copy(dAtA[i:], dAtA87[:j86]) - i = encodeVarintTypes(dAtA, i, uint64(j86)) + i -= j87 + copy(dAtA[i:], dAtA88[:j87]) + i = encodeVarintTypes(dAtA, i, uint64(j87)) i-- dAtA[i] = 0xa } @@ -14491,21 +14555,21 @@ func (m *AccessRequestSpecV3) MarshalToSizedBuffer(dAtA []byte) (int, error) { i-- dAtA[i] = 0x32 } - n91, err91 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.Expires, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.Expires):]) - if err91 != nil { - return 0, err91 - } - i -= n91 - i = encodeVarintTypes(dAtA, i, uint64(n91)) - i-- - dAtA[i] = 0x2a - n92, err92 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.Created, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.Created):]) + n92, err92 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.Expires, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.Expires):]) if err92 != nil { return 0, err92 } i -= n92 i = encodeVarintTypes(dAtA, i, uint64(n92)) i-- + dAtA[i] = 0x2a + n93, err93 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.Created, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.Created):]) + if err93 != nil { + return 0, err93 + } + i -= n93 + i = encodeVarintTypes(dAtA, i, uint64(n93)) + i-- dAtA[i] = 0x22 if m.State != 0 { i = encodeVarintTypes(dAtA, i, uint64(m.State)) @@ -16203,12 +16267,12 @@ func (m *UserSpecV2) MarshalToSizedBuffer(dAtA []byte) (int, error) { } i-- dAtA[i] = 0x42 - n119, err119 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.Expires, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.Expires):]) - if err119 != nil { - return 0, err119 + n120, err120 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.Expires, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.Expires):]) + if err120 != nil { + return 0, err120 } - i -= n119 - i = encodeVarintTypes(dAtA, i, uint64(n119)) + i -= n120 + i = encodeVarintTypes(dAtA, i, uint64(n120)) i-- dAtA[i] = 0x3a { @@ -16350,29 +16414,29 @@ func (m *LoginStatus) MarshalToSizedBuffer(dAtA []byte) (int, error) { i -= len(m.XXX_unrecognized) copy(dAtA[i:], m.XXX_unrecognized) } - n122, err122 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.RecoveryAttemptLockExpires, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.RecoveryAttemptLockExpires):]) - if err122 != nil { - return 0, err122 - } - i -= n122 - i = encodeVarintTypes(dAtA, i, uint64(n122)) - i-- - dAtA[i] = 0x2a - n123, err123 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.LockExpires, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.LockExpires):]) + n123, err123 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.RecoveryAttemptLockExpires, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.RecoveryAttemptLockExpires):]) if err123 != nil { return 0, err123 } i -= n123 i = encodeVarintTypes(dAtA, i, uint64(n123)) i-- - dAtA[i] = 0x22 - n124, err124 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.LockedTime, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.LockedTime):]) + dAtA[i] = 0x2a + n124, err124 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.LockExpires, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.LockExpires):]) if err124 != nil { return 0, err124 } i -= n124 i = encodeVarintTypes(dAtA, i, uint64(n124)) i-- + dAtA[i] = 0x22 + n125, err125 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.LockedTime, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.LockedTime):]) + if err125 != nil { + return 0, err125 + } + i -= n125 + i = encodeVarintTypes(dAtA, i, uint64(n125)) + i-- dAtA[i] = 0x1a if len(m.LockedMessage) > 0 { i -= len(m.LockedMessage) @@ -16428,12 +16492,12 @@ func (m *CreatedBy) MarshalToSizedBuffer(dAtA []byte) (int, error) { } i-- dAtA[i] = 0x1a - n126, err126 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.Time, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.Time):]) - if err126 != nil { - return 0, err126 + n127, err127 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.Time, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.Time):]) + if err127 != nil { + return 0, err127 } - i -= n126 - i = encodeVarintTypes(dAtA, i, uint64(n126)) + i -= n127 + i = encodeVarintTypes(dAtA, i, uint64(n127)) i-- dAtA[i] = 0x12 if m.Connector != nil { @@ -16551,21 +16615,21 @@ func (m *MFADevice) MarshalToSizedBuffer(dAtA []byte) (int, error) { } } } - n129, err129 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.LastUsed, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.LastUsed):]) - if err129 != nil { - return 0, err129 - } - i -= n129 - i = encodeVarintTypes(dAtA, i, uint64(n129)) - i-- - dAtA[i] = 0x3a - n130, err130 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.AddedAt, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.AddedAt):]) + n130, err130 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.LastUsed, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.LastUsed):]) if err130 != nil { return 0, err130 } i -= n130 i = encodeVarintTypes(dAtA, i, uint64(n130)) i-- + dAtA[i] = 0x3a + n131, err131 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.AddedAt, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.AddedAt):]) + if err131 != nil { + return 0, err131 + } + i -= n131 + i = encodeVarintTypes(dAtA, i, uint64(n131)) + i-- dAtA[i] = 0x32 if len(m.Id) > 0 { i -= len(m.Id) @@ -17161,12 +17225,12 @@ func (m *TunnelConnectionSpecV2) MarshalToSizedBuffer(dAtA []byte) (int, error) i-- dAtA[i] = 0x22 } - n139, err139 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.LastHeartbeat, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.LastHeartbeat):]) - if err139 != nil { - return 0, err139 + n140, err140 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.LastHeartbeat, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.LastHeartbeat):]) + if err140 != nil { + return 0, err140 } - i -= n139 - i = encodeVarintTypes(dAtA, i, uint64(n139)) + i -= n140 + i = encodeVarintTypes(dAtA, i, uint64(n140)) i-- dAtA[i] = 0x1a if len(m.ProxyName) > 0 { @@ -17258,12 +17322,12 @@ func (m *AcquireSemaphoreRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) i-- dAtA[i] = 0x2a } - n140, err140 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.Expires, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.Expires):]) - if err140 != nil { - return 0, err140 + n141, err141 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.Expires, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.Expires):]) + if err141 != nil { + return 0, err141 } - i -= n140 - i = encodeVarintTypes(dAtA, i, uint64(n140)) + i -= n141 + i = encodeVarintTypes(dAtA, i, uint64(n141)) i-- dAtA[i] = 0x22 if m.MaxLeases != 0 { @@ -17312,12 +17376,12 @@ func (m *SemaphoreLease) MarshalToSizedBuffer(dAtA []byte) (int, error) { i -= len(m.XXX_unrecognized) copy(dAtA[i:], m.XXX_unrecognized) } - n141, err141 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.Expires, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.Expires):]) - if err141 != nil { - return 0, err141 + n142, err142 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.Expires, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.Expires):]) + if err142 != nil { + return 0, err142 } - i -= n141 - i = encodeVarintTypes(dAtA, i, uint64(n141)) + i -= n142 + i = encodeVarintTypes(dAtA, i, uint64(n142)) i-- dAtA[i] = 0x2a if len(m.LeaseID) > 0 { @@ -17375,12 +17439,12 @@ func (m *SemaphoreLeaseRef) MarshalToSizedBuffer(dAtA []byte) (int, error) { i-- dAtA[i] = 0x1a } - n142, err142 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.Expires, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.Expires):]) - if err142 != nil { - return 0, err142 + n143, err143 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.Expires, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.Expires):]) + if err143 != nil { + return 0, err143 } - i -= n142 - i = encodeVarintTypes(dAtA, i, uint64(n142)) + i -= n143 + i = encodeVarintTypes(dAtA, i, uint64(n143)) i-- dAtA[i] = 0x12 if len(m.LeaseID) > 0 { @@ -17599,29 +17663,29 @@ func (m *WebSessionSpecV2) MarshalToSizedBuffer(dAtA []byte) (int, error) { i-- dAtA[i] = 0x48 } - n147, err147 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.LoginTime, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.LoginTime):]) - if err147 != nil { - return 0, err147 - } - i -= n147 - i = encodeVarintTypes(dAtA, i, uint64(n147)) - i-- - dAtA[i] = 0x42 - n148, err148 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.Expires, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.Expires):]) + n148, err148 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.LoginTime, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.LoginTime):]) if err148 != nil { return 0, err148 } i -= n148 i = encodeVarintTypes(dAtA, i, uint64(n148)) i-- - dAtA[i] = 0x3a - n149, err149 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.BearerTokenExpires, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.BearerTokenExpires):]) + dAtA[i] = 0x42 + n149, err149 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.Expires, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.Expires):]) if err149 != nil { return 0, err149 } i -= n149 i = encodeVarintTypes(dAtA, i, uint64(n149)) i-- + dAtA[i] = 0x3a + n150, err150 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.BearerTokenExpires, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.BearerTokenExpires):]) + if err150 != nil { + return 0, err150 + } + i -= n150 + i = encodeVarintTypes(dAtA, i, uint64(n150)) + i-- dAtA[i] = 0x32 if len(m.BearerToken) > 0 { i -= len(m.BearerToken) @@ -17787,12 +17851,12 @@ func (m *RemoteClusterStatusV3) MarshalToSizedBuffer(dAtA []byte) (int, error) { i -= len(m.XXX_unrecognized) copy(dAtA[i:], m.XXX_unrecognized) } - n152, err152 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.LastHeartbeat, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.LastHeartbeat):]) - if err152 != nil { - return 0, err152 + n153, err153 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.LastHeartbeat, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.LastHeartbeat):]) + if err153 != nil { + return 0, err153 } - i -= n152 - i = encodeVarintTypes(dAtA, i, uint64(n152)) + i -= n153 + i = encodeVarintTypes(dAtA, i, uint64(n153)) i-- dAtA[i] = 0x12 if len(m.Connection) > 0 { @@ -19564,12 +19628,12 @@ func (m *LockSpecV2) MarshalToSizedBuffer(dAtA []byte) (int, error) { copy(dAtA[i:], m.XXX_unrecognized) } if m.Expires != nil { - n171, err171 := github_com_gogo_protobuf_types.StdTimeMarshalTo(*m.Expires, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(*m.Expires):]) - if err171 != nil { - return 0, err171 + n172, err172 := github_com_gogo_protobuf_types.StdTimeMarshalTo(*m.Expires, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(*m.Expires):]) + if err172 != nil { + return 0, err172 } - i -= n171 - i = encodeVarintTypes(dAtA, i, uint64(n171)) + i -= n172 + i = encodeVarintTypes(dAtA, i, uint64(n172)) i-- dAtA[i] = 0x1a } @@ -20243,12 +20307,12 @@ func (m *RecoveryCodesSpecV1) MarshalToSizedBuffer(dAtA []byte) (int, error) { i -= len(m.XXX_unrecognized) copy(dAtA[i:], m.XXX_unrecognized) } - n181, err181 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.Created, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.Created):]) - if err181 != nil { - return 0, err181 + n182, err182 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.Created, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.Created):]) + if err182 != nil { + return 0, err182 } - i -= n181 - i = encodeVarintTypes(dAtA, i, uint64(n181)) + i -= n182 + i = encodeVarintTypes(dAtA, i, uint64(n182)) i-- dAtA[i] = 0x12 if len(m.Codes) > 0 { @@ -20478,21 +20542,21 @@ func (m *SessionTrackerSpecV1) MarshalToSizedBuffer(dAtA []byte) (int, error) { i-- dAtA[i] = 0x32 } - n184, err184 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.Expires, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.Expires):]) - if err184 != nil { - return 0, err184 - } - i -= n184 - i = encodeVarintTypes(dAtA, i, uint64(n184)) - i-- - dAtA[i] = 0x2a - n185, err185 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.Created, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.Created):]) + n185, err185 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.Expires, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.Expires):]) if err185 != nil { return 0, err185 } i -= n185 i = encodeVarintTypes(dAtA, i, uint64(n185)) i-- + dAtA[i] = 0x2a + n186, err186 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.Created, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.Created):]) + if err186 != nil { + return 0, err186 + } + i -= n186 + i = encodeVarintTypes(dAtA, i, uint64(n186)) + i-- dAtA[i] = 0x22 if m.State != 0 { i = encodeVarintTypes(dAtA, i, uint64(m.State)) @@ -20595,12 +20659,12 @@ func (m *Participant) MarshalToSizedBuffer(dAtA []byte) (int, error) { i -= len(m.XXX_unrecognized) copy(dAtA[i:], m.XXX_unrecognized) } - n186, err186 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.LastActive, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.LastActive):]) - if err186 != nil { - return 0, err186 + n187, err187 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.LastActive, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.LastActive):]) + if err187 != nil { + return 0, err187 } - i -= n186 - i = encodeVarintTypes(dAtA, i, uint64(n186)) + i -= n187 + i = encodeVarintTypes(dAtA, i, uint64(n187)) i-- dAtA[i] = 0x22 if len(m.Mode) > 0 { @@ -22135,7 +22199,23 @@ func (m *ClusterNetworkingConfigSpecV2) Size() (n int) { n += 1 + sovTypes(uint64(m.RoutingStrategy)) } if m.TunnelStrategy != nil { - n += m.TunnelStrategy.Size() + l = m.TunnelStrategy.Size() + n += 1 + l + sovTypes(uint64(l)) + } + if m.XXX_unrecognized != nil { + n += len(m.XXX_unrecognized) + } + return n +} + +func (m *TunnelStrategyV1) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.Strategy != nil { + n += m.Strategy.Size() } if m.XXX_unrecognized != nil { n += len(m.XXX_unrecognized) @@ -22143,7 +22223,7 @@ func (m *ClusterNetworkingConfigSpecV2) Size() (n int) { return n } -func (m *ClusterNetworkingConfigSpecV2_AgentMesh) Size() (n int) { +func (m *TunnelStrategyV1_AgentMesh) Size() (n int) { if m == nil { return 0 } @@ -22155,7 +22235,7 @@ func (m *ClusterNetworkingConfigSpecV2_AgentMesh) Size() (n int) { } return n } -func (m *ClusterNetworkingConfigSpecV2_ProxyPeering) Size() (n int) { +func (m *TunnelStrategyV1_ProxyPeering) Size() (n int) { if m == nil { return 0 } @@ -22173,10 +22253,6 @@ func (m *AgentMeshTunnelStrategy) Size() (n int) { } var l int _ = l - l = len(m.Type) - if l > 0 { - n += 1 + l + sovTypes(uint64(l)) - } if m.XXX_unrecognized != nil { n += len(m.XXX_unrecognized) } @@ -22189,10 +22265,6 @@ func (m *ProxyPeeringTunnelStrategy) Size() (n int) { } var l int _ = l - l = len(m.Type) - if l > 0 { - n += 1 + l + sovTypes(uint64(l)) - } if m.AgentConnectionCount != 0 { n += 1 + sovTypes(uint64(m.AgentConnectionCount)) } @@ -35675,6 +35747,93 @@ func (m *ClusterNetworkingConfigSpecV2) Unmarshal(dAtA []byte) error { } } case 9: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field TunnelStrategy", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTypes + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthTypes + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthTypes + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.TunnelStrategy == nil { + m.TunnelStrategy = &TunnelStrategyV1{} + } + if err := m.TunnelStrategy.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipTypes(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthTypes + } + 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 *TunnelStrategyV1) 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 ErrIntOverflowTypes + } + 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: TunnelStrategyV1: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: TunnelStrategyV1: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: if wireType != 2 { return fmt.Errorf("proto: wrong wireType = %d for field AgentMesh", wireType) } @@ -35707,9 +35866,9 @@ func (m *ClusterNetworkingConfigSpecV2) Unmarshal(dAtA []byte) error { if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } - m.TunnelStrategy = &ClusterNetworkingConfigSpecV2_AgentMesh{v} + m.Strategy = &TunnelStrategyV1_AgentMesh{v} iNdEx = postIndex - case 10: + case 2: if wireType != 2 { return fmt.Errorf("proto: wrong wireType = %d for field ProxyPeering", wireType) } @@ -35742,7 +35901,7 @@ func (m *ClusterNetworkingConfigSpecV2) Unmarshal(dAtA []byte) error { if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } - m.TunnelStrategy = &ClusterNetworkingConfigSpecV2_ProxyPeering{v} + m.Strategy = &TunnelStrategyV1_ProxyPeering{v} iNdEx = postIndex default: iNdEx = preIndex @@ -35795,38 +35954,6 @@ func (m *AgentMeshTunnelStrategy) Unmarshal(dAtA []byte) error { return fmt.Errorf("proto: AgentMeshTunnelStrategy: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { - case 1: - 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 ErrIntOverflowTypes - } - 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 ErrInvalidLengthTypes - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthTypes - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Type = TunnelStrategyType(dAtA[iNdEx:postIndex]) - iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipTypes(dAtA[iNdEx:]) @@ -35879,38 +36006,6 @@ func (m *ProxyPeeringTunnelStrategy) Unmarshal(dAtA []byte) error { } switch fieldNum { case 1: - 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 ErrIntOverflowTypes - } - 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 ErrInvalidLengthTypes - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthTypes - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Type = TunnelStrategyType(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 2: if wireType != 0 { return fmt.Errorf("proto: wrong wireType = %d for field AgentConnectionCount", wireType) } diff --git a/api/types/types.proto b/api/types/types.proto index 67215d6ff874..63ca7d9b8c97 100644 --- a/api/types/types.proto +++ b/api/types/types.proto @@ -923,36 +923,24 @@ message ClusterNetworkingConfigSpecV2 { // RoutingStrategy determines the strategy used to route to nodes. RoutingStrategy RoutingStrategy = 8 [ (gogoproto.jsontag) = "routing_strategy,omitempty" ]; - // TunnelStrategy determines the tunnel strategy used in the cluster. - oneof TunnelStrategy { - AgentMeshTunnelStrategy AgentMesh = 9 [ - (gogoproto.jsontag) = "tunnel_strategy,omitempty", - (gogoproto.moretags) = "yaml:\"tunnel_strategy,omitempty\"" - ]; - ProxyPeeringTunnelStrategy ProxyPeering = 10 [ - (gogoproto.jsontag) = "tunnel_strategy,omitempty", - (gogoproto.moretags) = "yaml:\"tunnel_strategy,omitempty\"" - ]; + // TunnelStrategyV1 determines the tunnel strategy used in the cluster. + TunnelStrategyV1 TunnelStrategy = 9 [ (gogoproto.jsontag) = "tunnel_strategy,omitempty" ]; +} + +// TunnelStrategyV1 defines possible tunnel strategy types. +message TunnelStrategyV1 { + oneof Strategy { + AgentMeshTunnelStrategy AgentMesh = 1 [ (gogoproto.jsontag) = "agent_mesh,omitempty" ]; + ProxyPeeringTunnelStrategy ProxyPeering = 2 [ (gogoproto.jsontag) = "proxy_peering,omitempty" ]; } } // AgentMeshTunnelStrategy requires reverse tunnels to dial every proxy. -message AgentMeshTunnelStrategy { - string Type = 1 [ - (gogoproto.jsontag) = "type,omitempty", - (gogoproto.moretags) = "yaml:\"type,omitempty\"", - (gogoproto.casttype) = "TunnelStrategyType" - ]; -} +message AgentMeshTunnelStrategy {} // ProxyPeeringTunnelStrategy requires reverse tunnels to dial a fixed number of proxies. message ProxyPeeringTunnelStrategy { - string Type = 1 [ - (gogoproto.jsontag) = "type,omitempty", - (gogoproto.moretags) = "yaml:\"type,omitempty\"", - (gogoproto.casttype) = "TunnelStrategyType" - ]; - int64 AgentConnectionCount = 2 [ + int64 AgentConnectionCount = 1 [ (gogoproto.jsontag) = "agent_connection_count,omitempty", (gogoproto.moretags) = "yaml:\"agent_connection_count,omitempty\"" ]; diff --git a/api/utils/conv.go b/api/utils/conv.go index 4d9678e27aba..3952b31ab39f 100644 --- a/api/utils/conv.go +++ b/api/utils/conv.go @@ -18,6 +18,7 @@ limitations under the License. package utils import ( + "bytes" "encoding/json" "github.com/gravitational/trace" @@ -59,3 +60,20 @@ func ObjectToStruct(in interface{}, out interface{}) error { } return nil } + +// StrictObjectToStruct converts any structure into JSON and then unmarshalls +// it into another structure using a strict decoder. +func StrictObjectToStruct(in interface{}, out interface{}) error { + data, err := json.Marshal(in) + if err != nil { + return trace.Wrap(err, "failed to marshal %v, %v", in, err) + } + + dec := json.NewDecoder(bytes.NewReader(data)) + dec.DisallowUnknownFields() + + if err := dec.Decode(out); err != nil { + return trace.Wrap(err, "failed to unmarshal %v into %T, %v", in, out, err) + } + return nil +} diff --git a/lib/config/configuration.go b/lib/config/configuration.go index edb0cb277669..e1ebcb6bcfa4 100644 --- a/lib/config/configuration.go +++ b/lib/config/configuration.go @@ -573,15 +573,6 @@ func applyAuthConfig(fc *FileConfig, cfg *service.Config) error { return trace.Wrap(err) } - tunnelStrategy, err := fc.Auth.TunnelStrategy.Parse() - if err != nil { - return trace.Wrap(err) - } - err = cfg.Auth.NetworkingConfig.SetTunnelStrategy(tunnelStrategy) - if err != nil { - return trace.Wrap(err) - } - // Set cluster networking configuration from file configuration. cfg.Auth.NetworkingConfig, err = types.NewClusterNetworkingConfigFromConfigFile(types.ClusterNetworkingConfigSpecV2{ ClientIdleTimeout: fc.Auth.ClientIdleTimeout, @@ -592,7 +583,7 @@ func applyAuthConfig(fc *FileConfig, cfg *service.Config) error { SessionControlTimeout: fc.Auth.SessionControlTimeout, ProxyListenerMode: fc.Auth.ProxyListenerMode, RoutingStrategy: fc.Auth.RoutingStrategy, - TunnelStrategy: tunnelStrategy, + TunnelStrategy: fc.Auth.TunnelStrategy, }) if err != nil { return trace.Wrap(err) diff --git a/lib/config/configuration_test.go b/lib/config/configuration_test.go index be7562dbde24..e9cfa2e6e2b2 100644 --- a/lib/config/configuration_test.go +++ b/lib/config/configuration_test.go @@ -885,6 +885,7 @@ func TestTunnelStrategy(t *testing.T) { tests := []struct { desc string config string + readErr require.ErrorAssertionFunc applyErr require.ErrorAssertionFunc tunnelStrategy interface{} }{ @@ -894,6 +895,7 @@ func TestTunnelStrategy(t *testing.T) { "auth_service:", " enabled: yes", }, "\n"), + readErr: require.NoError, applyErr: require.NoError, tunnelStrategy: types.DefaultAgentMeshTunnelStrategy(), }, @@ -905,6 +907,7 @@ func TestTunnelStrategy(t *testing.T) { " tunnel_strategy:", " type: proxy_peering", }, "\n"), + readErr: require.NoError, applyErr: require.NoError, tunnelStrategy: types.DefaultProxyPeeringTunnelStrategy(), }, @@ -917,9 +920,9 @@ func TestTunnelStrategy(t *testing.T) { " type: proxy_peering", " agent_connection_count: 2", }, "\n"), + readErr: require.NoError, applyErr: require.NoError, tunnelStrategy: &types.ProxyPeeringTunnelStrategy{ - Type: types.ProxyPeering, AgentConnectionCount: 2, }, }, @@ -932,27 +935,30 @@ func TestTunnelStrategy(t *testing.T) { " type: agent_mesh", " agent_connection_count: 2", }, "\n"), - applyErr: require.Error, + readErr: require.Error, + applyErr: require.NoError, tunnelStrategy: types.DefaultAgentMeshTunnelStrategy(), }, } for _, tc := range tests { - conf, err := ReadConfig(bytes.NewBufferString(tc.config)) - require.NoError(t, err, tc.desc) + t.Run(tc.desc, func(t *testing.T) { + conf, err := ReadConfig(bytes.NewBufferString(tc.config)) + tc.readErr(t, err) - cfg := service.MakeDefaultConfig() - err = ApplyFileConfig(conf, cfg) - tc.applyErr(t, err, tc.desc) - - var actualStrategy interface{} - if cfg.Auth.NetworkingConfig == nil { - } else if s := cfg.Auth.NetworkingConfig.GetAgentMeshTunnelStrategy(); s != nil { - actualStrategy = s - } else if s := cfg.Auth.NetworkingConfig.GetProxyPeeringTunnelStrategy(); s != nil { - actualStrategy = s - } - require.Equal(t, tc.tunnelStrategy, actualStrategy, tc.desc) + cfg := service.MakeDefaultConfig() + err = ApplyFileConfig(conf, cfg) + tc.applyErr(t, err) + + var actualStrategy interface{} + if cfg.Auth.NetworkingConfig == nil { + } else if s := cfg.Auth.NetworkingConfig.GetAgentMeshTunnelStrategy(); s != nil { + actualStrategy = s + } else if s := cfg.Auth.NetworkingConfig.GetProxyPeeringTunnelStrategy(); s != nil { + actualStrategy = s + } + require.Equal(t, tc.tunnelStrategy, actualStrategy) + }) } } diff --git a/lib/config/fileconf.go b/lib/config/fileconf.go index 72a4033cfd29..9680fe16ac36 100644 --- a/lib/config/fileconf.go +++ b/lib/config/fileconf.go @@ -582,7 +582,7 @@ type Auth struct { RoutingStrategy types.RoutingStrategy `yaml:"routing_strategy,omitempty"` // TunnelStrategy configures the tunnel strategy used by the cluster. - TunnelStrategy types.TunnelStrategyConfig `yaml:"tunnel_strategy,omitempty"` + TunnelStrategy *types.TunnelStrategyV1 `yaml:"tunnel_strategy,omitempty"` } // CAKeyParams configures how CA private keys will be created and stored. From bf8e81602e3de6c43a6ebca2549c2e57f98a3749 Mon Sep 17 00:00:00 2001 From: David Date: Thu, 17 Mar 2022 15:35:39 -0600 Subject: [PATCH 17/30] Remove unnecessary allocation --- lib/proxy/conn.go | 3 --- 1 file changed, 3 deletions(-) diff --git a/lib/proxy/conn.go b/lib/proxy/conn.go index 7f647c983dcc..01d114812a84 100644 --- a/lib/proxy/conn.go +++ b/lib/proxy/conn.go @@ -37,9 +37,6 @@ type Stream interface { Recv() (*proto.Frame, error) } -// Check that streamConn implements net.Conn. -var _ net.Conn = &streamConn{} - // streamConn wraps a grpc stream with a net.streamConn interface. type streamConn struct { stream Stream From 7fe69fe44505c81bd90dcb7d9f040fe3155f84a0 Mon Sep 17 00:00:00 2001 From: David Date: Thu, 17 Mar 2022 15:37:30 -0600 Subject: [PATCH 18/30] Clean up proxy server tests --- lib/proxy/server_test.go | 77 +++++++++++++++++++-------------------- lib/proxy/service_test.go | 3 ++ 2 files changed, 41 insertions(+), 39 deletions(-) diff --git a/lib/proxy/server_test.go b/lib/proxy/server_test.go index 473764ebda3e..547f7fa86d17 100644 --- a/lib/proxy/server_test.go +++ b/lib/proxy/server_test.go @@ -40,7 +40,7 @@ import ( ) // newSelfSignedCA creates a new CA for testing. -func newSelfSignedCA(t *testing.T) (*tlsca.CertAuthority, error) { +func newSelfSignedCA(t *testing.T) *tlsca.CertAuthority { rsaKey, err := ssh.ParseRawPrivateKey(fixtures.PEMBytes["rsa"]) require.NoError(t, err) @@ -52,7 +52,7 @@ func newSelfSignedCA(t *testing.T) (*tlsca.CertAuthority, error) { ca, err := tlsca.FromCertAndSigner(cert, rsaKey.(*rsa.PrivateKey)) require.NoError(t, err) - return ca, nil + return ca } // certFromIdentity creates a tls config for a given CA and identity. @@ -101,11 +101,8 @@ type mockAccessCache struct { // TestServerTLS ensures that only trusted certificates with the proxy role // are accepted by the server. func TestServerTLS(t *testing.T) { - ca1, err := newSelfSignedCA(t) - require.NoError(t, err) - - ca2, err := newSelfSignedCA(t) - require.NoError(t, err) + ca1 := newSelfSignedCA(t) + ca2 := newSelfSignedCA(t) tests := []struct { desc string @@ -146,38 +143,40 @@ func TestServerTLS(t *testing.T) { } for _, tc := range tests { - listener, err := net.Listen("tcp", "localhost:0") - require.NoError(t, err) - - clientCAs := tc.server.RootCAs - tc.server.RootCAs = nil - - server, err := NewServer(ServerConfig{ - AccessCache: &mockAccessCache{}, - Listener: listener, - TLSConfig: tc.server, - ClusterDialer: &mockClusterDialer{}, - getConfigForClient: func(chi *tls.ClientHelloInfo) (*tls.Config, error) { - config := tc.server.Clone() - config.ClientAuth = tls.RequireAndVerifyClientCert - config.ClientCAs = clientCAs - return config, nil - }, + t.Run(tc.desc, func(t *testing.T) { + listener, err := net.Listen("tcp", "localhost:0") + require.NoError(t, err) + + clientCAs := tc.server.RootCAs + tc.server.RootCAs = nil + + server, err := NewServer(ServerConfig{ + AccessCache: &mockAccessCache{}, + Listener: listener, + TLSConfig: tc.server, + ClusterDialer: &mockClusterDialer{}, + getConfigForClient: func(chi *tls.ClientHelloInfo) (*tls.Config, error) { + config := tc.server.Clone() + config.ClientAuth = tls.RequireAndVerifyClientCert + config.ClientCAs = clientCAs + return config, nil + }, + }) + require.NoError(t, err) + go server.Serve() + t.Cleanup(func() { server.Close() }) + + creds := newProxyCredentials(credentials.NewTLS(tc.client)) + conn, err := grpc.Dial(listener.Addr().String(), grpc.WithTransportCredentials(creds)) + require.NoError(t, err) + + func() { + defer conn.Close() + + client := proto.NewProxyServiceClient(conn) + _, err = client.DialNode(context.Background()) + tc.assertErr(t, err) + }() }) - require.NoError(t, err) - go server.Serve() - t.Cleanup(func() { server.Close() }) - - creds := newProxyCredentials(credentials.NewTLS(tc.client)) - conn, err := grpc.Dial(listener.Addr().String(), grpc.WithTransportCredentials(creds)) - require.NoError(t, err) - - func() { - defer conn.Close() - - client := proto.NewProxyServiceClient(conn) - _, err = client.DialNode(context.Background()) - tc.assertErr(t, err, tc.desc) - }() } } diff --git a/lib/proxy/service_test.go b/lib/proxy/service_test.go index fe37e667defb..ae34b21417d2 100644 --- a/lib/proxy/service_test.go +++ b/lib/proxy/service_test.go @@ -107,6 +107,9 @@ func TestSendReceive(t *testing.T) { }}) require.NoError(t, err) + _, err = stream.Recv() + require.NoError(t, err) + for i := 0; i < 10; i++ { send := append(send, byte(i)) err = stream.Send(&proto.Frame{Message: &proto.Frame_Data{Data: &proto.Data{ From 985fe3a6e68355c48bd4b7be218261f9da1f099e Mon Sep 17 00:00:00 2001 From: David Date: Fri, 18 Mar 2022 08:33:26 -0600 Subject: [PATCH 19/30] Update tunnel strategy config to be private --- api/types/tunnel_strategy.go | 47 +++++++++++++++++++----------------- 1 file changed, 25 insertions(+), 22 deletions(-) diff --git a/api/types/tunnel_strategy.go b/api/types/tunnel_strategy.go index ffc866c0f5d7..65ed55d21ed3 100644 --- a/api/types/tunnel_strategy.go +++ b/api/types/tunnel_strategy.go @@ -40,14 +40,21 @@ type TunnelStrategy interface { CheckAndSetDefaults() error } -// TunnelStrategyConfig represents a unparsed tunnel strategy configuration. -type TunnelStrategyConfig struct { +// tunnelStrategyConfig represents a unparsed tunnel strategy configuration. +type tunnelStrategyConfig struct { Type TunnelStrategyType `yaml:"type" json:"type"` Params map[string]interface{} `yaml:",inline" json:"-"` } -// SetFromMap sets a TunnelStrategyConfig from a map. -func (c *TunnelStrategyConfig) SetFromMap(m map[string]interface{}) error { +// newTunnelStrategyConfig creates a new tunnelStrategyConfig instance. +func newTunnelStrategyConfig() *tunnelStrategyConfig { + return &tunnelStrategyConfig{ + Params: make(map[string]interface{}), + } +} + +// setFromMap sets a TunnelStrategyConfig from a map. +func (c *tunnelStrategyConfig) setFromMap(m map[string]interface{}) error { rawStrategy, ok := m[tunnelStrategyTypeParam] if !ok { return trace.BadParameter("missing type parameter") @@ -67,8 +74,8 @@ func (c *TunnelStrategyConfig) SetFromMap(m map[string]interface{}) error { return nil } -// GetMapCopy returns a TunnelStrategyConfig as a map. -func (c *TunnelStrategyConfig) GetMapCopy() map[string]interface{} { +// getMapCopy returns a TunnelStrategyConfig as a map. +func (c *tunnelStrategyConfig) getMapCopy() map[string]interface{} { mCopy := make(map[string]interface{}) for k, v := range c.Params { mCopy[k] = v @@ -79,21 +86,21 @@ func (c *TunnelStrategyConfig) GetMapCopy() map[string]interface{} { // MarshalYAML converts a TunnelStrategyV1 to yaml. func (s *TunnelStrategyV1) MarshalYAML() (interface{}, error) { - var config *TunnelStrategyConfig - err := s.marshal(func(c *TunnelStrategyConfig) error { + var config *tunnelStrategyConfig + err := s.marshal(func(c *tunnelStrategyConfig) error { config = c return nil }) if err != nil { return nil, trace.Wrap(err) } - return config.GetMapCopy(), nil + return config.getMapCopy(), nil } // UnmarshalYAML converts yaml to a TunnelStrategyV1 using a strict policy to // disallow unknown fields. func (s *TunnelStrategyV1) UnmarshalYAML(unmarshal func(interface{}) error) error { - err := s.unmarshal(utils.StrictObjectToStruct, func(c *TunnelStrategyConfig) error { + err := s.unmarshal(utils.StrictObjectToStruct, func(c *tunnelStrategyConfig) error { return trace.Wrap(unmarshal(c)) }) return trace.Wrap(err) @@ -102,9 +109,9 @@ func (s *TunnelStrategyV1) UnmarshalYAML(unmarshal func(interface{}) error) erro // MarshalJSON converts a TunnelStrategyV1 to json. func (s *TunnelStrategyV1) MarshalJSON() ([]byte, error) { var data []byte - err := s.marshal(func(c *TunnelStrategyConfig) error { + err := s.marshal(func(c *tunnelStrategyConfig) error { var err error - data, err = json.Marshal(c.GetMapCopy()) + data, err = json.Marshal(c.getMapCopy()) return trace.Wrap(err) }) if err != nil { @@ -116,23 +123,21 @@ func (s *TunnelStrategyV1) MarshalJSON() ([]byte, error) { // UnmarshalJSON converts json to a TunnelStrategyV1. Unknown fields are allowed // to prevent rollbacks causing issues decoding this data from the backend. func (s *TunnelStrategyV1) UnmarshalJSON(data []byte) error { - err := s.unmarshal(utils.ObjectToStruct, func(c *TunnelStrategyConfig) error { + err := s.unmarshal(utils.ObjectToStruct, func(c *tunnelStrategyConfig) error { params := make(map[string]interface{}) err := json.Unmarshal(data, ¶ms) if err != nil { return trace.Wrap(err) } - return trace.Wrap(c.SetFromMap(params)) + return trace.Wrap(c.setFromMap(params)) }) return trace.Wrap(err) } // marshal converts a TunnelStrategyV1 to a TunnelStrategyConfig before calling // the given marshal function. -func (s *TunnelStrategyV1) marshal(marshal func(*TunnelStrategyConfig) error) error { - config := &TunnelStrategyConfig{ - Params: make(map[string]interface{}), - } +func (s *TunnelStrategyV1) marshal(marshal func(*tunnelStrategyConfig) error) error { + config := newTunnelStrategyConfig() switch strategy := s.Strategy.(type) { case *TunnelStrategyV1_AgentMesh: config.Type = AgentMesh @@ -156,10 +161,8 @@ func (s *TunnelStrategyV1) marshal(marshal func(*TunnelStrategyConfig) error) er // objectToStructFunc is a function that converts one struct to another. type objectToStructFunc func(interface{}, interface{}) error -func (s *TunnelStrategyV1) unmarshal(ots objectToStructFunc, unmarshal func(*TunnelStrategyConfig) error) error { - config := &TunnelStrategyConfig{ - Params: make(map[string]interface{}), - } +func (s *TunnelStrategyV1) unmarshal(ots objectToStructFunc, unmarshal func(*tunnelStrategyConfig) error) error { + config := newTunnelStrategyConfig() err := unmarshal(config) if err != nil { return trace.Wrap(err) From 666c595e9237cb2d49fb410f1a6944217196d941 Mon Sep 17 00:00:00 2001 From: David Date: Fri, 18 Mar 2022 08:44:15 -0600 Subject: [PATCH 20/30] Remove ref to war dial --- api/types/networking.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/api/types/networking.go b/api/types/networking.go index 7f7935174be0..102e1c931dea 100644 --- a/api/types/networking.go +++ b/api/types/networking.go @@ -92,7 +92,7 @@ type ClusterNetworkingConfig interface { // GetTunnelStrategy gets the tunnel strategy. GetTunnelStrategyType() (TunnelStrategyType, error) - // GetAgentMeshTunnelStrategy gets the war dial tunnel strategy. + // GetAgentMeshTunnelStrategy gets the agent mesh tunnel strategy. GetAgentMeshTunnelStrategy() *AgentMeshTunnelStrategy // GetProxyPeeringTunnelStrategy gets the proxy peering tunnel strategy. From a817afaac04b0dc5747e554fa290f2d98ac79edb Mon Sep 17 00:00:00 2001 From: David Date: Fri, 18 Mar 2022 13:36:02 -0600 Subject: [PATCH 21/30] Add license to new files --- api/types/tunnel_strategy.go | 16 ++++++++++++++++ api/types/tunnel_strategy_test.go | 16 ++++++++++++++++ 2 files changed, 32 insertions(+) diff --git a/api/types/tunnel_strategy.go b/api/types/tunnel_strategy.go index 65ed55d21ed3..88d7321800db 100644 --- a/api/types/tunnel_strategy.go +++ b/api/types/tunnel_strategy.go @@ -1,3 +1,19 @@ +/* +Copyright 2022 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 types import ( diff --git a/api/types/tunnel_strategy_test.go b/api/types/tunnel_strategy_test.go index 329e8e95f999..d3f35615255e 100644 --- a/api/types/tunnel_strategy_test.go +++ b/api/types/tunnel_strategy_test.go @@ -1,3 +1,19 @@ +/* +Copyright 2022 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 types import ( From 142e64d2e4330cf837faef1076ae52d23f5a0bd8 Mon Sep 17 00:00:00 2001 From: David Date: Wed, 23 Mar 2022 08:55:27 -0600 Subject: [PATCH 22/30] Fix connection established message --- lib/proxy/service.go | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/lib/proxy/service.go b/lib/proxy/service.go index 5448a187e2da..c9da7e7a77ac 100644 --- a/lib/proxy/service.go +++ b/lib/proxy/service.go @@ -80,7 +80,9 @@ func (s *proxyService) DialNode(stream proto.ProxyService_DialNodeServer) error } err = stream.Send(&proto.Frame{ - Message: &proto.Frame_ConnectionEstablished{}, + Message: &proto.Frame_ConnectionEstablished{ + ConnectionEstablished: &proto.ConnectionEstablished{}, + }, }) if err != nil { return trace.Wrap(err) From c4d9ade07faad89636633a03e68380f0719ec7d4 Mon Sep 17 00:00:00 2001 From: David Date: Thu, 31 Mar 2022 08:28:39 -0600 Subject: [PATCH 23/30] Clean up server test --- lib/proxy/server_test.go | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/lib/proxy/server_test.go b/lib/proxy/server_test.go index 547f7fa86d17..e3d83e77d9a3 100644 --- a/lib/proxy/server_test.go +++ b/lib/proxy/server_test.go @@ -170,13 +170,11 @@ func TestServerTLS(t *testing.T) { conn, err := grpc.Dial(listener.Addr().String(), grpc.WithTransportCredentials(creds)) require.NoError(t, err) - func() { - defer conn.Close() + defer conn.Close() - client := proto.NewProxyServiceClient(conn) - _, err = client.DialNode(context.Background()) - tc.assertErr(t, err) - }() + client := proto.NewProxyServiceClient(conn) + _, err = client.DialNode(context.Background()) + tc.assertErr(t, err) }) } } From 1d3e96f59d3896368fb022ae29ca97971e585254 Mon Sep 17 00:00:00 2001 From: David Date: Tue, 5 Apr 2022 12:30:53 -0600 Subject: [PATCH 24/30] Simplify stream conn to read and write directly to the stream --- lib/proxy/conn.go | 137 +++++++++++++++---------------------------- lib/proxy/service.go | 4 -- 2 files changed, 46 insertions(+), 95 deletions(-) diff --git a/lib/proxy/conn.go b/lib/proxy/conn.go index 01d114812a84..9848af32dbed 100644 --- a/lib/proxy/conn.go +++ b/lib/proxy/conn.go @@ -23,11 +23,7 @@ import ( "github.com/gravitational/teleport/api/client/proto" "github.com/gravitational/trace" -) - -const ( - // bufferSize is the connection buffer size. - bufferSize = 4 * 1024 + "google.golang.org/grpc" ) // Stream is a common interface for grpc client and server streams. @@ -40,121 +36,80 @@ type Stream interface { // streamConn wraps a grpc stream with a net.streamConn interface. type streamConn struct { stream Stream - local net.Conn - remote net.Conn + + wLock sync.Mutex + rLock sync.Mutex + rBytes []byte + rOff int src net.Addr dst net.Addr - - once sync.Once - wg sync.WaitGroup - err error } // newStreamConn creates a new streamConn. func newStreamConn(stream Stream, src net.Addr, dst net.Addr) *streamConn { - local, remote := net.Pipe() return &streamConn{ stream: stream, - local: local, - remote: remote, src: src, dst: dst, } } -// start begins copying data between the grpc stream and internal pipe. -func (c *streamConn) run() error { - var ( - sendErr error - receiveErr error - ) - c.wg.Add(2) - - go func() { - defer c.Close() - receiveErr = c.receive(c.stream) - c.wg.Done() - }() - go func() { - defer c.Close() - sendErr = c.send(c.stream) - c.wg.Done() - }() - - c.wg.Wait() - return trace.NewAggregate(sendErr, receiveErr) -} +// Read reads data reveived over the grpc stream. +func (c *streamConn) Read(b []byte) (n int, err error) { + c.rLock.Lock() + defer c.rLock.Unlock() -// receive reveives data from the stream and copies it to the internal pipe. -func (c *streamConn) receive(stream Stream) error { - for { - frame, err := stream.Recv() + if c.rOff == 0 { + frame, err := c.stream.Recv() if err != nil { - return trace.Wrap(err) + return 0, trace.ConnectionProblem(err, "failed to receive on stream") } data := frame.GetData() if data == nil { - return trace.Errorf("failed to get data from tunnel frame") + return 0, trace.ConnectionProblem(trace.Errorf("failed to receive on stream"), "invalid data frame") } - _, err = c.remote.Write(data.Bytes) - if err != nil { - return trace.Wrap(err) - } + c.rBytes = data.Bytes } -} -// send reads data from the internal pipe and sends it over the stream. -func (c *streamConn) send(stream Stream) error { - b := make([]byte, bufferSize) + copy(b, c.rBytes[c.rOff:]) - for { - n, err := c.remote.Read(b) - if err != nil { - return trace.Wrap(err) - } - - if n == 0 { - continue - } - - frame := &proto.Frame{Message: &proto.Frame_Data{Data: &proto.Data{Bytes: b[:n]}}} - err = stream.Send(frame) - if err != nil { - return trace.Wrap(err) - } + // Reset the read offset if all the data has been read. + if (len(c.rBytes) - c.rOff) <= len(b) { + n := len(c.rBytes) - c.rOff + c.rOff = 0 + return n, nil } -} -// Read reads data reveived over the grpc stream. -func (c *streamConn) Read(b []byte) (n int, err error) { - return c.local.Read(b) + c.rOff += len(b) + return len(b), nil } // Write sends data over the grpc stream. -func (c *streamConn) Write(b []byte) (n int, err error) { - return c.local.Write(b) +func (c *streamConn) Write(b []byte) (int, error) { + c.wLock.Lock() + defer c.wLock.Unlock() + + err := c.stream.Send(&proto.Frame{Message: &proto.Frame_Data{Data: &proto.Data{ + Bytes: b, + }}}) + if err != nil { + return 0, trace.ConnectionProblem(err, "failed to send on stream") + } + + return len(b), nil } // Close cleans up resources used by the connection. func (c *streamConn) Close() error { - c.once.Do(func() { - err := c.close() - c.err = err - }) - - c.wg.Wait() - return trace.Wrap(c.err) -} - -// close cleans up resources used by the connection. -func (c *streamConn) close() error { - localErr := c.local.Close() - remoteErr := c.remote.Close() + var err error + if cstream, ok := c.stream.(grpc.ClientStream); ok { + err = cstream.CloseSend() + } - return trace.NewAggregate(localErr, remoteErr) + return trace.Wrap(err) } // LocalAddr is the original source address of the client. @@ -168,15 +123,15 @@ func (c *streamConn) RemoteAddr() net.Addr { } func (c *streamConn) SetDeadline(t time.Time) error { - return c.local.SetDeadline(t) + return nil } func (c *streamConn) SetReadDeadline(t time.Time) error { - return c.local.SetReadDeadline(t) + return nil } func (c *streamConn) SetWriteDeadline(t time.Time) error { - return c.local.SetWriteDeadline(t) + return nil } // pipeConn copies between two ReadWriteCloser and closes them when done. @@ -190,9 +145,9 @@ func pipeConn(ctx context.Context, src net.Conn, dst net.Conn) (int64, int64, er errC := make(chan error, 1) cleanup := func(err error) { o.Do(func() { - src.Close() - dst.Close() - errC <- err + srcErr := src.Close() + dstErr := dst.Close() + errC <- trace.NewAggregate(err, srcErr, dstErr) close(errC) }) } diff --git a/lib/proxy/service.go b/lib/proxy/service.go index c9da7e7a77ac..85f31864356e 100644 --- a/lib/proxy/service.go +++ b/lib/proxy/service.go @@ -89,10 +89,6 @@ func (s *proxyService) DialNode(stream proto.ProxyService_DialNodeServer) error } streamConn := newStreamConn(stream, source, destination) - go func() { - err := streamConn.run() - log.WithError(err).Debug("Stream connection exited.") - }() sent, received, err := pipeConn(stream.Context(), streamConn, nodeConn) log.Debugf("Closing dial request from peer. sent: %d reveived %d", sent, received) From c3dda486df5ed4fba966ee0273f5b2c01dbd02ce Mon Sep 17 00:00:00 2001 From: David Date: Thu, 7 Apr 2022 11:24:07 -0600 Subject: [PATCH 25/30] Simplify stream conn read and chunk large writes --- lib/proxy/conn.go | 53 +++++++++++++++++++++++++++++++---------------- 1 file changed, 35 insertions(+), 18 deletions(-) diff --git a/lib/proxy/conn.go b/lib/proxy/conn.go index 9848af32dbed..5f323c9fdec1 100644 --- a/lib/proxy/conn.go +++ b/lib/proxy/conn.go @@ -26,6 +26,13 @@ import ( "google.golang.org/grpc" ) +const ( + // maxChunkSize is the maximum number of bytes to send in a single data message. + // According to https://github.com/grpc/grpc.github.io/issues/371 the optimal + // size is between 16KiB to 64KiB. + maxChunkSize int = 1024 * 16 +) + // Stream is a common interface for grpc client and server streams. type Stream interface { Context() context.Context @@ -40,7 +47,6 @@ type streamConn struct { wLock sync.Mutex rLock sync.Mutex rBytes []byte - rOff int src net.Addr dst net.Addr @@ -60,31 +66,32 @@ func (c *streamConn) Read(b []byte) (n int, err error) { c.rLock.Lock() defer c.rLock.Unlock() - if c.rOff == 0 { + if len(c.rBytes) == 0 { frame, err := c.stream.Recv() + if err == io.EOF { + return 0, io.EOF + } if err != nil { return 0, trace.ConnectionProblem(err, "failed to receive on stream") } data := frame.GetData() if data == nil { - return 0, trace.ConnectionProblem(trace.Errorf("failed to receive on stream"), "invalid data frame") + return 0, trace.BadParameter("received invalid data frame") } c.rBytes = data.Bytes } - copy(b, c.rBytes[c.rOff:]) + n = copy(b, c.rBytes) + c.rBytes = c.rBytes[n:] - // Reset the read offset if all the data has been read. - if (len(c.rBytes) - c.rOff) <= len(b) { - n := len(c.rBytes) - c.rOff - c.rOff = 0 - return n, nil + // Stop holding onto buffer immediately + if len(c.rBytes) == 0 { + c.rBytes = nil } - c.rOff += len(b) - return len(b), nil + return n, nil } // Write sends data over the grpc stream. @@ -92,14 +99,24 @@ func (c *streamConn) Write(b []byte) (int, error) { c.wLock.Lock() defer c.wLock.Unlock() - err := c.stream.Send(&proto.Frame{Message: &proto.Frame_Data{Data: &proto.Data{ - Bytes: b, - }}}) - if err != nil { - return 0, trace.ConnectionProblem(err, "failed to send on stream") + var sent int + for sent < len(b) { + upperBound := len(b) + if upperBound-sent > maxChunkSize { + upperBound = maxChunkSize + sent + } + + send := b[sent:upperBound] + err := c.stream.Send(&proto.Frame{Message: &proto.Frame_Data{Data: &proto.Data{ + Bytes: send, + }}}) + if err != nil { + return sent, trace.ConnectionProblem(err, "failed to send on stream") + } + sent += len(send) } - return len(b), nil + return sent, nil } // Close cleans up resources used by the connection. @@ -134,7 +151,7 @@ func (c *streamConn) SetWriteDeadline(t time.Time) error { return nil } -// pipeConn copies between two ReadWriteCloser and closes them when done. +// pipeConn copies between two net.Conns and closes them when done. func pipeConn(ctx context.Context, src net.Conn, dst net.Conn) (int64, int64, error) { var ( sent, received int64 From be0a01bf537e5137f423dd368e9b3c53dafd0ec6 Mon Sep 17 00:00:00 2001 From: David Date: Thu, 7 Apr 2022 11:51:31 -0600 Subject: [PATCH 26/30] Fix tunnel strategy and regenerate types.proto --- api/types/tunnel_strategy.go | 14 +- api/types/types.pb.go | 1422 +++++++++++++++++----------------- api/types/types.proto | 5 +- 3 files changed, 720 insertions(+), 721 deletions(-) diff --git a/api/types/tunnel_strategy.go b/api/types/tunnel_strategy.go index 88d7321800db..a0fe40c5ac40 100644 --- a/api/types/tunnel_strategy.go +++ b/api/types/tunnel_strategy.go @@ -20,6 +20,7 @@ import ( "encoding/json" "github.com/gravitational/teleport/api/utils" + "github.com/gravitational/trace" ) @@ -64,9 +65,7 @@ type tunnelStrategyConfig struct { // newTunnelStrategyConfig creates a new tunnelStrategyConfig instance. func newTunnelStrategyConfig() *tunnelStrategyConfig { - return &tunnelStrategyConfig{ - Params: make(map[string]interface{}), - } + return &tunnelStrategyConfig{} } // setFromMap sets a TunnelStrategyConfig from a map. @@ -75,12 +74,15 @@ func (c *tunnelStrategyConfig) setFromMap(m map[string]interface{}) error { if !ok { return trace.BadParameter("missing type parameter") } + + // The map representation of TunnelStrategyType is expected to be a string. strategyType, ok := rawStrategy.(string) if !ok { return trace.BadParameter("invalid type parameter") } c.Type = TunnelStrategyType(strategyType) + c.Params = make(map[string]interface{}, len(m)-1) for k, v := range m { if k == tunnelStrategyTypeParam { continue @@ -92,11 +94,13 @@ func (c *tunnelStrategyConfig) setFromMap(m map[string]interface{}) error { // getMapCopy returns a TunnelStrategyConfig as a map. func (c *tunnelStrategyConfig) getMapCopy() map[string]interface{} { - mCopy := make(map[string]interface{}) + mCopy := make(map[string]interface{}, len(c.Params)+1) for k, v := range c.Params { mCopy[k] = v } - mCopy[tunnelStrategyTypeParam] = c.Type + + // The map representation of TunnelStrategyType is expected to be a string. + mCopy[tunnelStrategyTypeParam] = string(c.Type) return mCopy } diff --git a/api/types/types.pb.go b/api/types/types.pb.go index 97b6bb60eec7..f10160be93de 100644 --- a/api/types/types.pb.go +++ b/api/types/types.pb.go @@ -3038,7 +3038,7 @@ var xxx_messageInfo_AgentMeshTunnelStrategy proto.InternalMessageInfo // ProxyPeeringTunnelStrategy requires reverse tunnels to dial a fixed number of proxies. type ProxyPeeringTunnelStrategy struct { - AgentConnectionCount int64 `protobuf:"varint,1,opt,name=AgentConnectionCount,proto3" json:"agent_connection_count,omitempty" yaml:"agent_connection_count,omitempty"` + AgentConnectionCount int64 `protobuf:"varint,1,opt,name=AgentConnectionCount,proto3" json:"agent_connection_count,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_unrecognized []byte `json:"-"` XXX_sizecache int32 `json:"-"` @@ -9182,244 +9182,244 @@ func init() { func init() { proto.RegisterFile("types.proto", fileDescriptor_d938547f84707355) } var fileDescriptor_d938547f84707355 = []byte{ - // 11763 bytes of a gzipped FileDescriptorProto + // 11742 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xdc, 0xbd, 0x6f, 0x6c, 0x1c, 0x49, 0x76, 0x18, 0xae, 0x9e, 0x19, 0x0e, 0x67, 0x1e, 0x87, 0xe4, 0xb0, 0xf4, 0x8f, 0xd2, 0x6a, 0x77, 0xb4, 0xbd, 0xbb, 0x5a, 0x49, 0xb7, 0x2b, 0x9e, 0xa8, 0x5b, 0x9d, 0xf7, 0xf6, 0xdf, 0xcd, 0x90, - 0x94, 0xc8, 0x15, 0x45, 0x72, 0x7b, 0xf8, 0xe7, 0xce, 0x77, 0xe7, 0x76, 0x73, 0xba, 0x44, 0xf6, - 0x72, 0x38, 0x3d, 0xee, 0xee, 0x91, 0x44, 0xfb, 0x67, 0xd8, 0x3f, 0x18, 0x8e, 0x61, 0x18, 0xbe, - 0x3b, 0x1b, 0xe7, 0xd8, 0x0e, 0x1c, 0xd8, 0x39, 0xc4, 0x48, 0x9c, 0xe0, 0xf2, 0xc1, 0x09, 0x90, - 0x18, 0x08, 0x02, 0x18, 0x08, 0x8c, 0xfb, 0x90, 0x20, 0xfe, 0x16, 0xc4, 0x09, 0x98, 0xf8, 0x2e, - 0x5f, 0x4c, 0x20, 0x41, 0x90, 0x7c, 0xf2, 0x25, 0x46, 0x82, 0x7a, 0x55, 0xd5, 0x5d, 0xd5, 0xd3, - 0x43, 0x8e, 0x56, 0x5a, 0xe0, 0xb4, 0x9f, 0xc8, 0x79, 0xf5, 0xde, 0xeb, 0xfa, 0xfb, 0xea, 0xbd, - 0xaa, 0xf7, 0x5e, 0xc1, 0x58, 0x74, 0xd0, 0xa5, 0xe1, 0x8d, 0x6e, 0xe0, 0x47, 0x3e, 0x19, 0xc1, - 0x1f, 0x17, 0xcf, 0xec, 0xf8, 0x3b, 0x3e, 0x42, 0x66, 0xd8, 0x7f, 0xbc, 0xf0, 0x62, 0x6d, 0xc7, - 0xf7, 0x77, 0xda, 0x74, 0x06, 0x7f, 0x6d, 0xf7, 0x1e, 0xcc, 0x44, 0xde, 0x3e, 0x0d, 0x23, 0x67, - 0xbf, 0x2b, 0x10, 0xe6, 0x76, 0xbc, 0x68, 0xb7, 0xb7, 0x7d, 0xa3, 0xe5, 0xef, 0xcf, 0xec, 0x04, - 0xce, 0x43, 0x2f, 0x72, 0x22, 0xcf, 0xef, 0x38, 0xed, 0x99, 0x88, 0xb6, 0x69, 0xd7, 0x0f, 0xa2, - 0x19, 0xa7, 0xeb, 0xcd, 0xe0, 0x37, 0x66, 0x1e, 0x05, 0x4e, 0xb7, 0x4b, 0x83, 0xe4, 0x1f, 0xce, - 0xc4, 0xfc, 0x7b, 0x79, 0x28, 0xdf, 0xa3, 0xb4, 0x5b, 0x6f, 0x7b, 0x0f, 0x29, 0x79, 0x05, 0x0a, - 0x2b, 0xce, 0x3e, 0x9d, 0x36, 0x2e, 0x1b, 0x57, 0xcb, 0x8d, 0xc9, 0xa3, 0xc3, 0xda, 0x58, 0x48, - 0x83, 0x87, 0x34, 0xb0, 0x3b, 0xce, 0x3e, 0xb5, 0xb0, 0x90, 0x7c, 0x0e, 0xca, 0xec, 0x6f, 0xd8, - 0x75, 0x5a, 0x74, 0x3a, 0x87, 0x98, 0xe3, 0x47, 0x87, 0xb5, 0x72, 0x47, 0x02, 0xad, 0xa4, 0x9c, - 0x5c, 0x81, 0xd1, 0x65, 0xea, 0x84, 0x74, 0x69, 0x7e, 0x3a, 0x7f, 0xd9, 0xb8, 0x9a, 0x6f, 0x54, - 0x8e, 0x0e, 0x6b, 0xa5, 0x36, 0x03, 0xd9, 0x9e, 0x6b, 0xc9, 0x42, 0xb2, 0x04, 0xa3, 0x0b, 0x8f, - 0xbb, 0x5e, 0x40, 0xc3, 0xe9, 0xc2, 0x65, 0xe3, 0xea, 0xd8, 0xec, 0xc5, 0x1b, 0xbc, 0xfd, 0x37, - 0x64, 0xfb, 0x6f, 0xac, 0xcb, 0xf6, 0x37, 0x4e, 0x7f, 0xff, 0xb0, 0x76, 0xea, 0xe8, 0xb0, 0x36, - 0x4a, 0x39, 0xc9, 0xb7, 0xff, 0x73, 0xcd, 0xb0, 0x24, 0x3d, 0x79, 0x17, 0x0a, 0xeb, 0x07, 0x5d, - 0x3a, 0x5d, 0xbe, 0x6c, 0x5c, 0x9d, 0x98, 0x7d, 0xe9, 0x06, 0xef, 0xf1, 0xb8, 0x91, 0xc9, 0x7f, - 0x0c, 0xab, 0x51, 0x3a, 0x3a, 0xac, 0x15, 0x18, 0x8a, 0x85, 0x54, 0xe4, 0x4d, 0x28, 0x2e, 0xfa, - 0x61, 0xb4, 0x34, 0x3f, 0x0d, 0xd8, 0xb4, 0xb3, 0x47, 0x87, 0xb5, 0xa9, 0x5d, 0x3f, 0x8c, 0x6c, - 0xcf, 0x7d, 0xc3, 0xdf, 0xf7, 0x22, 0xba, 0xdf, 0x8d, 0x0e, 0x2c, 0x81, 0x64, 0x6e, 0xc3, 0xb8, - 0xc6, 0x8f, 0x8c, 0xc1, 0xe8, 0xc6, 0xca, 0xbd, 0x95, 0xd5, 0xad, 0x95, 0xea, 0x29, 0x52, 0x82, - 0xc2, 0xca, 0xea, 0xfc, 0x42, 0xd5, 0x20, 0xa3, 0x90, 0xaf, 0xaf, 0xad, 0x55, 0x73, 0xa4, 0x02, - 0xa5, 0xf9, 0xfa, 0x7a, 0xbd, 0x51, 0x6f, 0x2e, 0x54, 0xf3, 0xe4, 0x34, 0x4c, 0x6e, 0x2d, 0xad, - 0xcc, 0xaf, 0x6e, 0x35, 0xed, 0xf9, 0x85, 0xe6, 0xbd, 0xf5, 0xd5, 0xb5, 0x6a, 0x81, 0x4c, 0x00, - 0xdc, 0xdb, 0x68, 0x2c, 0x58, 0x2b, 0x0b, 0xeb, 0x0b, 0xcd, 0xea, 0x88, 0xf9, 0x2b, 0x79, 0x28, - 0xdd, 0xa7, 0x91, 0xe3, 0x3a, 0x91, 0x43, 0x2e, 0x69, 0x43, 0x84, 0xb5, 0x57, 0xc6, 0xe6, 0x95, - 0xfe, 0xb1, 0x19, 0x39, 0x3a, 0xac, 0x19, 0x6f, 0xaa, 0x63, 0xf2, 0x0e, 0x8c, 0xcd, 0xd3, 0xb0, - 0x15, 0x78, 0x5d, 0x36, 0x5f, 0x70, 0x5c, 0xca, 0x8d, 0x0b, 0x47, 0x87, 0xb5, 0xb3, 0x6e, 0x02, - 0x56, 0xda, 0xaa, 0x62, 0x93, 0x25, 0x28, 0x2e, 0x3b, 0xdb, 0xb4, 0x1d, 0x4e, 0x8f, 0x5c, 0xce, - 0x5f, 0x1d, 0x9b, 0x7d, 0x41, 0xf4, 0xaf, 0xac, 0xe0, 0x0d, 0x5e, 0xba, 0xd0, 0x89, 0x82, 0x83, - 0xc6, 0x99, 0xa3, 0xc3, 0x5a, 0xb5, 0x8d, 0x00, 0xb5, 0xef, 0x38, 0x0a, 0x69, 0x26, 0x63, 0x5e, - 0x3c, 0x71, 0xcc, 0x5f, 0xfc, 0xfe, 0x61, 0xcd, 0x60, 0x63, 0x21, 0xc6, 0x3c, 0xe1, 0xa7, 0x8f, - 0xfe, 0x65, 0xc8, 0x2d, 0xcd, 0x4f, 0x8f, 0xe2, 0x5c, 0xab, 0x1e, 0x1d, 0xd6, 0x2a, 0xda, 0xb0, - 0xe5, 0x96, 0xe6, 0x2f, 0xbe, 0x0d, 0x63, 0x4a, 0x1d, 0x49, 0x15, 0xf2, 0x7b, 0xf4, 0x80, 0xf7, - 0xa7, 0xc5, 0xfe, 0x25, 0x67, 0x60, 0xe4, 0xa1, 0xd3, 0xee, 0x89, 0x0e, 0xb4, 0xf8, 0x8f, 0x2f, - 0xe5, 0x7e, 0xc2, 0x30, 0x7f, 0xb3, 0x00, 0x25, 0xcb, 0xe7, 0xeb, 0x8c, 0x5c, 0x83, 0x91, 0x66, - 0xe4, 0x44, 0x72, 0x28, 0x4e, 0x1f, 0x1d, 0xd6, 0x26, 0x43, 0x06, 0x50, 0xbe, 0xc7, 0x31, 0x18, - 0xea, 0xda, 0xae, 0x13, 0xca, 0x21, 0x41, 0xd4, 0x2e, 0x03, 0xa8, 0xa8, 0x88, 0x41, 0xae, 0x40, - 0xe1, 0xbe, 0xef, 0x52, 0x31, 0x2a, 0xe4, 0xe8, 0xb0, 0x36, 0xb1, 0xef, 0xbb, 0x2a, 0x22, 0x96, - 0x93, 0x37, 0xa0, 0x3c, 0xd7, 0x0b, 0x02, 0xda, 0x61, 0x53, 0xb5, 0x80, 0xc8, 0x13, 0x47, 0x87, - 0x35, 0x68, 0x71, 0x20, 0x5b, 0x5c, 0x09, 0x02, 0xeb, 0xea, 0x66, 0xe4, 0x04, 0x11, 0x75, 0xa7, - 0x47, 0x86, 0xea, 0x6a, 0xb6, 0xbc, 0xa6, 0x42, 0x4e, 0x92, 0xee, 0x6a, 0xc1, 0x89, 0x2c, 0xc2, - 0xd8, 0xdd, 0xc0, 0x69, 0xd1, 0x35, 0x1a, 0x78, 0xbe, 0x8b, 0x63, 0x98, 0x6f, 0x5c, 0x39, 0x3a, - 0xac, 0x9d, 0xdb, 0x61, 0x60, 0xbb, 0x8b, 0xf0, 0x84, 0xfa, 0x47, 0x87, 0xb5, 0xd2, 0x7c, 0x2f, - 0xc0, 0xde, 0xb3, 0x54, 0x52, 0xf2, 0xd3, 0x6c, 0x48, 0xc2, 0x08, 0xbb, 0x96, 0xba, 0x38, 0x7a, - 0xc7, 0x57, 0xd1, 0x14, 0x55, 0x3c, 0xd7, 0x76, 0xc2, 0xc8, 0x0e, 0x38, 0x5d, 0xaa, 0x9e, 0x2a, - 0x4b, 0xb2, 0x0a, 0xa5, 0x66, 0x6b, 0x97, 0xba, 0xbd, 0x36, 0x9d, 0x2e, 0x21, 0xfb, 0xf3, 0x62, - 0xe2, 0xca, 0xf1, 0x94, 0xc5, 0x8d, 0x8b, 0x82, 0x37, 0x09, 0x05, 0x44, 0xe9, 0xfb, 0x98, 0xc9, - 0x97, 0x4a, 0xbf, 0xf3, 0x07, 0xb5, 0x53, 0xbf, 0xf8, 0x9f, 0x2e, 0x9f, 0x32, 0xff, 0x79, 0x0e, - 0xaa, 0x69, 0x26, 0xe4, 0x01, 0x8c, 0x6f, 0x74, 0x5d, 0x27, 0xa2, 0x73, 0x6d, 0x8f, 0x76, 0xa2, - 0x10, 0x27, 0xc9, 0xf1, 0x6d, 0x7a, 0x55, 0x7c, 0x77, 0xba, 0x87, 0x84, 0x76, 0x8b, 0x53, 0xa6, - 0x5a, 0xa5, 0xb3, 0x4d, 0xbe, 0xd3, 0x44, 0x39, 0x1d, 0xe2, 0x0c, 0x7b, 0xb2, 0xef, 0x70, 0x09, - 0x3f, 0xe0, 0x3b, 0x82, 0xad, 0x98, 0x40, 0x1d, 0x77, 0xfb, 0x00, 0x67, 0xe6, 0xf0, 0x13, 0x88, - 0x91, 0x64, 0x4c, 0x20, 0x06, 0x36, 0xff, 0xab, 0x01, 0x13, 0x16, 0x0d, 0xfd, 0x5e, 0xd0, 0xa2, - 0x8b, 0xd4, 0x71, 0x69, 0xc0, 0xa6, 0xff, 0x3d, 0xaf, 0xe3, 0x8a, 0x35, 0x85, 0xd3, 0x7f, 0xcf, - 0xeb, 0xa8, 0x4b, 0x18, 0xcb, 0xc9, 0xe7, 0x61, 0xb4, 0xd9, 0xdb, 0x46, 0x54, 0xbe, 0xa6, 0xce, - 0xe1, 0x88, 0xf5, 0xb6, 0xed, 0x14, 0xba, 0x44, 0x23, 0x33, 0x30, 0xba, 0x49, 0x83, 0x30, 0x91, - 0x78, 0x28, 0xd9, 0x1f, 0x72, 0x90, 0x4a, 0x20, 0xb0, 0xc8, 0xdd, 0x44, 0xea, 0x8a, 0x3d, 0x69, - 0x32, 0x25, 0xeb, 0x92, 0xa9, 0xb2, 0x2f, 0x20, 0xea, 0x54, 0x91, 0x58, 0xe6, 0x6f, 0xe4, 0xa0, - 0x3a, 0xef, 0x44, 0xce, 0xb6, 0x13, 0x8a, 0xfe, 0xdc, 0xbc, 0xc5, 0xe4, 0xb8, 0xd2, 0x50, 0x94, - 0xe3, 0xac, 0xe6, 0x9f, 0xb8, 0x79, 0xaf, 0xa5, 0x9b, 0x37, 0xc6, 0x36, 0x48, 0xd1, 0xbc, 0xa4, - 0x51, 0xef, 0x9d, 0xdc, 0xa8, 0xaa, 0x68, 0x54, 0x49, 0x36, 0x2a, 0x69, 0x0a, 0x79, 0x0f, 0x0a, - 0xcd, 0x2e, 0x6d, 0x09, 0x21, 0x22, 0x65, 0xbf, 0xde, 0x38, 0x86, 0xb0, 0x79, 0xab, 0x51, 0x11, - 0x6c, 0x0a, 0x61, 0x97, 0xb6, 0x2c, 0x24, 0x53, 0x16, 0xcd, 0x77, 0x8a, 0x70, 0x26, 0x8b, 0x8c, - 0xbc, 0xa7, 0x6f, 0x4e, 0xbc, 0x7b, 0x5e, 0x18, 0xb8, 0x39, 0x4d, 0x1b, 0xfa, 0xf6, 0x74, 0x1d, - 0x4a, 0x6b, 0x6c, 0x42, 0xb6, 0xfc, 0xb6, 0xe8, 0x39, 0x26, 0x15, 0x4b, 0x5d, 0x09, 0x33, 0xac, - 0xb8, 0x9c, 0xbc, 0x00, 0xf9, 0x0d, 0x6b, 0x49, 0x74, 0x57, 0xf9, 0xe8, 0xb0, 0x96, 0xef, 0x05, - 0xde, 0xb4, 0x61, 0x31, 0x28, 0x99, 0x81, 0xe2, 0x5c, 0x7d, 0x8e, 0x06, 0x11, 0x76, 0x53, 0xa5, - 0x71, 0x9e, 0xcd, 0x96, 0x96, 0x63, 0xb7, 0x68, 0x10, 0x69, 0x9f, 0x17, 0x68, 0xe4, 0x73, 0x90, - 0xaf, 0x6f, 0x35, 0x45, 0xcf, 0x80, 0xe8, 0x99, 0xfa, 0x56, 0xb3, 0x31, 0x2e, 0x3a, 0x22, 0xef, - 0x3c, 0x0a, 0x19, 0xf7, 0xfa, 0x56, 0x53, 0x1d, 0xad, 0xe2, 0x31, 0xa3, 0x75, 0x15, 0x4a, 0x4c, - 0xcf, 0x60, 0x1b, 0x3c, 0x0a, 0xc5, 0x32, 0x57, 0x9f, 0x76, 0x05, 0xcc, 0x8a, 0x4b, 0xc9, 0x2b, - 0xb1, 0xda, 0x52, 0x4a, 0xf8, 0x09, 0xb5, 0x45, 0x2a, 0x2b, 0xe4, 0x31, 0x8c, 0xcf, 0x1f, 0x74, - 0x9c, 0x7d, 0xaf, 0x25, 0xb6, 0xf0, 0x32, 0x6e, 0xe1, 0x37, 0x8e, 0x19, 0xc6, 0x1b, 0x1a, 0x01, - 0xdf, 0xd5, 0xa5, 0xf0, 0x9d, 0x76, 0x79, 0x99, 0x9d, 0xde, 0xe1, 0xa7, 0x0d, 0x4b, 0xff, 0x10, - 0x5b, 0x4b, 0x52, 0x44, 0xa2, 0x5e, 0x95, 0x4c, 0x3b, 0x09, 0x4e, 0xd6, 0x52, 0x20, 0x20, 0xea, - 0x5a, 0x8a, 0x37, 0xdd, 0xf7, 0x20, 0x7f, 0x77, 0x6e, 0x6d, 0x7a, 0x0c, 0x79, 0x10, 0xc1, 0xe3, - 0xee, 0xdc, 0xda, 0x5c, 0xdb, 0xef, 0xb9, 0xcd, 0x8f, 0x96, 0x1b, 0xe7, 0x05, 0x9b, 0xf1, 0x9d, - 0x56, 0x57, 0xab, 0x11, 0xa3, 0x23, 0x0b, 0x50, 0x92, 0xad, 0x9c, 0xae, 0x20, 0x8f, 0xa9, 0x54, - 0xe3, 0x37, 0x6f, 0xf1, 0xb5, 0xe6, 0x8a, 0xdf, 0x6a, 0x2d, 0x24, 0xce, 0xc5, 0x2d, 0x20, 0xfd, - 0xfd, 0x92, 0xa1, 0x49, 0x7c, 0x4e, 0xd5, 0x24, 0xc6, 0x66, 0xcf, 0x8a, 0x6f, 0xcd, 0xf9, 0xfb, - 0xfb, 0x4e, 0xc7, 0x45, 0xda, 0xcd, 0x59, 0x55, 0xc1, 0xa8, 0xc3, 0x44, 0x52, 0x91, 0x65, 0x2f, - 0x8c, 0xc8, 0x0c, 0x94, 0x25, 0x84, 0x6d, 0x22, 0xf9, 0xcc, 0x2a, 0x5b, 0x09, 0x8e, 0xf9, 0x67, - 0x39, 0x80, 0xa4, 0xe4, 0x39, 0x95, 0x33, 0x5f, 0xd4, 0xe4, 0xcc, 0xd9, 0xf4, 0x04, 0x1d, 0x28, - 0x61, 0xc8, 0x07, 0x50, 0x64, 0x2a, 0x57, 0x4f, 0xaa, 0x94, 0xe7, 0xd3, 0xa4, 0x58, 0xb8, 0x79, - 0xab, 0x31, 0x21, 0x88, 0x8b, 0x21, 0x42, 0x2c, 0x41, 0xa6, 0x88, 0xa8, 0xff, 0x5e, 0x48, 0x06, - 0x43, 0x08, 0xa7, 0xab, 0x8a, 0x74, 0x31, 0x92, 0xf5, 0x28, 0xa5, 0x8b, 0x22, 0x5b, 0x2e, 0x70, - 0xd9, 0xc2, 0x3b, 0x75, 0x54, 0xc8, 0x96, 0xb4, 0x64, 0xe1, 0x1d, 0x78, 0xa2, 0x64, 0xe9, 0xa6, - 0x97, 0x6d, 0x01, 0xa7, 0xc1, 0xd5, 0xcc, 0x5e, 0xc9, 0x5a, 0xb0, 0x97, 0x4f, 0x5a, 0xb0, 0xe9, - 0xe5, 0x7a, 0x6b, 0x90, 0x2c, 0x3b, 0x2b, 0x57, 0x97, 0xf3, 0x48, 0x25, 0x47, 0x99, 0xf6, 0x0e, - 0x5f, 0x9a, 0xc5, 0x81, 0x4b, 0xf3, 0x6c, 0xe6, 0xd2, 0xe4, 0x0b, 0xf3, 0x1d, 0x18, 0xa9, 0xff, - 0x6c, 0x2f, 0xa0, 0x42, 0xf7, 0xab, 0xc8, 0x6f, 0x32, 0x58, 0xbc, 0xa6, 0x27, 0x1d, 0xf6, 0x53, - 0xd5, 0x99, 0xb1, 0x9c, 0x7d, 0x79, 0x7d, 0xb9, 0x29, 0xf4, 0x3a, 0x92, 0xea, 0x96, 0xf5, 0x65, - 0xa5, 0xda, 0x91, 0xd6, 0x6a, 0x46, 0x45, 0x66, 0x20, 0x57, 0x9f, 0x47, 0x63, 0x71, 0x6c, 0xb6, - 0x2c, 0x3f, 0x3b, 0xdf, 0x38, 0x23, 0x48, 0x2a, 0x8e, 0x66, 0x3f, 0xd4, 0xe7, 0x3f, 0xbd, 0xc5, - 0xdf, 0x56, 0xd4, 0x04, 0x31, 0x4d, 0x99, 0x39, 0x2a, 0x26, 0x8b, 0x91, 0x28, 0x2d, 0x7d, 0x93, - 0x25, 0x9e, 0x2a, 0xd7, 0xf8, 0xc0, 0xe5, 0xfa, 0x06, 0x6e, 0x4c, 0xd9, 0x84, 0x70, 0xb8, 0xcc, - 0xbf, 0x32, 0x10, 0x97, 0xbc, 0x01, 0x45, 0x8b, 0xee, 0x24, 0x7b, 0x2d, 0xda, 0x6c, 0x01, 0x42, - 0xd4, 0x0f, 0x70, 0x1c, 0x14, 0xe4, 0xd4, 0x0d, 0x77, 0xbd, 0x07, 0x91, 0xf8, 0x4a, 0x2c, 0xc8, - 0x05, 0x58, 0x11, 0xe4, 0x02, 0xa2, 0x09, 0x72, 0x01, 0x63, 0x53, 0xcc, 0x9a, 0x6f, 0x0a, 0x65, - 0x52, 0xd6, 0xd4, 0x9a, 0x57, 0xc6, 0x2a, 0x70, 0xb5, 0xb1, 0xb2, 0xe6, 0x9b, 0xe4, 0x36, 0x94, - 0xeb, 0xad, 0x96, 0xdf, 0x53, 0x8c, 0x9e, 0xe9, 0xa3, 0xc3, 0xda, 0x19, 0x87, 0x03, 0x75, 0x13, - 0x3d, 0x41, 0x35, 0x1b, 0x49, 0xad, 0x19, 0x8f, 0xb9, 0x76, 0x2f, 0x8c, 0x68, 0xb0, 0x34, 0x2f, - 0x9a, 0x8c, 0x3c, 0x5a, 0x1c, 0x98, 0xe2, 0x11, 0xa3, 0x9a, 0xff, 0xd1, 0xc0, 0x1a, 0x93, 0xb7, - 0x01, 0x96, 0x3a, 0x4c, 0xb1, 0x6d, 0xd1, 0x98, 0x01, 0x1a, 0xcf, 0x9e, 0x80, 0xea, 0x1c, 0x14, - 0x64, 0xfd, 0xd3, 0xb9, 0xa1, 0x3f, 0xcd, 0x3e, 0x29, 0xd5, 0x64, 0x71, 0x8e, 0x22, 0x3e, 0x19, - 0x08, 0x68, 0xea, 0x93, 0x09, 0x32, 0xb9, 0x02, 0xa3, 0x4b, 0xf5, 0xfb, 0xf5, 0x5e, 0xb4, 0x8b, - 0xfd, 0x55, 0xe2, 0x02, 0xcb, 0x73, 0xf6, 0x6d, 0xa7, 0x17, 0xed, 0x5a, 0xb2, 0xd0, 0xfc, 0x45, - 0x03, 0xc6, 0x94, 0xb5, 0xca, 0xaa, 0xba, 0x16, 0xf8, 0x1f, 0xd3, 0x56, 0xa4, 0xf7, 0x52, 0x97, - 0x03, 0x53, 0x55, 0x8d, 0x51, 0x53, 0xbd, 0x93, 0x7b, 0x82, 0xde, 0x31, 0x67, 0x84, 0x08, 0x60, - 0x36, 0x80, 0x72, 0xc4, 0x81, 0x36, 0x00, 0xd3, 0x71, 0x54, 0x1b, 0x80, 0x95, 0x9b, 0x7f, 0x64, - 0xb0, 0xa5, 0x4b, 0x66, 0x00, 0xee, 0xd1, 0x83, 0xc8, 0xd9, 0xbe, 0xe3, 0xb5, 0xb5, 0xa3, 0xab, - 0x3d, 0x84, 0xda, 0x0f, 0xbc, 0x36, 0xb5, 0x14, 0x14, 0x72, 0x0b, 0x4a, 0xf7, 0x82, 0xed, 0xb7, - 0x10, 0x3d, 0x17, 0x8b, 0xe0, 0xd3, 0x7b, 0xc1, 0xf6, 0x5b, 0x88, 0xac, 0xce, 0x57, 0x89, 0x48, - 0x4c, 0x28, 0xce, 0xfb, 0xfb, 0x8e, 0x27, 0xb7, 0x3d, 0x60, 0x7b, 0x87, 0x8b, 0x10, 0x4b, 0x94, - 0x30, 0xa1, 0xdf, 0x5c, 0x5b, 0x11, 0x13, 0x13, 0x85, 0x7e, 0xd8, 0xed, 0x58, 0x0c, 0x66, 0x7e, - 0xcf, 0x80, 0x31, 0x45, 0x22, 0x91, 0x2f, 0x08, 0x33, 0xdf, 0xc0, 0x43, 0xaa, 0x73, 0xfd, 0x32, - 0x8b, 0x95, 0xf2, 0xed, 0x9a, 0x99, 0xff, 0xc2, 0xe8, 0x4f, 0xa4, 0x41, 0x6e, 0x18, 0x69, 0xf0, - 0x36, 0x00, 0xd7, 0xe5, 0xb0, 0x3b, 0x95, 0x79, 0xa3, 0x1c, 0xea, 0xa9, 0x83, 0x91, 0x20, 0x9b, - 0xff, 0x7f, 0x0e, 0x4a, 0xc2, 0x56, 0x99, 0x7d, 0x4e, 0x75, 0x88, 0xb7, 0x34, 0x1d, 0xe2, 0xb4, - 0x20, 0x55, 0x94, 0xdb, 0xd9, 0x13, 0x6c, 0x94, 0xb7, 0xa1, 0x22, 0xbb, 0x00, 0x55, 0xb1, 0x6b, - 0x30, 0x2a, 0xad, 0x6c, 0xae, 0x88, 0x4d, 0x6a, 0x3c, 0x37, 0x67, 0x2d, 0x59, 0x6e, 0xfe, 0xd9, - 0x88, 0xa4, 0xe5, 0x5f, 0x62, 0x5d, 0x58, 0x77, 0xdd, 0x40, 0xed, 0x42, 0xc7, 0x75, 0x03, 0x0b, - 0xa1, 0x6c, 0xa0, 0xd6, 0x7a, 0xdb, 0x6d, 0xaf, 0x85, 0x38, 0xca, 0xaa, 0xe9, 0x22, 0xd4, 0x66, - 0xa8, 0xea, 0x40, 0x25, 0xc8, 0x9a, 0x89, 0x90, 0x3f, 0xd6, 0x44, 0xf8, 0x29, 0x28, 0xcf, 0xed, - 0xbb, 0x9a, 0x0a, 0x61, 0x66, 0x74, 0xca, 0x8d, 0x18, 0x89, 0x2b, 0x0f, 0x97, 0x44, 0x1f, 0x9d, - 0x69, 0xed, 0xbb, 0xfd, 0x8a, 0x43, 0xc2, 0x52, 0xd3, 0xf1, 0x47, 0x9e, 0x46, 0xc7, 0xbf, 0x0d, - 0xe5, 0x8d, 0x90, 0xae, 0xf7, 0x3a, 0x1d, 0xda, 0x46, 0x75, 0xa2, 0xc4, 0x65, 0x4f, 0x2f, 0xa4, - 0x76, 0x84, 0x50, 0xb5, 0x02, 0x31, 0xaa, 0x3a, 0xad, 0x46, 0x8f, 0x99, 0x56, 0x5f, 0x80, 0x42, - 0xbd, 0xdb, 0x95, 0xc6, 0x4f, 0xbc, 0x49, 0x76, 0xbb, 0xb8, 0xf5, 0x4d, 0x38, 0xdd, 0xae, 0x6e, - 0xca, 0x20, 0x36, 0xa1, 0x40, 0xee, 0xf5, 0xb6, 0x69, 0xd0, 0xa1, 0x11, 0x0d, 0x85, 0x68, 0x0e, - 0xa7, 0x01, 0x79, 0x4c, 0xcb, 0x33, 0xe6, 0x34, 0x02, 0x1a, 0xae, 0xe7, 0xf7, 0x7a, 0xdb, 0xd4, - 0x16, 0x32, 0x5e, 0xed, 0xbb, 0x0c, 0x86, 0x4c, 0x36, 0xad, 0x51, 0x1a, 0xe0, 0x3c, 0x18, 0x4b, - 0x64, 0x53, 0x97, 0xd2, 0x20, 0x3d, 0x0b, 0x62, 0xc4, 0x8b, 0x4d, 0x98, 0xd0, 0x07, 0xed, 0x19, - 0x68, 0x23, 0x1f, 0x16, 0x4a, 0xa5, 0x6a, 0xd9, 0xfc, 0x95, 0x1c, 0x8c, 0xd5, 0xbb, 0xdd, 0xe7, - 0xfc, 0xd8, 0xe2, 0x27, 0x34, 0x51, 0x70, 0x2e, 0x19, 0xf2, 0x27, 0x38, 0xb1, 0xf8, 0x6b, 0x03, - 0x26, 0x53, 0x14, 0x6a, 0xed, 0x8d, 0x21, 0xcd, 0xf8, 0xdc, 0x90, 0x66, 0x7c, 0x7e, 0xb0, 0x19, - 0xaf, 0x2e, 0xb4, 0xc2, 0xd3, 0x2c, 0xb4, 0xd7, 0x21, 0x5f, 0xef, 0x76, 0x45, 0xaf, 0x54, 0x92, - 0x5e, 0xd9, 0xbc, 0xc5, 0x77, 0x2f, 0xa7, 0xdb, 0xb5, 0x18, 0x86, 0xf9, 0x26, 0x94, 0x11, 0x8c, - 0x62, 0xf0, 0xb2, 0x58, 0x3f, 0x5c, 0x06, 0x6a, 0x64, 0x7c, 0xad, 0x98, 0xff, 0xdb, 0x80, 0x11, - 0xfc, 0xfd, 0x9c, 0x4e, 0x97, 0x59, 0x6d, 0xba, 0x54, 0x95, 0xe9, 0x32, 0xcc, 0x44, 0xf9, 0xe3, - 0x3c, 0xf6, 0x96, 0x98, 0x22, 0xc2, 0x10, 0x34, 0x32, 0x0c, 0xc1, 0xa7, 0x90, 0xfa, 0x7b, 0x69, - 0x93, 0x30, 0x8f, 0x83, 0xf1, 0x4a, 0xba, 0xaa, 0xcf, 0xc4, 0x1a, 0x5c, 0x04, 0xb2, 0xd4, 0x09, - 0x69, 0xab, 0x17, 0xd0, 0xe6, 0x9e, 0xd7, 0xdd, 0xa4, 0x81, 0xf7, 0xe0, 0x40, 0xa8, 0x93, 0x28, - 0x98, 0x3d, 0x51, 0x6a, 0x87, 0x7b, 0x5e, 0xd7, 0x7e, 0x88, 0xe5, 0x56, 0x06, 0x0d, 0xf9, 0x00, - 0x46, 0x2d, 0xfa, 0x28, 0xf0, 0x22, 0x2a, 0xfa, 0x76, 0x22, 0x36, 0x1e, 0x10, 0xca, 0x15, 0x9a, - 0x80, 0xff, 0x50, 0xc7, 0x5f, 0x94, 0x7f, 0x7a, 0xb6, 0xd7, 0x77, 0x46, 0x70, 0x2d, 0x9c, 0x70, - 0xbd, 0x76, 0x8c, 0x55, 0xaf, 0x0f, 0x66, 0xfe, 0x49, 0x06, 0x73, 0x13, 0x2a, 0xcc, 0xde, 0x4b, - 0x99, 0xf7, 0x97, 0x92, 0xb1, 0xbc, 0xa1, 0x16, 0x1f, 0x77, 0xb3, 0xa6, 0xf1, 0x21, 0x76, 0x7a, - 0x92, 0xf0, 0x1b, 0xbb, 0x17, 0x15, 0xc6, 0x19, 0xd3, 0x23, 0x16, 0x1d, 0x2d, 0xde, 0x59, 0x4f, - 0x3c, 0x31, 0x8a, 0x4f, 0x37, 0x31, 0x46, 0x3f, 0xc9, 0xc4, 0x48, 0xdf, 0x69, 0x96, 0x9e, 0xe4, - 0x4e, 0xf3, 0xe2, 0x07, 0x30, 0xd5, 0xd7, 0xc3, 0x4f, 0x72, 0x2f, 0xf8, 0xe9, 0x4d, 0xcb, 0x9f, - 0x8f, 0xfb, 0x85, 0xcc, 0xa2, 0x0d, 0xeb, 0x05, 0xb4, 0x15, 0xa1, 0xe8, 0x15, 0xd2, 0x32, 0x10, - 0xb0, 0x94, 0x91, 0x8d, 0x30, 0xf2, 0x3e, 0x8c, 0xf2, 0x7b, 0x95, 0x70, 0x3a, 0x87, 0x63, 0x3f, - 0x2e, 0xbe, 0xc8, 0xa1, 0xe2, 0x72, 0x9b, 0x63, 0xa8, 0xbd, 0x2a, 0x88, 0xcc, 0xbb, 0x50, 0x14, - 0xf7, 0x32, 0xc7, 0xaf, 0x8b, 0x1a, 0x8c, 0x6c, 0x26, 0x3d, 0x83, 0x67, 0xe9, 0xbc, 0x11, 0x16, - 0x87, 0x9b, 0xbf, 0x66, 0xc0, 0x84, 0xde, 0x4a, 0x72, 0x03, 0x8a, 0xe2, 0xe2, 0xd0, 0xc0, 0x8b, - 0x43, 0xd6, 0x9a, 0x22, 0xbf, 0x32, 0xd4, 0x2e, 0x0a, 0x05, 0x16, 0x13, 0xfd, 0x82, 0x03, 0xb6, - 0x45, 0x88, 0x7e, 0x31, 0x49, 0x2d, 0x59, 0xc6, 0xec, 0x34, 0x8b, 0x86, 0xbd, 0x76, 0xa4, 0xda, - 0x69, 0x01, 0x42, 0x2c, 0x51, 0x62, 0x1e, 0x1a, 0x00, 0xcd, 0xe6, 0xe2, 0x3d, 0x7a, 0xb0, 0xe6, - 0x78, 0x01, 0xda, 0xba, 0xb8, 0x1a, 0xef, 0x89, 0xd1, 0xaa, 0x08, 0x5b, 0x97, 0xaf, 0xdc, 0x3d, - 0x7a, 0xa0, 0xd9, 0xba, 0x12, 0x15, 0x97, 0x7c, 0xe0, 0x3d, 0x74, 0x22, 0xca, 0x08, 0x73, 0x48, - 0xc8, 0x97, 0x3c, 0x87, 0xa6, 0x28, 0x15, 0x64, 0xf2, 0x0d, 0x98, 0x48, 0x7e, 0xa1, 0xb7, 0x42, - 0x1e, 0x0d, 0x41, 0x39, 0x23, 0xf4, 0xc2, 0xc6, 0x4b, 0x47, 0x87, 0xb5, 0x8b, 0x0a, 0x57, 0x9b, - 0x61, 0x29, 0xac, 0x53, 0xcc, 0xcc, 0xef, 0x1a, 0x00, 0xeb, 0xcb, 0x4d, 0xd9, 0xc0, 0x2b, 0x50, - 0x88, 0x8f, 0x90, 0x2a, 0xdc, 0xa0, 0x4e, 0x59, 0x8c, 0x58, 0x4e, 0x5e, 0x81, 0x7c, 0xd2, 0x92, - 0xa9, 0xa3, 0xc3, 0xda, 0xb8, 0xde, 0x02, 0x56, 0x4a, 0xee, 0xc2, 0xe8, 0x50, 0x75, 0xc6, 0xd9, - 0x99, 0x51, 0x57, 0x49, 0x8d, 0xa3, 0xf0, 0xe1, 0xd6, 0xfa, 0x67, 0x77, 0x14, 0xbe, 0x95, 0x83, - 0x49, 0xd6, 0xaf, 0xf5, 0x5e, 0xb4, 0xeb, 0x07, 0x5e, 0x74, 0xf0, 0xdc, 0x9a, 0xd2, 0xef, 0x6a, - 0x0a, 0xd1, 0x45, 0x29, 0xb6, 0xd4, 0xb6, 0x0d, 0x65, 0x51, 0xff, 0xe5, 0x28, 0x9c, 0xce, 0xa0, - 0x22, 0x6f, 0x08, 0x97, 0x9d, 0xe4, 0xa0, 0x09, 0x5d, 0x72, 0x7e, 0x74, 0x58, 0xab, 0x48, 0xf4, - 0xf5, 0xc4, 0x45, 0x67, 0x16, 0xc6, 0x84, 0xbd, 0xb4, 0x92, 0x68, 0xd4, 0xe8, 0xeb, 0x21, 0x0f, - 0xd2, 0x50, 0x34, 0xa9, 0x48, 0xa4, 0x0e, 0x95, 0xb9, 0x5d, 0xda, 0xda, 0xf3, 0x3a, 0x3b, 0xf7, - 0xe8, 0x01, 0xd7, 0x97, 0x2a, 0x8d, 0x17, 0x99, 0x79, 0xd6, 0x12, 0x70, 0x36, 0xa4, 0xba, 0xe5, - 0xa7, 0x91, 0x90, 0xf7, 0x61, 0xac, 0xe9, 0xed, 0x74, 0x24, 0x87, 0x02, 0x72, 0xb8, 0x74, 0x74, - 0x58, 0x3b, 0x17, 0x72, 0x70, 0x3f, 0x03, 0x95, 0x80, 0x5c, 0x83, 0x11, 0xcb, 0x6f, 0x53, 0xbe, - 0x0d, 0x0b, 0x27, 0x90, 0x80, 0x01, 0xd4, 0x03, 0x6d, 0xc4, 0x20, 0x8b, 0x30, 0xca, 0xfe, 0xb9, - 0xef, 0x74, 0xa7, 0x8b, 0x28, 0xb7, 0x49, 0xac, 0xe0, 0x23, 0xb4, 0xeb, 0x75, 0x76, 0x54, 0x1d, - 0xbf, 0x4d, 0xed, 0x7d, 0xa7, 0xab, 0xed, 0x8b, 0x1c, 0x91, 0x6c, 0xc2, 0x58, 0x22, 0x08, 0xc2, - 0xe9, 0x51, 0xed, 0x02, 0x29, 0x29, 0x69, 0xbc, 0x2c, 0x98, 0x9d, 0x8f, 0xda, 0x21, 0xce, 0xed, - 0x2e, 0xc3, 0xd7, 0x1b, 0xa3, 0x30, 0xd2, 0x6c, 0x90, 0xd2, 0x60, 0x1b, 0xc4, 0x38, 0xd1, 0x06, - 0x71, 0x01, 0x44, 0x27, 0xd5, 0xdb, 0x3b, 0xc2, 0x67, 0xeb, 0xda, 0xe0, 0x09, 0x76, 0x23, 0x41, - 0xc6, 0x35, 0xc9, 0x8f, 0xb3, 0x44, 0xff, 0x3b, 0xed, 0x1d, 0xed, 0x38, 0x2b, 0x46, 0x65, 0xdd, - 0x90, 0x88, 0x1a, 0x69, 0xb6, 0xcb, 0x6e, 0x48, 0x4a, 0x92, 0x6e, 0xf8, 0xf8, 0x51, 0x34, 0xa8, - 0x1b, 0x14, 0x46, 0x64, 0x05, 0xa0, 0xde, 0x8a, 0xbc, 0x87, 0x14, 0xa7, 0xc4, 0x98, 0xd6, 0x11, - 0x73, 0xf5, 0x7b, 0xf4, 0xa0, 0x49, 0xa3, 0xd8, 0x1d, 0xe2, 0xac, 0x83, 0xa8, 0xa9, 0x69, 0x62, - 0x29, 0x1c, 0x48, 0x17, 0xce, 0xd6, 0x5d, 0xd7, 0xe3, 0x7e, 0x7c, 0xeb, 0x01, 0x9b, 0xbf, 0x2e, - 0xb2, 0xae, 0x64, 0xb3, 0xbe, 0x26, 0x58, 0xbf, 0xec, 0xc4, 0x54, 0x76, 0xc4, 0xc9, 0xd2, 0x9f, - 0xc9, 0x66, 0x6c, 0xae, 0xc2, 0x84, 0xde, 0xa5, 0xba, 0x07, 0x5b, 0x05, 0x4a, 0x56, 0xb3, 0x6e, - 0x37, 0x17, 0xeb, 0x37, 0xab, 0x06, 0xa9, 0x42, 0x45, 0xfc, 0x9a, 0xb5, 0x67, 0xdf, 0xba, 0x5d, - 0xcd, 0x69, 0x90, 0xb7, 0x6e, 0xce, 0x56, 0xf3, 0xe6, 0x1f, 0x1b, 0x50, 0x92, 0xf5, 0x23, 0xb7, - 0x21, 0xdf, 0x6c, 0x2e, 0xa6, 0xee, 0x2d, 0x93, 0xad, 0x97, 0x6f, 0x32, 0x61, 0xb8, 0xab, 0x6e, - 0x32, 0xcd, 0xe6, 0x22, 0xa3, 0x5b, 0x5f, 0x6e, 0x0a, 0xa5, 0x25, 0x63, 0xba, 0x4e, 0x0d, 0xb8, - 0xcc, 0xb9, 0x0d, 0xf9, 0x0f, 0xb7, 0xd6, 0x85, 0x35, 0x94, 0x31, 0xbe, 0x48, 0xf7, 0xf1, 0x23, - 0x75, 0xeb, 0x63, 0x04, 0xa6, 0x05, 0x63, 0xca, 0xd2, 0xe2, 0x4a, 0xc4, 0xbe, 0x1f, 0xfb, 0x76, - 0x09, 0x25, 0x82, 0x41, 0x2c, 0x51, 0xc2, 0x74, 0x9e, 0x65, 0xbf, 0xe5, 0xb4, 0x85, 0x36, 0x82, - 0x3a, 0x4f, 0x9b, 0x01, 0x2c, 0x0e, 0x37, 0xff, 0xd4, 0x80, 0xea, 0x5a, 0xe0, 0x3f, 0xf4, 0x98, - 0x04, 0x5e, 0xf7, 0xf7, 0x68, 0x67, 0xf3, 0x26, 0x79, 0x53, 0x0a, 0x01, 0xae, 0xc2, 0x9d, 0x67, - 0x54, 0x28, 0x04, 0x7e, 0x74, 0x58, 0x83, 0xe6, 0x41, 0x18, 0xd1, 0x7d, 0x56, 0x2e, 0x05, 0x81, - 0xe2, 0x22, 0x97, 0x1b, 0xde, 0xed, 0xe6, 0x04, 0x17, 0xb9, 0x1a, 0x8c, 0x60, 0x75, 0x14, 0xcf, - 0x87, 0x91, 0x88, 0x01, 0x2c, 0x0e, 0x57, 0x04, 0xf6, 0x6f, 0xe4, 0xfa, 0xda, 0x30, 0xfb, 0x99, - 0x72, 0x5d, 0xd1, 0x1b, 0x37, 0xd4, 0x26, 0xf6, 0x55, 0x38, 0x93, 0xee, 0x12, 0x3c, 0x17, 0xa9, - 0xc3, 0xa4, 0x0e, 0x97, 0x47, 0x24, 0xe7, 0x33, 0xbf, 0xb5, 0x39, 0x6b, 0xa5, 0xf1, 0xcd, 0x1f, - 0x18, 0x50, 0xc6, 0x7f, 0xad, 0x5e, 0x9b, 0x32, 0xcd, 0xa6, 0xbe, 0xd5, 0x14, 0xb7, 0x58, 0xea, - 0x4d, 0x93, 0xf3, 0x28, 0xb4, 0xc5, 0x95, 0x97, 0x26, 0x47, 0x62, 0x64, 0x41, 0xca, 0xef, 0xec, - 0x42, 0x31, 0x43, 0x63, 0x52, 0x7e, 0xb9, 0x17, 0xa6, 0x48, 0x05, 0x32, 0x1b, 0x3f, 0xf6, 0xcb, - 0x6f, 0xcb, 0xf3, 0x64, 0x1c, 0x3f, 0xa4, 0xf3, 0xb5, 0xbb, 0x11, 0x89, 0x46, 0xde, 0x84, 0x22, - 0xfb, 0xb4, 0x25, 0x6f, 0x3e, 0xd0, 0xaa, 0xc0, 0x3a, 0x06, 0xda, 0x15, 0x22, 0x47, 0x32, 0xff, - 0x45, 0x2e, 0xdd, 0x81, 0x42, 0x0b, 0x78, 0xc2, 0xb5, 0xf1, 0x0e, 0x8c, 0xd4, 0xdb, 0x6d, 0xff, - 0x91, 0x90, 0x12, 0xf2, 0x98, 0x26, 0xee, 0x3f, 0xbe, 0xc3, 0x3a, 0x0c, 0x45, 0xbb, 0x32, 0x66, - 0x00, 0x32, 0x07, 0xe5, 0xfa, 0x56, 0x73, 0x69, 0x69, 0x7e, 0x7d, 0x7d, 0x59, 0x78, 0x26, 0xbf, - 0x26, 0xfb, 0xc7, 0xf3, 0x5c, 0x3b, 0x8a, 0xda, 0x03, 0x1c, 0x17, 0x13, 0x3a, 0xf2, 0x1e, 0xc0, - 0x87, 0xbe, 0xd7, 0xb9, 0x4f, 0xa3, 0x5d, 0xdf, 0x15, 0x8d, 0x67, 0x2a, 0xc5, 0xd8, 0xc7, 0xbe, - 0xd7, 0xb1, 0xf7, 0x11, 0xcc, 0xea, 0x9e, 0x20, 0x59, 0xca, 0xff, 0xac, 0xa7, 0x1b, 0x7e, 0x84, - 0x3a, 0xcc, 0x48, 0xd2, 0xd3, 0xdb, 0x7e, 0x94, 0xbe, 0x98, 0x91, 0x68, 0xe6, 0xaf, 0xe7, 0x60, - 0x82, 0x5b, 0xaa, 0x7c, 0xc2, 0x3c, 0xb7, 0x8b, 0xf1, 0x1d, 0x6d, 0x31, 0x5e, 0x90, 0x1b, 0x83, - 0xd2, 0xb4, 0xa1, 0x96, 0xe2, 0x2e, 0x90, 0x7e, 0x1a, 0x62, 0xc9, 0xf3, 0x94, 0x61, 0x56, 0xe1, - 0xcd, 0xe4, 0xc2, 0x39, 0x44, 0x22, 0x1b, 0x45, 0x61, 0x68, 0x69, 0x3c, 0xcc, 0x5f, 0xcb, 0xc1, - 0xb8, 0xa2, 0x4f, 0x3e, 0xb7, 0x1d, 0xff, 0x25, 0xad, 0xe3, 0xe5, 0xc5, 0x85, 0xd2, 0xb2, 0xa1, - 0xfa, 0xbd, 0x07, 0x53, 0x7d, 0x24, 0x69, 0xb5, 0xdc, 0x18, 0x46, 0x2d, 0x7f, 0xa3, 0xff, 0x46, - 0x9c, 0x7b, 0x31, 0xc7, 0x37, 0xe2, 0xea, 0x15, 0xfc, 0xb7, 0x72, 0x70, 0x46, 0xfc, 0xaa, 0xf7, - 0x5c, 0x2f, 0x9a, 0xf3, 0x3b, 0x0f, 0xbc, 0x9d, 0xe7, 0x76, 0x2c, 0xea, 0xda, 0x58, 0xd4, 0xf4, - 0xb1, 0x50, 0x1a, 0x38, 0x78, 0x48, 0xcc, 0x7f, 0x59, 0x82, 0xe9, 0x41, 0x04, 0xcc, 0xec, 0x57, - 0xac, 0x2a, 0x34, 0xfb, 0x53, 0x16, 0x2b, 0xb7, 0xa7, 0x12, 0x0f, 0x90, 0xdc, 0x10, 0x1e, 0x20, - 0xcb, 0x50, 0xc5, 0x4f, 0x35, 0x69, 0xc8, 0x3a, 0x21, 0x4c, 0x5c, 0x28, 0x2f, 0x1f, 0x1d, 0xd6, - 0x2e, 0x39, 0xac, 0xcc, 0x0e, 0x45, 0xa1, 0xdd, 0x0b, 0x3c, 0x85, 0x47, 0x1f, 0x25, 0xf9, 0xae, + 0x94, 0xc8, 0x15, 0x45, 0x72, 0x7b, 0xf8, 0xe7, 0xce, 0x77, 0xeb, 0x76, 0x73, 0xba, 0x44, 0xf6, + 0x72, 0x38, 0x3d, 0xee, 0xee, 0x91, 0x44, 0xfb, 0x67, 0xd8, 0x3f, 0x04, 0x8e, 0x61, 0x18, 0xbe, + 0x3b, 0x1b, 0xe7, 0xd8, 0x0e, 0x1c, 0xd8, 0x31, 0x62, 0x24, 0x4e, 0x70, 0xf9, 0xe0, 0x04, 0x48, + 0x0c, 0x04, 0x01, 0x0c, 0x04, 0xc6, 0x7d, 0x48, 0x10, 0x7f, 0x0b, 0xe2, 0x04, 0x4c, 0x7c, 0x97, + 0x2f, 0x26, 0x90, 0x20, 0x40, 0x3e, 0xf9, 0x12, 0x23, 0x41, 0xbd, 0xaa, 0xea, 0xae, 0xea, 0xe9, + 0x21, 0x47, 0x2b, 0x2d, 0x70, 0xda, 0x4f, 0xe4, 0xbc, 0x7a, 0xef, 0x75, 0xfd, 0x7d, 0xf5, 0x5e, + 0xd5, 0x7b, 0xaf, 0x60, 0x2c, 0x3a, 0xe8, 0xd2, 0xf0, 0x46, 0x37, 0xf0, 0x23, 0x9f, 0x8c, 0xe0, + 0x8f, 0x8b, 0x67, 0x76, 0xfc, 0x1d, 0x1f, 0x21, 0x33, 0xec, 0x3f, 0x5e, 0x78, 0xb1, 0xb6, 0xe3, + 0xfb, 0x3b, 0x6d, 0x3a, 0x83, 0xbf, 0xb6, 0x7b, 0x0f, 0x66, 0x22, 0x6f, 0x9f, 0x86, 0x91, 0xb3, + 0xdf, 0x15, 0x08, 0x73, 0x3b, 0x5e, 0xb4, 0xdb, 0xdb, 0xbe, 0xd1, 0xf2, 0xf7, 0x67, 0x76, 0x02, + 0xe7, 0xa1, 0x17, 0x39, 0x91, 0xe7, 0x77, 0x9c, 0xf6, 0x4c, 0x44, 0xdb, 0xb4, 0xeb, 0x07, 0xd1, + 0x8c, 0xd3, 0xf5, 0x66, 0xf0, 0x1b, 0x33, 0x8f, 0x02, 0xa7, 0xdb, 0xa5, 0x41, 0xf2, 0x0f, 0x67, + 0x62, 0xfe, 0xfd, 0x3c, 0x94, 0xef, 0x51, 0xda, 0xad, 0xb7, 0xbd, 0x87, 0x94, 0xbc, 0x02, 0x85, + 0x15, 0x67, 0x9f, 0x4e, 0x1b, 0x97, 0x8d, 0xab, 0xe5, 0xc6, 0xe4, 0xd1, 0x61, 0x6d, 0x2c, 0xa4, + 0xc1, 0x43, 0x1a, 0xd8, 0x1d, 0x67, 0x9f, 0x5a, 0x58, 0x48, 0xbe, 0x00, 0x65, 0xf6, 0x37, 0xec, + 0x3a, 0x2d, 0x3a, 0x9d, 0x43, 0xcc, 0xf1, 0xa3, 0xc3, 0x5a, 0xb9, 0x23, 0x81, 0x56, 0x52, 0x4e, + 0xae, 0xc0, 0xe8, 0x32, 0x75, 0x42, 0xba, 0x34, 0x3f, 0x9d, 0xbf, 0x6c, 0x5c, 0xcd, 0x37, 0x2a, + 0x47, 0x87, 0xb5, 0x52, 0x9b, 0x81, 0x6c, 0xcf, 0xb5, 0x64, 0x21, 0x59, 0x82, 0xd1, 0x85, 0xc7, + 0x5d, 0x2f, 0xa0, 0xe1, 0x74, 0xe1, 0xb2, 0x71, 0x75, 0x6c, 0xf6, 0xe2, 0x0d, 0xde, 0xfe, 0x1b, + 0xb2, 0xfd, 0x37, 0xd6, 0x65, 0xfb, 0x1b, 0xa7, 0xbf, 0x7f, 0x58, 0x3b, 0x75, 0x74, 0x58, 0x1b, + 0xa5, 0x9c, 0xe4, 0x3b, 0xff, 0xa5, 0x66, 0x58, 0x92, 0x9e, 0xbc, 0x0b, 0x85, 0xf5, 0x83, 0x2e, + 0x9d, 0x2e, 0x5f, 0x36, 0xae, 0x4e, 0xcc, 0xbe, 0x74, 0x83, 0xf7, 0x78, 0xdc, 0xc8, 0xe4, 0x3f, + 0x86, 0xd5, 0x28, 0x1d, 0x1d, 0xd6, 0x0a, 0x0c, 0xc5, 0x42, 0x2a, 0xf2, 0x26, 0x14, 0x17, 0xfd, + 0x30, 0x5a, 0x9a, 0x9f, 0x06, 0x6c, 0xda, 0xd9, 0xa3, 0xc3, 0xda, 0xd4, 0xae, 0x1f, 0x46, 0xb6, + 0xe7, 0xbe, 0xe1, 0xef, 0x7b, 0x11, 0xdd, 0xef, 0x46, 0x07, 0x96, 0x40, 0x32, 0xb7, 0x61, 0x5c, + 0xe3, 0x47, 0xc6, 0x60, 0x74, 0x63, 0xe5, 0xde, 0xca, 0xea, 0xd6, 0x4a, 0xf5, 0x14, 0x29, 0x41, + 0x61, 0x65, 0x75, 0x7e, 0xa1, 0x6a, 0x90, 0x51, 0xc8, 0xd7, 0xd7, 0xd6, 0xaa, 0x39, 0x52, 0x81, + 0xd2, 0x7c, 0x7d, 0xbd, 0xde, 0xa8, 0x37, 0x17, 0xaa, 0x79, 0x72, 0x1a, 0x26, 0xb7, 0x96, 0x56, + 0xe6, 0x57, 0xb7, 0x9a, 0xf6, 0xfc, 0x42, 0xf3, 0xde, 0xfa, 0xea, 0x5a, 0xb5, 0x40, 0x26, 0x00, + 0xee, 0x6d, 0x34, 0x16, 0xac, 0x95, 0x85, 0xf5, 0x85, 0x66, 0x75, 0xc4, 0xfc, 0xe5, 0x3c, 0x94, + 0xee, 0xd3, 0xc8, 0x71, 0x9d, 0xc8, 0x21, 0x97, 0xb4, 0x21, 0xc2, 0xda, 0x2b, 0x63, 0xf3, 0x4a, + 0xff, 0xd8, 0x8c, 0x1c, 0x1d, 0xd6, 0x8c, 0x37, 0xd5, 0x31, 0x79, 0x07, 0xc6, 0xe6, 0x69, 0xd8, + 0x0a, 0xbc, 0x2e, 0x9b, 0x2f, 0x38, 0x2e, 0xe5, 0xc6, 0x85, 0xa3, 0xc3, 0xda, 0x59, 0x37, 0x01, + 0x2b, 0x6d, 0x55, 0xb1, 0xc9, 0x12, 0x14, 0x97, 0x9d, 0x6d, 0xda, 0x0e, 0xa7, 0x47, 0x2e, 0xe7, + 0xaf, 0x8e, 0xcd, 0xbe, 0x20, 0xfa, 0x57, 0x56, 0xf0, 0x06, 0x2f, 0x5d, 0xe8, 0x44, 0xc1, 0x41, + 0xe3, 0xcc, 0xd1, 0x61, 0xad, 0xda, 0x46, 0x80, 0xda, 0x77, 0x1c, 0x85, 0x34, 0x93, 0x31, 0x2f, + 0x9e, 0x38, 0xe6, 0x2f, 0x7e, 0xff, 0xb0, 0x66, 0xb0, 0xb1, 0x10, 0x63, 0x9e, 0xf0, 0xd3, 0x47, + 0xff, 0x32, 0xe4, 0x96, 0xe6, 0xa7, 0x47, 0x71, 0xae, 0x55, 0x8f, 0x0e, 0x6b, 0x15, 0x6d, 0xd8, + 0x72, 0x4b, 0xf3, 0x17, 0xdf, 0x86, 0x31, 0xa5, 0x8e, 0xa4, 0x0a, 0xf9, 0x3d, 0x7a, 0xc0, 0xfb, + 0xd3, 0x62, 0xff, 0x92, 0x33, 0x30, 0xf2, 0xd0, 0x69, 0xf7, 0x44, 0x07, 0x5a, 0xfc, 0xc7, 0x57, + 0x72, 0x3f, 0x61, 0x98, 0xbf, 0x51, 0x80, 0x92, 0xe5, 0xf3, 0x75, 0x46, 0xae, 0xc1, 0x48, 0x33, + 0x72, 0x22, 0x39, 0x14, 0xa7, 0x8f, 0x0e, 0x6b, 0x93, 0x21, 0x03, 0x28, 0xdf, 0xe3, 0x18, 0x0c, + 0x75, 0x6d, 0xd7, 0x09, 0xe5, 0x90, 0x20, 0x6a, 0x97, 0x01, 0x54, 0x54, 0xc4, 0x20, 0x57, 0xa0, + 0x70, 0xdf, 0x77, 0xa9, 0x18, 0x15, 0x72, 0x74, 0x58, 0x9b, 0xd8, 0xf7, 0x5d, 0x15, 0x11, 0xcb, + 0xc9, 0x1b, 0x50, 0x9e, 0xeb, 0x05, 0x01, 0xed, 0xb0, 0xa9, 0x5a, 0x40, 0xe4, 0x89, 0xa3, 0xc3, + 0x1a, 0xb4, 0x38, 0x90, 0x2d, 0xae, 0x04, 0x81, 0x75, 0x75, 0x33, 0x72, 0x82, 0x88, 0xba, 0xd3, + 0x23, 0x43, 0x75, 0x35, 0x5b, 0x5e, 0x53, 0x21, 0x27, 0x49, 0x77, 0xb5, 0xe0, 0x44, 0x16, 0x61, + 0xec, 0x6e, 0xe0, 0xb4, 0xe8, 0x1a, 0x0d, 0x3c, 0xdf, 0xc5, 0x31, 0xcc, 0x37, 0xae, 0x1c, 0x1d, + 0xd6, 0xce, 0xed, 0x30, 0xb0, 0xdd, 0x45, 0x78, 0x42, 0xfd, 0xa3, 0xc3, 0x5a, 0x69, 0xbe, 0x17, + 0x60, 0xef, 0x59, 0x2a, 0x29, 0xf9, 0x69, 0x36, 0x24, 0x61, 0x84, 0x5d, 0x4b, 0x5d, 0x1c, 0xbd, + 0xe3, 0xab, 0x68, 0x8a, 0x2a, 0x9e, 0x6b, 0x3b, 0x61, 0x64, 0x07, 0x9c, 0x2e, 0x55, 0x4f, 0x95, + 0x25, 0x59, 0x85, 0x52, 0xb3, 0xb5, 0x4b, 0xdd, 0x5e, 0x9b, 0x4e, 0x97, 0x90, 0xfd, 0x79, 0x31, + 0x71, 0xe5, 0x78, 0xca, 0xe2, 0xc6, 0x45, 0xc1, 0x9b, 0x84, 0x02, 0xa2, 0xf4, 0x7d, 0xcc, 0xe4, + 0x2b, 0xa5, 0xdf, 0xfe, 0xfd, 0xda, 0xa9, 0x5f, 0xfc, 0xcf, 0x97, 0x4f, 0x99, 0xff, 0x22, 0x07, + 0xd5, 0x34, 0x13, 0xf2, 0x00, 0xc6, 0x37, 0xba, 0xae, 0x13, 0xd1, 0xb9, 0xb6, 0x47, 0x3b, 0x51, + 0x88, 0x93, 0xe4, 0xf8, 0x36, 0xbd, 0x2a, 0xbe, 0x3b, 0xdd, 0x43, 0x42, 0xbb, 0xc5, 0x29, 0x53, + 0xad, 0xd2, 0xd9, 0x26, 0xdf, 0x69, 0xa2, 0x9c, 0x0e, 0x71, 0x86, 0x3d, 0xd9, 0x77, 0xb8, 0x84, + 0x1f, 0xf0, 0x1d, 0xc1, 0x56, 0x4c, 0xa0, 0x8e, 0xbb, 0x7d, 0x80, 0x33, 0x73, 0xf8, 0x09, 0xc4, + 0x48, 0x32, 0x26, 0x10, 0x03, 0x9b, 0xff, 0xcd, 0x80, 0x09, 0x8b, 0x86, 0x7e, 0x2f, 0x68, 0xd1, + 0x45, 0xea, 0xb8, 0x34, 0x60, 0xd3, 0xff, 0x9e, 0xd7, 0x71, 0xc5, 0x9a, 0xc2, 0xe9, 0xbf, 0xe7, + 0x75, 0xd4, 0x25, 0x8c, 0xe5, 0xe4, 0x8b, 0x30, 0xda, 0xec, 0x6d, 0x23, 0x2a, 0x5f, 0x53, 0xe7, + 0x70, 0xc4, 0x7a, 0xdb, 0x76, 0x0a, 0x5d, 0xa2, 0x91, 0x19, 0x18, 0xdd, 0xa4, 0x41, 0x98, 0x48, + 0x3c, 0x94, 0xec, 0x0f, 0x39, 0x48, 0x25, 0x10, 0x58, 0xe4, 0x6e, 0x22, 0x75, 0xc5, 0x9e, 0x34, + 0x99, 0x92, 0x75, 0xc9, 0x54, 0xd9, 0x17, 0x10, 0x75, 0xaa, 0x48, 0x2c, 0xf3, 0xd7, 0x73, 0x50, + 0x9d, 0x77, 0x22, 0x67, 0xdb, 0x09, 0x45, 0x7f, 0x6e, 0xde, 0x62, 0x72, 0x5c, 0x69, 0x28, 0xca, + 0x71, 0x56, 0xf3, 0x4f, 0xdd, 0xbc, 0xd7, 0xd2, 0xcd, 0x1b, 0x63, 0x1b, 0xa4, 0x68, 0x5e, 0xd2, + 0xa8, 0xf7, 0x4e, 0x6e, 0x54, 0x55, 0x34, 0xaa, 0x24, 0x1b, 0x95, 0x34, 0x85, 0xbc, 0x07, 0x85, + 0x66, 0x97, 0xb6, 0x84, 0x10, 0x91, 0xb2, 0x5f, 0x6f, 0x1c, 0x43, 0xd8, 0xbc, 0xd5, 0xa8, 0x08, + 0x36, 0x85, 0xb0, 0x4b, 0x5b, 0x16, 0x92, 0x29, 0x8b, 0xe6, 0xbb, 0x45, 0x38, 0x93, 0x45, 0x46, + 0xde, 0xd3, 0x37, 0x27, 0xde, 0x3d, 0x2f, 0x0c, 0xdc, 0x9c, 0xa6, 0x0d, 0x7d, 0x7b, 0xba, 0x0e, + 0xa5, 0x35, 0x36, 0x21, 0x5b, 0x7e, 0x5b, 0xf4, 0x1c, 0x93, 0x8a, 0xa5, 0xae, 0x84, 0x19, 0x56, + 0x5c, 0x4e, 0x5e, 0x80, 0xfc, 0x86, 0xb5, 0x24, 0xba, 0xab, 0x7c, 0x74, 0x58, 0xcb, 0xf7, 0x02, + 0x6f, 0xda, 0xb0, 0x18, 0x94, 0xcc, 0x40, 0x71, 0xae, 0x3e, 0x47, 0x83, 0x08, 0xbb, 0xa9, 0xd2, + 0x38, 0xcf, 0x66, 0x4b, 0xcb, 0xb1, 0x5b, 0x34, 0x88, 0xb4, 0xcf, 0x0b, 0x34, 0xf2, 0x05, 0xc8, + 0xd7, 0xb7, 0x9a, 0xa2, 0x67, 0x40, 0xf4, 0x4c, 0x7d, 0xab, 0xd9, 0x18, 0x17, 0x1d, 0x91, 0x77, + 0x1e, 0x85, 0x8c, 0x7b, 0x7d, 0xab, 0xa9, 0x8e, 0x56, 0xf1, 0x98, 0xd1, 0xba, 0x0a, 0x25, 0xa6, + 0x67, 0xb0, 0x0d, 0x1e, 0x85, 0x62, 0x99, 0xab, 0x4f, 0xbb, 0x02, 0x66, 0xc5, 0xa5, 0xe4, 0x95, + 0x58, 0x6d, 0x29, 0x25, 0xfc, 0x84, 0xda, 0x22, 0x95, 0x15, 0xf2, 0x18, 0xc6, 0xe7, 0x0f, 0x3a, + 0xce, 0xbe, 0xd7, 0x12, 0x5b, 0x78, 0x19, 0xb7, 0xf0, 0x1b, 0xc7, 0x0c, 0xe3, 0x0d, 0x8d, 0x80, + 0xef, 0xea, 0x52, 0xf8, 0x4e, 0xbb, 0xbc, 0xcc, 0x4e, 0xef, 0xf0, 0xd3, 0x86, 0xa5, 0x7f, 0x88, + 0xad, 0x25, 0x29, 0x22, 0x51, 0xaf, 0x4a, 0xa6, 0x9d, 0x04, 0x27, 0x6b, 0x29, 0x10, 0x10, 0x75, + 0x2d, 0xc5, 0x9b, 0xee, 0x7b, 0x90, 0xbf, 0x3b, 0xb7, 0x36, 0x3d, 0x86, 0x3c, 0x88, 0xe0, 0x71, + 0x77, 0x6e, 0x6d, 0xae, 0xed, 0xf7, 0xdc, 0xe6, 0x47, 0xcb, 0x8d, 0xf3, 0x82, 0xcd, 0xf8, 0x4e, + 0xab, 0xab, 0xd5, 0x88, 0xd1, 0x91, 0x05, 0x28, 0xc9, 0x56, 0x4e, 0x57, 0x90, 0xc7, 0x54, 0xaa, + 0xf1, 0x9b, 0xb7, 0xf8, 0x5a, 0x73, 0xc5, 0x6f, 0xb5, 0x16, 0x12, 0xe7, 0xe2, 0x16, 0x90, 0xfe, + 0x7e, 0xc9, 0xd0, 0x24, 0xbe, 0xa0, 0x6a, 0x12, 0x63, 0xb3, 0x67, 0xc5, 0xb7, 0xe6, 0xfc, 0xfd, + 0x7d, 0xa7, 0xe3, 0x22, 0xed, 0xe6, 0xac, 0xaa, 0x60, 0xd4, 0x61, 0x22, 0xa9, 0xc8, 0xb2, 0x17, + 0x46, 0x64, 0x06, 0xca, 0x12, 0xc2, 0x36, 0x91, 0x7c, 0x66, 0x95, 0xad, 0x04, 0xc7, 0xfc, 0xb3, + 0x1c, 0x40, 0x52, 0xf2, 0x9c, 0xca, 0x99, 0x2f, 0x6b, 0x72, 0xe6, 0x6c, 0x7a, 0x82, 0x0e, 0x94, + 0x30, 0xe4, 0x03, 0x28, 0x32, 0x95, 0xab, 0x27, 0x55, 0xca, 0xf3, 0x69, 0x52, 0x2c, 0xdc, 0xbc, + 0xd5, 0x98, 0x10, 0xc4, 0xc5, 0x10, 0x21, 0x96, 0x20, 0x53, 0x44, 0xd4, 0xff, 0x28, 0x24, 0x83, + 0x21, 0x84, 0xd3, 0x55, 0x45, 0xba, 0x18, 0xc9, 0x7a, 0x94, 0xd2, 0x45, 0x91, 0x2d, 0x17, 0xb8, + 0x6c, 0xe1, 0x9d, 0x3a, 0x2a, 0x64, 0x4b, 0x5a, 0xb2, 0xf0, 0x0e, 0x3c, 0x51, 0xb2, 0x74, 0xd3, + 0xcb, 0xb6, 0x80, 0xd3, 0xe0, 0x6a, 0x66, 0xaf, 0x64, 0x2d, 0xd8, 0xcb, 0x27, 0x2d, 0xd8, 0xf4, + 0x72, 0xbd, 0x35, 0x48, 0x96, 0x9d, 0x95, 0xab, 0xcb, 0x79, 0xa4, 0x92, 0xa3, 0x4c, 0x7b, 0x87, + 0x2f, 0xcd, 0xe2, 0xc0, 0xa5, 0x79, 0x36, 0x73, 0x69, 0xf2, 0x85, 0xf9, 0x0e, 0x8c, 0xd4, 0x7f, + 0xb6, 0x17, 0x50, 0xa1, 0xfb, 0x55, 0xe4, 0x37, 0x19, 0x2c, 0x5e, 0xd3, 0x93, 0x0e, 0xfb, 0xa9, + 0xea, 0xcc, 0x58, 0xce, 0xbe, 0xbc, 0xbe, 0xdc, 0x14, 0x7a, 0x1d, 0x49, 0x75, 0xcb, 0xfa, 0xb2, + 0x52, 0xed, 0x48, 0x6b, 0x35, 0xa3, 0x22, 0x33, 0x90, 0xab, 0xcf, 0xa3, 0xb1, 0x38, 0x36, 0x5b, + 0x96, 0x9f, 0x9d, 0x6f, 0x9c, 0x11, 0x24, 0x15, 0x47, 0xb3, 0x1f, 0xea, 0xf3, 0x9f, 0xdd, 0xe2, + 0x6f, 0x2b, 0x6a, 0x82, 0x98, 0xa6, 0xcc, 0x1c, 0x15, 0x93, 0xc5, 0x48, 0x94, 0x96, 0xbe, 0xc9, + 0x12, 0x4f, 0x95, 0x6b, 0x7c, 0xe0, 0x72, 0x7d, 0x03, 0x37, 0xa6, 0x6c, 0x42, 0x38, 0x5c, 0xe6, + 0x5f, 0x19, 0x88, 0x4b, 0xde, 0x80, 0xa2, 0x45, 0x77, 0x92, 0xbd, 0x16, 0x6d, 0xb6, 0x00, 0x21, + 0xea, 0x07, 0x38, 0x0e, 0x0a, 0x72, 0xea, 0x86, 0xbb, 0xde, 0x83, 0x48, 0x7c, 0x25, 0x16, 0xe4, + 0x02, 0xac, 0x08, 0x72, 0x01, 0xd1, 0x04, 0xb9, 0x80, 0xb1, 0x29, 0x66, 0xcd, 0x37, 0x85, 0x32, + 0x29, 0x6b, 0x6a, 0xcd, 0x2b, 0x63, 0x15, 0xb8, 0xda, 0x58, 0x59, 0xf3, 0x4d, 0x72, 0x1b, 0xca, + 0xf5, 0x56, 0xcb, 0xef, 0x29, 0x46, 0xcf, 0xf4, 0xd1, 0x61, 0xed, 0x8c, 0xc3, 0x81, 0xba, 0x89, + 0x9e, 0xa0, 0x9a, 0x8d, 0xa4, 0xd6, 0x8c, 0xc7, 0x5c, 0xbb, 0x17, 0x46, 0x34, 0x58, 0x9a, 0x17, + 0x4d, 0x46, 0x1e, 0x2d, 0x0e, 0x4c, 0xf1, 0x88, 0x51, 0xcd, 0xff, 0x64, 0x60, 0x8d, 0xc9, 0xdb, + 0x00, 0x4b, 0x1d, 0xa6, 0xd8, 0xb6, 0x68, 0xcc, 0x00, 0x8d, 0x67, 0x4f, 0x40, 0x75, 0x0e, 0x0a, + 0xb2, 0xfe, 0xe9, 0xdc, 0xd0, 0x9f, 0x66, 0x9f, 0x94, 0x6a, 0xb2, 0x38, 0x47, 0x11, 0x9f, 0x0c, + 0x04, 0x34, 0xf5, 0xc9, 0x04, 0x99, 0x5c, 0x81, 0xd1, 0xa5, 0xfa, 0xfd, 0x7a, 0x2f, 0xda, 0xc5, + 0xfe, 0x2a, 0x71, 0x81, 0xe5, 0x39, 0xfb, 0xb6, 0xd3, 0x8b, 0x76, 0x2d, 0x59, 0x68, 0xfe, 0xa2, + 0x01, 0x63, 0xca, 0x5a, 0x65, 0x55, 0x5d, 0x0b, 0xfc, 0x4f, 0x68, 0x2b, 0xd2, 0x7b, 0xa9, 0xcb, + 0x81, 0xa9, 0xaa, 0xc6, 0xa8, 0xa9, 0xde, 0xc9, 0x3d, 0x41, 0xef, 0x98, 0x33, 0x42, 0x04, 0x30, + 0x1b, 0x40, 0x39, 0xe2, 0x40, 0x1b, 0x80, 0xe9, 0x38, 0xaa, 0x0d, 0xc0, 0xca, 0xcd, 0x3f, 0x32, + 0xd8, 0xd2, 0x25, 0x33, 0x00, 0xf7, 0xe8, 0x41, 0xe4, 0x6c, 0xdf, 0xf1, 0xda, 0xda, 0xd1, 0xd5, + 0x1e, 0x42, 0xed, 0x07, 0x5e, 0x9b, 0x5a, 0x0a, 0x0a, 0xb9, 0x05, 0xa5, 0x7b, 0xc1, 0xf6, 0x5b, + 0x88, 0x9e, 0x8b, 0x45, 0xf0, 0xe9, 0xbd, 0x60, 0xfb, 0x2d, 0x44, 0x56, 0xe7, 0xab, 0x44, 0x24, + 0x26, 0x14, 0xe7, 0xfd, 0x7d, 0xc7, 0x93, 0xdb, 0x1e, 0xb0, 0xbd, 0xc3, 0x45, 0x88, 0x25, 0x4a, + 0x98, 0xd0, 0x6f, 0xae, 0xad, 0x88, 0x89, 0x89, 0x42, 0x3f, 0xec, 0x76, 0x2c, 0x06, 0x33, 0xbf, + 0x67, 0xc0, 0x98, 0x22, 0x91, 0xc8, 0x97, 0x84, 0x99, 0x6f, 0xe0, 0x21, 0xd5, 0xb9, 0x7e, 0x99, + 0xc5, 0x4a, 0xf9, 0x76, 0xcd, 0xcc, 0x7f, 0x61, 0xf4, 0x27, 0xd2, 0x20, 0x37, 0x8c, 0x34, 0x78, + 0x1b, 0x80, 0xeb, 0x72, 0xd8, 0x9d, 0xca, 0xbc, 0x51, 0x0e, 0xf5, 0xd4, 0xc1, 0x48, 0x90, 0xcd, + 0xff, 0x3f, 0x07, 0x25, 0x61, 0xab, 0xcc, 0x3e, 0xa7, 0x3a, 0xc4, 0x5b, 0x9a, 0x0e, 0x71, 0x5a, + 0x90, 0x2a, 0xca, 0xed, 0xec, 0x09, 0x36, 0xca, 0xdb, 0x50, 0x91, 0x5d, 0x80, 0xaa, 0xd8, 0x35, + 0x18, 0x95, 0x56, 0x36, 0x57, 0xc4, 0x26, 0x35, 0x9e, 0x9b, 0xb3, 0x96, 0x2c, 0x37, 0xff, 0x6c, + 0x44, 0xd2, 0xf2, 0x2f, 0xb1, 0x2e, 0xac, 0xbb, 0x6e, 0xa0, 0x76, 0xa1, 0xe3, 0xba, 0x81, 0x85, + 0x50, 0x36, 0x50, 0x6b, 0xbd, 0xed, 0xb6, 0xd7, 0x42, 0x1c, 0x65, 0xd5, 0x74, 0x11, 0x6a, 0x33, + 0x54, 0x75, 0xa0, 0x12, 0x64, 0xcd, 0x44, 0xc8, 0x1f, 0x6b, 0x22, 0xfc, 0x14, 0x94, 0xe7, 0xf6, + 0x5d, 0x4d, 0x85, 0x30, 0x33, 0x3a, 0xe5, 0x46, 0x8c, 0xc4, 0x95, 0x87, 0x4b, 0xa2, 0x8f, 0xce, + 0xb4, 0xf6, 0xdd, 0x7e, 0xc5, 0x21, 0x61, 0xa9, 0xe9, 0xf8, 0x23, 0x4f, 0xa3, 0xe3, 0xdf, 0x86, + 0xf2, 0x46, 0x48, 0xd7, 0x7b, 0x9d, 0x0e, 0x6d, 0xa3, 0x3a, 0x51, 0xe2, 0xb2, 0xa7, 0x17, 0x52, + 0x3b, 0x42, 0xa8, 0x5a, 0x81, 0x18, 0x55, 0x9d, 0x56, 0xa3, 0xc7, 0x4c, 0xab, 0x2f, 0x41, 0xa1, + 0xde, 0xed, 0x4a, 0xe3, 0x27, 0xde, 0x24, 0xbb, 0x5d, 0xdc, 0xfa, 0x26, 0x9c, 0x6e, 0x57, 0x37, + 0x65, 0x10, 0x9b, 0x50, 0x20, 0xf7, 0x7a, 0xdb, 0x34, 0xe8, 0xd0, 0x88, 0x86, 0x42, 0x34, 0x87, + 0xd3, 0x80, 0x3c, 0xa6, 0xe5, 0x19, 0x73, 0x1a, 0x01, 0x0d, 0xd7, 0xf3, 0x7b, 0xbd, 0x6d, 0x6a, + 0x0b, 0x19, 0xaf, 0xf6, 0x5d, 0x06, 0x43, 0x26, 0x9b, 0xd6, 0x28, 0x0d, 0x70, 0x1e, 0x8c, 0x25, + 0xb2, 0xa9, 0x4b, 0x69, 0x90, 0x9e, 0x05, 0x31, 0xe2, 0xc5, 0x26, 0x4c, 0xe8, 0x83, 0xf6, 0x0c, + 0xb4, 0x91, 0x0f, 0x0b, 0xa5, 0x52, 0xb5, 0x6c, 0xfe, 0x72, 0x0e, 0xc6, 0xea, 0xdd, 0xee, 0x73, + 0x7e, 0x6c, 0xf1, 0x13, 0x9a, 0x28, 0x38, 0x97, 0x0c, 0xf9, 0x13, 0x9c, 0x58, 0xfc, 0xb5, 0x01, + 0x93, 0x29, 0x0a, 0xb5, 0xf6, 0xc6, 0x90, 0x66, 0x7c, 0x6e, 0x48, 0x33, 0x3e, 0x3f, 0xd8, 0x8c, + 0x57, 0x17, 0x5a, 0xe1, 0x69, 0x16, 0xda, 0xeb, 0x90, 0xaf, 0x77, 0xbb, 0xa2, 0x57, 0x2a, 0x49, + 0xaf, 0x6c, 0xde, 0xe2, 0xbb, 0x97, 0xd3, 0xed, 0x5a, 0x0c, 0xc3, 0x7c, 0x13, 0xca, 0x08, 0x46, + 0x31, 0x78, 0x59, 0xac, 0x1f, 0x2e, 0x03, 0x35, 0x32, 0xbe, 0x56, 0xcc, 0xff, 0x6d, 0xc0, 0x08, + 0xfe, 0x7e, 0x4e, 0xa7, 0xcb, 0xac, 0x36, 0x5d, 0xaa, 0xca, 0x74, 0x19, 0x66, 0xa2, 0xfc, 0x71, + 0x1e, 0x7b, 0x4b, 0x4c, 0x11, 0x61, 0x08, 0x1a, 0x19, 0x86, 0xe0, 0x53, 0x48, 0xfd, 0xbd, 0xb4, + 0x49, 0x98, 0xc7, 0xc1, 0x78, 0x25, 0x5d, 0xd5, 0x67, 0x62, 0x0d, 0x2e, 0x02, 0x59, 0xea, 0x84, + 0xb4, 0xd5, 0x0b, 0x68, 0x73, 0xcf, 0xeb, 0x6e, 0xd2, 0xc0, 0x7b, 0x70, 0x20, 0xd4, 0x49, 0x14, + 0xcc, 0x9e, 0x28, 0xb5, 0xc3, 0x3d, 0xaf, 0x6b, 0x3f, 0xc4, 0x72, 0x2b, 0x83, 0x86, 0x7c, 0x00, + 0xa3, 0x16, 0x7d, 0x14, 0x78, 0x11, 0x15, 0x7d, 0x3b, 0x11, 0x1b, 0x0f, 0x08, 0xe5, 0x0a, 0x4d, + 0xc0, 0x7f, 0xa8, 0xe3, 0x2f, 0xca, 0x3f, 0x3b, 0xdb, 0xeb, 0xbb, 0x23, 0xb8, 0x16, 0x4e, 0xb8, + 0x5e, 0x3b, 0xc6, 0xaa, 0xd7, 0x07, 0x33, 0xff, 0x24, 0x83, 0xb9, 0x09, 0x15, 0x66, 0xef, 0xa5, + 0xcc, 0xfb, 0x4b, 0xc9, 0x58, 0xde, 0x50, 0x8b, 0x8f, 0xbb, 0x59, 0xd3, 0xf8, 0x10, 0x3b, 0x3d, + 0x49, 0xf8, 0x8d, 0xdd, 0x8b, 0x0a, 0xe3, 0x8c, 0xe9, 0x11, 0x8b, 0x8e, 0x16, 0xef, 0xac, 0x27, + 0x9e, 0x18, 0xc5, 0xa7, 0x9b, 0x18, 0xa3, 0x9f, 0x66, 0x62, 0xa4, 0xef, 0x34, 0x4b, 0x4f, 0x72, + 0xa7, 0x79, 0xf1, 0x03, 0x98, 0xea, 0xeb, 0xe1, 0x27, 0xb9, 0x17, 0xfc, 0xec, 0xa6, 0xe5, 0xcf, + 0xc7, 0xfd, 0x42, 0x66, 0xd1, 0x86, 0xf5, 0x02, 0xda, 0x8a, 0x50, 0xf4, 0x0a, 0x69, 0x19, 0x08, + 0x58, 0xca, 0xc8, 0x46, 0x18, 0x79, 0x1f, 0x46, 0xf9, 0xbd, 0x4a, 0x38, 0x9d, 0xc3, 0xb1, 0x1f, + 0x17, 0x5f, 0xe4, 0x50, 0x71, 0xb9, 0xcd, 0x31, 0xd4, 0x5e, 0x15, 0x44, 0xe6, 0x5d, 0x28, 0x8a, + 0x7b, 0x99, 0xe3, 0xd7, 0x45, 0x0d, 0x46, 0x36, 0x93, 0x9e, 0xc1, 0xb3, 0x74, 0xde, 0x08, 0x8b, + 0xc3, 0xcd, 0x5f, 0x35, 0x60, 0x42, 0x6f, 0x25, 0xb9, 0x01, 0x45, 0x71, 0x71, 0x68, 0xe0, 0xc5, + 0x21, 0x6b, 0x4d, 0x91, 0x5f, 0x19, 0x6a, 0x17, 0x85, 0x02, 0x8b, 0x89, 0x7e, 0xc1, 0x01, 0xdb, + 0x22, 0x44, 0xbf, 0x98, 0xa4, 0x96, 0x2c, 0x63, 0x76, 0x9a, 0x45, 0xc3, 0x5e, 0x3b, 0x52, 0xed, + 0xb4, 0x00, 0x21, 0x96, 0x28, 0x31, 0x0f, 0x0d, 0x80, 0x66, 0x73, 0xf1, 0x1e, 0x3d, 0x58, 0x73, + 0xbc, 0x00, 0x6d, 0x5d, 0x5c, 0x8d, 0xf7, 0xc4, 0x68, 0x55, 0x84, 0xad, 0xcb, 0x57, 0xee, 0x1e, + 0x3d, 0xd0, 0x6c, 0x5d, 0x89, 0x8a, 0x4b, 0x3e, 0xf0, 0x1e, 0x3a, 0x11, 0x65, 0x84, 0x39, 0x24, + 0xe4, 0x4b, 0x9e, 0x43, 0x53, 0x94, 0x0a, 0x32, 0xf9, 0x18, 0x26, 0x92, 0x5f, 0xe8, 0xad, 0x90, + 0x47, 0x43, 0x50, 0xce, 0x08, 0xbd, 0xb0, 0xf1, 0xd2, 0xd1, 0x61, 0xed, 0xa2, 0xc2, 0xd5, 0x66, + 0x58, 0x0a, 0xeb, 0x14, 0x33, 0xf3, 0x0f, 0x0c, 0x80, 0xf5, 0xe5, 0xa6, 0x6c, 0xe0, 0x15, 0x28, + 0xc4, 0x47, 0x48, 0x15, 0x6e, 0x50, 0xa7, 0x2c, 0x46, 0x2c, 0x27, 0xaf, 0x40, 0x3e, 0x69, 0xc9, + 0xd4, 0xd1, 0x61, 0x6d, 0x5c, 0x6f, 0x01, 0x2b, 0x25, 0x77, 0x61, 0x74, 0xa8, 0x3a, 0xe3, 0xec, + 0xcc, 0xa8, 0xab, 0xa4, 0xc6, 0x51, 0xf8, 0x70, 0x6b, 0xfd, 0xf3, 0x3b, 0x0a, 0xdf, 0xce, 0xc1, + 0x24, 0xeb, 0xd7, 0x7a, 0x2f, 0xda, 0xf5, 0x03, 0x2f, 0x3a, 0x78, 0x6e, 0x4d, 0xe9, 0x77, 0x35, + 0x85, 0xe8, 0xa2, 0x14, 0x5b, 0x6a, 0xdb, 0x86, 0xb2, 0xa8, 0xff, 0x72, 0x14, 0x4e, 0x67, 0x50, + 0x91, 0x37, 0x84, 0xcb, 0x4e, 0x72, 0xd0, 0x84, 0x2e, 0x39, 0x3f, 0x3a, 0xac, 0x55, 0x24, 0xfa, + 0x7a, 0xe2, 0xa2, 0x33, 0x0b, 0x63, 0xc2, 0x5e, 0x5a, 0x49, 0x34, 0x6a, 0xf4, 0xf5, 0x90, 0x07, + 0x69, 0x28, 0x9a, 0x54, 0x24, 0x52, 0x87, 0xca, 0xdc, 0x2e, 0x6d, 0xed, 0x79, 0x9d, 0x9d, 0x7b, + 0xf4, 0x80, 0xeb, 0x4b, 0x95, 0xc6, 0x8b, 0xcc, 0x3c, 0x6b, 0x09, 0x38, 0x1b, 0x52, 0xdd, 0xf2, + 0xd3, 0x48, 0xc8, 0xfb, 0x30, 0xd6, 0xf4, 0x76, 0x3a, 0x92, 0x43, 0x01, 0x39, 0x5c, 0x3a, 0x3a, + 0xac, 0x9d, 0x0b, 0x39, 0xb8, 0x9f, 0x81, 0x4a, 0x40, 0xae, 0xc1, 0x88, 0xe5, 0xb7, 0x29, 0xdf, + 0x86, 0x85, 0x13, 0x48, 0xc0, 0x00, 0xea, 0x81, 0x36, 0x62, 0x90, 0x45, 0x18, 0x65, 0xff, 0xdc, + 0x77, 0xba, 0xd3, 0x45, 0x94, 0xdb, 0x24, 0x56, 0xf0, 0x11, 0xda, 0xf5, 0x3a, 0x3b, 0xaa, 0x8e, + 0xdf, 0xa6, 0xf6, 0xbe, 0xd3, 0xd5, 0xf6, 0x45, 0x8e, 0x48, 0x36, 0x61, 0x2c, 0x11, 0x04, 0xe1, + 0xf4, 0xa8, 0x76, 0x81, 0x94, 0x94, 0x34, 0x5e, 0x16, 0xcc, 0xce, 0x47, 0xed, 0x10, 0xe7, 0x76, + 0x97, 0xe1, 0xeb, 0x8d, 0x51, 0x18, 0x69, 0x36, 0x48, 0x69, 0xb0, 0x0d, 0x62, 0x9c, 0x68, 0x83, + 0xb8, 0x00, 0xa2, 0x93, 0xea, 0xed, 0x1d, 0xe1, 0xb3, 0x75, 0x6d, 0xf0, 0x04, 0xbb, 0x91, 0x20, + 0xe3, 0x9a, 0xe4, 0xc7, 0x59, 0xa2, 0xff, 0x9d, 0xf6, 0x8e, 0x76, 0x9c, 0x15, 0xa3, 0xb2, 0x6e, + 0x48, 0x44, 0x8d, 0x34, 0xdb, 0x65, 0x37, 0x24, 0x25, 0x49, 0x37, 0x7c, 0xf2, 0x28, 0x1a, 0xd4, + 0x0d, 0x0a, 0x23, 0xb2, 0x02, 0x50, 0x6f, 0x45, 0xde, 0x43, 0x8a, 0x53, 0x62, 0x4c, 0xeb, 0x88, + 0xb9, 0xfa, 0x3d, 0x7a, 0xd0, 0xa4, 0x51, 0xec, 0x0e, 0x71, 0xd6, 0x41, 0xd4, 0xd4, 0x34, 0xb1, + 0x14, 0x0e, 0xa4, 0x0b, 0x67, 0xeb, 0xae, 0xeb, 0x71, 0x3f, 0xbe, 0xf5, 0x80, 0xcd, 0x5f, 0x17, + 0x59, 0x57, 0xb2, 0x59, 0x5f, 0x13, 0xac, 0x5f, 0x76, 0x62, 0x2a, 0x3b, 0xe2, 0x64, 0xe9, 0xcf, + 0x64, 0x33, 0x36, 0x57, 0x61, 0x42, 0xef, 0x52, 0xdd, 0x83, 0xad, 0x02, 0x25, 0xab, 0x59, 0xb7, + 0x9b, 0x8b, 0xf5, 0x9b, 0x55, 0x83, 0x54, 0xa1, 0x22, 0x7e, 0xcd, 0xda, 0xb3, 0x6f, 0xdd, 0xae, + 0xe6, 0x34, 0xc8, 0x5b, 0x37, 0x67, 0xab, 0x79, 0xf3, 0x8f, 0x0d, 0x28, 0xc9, 0xfa, 0x91, 0xdb, + 0x90, 0x6f, 0x36, 0x17, 0x53, 0xf7, 0x96, 0xc9, 0xd6, 0xcb, 0x37, 0x99, 0x30, 0xdc, 0x55, 0x37, + 0x99, 0x66, 0x73, 0x91, 0xd1, 0xad, 0x2f, 0x37, 0x85, 0xd2, 0x92, 0x31, 0x5d, 0xa7, 0x06, 0x5c, + 0xe6, 0xdc, 0x86, 0xfc, 0x87, 0x5b, 0xeb, 0xc2, 0x1a, 0xca, 0x18, 0x5f, 0xa4, 0xfb, 0xe4, 0x91, + 0xba, 0xf5, 0x31, 0x02, 0xd3, 0x82, 0x31, 0x65, 0x69, 0x71, 0x25, 0x62, 0xdf, 0x8f, 0x7d, 0xbb, + 0x84, 0x12, 0xc1, 0x20, 0x96, 0x28, 0x61, 0x3a, 0xcf, 0xb2, 0xdf, 0x72, 0xda, 0x42, 0x1b, 0x41, + 0x9d, 0xa7, 0xcd, 0x00, 0x16, 0x87, 0x9b, 0x7f, 0x6a, 0x40, 0x75, 0x2d, 0xf0, 0x1f, 0x7a, 0x4c, + 0x02, 0xaf, 0xfb, 0x7b, 0xb4, 0xb3, 0x79, 0x93, 0xbc, 0x29, 0x85, 0x00, 0x57, 0xe1, 0xce, 0x33, + 0x2a, 0x14, 0x02, 0x3f, 0x3a, 0xac, 0x41, 0xf3, 0x20, 0x8c, 0xe8, 0x3e, 0x2b, 0x97, 0x82, 0x40, + 0x71, 0x91, 0xcb, 0x0d, 0xef, 0x76, 0x73, 0x82, 0x8b, 0x5c, 0x0d, 0x46, 0xb0, 0x3a, 0x8a, 0xe7, + 0xc3, 0x48, 0xc4, 0x00, 0x16, 0x87, 0x2b, 0x02, 0xfb, 0xd7, 0x73, 0x7d, 0x6d, 0x98, 0xfd, 0x5c, + 0xb9, 0xae, 0xe8, 0x8d, 0x1b, 0x6a, 0x13, 0xfb, 0x3a, 0x9c, 0x49, 0x77, 0x09, 0x9e, 0x8b, 0xd4, + 0x61, 0x52, 0x87, 0xcb, 0x23, 0x92, 0xf3, 0x99, 0xdf, 0xda, 0x9c, 0xb5, 0xd2, 0xf8, 0xe6, 0x0f, + 0x0c, 0x28, 0xe3, 0xbf, 0x56, 0xaf, 0x4d, 0x99, 0x66, 0x53, 0xdf, 0x6a, 0x8a, 0x5b, 0x2c, 0xf5, + 0xa6, 0xc9, 0x79, 0x14, 0xda, 0xe2, 0xca, 0x4b, 0x93, 0x23, 0x31, 0xb2, 0x20, 0xe5, 0x77, 0x76, + 0xa1, 0x98, 0xa1, 0x31, 0x29, 0xbf, 0xdc, 0x0b, 0x53, 0xa4, 0x02, 0x99, 0x8d, 0x1f, 0xfb, 0xe5, + 0xb7, 0xe5, 0x79, 0x32, 0x8e, 0x1f, 0xd2, 0xf9, 0xda, 0xdd, 0x88, 0x44, 0x23, 0x6f, 0x42, 0x91, + 0x7d, 0xda, 0x92, 0x37, 0x1f, 0x68, 0x55, 0x60, 0x1d, 0x03, 0xed, 0x0a, 0x91, 0x23, 0x99, 0xff, + 0x32, 0x97, 0xee, 0x40, 0xa1, 0x05, 0x3c, 0xe1, 0xda, 0x78, 0x07, 0x46, 0xea, 0xed, 0xb6, 0xff, + 0x48, 0x48, 0x09, 0x79, 0x4c, 0x13, 0xf7, 0x1f, 0xdf, 0x61, 0x1d, 0x86, 0xa2, 0x5d, 0x19, 0x33, + 0x00, 0x99, 0x83, 0x72, 0x7d, 0xab, 0xb9, 0xb4, 0x34, 0xbf, 0xbe, 0xbe, 0x2c, 0x3c, 0x93, 0x5f, + 0x93, 0xfd, 0xe3, 0x79, 0xae, 0x1d, 0x45, 0xed, 0x01, 0x8e, 0x8b, 0x09, 0x1d, 0x79, 0x0f, 0xe0, + 0x43, 0xdf, 0xeb, 0xdc, 0xa7, 0xd1, 0xae, 0xef, 0x8a, 0xc6, 0x33, 0x95, 0x62, 0xec, 0x13, 0xdf, + 0xeb, 0xd8, 0xfb, 0x08, 0x66, 0x75, 0x4f, 0x90, 0x2c, 0xe5, 0x7f, 0xd6, 0xd3, 0x0d, 0x3f, 0x42, + 0x1d, 0x66, 0x24, 0xe9, 0xe9, 0x6d, 0x3f, 0x4a, 0x5f, 0xcc, 0x48, 0x34, 0xf3, 0xd7, 0x72, 0x30, + 0xc1, 0x2d, 0x55, 0x3e, 0x61, 0x9e, 0xdb, 0xc5, 0xf8, 0x8e, 0xb6, 0x18, 0x2f, 0xc8, 0x8d, 0x41, + 0x69, 0xda, 0x50, 0x4b, 0x71, 0x17, 0x48, 0x3f, 0x0d, 0xb1, 0xe4, 0x79, 0xca, 0x30, 0xab, 0xf0, + 0x66, 0x72, 0xe1, 0x1c, 0x22, 0x91, 0x8d, 0xa2, 0x30, 0xb4, 0x34, 0x1e, 0xe6, 0xaf, 0xe6, 0x60, + 0x5c, 0xd1, 0x27, 0x9f, 0xdb, 0x8e, 0xff, 0x8a, 0xd6, 0xf1, 0xf2, 0xe2, 0x42, 0x69, 0xd9, 0x50, + 0xfd, 0xde, 0x83, 0xa9, 0x3e, 0x92, 0xb4, 0x5a, 0x6e, 0x0c, 0xa3, 0x96, 0xbf, 0xd1, 0x7f, 0x23, + 0xce, 0xbd, 0x98, 0xe3, 0x1b, 0x71, 0xf5, 0x0a, 0xfe, 0xdb, 0x39, 0x38, 0x23, 0x7e, 0xd5, 0x7b, + 0xae, 0x17, 0xcd, 0xf9, 0x9d, 0x07, 0xde, 0xce, 0x73, 0x3b, 0x16, 0x75, 0x6d, 0x2c, 0x6a, 0xfa, + 0x58, 0x28, 0x0d, 0x1c, 0x3c, 0x24, 0xe6, 0xbf, 0x2a, 0xc1, 0xf4, 0x20, 0x02, 0x66, 0xf6, 0x2b, + 0x56, 0x15, 0x9a, 0xfd, 0x29, 0x8b, 0x95, 0xdb, 0x53, 0x89, 0x07, 0x48, 0x6e, 0x08, 0x0f, 0x90, + 0x65, 0xa8, 0xe2, 0xa7, 0x9a, 0x34, 0x64, 0x9d, 0x10, 0x26, 0x2e, 0x94, 0x97, 0x8f, 0x0e, 0x6b, + 0x97, 0x1c, 0x56, 0x66, 0x87, 0xa2, 0xd0, 0xee, 0x05, 0x9e, 0xc2, 0xa3, 0x8f, 0x92, 0xfc, 0x81, 0x01, 0x13, 0x08, 0x5c, 0x78, 0x48, 0x3b, 0x11, 0x32, 0x2b, 0x88, 0x4b, 0x9a, 0x38, 0x52, 0xa5, 0x19, 0x05, 0x5e, 0x67, 0x07, 0x0f, 0x92, 0xc2, 0xc6, 0x36, 0xeb, 0x85, 0xbf, 0x38, 0xac, 0xbd, - 0xfb, 0x49, 0xa2, 0x5f, 0x04, 0xab, 0x90, 0x19, 0xf2, 0xbc, 0xa2, 0x14, 0x3f, 0x9b, 0xaa, 0x66, + 0xfb, 0x69, 0xa2, 0x5f, 0x04, 0xab, 0x90, 0x19, 0xf2, 0xbc, 0xa2, 0x14, 0x3f, 0x9b, 0xaa, 0x66, 0xaa, 0x46, 0xe4, 0x27, 0xe1, 0xfc, 0x42, 0xc7, 0xd9, 0x6e, 0xd3, 0x39, 0xbf, 0x13, 0x79, 0x9d, 0x9e, 0xdf, 0x0b, 0x1b, 0x4e, 0x6b, 0xaf, 0xd7, 0x0d, 0xc5, 0x61, 0x27, 0xb6, 0xbc, 0x15, 0x17, 0xda, 0xdb, 0xbc, 0x54, 0x61, 0x39, 0x88, 0x01, 0x59, 0x84, 0x29, 0x5e, 0x54, 0xef, 0x45, 0x7e, @@ -9434,7 +9434,7 @@ var fileDescriptor_d938547f84707355 = []byte{ 0x6e, 0x65, 0x1f, 0x65, 0xcc, 0x4d, 0x6d, 0xe7, 0x38, 0xb6, 0x53, 0xe1, 0x36, 0xa0, 0xa1, 0x7d, 0x94, 0x64, 0x85, 0x75, 0x5a, 0x44, 0x3b, 0x6c, 0x46, 0x8b, 0x43, 0xd2, 0x09, 0xac, 0xda, 0xab, 0xc2, 0xa6, 0xae, 0x06, 0xb2, 0xd8, 0xce, 0x38, 0x32, 0x4d, 0x13, 0x7f, 0x58, 0x28, 0x8d, 0x54, - 0x8b, 0x56, 0x95, 0x4f, 0xf9, 0x88, 0x4d, 0x1c, 0x94, 0xc5, 0xe6, 0xef, 0xe6, 0xe0, 0x82, 0x14, + 0x8b, 0x56, 0x95, 0x4f, 0xf9, 0x88, 0x4d, 0x1c, 0x94, 0xc5, 0xe6, 0xef, 0xe4, 0xe0, 0x82, 0x14, 0xc7, 0x34, 0x7a, 0xe4, 0x07, 0x7b, 0x5e, 0x67, 0xe7, 0x39, 0x97, 0xaa, 0x77, 0x34, 0xa9, 0xfa, 0x6a, 0x6a, 0x87, 0x4b, 0xb5, 0xf2, 0x18, 0xd1, 0xfa, 0x27, 0x45, 0x78, 0xf1, 0x58, 0x2a, 0xf2, 0x11, 0xdb, 0x05, 0x3d, 0xda, 0x89, 0x96, 0xdc, 0x36, 0x65, 0x66, 0x98, 0xdf, 0x8b, 0xc4, 0x61, @@ -9442,483 +9442,481 @@ var fileDescriptor_d938547f84707355 = []byte{ 0x0d, 0x53, 0x3f, 0x35, 0x63, 0x19, 0x87, 0x93, 0x2d, 0x75, 0x22, 0x1a, 0x3c, 0x74, 0xb8, 0x1f, 0xbb, 0x60, 0xb9, 0x47, 0x69, 0xd7, 0x76, 0x58, 0xa9, 0xed, 0x89, 0x62, 0x9d, 0x65, 0x1f, 0x35, 0xb9, 0xa3, 0xb0, 0x9c, 0x63, 0xc6, 0xc1, 0x7d, 0xe7, 0xb1, 0xd0, 0x78, 0xf1, 0x7c, 0x55, 0x61, - 0xc9, 0x9d, 0xe8, 0xf6, 0x9d, 0xc7, 0x56, 0x3f, 0x09, 0xf9, 0x06, 0x9c, 0x15, 0x82, 0x9b, 0x09, - 0xb1, 0xc0, 0x6f, 0xcb, 0x16, 0x17, 0x90, 0xd7, 0xeb, 0x47, 0x87, 0xb5, 0xf3, 0x42, 0xec, 0xdb, - 0x2d, 0x8e, 0x91, 0xd9, 0xea, 0x6c, 0x2e, 0x64, 0x9d, 0x6d, 0x64, 0xa9, 0xee, 0xb8, 0x4f, 0xc3, - 0xd0, 0xd9, 0x91, 0xda, 0x31, 0xbf, 0x51, 0x52, 0x3a, 0xd3, 0xde, 0xe7, 0xe5, 0xd6, 0x40, 0x4a, - 0xb2, 0x08, 0x13, 0x5b, 0x74, 0x5b, 0x1d, 0x9f, 0x62, 0xbc, 0xc4, 0xab, 0x8f, 0xe8, 0xf6, 0xe0, - 0xc1, 0x49, 0xd1, 0x11, 0x0f, 0xa6, 0xd6, 0x02, 0xff, 0xf1, 0x01, 0x33, 0xf5, 0x68, 0x87, 0x06, - 0xe8, 0xbd, 0x35, 0x8a, 0xc7, 0x55, 0xd3, 0x89, 0x66, 0xa9, 0x97, 0x37, 0x5e, 0x3e, 0x3a, 0xac, - 0xbd, 0xd8, 0x65, 0x60, 0xbb, 0x2d, 0xe0, 0x76, 0x2a, 0x9a, 0xab, 0x9f, 0x2b, 0xf9, 0x69, 0x98, - 0xb4, 0xfc, 0x5e, 0xe4, 0x75, 0x76, 0x9a, 0x51, 0xe0, 0x44, 0x74, 0x87, 0x0b, 0xf2, 0xc4, 0x4d, - 0x2c, 0x55, 0xca, 0x0f, 0xa6, 0x03, 0x0e, 0xb4, 0x43, 0x01, 0xd5, 0x24, 0xa9, 0x4e, 0x40, 0x7e, - 0x0a, 0x26, 0xb8, 0xcf, 0x4c, 0xfc, 0x81, 0xb2, 0xe6, 0x2d, 0xad, 0x17, 0x6e, 0xde, 0x44, 0xab, - 0xe6, 0x02, 0xf7, 0xbd, 0xc9, 0xfa, 0x40, 0x8a, 0x9b, 0x79, 0x68, 0x40, 0x35, 0xcd, 0x83, 0x7c, - 0x05, 0xca, 0xf5, 0x1d, 0xda, 0x61, 0x63, 0xb3, 0x2b, 0xc2, 0xa1, 0x64, 0x70, 0x66, 0x0c, 0xd7, - 0x89, 0x84, 0x73, 0x27, 0x2b, 0x64, 0x63, 0xad, 0x9c, 0x12, 0x2d, 0x9e, 0xb2, 0x12, 0x66, 0xc4, - 0x85, 0x0a, 0xf6, 0xe2, 0x1a, 0xa5, 0x6c, 0x7b, 0x17, 0x47, 0x25, 0x2f, 0xab, 0xc3, 0x22, 0x8a, - 0x52, 0xfc, 0xd1, 0x3d, 0x87, 0x8f, 0x4f, 0x97, 0x23, 0x68, 0x9f, 0xd0, 0xb8, 0x36, 0x00, 0x4a, - 0x71, 0x03, 0x2f, 0xc0, 0xf9, 0x01, 0x75, 0x36, 0xbf, 0x6b, 0xc0, 0xc5, 0xc1, 0x9f, 0x24, 0xbf, - 0x64, 0xc0, 0x19, 0x24, 0x9d, 0xf3, 0x3b, 0x1d, 0xda, 0x8a, 0x70, 0x25, 0x48, 0xfb, 0x3e, 0xdf, - 0x58, 0x3d, 0x3a, 0xac, 0x5d, 0xe6, 0x2d, 0x6e, 0xc5, 0x08, 0x76, 0xca, 0xd4, 0xff, 0x9f, 0x87, - 0xb5, 0xd7, 0x0f, 0x9c, 0xfd, 0xf6, 0x97, 0xcc, 0x93, 0x30, 0x4d, 0x2b, 0xf3, 0x63, 0xe6, 0x6f, - 0xe7, 0x60, 0x5a, 0xac, 0x43, 0x8b, 0xb6, 0xfc, 0xc0, 0x7d, 0xfe, 0xe5, 0xfe, 0x82, 0x26, 0xf7, - 0x5f, 0x89, 0x3d, 0xdb, 0xb2, 0x1a, 0x79, 0x8c, 0xd8, 0xff, 0x27, 0x06, 0x5c, 0x3a, 0x8e, 0x88, - 0xf5, 0x4e, 0xec, 0xb9, 0x59, 0xee, 0xf3, 0xd0, 0xec, 0xc2, 0x69, 0x1c, 0x7c, 0xbc, 0x39, 0x08, - 0x17, 0xfd, 0x30, 0xc2, 0xe3, 0xdb, 0x9c, 0xe6, 0x49, 0xd2, 0xf0, 0xfd, 0x36, 0x6e, 0xf4, 0x8d, - 0x37, 0xd8, 0x7e, 0xfe, 0x17, 0x87, 0x35, 0x60, 0xa0, 0x55, 0xbc, 0x8d, 0x66, 0x4a, 0x1f, 0x9f, - 0x92, 0x78, 0x31, 0x11, 0xda, 0xe8, 0xfe, 0xb3, 0x47, 0x0f, 0x42, 0x2b, 0x8b, 0x35, 0x1e, 0xd1, - 0xd5, 0x7b, 0xd1, 0xee, 0x5a, 0x40, 0x1f, 0xd0, 0x80, 0x76, 0x5a, 0xf4, 0x33, 0x76, 0x44, 0xa7, - 0x37, 0x6e, 0x28, 0xfb, 0xf4, 0xff, 0x16, 0xe1, 0x4c, 0x16, 0x19, 0xeb, 0x17, 0xc5, 0x24, 0x4a, - 0xc7, 0x7e, 0xff, 0x92, 0x01, 0x95, 0x26, 0x6d, 0xf9, 0x1d, 0xf7, 0x8e, 0xd3, 0x8a, 0x7c, 0xe9, - 0x93, 0x63, 0xf3, 0xad, 0x8d, 0xc1, 0xed, 0x07, 0x58, 0xa0, 0x1d, 0x0d, 0x7d, 0x79, 0x38, 0x4b, - 0xa4, 0xe5, 0xa3, 0xab, 0x73, 0xc4, 0xe6, 0x64, 0xf2, 0x09, 0xbc, 0xd6, 0xd2, 0x3e, 0x4a, 0x1a, - 0x30, 0x2e, 0x96, 0xab, 0xaf, 0x3a, 0xee, 0x5e, 0x3a, 0x3a, 0xac, 0x4d, 0xb7, 0x64, 0x41, 0xfa, - 0x88, 0x48, 0x27, 0x21, 0xb7, 0x20, 0xbf, 0x31, 0x7b, 0x47, 0x8c, 0x81, 0x74, 0x71, 0xdc, 0x98, - 0xbd, 0x83, 0x87, 0x1d, 0x4c, 0x81, 0x1c, 0xef, 0xcd, 0x3e, 0x50, 0x0f, 0xc1, 0x37, 0x66, 0xef, - 0x90, 0x55, 0x98, 0xb2, 0xe8, 0xcf, 0xf4, 0xbc, 0x80, 0x8a, 0x05, 0x70, 0xff, 0x4e, 0x1d, 0xc7, - 0xa2, 0xc4, 0x37, 0xb2, 0x80, 0x17, 0x4a, 0xe3, 0xce, 0xde, 0x7f, 0xa0, 0xc6, 0x3b, 0xf6, 0xd3, - 0x92, 0x5f, 0x80, 0xb3, 0xf3, 0x5e, 0x28, 0xea, 0xcc, 0x4f, 0x9f, 0x5d, 0xbc, 0x88, 0x2e, 0x0e, - 0x58, 0x0e, 0x5f, 0xcc, 0x5c, 0x0e, 0x2f, 0xbb, 0x31, 0x13, 0x9b, 0x1f, 0x6d, 0xbb, 0x69, 0x8f, - 0xe7, 0xec, 0xef, 0x90, 0x8f, 0x61, 0x02, 0x8f, 0xfb, 0xf0, 0x40, 0x1e, 0x9d, 0xe0, 0x47, 0x07, - 0x7c, 0xf9, 0xf3, 0x99, 0x5f, 0xbe, 0x88, 0xa7, 0x87, 0x36, 0x1e, 0xeb, 0xa3, 0xc3, 0xbc, 0x66, - 0x24, 0x6a, 0x9c, 0xc9, 0x87, 0x30, 0x29, 0xb4, 0x8e, 0xd5, 0x07, 0xeb, 0xbb, 0x74, 0xde, 0x39, - 0x10, 0x5e, 0x28, 0x68, 0x00, 0x08, 0x55, 0xc5, 0xf6, 0x1f, 0xd8, 0xd1, 0x2e, 0xb5, 0x5d, 0x47, - 0xdb, 0x9f, 0x53, 0x84, 0xe4, 0xe7, 0x60, 0x6c, 0xd9, 0xc7, 0x9b, 0x47, 0x14, 0x35, 0x65, 0xe4, - 0xf3, 0x55, 0x8c, 0x77, 0xe6, 0xe0, 0x94, 0x16, 0xf1, 0xa3, 0xc3, 0xda, 0x3b, 0x4f, 0x3a, 0x0b, - 0x95, 0x0f, 0x58, 0xea, 0xd7, 0xc8, 0x1c, 0x94, 0xb6, 0xe8, 0x36, 0x6b, 0x6d, 0x3a, 0x56, 0x4f, - 0x82, 0xb9, 0xbc, 0x78, 0x24, 0x7e, 0xa9, 0xd7, 0x7a, 0x12, 0xc3, 0xfc, 0x13, 0x03, 0x67, 0x20, - 0xb9, 0x8e, 0x9e, 0x80, 0x71, 0x0c, 0x01, 0x1e, 0x2d, 0x38, 0xdd, 0xae, 0x1e, 0x05, 0xc0, 0x51, - 0xc8, 0x1b, 0x50, 0xbc, 0xe3, 0xb4, 0x68, 0x24, 0x0f, 0xac, 0x11, 0xf9, 0x01, 0x42, 0xd4, 0x73, - 0x08, 0x8e, 0x43, 0xbe, 0x02, 0x67, 0xe6, 0xe9, 0x43, 0xaf, 0x45, 0xeb, 0x51, 0x44, 0x43, 0xde, - 0xda, 0xb9, 0x3a, 0xbf, 0xd9, 0x2d, 0x37, 0x5e, 0x65, 0xfb, 0xa8, 0x8b, 0xe5, 0xb6, 0x93, 0x20, - 0xd8, 0x2d, 0x47, 0xe5, 0x95, 0xc9, 0xc1, 0xfc, 0x1f, 0x46, 0xd2, 0x03, 0xe4, 0x75, 0x28, 0x58, - 0x6b, 0x71, 0xfd, 0xf9, 0xa5, 0x6d, 0xaa, 0xfa, 0x88, 0x40, 0xbe, 0x06, 0x67, 0x15, 0x3e, 0x38, - 0x39, 0xa8, 0xcb, 0x2a, 0xc4, 0x1b, 0xf3, 0x1a, 0xde, 0xd2, 0x29, 0x35, 0x71, 0x38, 0x46, 0xaa, - 0x46, 0xd9, 0x3c, 0x58, 0x63, 0x95, 0x82, 0x79, 0xda, 0xf1, 0x38, 0x6f, 0xa5, 0xb1, 0x2a, 0x6f, - 0x17, 0x11, 0xd2, 0x8d, 0xcd, 0xe2, 0xf0, 0x61, 0xa1, 0x54, 0xa8, 0x8e, 0x98, 0x7f, 0x6d, 0x28, - 0x89, 0x23, 0x9e, 0xd3, 0xdd, 0xe3, 0xb6, 0xb6, 0x7b, 0x9c, 0x11, 0xa4, 0x71, 0xab, 0x58, 0x59, - 0xe6, 0x8e, 0x3f, 0x09, 0xe3, 0x1a, 0x12, 0xfa, 0x3c, 0x6f, 0x84, 0x34, 0xe0, 0x07, 0xc4, 0x9f, - 0x2d, 0x9f, 0xe7, 0xb8, 0x5d, 0x43, 0xb9, 0xb2, 0xfe, 0xa5, 0x01, 0x93, 0x29, 0x0a, 0xd6, 0x1b, - 0x0c, 0xa4, 0xf6, 0x46, 0x2f, 0xa4, 0x81, 0x85, 0x50, 0xee, 0x21, 0xb9, 0xac, 0x7b, 0x48, 0xb6, - 0x2d, 0x06, 0x23, 0x5f, 0x86, 0x91, 0x0d, 0x34, 0xe7, 0x74, 0x27, 0x9b, 0x98, 0x3f, 0x16, 0xf2, - 0x15, 0xd6, 0x63, 0xff, 0xaa, 0x02, 0x02, 0xcb, 0x48, 0x13, 0x46, 0xe7, 0x02, 0x8a, 0x29, 0x22, - 0x0a, 0xc3, 0xdf, 0x86, 0xb6, 0x38, 0x49, 0xfa, 0x36, 0x54, 0x70, 0x32, 0x7f, 0x2b, 0x07, 0x24, - 0x69, 0x23, 0x6d, 0x05, 0x34, 0x0a, 0x9f, 0xdb, 0x41, 0xff, 0x40, 0x1b, 0xf4, 0x17, 0xfb, 0x06, - 0x9d, 0x37, 0x6f, 0xa8, 0xb1, 0xff, 0x53, 0x03, 0xce, 0x65, 0x13, 0x92, 0x57, 0xa0, 0xb8, 0xba, - 0xbe, 0x26, 0xfd, 0xb4, 0x44, 0x53, 0xfc, 0x2e, 0x6a, 0xa9, 0x96, 0x28, 0x22, 0x6f, 0x42, 0xf1, - 0x23, 0x6b, 0x8e, 0x6d, 0x5f, 0x4a, 0xac, 0xd2, 0xcf, 0x04, 0x76, 0x4b, 0xb7, 0x7f, 0x05, 0x92, - 0x3a, 0xb6, 0xf9, 0x67, 0x36, 0xb6, 0xdf, 0xca, 0xc1, 0x64, 0xbd, 0xd5, 0xa2, 0x61, 0xc8, 0x94, - 0x13, 0x1a, 0x46, 0xcf, 0xed, 0xc0, 0x66, 0x7b, 0x60, 0x69, 0x6d, 0x1b, 0x6a, 0x54, 0xff, 0xcc, - 0x80, 0xb3, 0x92, 0xea, 0xa1, 0x47, 0x1f, 0xad, 0xef, 0x06, 0x34, 0xdc, 0xf5, 0xdb, 0xee, 0xb0, - 0x51, 0x77, 0xb8, 0x4b, 0x7b, 0xed, 0x88, 0x06, 0xea, 0x6d, 0xc1, 0x03, 0x84, 0x68, 0xbb, 0x34, - 0x42, 0xc8, 0x0c, 0x8c, 0xd6, 0xbb, 0xdd, 0xc0, 0x7f, 0xc8, 0x97, 0xfd, 0xb8, 0xb8, 0x1c, 0xe6, - 0x20, 0xed, 0x32, 0x99, 0x83, 0x58, 0x35, 0xe6, 0x69, 0x87, 0xbb, 0x97, 0x8f, 0xf3, 0x6a, 0xb8, - 0xb4, 0xa3, 0x6a, 0x4b, 0x58, 0x6e, 0x7e, 0xb3, 0x00, 0x15, 0xb5, 0x21, 0xc4, 0x84, 0x22, 0xf7, - 0x15, 0x52, 0x7d, 0x36, 0x1c, 0x84, 0x58, 0xa2, 0x24, 0x71, 0xc1, 0xca, 0x9d, 0xe8, 0x82, 0xb5, - 0x05, 0xe3, 0x6b, 0x81, 0xdf, 0xf5, 0x43, 0xea, 0xf2, 0x2c, 0x3f, 0x5c, 0x6a, 0x9d, 0x8e, 0xfd, - 0x92, 0x79, 0x9f, 0xb3, 0x22, 0xae, 0x9a, 0x77, 0x05, 0xb6, 0x9d, 0xce, 0x01, 0xa4, 0xf3, 0xe1, - 0xb7, 0x2d, 0x4e, 0x28, 0x62, 0x37, 0xe2, 0xdb, 0x16, 0x06, 0xd1, 0x6f, 0x5b, 0x18, 0x44, 0x5d, - 0x16, 0x23, 0xcf, 0x6a, 0x59, 0x90, 0xdf, 0x32, 0x60, 0xac, 0xde, 0xe9, 0x08, 0x17, 0x2c, 0x19, - 0x2a, 0x7f, 0x36, 0xb9, 0x71, 0xe1, 0x3e, 0xba, 0xfc, 0xc2, 0xe5, 0xeb, 0xe2, 0xc2, 0xe5, 0x9d, - 0x4f, 0x74, 0xe1, 0xb2, 0x1e, 0x38, 0x5e, 0x14, 0xe2, 0xcd, 0x7a, 0xf2, 0x41, 0xd5, 0x0f, 0x5b, - 0xa9, 0x07, 0x79, 0x07, 0xaa, 0xf1, 0x7c, 0x5c, 0xea, 0xb8, 0xf4, 0x31, 0xe5, 0x1e, 0x6b, 0xe3, - 0x3c, 0x9e, 0x53, 0xbb, 0x49, 0x4a, 0x23, 0x9a, 0xdf, 0x32, 0xe0, 0x9c, 0x3a, 0x21, 0x9a, 0xbd, - 0xed, 0x7d, 0x0f, 0x4d, 0x11, 0x72, 0x03, 0xca, 0x62, 0xbc, 0x62, 0x45, 0xae, 0x3f, 0x35, 0x54, - 0x82, 0x42, 0x16, 0xd8, 0x10, 0x31, 0x1e, 0xc2, 0x6e, 0x3f, 0x9d, 0x5a, 0x6e, 0xac, 0xa8, 0x31, - 0x2d, 0x3a, 0xbb, 0x1a, 0xe0, 0x6f, 0x7d, 0xec, 0x18, 0xc4, 0x7c, 0x1f, 0xa6, 0xf4, 0x5a, 0x36, - 0x29, 0x06, 0x11, 0xca, 0xa6, 0x19, 0xd9, 0x4d, 0x93, 0xe5, 0xe6, 0x16, 0x90, 0x3e, 0xfa, 0x10, - 0x6f, 0x0d, 0x69, 0x24, 0x6f, 0xb5, 0xe5, 0xd9, 0x63, 0x1f, 0x62, 0x9c, 0x24, 0x6d, 0x4c, 0xed, - 0x6e, 0x24, 0x35, 0xff, 0xa6, 0x0c, 0xa7, 0x33, 0x44, 0xc7, 0x09, 0x5b, 0x7b, 0x4d, 0x5f, 0x3c, - 0xe5, 0xd8, 0x3d, 0x43, 0x2e, 0x99, 0xf7, 0x65, 0x42, 0xac, 0x63, 0x96, 0xca, 0x71, 0x59, 0xb2, - 0x3e, 0x8d, 0xed, 0x5d, 0xf5, 0xa0, 0x1a, 0x79, 0x66, 0x1e, 0x54, 0x0d, 0x18, 0x17, 0xad, 0x12, - 0x4b, 0xb9, 0x98, 0x98, 0xe8, 0x01, 0x2f, 0xb0, 0xfb, 0x96, 0xb4, 0x4e, 0xc2, 0x79, 0x84, 0x7e, - 0xfb, 0x21, 0x15, 0x3c, 0x46, 0x55, 0x1e, 0x58, 0x90, 0xc9, 0x43, 0x21, 0x21, 0xff, 0xd8, 0x00, - 0x22, 0x20, 0xea, 0x7a, 0x2e, 0x1d, 0xb7, 0x9e, 0xdd, 0x67, 0xb3, 0x9e, 0x5f, 0x94, 0x75, 0xcc, - 0x5e, 0xd7, 0x19, 0xd5, 0x22, 0xff, 0xd0, 0x80, 0x29, 0xee, 0xc6, 0xa3, 0x56, 0xb6, 0x7c, 0x5c, - 0x65, 0x5b, 0xcf, 0xa6, 0xb2, 0x97, 0x42, 0xfc, 0xec, 0x80, 0xba, 0xf6, 0x57, 0x8a, 0xfc, 0x24, - 0x40, 0xbc, 0xa2, 0xa4, 0xbb, 0xe8, 0xa5, 0x0c, 0x29, 0x10, 0x23, 0x25, 0x61, 0xb2, 0x51, 0x4c, - 0xa7, 0x3a, 0x58, 0x25, 0xdc, 0xc8, 0x2f, 0xc0, 0x19, 0xb6, 0x5e, 0x62, 0x88, 0x70, 0x3a, 0x9c, - 0x1e, 0xc3, 0xaf, 0x7c, 0x61, 0xf0, 0xd6, 0x7e, 0x23, 0x8b, 0x8c, 0x07, 0xed, 0x24, 0x49, 0x13, - 0xa2, 0x7d, 0xd5, 0xe4, 0xcb, 0xa2, 0x40, 0xef, 0x62, 0xac, 0x7d, 0x38, 0x5d, 0xc1, 0x6f, 0x66, - 0xca, 0xb7, 0x0b, 0x72, 0x2d, 0x70, 0xf9, 0x16, 0xea, 0x51, 0x37, 0x08, 0x22, 0x1f, 0x01, 0x69, - 0xf6, 0x76, 0x76, 0x68, 0x18, 0x51, 0x97, 0xc3, 0x68, 0x10, 0x4e, 0x8f, 0xa3, 0x7c, 0xc0, 0x23, - 0xa3, 0x50, 0x96, 0xda, 0x81, 0x2c, 0x56, 0x27, 0x49, 0x3f, 0xf1, 0xc5, 0x6d, 0xb8, 0x30, 0xb0, - 0x99, 0x19, 0x11, 0x35, 0x33, 0x7a, 0x44, 0xcd, 0x85, 0x41, 0xe2, 0x30, 0x54, 0xa3, 0x6a, 0x7e, - 0xdf, 0x48, 0xc9, 0x3f, 0xa1, 0xac, 0xf0, 0xdc, 0x81, 0x83, 0x36, 0x88, 0x1c, 0xa6, 0x53, 0xe0, - 0x12, 0x32, 0x97, 0x28, 0x49, 0x4c, 0x42, 0xaa, 0x12, 0x16, 0x65, 0xe5, 0x53, 0x8a, 0x42, 0xf3, - 0x9f, 0x19, 0x40, 0x78, 0x0d, 0xe7, 0x9c, 0xae, 0xb3, 0xed, 0xb5, 0xbd, 0xc8, 0xa3, 0x21, 0xb9, - 0x07, 0x55, 0xc1, 0xc2, 0xd9, 0x6e, 0x53, 0xd5, 0x59, 0x4e, 0xdc, 0xa6, 0xc7, 0x65, 0x76, 0x5a, - 0xad, 0xe9, 0x23, 0x1c, 0x30, 0x78, 0xb9, 0xa7, 0x18, 0x3c, 0xf3, 0x87, 0x06, 0x5c, 0xe8, 0xaf, - 0xb6, 0xf8, 0x72, 0xdc, 0x79, 0xc6, 0x09, 0x9d, 0x97, 0xd5, 0xca, 0x1c, 0x1e, 0x43, 0x3e, 0xb3, - 0x56, 0xe6, 0x93, 0x53, 0xcd, 0x27, 0x6f, 0xe5, 0xaf, 0xe6, 0xa0, 0xb2, 0xd6, 0xee, 0xed, 0x78, - 0x9d, 0x79, 0x27, 0x72, 0x9e, 0x5b, 0x93, 0xe2, 0x6d, 0xcd, 0xa4, 0x88, 0xdd, 0xe3, 0xe2, 0x86, - 0x0d, 0x97, 0xc7, 0xcd, 0x80, 0xc9, 0x84, 0x84, 0xaf, 0xd2, 0x45, 0x28, 0xb0, 0x1f, 0x42, 0x43, - 0xb9, 0xdc, 0xc7, 0x18, 0xb1, 0x6e, 0xc4, 0xff, 0x09, 0x25, 0x5f, 0xcf, 0x9e, 0x87, 0x1c, 0x2e, - 0x7e, 0x91, 0x27, 0xbf, 0x7a, 0xf2, 0x44, 0x9d, 0xff, 0xd4, 0x80, 0x6a, 0xba, 0x25, 0xe4, 0x1e, - 0x8c, 0x32, 0x4e, 0x5e, 0x9c, 0x48, 0xeb, 0xd5, 0x01, 0x6d, 0xbe, 0x21, 0xd0, 0x78, 0xf5, 0xb0, - 0xf3, 0x29, 0x87, 0x58, 0x92, 0xc3, 0x45, 0x0b, 0x2a, 0x2a, 0x56, 0x46, 0xed, 0xde, 0xd0, 0x45, - 0xd3, 0xb9, 0xec, 0x7e, 0x50, 0x6b, 0xfd, 0x7b, 0x5a, 0xad, 0x85, 0x50, 0x1a, 0x36, 0x23, 0x22, - 0xc6, 0x07, 0xf2, 0xbc, 0x2f, 0xea, 0x3c, 0x93, 0x29, 0x62, 0xf4, 0xf8, 0x40, 0x0e, 0x63, 0xb6, - 0x08, 0xff, 0x9e, 0x98, 0x67, 0x68, 0x8b, 0x74, 0x11, 0xa2, 0xea, 0xb3, 0x1c, 0xc7, 0xfc, 0xbb, - 0x79, 0x38, 0x97, 0x54, 0x8f, 0xe7, 0x87, 0x5c, 0x73, 0x02, 0x67, 0x3f, 0x3c, 0x61, 0x05, 0x5c, - 0xed, 0xab, 0x1a, 0xc6, 0xbf, 0xcb, 0xaa, 0x29, 0x15, 0x32, 0x53, 0x15, 0x42, 0x23, 0x8e, 0x57, - 0x48, 0x56, 0x83, 0xdc, 0x83, 0x7c, 0x93, 0x46, 0x22, 0x4a, 0xf6, 0x4a, 0x5f, 0xaf, 0xaa, 0xf5, - 0xba, 0xd1, 0xa4, 0x11, 0x1f, 0x44, 0x1e, 0x68, 0x40, 0x35, 0xc7, 0x7f, 0xa6, 0x8e, 0x6f, 0x41, - 0x71, 0xe1, 0x71, 0x97, 0xb6, 0x22, 0x11, 0x1c, 0x7b, 0xed, 0x78, 0x7e, 0x1c, 0x57, 0x09, 0xc1, - 0xa5, 0x08, 0x50, 0x3b, 0x8b, 0xa3, 0x5c, 0xbc, 0x0d, 0x25, 0xf9, 0xf1, 0x27, 0x0a, 0x25, 0x7d, - 0x1b, 0xc6, 0x94, 0x8f, 0x3c, 0xd1, 0xa4, 0xff, 0x1b, 0x03, 0x8a, 0x4c, 0xe8, 0x6d, 0xbe, 0xf5, - 0x9c, 0x4a, 0xa4, 0x5b, 0x9a, 0x44, 0x9a, 0x52, 0x62, 0x9e, 0x70, 0x5d, 0xbe, 0x75, 0x82, 0x2c, - 0x3a, 0x34, 0x00, 0x12, 0x64, 0x72, 0x17, 0x46, 0xf9, 0x45, 0x8e, 0x4c, 0xbe, 0xaa, 0x06, 0x51, - 0x89, 0x92, 0x44, 0xcb, 0xf1, 0xbb, 0x69, 0xb5, 0x50, 0x52, 0x93, 0xf9, 0xc4, 0xd1, 0x5c, 0x8d, - 0xda, 0x65, 0x6c, 0xe6, 0xfc, 0x0e, 0x0f, 0xaa, 0x09, 0x95, 0x24, 0x65, 0xd9, 0x1e, 0xe7, 0x75, - 0x71, 0xb0, 0x91, 0x3f, 0x8e, 0xc9, 0x39, 0xc1, 0x24, 0xfb, 0xcc, 0xe3, 0xdb, 0x63, 0x3c, 0x4c, - 0x45, 0x56, 0xec, 0x3d, 0xa8, 0xdc, 0xf1, 0x83, 0x47, 0x4e, 0xe0, 0xe2, 0x25, 0x3f, 0x36, 0xb3, - 0x84, 0x7e, 0xfe, 0xe3, 0x0f, 0x38, 0xdc, 0x46, 0x07, 0x81, 0x1f, 0x1d, 0xd6, 0x0a, 0x0d, 0xdf, - 0x6f, 0x5b, 0x1a, 0x3a, 0x59, 0x85, 0xf1, 0xfb, 0xce, 0x63, 0x71, 0x5f, 0xb7, 0xbe, 0xbe, 0x2c, - 0x1c, 0x8d, 0xae, 0x1d, 0x1d, 0xd6, 0x2e, 0xec, 0x3b, 0x8f, 0xe3, 0x7b, 0xbe, 0xc1, 0xbe, 0xf0, - 0x3a, 0x3d, 0xf1, 0x60, 0x62, 0xcd, 0x0f, 0x22, 0xf1, 0x11, 0xa6, 0xd3, 0xe6, 0x07, 0x5c, 0xb7, - 0xcd, 0x64, 0x5e, 0xb7, 0x5d, 0x60, 0x8a, 0xbc, 0xfd, 0x20, 0x26, 0xd7, 0x62, 0x2b, 0x35, 0xc6, - 0xe4, 0x3d, 0x98, 0x9a, 0xa3, 0x41, 0xe4, 0x3d, 0xf0, 0x5a, 0x4e, 0x44, 0xef, 0xf8, 0xc1, 0xbe, - 0x13, 0x89, 0x03, 0x15, 0x34, 0xa8, 0x5b, 0x94, 0x73, 0xda, 0x77, 0x22, 0xab, 0x1f, 0x93, 0x7c, - 0x2d, 0xcb, 0x75, 0x6b, 0x04, 0x9b, 0xff, 0x26, 0x53, 0x0a, 0x32, 0x5c, 0xb7, 0x06, 0x74, 0x41, - 0x86, 0x13, 0xd7, 0xce, 0x71, 0xd7, 0x9e, 0xa5, 0xc6, 0x4d, 0x71, 0x05, 0x7b, 0xf2, 0xb5, 0x66, - 0x3c, 0x6e, 0x03, 0xae, 0x37, 0x67, 0x21, 0xdf, 0x58, 0xbb, 0x83, 0x47, 0x24, 0xe2, 0x9a, 0x91, - 0x76, 0x76, 0x9d, 0x4e, 0x0b, 0x75, 0x19, 0xe1, 0xbb, 0xa0, 0x0a, 0xbc, 0xc6, 0xda, 0x1d, 0xe2, - 0xc0, 0xe9, 0x35, 0x1a, 0xec, 0x7b, 0xd1, 0x57, 0x6e, 0xde, 0x54, 0x06, 0xaa, 0x84, 0x55, 0x9b, - 0x11, 0x55, 0xab, 0x75, 0x11, 0xc5, 0x7e, 0x7c, 0xf3, 0x66, 0xe6, 0x70, 0xc4, 0x15, 0xcb, 0xe2, - 0x45, 0x16, 0x60, 0xe2, 0xbe, 0xf3, 0x38, 0x71, 0x39, 0x09, 0x85, 0xf3, 0xe8, 0x8b, 0x72, 0x62, - 0x25, 0xfe, 0x2a, 0xea, 0x7a, 0x4b, 0x11, 0x91, 0x77, 0x61, 0x2c, 0x99, 0x5e, 0x21, 0x5e, 0x45, - 0xe6, 0xb9, 0x4f, 0xac, 0x32, 0x39, 0xb5, 0xb3, 0x24, 0x05, 0x9d, 0x6c, 0xc4, 0x26, 0x3a, 0x57, - 0x48, 0x45, 0x36, 0x9d, 0x19, 0xd5, 0x44, 0x77, 0xb0, 0x44, 0x6b, 0xd6, 0x64, 0xac, 0xa2, 0x73, - 0x7f, 0x1d, 0x4b, 0xe7, 0xa2, 0x58, 0xfe, 0x6b, 0x81, 0xbf, 0xdf, 0x8d, 0xd0, 0x65, 0x34, 0x65, - 0xf9, 0x77, 0xb1, 0x24, 0xc3, 0xf2, 0xe7, 0x24, 0xd9, 0xf7, 0xec, 0xe3, 0x4f, 0x71, 0xcf, 0x4e, - 0xa1, 0xb0, 0xec, 0xb7, 0xf6, 0xd0, 0x47, 0xb4, 0xdc, 0xf8, 0x88, 0xc9, 0x8f, 0xb6, 0xdf, 0xda, - 0x7b, 0x76, 0xf7, 0xc3, 0xc8, 0x9e, 0xac, 0xb0, 0xb6, 0xb3, 0x69, 0x25, 0x3e, 0x3d, 0x3d, 0xa9, - 0xdd, 0xb4, 0x69, 0x65, 0x5c, 0x51, 0xe1, 0xb3, 0x50, 0x36, 0xc4, 0xd2, 0xc9, 0x09, 0x85, 0xea, - 0x3c, 0x0d, 0xf7, 0x22, 0xbf, 0x3b, 0xd7, 0xf6, 0xba, 0xdb, 0xbe, 0x13, 0xb8, 0xd3, 0xd5, 0x01, - 0x02, 0xe3, 0xf5, 0x4c, 0x81, 0x31, 0xe5, 0x72, 0x7a, 0xbb, 0x25, 0x19, 0x58, 0x7d, 0x2c, 0xc9, - 0xd7, 0x60, 0x82, 0xad, 0x96, 0x85, 0xc7, 0x11, 0xed, 0xf0, 0xa9, 0x34, 0x85, 0x5b, 0xfd, 0x19, - 0x25, 0xca, 0x34, 0x2e, 0xe4, 0x93, 0x14, 0xa5, 0x07, 0x8d, 0x09, 0xd4, 0x49, 0xaa, 0xb3, 0x32, - 0x7f, 0x32, 0xd5, 0x27, 0x64, 0x09, 0x46, 0x45, 0x0d, 0xc4, 0xae, 0xd3, 0xdf, 0x96, 0x17, 0x33, - 0xdb, 0x32, 0x2a, 0xda, 0x62, 0x49, 0x7a, 0xf3, 0x5f, 0x19, 0x30, 0xae, 0x7d, 0x8e, 0xdc, 0x56, - 0xdc, 0x57, 0x12, 0xbf, 0x43, 0x0d, 0x27, 0xf3, 0x51, 0x83, 0xdb, 0xc2, 0x67, 0x29, 0x37, 0x98, - 0x2e, 0x33, 0xdf, 0x9c, 0xcc, 0xfa, 0x90, 0x3f, 0x3e, 0xeb, 0x43, 0x61, 0x40, 0xd6, 0x87, 0x6f, - 0x8f, 0xc3, 0x84, 0xbe, 0xc1, 0x31, 0x8d, 0x73, 0xd9, 0xdf, 0xf1, 0x3a, 0xd2, 0x6e, 0xe5, 0x79, - 0x4c, 0x10, 0xa2, 0xbd, 0x10, 0x80, 0x10, 0xf2, 0x1a, 0x40, 0x7c, 0x35, 0x2b, 0x4d, 0x53, 0xf1, - 0x9e, 0x81, 0x52, 0x40, 0x7e, 0x0a, 0x60, 0xc5, 0x77, 0x69, 0x9c, 0x0a, 0xe7, 0x98, 0x03, 0xa5, - 0xd7, 0xc5, 0x81, 0x92, 0x78, 0x83, 0xe0, 0xe8, 0xb0, 0x76, 0xb6, 0xe3, 0xbb, 0xb4, 0x3f, 0x07, - 0x8e, 0xc2, 0x91, 0x7c, 0x09, 0x46, 0xac, 0x5e, 0x9b, 0xca, 0xcc, 0x2c, 0x63, 0x72, 0xc2, 0xf7, - 0xda, 0x4a, 0x6e, 0xd2, 0xa0, 0x97, 0xbe, 0x47, 0x60, 0x00, 0xf2, 0x01, 0xc0, 0xbd, 0xde, 0x36, - 0xbd, 0x1b, 0xf8, 0xbd, 0xae, 0x0c, 0xfd, 0x46, 0x33, 0x76, 0x2f, 0x4e, 0xfe, 0x65, 0xef, 0x60, - 0xa1, 0xfa, 0xf1, 0x84, 0x84, 0xac, 0xc2, 0xa8, 0x10, 0x1f, 0xe2, 0x9c, 0xfe, 0xa5, 0xac, 0x13, - 0x22, 0x45, 0x87, 0x10, 0xa9, 0x52, 0x10, 0xac, 0x1f, 0xda, 0x70, 0x33, 0xfc, 0x5d, 0x28, 0x33, - 0xf6, 0xcc, 0xd4, 0x0e, 0xc5, 0xde, 0x81, 0x0e, 0xa4, 0x4a, 0x85, 0x98, 0x59, 0xae, 0x65, 0x79, - 0x8b, 0x09, 0xc8, 0xd7, 0x30, 0xb9, 0x91, 0xe8, 0xea, 0x63, 0x0f, 0x1a, 0xaf, 0xf4, 0x75, 0xf5, - 0x19, 0xa7, 0xdb, 0xcd, 0x48, 0x21, 0x17, 0xf3, 0x23, 0x3b, 0x71, 0x90, 0x55, 0x9c, 0xa0, 0xfa, - 0x98, 0x0f, 0x5c, 0xef, 0xfb, 0xc0, 0xb4, 0x8c, 0x1b, 0xea, 0x4f, 0x69, 0xa4, 0xf1, 0x25, 0x5d, - 0xa8, 0x26, 0xc9, 0xd7, 0xc4, 0xb7, 0xe0, 0xb8, 0x6f, 0xbd, 0xd9, 0xf7, 0x2d, 0x75, 0x00, 0xfb, - 0x3e, 0xd7, 0xc7, 0x9d, 0xb8, 0x49, 0x32, 0x61, 0xf1, 0xbd, 0xb1, 0xe3, 0xbe, 0xf7, 0x5a, 0xdf, - 0xf7, 0x4e, 0xbb, 0xdb, 0xfd, 0xdf, 0x49, 0xf1, 0x24, 0xef, 0xc2, 0xb8, 0x84, 0xe0, 0xfa, 0xc0, - 0x03, 0x3e, 0xa1, 0xdf, 0xbb, 0xdb, 0xe8, 0x34, 0xa6, 0xe7, 0xf3, 0x51, 0x91, 0x55, 0x6a, 0x3e, - 0x3b, 0xc6, 0x35, 0xea, 0xf4, 0xac, 0xd0, 0x91, 0xc9, 0x57, 0x61, 0x6c, 0x69, 0x9f, 0x35, 0xc4, - 0xef, 0x38, 0x11, 0xc5, 0xcd, 0x28, 0x39, 0x34, 0x55, 0x4a, 0x94, 0xa9, 0xca, 0x33, 0x83, 0x26, - 0x45, 0xea, 0x66, 0xae, 0x50, 0xb0, 0xce, 0xe3, 0xc7, 0x2f, 0x62, 0x0e, 0x87, 0x62, 0xeb, 0x79, - 0x31, 0xe3, 0xe0, 0x52, 0x61, 0x8f, 0xb2, 0x9c, 0x9f, 0xea, 0xd8, 0x62, 0x41, 0x68, 0x9d, 0xa7, - 0xf3, 0x24, 0xef, 0xc1, 0x98, 0x08, 0x69, 0xad, 0x5b, 0x2b, 0xe1, 0x74, 0x15, 0x1b, 0x8f, 0x2e, - 0xc2, 0x32, 0xfa, 0xd5, 0x76, 0x82, 0xd4, 0xed, 0x55, 0x82, 0x4f, 0xbe, 0x02, 0x67, 0xb6, 0xbc, - 0x8e, 0xeb, 0x3f, 0x0a, 0x85, 0x00, 0x17, 0x82, 0x6e, 0x2a, 0xf1, 0xd1, 0x79, 0xc4, 0xcb, 0x6d, - 0xb9, 0x6d, 0xf5, 0x09, 0xbe, 0x4c, 0x0e, 0xe4, 0xe7, 0xfb, 0x38, 0xf3, 0x19, 0x44, 0x8e, 0x9b, - 0x41, 0xb3, 0x7d, 0x33, 0xa8, 0xff, 0xf3, 0xe9, 0xe9, 0x94, 0xf9, 0x19, 0xe2, 0x03, 0xd1, 0x75, - 0x8e, 0x0f, 0x7d, 0xaf, 0x33, 0x7d, 0x5a, 0x7b, 0xfe, 0x25, 0x76, 0x99, 0x45, 0xbc, 0x35, 0xbf, - 0xed, 0xb5, 0x0e, 0x1a, 0xe6, 0xd1, 0x61, 0xed, 0xa5, 0xb4, 0x36, 0xf3, 0xb1, 0xaf, 0x1d, 0x2e, - 0x64, 0xb0, 0x26, 0x5f, 0x85, 0x0a, 0xfb, 0x1b, 0xab, 0x7e, 0x67, 0xb4, 0xab, 0x2e, 0x05, 0x53, - 0x7c, 0x07, 0xc7, 0x08, 0x63, 0x6e, 0x33, 0xb4, 0x42, 0x8d, 0x95, 0xf9, 0x43, 0x03, 0xce, 0x64, - 0xd5, 0xf5, 0x84, 0x04, 0x47, 0x66, 0xea, 0xd2, 0x1b, 0xcf, 0x25, 0xf8, 0xa5, 0x77, 0x7c, 0xd5, - 0x5d, 0x83, 0x11, 0x66, 0x2b, 0x4b, 0xa7, 0x2c, 0xdc, 0x0e, 0x99, 0x3d, 0x1d, 0x5a, 0x1c, 0xce, - 0x10, 0xb8, 0xab, 0x37, 0xdb, 0x2f, 0x47, 0x38, 0x02, 0xfa, 0x6b, 0x5b, 0x1c, 0xce, 0x10, 0xd8, - 0xb6, 0x2b, 0xb7, 0x09, 0x44, 0x60, 0xbb, 0x71, 0x68, 0x71, 0x38, 0xb9, 0x02, 0xa3, 0xab, 0x9d, - 0x65, 0xea, 0x3c, 0xa4, 0xe2, 0xc6, 0x09, 0xcf, 0x51, 0xfc, 0x8e, 0xdd, 0x66, 0x30, 0x4b, 0x16, - 0x9a, 0xdf, 0x31, 0x60, 0xaa, 0xaf, 0x9b, 0x4e, 0xce, 0xe1, 0x74, 0xfc, 0xf5, 0xde, 0x30, 0xed, - 0xe3, 0xd5, 0x2f, 0x64, 0x57, 0xdf, 0xfc, 0xab, 0x3c, 0x9c, 0x1f, 0xb0, 0x6b, 0x25, 0x57, 0xf3, - 0xc6, 0x89, 0x57, 0xf3, 0x5f, 0x67, 0xbb, 0x84, 0xe3, 0xed, 0x87, 0xeb, 0x7e, 0x52, 0xe3, 0xe4, - 0x16, 0x03, 0xcb, 0x64, 0x92, 0x14, 0x99, 0xd0, 0xe3, 0x42, 0x0b, 0x29, 0xec, 0xc8, 0xef, 0x3b, - 0x33, 0xd6, 0x99, 0xf5, 0x5d, 0x8e, 0xe7, 0x7f, 0x4c, 0x2e, 0xc7, 0xf5, 0x2b, 0xa9, 0xc2, 0x33, - 0xbd, 0x92, 0xca, 0x3e, 0x24, 0x1f, 0x79, 0x9a, 0xab, 0x80, 0x7f, 0x93, 0xba, 0x8e, 0xff, 0x71, - 0x1c, 0xea, 0x6b, 0x30, 0xb2, 0xb5, 0x4b, 0x03, 0xa9, 0xdf, 0x62, 0x45, 0x1e, 0x31, 0x80, 0x5a, - 0x11, 0xc4, 0x30, 0x7f, 0x0e, 0x2a, 0xea, 0xc7, 0x70, 0x2d, 0xb3, 0xdf, 0x62, 0x31, 0xf1, 0xb5, - 0xcc, 0x00, 0x16, 0x87, 0x9f, 0x98, 0x12, 0x2d, 0xe9, 0x85, 0xfc, 0x49, 0xbd, 0x60, 0xfe, 0x6b, - 0x03, 0x0a, 0x98, 0x11, 0xe2, 0x2d, 0x28, 0xcb, 0xa3, 0x52, 0x35, 0x4b, 0xc2, 0x69, 0x79, 0x92, - 0x1a, 0xea, 0xfe, 0x0c, 0x02, 0xc8, 0x3e, 0xb5, 0x49, 0x83, 0x6d, 0xcd, 0xed, 0xe5, 0x21, 0x03, - 0xa8, 0x9f, 0x42, 0x8c, 0x27, 0xe8, 0x12, 0x74, 0xed, 0x11, 0xf6, 0x3d, 0x5f, 0xf0, 0xdc, 0xb5, - 0xa7, 0xcf, 0xae, 0x97, 0x58, 0xe6, 0xef, 0x18, 0x70, 0x36, 0x53, 0x0f, 0x60, 0x5f, 0xe5, 0x0a, - 0x87, 0x32, 0x23, 0xd2, 0xda, 0x06, 0xc7, 0x78, 0x12, 0x17, 0x9e, 0x27, 0x18, 0xde, 0x97, 0xa1, - 0x1c, 0xdb, 0x67, 0xe4, 0x8c, 0x1c, 0x3a, 0x3c, 0x4f, 0x93, 0xc6, 0xcc, 0xdf, 0x18, 0x50, 0x64, - 0x55, 0x78, 0x6e, 0xa3, 0x2b, 0xb2, 0x4f, 0x57, 0x59, 0x93, 0x86, 0x8a, 0xa9, 0xf8, 0x6e, 0x11, - 0x20, 0x41, 0x26, 0xdb, 0x30, 0xb1, 0xba, 0x34, 0x3f, 0xb7, 0xe4, 0xd2, 0x4e, 0x84, 0xb7, 0x7c, - 0xa9, 0x34, 0x0b, 0xcc, 0xb0, 0x0c, 0x3a, 0x4e, 0x5b, 0x20, 0x1c, 0x24, 0xcb, 0xd3, 0xf7, 0xdc, - 0x96, 0xed, 0xc5, 0x74, 0xaa, 0x42, 0xa6, 0x73, 0x64, 0xdf, 0x68, 0xd6, 0xef, 0x2f, 0x2b, 0xdf, - 0xc8, 0x0d, 0xf9, 0x8d, 0xd0, 0xd9, 0x6f, 0x0f, 0xf8, 0x86, 0xce, 0x91, 0xec, 0x42, 0xf5, 0x2e, - 0xca, 0x6e, 0xe5, 0x2b, 0xf9, 0xe3, 0xbf, 0xf2, 0x8a, 0xf8, 0xca, 0x0b, 0x5c, 0xe8, 0x67, 0x7f, - 0xa7, 0x8f, 0x6b, 0x32, 0x73, 0x0b, 0x27, 0xce, 0xdc, 0xbf, 0x65, 0x40, 0x91, 0x6f, 0x0e, 0xf1, - 0x0b, 0x28, 0x99, 0xdb, 0xcf, 0xd6, 0xb3, 0xd9, 0x7e, 0xaa, 0x11, 0xfe, 0xa7, 0x1a, 0xe0, 0xbc, - 0x8c, 0xcc, 0xa7, 0x9e, 0x53, 0x91, 0x47, 0xe8, 0xa8, 0x98, 0xf2, 0x92, 0xc4, 0x11, 0x8a, 0xbf, - 0xa4, 0xa2, 0x72, 0xe1, 0x18, 0xea, 0xe3, 0x8e, 0xa3, 0x4f, 0xf9, 0xb8, 0xe3, 0x32, 0x94, 0x85, - 0x67, 0x4f, 0xe3, 0x40, 0x98, 0x9f, 0xf2, 0x80, 0x25, 0x86, 0x2b, 0x29, 0xcb, 0x39, 0xc8, 0xde, - 0xd6, 0x72, 0x07, 0xc6, 0x88, 0x64, 0x15, 0xca, 0x49, 0x68, 0x88, 0x1e, 0x02, 0x19, 0xc3, 0x85, - 0xeb, 0x2b, 0x8f, 0x45, 0xcc, 0x8c, 0x04, 0x49, 0x78, 0x98, 0xdf, 0x34, 0xa0, 0x9a, 0x9e, 0x2f, - 0xe4, 0x5d, 0x18, 0x8b, 0xa3, 0x73, 0x62, 0xff, 0x02, 0x3c, 0xc8, 0x4c, 0xc2, 0x79, 0x34, 0x4f, - 0x03, 0x15, 0x9d, 0xcc, 0x42, 0x89, 0x2d, 0x3b, 0x25, 0x79, 0x34, 0xca, 0x93, 0x9e, 0x80, 0xa9, - 0xf7, 0x7a, 0x12, 0x4f, 0x59, 0xb5, 0xff, 0x2e, 0x0f, 0x63, 0xca, 0x60, 0x91, 0x6b, 0x50, 0x5a, - 0x0a, 0x97, 0xfd, 0xd6, 0x1e, 0x75, 0xc5, 0x75, 0x01, 0xbe, 0xdd, 0xe9, 0x85, 0x76, 0x1b, 0x81, - 0x56, 0x5c, 0x4c, 0x1a, 0x30, 0xce, 0xff, 0x93, 0x61, 0xb8, 0xb9, 0xe4, 0xa8, 0x93, 0x23, 0xcb, - 0x00, 0x5c, 0x75, 0x87, 0xd5, 0x48, 0xc8, 0x37, 0x00, 0x38, 0x80, 0x8d, 0xef, 0x10, 0x8e, 0xbd, - 0x72, 0x01, 0x9f, 0x15, 0x1f, 0x88, 0x3c, 0xb5, 0x85, 0x38, 0x15, 0x14, 0x86, 0xf8, 0x6e, 0xa0, - 0xdf, 0xda, 0x1b, 0xfe, 0xe5, 0xd0, 0xe4, 0xdd, 0x40, 0xbf, 0xb5, 0x67, 0x67, 0x7b, 0x79, 0xa9, - 0x2c, 0xc9, 0xb7, 0x0c, 0xb8, 0x68, 0xd1, 0x96, 0xff, 0x90, 0x06, 0x07, 0xf5, 0x08, 0xb1, 0xd4, - 0x2f, 0x9e, 0xec, 0x52, 0x76, 0x4b, 0x7c, 0xf1, 0xf5, 0x40, 0x70, 0xc1, 0x70, 0x94, 0xfd, 0x6e, - 0x64, 0x1f, 0x53, 0x85, 0x63, 0x3e, 0x69, 0xfe, 0x07, 0x43, 0x59, 0x02, 0x64, 0x05, 0xca, 0xf1, - 0x64, 0x11, 0x07, 0x8e, 0xb1, 0x72, 0x24, 0xe1, 0x16, 0x7d, 0xd0, 0x78, 0x41, 0x9c, 0xec, 0x9f, - 0x8e, 0xa7, 0x9c, 0xb6, 0x22, 0x24, 0x90, 0x7c, 0x19, 0x0a, 0x38, 0x54, 0x27, 0x67, 0x1b, 0x93, - 0x5b, 0x4d, 0x81, 0x8d, 0x11, 0xd6, 0x1a, 0x29, 0xc9, 0xe7, 0x85, 0x97, 0x47, 0x5e, 0xcb, 0xe3, - 0xcb, 0x40, 0xac, 0x1e, 0xf1, 0x1e, 0x93, 0x38, 0x16, 0x2a, 0xb3, 0xf5, 0x6f, 0xe7, 0xa0, 0x9a, - 0x5e, 0x78, 0xe4, 0x03, 0xa8, 0xac, 0x39, 0x61, 0xf8, 0xc8, 0x0f, 0xdc, 0x45, 0x47, 0x84, 0x0e, - 0x57, 0x44, 0xe8, 0xae, 0x80, 0xdb, 0xbb, 0x8e, 0x96, 0x43, 0x4e, 0x23, 0x60, 0x1b, 0xf2, 0xba, - 0xf0, 0x57, 0x57, 0x16, 0x50, 0xe4, 0x47, 0xdd, 0x54, 0x6e, 0x50, 0x89, 0x46, 0xde, 0x82, 0x3c, - 0x8f, 0x7d, 0x53, 0x13, 0x4b, 0xdd, 0xbf, 0x53, 0xe7, 0xe1, 0x42, 0xfc, 0x32, 0x59, 0x3f, 0x95, - 0x67, 0xf8, 0x64, 0x59, 0x89, 0x9c, 0x2a, 0x6a, 0x09, 0x76, 0x24, 0x38, 0x6e, 0xdc, 0xc9, 0x21, - 0x54, 0x1f, 0x16, 0x4a, 0xf9, 0x6a, 0x41, 0xc4, 0xe7, 0xfc, 0x51, 0x1e, 0xca, 0xf1, 0xf7, 0x09, - 0x01, 0xd4, 0x37, 0xc4, 0xad, 0x30, 0xfe, 0x4f, 0x2e, 0x40, 0x49, 0xaa, 0x18, 0xe2, 0x66, 0x78, - 0x34, 0x14, 0xea, 0xc5, 0x34, 0x48, 0x5d, 0x82, 0xab, 0x17, 0x96, 0xfc, 0x49, 0x6e, 0x42, 0xac, - 0x28, 0x0c, 0xd2, 0x28, 0x0a, 0x6c, 0xc0, 0xac, 0x18, 0x8d, 0x4c, 0x40, 0xce, 0xe3, 0xbe, 0xc8, - 0x65, 0x2b, 0xe7, 0xb9, 0xe4, 0x03, 0x28, 0x39, 0xae, 0x4b, 0x5d, 0xdb, 0x89, 0x86, 0x78, 0xc5, - 0xb5, 0xc4, 0xb8, 0x71, 0x89, 0x8e, 0x54, 0xf5, 0x88, 0xd4, 0xa1, 0x8c, 0x8f, 0x78, 0xf6, 0xc2, - 0xa1, 0x5e, 0xfe, 0x4c, 0x38, 0x94, 0x18, 0xd9, 0x46, 0x48, 0x5d, 0xf2, 0x3a, 0x14, 0xd8, 0x68, - 0x8a, 0xfd, 0x20, 0x4e, 0x17, 0xb8, 0xba, 0xbe, 0xc6, 0x3b, 0x6c, 0xf1, 0x94, 0x85, 0x08, 0xe4, - 0x55, 0xc8, 0xf7, 0x66, 0x1f, 0x08, 0x49, 0x5f, 0x4d, 0xc2, 0x22, 0x63, 0x34, 0x56, 0x4c, 0x6e, - 0x41, 0xe9, 0x91, 0x1e, 0x00, 0x77, 0x36, 0x35, 0x8c, 0x31, 0x7e, 0x8c, 0xd8, 0x28, 0x41, 0x91, - 0x87, 0x9b, 0x99, 0x2f, 0x01, 0x24, 0x9f, 0xee, 0xbf, 0xc0, 0x37, 0xbf, 0x01, 0xe5, 0xf8, 0x93, - 0xe4, 0x45, 0x80, 0x3d, 0x7a, 0x60, 0xef, 0x3a, 0x1d, 0x57, 0x3c, 0x5e, 0x53, 0xb1, 0xca, 0x7b, - 0xf4, 0x60, 0x11, 0x01, 0xe4, 0x3c, 0x8c, 0x76, 0xd9, 0xa8, 0xca, 0xcc, 0xb6, 0x56, 0xb1, 0xdb, - 0xdb, 0x66, 0x33, 0x74, 0x1a, 0x46, 0xf1, 0xe8, 0x40, 0x2c, 0xb4, 0x71, 0x4b, 0xfe, 0x34, 0x7f, - 0x3f, 0x87, 0x39, 0x0f, 0x94, 0x7a, 0x92, 0x57, 0x60, 0xbc, 0x15, 0x50, 0xdc, 0x8e, 0x1c, 0xa6, - 0x16, 0x89, 0xef, 0x54, 0x12, 0xe0, 0x92, 0x4b, 0xae, 0xc0, 0x64, 0x92, 0x6a, 0xd7, 0x6e, 0x6d, - 0x8b, 0xf0, 0xd7, 0x8a, 0x35, 0xde, 0x95, 0xb9, 0x76, 0xe7, 0xb6, 0xd1, 0x87, 0xbe, 0xaa, 0x86, - 0x9a, 0x45, 0x32, 0x6d, 0x6e, 0xd9, 0x9a, 0x54, 0xe0, 0x78, 0xed, 0x70, 0x0e, 0x8a, 0x8e, 0xb3, - 0xd3, 0xf3, 0xb8, 0x3f, 0x6f, 0xc5, 0x12, 0xbf, 0xc8, 0xe7, 0x60, 0x2a, 0xf4, 0x76, 0x3a, 0x4e, - 0xd4, 0x0b, 0x44, 0xd2, 0x09, 0x1a, 0xe0, 0x94, 0x1a, 0xb7, 0xaa, 0x71, 0xc1, 0x1c, 0x87, 0x93, - 0x37, 0x81, 0xa8, 0xdf, 0xf3, 0xb7, 0x3f, 0xa6, 0x2d, 0x3e, 0xd5, 0x2a, 0xd6, 0x94, 0x52, 0xb2, - 0x8a, 0x05, 0xe4, 0x65, 0xa8, 0x04, 0x34, 0x44, 0x95, 0x0c, 0xbb, 0x0d, 0x53, 0xe9, 0x58, 0x63, - 0x12, 0x76, 0x8f, 0x1e, 0x98, 0x0d, 0x98, 0xea, 0x5b, 0x8f, 0xe4, 0x4d, 0xae, 0xdd, 0x8b, 0xfd, - 0xb9, 0xc2, 0x8d, 0x19, 0x26, 0xa4, 0x52, 0xef, 0x3e, 0x73, 0x24, 0xb3, 0x03, 0x15, 0x55, 0xbe, - 0x9e, 0x10, 0x58, 0x7c, 0x0e, 0x1d, 0x0b, 0xb9, 0xf0, 0x29, 0x1e, 0x1d, 0xd6, 0x72, 0x9e, 0x8b, - 0xee, 0x84, 0x57, 0xa1, 0x24, 0xb5, 0x04, 0xf5, 0xf1, 0x16, 0xa1, 0x50, 0x1e, 0x58, 0x71, 0xa9, - 0xf9, 0x3a, 0x8c, 0x0a, 0x11, 0x7a, 0xfc, 0x31, 0x8e, 0xf9, 0xcb, 0x39, 0x98, 0xb4, 0x28, 0x5b, - 0xe0, 0xe2, 0x59, 0x94, 0xcf, 0x58, 0xd2, 0x61, 0xad, 0x6d, 0xc7, 0xc4, 0xf1, 0x7f, 0xcf, 0x80, - 0xd3, 0x19, 0xb8, 0x9f, 0x28, 0x4b, 0xd9, 0x6d, 0x28, 0xcf, 0x7b, 0x4e, 0xbb, 0xee, 0xba, 0xb1, - 0x83, 0x24, 0x6a, 0x83, 0x2e, 0x5b, 0x4e, 0x0e, 0x83, 0xaa, 0x9b, 0x69, 0x8c, 0x4a, 0xae, 0x8b, - 0x49, 0x91, 0xe4, 0x51, 0x94, 0x69, 0x8d, 0x81, 0xd7, 0x29, 0x49, 0x6a, 0x8c, 0x61, 0x68, 0x1c, - 0x98, 0xdc, 0x81, 0x3f, 0xb7, 0x43, 0x97, 0x1d, 0x86, 0x96, 0x6e, 0xde, 0x50, 0x66, 0xe7, 0x37, - 0x73, 0x70, 0x2e, 0x9b, 0xf0, 0x93, 0x26, 0x9c, 0xc3, 0x24, 0x0a, 0x4a, 0xe6, 0x68, 0x4c, 0x38, - 0xc7, 0x33, 0x2e, 0x20, 0x7e, 0x82, 0x40, 0x1e, 0xc0, 0xf8, 0xb2, 0x13, 0x46, 0x8b, 0xd4, 0x09, - 0xa2, 0x6d, 0xea, 0x44, 0x43, 0x68, 0xb0, 0xf1, 0xeb, 0xca, 0xb8, 0xa9, 0xed, 0x4a, 0xca, 0xf4, - 0xeb, 0xca, 0x1a, 0xdb, 0x78, 0xa2, 0x14, 0x86, 0x98, 0x28, 0x3f, 0x03, 0x93, 0x4d, 0xba, 0xef, - 0x74, 0x77, 0xfd, 0x80, 0x8a, 0x93, 0xe7, 0x1b, 0x30, 0x1e, 0x83, 0x32, 0x67, 0x8b, 0x5e, 0xac, - 0xe1, 0x2b, 0x1d, 0x91, 0x88, 0x12, 0xbd, 0xd8, 0xfc, 0xdd, 0x1c, 0x9c, 0xaf, 0xb7, 0xc4, 0x31, - 0xbd, 0x28, 0x90, 0xb7, 0x89, 0x9f, 0xf2, 0xb7, 0xc9, 0x0c, 0x94, 0xef, 0x3b, 0x8f, 0x97, 0x29, - 0xbe, 0x7f, 0xca, 0xd3, 0x16, 0x71, 0xf5, 0xcb, 0x79, 0x6c, 0xc7, 0xc7, 0x5e, 0x56, 0x82, 0xa3, - 0x1a, 0x9b, 0x85, 0xa7, 0x34, 0x36, 0x4d, 0x28, 0x2e, 0xfa, 0x6d, 0x57, 0x6c, 0x4e, 0xe2, 0xd4, - 0x7f, 0x17, 0x21, 0x96, 0x28, 0x31, 0x7f, 0x68, 0xc0, 0x44, 0x5c, 0x63, 0xac, 0xc2, 0xa7, 0xde, - 0x25, 0x57, 0x60, 0x14, 0x3f, 0x14, 0xbf, 0x12, 0x84, 0x9b, 0x46, 0x9b, 0x81, 0x6c, 0xcf, 0xb5, - 0x64, 0xa1, 0xda, 0x13, 0x23, 0x4f, 0xd7, 0x13, 0xe6, 0x3f, 0xc2, 0x0b, 0x05, 0xb5, 0x95, 0x6c, - 0x27, 0x52, 0x2a, 0x62, 0x0c, 0x59, 0x91, 0xdc, 0x33, 0x1b, 0x92, 0xfc, 0xc0, 0x21, 0xf9, 0x95, - 0x1c, 0x8c, 0xc5, 0x95, 0xfd, 0x8c, 0xc5, 0x6f, 0xc7, 0xed, 0x1a, 0xca, 0x3b, 0xbb, 0xa9, 0xc8, - 0x0a, 0xe1, 0x04, 0xfd, 0x65, 0x28, 0x8a, 0xc5, 0x64, 0xa4, 0x6e, 0xd5, 0x52, 0xa3, 0x9b, 0xbc, - 0x90, 0x8b, 0x03, 0x1a, 0x5a, 0x82, 0x0e, 0xdd, 0xdf, 0xb7, 0xe8, 0xb6, 0xb8, 0x5f, 0x7a, 0x6e, - 0xf7, 0xa8, 0x6c, 0xf7, 0xf7, 0xa4, 0x61, 0x43, 0xed, 0x4e, 0x7f, 0xbf, 0x00, 0xd5, 0x34, 0xc9, - 0xc9, 0x11, 0xf2, 0x6b, 0xbd, 0x6d, 0xf1, 0x50, 0x05, 0x46, 0xc8, 0x77, 0x7b, 0xdb, 0x16, 0x83, - 0x91, 0x2b, 0x50, 0x58, 0x0b, 0xbc, 0x87, 0xd8, 0x6a, 0xf1, 0x4e, 0x47, 0x37, 0xf0, 0x1e, 0xaa, - 0x7e, 0xa0, 0xac, 0x1c, 0x0d, 0xda, 0xe5, 0xa6, 0xf2, 0x38, 0x39, 0x37, 0x68, 0xdb, 0x61, 0x3a, - 0x2d, 0x8a, 0x44, 0x63, 0x5b, 0x65, 0x83, 0x3a, 0x81, 0x88, 0xe6, 0x16, 0xe2, 0x0c, 0xb7, 0xca, - 0x6d, 0x04, 0xf3, 0xa4, 0xb7, 0x96, 0x8a, 0x44, 0xda, 0x40, 0x94, 0x9f, 0x72, 0x01, 0x9f, 0x6c, - 0xe3, 0xc9, 0xf7, 0xa5, 0xce, 0xa8, 0xac, 0x6d, 0x75, 0x35, 0x67, 0xf0, 0x7d, 0x96, 0x67, 0x84, - 0x6b, 0x50, 0xc6, 0x23, 0x2f, 0x3c, 0xc8, 0x28, 0x9d, 0xc8, 0x4c, 0xfa, 0xdc, 0x02, 0xde, 0xc6, - 0xdb, 0xf1, 0x71, 0x46, 0xc2, 0x84, 0xbc, 0x0f, 0x63, 0xaa, 0xa3, 0x28, 0x77, 0x67, 0xbc, 0xc4, - 0x23, 0x84, 0x06, 0xe4, 0x8f, 0x53, 0x09, 0xcc, 0xcf, 0xab, 0xb3, 0x44, 0x6c, 0xda, 0xc7, 0xce, - 0x12, 0xf3, 0xb7, 0x51, 0x8d, 0xdf, 0xf7, 0x23, 0x2a, 0xb4, 0x97, 0xe7, 0x56, 0x8e, 0x25, 0x47, - 0xc8, 0x23, 0x9a, 0x47, 0x88, 0xd6, 0xba, 0x27, 0x78, 0x96, 0xfb, 0x0f, 0x0d, 0x38, 0x9b, 0x49, - 0x4b, 0x6e, 0x00, 0x24, 0x3a, 0xa2, 0xe8, 0x25, 0x9e, 0x4d, 0x38, 0x86, 0x5a, 0x0a, 0x06, 0xf9, - 0x7a, 0x5a, 0xbb, 0x3b, 0x79, 0x73, 0x92, 0x6f, 0x6e, 0x4c, 0xe8, 0xda, 0x5d, 0x86, 0x4e, 0x67, - 0x7e, 0x2f, 0x0f, 0x53, 0x7d, 0x0f, 0x3c, 0x9e, 0x70, 0x07, 0xbf, 0x97, 0x7a, 0x09, 0x8c, 0x5f, - 0x77, 0x5c, 0x1f, 0xf4, 0xbc, 0x64, 0xc6, 0xbb, 0x60, 0x78, 0x2c, 0x26, 0x12, 0x59, 0x9f, 0xf0, - 0x3c, 0x58, 0x98, 0xfd, 0x86, 0xdc, 0xe7, 0x06, 0x7e, 0xed, 0x19, 0xbc, 0x25, 0xf7, 0x63, 0xfc, - 0xd4, 0xd6, 0x6f, 0xe7, 0xe0, 0x74, 0x5f, 0x9b, 0x9f, 0xdb, 0x55, 0xf7, 0x65, 0x6d, 0x77, 0x7b, - 0x69, 0xd0, 0x98, 0x0e, 0xa5, 0x45, 0xfc, 0x37, 0x03, 0xce, 0x0f, 0xa0, 0x24, 0x07, 0xe9, 0x49, - 0xc4, 0xb5, 0x8a, 0x9b, 0xc7, 0x7f, 0xf0, 0x99, 0x4c, 0xa5, 0x4f, 0x6d, 0x26, 0xfc, 0x72, 0x0e, - 0x60, 0x8b, 0x6e, 0x3f, 0xdf, 0xe9, 0x7f, 0xbe, 0xa8, 0x4d, 0x00, 0xe5, 0x00, 0x73, 0xf8, 0xec, - 0x3f, 0xab, 0x78, 0x90, 0x38, 0x7c, 0xee, 0x9f, 0xf8, 0x5d, 0x91, 0x5c, 0xf6, 0xbb, 0x22, 0xe6, - 0x36, 0x9c, 0xb9, 0x4b, 0xa3, 0x64, 0x27, 0x94, 0x36, 0xe4, 0xf1, 0x6c, 0xdf, 0x80, 0xb2, 0xc0, - 0xd7, 0x73, 0xc4, 0x4b, 0x87, 0x32, 0xcf, 0xb5, 0x12, 0x04, 0x93, 0xc2, 0xf9, 0x79, 0xda, 0xa6, - 0x11, 0xfd, 0x74, 0x3f, 0xd3, 0x04, 0xc2, 0x9b, 0xc2, 0x9f, 0x9b, 0x18, 0xea, 0x0b, 0x27, 0xf6, - 0xcf, 0x26, 0x9c, 0x8d, 0xeb, 0xfe, 0x2c, 0xf9, 0xce, 0x30, 0x5d, 0x42, 0xc4, 0xda, 0x25, 0x1c, - 0x8f, 0x39, 0x44, 0x7c, 0x0c, 0x17, 0x25, 0xc1, 0x96, 0x17, 0xdf, 0xc4, 0x0c, 0x45, 0x4b, 0xde, - 0x85, 0x31, 0x85, 0x46, 0x04, 0xee, 0xe2, 0x6d, 0xe7, 0x23, 0x2f, 0xda, 0xb5, 0x43, 0x0e, 0x57, - 0x6f, 0x3b, 0x15, 0x74, 0xf3, 0x6b, 0xf0, 0x42, 0xec, 0xb7, 0x92, 0xf1, 0xe9, 0x14, 0x73, 0xe3, - 0xc9, 0x98, 0xaf, 0x24, 0xcd, 0x5a, 0xea, 0xc4, 0xfe, 0xe3, 0x92, 0x37, 0x51, 0x9b, 0x25, 0x1a, - 0x73, 0x49, 0x49, 0x8b, 0x26, 0xf6, 0xa2, 0x04, 0x60, 0xbe, 0xa3, 0x54, 0x36, 0x83, 0xa1, 0x46, - 0x6c, 0xa4, 0x89, 0x7f, 0x39, 0x07, 0x93, 0xab, 0x4b, 0xf3, 0x73, 0xf1, 0x31, 0xf2, 0x67, 0x2c, - 0x37, 0x91, 0xd6, 0xb6, 0xc1, 0xf2, 0xc6, 0xdc, 0x80, 0xd3, 0xa9, 0x6e, 0xc0, 0xd7, 0x74, 0xde, - 0xe7, 0xfe, 0x25, 0x31, 0x58, 0xee, 0x2c, 0xe7, 0xb2, 0xd8, 0x6f, 0xde, 0xb2, 0x52, 0xd8, 0xe6, - 0xf7, 0x8a, 0x29, 0xbe, 0x42, 0x84, 0xbd, 0x01, 0xe5, 0xa5, 0x30, 0xec, 0xd1, 0x60, 0xc3, 0x5a, - 0x56, 0x75, 0x44, 0x0f, 0x81, 0x76, 0x2f, 0x68, 0x5b, 0x09, 0x02, 0xb9, 0x06, 0x25, 0x11, 0xdf, - 0x25, 0x65, 0x02, 0x5e, 0x97, 0xc7, 0xe1, 0x61, 0x56, 0x5c, 0x4c, 0xde, 0x82, 0x0a, 0xff, 0x9f, - 0xcf, 0x36, 0xd1, 0xe1, 0x78, 0x56, 0x25, 0xd0, 0xf9, 0xec, 0xb4, 0x34, 0x34, 0x66, 0x99, 0xc9, - 0xe7, 0x3a, 0x59, 0x8d, 0x0a, 0x89, 0x65, 0x26, 0x5f, 0xf6, 0xc4, 0x3a, 0xa9, 0x48, 0xe4, 0x3a, - 0xe4, 0xeb, 0x73, 0x96, 0x9a, 0x16, 0xdb, 0x69, 0x05, 0x3c, 0xad, 0xbc, 0xf6, 0x22, 0x56, 0x7d, - 0xce, 0x22, 0xb3, 0x50, 0xc2, 0x17, 0x4f, 0x5c, 0x1a, 0x08, 0x9f, 0x51, 0x9c, 0x35, 0x5d, 0x01, - 0xd3, 0xde, 0x13, 0x17, 0x30, 0x32, 0x03, 0xa3, 0xf3, 0x5e, 0xd8, 0x6d, 0x3b, 0x07, 0x22, 0x29, - 0x09, 0x5e, 0x86, 0xb8, 0x1c, 0xa4, 0xce, 0x33, 0x81, 0x45, 0xae, 0xc1, 0x48, 0xb3, 0xe5, 0x77, - 0x99, 0xb5, 0x15, 0xbb, 0xb6, 0x84, 0x0c, 0xa0, 0x65, 0x36, 0x60, 0x00, 0x0c, 0x39, 0xe6, 0x91, - 0x53, 0x65, 0x25, 0xe4, 0x38, 0x1d, 0x31, 0x25, 0x70, 0xfa, 0xfd, 0xff, 0xe0, 0x59, 0xfa, 0xff, - 0x6d, 0xc3, 0xf9, 0xbb, 0xa8, 0xea, 0x37, 0x69, 0x80, 0x79, 0x20, 0xf9, 0xeb, 0x49, 0x1b, 0xd6, - 0x92, 0x88, 0x16, 0xbb, 0x7a, 0x74, 0x58, 0x7b, 0x95, 0x5b, 0x03, 0x76, 0xc8, 0x71, 0xe4, 0xc3, - 0x4b, 0xa9, 0x27, 0x23, 0x06, 0x31, 0x22, 0x5f, 0x81, 0x33, 0x59, 0x45, 0x22, 0x6e, 0x0c, 0xbd, - 0xc2, 0xb3, 0x3f, 0xa0, 0xba, 0x65, 0x67, 0x71, 0x20, 0xcb, 0x50, 0xe5, 0xf0, 0xba, 0xbb, 0xef, - 0x75, 0x16, 0xf6, 0x1d, 0xaf, 0x8d, 0x51, 0x64, 0x22, 0x14, 0x50, 0x70, 0x75, 0x58, 0xa1, 0x4d, - 0x59, 0xa9, 0xe6, 0x9d, 0x94, 0xa2, 0x44, 0x71, 0xd4, 0xac, 0xdf, 0x5f, 0x4e, 0xd6, 0xd4, 0x67, - 0xeb, 0xde, 0x48, 0x6b, 0xdb, 0x31, 0xf7, 0x46, 0x1b, 0x70, 0x3a, 0xd5, 0x0d, 0x52, 0x1c, 0x69, - 0xe0, 0xb4, 0x38, 0x4a, 0xd1, 0x58, 0x29, 0x6c, 0xf3, 0xdf, 0x17, 0x53, 0x7c, 0xc5, 0x59, 0x91, - 0x09, 0x45, 0x2e, 0x6d, 0xd4, 0xac, 0x65, 0x5c, 0x16, 0x59, 0xa2, 0x84, 0x5c, 0x80, 0x7c, 0xb3, - 0xb9, 0xaa, 0xe6, 0x54, 0x0c, 0x43, 0xdf, 0x62, 0x30, 0x36, 0x42, 0x78, 0x0c, 0xa4, 0x04, 0x68, - 0xb5, 0x68, 0x10, 0x89, 0xf7, 0x5c, 0x5f, 0x4b, 0xd6, 0x71, 0x21, 0xe9, 0x6f, 0xb1, 0x8e, 0x93, - 0xd5, 0x3b, 0x07, 0xd3, 0xf5, 0x30, 0xa4, 0x01, 0x4f, 0x0f, 0xde, 0x09, 0x7b, 0xfb, 0x34, 0x10, - 0x73, 0x4d, 0xc8, 0x18, 0xfe, 0x1a, 0x7c, 0x2b, 0xb4, 0x06, 0x22, 0x92, 0xab, 0x50, 0xaa, 0xf7, - 0x5c, 0x8f, 0x76, 0x5a, 0x9a, 0x6f, 0xba, 0x23, 0x60, 0x56, 0x5c, 0x4a, 0x3e, 0x82, 0xb3, 0x82, - 0x48, 0x0a, 0x1c, 0xd1, 0x03, 0x5c, 0xd6, 0x70, 0x0b, 0x56, 0xac, 0x05, 0x29, 0xa6, 0x6c, 0xd1, - 0x25, 0xd9, 0x94, 0xa4, 0x0e, 0xd5, 0x05, 0xbc, 0x27, 0x95, 0xaf, 0x3a, 0xfb, 0x81, 0x48, 0xbe, - 0x8b, 0x92, 0x8b, 0xdf, 0xa1, 0xda, 0x6e, 0x5c, 0x68, 0xf5, 0xa1, 0x93, 0x7b, 0x70, 0x3a, 0x0d, - 0x63, 0xf2, 0xb8, 0x9c, 0xbc, 0xba, 0xd6, 0xc7, 0x05, 0x05, 0x73, 0x16, 0x15, 0xd9, 0x86, 0xa9, - 0x7a, 0x14, 0x05, 0xde, 0x76, 0x2f, 0xa2, 0x29, 0xd1, 0x25, 0x0f, 0x1a, 0xe3, 0x72, 0x29, 0xbe, - 0x5e, 0x10, 0x93, 0xf1, 0xb4, 0x13, 0x53, 0xc6, 0x22, 0xcc, 0xea, 0x67, 0x47, 0xdc, 0xf8, 0xe1, - 0x46, 0xf1, 0xb8, 0xa1, 0x08, 0x28, 0x92, 0x07, 0xba, 0xf5, 0xf0, 0x60, 0x7f, 0x9f, 0x46, 0x01, - 0xde, 0xdc, 0xe3, 0xe3, 0x87, 0xa6, 0xf0, 0x01, 0xba, 0xa8, 0xbc, 0x57, 0x8a, 0x0f, 0x5c, 0x6a, - 0xee, 0x91, 0x1a, 0x4f, 0x6d, 0xfb, 0xa8, 0x0c, 0xb9, 0x7d, 0xb4, 0x61, 0x6a, 0xa1, 0xd3, 0x0a, - 0x0e, 0x30, 0xb2, 0x51, 0x56, 0x6e, 0xfc, 0x84, 0xca, 0xc9, 0x97, 0x4d, 0x2e, 0x39, 0x72, 0x86, - 0x65, 0x55, 0xaf, 0x9f, 0xb1, 0xf9, 0xff, 0x41, 0x35, 0xdd, 0x97, 0x4f, 0xf9, 0x5a, 0xf5, 0x93, - 0xb8, 0x66, 0xb3, 0x91, 0x4e, 0xb7, 0x85, 0xcc, 0x68, 0x4f, 0x12, 0x1b, 0x49, 0x54, 0xba, 0xf2, - 0x78, 0xb0, 0xf6, 0x10, 0xb1, 0x5c, 0xc6, 0xb9, 0xac, 0x65, 0x6c, 0xfe, 0x6a, 0x0e, 0xa6, 0xb8, - 0x37, 0xe9, 0xf3, 0xaf, 0x2b, 0xbe, 0xaf, 0x09, 0x67, 0x79, 0x16, 0x98, 0x6a, 0xdd, 0x31, 0xda, - 0xe2, 0x37, 0xe0, 0x6c, 0x5f, 0x57, 0xa0, 0x80, 0x9e, 0x97, 0x7e, 0xbc, 0x7d, 0x22, 0x7a, 0x3a, - 0xfb, 0x23, 0x9b, 0xb7, 0xac, 0x3e, 0x0a, 0xf3, 0x1f, 0xe4, 0xfa, 0xf8, 0x0b, 0xbd, 0x51, 0xd5, - 0x04, 0x8d, 0x27, 0xd3, 0x04, 0x73, 0x9f, 0x48, 0x13, 0xcc, 0x0f, 0xa3, 0x09, 0x7e, 0x04, 0xe3, - 0xeb, 0xd4, 0x61, 0x1a, 0x8d, 0x08, 0x36, 0x2b, 0x68, 0xcf, 0x05, 0xb3, 0x32, 0x29, 0x5f, 0xe2, - 0x40, 0xd5, 0x88, 0x11, 0x30, 0xd1, 0xc2, 0xa3, 0xcf, 0x2c, 0x9d, 0x83, 0xba, 0x69, 0x8c, 0x0c, - 0xde, 0x34, 0xcc, 0x6f, 0xe6, 0x60, 0x4c, 0x61, 0x4f, 0xbe, 0x00, 0x95, 0xd5, 0x60, 0xc7, 0xe9, - 0x78, 0x3f, 0xeb, 0x28, 0xc7, 0xaf, 0x58, 0x7d, 0x5f, 0x81, 0x5b, 0x1a, 0x16, 0xba, 0xcd, 0x50, - 0x67, 0x5f, 0x9d, 0xf8, 0xac, 0x7a, 0x16, 0x42, 0x95, 0x60, 0xe1, 0xfc, 0x10, 0xc1, 0xc2, 0x7a, - 0xa4, 0x6d, 0xe1, 0xc9, 0x23, 0x6d, 0xb5, 0xc0, 0xd8, 0x91, 0x27, 0x0c, 0x8c, 0x35, 0x7f, 0x3d, - 0x07, 0x55, 0xf1, 0xb0, 0xae, 0x3c, 0x3c, 0xfc, 0x6c, 0xbd, 0xc3, 0xa0, 0x37, 0xee, 0x98, 0xeb, - 0xb1, 0xc2, 0xef, 0xfc, 0x41, 0x0d, 0x9f, 0x49, 0x4d, 0x77, 0x87, 0x7c, 0x26, 0x55, 0x87, 0xa7, - 0x23, 0x07, 0xd2, 0x54, 0x56, 0x1a, 0xdf, 0xfc, 0xf3, 0x5c, 0x9a, 0xb7, 0xd0, 0xa6, 0x5e, 0x83, - 0x51, 0xfe, 0x2e, 0x9a, 0x74, 0x6e, 0x16, 0xb9, 0x9b, 0x10, 0x64, 0xc9, 0xb2, 0x27, 0x89, 0x21, - 0x39, 0xe9, 0xad, 0x5c, 0x72, 0x5b, 0xbc, 0x3d, 0x53, 0x77, 0xdd, 0x80, 0x86, 0xa1, 0x50, 0xb4, - 0xf0, 0xee, 0xee, 0x11, 0xdd, 0xb6, 0xb9, 0x5f, 0x89, 0xe3, 0xba, 0x81, 0xa5, 0xe1, 0x91, 0x39, - 0x38, 0xa3, 0xb9, 0x27, 0x49, 0xfa, 0x91, 0x64, 0xb7, 0x10, 0xef, 0xed, 0x20, 0x71, 0x26, 0xf2, - 0xb3, 0x7b, 0x27, 0xdc, 0xfc, 0x5f, 0x06, 0x5b, 0x6b, 0xad, 0xbd, 0xcf, 0x58, 0x74, 0x0b, 0x6b, - 0xd2, 0x31, 0xca, 0xfe, 0xbf, 0x35, 0xb8, 0x7f, 0xba, 0x98, 0x3e, 0x6f, 0x43, 0x91, 0xbf, 0xc2, - 0x26, 0x3c, 0xa9, 0x55, 0x2e, 0xbc, 0x20, 0xb9, 0x9f, 0xe2, 0x6f, 0xb9, 0x59, 0x82, 0x80, 0x99, - 0xcc, 0xba, 0x9b, 0x3c, 0x2a, 0x9e, 0xfd, 0xfe, 0xf1, 0x12, 0x4b, 0xcd, 0x4b, 0x3a, 0x5c, 0xbe, - 0x6b, 0xe3, 0xe4, 0xbc, 0xa4, 0xe6, 0xff, 0xc9, 0xf1, 0xf6, 0x88, 0x4a, 0x0d, 0x9b, 0x70, 0xef, - 0x0a, 0x14, 0xf0, 0xbd, 0x5f, 0x25, 0xab, 0x61, 0xea, 0xad, 0x5f, 0x2c, 0x67, 0xeb, 0x06, 0x65, - 0xad, 0x1a, 0x50, 0x85, 0xe2, 0x58, 0x5d, 0x37, 0x88, 0x81, 0xd9, 0xa4, 0x7d, 0x97, 0xaa, 0xcb, - 0xa1, 0xa3, 0x27, 0xfe, 0xc6, 0x72, 0x72, 0x5b, 0xf1, 0x6b, 0x56, 0x0f, 0x34, 0xf6, 0x1f, 0x38, - 0x36, 0xf7, 0xa7, 0x55, 0xa5, 0x6d, 0xe2, 0x02, 0xbd, 0x00, 0x13, 0x7a, 0xac, 0xb2, 0x30, 0x3a, - 0x30, 0xe4, 0x3b, 0x15, 0xe7, 0xac, 0xaa, 0xb7, 0x3a, 0x11, 0x69, 0xc0, 0xb8, 0x16, 0x90, 0xaa, - 0x26, 0x61, 0xe5, 0xd9, 0x61, 0xec, 0xfe, 0x4c, 0x0a, 0x3a, 0x89, 0x72, 0x60, 0xfe, 0x79, 0xa8, - 0x8a, 0x95, 0x19, 0xc7, 0xb6, 0xa1, 0x6a, 0xb7, 0x34, 0x6f, 0xa9, 0xab, 0xa9, 0xe5, 0xb9, 0x81, - 0x85, 0x50, 0xf3, 0x3b, 0x06, 0x5c, 0x10, 0xaf, 0xcb, 0x59, 0x34, 0x64, 0x3a, 0x24, 0x06, 0xc4, - 0xe1, 0x7c, 0xfc, 0x02, 0x79, 0x57, 0x26, 0x9e, 0xd2, 0x05, 0x64, 0xfa, 0x1b, 0x8d, 0x71, 0x31, - 0x29, 0x47, 0x30, 0xf5, 0x94, 0x4c, 0x38, 0xf5, 0xb6, 0x48, 0x38, 0x95, 0x3b, 0x9e, 0x38, 0x5e, - 0x17, 0x2e, 0xed, 0xc8, 0x44, 0x53, 0xbf, 0x91, 0x83, 0xb3, 0x19, 0xd5, 0xda, 0xfc, 0xc2, 0x73, - 0x2a, 0x1c, 0x1a, 0x9a, 0x70, 0x90, 0x19, 0x09, 0x07, 0x76, 0x7c, 0xa6, 0xac, 0xf8, 0x3d, 0x03, - 0xce, 0xeb, 0xb3, 0x47, 0xd8, 0xa2, 0x9b, 0xb7, 0xc8, 0x3b, 0x50, 0x5c, 0xa4, 0x8e, 0x4b, 0x65, - 0x08, 0x46, 0x9c, 0xdd, 0x4b, 0x9c, 0x0e, 0xf3, 0x42, 0xce, 0xf6, 0xcf, 0xf9, 0x52, 0x3e, 0x65, - 0x09, 0x12, 0x32, 0x2f, 0x2a, 0xc7, 0xaf, 0xa7, 0x4c, 0x79, 0x53, 0x93, 0xf5, 0xa9, 0x63, 0x14, - 0xe3, 0x3f, 0x34, 0xe0, 0x85, 0x63, 0x68, 0xd8, 0xc0, 0xb1, 0xa1, 0x57, 0x07, 0x0e, 0x37, 0x16, - 0x84, 0x92, 0xf7, 0x61, 0x72, 0x5d, 0x44, 0x8a, 0xc9, 0xe1, 0x50, 0xb2, 0xbb, 0xcb, 0x20, 0x32, - 0x5b, 0x8e, 0x4b, 0x1a, 0x99, 0x59, 0xff, 0x8b, 0x7e, 0x18, 0x75, 0x92, 0x64, 0x31, 0x68, 0xfd, - 0xef, 0x0a, 0x98, 0x15, 0x97, 0x32, 0xb5, 0x40, 0xaf, 0xa6, 0x70, 0x87, 0x78, 0x05, 0x8a, 0x0c, - 0x27, 0xd6, 0xae, 0x71, 0x1e, 0xe0, 0xd3, 0x57, 0x9e, 0x6b, 0x89, 0xa2, 0xd8, 0xae, 0xcb, 0x65, - 0xde, 0x5a, 0x7c, 0xd3, 0x80, 0xaa, 0xce, 0xfb, 0x69, 0x87, 0xe6, 0x3d, 0x6d, 0x68, 0x5e, 0xc8, - 0x1e, 0x9a, 0xc1, 0x63, 0xd2, 0x97, 0xb7, 0x61, 0xa8, 0xb1, 0x30, 0xa1, 0x38, 0xef, 0xef, 0x3b, - 0x5e, 0x47, 0xcd, 0x35, 0xe0, 0x22, 0xc4, 0x12, 0x25, 0x4a, 0x6f, 0xe5, 0x07, 0xf6, 0x96, 0xf9, - 0xed, 0x02, 0x5c, 0xb0, 0xe8, 0x8e, 0xc7, 0x14, 0xa4, 0x8d, 0xd0, 0xeb, 0xec, 0x68, 0x77, 0x4a, - 0x66, 0xaa, 0xc3, 0x85, 0x27, 0x1d, 0x83, 0xc4, 0xfd, 0x7d, 0x0d, 0x4a, 0x4c, 0x4a, 0x2b, 0x7d, - 0x8e, 0x46, 0x0f, 0x66, 0xcc, 0xe1, 0xe3, 0x2a, 0x8b, 0xc9, 0x75, 0xb1, 0x87, 0x28, 0xbe, 0xce, - 0x6c, 0x0f, 0x49, 0x3d, 0xdd, 0xce, 0xf7, 0x91, 0x58, 0xa9, 0x2a, 0x0c, 0x50, 0xaa, 0xee, 0xc3, - 0x99, 0xba, 0xcb, 0xe5, 0x93, 0xd3, 0x5e, 0x0b, 0xbc, 0x4e, 0xcb, 0xeb, 0x3a, 0x6d, 0xa9, 0x94, - 0xf3, 0x87, 0xec, 0xe3, 0x72, 0xbb, 0x1b, 0x23, 0x58, 0x99, 0x64, 0xac, 0x19, 0xf3, 0x2b, 0x4d, - 0x9e, 0x10, 0xa5, 0x88, 0x2c, 0xb0, 0x19, 0x6e, 0x27, 0xe4, 0x19, 0x51, 0xac, 0xb8, 0x18, 0xd5, - 0x39, 0x0c, 0x77, 0x58, 0x5f, 0x6e, 0xde, 0x13, 0xe1, 0x03, 0xd2, 0x15, 0x8b, 0x47, 0x47, 0x44, - 0xed, 0x10, 0xed, 0x77, 0x0d, 0x2f, 0xa1, 0x6b, 0x36, 0x17, 0x19, 0x5d, 0xa9, 0x8f, 0x2e, 0x0c, - 0x77, 0x55, 0x3a, 0x8e, 0x47, 0x66, 0x00, 0xb8, 0x33, 0x0b, 0x4e, 0x88, 0x72, 0xa2, 0xfc, 0x05, - 0x08, 0xe5, 0xca, 0x9f, 0x82, 0x42, 0xde, 0x85, 0xd3, 0x0b, 0x73, 0xb3, 0x32, 0x2e, 0x60, 0xde, - 0x6f, 0xf5, 0xf6, 0x69, 0x27, 0xc2, 0x38, 0x95, 0x0a, 0x1f, 0x43, 0xda, 0x9a, 0x65, 0xb3, 0x20, - 0x0b, 0x4d, 0x44, 0x07, 0xf0, 0xd8, 0xb2, 0x39, 0xdf, 0xa5, 0xe1, 0xe6, 0xcd, 0xcf, 0x58, 0x74, - 0x80, 0xd2, 0x36, 0x5c, 0x6d, 0x37, 0x33, 0x57, 0xe6, 0xdf, 0xc1, 0xe8, 0x80, 0x3e, 0x5c, 0xf2, - 0x13, 0x30, 0x82, 0x3f, 0xc5, 0x8e, 0x7b, 0x3a, 0x83, 0x6d, 0xb2, 0xdb, 0xb6, 0x78, 0x6e, 0x0b, - 0x24, 0x20, 0x4b, 0x49, 0xf2, 0xfa, 0x27, 0xf0, 0x71, 0x15, 0x01, 0xaa, 0xfa, 0xab, 0x25, 0x2e, - 0x54, 0xd4, 0x0f, 0xb2, 0x39, 0xb2, 0xe8, 0x84, 0xbb, 0xd4, 0x9d, 0x93, 0xef, 0x0e, 0x56, 0xf8, - 0x1c, 0xd9, 0x45, 0x28, 0xbe, 0xa8, 0x62, 0x29, 0x28, 0x4c, 0x3a, 0x2c, 0x85, 0x1b, 0xa1, 0xa8, - 0x8a, 0xb0, 0x82, 0x3c, 0xb4, 0x5e, 0x5d, 0x4b, 0x14, 0xa1, 0xb4, 0x94, 0xb9, 0x1b, 0x03, 0xa7, - 0xb5, 0x47, 0x83, 0xcd, 0x9b, 0x9f, 0x86, 0xb4, 0xd4, 0xbf, 0x71, 0xcc, 0x98, 0xfc, 0x66, 0x29, - 0x4e, 0xcd, 0xa2, 0x21, 0x33, 0x1d, 0x31, 0xb9, 0x99, 0x37, 0x12, 0x1d, 0x31, 0xb9, 0x99, 0x57, - 0x75, 0xc4, 0x18, 0x35, 0xce, 0x9c, 0x9b, 0x3b, 0x21, 0x73, 0xee, 0x80, 0x64, 0xdd, 0xd2, 0xa9, - 0xf3, 0x33, 0xf4, 0x6e, 0xc1, 0x97, 0xa0, 0x52, 0x8f, 0x22, 0xa7, 0xb5, 0x4b, 0x5d, 0xcc, 0xd0, - 0xac, 0x5c, 0x08, 0x3a, 0x02, 0xae, 0xba, 0x8b, 0xa9, 0xb8, 0xca, 0xbb, 0x25, 0xa3, 0x43, 0xbc, - 0x5b, 0x32, 0x03, 0xa3, 0x4b, 0x9d, 0x87, 0x1e, 0xeb, 0x93, 0x52, 0x92, 0x1c, 0xc2, 0xe3, 0x20, - 0xfd, 0xb1, 0x0b, 0x04, 0x91, 0xb7, 0x15, 0x0d, 0xa2, 0x9c, 0xa8, 0xf2, 0xe2, 0xc9, 0x6c, 0xa9, - 0x48, 0xa8, 0xe7, 0xcd, 0x12, 0x9d, 0xdc, 0x86, 0x51, 0x69, 0x3d, 0x43, 0xa2, 0xbe, 0x0b, 0x4a, - 0x87, 0x97, 0x68, 0xf9, 0x28, 0x84, 0xf5, 0xfc, 0xae, 0x1e, 0x3f, 0x32, 0xa6, 0xc4, 0x65, 0x2b, - 0xf1, 0x23, 0x5a, 0x5c, 0xb6, 0x12, 0x49, 0x12, 0x1b, 0x43, 0x95, 0x13, 0x8d, 0xa1, 0x4d, 0xa8, - 0xac, 0x39, 0x41, 0xe4, 0xb1, 0xed, 0xa8, 0x13, 0xf1, 0xb4, 0x5a, 0x89, 0xad, 0xae, 0x14, 0x35, - 0x5e, 0x92, 0xf1, 0xc9, 0x5d, 0x05, 0x5f, 0x0f, 0x6c, 0x4d, 0xe0, 0x64, 0x25, 0xc3, 0xc3, 0x50, - 0x24, 0x81, 0xc4, 0x2b, 0x40, 0xe5, 0xe0, 0x4a, 0xb4, 0x48, 0x3d, 0x4a, 0xef, 0x77, 0x4e, 0xbc, - 0xc5, 0xc7, 0x00, 0x6d, 0xc6, 0x49, 0x64, 0x83, 0xd9, 0x45, 0x50, 0xaf, 0x48, 0x19, 0x8e, 0x31, - 0x22, 0xf9, 0x3a, 0x54, 0xd8, 0xff, 0x98, 0x63, 0xc8, 0xa3, 0x3c, 0x6d, 0x56, 0xe2, 0x71, 0xa6, - 0x2f, 0x68, 0x9e, 0x88, 0xa8, 0x49, 0x23, 0xbe, 0x80, 0x91, 0x71, 0xfa, 0xe0, 0x45, 0xe3, 0x66, - 0xfe, 0xd0, 0x80, 0xf3, 0x03, 0x78, 0x0c, 0xfd, 0x62, 0xd1, 0x4c, 0xb2, 0x21, 0x29, 0xb6, 0xb9, - 0xd8, 0x90, 0xd4, 0x89, 0x21, 0xb7, 0xa6, 0xec, 0x84, 0x57, 0xf9, 0x4f, 0x2d, 0xe1, 0x95, 0x79, - 0x68, 0xc0, 0x98, 0x32, 0xb2, 0xcf, 0xf0, 0x21, 0x82, 0x2b, 0x22, 0xf3, 0x63, 0x3e, 0xc1, 0x4b, - 0x3d, 0x40, 0xcd, 0x33, 0x3d, 0x7e, 0x03, 0x60, 0xd9, 0x09, 0xa3, 0x7a, 0x2b, 0xf2, 0x1e, 0xd2, - 0x21, 0xc4, 0x58, 0x12, 0xa8, 0xef, 0x60, 0x22, 0x55, 0x46, 0xd6, 0x17, 0xa8, 0x1f, 0x33, 0x34, - 0x57, 0xa0, 0xd8, 0xf4, 0x83, 0xa8, 0x71, 0xc0, 0xf7, 0xa6, 0x79, 0x1a, 0xb6, 0xd4, 0x13, 0x3a, - 0x0f, 0x6d, 0xf5, 0x96, 0x25, 0x8a, 0x98, 0x82, 0x78, 0xc7, 0xa3, 0x6d, 0x57, 0xbd, 0xa1, 0x79, - 0xc0, 0x00, 0x16, 0x87, 0x5f, 0xff, 0x00, 0x26, 0x65, 0xf2, 0xb9, 0xf5, 0xe5, 0x26, 0xb6, 0x60, - 0x12, 0xc6, 0x36, 0x17, 0xac, 0xa5, 0x3b, 0x5f, 0xb5, 0xef, 0x6c, 0x2c, 0x2f, 0x57, 0x4f, 0x91, - 0x71, 0x28, 0x0b, 0xc0, 0x5c, 0xbd, 0x6a, 0x90, 0x0a, 0x94, 0x96, 0x56, 0x9a, 0x0b, 0x73, 0x1b, - 0xd6, 0x42, 0x35, 0x77, 0xfd, 0x35, 0x98, 0x48, 0xee, 0x5f, 0x30, 0x46, 0x73, 0x14, 0xf2, 0x56, - 0x7d, 0xab, 0x7a, 0x8a, 0x00, 0x14, 0xd7, 0xee, 0xcd, 0x35, 0x6f, 0xde, 0xac, 0x1a, 0xd7, 0x3f, - 0x9f, 0xf1, 0xea, 0x37, 0xe3, 0xd4, 0xa4, 0x5d, 0x27, 0x70, 0x22, 0xca, 0x3f, 0x73, 0xbf, 0xd7, - 0x8e, 0xbc, 0x6e, 0x9b, 0x3e, 0xae, 0x1a, 0xd7, 0xdf, 0xee, 0x7b, 0xbc, 0x9b, 0x9c, 0x85, 0xa9, - 0x8d, 0x95, 0xfa, 0xfd, 0xc6, 0xd2, 0xdd, 0x8d, 0xd5, 0x8d, 0xa6, 0x7d, 0xbf, 0xbe, 0x3e, 0xb7, - 0x58, 0x3d, 0xc5, 0x2a, 0x7c, 0x7f, 0xb5, 0xb9, 0x6e, 0x5b, 0x0b, 0x73, 0x0b, 0x2b, 0xeb, 0x55, - 0xe3, 0xfa, 0xaf, 0x19, 0x30, 0xa1, 0xbf, 0x86, 0x47, 0x2e, 0xc3, 0xa5, 0x8d, 0xe6, 0x82, 0x65, - 0xaf, 0xaf, 0xde, 0x5b, 0x58, 0xb1, 0x37, 0x9a, 0xf5, 0xbb, 0x0b, 0xf6, 0xc6, 0x4a, 0x73, 0x6d, - 0x61, 0x6e, 0xe9, 0xce, 0xd2, 0xc2, 0x7c, 0xf5, 0x14, 0xa9, 0xc1, 0x0b, 0x0a, 0x86, 0xb5, 0x30, - 0xb7, 0xba, 0xb9, 0x60, 0xd9, 0x6b, 0xf5, 0x66, 0x73, 0x6b, 0xd5, 0x9a, 0xaf, 0x1a, 0xe4, 0x22, - 0x9c, 0xcb, 0x40, 0xb8, 0x7f, 0xa7, 0x5e, 0xcd, 0xf5, 0x95, 0xad, 0x2c, 0x6c, 0xd5, 0x97, 0xed, - 0xc6, 0xea, 0x7a, 0x35, 0x7f, 0xfd, 0x03, 0xa6, 0x85, 0x24, 0xcf, 0x55, 0x90, 0x12, 0x14, 0x56, - 0x56, 0x57, 0x16, 0xaa, 0xa7, 0xc8, 0x18, 0x8c, 0xae, 0x2d, 0xac, 0xcc, 0x2f, 0xad, 0xdc, 0xe5, - 0xdd, 0x5a, 0x5f, 0x5b, 0xb3, 0x56, 0x37, 0x17, 0xe6, 0xab, 0x39, 0xd6, 0x77, 0xf3, 0x0b, 0x2b, - 0xac, 0x66, 0xf9, 0xeb, 0x26, 0x4f, 0xd1, 0xac, 0x65, 0x18, 0x65, 0xbd, 0xb5, 0xf0, 0x95, 0xf5, - 0x85, 0x95, 0xe6, 0xd2, 0xea, 0x4a, 0xf5, 0xd4, 0xf5, 0x4b, 0x29, 0x1c, 0x39, 0x12, 0xcd, 0xe6, - 0x62, 0xf5, 0xd4, 0xf5, 0xaf, 0x43, 0x45, 0xdd, 0x84, 0xc9, 0x79, 0x38, 0xad, 0xfe, 0x5e, 0xa3, - 0x1d, 0xd7, 0xeb, 0xec, 0x54, 0x4f, 0xa5, 0x0b, 0xac, 0x5e, 0xa7, 0xc3, 0x0a, 0xb0, 0xf1, 0x6a, - 0xc1, 0x3a, 0x0d, 0xf6, 0xbd, 0x0e, 0xdb, 0x5f, 0xab, 0xb9, 0x46, 0xf5, 0xfb, 0x7f, 0xf9, 0xd2, - 0xa9, 0xef, 0xff, 0xe0, 0x25, 0xe3, 0xcf, 0x7f, 0xf0, 0x92, 0xf1, 0x5f, 0x7e, 0xf0, 0x92, 0xb1, - 0x5d, 0xc4, 0x89, 0x7e, 0xeb, 0xff, 0x05, 0x00, 0x00, 0xff, 0xff, 0x43, 0x8c, 0xc3, 0x19, 0xa5, - 0xb7, 0x00, 0x00, + 0xc9, 0x9d, 0xe8, 0xf6, 0x9d, 0xc7, 0x56, 0x3f, 0x09, 0xf9, 0x18, 0xce, 0x0a, 0xc1, 0xcd, 0x84, + 0x58, 0xe0, 0xb7, 0x65, 0x8b, 0x0b, 0xc8, 0xeb, 0xf5, 0xa3, 0xc3, 0xda, 0x79, 0x21, 0xf6, 0xed, + 0x16, 0xc7, 0xc8, 0x6c, 0x75, 0x36, 0x17, 0xb2, 0xce, 0x36, 0xb2, 0x54, 0x77, 0xdc, 0xa7, 0x61, + 0xe8, 0xec, 0x48, 0xed, 0x98, 0xdf, 0x28, 0x29, 0x9d, 0x69, 0xef, 0xf3, 0x72, 0x6b, 0x20, 0x25, + 0x59, 0x84, 0x89, 0x2d, 0xba, 0xad, 0x8e, 0x4f, 0x31, 0x5e, 0xe2, 0xd5, 0x47, 0x74, 0x7b, 0xf0, + 0xe0, 0xa4, 0xe8, 0x88, 0x07, 0x53, 0x6b, 0x81, 0xff, 0xf8, 0x80, 0x99, 0x7a, 0xb4, 0x43, 0x03, + 0xf4, 0xde, 0x1a, 0xc5, 0xe3, 0xaa, 0xe9, 0x44, 0xb3, 0xd4, 0xcb, 0x1b, 0x2f, 0x1f, 0x1d, 0xd6, + 0x5e, 0xec, 0x32, 0xb0, 0xdd, 0x16, 0x70, 0x3b, 0x15, 0xcd, 0xd5, 0xcf, 0x95, 0xfc, 0x34, 0x4c, + 0x5a, 0x7e, 0x2f, 0xf2, 0x3a, 0x3b, 0xcd, 0x28, 0x70, 0x22, 0xba, 0xc3, 0x05, 0x79, 0xe2, 0x26, + 0x96, 0x2a, 0xe5, 0x07, 0xd3, 0x01, 0x07, 0xda, 0xa1, 0x80, 0x6a, 0x92, 0x54, 0x27, 0x20, 0x3f, + 0x05, 0x13, 0xdc, 0x67, 0x26, 0xfe, 0x40, 0x59, 0xf3, 0x96, 0xd6, 0x0b, 0x37, 0x6f, 0xa2, 0x55, + 0x73, 0x81, 0xfb, 0xde, 0x64, 0x7d, 0x20, 0xc5, 0xcd, 0x3c, 0x34, 0xa0, 0x9a, 0xe6, 0x41, 0xbe, + 0x06, 0xe5, 0xfa, 0x0e, 0xed, 0xb0, 0xb1, 0xd9, 0x15, 0xe1, 0x50, 0x32, 0x38, 0x33, 0x86, 0xeb, + 0x44, 0xc2, 0xb9, 0x93, 0x15, 0xb2, 0xb1, 0x56, 0x4e, 0x89, 0x16, 0x4f, 0x59, 0x09, 0x33, 0xe2, + 0x42, 0x05, 0x7b, 0x71, 0x8d, 0x52, 0xb6, 0xbd, 0x8b, 0xa3, 0x92, 0x97, 0xd5, 0x61, 0x11, 0x45, + 0x29, 0xfe, 0xe8, 0x9e, 0xc3, 0xc7, 0xa7, 0xcb, 0x11, 0xb4, 0x4f, 0x68, 0x5c, 0x1b, 0x00, 0xa5, + 0xb8, 0x81, 0x17, 0xe0, 0xfc, 0x80, 0x3a, 0x9b, 0x0f, 0xe1, 0xe2, 0xe0, 0x2f, 0x92, 0xaf, 0xc1, + 0x19, 0x24, 0x9c, 0xf3, 0x3b, 0x1d, 0xda, 0x8a, 0x70, 0x1d, 0x48, 0xeb, 0x3e, 0xdf, 0x78, 0xf5, + 0xe8, 0xb0, 0x76, 0x99, 0xb7, 0xb7, 0x15, 0x23, 0xd8, 0x69, 0x43, 0x3f, 0x93, 0x83, 0xf9, 0x5b, + 0x39, 0x98, 0x16, 0x4b, 0xcb, 0xa2, 0x2d, 0x3f, 0x70, 0x9f, 0x7f, 0x51, 0xbe, 0xa0, 0x89, 0xf2, + 0x57, 0x62, 0x67, 0xb5, 0xac, 0x46, 0x1e, 0x23, 0xc9, 0xff, 0xa9, 0x01, 0x97, 0x8e, 0x23, 0x62, + 0xbd, 0x13, 0x3b, 0x63, 0x96, 0xfb, 0x9c, 0x2e, 0xbb, 0x70, 0x1a, 0x07, 0x14, 0x2f, 0x03, 0xc2, + 0x45, 0x3f, 0x8c, 0xf0, 0x44, 0x36, 0xa7, 0x39, 0x87, 0x34, 0x7c, 0xbf, 0x8d, 0x7b, 0x77, 0xe3, + 0x0d, 0xb6, 0x45, 0xff, 0xc5, 0x61, 0x0d, 0x18, 0x68, 0x15, 0x2f, 0x98, 0x99, 0x1e, 0xc7, 0x67, + 0x19, 0xde, 0x35, 0x84, 0x36, 0x7a, 0xf4, 0xec, 0xd1, 0x83, 0xd0, 0xca, 0x62, 0x8d, 0xa7, 0x6e, + 0xf5, 0x5e, 0xb4, 0xbb, 0x16, 0xd0, 0x07, 0x34, 0xa0, 0x9d, 0x16, 0xfd, 0x9c, 0x9d, 0xba, 0xe9, + 0x8d, 0x1b, 0xca, 0xe4, 0xfc, 0xbf, 0x45, 0x38, 0x93, 0x45, 0xc6, 0xfa, 0x45, 0xb1, 0x72, 0xd2, + 0xe1, 0xdc, 0x7f, 0xcb, 0x80, 0x4a, 0x93, 0xb6, 0xfc, 0x8e, 0x7b, 0xc7, 0x69, 0x45, 0xbe, 0x74, + 0xb3, 0xb1, 0xf9, 0x6e, 0xc5, 0xe0, 0xf6, 0x03, 0x2c, 0xd0, 0x4e, 0x7b, 0xbe, 0x3a, 0x9c, 0x71, + 0xd1, 0xf2, 0xd1, 0x7b, 0x39, 0x62, 0x73, 0x32, 0xf9, 0x04, 0xde, 0x54, 0x69, 0x1f, 0x25, 0x0d, + 0x18, 0x17, 0xcb, 0xd5, 0x57, 0x7d, 0x71, 0x2f, 0x1d, 0x1d, 0xd6, 0xa6, 0x5b, 0xb2, 0x20, 0x7d, + 0xea, 0xa3, 0x93, 0x90, 0x5b, 0x90, 0xdf, 0x98, 0xbd, 0x23, 0xc6, 0x40, 0x7a, 0x2d, 0x6e, 0xcc, + 0xde, 0xc1, 0xf3, 0x0b, 0xa6, 0x13, 0x8e, 0xf7, 0x66, 0x1f, 0xa8, 0xe7, 0xda, 0x1b, 0xb3, 0x77, + 0xc8, 0x2a, 0x4c, 0x59, 0xf4, 0x67, 0x7a, 0x5e, 0x40, 0xc5, 0x02, 0xb8, 0x7f, 0xa7, 0x8e, 0x63, + 0x51, 0xe2, 0x7b, 0x53, 0xc0, 0x0b, 0xa5, 0xbd, 0x66, 0xef, 0x3f, 0x50, 0x43, 0x18, 0xfb, 0x69, + 0xc9, 0x2f, 0xc0, 0xd9, 0x79, 0x2f, 0x14, 0x75, 0xe6, 0x07, 0xca, 0x2e, 0xde, 0x2d, 0x17, 0x07, + 0x2c, 0x87, 0x2f, 0x67, 0x2e, 0x87, 0x97, 0xdd, 0x98, 0x89, 0xcd, 0x4f, 0xab, 0xdd, 0xb4, 0x13, + 0x73, 0xf6, 0x77, 0xc8, 0x27, 0x30, 0x81, 0x27, 0x78, 0x78, 0xc6, 0x8e, 0x7e, 0xed, 0xa3, 0x03, + 0xbe, 0xfc, 0xc5, 0xcc, 0x2f, 0x5f, 0xc4, 0x03, 0x41, 0x1b, 0x4f, 0xea, 0xd1, 0x07, 0x5e, 0xb3, + 0xfb, 0x34, 0xce, 0xe4, 0x43, 0x98, 0x14, 0x8a, 0xc4, 0xea, 0x83, 0xf5, 0x5d, 0x3a, 0xef, 0x1c, + 0x08, 0xc7, 0x12, 0xd4, 0xe9, 0x85, 0xf6, 0x61, 0xfb, 0x0f, 0xec, 0x68, 0x97, 0xda, 0xae, 0xa3, + 0x6d, 0xb9, 0x29, 0x42, 0xf2, 0x73, 0x30, 0xb6, 0xec, 0xe3, 0x65, 0x22, 0x8a, 0x9a, 0x32, 0xf2, + 0xf9, 0x3a, 0x86, 0x30, 0x73, 0x70, 0x4a, 0x31, 0xf8, 0xd1, 0x61, 0xed, 0x9d, 0x27, 0x9d, 0x85, + 0xca, 0x07, 0x2c, 0xf5, 0x6b, 0x64, 0x0e, 0x4a, 0x5b, 0x74, 0x9b, 0xb5, 0x36, 0x1d, 0x7e, 0x27, + 0xc1, 0x5c, 0x5e, 0x3c, 0x12, 0xbf, 0xd4, 0x9b, 0x3a, 0x89, 0x61, 0xfe, 0x89, 0x81, 0x33, 0x90, + 0x5c, 0x47, 0xe7, 0xbe, 0x38, 0x2c, 0x00, 0x4f, 0x0b, 0x9c, 0x6e, 0x57, 0x77, 0xec, 0xe7, 0x28, + 0xe4, 0x0d, 0x28, 0xde, 0x71, 0x5a, 0x34, 0x92, 0x67, 0xd0, 0x88, 0xfc, 0x00, 0x21, 0xea, 0xd1, + 0x02, 0xc7, 0x61, 0x9b, 0xe3, 0x3c, 0x7d, 0xe8, 0xb5, 0x68, 0x3d, 0x8a, 0x68, 0xc8, 0x5b, 0x3b, + 0x57, 0xe7, 0x97, 0xb5, 0x65, 0xbe, 0x39, 0xba, 0x58, 0x6e, 0x3b, 0x09, 0x82, 0xdd, 0x72, 0x54, + 0x5e, 0x99, 0x1c, 0xcc, 0xff, 0x69, 0x24, 0x3d, 0x40, 0x5e, 0x87, 0x82, 0xb5, 0x16, 0xd7, 0x9f, + 0xdf, 0xc3, 0xa6, 0xaa, 0x8f, 0x08, 0xe4, 0x1b, 0x70, 0x56, 0xe1, 0x83, 0x93, 0x83, 0xba, 0xac, + 0x42, 0xbc, 0x31, 0xaf, 0xe1, 0xc5, 0x9b, 0x52, 0x13, 0x87, 0x63, 0xa4, 0x6a, 0x94, 0xcd, 0x03, + 0x35, 0x81, 0xa4, 0x60, 0x9e, 0x76, 0x3c, 0xce, 0x5b, 0x69, 0xac, 0xca, 0xdb, 0x45, 0x84, 0x74, + 0x63, 0xb3, 0x38, 0x7c, 0x58, 0x28, 0x15, 0xaa, 0x23, 0xe6, 0x5f, 0x1b, 0x4a, 0x2e, 0x88, 0xe7, + 0x74, 0xf7, 0xb8, 0xad, 0xed, 0x1e, 0x67, 0x04, 0x69, 0xdc, 0x2a, 0x56, 0x96, 0xb9, 0xe3, 0x4f, + 0xc2, 0xb8, 0x86, 0x84, 0x6e, 0xcc, 0x1b, 0x21, 0x0d, 0xf8, 0x99, 0xef, 0xe7, 0xcb, 0x8d, 0x39, + 0x6e, 0xd7, 0x50, 0xde, 0xa9, 0x7f, 0x69, 0xc0, 0x64, 0x8a, 0x82, 0xf5, 0x06, 0x03, 0xa9, 0xbd, + 0xd1, 0x0b, 0x69, 0x60, 0x21, 0x94, 0x3b, 0x3d, 0x2e, 0xeb, 0x4e, 0x8f, 0x6d, 0x8b, 0xc1, 0xc8, + 0x57, 0x61, 0x64, 0x03, 0x2d, 0x34, 0xdd, 0x6f, 0x26, 0xe6, 0x8f, 0x85, 0x7c, 0x85, 0xf5, 0xd8, + 0xbf, 0xaa, 0x80, 0xc0, 0x32, 0xd2, 0x84, 0xd1, 0xb9, 0x80, 0x62, 0xd6, 0x87, 0xc2, 0xf0, 0x17, + 0x9c, 0x2d, 0x4e, 0x92, 0xbe, 0xe0, 0x14, 0x9c, 0xcc, 0xdf, 0xcc, 0x01, 0x49, 0xda, 0x48, 0x5b, + 0x01, 0x8d, 0xc2, 0xe7, 0x76, 0xd0, 0x3f, 0xd0, 0x06, 0xfd, 0xc5, 0xbe, 0x41, 0xe7, 0xcd, 0x1b, + 0x6a, 0xec, 0xff, 0xd4, 0x80, 0x73, 0xd9, 0x84, 0xe4, 0x15, 0x28, 0xae, 0xae, 0xaf, 0x49, 0xd7, + 0x2b, 0xd1, 0x14, 0xbf, 0x8b, 0x5a, 0xaa, 0x25, 0x8a, 0xc8, 0x9b, 0x50, 0xfc, 0xc8, 0x9a, 0x63, + 0xdb, 0x97, 0x12, 0x7e, 0xf4, 0x33, 0x81, 0xdd, 0xd2, 0x4d, 0x5a, 0x81, 0xa4, 0x8e, 0x6d, 0xfe, + 0x99, 0x8d, 0xed, 0xb7, 0x73, 0x30, 0x59, 0x6f, 0xb5, 0x68, 0x18, 0x32, 0xe5, 0x84, 0x86, 0xd1, + 0x73, 0x3b, 0xb0, 0xd9, 0x4e, 0x55, 0x5a, 0xdb, 0x86, 0x1a, 0xd5, 0x3f, 0x33, 0xe0, 0xac, 0xa4, + 0x7a, 0xe8, 0xd1, 0x47, 0xeb, 0xbb, 0x01, 0x0d, 0x77, 0xfd, 0xb6, 0x3b, 0x6c, 0x20, 0x1d, 0xee, + 0xd2, 0x5e, 0x3b, 0xa2, 0x81, 0x7a, 0x01, 0xf0, 0x00, 0x21, 0xda, 0x2e, 0x8d, 0x10, 0x32, 0x03, + 0xa3, 0xf5, 0x6e, 0x37, 0xf0, 0x1f, 0xf2, 0x65, 0x3f, 0x2e, 0xee, 0x7b, 0x39, 0x48, 0xbb, 0x1f, + 0xe6, 0x20, 0x56, 0x8d, 0x79, 0xda, 0xe1, 0x1e, 0xe3, 0xe3, 0xbc, 0x1a, 0x2e, 0xed, 0xa8, 0xda, + 0x12, 0x96, 0x9b, 0xdf, 0x2a, 0x40, 0x45, 0x6d, 0x08, 0x31, 0xa1, 0xc8, 0xdd, 0x7f, 0x54, 0x37, + 0x0c, 0x07, 0x21, 0x96, 0x28, 0x49, 0xbc, 0xaa, 0x72, 0x27, 0x7a, 0x55, 0x6d, 0xc1, 0xf8, 0x5a, + 0xe0, 0x77, 0xfd, 0x90, 0xba, 0x3c, 0x71, 0x0f, 0x97, 0x5a, 0xa7, 0x63, 0x57, 0x63, 0xde, 0xe7, + 0xac, 0x88, 0xab, 0xe6, 0x5d, 0x81, 0x6d, 0xa7, 0xd3, 0xfa, 0xe8, 0x7c, 0xf8, 0x05, 0x8a, 0x13, + 0x8a, 0x70, 0x8c, 0xf8, 0x02, 0x85, 0x41, 0xf4, 0x0b, 0x14, 0x06, 0x51, 0x97, 0xc5, 0xc8, 0xb3, + 0x5a, 0x16, 0xe4, 0x37, 0x0d, 0x18, 0xab, 0x77, 0x3a, 0xc2, 0xab, 0x4a, 0x46, 0xbf, 0x9f, 0x4d, + 0x2e, 0x51, 0xb8, 0xdb, 0x2d, 0xbf, 0x43, 0xf9, 0xa6, 0xb8, 0x43, 0x79, 0xe7, 0x53, 0xdd, 0xa1, + 0xac, 0x07, 0x8e, 0x17, 0x85, 0x78, 0x59, 0x9e, 0x7c, 0x50, 0x75, 0xad, 0x56, 0xea, 0x41, 0xde, + 0x81, 0x6a, 0x3c, 0x1f, 0x97, 0x3a, 0x2e, 0x7d, 0x4c, 0xb9, 0x13, 0xda, 0x38, 0x0f, 0xd1, 0xd4, + 0x2e, 0x87, 0xd2, 0x88, 0xe6, 0xb7, 0x0d, 0x38, 0xa7, 0x4e, 0x88, 0x66, 0x6f, 0x7b, 0xdf, 0x43, + 0x53, 0x84, 0xdc, 0x80, 0xb2, 0x18, 0xaf, 0x58, 0x91, 0xeb, 0xcf, 0xf6, 0x94, 0xa0, 0x90, 0x05, + 0x36, 0x44, 0x8c, 0x87, 0xb0, 0xdb, 0x4f, 0xa7, 0x96, 0x1b, 0x2b, 0x6a, 0x4c, 0x8b, 0xce, 0xae, + 0x06, 0xf8, 0x5b, 0x1f, 0x3b, 0x06, 0x31, 0xdf, 0x87, 0x29, 0xbd, 0x96, 0x4d, 0x8a, 0x71, 0x81, + 0xb2, 0x69, 0x46, 0x76, 0xd3, 0x64, 0xb9, 0xb9, 0x05, 0xa4, 0x8f, 0x3e, 0xc4, 0x8b, 0x40, 0x1a, + 0xc9, 0x8b, 0x6a, 0x79, 0x9c, 0xd8, 0x87, 0x18, 0xe7, 0x3d, 0x1b, 0x53, 0xbb, 0x1b, 0x49, 0xcd, + 0xbf, 0x29, 0xc3, 0xe9, 0x0c, 0xd1, 0x71, 0xc2, 0xd6, 0x5e, 0xd3, 0x17, 0x4f, 0x39, 0xf6, 0xb8, + 0x90, 0x4b, 0xe6, 0x7d, 0x99, 0xe3, 0xea, 0x98, 0xa5, 0x72, 0x5c, 0xe2, 0xab, 0xcf, 0x62, 0x7b, + 0x57, 0x9d, 0xa2, 0x46, 0x9e, 0x99, 0x53, 0x54, 0x03, 0xc6, 0x45, 0xab, 0xc4, 0x52, 0x2e, 0x26, + 0x26, 0x7a, 0xc0, 0x0b, 0xec, 0xbe, 0x25, 0xad, 0x93, 0x70, 0x1e, 0xa1, 0xdf, 0x7e, 0x48, 0x05, + 0x8f, 0x51, 0x95, 0x07, 0x16, 0x64, 0xf2, 0x50, 0x48, 0xc8, 0x3f, 0x31, 0x80, 0x08, 0x88, 0xba, + 0x9e, 0x4b, 0xc7, 0xad, 0x67, 0xf7, 0xd9, 0xac, 0xe7, 0x17, 0x65, 0x1d, 0xb3, 0xd7, 0x75, 0x46, + 0xb5, 0xc8, 0x3f, 0x32, 0x60, 0x8a, 0x7b, 0xe6, 0xa8, 0x95, 0x2d, 0x1f, 0x57, 0xd9, 0xd6, 0xb3, + 0xa9, 0xec, 0xa5, 0x10, 0x3f, 0x3b, 0xa0, 0xae, 0xfd, 0x95, 0x22, 0x3f, 0x09, 0x10, 0xaf, 0x28, + 0xe9, 0x01, 0x7a, 0x29, 0x43, 0x0a, 0xc4, 0x48, 0x49, 0xe4, 0x6b, 0x14, 0xd3, 0xa9, 0x3e, 0x53, + 0x09, 0x37, 0xf2, 0x0b, 0x70, 0x86, 0xad, 0x97, 0x18, 0x22, 0xfc, 0x08, 0xa7, 0xc7, 0xf0, 0x2b, + 0x5f, 0x1a, 0xbc, 0xb5, 0xdf, 0xc8, 0x22, 0xe3, 0x71, 0x38, 0x49, 0x1e, 0x84, 0x68, 0x5f, 0x35, + 0xf9, 0xb2, 0x28, 0xd0, 0x61, 0x18, 0x6b, 0x1f, 0x4e, 0x57, 0xf0, 0x9b, 0x99, 0xf2, 0xed, 0x82, + 0x5c, 0x0b, 0x5c, 0xbe, 0x85, 0x7a, 0x20, 0x0d, 0x82, 0xc8, 0x47, 0x40, 0x9a, 0xbd, 0x9d, 0x1d, + 0x1a, 0x46, 0xd4, 0xe5, 0x30, 0x1a, 0x84, 0xd3, 0xe3, 0x28, 0x1f, 0xf0, 0xc8, 0x28, 0x94, 0xa5, + 0x76, 0x20, 0x8b, 0xd5, 0x49, 0xd2, 0x4f, 0x7c, 0x71, 0x1b, 0x2e, 0x0c, 0x6c, 0x66, 0x46, 0x90, + 0xcc, 0x8c, 0x1e, 0x24, 0x73, 0x61, 0x90, 0x38, 0x0c, 0xd5, 0x40, 0x99, 0xdf, 0x33, 0x52, 0xf2, + 0x4f, 0x28, 0x2b, 0x3c, 0x1d, 0xe0, 0xa0, 0x0d, 0x22, 0x87, 0x19, 0x12, 0xb8, 0x84, 0xcc, 0x25, + 0x4a, 0x12, 0x93, 0x90, 0xaa, 0x84, 0x45, 0x59, 0xf9, 0x94, 0xa2, 0xd0, 0xfc, 0xe7, 0x06, 0x10, + 0x5e, 0xc3, 0x39, 0xa7, 0xeb, 0x6c, 0x7b, 0x6d, 0x2f, 0xf2, 0x68, 0x48, 0xee, 0x41, 0x55, 0xb0, + 0x70, 0xb6, 0xdb, 0x54, 0xf5, 0x7f, 0x13, 0x17, 0xe4, 0x71, 0x99, 0x9d, 0x56, 0x6b, 0xfa, 0x08, + 0x07, 0x0c, 0x5e, 0xee, 0x29, 0x06, 0xcf, 0xfc, 0xa1, 0x01, 0x17, 0xfa, 0xab, 0x2d, 0xbe, 0x1c, + 0x77, 0x9e, 0x71, 0x42, 0xe7, 0x65, 0xb5, 0x32, 0x87, 0xc7, 0x90, 0xcf, 0xac, 0x95, 0xf9, 0xe4, + 0x54, 0xf3, 0xc9, 0x5b, 0xf9, 0x2b, 0x39, 0xa8, 0xac, 0xb5, 0x7b, 0x3b, 0x5e, 0x67, 0xde, 0x89, + 0x9c, 0xe7, 0xd6, 0xa4, 0x78, 0x5b, 0x33, 0x29, 0x62, 0x8f, 0xb7, 0xb8, 0x61, 0xc3, 0xa5, 0x66, + 0x33, 0x60, 0x32, 0x21, 0xe1, 0xab, 0x74, 0x11, 0x0a, 0xec, 0x87, 0xd0, 0x50, 0x2e, 0xf7, 0x31, + 0x46, 0xac, 0x1b, 0xf1, 0x7f, 0x42, 0xc9, 0xd7, 0x13, 0xe2, 0x21, 0x87, 0x8b, 0x5f, 0xe6, 0xf9, + 0xac, 0x9e, 0x3c, 0xf7, 0xe6, 0x3f, 0x33, 0xa0, 0x9a, 0x6e, 0x09, 0xb9, 0x07, 0xa3, 0x8c, 0x93, + 0x17, 0xe7, 0xc6, 0x7a, 0x75, 0x40, 0x9b, 0x6f, 0x08, 0x34, 0x5e, 0x3d, 0xec, 0x7c, 0xca, 0x21, + 0x96, 0xe4, 0x70, 0xd1, 0x82, 0x8a, 0x8a, 0x95, 0x51, 0xbb, 0x37, 0x74, 0xd1, 0x74, 0x2e, 0xbb, + 0x1f, 0xd4, 0x5a, 0xff, 0xae, 0x56, 0x6b, 0x21, 0x94, 0x86, 0x4d, 0x72, 0x88, 0x21, 0x7f, 0x3c, + 0x95, 0x8b, 0x3a, 0xcf, 0x64, 0xd6, 0x17, 0x3d, 0xe4, 0x8f, 0xc3, 0x98, 0x2d, 0xc2, 0xbf, 0x27, + 0xe6, 0x19, 0xda, 0x22, 0x5d, 0x84, 0xa8, 0xfa, 0x2c, 0xc7, 0x31, 0xff, 0x5e, 0x1e, 0xce, 0x25, + 0xd5, 0xe3, 0x29, 0x1f, 0xd7, 0x9c, 0xc0, 0xd9, 0x0f, 0x4f, 0x58, 0x01, 0x57, 0xfb, 0xaa, 0x86, + 0x21, 0xed, 0xb2, 0x6a, 0x4a, 0x85, 0xcc, 0x54, 0x85, 0xd0, 0x88, 0xe3, 0x15, 0x92, 0xd5, 0x20, + 0xf7, 0x20, 0xdf, 0xa4, 0x91, 0x08, 0x7c, 0xbd, 0xd2, 0xd7, 0xab, 0x6a, 0xbd, 0x6e, 0x34, 0x69, + 0xc4, 0x07, 0x91, 0xc7, 0x0e, 0x50, 0xcd, 0x97, 0x9f, 0xa9, 0xe3, 0x5b, 0x50, 0x5c, 0x78, 0xdc, + 0xa5, 0xad, 0x48, 0xc4, 0xbb, 0x5e, 0x3b, 0x9e, 0x1f, 0xc7, 0x55, 0xa2, 0x6a, 0x29, 0x02, 0xd4, + 0xce, 0xe2, 0x28, 0x17, 0x6f, 0x43, 0x49, 0x7e, 0xfc, 0x89, 0xa2, 0x43, 0xdf, 0x86, 0x31, 0xe5, + 0x23, 0x4f, 0x34, 0xe9, 0xff, 0xc6, 0x80, 0x22, 0x13, 0x7a, 0x9b, 0x6f, 0x3d, 0xa7, 0x12, 0xe9, + 0x96, 0x26, 0x91, 0xa6, 0x94, 0x30, 0x26, 0x5c, 0x97, 0x6f, 0x9d, 0x20, 0x8b, 0x0e, 0x0d, 0x80, + 0x04, 0x99, 0xdc, 0x85, 0x51, 0x7e, 0x91, 0x23, 0xf3, 0xa9, 0xaa, 0x71, 0x51, 0xa2, 0x24, 0xd1, + 0x72, 0xfc, 0x6e, 0x5a, 0x2d, 0x94, 0xd4, 0x64, 0x3e, 0xf1, 0x1d, 0x57, 0x03, 0x71, 0x19, 0x9b, + 0x39, 0xbf, 0xc3, 0xe3, 0x64, 0x42, 0x25, 0xef, 0x58, 0xb6, 0x13, 0x79, 0x5d, 0x1c, 0x6c, 0xe4, + 0x8f, 0x63, 0x72, 0x4e, 0x30, 0xc9, 0x3e, 0xf3, 0xf8, 0xce, 0x18, 0x8f, 0x3c, 0x91, 0x15, 0x7b, + 0x0f, 0x2a, 0x77, 0xfc, 0xe0, 0x91, 0x13, 0xb8, 0x78, 0xc9, 0x8f, 0xcd, 0x2c, 0xa1, 0xeb, 0xfe, + 0xf8, 0x03, 0x0e, 0xb7, 0xd1, 0x3f, 0xe0, 0x47, 0x87, 0xb5, 0x42, 0xc3, 0xf7, 0xdb, 0x96, 0x86, + 0x4e, 0x56, 0x61, 0xfc, 0xbe, 0xf3, 0x58, 0xdc, 0xd7, 0xad, 0xaf, 0x2f, 0x0b, 0xdf, 0xa1, 0x6b, + 0x47, 0x87, 0xb5, 0x0b, 0xfb, 0xce, 0xe3, 0xf8, 0x9e, 0x6f, 0xb0, 0x7b, 0xbb, 0x4e, 0x4f, 0x3c, + 0x98, 0x58, 0xf3, 0x83, 0x48, 0x7c, 0x84, 0xe9, 0xb4, 0xf9, 0x01, 0xd7, 0x6d, 0x33, 0x99, 0xd7, + 0x6d, 0x17, 0x98, 0x22, 0x6f, 0x3f, 0x88, 0xc9, 0xb5, 0x70, 0x49, 0x8d, 0x31, 0x79, 0x0f, 0xa6, + 0xe6, 0x68, 0x10, 0x79, 0x0f, 0xbc, 0x96, 0x13, 0xd1, 0x3b, 0x7e, 0xb0, 0xef, 0x44, 0xe2, 0x40, + 0x05, 0x0d, 0xea, 0x16, 0xe5, 0x9c, 0xf6, 0x9d, 0xc8, 0xea, 0xc7, 0x24, 0xdf, 0xc8, 0xf2, 0xc6, + 0x1a, 0xc1, 0xe6, 0xbf, 0xc9, 0x94, 0x82, 0x0c, 0x6f, 0xac, 0x01, 0x5d, 0x90, 0xe1, 0x97, 0xb5, + 0x73, 0xdc, 0xb5, 0x67, 0xa9, 0x71, 0x53, 0x5c, 0xc1, 0x9e, 0x7c, 0xad, 0x19, 0x8f, 0xdb, 0x80, + 0xeb, 0xcd, 0x59, 0xc8, 0x37, 0xd6, 0xee, 0xe0, 0x11, 0x89, 0xb8, 0x66, 0xa4, 0x9d, 0x5d, 0xa7, + 0xd3, 0x42, 0x5d, 0x46, 0xf8, 0x2e, 0xa8, 0x02, 0xaf, 0xb1, 0x76, 0x87, 0x38, 0x70, 0x7a, 0x8d, + 0x06, 0xfb, 0x5e, 0xf4, 0xb5, 0x9b, 0x37, 0x95, 0x81, 0x2a, 0x61, 0xd5, 0x66, 0x44, 0xd5, 0x6a, + 0x5d, 0x44, 0xb1, 0x1f, 0xdf, 0xbc, 0x99, 0x39, 0x1c, 0x71, 0xc5, 0xb2, 0x78, 0x91, 0x05, 0x98, + 0xb8, 0xef, 0x3c, 0x4e, 0x5c, 0x4e, 0x42, 0xe1, 0x0f, 0xfa, 0xa2, 0x9c, 0x58, 0x89, 0xbb, 0x8a, + 0xba, 0xde, 0x52, 0x44, 0xe4, 0x5d, 0x18, 0x4b, 0xa6, 0x57, 0x88, 0x57, 0x91, 0x79, 0xee, 0xe6, + 0xaa, 0x4c, 0x4e, 0xed, 0x2c, 0x49, 0x41, 0x27, 0x1b, 0xb1, 0x89, 0xce, 0x15, 0x52, 0x91, 0x20, + 0x67, 0x46, 0x35, 0xd1, 0x1d, 0x2c, 0xd1, 0x9a, 0x35, 0x19, 0xab, 0xe8, 0xdc, 0x07, 0xc7, 0xd2, + 0xb9, 0x28, 0x96, 0xff, 0x5a, 0xe0, 0xef, 0x77, 0x23, 0xf4, 0x02, 0x4d, 0x59, 0xfe, 0x5d, 0x2c, + 0xc9, 0xb0, 0xfc, 0x39, 0x49, 0xf6, 0x3d, 0xfb, 0xf8, 0x53, 0xdc, 0xb3, 0x53, 0x28, 0x2c, 0xfb, + 0xad, 0x3d, 0x74, 0xfb, 0x2c, 0x37, 0x3e, 0x62, 0xf2, 0xa3, 0xed, 0xb7, 0xf6, 0x9e, 0xdd, 0xfd, + 0x30, 0xb2, 0x27, 0x2b, 0xac, 0xed, 0x6c, 0x5a, 0x89, 0x4f, 0x4f, 0x4f, 0x6a, 0x37, 0x6d, 0x5a, + 0x19, 0x57, 0x54, 0xf8, 0x2c, 0x94, 0x0d, 0xb1, 0x74, 0x72, 0x42, 0xa1, 0x3a, 0x4f, 0xc3, 0xbd, + 0xc8, 0xef, 0xce, 0xb5, 0xbd, 0xee, 0xb6, 0xef, 0x04, 0xee, 0x74, 0x75, 0x80, 0xc0, 0x78, 0x3d, + 0x53, 0x60, 0x4c, 0xb9, 0x9c, 0xde, 0x6e, 0x49, 0x06, 0x56, 0x1f, 0x4b, 0xf2, 0x0d, 0x98, 0x60, + 0xab, 0x65, 0xe1, 0x71, 0x44, 0x3b, 0x7c, 0x2a, 0x4d, 0xe1, 0x56, 0x7f, 0x46, 0x09, 0x1c, 0x8d, + 0x0b, 0xf9, 0x24, 0x45, 0xe9, 0x41, 0x63, 0x02, 0x75, 0x92, 0xea, 0xac, 0xcc, 0x9f, 0x4c, 0xf5, + 0x09, 0x59, 0x82, 0x51, 0x51, 0x03, 0xb1, 0xeb, 0xf4, 0xb7, 0xe5, 0xc5, 0xcc, 0xb6, 0x8c, 0x8a, + 0xb6, 0x58, 0x92, 0xde, 0xfc, 0xd7, 0x06, 0x8c, 0x6b, 0x9f, 0x23, 0xb7, 0x15, 0xf7, 0x95, 0xc4, + 0x95, 0x50, 0xc3, 0xc9, 0x7c, 0xa7, 0xe0, 0xb6, 0xf0, 0x59, 0xca, 0x0d, 0xa6, 0xcb, 0x4c, 0x21, + 0x27, 0x13, 0x39, 0xe4, 0x8f, 0x4f, 0xe4, 0x50, 0x18, 0x90, 0xc8, 0xe1, 0x3b, 0xe3, 0x30, 0xa1, + 0x6f, 0x70, 0x4c, 0xe3, 0x5c, 0xf6, 0x77, 0xbc, 0x8e, 0xb4, 0x5b, 0x79, 0x6a, 0x12, 0x84, 0x68, + 0x49, 0xff, 0x11, 0x42, 0x5e, 0x03, 0x88, 0xaf, 0x66, 0xa5, 0x69, 0x2a, 0x9e, 0x28, 0x50, 0x0a, + 0xc8, 0x4f, 0x01, 0xac, 0xf8, 0x2e, 0x8d, 0xb3, 0xdb, 0x1c, 0x73, 0xa0, 0xf4, 0xba, 0x38, 0x50, + 0x12, 0xcf, 0x0a, 0x1c, 0x1d, 0xd6, 0xce, 0x76, 0x7c, 0x97, 0xf6, 0xa7, 0xb5, 0x51, 0x38, 0x92, + 0xaf, 0xc0, 0x88, 0xd5, 0x6b, 0x53, 0x99, 0x6c, 0x65, 0x4c, 0x4e, 0xf8, 0x5e, 0x5b, 0x49, 0x37, + 0x1a, 0xf4, 0xd2, 0xf7, 0x08, 0x0c, 0x40, 0x3e, 0x00, 0xb8, 0xd7, 0xdb, 0xa6, 0x77, 0x03, 0xbf, + 0xd7, 0x95, 0xd1, 0xdc, 0x68, 0xc6, 0xee, 0xc5, 0xf9, 0xbc, 0xec, 0x1d, 0x2c, 0x54, 0x3f, 0x9e, + 0x90, 0x90, 0x55, 0x18, 0x15, 0xe2, 0x43, 0x9c, 0xd3, 0xbf, 0x94, 0x75, 0x42, 0xa4, 0xe8, 0x10, + 0x22, 0xfb, 0x09, 0x82, 0xf5, 0x43, 0x1b, 0x6e, 0x86, 0xbf, 0x0b, 0x65, 0xc6, 0x9e, 0x99, 0xda, + 0xa1, 0xd8, 0x3b, 0xd0, 0x27, 0x54, 0xa9, 0x10, 0x33, 0xcb, 0xb5, 0xc4, 0x6d, 0x31, 0x01, 0xf9, + 0x06, 0xe6, 0x2b, 0x12, 0x5d, 0x7d, 0xec, 0x41, 0xe3, 0x95, 0xbe, 0xae, 0x3e, 0xe3, 0x74, 0xbb, + 0x19, 0x59, 0xe1, 0x62, 0x7e, 0x64, 0x27, 0x8e, 0x9b, 0x8a, 0x73, 0x4e, 0x1f, 0xf3, 0x81, 0xeb, + 0x7d, 0x1f, 0x98, 0x96, 0xa1, 0x40, 0xfd, 0x59, 0x8a, 0x34, 0xbe, 0xa4, 0x0b, 0xd5, 0x24, 0x9f, + 0x9a, 0xf8, 0x16, 0x1c, 0xf7, 0xad, 0x37, 0xfb, 0xbe, 0xa5, 0x0e, 0x60, 0xdf, 0xe7, 0xfa, 0xb8, + 0x13, 0x37, 0xc9, 0x0f, 0x2c, 0xbe, 0x37, 0x76, 0xdc, 0xf7, 0x5e, 0xeb, 0xfb, 0xde, 0x69, 0x77, + 0xbb, 0xff, 0x3b, 0x29, 0x9e, 0xe4, 0x5d, 0x18, 0x97, 0x10, 0x5c, 0x1f, 0x78, 0xc0, 0x27, 0xf4, + 0x7b, 0x77, 0x1b, 0x9d, 0xc6, 0xf4, 0x14, 0x3d, 0x2a, 0xb2, 0x4a, 0xcd, 0x67, 0xc7, 0xb8, 0x46, + 0x9d, 0x9e, 0x15, 0x3a, 0x32, 0xf9, 0x3a, 0x8c, 0x2d, 0xed, 0xb3, 0x86, 0xf8, 0x1d, 0x27, 0xa2, + 0xb8, 0x19, 0x25, 0x87, 0xa6, 0x4a, 0x89, 0x32, 0x55, 0x79, 0xb2, 0xcf, 0xa4, 0x48, 0xdd, 0xcc, + 0x15, 0x0a, 0xd6, 0x79, 0xfc, 0xf8, 0x45, 0xcc, 0xe1, 0x50, 0x6c, 0x3d, 0x2f, 0x66, 0x1c, 0x5c, + 0x2a, 0xec, 0x51, 0x96, 0xf3, 0x53, 0x1d, 0x5b, 0x2c, 0x08, 0xad, 0xf3, 0x74, 0x9e, 0xe4, 0x3d, + 0x18, 0x13, 0x51, 0xaa, 0x75, 0x6b, 0x25, 0x9c, 0xae, 0x62, 0xe3, 0xd1, 0xeb, 0x57, 0x06, 0xb4, + 0xda, 0x4e, 0x90, 0xba, 0xbd, 0x4a, 0xf0, 0xc9, 0xd7, 0xe0, 0xcc, 0x96, 0xd7, 0x71, 0xfd, 0x47, + 0xa1, 0x10, 0xe0, 0x42, 0xd0, 0x4d, 0x25, 0x3e, 0x3a, 0x8f, 0x78, 0xb9, 0x2d, 0xb7, 0xad, 0x3e, + 0xc1, 0x97, 0xc9, 0x81, 0xfc, 0x7c, 0x1f, 0x67, 0x3e, 0x83, 0xc8, 0x71, 0x33, 0x68, 0xb6, 0x6f, + 0x06, 0xf5, 0x7f, 0x3e, 0x3d, 0x9d, 0x32, 0x3f, 0x43, 0x7c, 0x20, 0xba, 0xce, 0xf1, 0xa1, 0xef, + 0x75, 0xa6, 0x4f, 0x6b, 0x2f, 0xba, 0xc4, 0x2e, 0xb3, 0x88, 0xb7, 0xe6, 0xb7, 0xbd, 0xd6, 0x41, + 0xc3, 0x3c, 0x3a, 0xac, 0xbd, 0x94, 0xd6, 0x66, 0x3e, 0xf1, 0xb5, 0xc3, 0x85, 0x0c, 0xd6, 0xe4, + 0xeb, 0x50, 0x61, 0x7f, 0x63, 0xd5, 0xef, 0x8c, 0x76, 0xd5, 0xa5, 0x60, 0x8a, 0xef, 0xe0, 0x18, + 0x61, 0x18, 0x6d, 0x86, 0x56, 0xa8, 0xb1, 0x32, 0x7f, 0x68, 0xc0, 0x99, 0xac, 0xba, 0x9e, 0x90, + 0xb3, 0xc8, 0x4c, 0x5d, 0x7a, 0xe3, 0xb9, 0x04, 0xbf, 0xf4, 0x8e, 0xaf, 0xba, 0x6b, 0x30, 0xc2, + 0x6c, 0x65, 0xe9, 0x94, 0x85, 0xdb, 0x21, 0xb3, 0xa7, 0x43, 0x8b, 0xc3, 0x19, 0x02, 0xf7, 0xdf, + 0x66, 0xfb, 0xe5, 0x08, 0x47, 0x40, 0x77, 0x6d, 0x8b, 0xc3, 0x19, 0x02, 0xdb, 0x76, 0xe5, 0x36, + 0x81, 0x08, 0x6c, 0x37, 0x0e, 0x2d, 0x0e, 0x27, 0x57, 0x60, 0x74, 0xb5, 0xb3, 0x4c, 0x9d, 0x87, + 0x54, 0xdc, 0x38, 0xe1, 0x39, 0x8a, 0xdf, 0xb1, 0xdb, 0x0c, 0x66, 0xc9, 0x42, 0xf3, 0xbb, 0x06, + 0x4c, 0xf5, 0x75, 0xd3, 0xc9, 0x69, 0x99, 0x8e, 0xbf, 0xde, 0x1b, 0xa6, 0x7d, 0xbc, 0xfa, 0x85, + 0xec, 0xea, 0x9b, 0x7f, 0x95, 0x87, 0xf3, 0x03, 0x76, 0xad, 0xe4, 0x6a, 0xde, 0x38, 0xf1, 0x6a, + 0xfe, 0x9b, 0x6c, 0x97, 0x70, 0xbc, 0xfd, 0x70, 0xdd, 0x4f, 0x6a, 0x9c, 0xdc, 0x62, 0x60, 0x99, + 0xcc, 0x7b, 0x22, 0x73, 0x74, 0x5c, 0x68, 0x21, 0x85, 0x1d, 0xf9, 0x7d, 0x67, 0xc6, 0x3a, 0xb3, + 0xbe, 0xcb, 0xf1, 0xfc, 0x8f, 0xc9, 0xe5, 0xb8, 0x7e, 0x25, 0x55, 0x78, 0xa6, 0x57, 0x52, 0xd9, + 0x87, 0xe4, 0x23, 0x4f, 0x73, 0x15, 0xf0, 0x6f, 0x53, 0xd7, 0xf1, 0x3f, 0x8e, 0x43, 0x7d, 0x0d, + 0x46, 0xb6, 0x76, 0x69, 0x20, 0xf5, 0x5b, 0xac, 0xc8, 0x23, 0x06, 0x50, 0x2b, 0x82, 0x18, 0xe6, + 0xcf, 0x41, 0x45, 0xfd, 0x18, 0xae, 0x65, 0xf6, 0x5b, 0x2c, 0x26, 0xbe, 0x96, 0x19, 0xc0, 0xe2, + 0xf0, 0x13, 0xb3, 0x9c, 0x25, 0xbd, 0x90, 0x3f, 0xa9, 0x17, 0xcc, 0x7f, 0x63, 0x40, 0x01, 0x93, + 0x3c, 0xbc, 0x05, 0x65, 0x79, 0x54, 0xaa, 0x26, 0x3e, 0x38, 0x2d, 0x4f, 0x52, 0x43, 0xdd, 0x9f, + 0x41, 0x00, 0xd9, 0xa7, 0x36, 0x69, 0xb0, 0xad, 0xb9, 0xbd, 0x3c, 0x64, 0x00, 0xf5, 0x53, 0x88, + 0xf1, 0x04, 0x5d, 0x82, 0xae, 0x3d, 0xc2, 0xbe, 0xe7, 0x0b, 0x9e, 0xbb, 0xf6, 0xf4, 0xd9, 0xf5, + 0x12, 0xcb, 0xfc, 0x6d, 0x03, 0xce, 0x66, 0xea, 0x01, 0xec, 0xab, 0x5c, 0xe1, 0x50, 0x66, 0x44, + 0x5a, 0xdb, 0xe0, 0x18, 0x4f, 0xe2, 0xc2, 0xf3, 0x04, 0xc3, 0xfb, 0x32, 0x94, 0x63, 0xfb, 0x8c, + 0x9c, 0x91, 0x43, 0x87, 0xe7, 0x69, 0xd2, 0x98, 0xf9, 0x1b, 0x03, 0x8a, 0xac, 0x0a, 0xcf, 0x6d, + 0x74, 0x45, 0xf6, 0xe9, 0x2a, 0x6b, 0xd2, 0x50, 0x31, 0x15, 0x7f, 0x50, 0x04, 0x48, 0x90, 0xc9, + 0x36, 0x4c, 0xac, 0x2e, 0xcd, 0xcf, 0x2d, 0xb9, 0xb4, 0x13, 0xe1, 0x2d, 0x5f, 0x2a, 0x73, 0x02, + 0x33, 0x2c, 0x83, 0x8e, 0xd3, 0x16, 0x08, 0x07, 0xc9, 0xf2, 0xf4, 0x3d, 0xb7, 0x65, 0x7b, 0x31, + 0x9d, 0xaa, 0x90, 0xe9, 0x1c, 0xd9, 0x37, 0x9a, 0xf5, 0xfb, 0xcb, 0xca, 0x37, 0x72, 0x43, 0x7e, + 0x23, 0x74, 0xf6, 0xdb, 0x03, 0xbe, 0xa1, 0x73, 0x24, 0xbb, 0x50, 0xbd, 0x8b, 0xb2, 0x5b, 0xf9, + 0x4a, 0xfe, 0xf8, 0xaf, 0xbc, 0x22, 0xbe, 0xf2, 0x02, 0x17, 0xfa, 0xd9, 0xdf, 0xe9, 0xe3, 0x9a, + 0xcc, 0xdc, 0xc2, 0x89, 0x33, 0xf7, 0x6f, 0x1b, 0x50, 0xe4, 0x9b, 0x43, 0xfc, 0xa8, 0x49, 0xe6, + 0xf6, 0xb3, 0xf5, 0x6c, 0xb6, 0x9f, 0x6a, 0x84, 0xff, 0xa9, 0x06, 0x38, 0x2f, 0x23, 0xf3, 0xa9, + 0x17, 0x52, 0xe4, 0x11, 0x3a, 0x2a, 0xa6, 0xbc, 0x24, 0x71, 0x84, 0xe2, 0x8f, 0xa3, 0xa8, 0x5c, + 0x38, 0x86, 0xfa, 0x5e, 0xe3, 0xe8, 0x53, 0xbe, 0xd7, 0xb8, 0x0c, 0x65, 0xe1, 0xd9, 0xd3, 0x38, + 0x10, 0xe6, 0xa7, 0x3c, 0x60, 0x89, 0xe1, 0x4a, 0x16, 0x72, 0x0e, 0xb2, 0xb7, 0xb5, 0x74, 0x80, + 0x31, 0x22, 0x59, 0x85, 0x72, 0x12, 0x1a, 0xa2, 0x47, 0x35, 0xc6, 0x70, 0xe1, 0xfa, 0xca, 0xc3, + 0x0b, 0x33, 0x23, 0x41, 0x12, 0x1e, 0xe6, 0xb7, 0x0c, 0xa8, 0xa6, 0xe7, 0x0b, 0x79, 0x17, 0xc6, + 0xe2, 0xe8, 0x9c, 0xd8, 0xbf, 0x00, 0x0f, 0x32, 0x93, 0x70, 0x1e, 0xcd, 0xd3, 0x40, 0x45, 0x27, + 0xb3, 0x50, 0x62, 0xcb, 0x4e, 0xc9, 0x07, 0x8d, 0xf2, 0xa4, 0x27, 0x60, 0xea, 0xbd, 0x9e, 0xc4, + 0x53, 0x56, 0xed, 0xbf, 0xcf, 0xc3, 0x98, 0x32, 0x58, 0xe4, 0x1a, 0x94, 0x96, 0xc2, 0x65, 0xbf, + 0xb5, 0x47, 0x5d, 0x71, 0x5d, 0x80, 0xcf, 0x71, 0x7a, 0xa1, 0xdd, 0x46, 0xa0, 0x15, 0x17, 0x93, + 0x06, 0x8c, 0xf3, 0xff, 0x64, 0x64, 0x6d, 0x2e, 0x39, 0xea, 0xe4, 0xc8, 0x32, 0xa6, 0x56, 0xdd, + 0x61, 0x35, 0x12, 0xf2, 0x31, 0x00, 0x07, 0xb0, 0xf1, 0x1d, 0xc2, 0xb1, 0x57, 0x2e, 0xe0, 0xb3, + 0xe2, 0x03, 0x91, 0xa7, 0xb6, 0x10, 0xa7, 0x82, 0xc2, 0x10, 0x9f, 0x02, 0xf4, 0x5b, 0x7b, 0xc3, + 0x3f, 0x06, 0x9a, 0x3c, 0x05, 0xe8, 0xb7, 0xf6, 0xec, 0x6c, 0x2f, 0x2f, 0x95, 0x25, 0xf9, 0xb6, + 0x01, 0x17, 0x2d, 0xda, 0xf2, 0x1f, 0xd2, 0xe0, 0xa0, 0x1e, 0x21, 0x96, 0xfa, 0xc5, 0x93, 0x5d, + 0xca, 0x6e, 0x89, 0x2f, 0xbe, 0x1e, 0x08, 0x2e, 0x18, 0x8e, 0xb2, 0xdf, 0x8d, 0xec, 0x63, 0xaa, + 0x70, 0xcc, 0x27, 0xcd, 0xff, 0x68, 0x28, 0x4b, 0x80, 0xac, 0x40, 0x39, 0x9e, 0x2c, 0xe2, 0xc0, + 0x31, 0x56, 0x8e, 0x24, 0xdc, 0xa2, 0x0f, 0x1a, 0x2f, 0x88, 0x93, 0xfd, 0xd3, 0xf1, 0x94, 0xd3, + 0x56, 0x84, 0x04, 0x92, 0xaf, 0x42, 0x01, 0x87, 0xea, 0xe4, 0x04, 0x62, 0x72, 0xab, 0x29, 0xb0, + 0x31, 0xc2, 0x5a, 0x23, 0x25, 0xf9, 0xa2, 0xf0, 0xf2, 0xc8, 0x6b, 0xa9, 0x79, 0x19, 0x88, 0xd5, + 0x23, 0xde, 0x63, 0x12, 0xc7, 0x42, 0x65, 0xb6, 0xfe, 0x9d, 0x1c, 0x54, 0xd3, 0x0b, 0x8f, 0x7c, + 0x00, 0x95, 0x35, 0x27, 0x0c, 0x1f, 0xf9, 0x81, 0xbb, 0xe8, 0x88, 0x68, 0xe0, 0x8a, 0x88, 0xc6, + 0x15, 0x70, 0x7b, 0xd7, 0xd1, 0xd2, 0xc2, 0x69, 0x04, 0x6c, 0x43, 0x5e, 0x17, 0xfe, 0xea, 0xca, + 0x02, 0x8a, 0xfc, 0xa8, 0x9b, 0x4a, 0xf7, 0x29, 0xd1, 0xc8, 0x5b, 0x90, 0xe7, 0xb1, 0x6f, 0x6a, + 0xae, 0xa8, 0xfb, 0x77, 0xea, 0x3c, 0x5c, 0x88, 0x5f, 0x26, 0xeb, 0xa7, 0xf2, 0x0c, 0x9f, 0x2c, + 0x2b, 0x91, 0x53, 0x45, 0x2d, 0x67, 0x8e, 0x04, 0xc7, 0x8d, 0x3b, 0x39, 0x84, 0xea, 0xc3, 0x42, + 0x29, 0x5f, 0x2d, 0x88, 0xf8, 0x9c, 0x3f, 0xca, 0x43, 0x39, 0xfe, 0x3e, 0x21, 0x80, 0xfa, 0x86, + 0xb8, 0x15, 0xc6, 0xff, 0xc9, 0x05, 0x28, 0x49, 0x15, 0x43, 0xdc, 0x0c, 0x8f, 0x86, 0x42, 0xbd, + 0x98, 0x06, 0xa9, 0x4b, 0x70, 0xf5, 0xc2, 0x92, 0x3f, 0xc9, 0x4d, 0x88, 0x15, 0x85, 0x41, 0x1a, + 0x45, 0x81, 0x0d, 0x98, 0x15, 0xa3, 0x91, 0x09, 0xc8, 0x79, 0xdc, 0x17, 0xb9, 0x6c, 0xe5, 0x3c, + 0x97, 0x7c, 0x00, 0x25, 0xc7, 0x75, 0xa9, 0x6b, 0x3b, 0xd1, 0x10, 0x0f, 0xb3, 0x96, 0x18, 0x37, + 0x2e, 0xd1, 0x91, 0xaa, 0x1e, 0x91, 0x3a, 0x94, 0xf1, 0x5d, 0xce, 0x5e, 0x38, 0xd4, 0x63, 0x9e, + 0x09, 0x87, 0x12, 0x23, 0xdb, 0x08, 0xa9, 0x4b, 0x5e, 0x87, 0x02, 0x1b, 0x4d, 0xb1, 0x1f, 0xc4, + 0x19, 0x00, 0x57, 0xd7, 0xd7, 0x78, 0x87, 0x2d, 0x9e, 0xb2, 0x10, 0x81, 0xbc, 0x0a, 0xf9, 0xde, + 0xec, 0x03, 0x21, 0xe9, 0xab, 0x49, 0x58, 0x64, 0x8c, 0xc6, 0x8a, 0xc9, 0x2d, 0x28, 0x3d, 0xd2, + 0x03, 0xe0, 0xce, 0xa6, 0x86, 0x31, 0xc6, 0x8f, 0x11, 0x1b, 0x25, 0x28, 0xf2, 0x70, 0x33, 0xf3, + 0x25, 0x80, 0xe4, 0xd3, 0xfd, 0x17, 0xf8, 0xe6, 0xc7, 0x50, 0x8e, 0x3f, 0x49, 0x5e, 0x04, 0xd8, + 0xa3, 0x07, 0xf6, 0xae, 0xd3, 0x71, 0xc5, 0x7b, 0x34, 0x15, 0xab, 0xbc, 0x47, 0x0f, 0x16, 0x11, + 0x40, 0xce, 0xc3, 0x68, 0x97, 0x8d, 0xaa, 0x4c, 0x56, 0x6b, 0x15, 0xbb, 0xbd, 0x6d, 0x36, 0x43, + 0xa7, 0x61, 0x14, 0x8f, 0x0e, 0xc4, 0x42, 0x1b, 0xb7, 0xe4, 0x4f, 0xf3, 0xf7, 0x72, 0x98, 0xc6, + 0x40, 0xa9, 0x27, 0x79, 0x05, 0xc6, 0x5b, 0x01, 0xc5, 0xed, 0xc8, 0x61, 0x6a, 0x91, 0xf8, 0x4e, + 0x25, 0x01, 0x2e, 0xb9, 0xe4, 0x0a, 0x4c, 0x26, 0xd9, 0x73, 0xed, 0xd6, 0xb6, 0x08, 0x7f, 0xad, + 0x58, 0xe3, 0x5d, 0x99, 0x3e, 0x77, 0x6e, 0x1b, 0x7d, 0xe8, 0xab, 0x6a, 0xa8, 0x59, 0x24, 0x33, + 0xe1, 0x96, 0xad, 0x49, 0x05, 0x8e, 0xd7, 0x0e, 0xe7, 0xa0, 0xe8, 0x38, 0x3b, 0x3d, 0x8f, 0xfb, + 0xf3, 0x56, 0x2c, 0xf1, 0x8b, 0x7c, 0x01, 0xa6, 0x42, 0x6f, 0xa7, 0xe3, 0x44, 0xbd, 0x40, 0xe4, + 0x91, 0xa0, 0x01, 0x4e, 0xa9, 0x71, 0xab, 0x1a, 0x17, 0xcc, 0x71, 0x38, 0x79, 0x13, 0x88, 0xfa, + 0x3d, 0x7f, 0xfb, 0x13, 0xda, 0xe2, 0x53, 0xad, 0x62, 0x4d, 0x29, 0x25, 0xab, 0x58, 0x40, 0x5e, + 0x86, 0x4a, 0x40, 0x43, 0x54, 0xc9, 0xb0, 0xdb, 0x30, 0x3b, 0x8e, 0x35, 0x26, 0x61, 0xf7, 0xe8, + 0x81, 0xd9, 0x80, 0xa9, 0xbe, 0xf5, 0x48, 0xde, 0xe4, 0xda, 0xbd, 0xd8, 0x9f, 0x2b, 0xdc, 0x98, + 0x61, 0x42, 0x2a, 0xf5, 0x94, 0x33, 0x47, 0x32, 0x3b, 0x50, 0x51, 0xe5, 0xeb, 0x09, 0x81, 0xc5, + 0xe7, 0xd0, 0xb1, 0x90, 0x0b, 0x9f, 0xe2, 0xd1, 0x61, 0x2d, 0xe7, 0xb9, 0xe8, 0x4e, 0x78, 0x15, + 0x4a, 0x52, 0x4b, 0x50, 0xdf, 0x63, 0x11, 0x0a, 0xe5, 0x81, 0x15, 0x97, 0x9a, 0xaf, 0xc3, 0xa8, + 0x10, 0xa1, 0xc7, 0x1f, 0xe3, 0x98, 0xbf, 0x94, 0x83, 0x49, 0x8b, 0xb2, 0x05, 0x2e, 0x5e, 0x3a, + 0xf9, 0x9c, 0xe5, 0x11, 0xd6, 0xda, 0x76, 0x4c, 0x1c, 0xff, 0xf7, 0x0c, 0x38, 0x9d, 0x81, 0xfb, + 0xa9, 0x12, 0x8f, 0xdd, 0x86, 0xf2, 0xbc, 0xe7, 0xb4, 0xeb, 0xae, 0x1b, 0x3b, 0x48, 0xa2, 0x36, + 0xe8, 0xb2, 0xe5, 0xe4, 0x30, 0xa8, 0xba, 0x99, 0xc6, 0xa8, 0xe4, 0xba, 0x98, 0x14, 0x49, 0x6a, + 0x44, 0x99, 0xa9, 0x18, 0x78, 0x9d, 0x92, 0x3c, 0xc5, 0x18, 0x86, 0xc6, 0x81, 0xc9, 0x1d, 0xf8, + 0x73, 0x3b, 0x74, 0xd9, 0x61, 0x68, 0xe9, 0xe6, 0x0d, 0x65, 0x76, 0x7e, 0x2b, 0x07, 0xe7, 0xb2, + 0x09, 0x3f, 0x6d, 0x0e, 0x39, 0x4c, 0xa2, 0xa0, 0x24, 0x83, 0xc6, 0x1c, 0x72, 0x3c, 0xe3, 0x02, + 0xe2, 0x27, 0x08, 0xe4, 0x01, 0x8c, 0x2f, 0x3b, 0x61, 0xb4, 0x48, 0x9d, 0x20, 0xda, 0xa6, 0x4e, + 0x34, 0x84, 0x06, 0x1b, 0x3f, 0x98, 0x8c, 0x9b, 0xda, 0xae, 0xa4, 0x4c, 0x3f, 0x98, 0xac, 0xb1, + 0x8d, 0x27, 0x4a, 0x61, 0x88, 0x89, 0xf2, 0x33, 0x30, 0xd9, 0xa4, 0xfb, 0x4e, 0x77, 0xd7, 0x0f, + 0xa8, 0x38, 0x79, 0xbe, 0x01, 0xe3, 0x31, 0x28, 0x73, 0xb6, 0xe8, 0xc5, 0x1a, 0xbe, 0xd2, 0x11, + 0x89, 0x28, 0xd1, 0x8b, 0xcd, 0xdf, 0xc9, 0xc1, 0xf9, 0x7a, 0x4b, 0x1c, 0xd3, 0x8b, 0x02, 0x79, + 0x9b, 0xf8, 0x19, 0x7f, 0x9b, 0xcc, 0x40, 0xf9, 0xbe, 0xf3, 0x18, 0x5f, 0xfe, 0x0f, 0x45, 0x26, + 0x22, 0xae, 0x7e, 0x39, 0x8f, 0xed, 0xf8, 0xd8, 0xcb, 0x4a, 0x70, 0x54, 0x63, 0xb3, 0xf0, 0x94, + 0xc6, 0xa6, 0x09, 0xc5, 0x45, 0xbf, 0xed, 0x8a, 0xcd, 0x49, 0x9c, 0xfa, 0xef, 0x22, 0xc4, 0x12, + 0x25, 0xe6, 0x0f, 0x0d, 0x98, 0x88, 0x6b, 0x8c, 0x55, 0xf8, 0xcc, 0xbb, 0xe4, 0x0a, 0x8c, 0xe2, + 0x87, 0xe2, 0x87, 0x7f, 0x70, 0xd3, 0x68, 0x33, 0x90, 0xed, 0xb9, 0x96, 0x2c, 0x54, 0x7b, 0x62, + 0xe4, 0xe9, 0x7a, 0xc2, 0xfc, 0xc7, 0x78, 0xa1, 0xa0, 0xb6, 0x92, 0xed, 0x44, 0x4a, 0x45, 0x8c, + 0x21, 0x2b, 0x92, 0x7b, 0x66, 0x43, 0x92, 0x1f, 0x38, 0x24, 0xbf, 0x9c, 0x83, 0xb1, 0xb8, 0xb2, + 0x9f, 0xb3, 0xf8, 0xed, 0xb8, 0x5d, 0x43, 0x79, 0x67, 0x37, 0x15, 0x59, 0x21, 0x9c, 0xa0, 0xbf, + 0x0a, 0x45, 0xb1, 0x98, 0x8c, 0xd4, 0xad, 0x5a, 0x6a, 0x74, 0x93, 0x47, 0x6f, 0x71, 0x40, 0x43, + 0x4b, 0xd0, 0xa1, 0xfb, 0xfb, 0x16, 0xdd, 0x16, 0xf7, 0x4b, 0xcf, 0xed, 0x1e, 0x95, 0xed, 0xfe, + 0x9e, 0x34, 0x6c, 0xa8, 0xdd, 0xe9, 0x1f, 0x14, 0xa0, 0x9a, 0x26, 0x39, 0x39, 0x42, 0x7e, 0xad, + 0xb7, 0x2d, 0xde, 0x9e, 0xc0, 0x08, 0xf9, 0x6e, 0x6f, 0xdb, 0x62, 0x30, 0x72, 0x05, 0x0a, 0x6b, + 0x81, 0xf7, 0x10, 0x5b, 0x2d, 0x9e, 0xde, 0xe8, 0x06, 0xde, 0x43, 0xd5, 0x0f, 0x94, 0x95, 0xa3, + 0x41, 0xbb, 0xdc, 0x54, 0xde, 0x1b, 0xe7, 0x06, 0x6d, 0x3b, 0x4c, 0xa7, 0x45, 0x91, 0x68, 0x6c, + 0xab, 0x6c, 0x50, 0x27, 0x10, 0xd1, 0xdc, 0x42, 0x9c, 0xe1, 0x56, 0xb9, 0x8d, 0x60, 0x9e, 0xc7, + 0xd6, 0x52, 0x91, 0x48, 0x1b, 0x88, 0xf2, 0x53, 0x2e, 0xe0, 0x93, 0x6d, 0x3c, 0xf9, 0x64, 0xd4, + 0x19, 0x95, 0xb5, 0xad, 0xae, 0xe6, 0x0c, 0xbe, 0xcf, 0xf2, 0x8c, 0x70, 0x0d, 0xca, 0x78, 0xe4, + 0x85, 0x07, 0x19, 0xa5, 0x13, 0x99, 0x49, 0x9f, 0x5b, 0xc0, 0xdb, 0x78, 0x3b, 0x3e, 0xce, 0x48, + 0x98, 0x90, 0xf7, 0x61, 0x4c, 0x75, 0x14, 0xe5, 0xee, 0x8c, 0x97, 0x78, 0x84, 0xd0, 0x80, 0x94, + 0x70, 0x2a, 0x81, 0xf9, 0x45, 0x75, 0x96, 0x88, 0x4d, 0xfb, 0xd8, 0x59, 0x62, 0xfe, 0x16, 0xaa, + 0xf1, 0xfb, 0x7e, 0x44, 0x85, 0xf6, 0xf2, 0xdc, 0xca, 0xb1, 0xe4, 0x08, 0x79, 0x44, 0xf3, 0x08, + 0xd1, 0x5a, 0xf7, 0x04, 0x2f, 0x6d, 0xff, 0xa1, 0x01, 0x67, 0x33, 0x69, 0xc9, 0x0d, 0x80, 0x44, + 0x47, 0x14, 0xbd, 0xc4, 0x13, 0x04, 0xc7, 0x50, 0x4b, 0xc1, 0x20, 0xdf, 0x4c, 0x6b, 0x77, 0x27, + 0x6f, 0x4e, 0xf2, 0x19, 0x8d, 0x09, 0x5d, 0xbb, 0xcb, 0xd0, 0xe9, 0xcc, 0xef, 0xe5, 0x61, 0xaa, + 0xef, 0xcd, 0xc6, 0x13, 0xee, 0xe0, 0xf7, 0x52, 0x8f, 0x7b, 0xf1, 0xeb, 0x8e, 0xeb, 0x83, 0x5e, + 0x8c, 0xcc, 0x78, 0xea, 0x0b, 0x8f, 0xc5, 0x44, 0x6e, 0xea, 0x13, 0x5e, 0xfc, 0x0a, 0xb3, 0x9f, + 0x85, 0xfb, 0xc2, 0xc0, 0xaf, 0x3d, 0x83, 0xe7, 0xe1, 0x7e, 0x8c, 0x5f, 0xcf, 0xfa, 0xad, 0x1c, + 0x9c, 0xee, 0x6b, 0xf3, 0x73, 0xbb, 0xea, 0xbe, 0xaa, 0xed, 0x6e, 0x2f, 0x0d, 0x1a, 0xd3, 0xa1, + 0xb4, 0x88, 0xff, 0x6e, 0xc0, 0xf9, 0x01, 0x94, 0xe4, 0x20, 0x3d, 0x89, 0xb8, 0x56, 0x71, 0xf3, + 0xf8, 0x0f, 0x3e, 0x93, 0xa9, 0xf4, 0x99, 0xcd, 0x84, 0x5f, 0xca, 0x01, 0x6c, 0xd1, 0xed, 0xe7, + 0x3b, 0xfd, 0xcf, 0x97, 0xb5, 0x09, 0xa0, 0x1c, 0x60, 0x0e, 0x9f, 0xfd, 0x67, 0x15, 0x0f, 0x12, + 0x87, 0xcf, 0xfd, 0x13, 0x3f, 0x15, 0x92, 0xcb, 0x7e, 0x2a, 0xc4, 0xdc, 0x86, 0x33, 0x77, 0x69, + 0x94, 0xec, 0x84, 0xd2, 0x86, 0x3c, 0x9e, 0xed, 0x1b, 0x50, 0x16, 0xf8, 0x7a, 0xda, 0x77, 0xe9, + 0x50, 0xe6, 0xb9, 0x56, 0x82, 0x60, 0x52, 0x38, 0x3f, 0x4f, 0xdb, 0x34, 0xa2, 0x9f, 0xed, 0x67, + 0x9a, 0x40, 0x78, 0x53, 0xf8, 0x0b, 0x12, 0x43, 0x7d, 0xe1, 0xc4, 0xfe, 0xd9, 0x84, 0xb3, 0x71, + 0xdd, 0x9f, 0x25, 0xdf, 0x19, 0xa6, 0x4b, 0x88, 0x58, 0xbb, 0x84, 0xe3, 0x31, 0x87, 0x88, 0x8f, + 0xe1, 0xa2, 0x24, 0xd8, 0xf2, 0xe2, 0x9b, 0x98, 0xa1, 0x68, 0xc9, 0xbb, 0x30, 0xa6, 0xd0, 0x88, + 0xc0, 0x5d, 0xbc, 0xed, 0x7c, 0xe4, 0x45, 0xbb, 0x76, 0xc8, 0xe1, 0xea, 0x6d, 0xa7, 0x82, 0x6e, + 0x7e, 0x03, 0x5e, 0x88, 0xfd, 0x56, 0x32, 0x3e, 0x9d, 0x62, 0x6e, 0x3c, 0x19, 0xf3, 0x95, 0xa4, + 0x59, 0x4b, 0x9d, 0xd8, 0x7f, 0x5c, 0xf2, 0x26, 0x6a, 0xb3, 0x44, 0x63, 0x2e, 0x29, 0x69, 0xd1, + 0xc4, 0x5e, 0x94, 0x00, 0xcc, 0x77, 0x94, 0xca, 0x66, 0x30, 0xd4, 0x88, 0x8d, 0x34, 0xf1, 0x2f, + 0xe5, 0x60, 0x72, 0x75, 0x69, 0x7e, 0x2e, 0x3e, 0x46, 0xfe, 0x9c, 0xe5, 0x26, 0xd2, 0xda, 0x36, + 0x58, 0xde, 0x98, 0x1b, 0x70, 0x3a, 0xd5, 0x0d, 0xf8, 0x40, 0xce, 0xfb, 0xdc, 0xbf, 0x24, 0x06, + 0xcb, 0x9d, 0xe5, 0x5c, 0x16, 0xfb, 0xcd, 0x5b, 0x56, 0x0a, 0xdb, 0xfc, 0x5e, 0x31, 0xc5, 0x57, + 0x88, 0xb0, 0x37, 0xa0, 0xbc, 0x14, 0x86, 0x3d, 0x1a, 0x6c, 0x58, 0xcb, 0xaa, 0x8e, 0xe8, 0x21, + 0xd0, 0xee, 0x05, 0x6d, 0x2b, 0x41, 0x20, 0xd7, 0xa0, 0x24, 0xe2, 0xbb, 0xa4, 0x4c, 0xc0, 0xeb, + 0xf2, 0x38, 0x3c, 0xcc, 0x8a, 0x8b, 0xc9, 0x5b, 0x50, 0xe1, 0xff, 0xf3, 0xd9, 0x26, 0x3a, 0x1c, + 0xcf, 0xaa, 0x04, 0x3a, 0x9f, 0x9d, 0x96, 0x86, 0xc6, 0x2c, 0x33, 0xf9, 0x02, 0x27, 0xab, 0x51, + 0x21, 0xb1, 0xcc, 0xe4, 0x63, 0x9d, 0x58, 0x27, 0x15, 0x89, 0x5c, 0x87, 0x7c, 0x7d, 0xce, 0x52, + 0x33, 0x5d, 0x3b, 0xad, 0x80, 0x67, 0x8a, 0xd7, 0x1e, 0xb9, 0xaa, 0xcf, 0x59, 0x64, 0x16, 0x4a, + 0xf8, 0x88, 0x89, 0x4b, 0x03, 0xe1, 0x33, 0x8a, 0xb3, 0xa6, 0x2b, 0x60, 0xda, 0x13, 0xe1, 0x02, + 0x46, 0x66, 0x60, 0x74, 0xde, 0x0b, 0xbb, 0x6d, 0xe7, 0x40, 0x24, 0x25, 0xc1, 0xcb, 0x10, 0x97, + 0x83, 0xd4, 0x79, 0x26, 0xb0, 0xc8, 0x35, 0x18, 0x69, 0xb6, 0xfc, 0x2e, 0xb3, 0xb6, 0x62, 0xd7, + 0x96, 0x90, 0x01, 0xb4, 0xcc, 0x06, 0x0c, 0x80, 0x21, 0xc7, 0x3c, 0x72, 0xaa, 0xac, 0x84, 0x1c, + 0xa7, 0x23, 0xa6, 0x04, 0x4e, 0xbf, 0xff, 0x1f, 0x3c, 0x4b, 0xff, 0xbf, 0x6d, 0x38, 0x7f, 0x17, + 0x55, 0xfd, 0x26, 0x0d, 0x30, 0x0f, 0x24, 0x7f, 0x10, 0x69, 0xc3, 0x5a, 0x12, 0xd1, 0x62, 0x57, + 0x8f, 0x0e, 0x6b, 0xaf, 0x72, 0x6b, 0xc0, 0x0e, 0x39, 0x8e, 0x7c, 0x4b, 0x29, 0xf5, 0x0a, 0xc4, + 0x20, 0x46, 0xe4, 0x6b, 0x70, 0x26, 0xab, 0x48, 0xc4, 0x8d, 0xa1, 0x57, 0x78, 0xf6, 0x07, 0x54, + 0xb7, 0xec, 0x2c, 0x0e, 0x64, 0x19, 0xaa, 0x1c, 0x5e, 0x77, 0xf7, 0xbd, 0xce, 0xc2, 0xbe, 0xe3, + 0xb5, 0x31, 0x8a, 0x4c, 0x84, 0x02, 0x0a, 0xae, 0x0e, 0x2b, 0xb4, 0x29, 0x2b, 0xd5, 0xbc, 0x93, + 0x52, 0x94, 0x28, 0x8e, 0x9a, 0xf5, 0xfb, 0xcb, 0xc9, 0x9a, 0xfa, 0x7c, 0xdd, 0x1b, 0x69, 0x6d, + 0x3b, 0xe6, 0xde, 0x68, 0x03, 0x4e, 0xa7, 0xba, 0x41, 0x8a, 0x23, 0x0d, 0x9c, 0x16, 0x47, 0x29, + 0x1a, 0x2b, 0x85, 0x6d, 0xfe, 0x87, 0x62, 0x8a, 0xaf, 0x38, 0x2b, 0x32, 0xa1, 0xc8, 0xa5, 0x8d, + 0x9a, 0xb5, 0x8c, 0xcb, 0x22, 0x4b, 0x94, 0x90, 0x0b, 0x90, 0x6f, 0x36, 0x57, 0xd5, 0x9c, 0x8a, + 0x61, 0xe8, 0x5b, 0x0c, 0xc6, 0x46, 0x08, 0x8f, 0x81, 0x94, 0x00, 0xad, 0x16, 0x0d, 0x22, 0xf1, + 0x44, 0xeb, 0x6b, 0xc9, 0x3a, 0x2e, 0x24, 0xfd, 0x2d, 0xd6, 0x71, 0xb2, 0x7a, 0xe7, 0x60, 0xba, + 0x1e, 0x86, 0x34, 0xe0, 0xe9, 0xc1, 0x3b, 0x61, 0x6f, 0x9f, 0x06, 0x62, 0xae, 0x09, 0x19, 0xc3, + 0x1f, 0x78, 0x6f, 0x85, 0xd6, 0x40, 0x44, 0x72, 0x15, 0x4a, 0xf5, 0x9e, 0xeb, 0xd1, 0x4e, 0x4b, + 0xf3, 0x4d, 0x77, 0x04, 0xcc, 0x8a, 0x4b, 0xc9, 0x47, 0x70, 0x56, 0x10, 0x49, 0x81, 0x23, 0x7a, + 0x80, 0xcb, 0x1a, 0x6e, 0xc1, 0x8a, 0xb5, 0x20, 0xc5, 0x94, 0x2d, 0xba, 0x24, 0x9b, 0x92, 0xd4, + 0xa1, 0xba, 0x80, 0xf7, 0xa4, 0xf2, 0xa1, 0x66, 0x3f, 0x10, 0xc9, 0x77, 0x51, 0x72, 0xf1, 0x3b, + 0x54, 0xdb, 0x8d, 0x0b, 0xad, 0x3e, 0x74, 0x72, 0x0f, 0x4e, 0xa7, 0x61, 0x4c, 0x1e, 0x97, 0x93, + 0x87, 0xd4, 0xfa, 0xb8, 0xa0, 0x60, 0xce, 0xa2, 0x22, 0xdb, 0x30, 0x55, 0x8f, 0xa2, 0xc0, 0xdb, + 0xee, 0x45, 0x34, 0x25, 0xba, 0xe4, 0x41, 0x63, 0x5c, 0x2e, 0xc5, 0xd7, 0x0b, 0x62, 0x32, 0x9e, + 0x76, 0x62, 0xca, 0x58, 0x84, 0x59, 0xfd, 0xec, 0x88, 0x1b, 0xbf, 0xc5, 0x28, 0xde, 0x2b, 0x14, + 0x01, 0x45, 0xf2, 0x40, 0xb7, 0x1e, 0x1e, 0xec, 0xef, 0xd3, 0x28, 0xc0, 0x9b, 0x7b, 0x7c, 0xcf, + 0xd0, 0x14, 0x3e, 0x40, 0x17, 0x95, 0x27, 0x48, 0xf1, 0xcd, 0x4a, 0xcd, 0x3d, 0x52, 0xe3, 0xa9, + 0x6d, 0x1f, 0x95, 0x21, 0xb7, 0x8f, 0x36, 0x4c, 0x2d, 0x74, 0x5a, 0xc1, 0x01, 0x46, 0x36, 0xca, + 0xca, 0x8d, 0x9f, 0x50, 0x39, 0xf9, 0x58, 0xc9, 0x25, 0x47, 0xce, 0xb0, 0xac, 0xea, 0xf5, 0x33, + 0x36, 0xff, 0x3f, 0xa8, 0xa6, 0xfb, 0xf2, 0x29, 0x1f, 0xa0, 0x7e, 0x12, 0xd7, 0x6c, 0x36, 0xd2, + 0xe9, 0xb6, 0x90, 0x19, 0xed, 0x95, 0x61, 0x23, 0x89, 0x4a, 0x57, 0xde, 0x03, 0xd6, 0xde, 0x16, + 0x96, 0xcb, 0x38, 0x97, 0xb5, 0x8c, 0xcd, 0x5f, 0xc9, 0xc1, 0x14, 0xf7, 0x26, 0x7d, 0xfe, 0x75, + 0xc5, 0xf7, 0x35, 0xe1, 0x2c, 0xcf, 0x02, 0x53, 0xad, 0x3b, 0x46, 0x5b, 0xfc, 0x18, 0xce, 0xf6, + 0x75, 0x05, 0x0a, 0xe8, 0x79, 0xe9, 0xc7, 0xdb, 0x27, 0xa2, 0xa7, 0xb3, 0x3f, 0xb2, 0x79, 0xcb, + 0xea, 0xa3, 0x30, 0xff, 0x61, 0xae, 0x8f, 0xbf, 0xd0, 0x1b, 0x55, 0x4d, 0xd0, 0x78, 0x32, 0x4d, + 0x30, 0xf7, 0xa9, 0x34, 0xc1, 0xfc, 0x30, 0x9a, 0xe0, 0x47, 0x30, 0xbe, 0x4e, 0x1d, 0xa6, 0xd1, + 0x88, 0x60, 0xb3, 0x82, 0xf6, 0x02, 0x30, 0x2b, 0x93, 0xf2, 0x25, 0x0e, 0x54, 0x8d, 0x18, 0x01, + 0x13, 0x2d, 0x3c, 0xfa, 0xcc, 0xd2, 0x39, 0xa8, 0x9b, 0xc6, 0xc8, 0xe0, 0x4d, 0xc3, 0xfc, 0x56, + 0x0e, 0xc6, 0x14, 0xf6, 0xe4, 0x4b, 0x50, 0x59, 0x0d, 0x76, 0x9c, 0x8e, 0xf7, 0xb3, 0x8e, 0x72, + 0xfc, 0x8a, 0xd5, 0xf7, 0x15, 0xb8, 0xa5, 0x61, 0xa1, 0xdb, 0x0c, 0x75, 0xf6, 0xd5, 0x89, 0xcf, + 0xaa, 0x67, 0x21, 0x54, 0x09, 0x16, 0xce, 0x0f, 0x11, 0x2c, 0xac, 0x47, 0xda, 0x16, 0x9e, 0x3c, + 0xd2, 0x56, 0x0b, 0x8c, 0x1d, 0x79, 0xc2, 0xc0, 0x58, 0xf3, 0xd7, 0x72, 0x50, 0x15, 0x6f, 0xe5, + 0xca, 0xc3, 0xc3, 0xcf, 0xd7, 0x3b, 0x0c, 0x7a, 0xe3, 0x8e, 0xb9, 0x1e, 0x2b, 0xfc, 0xf6, 0xef, + 0xd7, 0xf0, 0xe5, 0xd3, 0x74, 0x77, 0xc8, 0x97, 0x4f, 0x75, 0x78, 0x3a, 0x72, 0x20, 0x4d, 0x65, + 0xa5, 0xf1, 0xcd, 0x3f, 0xcf, 0xa5, 0x79, 0x0b, 0x6d, 0xea, 0x35, 0x18, 0xe5, 0x4f, 0x9d, 0x49, + 0xe7, 0x66, 0x91, 0xbb, 0x09, 0x41, 0x96, 0x2c, 0x7b, 0x92, 0x18, 0x92, 0x93, 0x9e, 0xbf, 0x25, + 0xb7, 0xc5, 0x73, 0x32, 0x75, 0xd7, 0x0d, 0x68, 0x18, 0x0a, 0x45, 0x0b, 0xef, 0xee, 0x1e, 0xd1, + 0x6d, 0x9b, 0xfb, 0x95, 0x38, 0xae, 0x1b, 0x58, 0x1a, 0x1e, 0x99, 0x83, 0x33, 0x9a, 0x7b, 0x92, + 0xa4, 0x1f, 0x49, 0x76, 0x0b, 0xf1, 0x84, 0x0e, 0x12, 0x67, 0x22, 0x3f, 0xbb, 0xa7, 0xbf, 0xcd, + 0xff, 0x65, 0xb0, 0xb5, 0xd6, 0xda, 0xfb, 0x9c, 0x45, 0xb7, 0xb0, 0x26, 0x1d, 0xa3, 0xec, 0xff, + 0x3b, 0x83, 0xfb, 0xa7, 0x8b, 0xe9, 0xf3, 0x36, 0x14, 0xf9, 0xc3, 0x6a, 0xc2, 0x93, 0x5a, 0xe5, + 0xc2, 0x0b, 0x92, 0xfb, 0x29, 0xfe, 0x3c, 0x9b, 0x25, 0x08, 0x98, 0xc9, 0xac, 0xbb, 0xc9, 0xa3, + 0xe2, 0xd9, 0xef, 0x1f, 0x2f, 0xb1, 0xd4, 0xbc, 0xa4, 0xc3, 0xe5, 0xbb, 0x36, 0x4e, 0xce, 0x4b, + 0x6a, 0xfe, 0x9f, 0x1c, 0x6f, 0x8f, 0xa8, 0xd4, 0xb0, 0x09, 0xf7, 0xae, 0x40, 0x01, 0x9f, 0xf0, + 0x55, 0xb2, 0x1a, 0xa6, 0x9e, 0xef, 0xc5, 0x72, 0xb6, 0x6e, 0x50, 0xd6, 0xaa, 0x01, 0x55, 0x28, + 0x8e, 0xd5, 0x75, 0x83, 0x18, 0x98, 0x4d, 0xda, 0x77, 0xa9, 0xba, 0x1c, 0x3a, 0x7a, 0xe2, 0x6f, + 0x2c, 0x27, 0xb7, 0x15, 0xbf, 0x66, 0xf5, 0x40, 0x63, 0xff, 0x81, 0x63, 0x73, 0x7f, 0x5a, 0x55, + 0xda, 0x26, 0x2e, 0xd0, 0x0b, 0x30, 0xa1, 0xc7, 0x2a, 0x0b, 0xa3, 0x03, 0x43, 0xbe, 0x53, 0x71, + 0xce, 0xaa, 0x7a, 0xab, 0x13, 0x91, 0x06, 0x8c, 0x6b, 0x01, 0xa9, 0x6a, 0x12, 0x56, 0x9e, 0x1d, + 0xc6, 0xee, 0xcf, 0xa4, 0xa0, 0x93, 0x28, 0x07, 0xe6, 0x5f, 0x84, 0xaa, 0x58, 0x99, 0x71, 0x6c, + 0x1b, 0xaa, 0x76, 0x4b, 0xf3, 0x96, 0xba, 0x9a, 0x5a, 0x9e, 0x1b, 0x58, 0x08, 0x35, 0xbf, 0x6b, + 0xc0, 0x05, 0xf1, 0x60, 0x9c, 0x45, 0x43, 0xa6, 0x43, 0x62, 0x40, 0x1c, 0xce, 0xc7, 0x2f, 0x91, + 0x77, 0x65, 0xe2, 0x29, 0x5d, 0x40, 0xa6, 0xbf, 0xd1, 0x18, 0x17, 0x93, 0x72, 0x04, 0x53, 0x4f, + 0xc9, 0x84, 0x53, 0x6f, 0x8b, 0x84, 0x53, 0xb9, 0xe3, 0x89, 0xe3, 0x75, 0xe1, 0xd2, 0x8e, 0x4c, + 0x34, 0xf5, 0xeb, 0x39, 0x38, 0x9b, 0x51, 0xad, 0xcd, 0x2f, 0x3d, 0xa7, 0xc2, 0xa1, 0xa1, 0x09, + 0x07, 0x99, 0x91, 0x70, 0x60, 0xc7, 0x67, 0xca, 0x8a, 0xdf, 0x35, 0xe0, 0xbc, 0x3e, 0x7b, 0x84, + 0x2d, 0xba, 0x79, 0x8b, 0xbc, 0x03, 0xc5, 0x45, 0xea, 0xb8, 0x54, 0x86, 0x60, 0xc4, 0xd9, 0xbd, + 0xc4, 0xe9, 0x30, 0x2f, 0xe4, 0x6c, 0xff, 0x9c, 0x2f, 0xe5, 0x53, 0x96, 0x20, 0x21, 0xf3, 0xa2, + 0x72, 0xfc, 0x7a, 0xca, 0x94, 0x37, 0x35, 0x59, 0x9f, 0x3a, 0x46, 0x31, 0xfe, 0x43, 0x03, 0x5e, + 0x38, 0x86, 0x86, 0x0d, 0x1c, 0x1b, 0x7a, 0x75, 0xe0, 0x70, 0x63, 0x41, 0x28, 0x79, 0x1f, 0x26, + 0xd7, 0x45, 0xa4, 0x98, 0x1c, 0x0e, 0x25, 0xbb, 0xbb, 0x0c, 0x22, 0xb3, 0xe5, 0xb8, 0xa4, 0x91, + 0x99, 0xf5, 0xbf, 0xe8, 0x87, 0x51, 0x27, 0x49, 0x16, 0x83, 0xd6, 0xff, 0xae, 0x80, 0x59, 0x71, + 0x29, 0x53, 0x0b, 0xf4, 0x6a, 0x0a, 0x77, 0x88, 0x57, 0xa0, 0xc8, 0x70, 0x62, 0xed, 0x1a, 0xe7, + 0x01, 0x3e, 0x7d, 0xe5, 0xb9, 0x96, 0x28, 0x8a, 0xed, 0xba, 0x5c, 0xe6, 0xad, 0xc5, 0xb7, 0x0c, + 0xa8, 0xea, 0xbc, 0x9f, 0x76, 0x68, 0xde, 0xd3, 0x86, 0xe6, 0x85, 0xec, 0xa1, 0x19, 0x3c, 0x26, + 0x7d, 0x79, 0x1b, 0x86, 0x1a, 0x0b, 0x13, 0x8a, 0xf3, 0xfe, 0xbe, 0xe3, 0x75, 0xd4, 0x5c, 0x03, + 0x2e, 0x42, 0x2c, 0x51, 0xa2, 0xf4, 0x56, 0x7e, 0x60, 0x6f, 0x99, 0xdf, 0x29, 0xc0, 0x05, 0x8b, + 0xee, 0x78, 0x4c, 0x41, 0xda, 0x08, 0xbd, 0xce, 0x8e, 0x76, 0xa7, 0x64, 0xa6, 0x3a, 0x5c, 0x78, + 0xd2, 0x31, 0x48, 0xdc, 0xdf, 0xd7, 0xa0, 0xc4, 0xa4, 0xb4, 0xd2, 0xe7, 0x68, 0xf4, 0x60, 0xc6, + 0x1c, 0x3e, 0xae, 0xb2, 0x98, 0x5c, 0x17, 0x7b, 0x88, 0xe2, 0xeb, 0xcc, 0xf6, 0x90, 0xd4, 0x6b, + 0xec, 0x7c, 0x1f, 0x89, 0x95, 0xaa, 0xc2, 0x00, 0xa5, 0xea, 0x3e, 0x9c, 0xa9, 0xbb, 0x5c, 0x3e, + 0x39, 0xed, 0xb5, 0xc0, 0xeb, 0xb4, 0xbc, 0xae, 0xd3, 0x96, 0x4a, 0x39, 0x7f, 0x9b, 0x3e, 0x2e, + 0xb7, 0xbb, 0x31, 0x82, 0x95, 0x49, 0xc6, 0x9a, 0x31, 0xbf, 0xd2, 0xe4, 0x09, 0x51, 0x8a, 0xc8, + 0x02, 0x9b, 0xe1, 0x76, 0x42, 0x9e, 0x11, 0xc5, 0x8a, 0x8b, 0x51, 0x9d, 0xc3, 0x70, 0x87, 0xf5, + 0xe5, 0xe6, 0x3d, 0x11, 0x3e, 0x20, 0x5d, 0xb1, 0x78, 0x74, 0x44, 0xd4, 0x0e, 0xd1, 0x7e, 0xd7, + 0xf0, 0x12, 0xba, 0x66, 0x73, 0x91, 0xd1, 0x95, 0xfa, 0xe8, 0xc2, 0x70, 0x57, 0xa5, 0xe3, 0x78, + 0x64, 0x06, 0x80, 0x3b, 0xb3, 0xe0, 0x84, 0x28, 0x27, 0xca, 0x5f, 0x80, 0x50, 0xae, 0xfc, 0x29, + 0x28, 0xe4, 0x5d, 0x38, 0xbd, 0x30, 0x37, 0x2b, 0xe3, 0x02, 0xe6, 0xfd, 0x56, 0x6f, 0x9f, 0x76, + 0x22, 0x8c, 0x53, 0xa9, 0xf0, 0x31, 0xa4, 0xad, 0x59, 0x36, 0x0b, 0xb2, 0xd0, 0x44, 0x74, 0x00, + 0x8f, 0x2d, 0x9b, 0xf3, 0x5d, 0x1a, 0x6e, 0xde, 0xfc, 0x9c, 0x45, 0x07, 0x28, 0x6d, 0xc3, 0xd5, + 0x76, 0x33, 0x73, 0x65, 0xfe, 0x5d, 0x8c, 0x0e, 0xe8, 0xc3, 0x25, 0x3f, 0x01, 0x23, 0xf8, 0x53, + 0xec, 0xb8, 0xa7, 0x33, 0xd8, 0x26, 0xbb, 0x6d, 0x8b, 0xe7, 0xb6, 0x40, 0x02, 0xb2, 0x94, 0x24, + 0xaf, 0x7f, 0x02, 0x1f, 0x57, 0x11, 0xa0, 0xaa, 0xbf, 0x5a, 0xe2, 0x42, 0x45, 0xfd, 0x20, 0x9b, + 0x23, 0x8b, 0x4e, 0xb8, 0x4b, 0xdd, 0x39, 0xf9, 0xee, 0x60, 0x85, 0xcf, 0x91, 0x5d, 0x84, 0xe2, + 0x8b, 0x2a, 0x96, 0x82, 0xc2, 0xa4, 0xc3, 0x52, 0xb8, 0x11, 0x8a, 0xaa, 0x08, 0x2b, 0xc8, 0x43, + 0xeb, 0xd5, 0xb5, 0x44, 0x11, 0x4a, 0x4b, 0x99, 0xbb, 0x31, 0x70, 0x5a, 0x7b, 0x34, 0xd8, 0xbc, + 0xf9, 0x59, 0x48, 0x4b, 0xfd, 0x1b, 0xc7, 0x8c, 0xc9, 0x6f, 0x94, 0xe2, 0xd4, 0x2c, 0x1a, 0x32, + 0xd3, 0x11, 0x93, 0x9b, 0x79, 0x23, 0xd1, 0x11, 0x93, 0x9b, 0x79, 0x55, 0x47, 0x8c, 0x51, 0xe3, + 0xcc, 0xb9, 0xb9, 0x13, 0x32, 0xe7, 0x0e, 0x48, 0xd6, 0x2d, 0x9d, 0x3a, 0x3f, 0x47, 0xef, 0x16, + 0x7c, 0x05, 0x2a, 0xf5, 0x28, 0x72, 0x5a, 0xbb, 0xd4, 0xc5, 0x0c, 0xcd, 0xca, 0x85, 0xa0, 0x23, + 0xe0, 0xaa, 0xbb, 0x98, 0x8a, 0xab, 0xbc, 0x5b, 0x32, 0x3a, 0xc4, 0xbb, 0x25, 0x33, 0x30, 0xba, + 0xd4, 0x79, 0xe8, 0xb1, 0x3e, 0x29, 0x25, 0xc9, 0x21, 0x3c, 0x0e, 0xd2, 0x1f, 0xbb, 0x40, 0x10, + 0x79, 0x5b, 0xd1, 0x20, 0xca, 0x89, 0x2a, 0x2f, 0x5e, 0xc1, 0x96, 0x8a, 0x84, 0x7a, 0xde, 0x2c, + 0xd1, 0xc9, 0x6d, 0x18, 0x95, 0xd6, 0x33, 0x24, 0xea, 0xbb, 0xa0, 0x74, 0x78, 0x89, 0x96, 0x8f, + 0x42, 0x58, 0xcf, 0xef, 0xea, 0xf1, 0x23, 0x63, 0x4a, 0x5c, 0xb6, 0x12, 0x3f, 0xa2, 0xc5, 0x65, + 0x2b, 0x91, 0x24, 0xb1, 0x31, 0x54, 0x39, 0xd1, 0x18, 0xda, 0x84, 0xca, 0x9a, 0x13, 0x44, 0x1e, + 0xdb, 0x8e, 0x3a, 0x11, 0x4f, 0xab, 0x95, 0xd8, 0xea, 0x4a, 0x51, 0xe3, 0x25, 0x19, 0x9f, 0xdc, + 0x55, 0xf0, 0xf5, 0xc0, 0xd6, 0x04, 0x4e, 0x56, 0x32, 0x3c, 0x0c, 0x45, 0x12, 0x48, 0xbc, 0x02, + 0x54, 0x0e, 0xae, 0x44, 0x8b, 0xd4, 0xa3, 0xf4, 0x7e, 0xe7, 0xc4, 0x5b, 0x7c, 0x0c, 0xd0, 0x66, + 0x9c, 0x44, 0x36, 0x98, 0x5d, 0x04, 0xf5, 0x8a, 0x94, 0xe1, 0x18, 0x23, 0x92, 0x6f, 0x42, 0x85, + 0xfd, 0x8f, 0x39, 0x86, 0x3c, 0xca, 0xd3, 0x66, 0x25, 0x1e, 0x67, 0xfa, 0x82, 0xe6, 0x89, 0x88, + 0x9a, 0x34, 0xe2, 0x0b, 0x18, 0x19, 0xa7, 0x0f, 0x5e, 0x34, 0x6e, 0xe6, 0x0f, 0x0d, 0x38, 0x3f, + 0x80, 0xc7, 0xd0, 0x2f, 0x16, 0xcd, 0x24, 0x1b, 0x92, 0x62, 0x9b, 0x8b, 0x0d, 0x49, 0x9d, 0x18, + 0x72, 0x6b, 0xca, 0x4e, 0x78, 0x95, 0xff, 0xcc, 0x12, 0x5e, 0x99, 0x87, 0x06, 0x8c, 0x29, 0x23, + 0xfb, 0x0c, 0x1f, 0x22, 0xb8, 0x22, 0x32, 0x3f, 0xe6, 0x13, 0xbc, 0xd4, 0x9b, 0xd2, 0x3c, 0xd3, + 0xe3, 0xc7, 0x00, 0xcb, 0x4e, 0x18, 0xd5, 0x5b, 0x91, 0xf7, 0x90, 0x0e, 0x21, 0xc6, 0x92, 0x40, + 0x7d, 0x07, 0x13, 0xa9, 0x32, 0xb2, 0xbe, 0x40, 0xfd, 0x98, 0xa1, 0xb9, 0x02, 0xc5, 0xa6, 0x1f, + 0x44, 0x8d, 0x03, 0xbe, 0x37, 0xcd, 0xd3, 0xb0, 0xa5, 0x9e, 0xd0, 0x79, 0x68, 0xab, 0xb7, 0x2c, + 0x51, 0xc4, 0x14, 0xc4, 0x3b, 0x1e, 0x6d, 0xbb, 0xea, 0x0d, 0xcd, 0x03, 0x06, 0xb0, 0x38, 0xfc, + 0xfa, 0x07, 0x30, 0x29, 0x93, 0xcf, 0xad, 0x2f, 0x37, 0xb1, 0x05, 0x93, 0x30, 0xb6, 0xb9, 0x60, + 0x2d, 0xdd, 0xf9, 0xba, 0x7d, 0x67, 0x63, 0x79, 0xb9, 0x7a, 0x8a, 0x8c, 0x43, 0x59, 0x00, 0xe6, + 0xea, 0x55, 0x83, 0x54, 0xa0, 0xb4, 0xb4, 0xd2, 0x5c, 0x98, 0xdb, 0xb0, 0x16, 0xaa, 0xb9, 0xeb, + 0xaf, 0xc1, 0x44, 0x72, 0xff, 0x82, 0x31, 0x9a, 0xa3, 0x90, 0xb7, 0xea, 0x5b, 0xd5, 0x53, 0x04, + 0xa0, 0xb8, 0x76, 0x6f, 0xae, 0x79, 0xf3, 0x66, 0xd5, 0xb8, 0xfe, 0xc5, 0x8c, 0x87, 0xbc, 0x19, + 0xa7, 0x26, 0xed, 0x3a, 0x81, 0x13, 0x51, 0xfe, 0x99, 0xfb, 0xbd, 0x76, 0xe4, 0x75, 0xdb, 0xf4, + 0x71, 0xd5, 0xb8, 0xfe, 0x76, 0xdf, 0x7b, 0xdc, 0xe4, 0x2c, 0x4c, 0x6d, 0xac, 0xd4, 0xef, 0x37, + 0x96, 0xee, 0x6e, 0xac, 0x6e, 0x34, 0xed, 0xfb, 0xf5, 0xf5, 0xb9, 0xc5, 0xea, 0x29, 0x56, 0xe1, + 0xfb, 0xab, 0xcd, 0x75, 0xdb, 0x5a, 0x98, 0x5b, 0x58, 0x59, 0xaf, 0x1a, 0xd7, 0x7f, 0xd5, 0x80, + 0x09, 0xfd, 0x35, 0x3c, 0x72, 0x19, 0x2e, 0x6d, 0x34, 0x17, 0x2c, 0x7b, 0x7d, 0xf5, 0xde, 0xc2, + 0x8a, 0xbd, 0xd1, 0xac, 0xdf, 0x5d, 0xb0, 0x37, 0x56, 0x9a, 0x6b, 0x0b, 0x73, 0x4b, 0x77, 0x96, + 0x16, 0xe6, 0xab, 0xa7, 0x48, 0x0d, 0x5e, 0x50, 0x30, 0xac, 0x85, 0xb9, 0xd5, 0xcd, 0x05, 0xcb, + 0x5e, 0xab, 0x37, 0x9b, 0x5b, 0xab, 0xd6, 0x7c, 0xd5, 0x20, 0x17, 0xe1, 0x5c, 0x06, 0xc2, 0xfd, + 0x3b, 0xf5, 0x6a, 0xae, 0xaf, 0x6c, 0x65, 0x61, 0xab, 0xbe, 0x6c, 0x37, 0x56, 0xd7, 0xab, 0xf9, + 0xeb, 0x1f, 0x30, 0x2d, 0x24, 0x79, 0xae, 0x82, 0x94, 0xa0, 0xb0, 0xb2, 0xba, 0xb2, 0x50, 0x3d, + 0x45, 0xc6, 0x60, 0x74, 0x6d, 0x61, 0x65, 0x7e, 0x69, 0xe5, 0x2e, 0xef, 0xd6, 0xfa, 0xda, 0x9a, + 0xb5, 0xba, 0xb9, 0x30, 0x5f, 0xcd, 0xb1, 0xbe, 0x9b, 0x5f, 0x58, 0x61, 0x35, 0xcb, 0x5f, 0x37, + 0x79, 0x8a, 0x66, 0x2d, 0xc3, 0x28, 0xeb, 0xad, 0x85, 0xaf, 0xad, 0x2f, 0xac, 0x34, 0x97, 0x56, + 0x57, 0xaa, 0xa7, 0xae, 0x5f, 0x4a, 0xe1, 0xc8, 0x91, 0x68, 0x36, 0x17, 0xab, 0xa7, 0xae, 0x7f, + 0x13, 0x2a, 0xea, 0x26, 0x4c, 0xce, 0xc3, 0x69, 0xf5, 0xf7, 0x1a, 0xed, 0xb8, 0x5e, 0x67, 0xa7, + 0x7a, 0x2a, 0x5d, 0x60, 0xf5, 0x3a, 0x1d, 0x56, 0x80, 0x8d, 0x57, 0x0b, 0xd6, 0x69, 0xb0, 0xef, + 0x75, 0xd8, 0xfe, 0x5a, 0xcd, 0x35, 0xaa, 0xdf, 0xff, 0xcb, 0x97, 0x4e, 0x7d, 0xff, 0x07, 0x2f, + 0x19, 0x7f, 0xfe, 0x83, 0x97, 0x8c, 0xff, 0xfa, 0x83, 0x97, 0x8c, 0xed, 0x22, 0x4e, 0xf4, 0x5b, + 0xff, 0x2f, 0x00, 0x00, 0xff, 0xff, 0x66, 0xbb, 0x2e, 0xf2, 0x78, 0xb7, 0x00, 0x00, } func (m *KeepAlive) Marshal() (dAtA []byte, err error) { diff --git a/api/types/types.proto b/api/types/types.proto index 2a90ee0f244a..2972075a28cc 100644 --- a/api/types/types.proto +++ b/api/types/types.proto @@ -941,10 +941,7 @@ message AgentMeshTunnelStrategy {} // ProxyPeeringTunnelStrategy requires reverse tunnels to dial a fixed number of proxies. message ProxyPeeringTunnelStrategy { - int64 AgentConnectionCount = 1 [ - (gogoproto.jsontag) = "agent_connection_count,omitempty", - (gogoproto.moretags) = "yaml:\"agent_connection_count,omitempty\"" - ]; + int64 AgentConnectionCount = 1 [ (gogoproto.jsontag) = "agent_connection_count,omitempty" ]; } // ProxyListenerMode represents the cluster proxy listener mode. From 0d7bcb334882988f733c91c5b24217bd29e72b3e Mon Sep 17 00:00:00 2001 From: David Boslee Date: Mon, 11 Apr 2022 08:15:27 -0600 Subject: [PATCH 27/30] Update chunked writes Co-authored-by: Edoardo Spadolini --- lib/proxy/conn.go | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/lib/proxy/conn.go b/lib/proxy/conn.go index 5f323c9fdec1..595cdf99a81c 100644 --- a/lib/proxy/conn.go +++ b/lib/proxy/conn.go @@ -100,20 +100,21 @@ func (c *streamConn) Write(b []byte) (int, error) { defer c.wLock.Unlock() var sent int - for sent < len(b) { - upperBound := len(b) - if upperBound-sent > maxChunkSize { - upperBound = maxChunkSize + sent + for len(b) > 0 { + chunk := b + if len(chunk) > maxChunkSize { + chunk = chunk[:maxChunkSize] } - send := b[sent:upperBound] err := c.stream.Send(&proto.Frame{Message: &proto.Frame_Data{Data: &proto.Data{ - Bytes: send, + Bytes: chunk, }}}) if err != nil { return sent, trace.ConnectionProblem(err, "failed to send on stream") } - sent += len(send) + + sent += len(chunk) + b = b[len(chunk):] } return sent, nil From a4053ec0da085c3e8a46d0fc36689de2b6432a9d Mon Sep 17 00:00:00 2001 From: David Date: Thu, 14 Apr 2022 11:37:18 -0600 Subject: [PATCH 28/30] Add streamConn and pipe tests and address other feedback --- api/types/tunnel_strategy.go | 1 + lib/proxy/conn.go | 6 +- lib/proxy/conn_test.go | 190 +++++++++++++++++++++++++++++++++++ lib/proxy/service.go | 4 +- 4 files changed, 197 insertions(+), 4 deletions(-) create mode 100644 lib/proxy/conn_test.go diff --git a/api/types/tunnel_strategy.go b/api/types/tunnel_strategy.go index a0fe40c5ac40..b210cc333f4d 100644 --- a/api/types/tunnel_strategy.go +++ b/api/types/tunnel_strategy.go @@ -216,6 +216,7 @@ func (s *TunnelStrategyV1) unmarshal(ots objectToStructFunc, unmarshal func(*tun return nil } +// CheckAndSetDefaults validates and sets default values for a tunnel strategy. func (s *TunnelStrategyV1) CheckAndSetDefaults() error { if s.Strategy == nil { s.Strategy = DefaultTunnelStrategy() diff --git a/lib/proxy/conn.go b/lib/proxy/conn.go index 595cdf99a81c..f2e7a87f7419 100644 --- a/lib/proxy/conn.go +++ b/lib/proxy/conn.go @@ -40,7 +40,7 @@ type Stream interface { Recv() (*proto.Frame, error) } -// streamConn wraps a grpc stream with a net.streamConn interface. +// streamConn wraps a grpc stream with a net.Conn interface. type streamConn struct { stream Stream @@ -61,7 +61,7 @@ func newStreamConn(stream Stream, src net.Addr, dst net.Addr) *streamConn { } } -// Read reads data reveived over the grpc stream. +// Read reads data received over the grpc stream. func (c *streamConn) Read(b []byte) (n int, err error) { c.rLock.Lock() defer c.rLock.Unlock() @@ -124,6 +124,8 @@ func (c *streamConn) Write(b []byte) (int, error) { func (c *streamConn) Close() error { var err error if cstream, ok := c.stream.(grpc.ClientStream); ok { + c.wLock.Lock() + defer c.wLock.Unlock() err = cstream.CloseSend() } diff --git a/lib/proxy/conn_test.go b/lib/proxy/conn_test.go new file mode 100644 index 000000000000..5945de67d99a --- /dev/null +++ b/lib/proxy/conn_test.go @@ -0,0 +1,190 @@ +package proxy + +import ( + "context" + "net" + "sync" + "testing" + "time" + + "github.com/gravitational/teleport/api/client/proto" + "github.com/gravitational/teleport/lib/utils" + "github.com/stretchr/testify/require" +) + +type mockStream struct { + ctx context.Context + conn net.Conn +} + +func newMockStream(ctx context.Context, conn net.Conn) *mockStream { + return &mockStream{ + ctx: ctx, + conn: conn, + } +} + +func (m *mockStream) Context() context.Context { + return m.ctx +} + +func (m *mockStream) Send(f *proto.Frame) error { + _, err := m.conn.Write(f.GetData().Bytes) + return err +} + +func (m *mockStream) Recv() (*proto.Frame, error) { + b := make([]byte, 2*maxChunkSize) + n, err := m.conn.Read(b) + return &proto.Frame{Message: &proto.Frame_Data{Data: &proto.Data{ + Bytes: b[:n], + }}}, err +} + +func newStreamPipe() (*streamConn, net.Conn) { + local, remote := net.Pipe() + stream := newMockStream(context.Background(), remote) + + timeout := time.Now().Add(time.Second * 5) + local.SetReadDeadline(timeout) + local.SetWriteDeadline(timeout) + remote.SetReadDeadline(timeout) + remote.SetWriteDeadline(timeout) + + src := &utils.NetAddr{Addr: "src"} + dst := &utils.NetAddr{Addr: "dst"} + streamConn := newStreamConn(stream, src, dst) + + return streamConn, local +} + +func TestStreamConnWrite(t *testing.T) { + streamConn, local := newStreamPipe() + wg := &sync.WaitGroup{} + wg.Add(2) + + data := []byte("hello world!") + go func() { + defer wg.Done() + n, err := streamConn.Write(data) + require.NoError(t, err) + require.Equal(t, len(data), n) + }() + go func() { + defer wg.Done() + b := make([]byte, 2*maxChunkSize) + n, err := local.Read(b) + require.NoError(t, err) + require.Equal(t, len(data), n) + require.Equal(t, data, b[:n]) + }() + + wg.Wait() +} + +func TestStreamConnWriteChunk(t *testing.T) { + streamConn, local := newStreamPipe() + wg := &sync.WaitGroup{} + wg.Add(2) + + data := make([]byte, maxChunkSize+1) + go func() { + defer wg.Done() + n, err := streamConn.Write(data) + require.NoError(t, err) + require.Equal(t, len(data), n) + }() + go func() { + defer wg.Done() + b := make([]byte, 2*maxChunkSize) + n, err := local.Read(b) + require.NoError(t, err) + require.Equal(t, maxChunkSize, n) + require.Equal(t, data[:n], b[:n]) + + n, err = local.Read(b) + require.NoError(t, err) + require.Equal(t, 1, n) + require.Equal(t, data[:n], b[:n]) + }() + + wg.Wait() +} + +func TestStreamConnRead(t *testing.T) { + streamConn, local := newStreamPipe() + wg := &sync.WaitGroup{} + wg.Add(2) + + data := make([]byte, maxChunkSize+1) + go func() { + b := make([]byte, 2*maxChunkSize) + defer wg.Done() + n, err := streamConn.Read(b) + require.NoError(t, err) + require.Equal(t, len(data), n) + require.Equal(t, data, b[:n]) + }() + go func() { + defer wg.Done() + n, err := local.Write(data) + require.NoError(t, err) + require.Equal(t, len(data), n) + }() + + wg.Wait() +} + +func TestPipeConn(t *testing.T) { + local1, remote1 := net.Pipe() + local2, remote2 := net.Pipe() + + timeout := time.Now().Add(time.Second * 5) + local1.SetReadDeadline(timeout) + local1.SetWriteDeadline(timeout) + local2.SetReadDeadline(timeout) + local2.SetWriteDeadline(timeout) + + var ( + sent int64 + recv int64 + err error + ) + + c := make(chan struct{}) + go func() { + sent, recv, err = pipeConn(context.Background(), remote1, remote2) + close(c) + }() + + data1 := []byte("hello world!") + n1, err := local1.Write(data1) + require.NoError(t, err) + require.Equal(t, len(data1), n1) + + data2 := make([]byte, 2*len(data1)) + n2, err := local2.Read(data2) + require.NoError(t, err) + require.Equal(t, data1, data2[:n2]) + + data3 := []byte("goodbye.") + n3, err := local2.Write(data3) + require.NoError(t, err) + require.Equal(t, len(data3), n3) + + data4 := make([]byte, 2*len(data3)) + n4, err := local1.Read(data4) + require.NoError(t, err) + require.Equal(t, data3, data4[:n4]) + + local1.Close() + timer := time.NewTimer(time.Second * 5) + select { + case <-c: + case <-timer.C: + require.FailNow(t, "timeout waiting for pipeConn to return") + } + + require.Equal(t, int64(len(data3)), sent) + require.Equal(t, int64(len(data1)), recv) +} diff --git a/lib/proxy/service.go b/lib/proxy/service.go index 85f31864356e..7eec84a535d2 100644 --- a/lib/proxy/service.go +++ b/lib/proxy/service.go @@ -25,13 +25,13 @@ import ( "github.com/sirupsen/logrus" ) -// proxyService impelements the grpc ProxyService. +// proxyService implements the grpc ProxyService. type proxyService struct { clusterDialer ClusterDialer log logrus.FieldLogger } -// DialNode opens a bidrectional stream to the requested node. +// DialNode opens a bidirectional stream to the requested node. func (s *proxyService) DialNode(stream proto.ProxyService_DialNodeServer) error { frame, err := stream.Recv() if err != nil { From 41a8e97cf7e4ffdaff29803c31b0ef47c2247c03 Mon Sep 17 00:00:00 2001 From: David Date: Thu, 14 Apr 2022 11:45:45 -0600 Subject: [PATCH 29/30] Add license to conn_test.go --- lib/proxy/conn_test.go | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/lib/proxy/conn_test.go b/lib/proxy/conn_test.go index 5945de67d99a..69197e2e08b8 100644 --- a/lib/proxy/conn_test.go +++ b/lib/proxy/conn_test.go @@ -1,3 +1,17 @@ +// Copyright 2022 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 proxy import ( From 7c047ffcb36cfb231334a68000fa7a9cb38cd7a9 Mon Sep 17 00:00:00 2001 From: David Date: Mon, 18 Apr 2022 10:28:46 -0600 Subject: [PATCH 30/30] Fix concurrent test assertions --- lib/proxy/conn_test.go | 37 +++++++++++++++++++------------------ 1 file changed, 19 insertions(+), 18 deletions(-) diff --git a/lib/proxy/conn_test.go b/lib/proxy/conn_test.go index 69197e2e08b8..0ffec8a853bb 100644 --- a/lib/proxy/conn_test.go +++ b/lib/proxy/conn_test.go @@ -23,6 +23,7 @@ import ( "github.com/gravitational/teleport/api/client/proto" "github.com/gravitational/teleport/lib/utils" + "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" ) @@ -81,16 +82,16 @@ func TestStreamConnWrite(t *testing.T) { go func() { defer wg.Done() n, err := streamConn.Write(data) - require.NoError(t, err) - require.Equal(t, len(data), n) + assert.NoError(t, err) + assert.Equal(t, len(data), n) }() go func() { defer wg.Done() b := make([]byte, 2*maxChunkSize) n, err := local.Read(b) - require.NoError(t, err) - require.Equal(t, len(data), n) - require.Equal(t, data, b[:n]) + assert.NoError(t, err) + assert.Equal(t, len(data), n) + assert.Equal(t, data, b[:n]) }() wg.Wait() @@ -105,21 +106,21 @@ func TestStreamConnWriteChunk(t *testing.T) { go func() { defer wg.Done() n, err := streamConn.Write(data) - require.NoError(t, err) - require.Equal(t, len(data), n) + assert.NoError(t, err) + assert.Equal(t, len(data), n) }() go func() { defer wg.Done() b := make([]byte, 2*maxChunkSize) n, err := local.Read(b) - require.NoError(t, err) - require.Equal(t, maxChunkSize, n) - require.Equal(t, data[:n], b[:n]) + assert.NoError(t, err) + assert.Equal(t, maxChunkSize, n) + assert.Equal(t, data[:n], b[:n]) n, err = local.Read(b) - require.NoError(t, err) - require.Equal(t, 1, n) - require.Equal(t, data[:n], b[:n]) + assert.NoError(t, err) + assert.Equal(t, 1, n) + assert.Equal(t, data[:n], b[:n]) }() wg.Wait() @@ -135,15 +136,15 @@ func TestStreamConnRead(t *testing.T) { b := make([]byte, 2*maxChunkSize) defer wg.Done() n, err := streamConn.Read(b) - require.NoError(t, err) - require.Equal(t, len(data), n) - require.Equal(t, data, b[:n]) + assert.NoError(t, err) + assert.Equal(t, len(data), n) + assert.Equal(t, data, b[:n]) }() go func() { defer wg.Done() n, err := local.Write(data) - require.NoError(t, err) - require.Equal(t, len(data), n) + assert.NoError(t, err) + assert.Equal(t, len(data), n) }() wg.Wait()