diff --git a/api/proto/teleport/legacy/types/events/events.proto b/api/proto/teleport/legacy/types/events/events.proto index 6d8e641f835..19df57e9c18 100644 --- a/api/proto/teleport/legacy/types/events/events.proto +++ b/api/proto/teleport/legacy/types/events/events.proto @@ -553,6 +553,13 @@ message DesktopRecording { // DelayMilliseconds is the delay in milliseconds from the start of the session int64 DelayMilliseconds = 3 [(gogoproto.jsontag) = "ms"]; // JSON tag intentionally matches SessionPrintEvent + + // TDPBMessage is the encoded TDPB message. + // Only one of [Message, TDPBMessage] will be set. + bytes TDPBMessage = 4 [ + (gogoproto.nullable) = true, + (gogoproto.jsontag) = "tdpb_message" + ]; } // DesktopClipboardReceive is emitted when Teleport receives diff --git a/api/types/events/events.pb.go b/api/types/events/events.pb.go index ed0958361fd..bdb993a382b 100644 --- a/api/types/events/events.pb.go +++ b/api/types/events/events.pb.go @@ -1579,7 +1579,10 @@ type DesktopRecording struct { // Message is the encoded TDP message. Message []byte `protobuf:"bytes,2,opt,name=Message,proto3" json:"message"` // DelayMilliseconds is the delay in milliseconds from the start of the session - DelayMilliseconds int64 `protobuf:"varint,3,opt,name=DelayMilliseconds,proto3" json:"ms"` + DelayMilliseconds int64 `protobuf:"varint,3,opt,name=DelayMilliseconds,proto3" json:"ms"` + // TDPBMessage is the encoded TDPB message. + // Only one of [Message, TDPBMessage] will be set. + TDPBMessage []byte `protobuf:"bytes,4,opt,name=TDPBMessage,proto3" json:"tdpb_message"` XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_unrecognized []byte `json:"-"` XXX_sizecache int32 `json:"-"` @@ -19941,1405 +19944,1406 @@ func init() { } var fileDescriptor_007ba1c3d6266d56 = []byte{ - // 22354 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0xfd, 0x79, 0x9c, 0x24, 0x49, - 0x56, 0x18, 0x08, 0x67, 0x1c, 0x79, 0xbd, 0xbc, 0x22, 0xad, 0xae, 0xa8, 0xea, 0xaa, 0x8e, 0xee, - 0xe8, 0xee, 0x9a, 0xaa, 0x9e, 0x9e, 0xaa, 0xee, 0xea, 0x63, 0xa6, 0xa7, 0x7b, 0xa6, 0x3b, 0x32, - 0x32, 0xb3, 0x32, 0xaa, 0xf2, 0x88, 0xf6, 0xc8, 0xaa, 0xea, 0x9e, 0x2b, 0xf0, 0x0c, 0xb7, 0xca, - 0xf4, 0xce, 0x48, 0xf7, 0x18, 0x77, 0x8f, 0xca, 0xca, 0xd6, 0xf7, 0xed, 0x82, 0x04, 0x08, 0xa4, - 0x01, 0x66, 0x67, 0x84, 0x06, 0x0d, 0x92, 0x96, 0x4b, 0xbb, 0x08, 0x10, 0x2c, 0x5a, 0x16, 0xc4, - 0x25, 0x40, 0x88, 0x65, 0x38, 0xc5, 0x21, 0x58, 0x16, 0x50, 0x02, 0x23, 0x58, 0xed, 0xe6, 0xb2, - 0x5a, 0x16, 0xb1, 0x02, 0x69, 0x57, 0xfa, 0xed, 0xcf, 0x9e, 0x99, 0xbb, 0x9b, 0x9b, 0x7b, 0x44, - 0x9e, 0x43, 0x56, 0x76, 0xe5, 0x3f, 0x55, 0x19, 0xef, 0x3d, 0x7b, 0x66, 0xfe, 0xec, 0x99, 0xd9, - 0xb3, 0xe3, 0xbd, 0x07, 0x97, 0x3d, 0xda, 0xa4, 0x2d, 0xdb, 0xf1, 0xae, 0x36, 0xe9, 0xb2, 0xde, - 0xd8, 0xb8, 0xea, 0x6d, 0xb4, 0xa8, 0x7b, 0x95, 0xde, 0xa3, 0x96, 0xe7, 0xff, 0x77, 0xa5, 0xe5, - 0xd8, 0x9e, 0x4d, 0xfa, 0xf8, 0xaf, 0x73, 0x27, 0x97, 0xed, 0x65, 0x1b, 0x41, 0x57, 0xd9, 0x5f, - 0x1c, 0x7b, 0xee, 0xfc, 0xb2, 0x6d, 0x2f, 0x37, 0xe9, 0x55, 0xfc, 0xb5, 0xd4, 0xbe, 0x7b, 0xd5, - 0xf5, 0x9c, 0x76, 0xc3, 0x13, 0xd8, 0x82, 0x8a, 0xf5, 0xcc, 0x35, 0xea, 0x7a, 0xfa, 0x5a, 0x4b, - 0x10, 0x3c, 0xaa, 0x12, 0xac, 0x3b, 0x7a, 0xab, 0x45, 0x1d, 0x51, 0xf9, 0xb9, 0xf7, 0x04, 0xed, - 0xd4, 0x1b, 0x0d, 0xea, 0xba, 0x4d, 0xd3, 0xf5, 0xae, 0xde, 0x7b, 0x4e, 0xfa, 0x25, 0x08, 0x1f, - 0x4f, 0xfe, 0x20, 0xfc, 0x57, 0x90, 0xbc, 0x2f, 0x99, 0xc4, 0xaf, 0x51, 0xa9, 0xba, 0xf8, 0x99, - 0x34, 0x0c, 0xcc, 0x51, 0x4f, 0x37, 0x74, 0x4f, 0x27, 0xe7, 0xa1, 0xb7, 0x62, 0x19, 0xf4, 0x7e, - 0x3e, 0xf5, 0x58, 0xea, 0x52, 0x66, 0xa2, 0x6f, 0x6b, 0xb3, 0x90, 0xa6, 0xa6, 0xc6, 0x81, 0xe4, - 0x02, 0x64, 0x17, 0x37, 0x5a, 0x34, 0x9f, 0x7e, 0x2c, 0x75, 0x69, 0x70, 0x62, 0x70, 0x6b, 0xb3, - 0xd0, 0x8b, 0x42, 0xd3, 0x10, 0x4c, 0x1e, 0x87, 0x74, 0x65, 0x32, 0x9f, 0x41, 0xe4, 0xf8, 0xd6, - 0x66, 0x61, 0xa4, 0x6d, 0x1a, 0xcf, 0xd8, 0x6b, 0xa6, 0x47, 0xd7, 0x5a, 0xde, 0x86, 0x96, 0xae, - 0x4c, 0x92, 0x8b, 0x90, 0x2d, 0xdb, 0x06, 0xcd, 0x67, 0x91, 0x88, 0x6c, 0x6d, 0x16, 0x46, 0x1b, - 0xb6, 0x41, 0x25, 0x2a, 0xc4, 0x93, 0xd7, 0x21, 0xbb, 0x68, 0xae, 0xd1, 0x7c, 0xef, 0x63, 0xa9, - 0x4b, 0x43, 0xd7, 0xce, 0x5d, 0xe1, 0xe2, 0xbb, 0xe2, 0x8b, 0xef, 0xca, 0xa2, 0x2f, 0xdf, 0x89, - 0xdc, 0x17, 0x36, 0x0b, 0x3d, 0x5b, 0x9b, 0x85, 0x2c, 0x13, 0xf9, 0xa7, 0x7f, 0xaf, 0x90, 0xd2, - 0xb0, 0x24, 0x79, 0x15, 0x86, 0xca, 0xcd, 0xb6, 0xeb, 0x51, 0x67, 0x5e, 0x5f, 0xa3, 0xf9, 0x3e, - 0xac, 0xf0, 0xdc, 0xd6, 0x66, 0xe1, 0x74, 0x83, 0x83, 0xeb, 0x96, 0xbe, 0x26, 0x57, 0x2c, 0x93, - 0x17, 0xff, 0x49, 0x0a, 0xc6, 0x6a, 0xd4, 0x75, 0x4d, 0xdb, 0x0a, 0x64, 0xf3, 0x14, 0x0c, 0x0a, - 0x50, 0x65, 0x12, 0xe5, 0x33, 0x38, 0xd1, 0xbf, 0xb5, 0x59, 0xc8, 0xb8, 0xa6, 0xa1, 0x85, 0x18, - 0xf2, 0x2c, 0xf4, 0xdf, 0x31, 0xbd, 0x95, 0xb9, 0xe9, 0x92, 0x90, 0xd3, 0xe9, 0xad, 0xcd, 0x02, - 0x59, 0x37, 0xbd, 0x95, 0xfa, 0xda, 0x5d, 0x5d, 0xaa, 0xd0, 0x27, 0x23, 0xb3, 0x90, 0xab, 0x3a, - 0xe6, 0x3d, 0xdd, 0xa3, 0x37, 0xe9, 0x46, 0xd5, 0x6e, 0x9a, 0x8d, 0x0d, 0x21, 0xc5, 0xc7, 0xb6, - 0x36, 0x0b, 0xe7, 0x5b, 0x1c, 0x57, 0x5f, 0xa5, 0x1b, 0xf5, 0x16, 0x62, 0x25, 0x26, 0xb1, 0x92, - 0xc5, 0x6f, 0x1b, 0x84, 0xe1, 0x5b, 0x2e, 0x75, 0x82, 0x76, 0x5f, 0x84, 0x2c, 0xfb, 0x2d, 0x9a, - 0x8c, 0x32, 0x6f, 0xbb, 0xd4, 0x91, 0x65, 0xce, 0xf0, 0xe4, 0x32, 0xf4, 0xce, 0xda, 0xcb, 0xa6, - 0x25, 0x9a, 0x7d, 0x62, 0x6b, 0xb3, 0x30, 0xd6, 0x64, 0x00, 0x89, 0x92, 0x53, 0x90, 0x0f, 0xc3, - 0x70, 0x65, 0x8d, 0xe9, 0x90, 0x6d, 0xe9, 0x9e, 0xed, 0x88, 0xd6, 0xa2, 0x74, 0x4d, 0x09, 0x2e, - 0x15, 0x8c, 0xd0, 0x93, 0x0f, 0x02, 0x94, 0xee, 0xd4, 0x34, 0xbb, 0x49, 0x4b, 0xda, 0xbc, 0x50, - 0x06, 0x2c, 0xad, 0xaf, 0xbb, 0x75, 0xc7, 0x6e, 0xd2, 0xba, 0xee, 0xc8, 0xd5, 0x4a, 0xd4, 0x64, - 0x0a, 0x46, 0x4b, 0x38, 0x2a, 0x34, 0xfa, 0xc9, 0x36, 0x75, 0x3d, 0x37, 0xdf, 0xfb, 0x58, 0xe6, - 0xd2, 0xe0, 0xc4, 0x85, 0xad, 0xcd, 0xc2, 0x59, 0x3e, 0x5e, 0xea, 0x8e, 0x40, 0x49, 0x2c, 0x94, - 0x42, 0x64, 0x02, 0x46, 0x4a, 0xef, 0xb4, 0x1d, 0x5a, 0x31, 0xa8, 0xe5, 0x99, 0xde, 0x86, 0xd0, - 0x90, 0xf3, 0x5b, 0x9b, 0x85, 0xbc, 0xce, 0x10, 0x75, 0x53, 0x60, 0x24, 0x26, 0xd1, 0x22, 0x64, - 0x01, 0xc6, 0xaf, 0x97, 0xab, 0x35, 0xea, 0xdc, 0x33, 0x1b, 0xb4, 0xd4, 0x68, 0xd8, 0x6d, 0xcb, - 0xcb, 0xf7, 0x23, 0x9f, 0xc7, 0xb7, 0x36, 0x0b, 0x17, 0x96, 0x1b, 0xad, 0xba, 0xcb, 0xb1, 0x75, - 0x9d, 0xa3, 0x25, 0x66, 0xf1, 0xb2, 0xe4, 0x23, 0x30, 0xb2, 0xe8, 0x30, 0x2d, 0x34, 0x26, 0x29, - 0x83, 0xe7, 0x07, 0x50, 0xff, 0x4f, 0x5f, 0x11, 0x33, 0x15, 0x87, 0xfa, 0x3d, 0xcb, 0x1b, 0xeb, - 0xf1, 0x02, 0x75, 0x03, 0x71, 0x72, 0x63, 0x23, 0xac, 0x08, 0x85, 0x3c, 0xfb, 0x78, 0xd3, 0xa1, - 0x46, 0x4c, 0xdb, 0x06, 0xb1, 0xcd, 0x97, 0xb7, 0x36, 0x0b, 0x4f, 0x39, 0x82, 0xa6, 0xde, 0x55, - 0xed, 0x3a, 0xb2, 0x22, 0x53, 0x30, 0xc0, 0xb4, 0xe9, 0xa6, 0x69, 0x19, 0x79, 0x78, 0x2c, 0x75, - 0x69, 0xf4, 0x5a, 0xce, 0x6f, 0xbd, 0x0f, 0x9f, 0x38, 0xb3, 0xb5, 0x59, 0x38, 0xc1, 0x74, 0xb0, - 0xbe, 0x6a, 0x5a, 0xf2, 0x14, 0x11, 0x14, 0x65, 0xa3, 0x68, 0xc2, 0xf6, 0x70, 0xe8, 0x0e, 0x85, - 0xa3, 0x68, 0xc9, 0xf6, 0xd4, 0x61, 0xeb, 0x93, 0x91, 0x32, 0x8c, 0x4c, 0xd8, 0x5e, 0xc5, 0x72, - 0x3d, 0xdd, 0x6a, 0xd0, 0xca, 0x64, 0x7e, 0x18, 0xcb, 0xa1, 0x5a, 0xb0, 0x72, 0xa6, 0xc0, 0xd4, - 0x23, 0x93, 0x52, 0xb4, 0x0c, 0x99, 0x03, 0x60, 0x4d, 0x58, 0x70, 0x4c, 0x36, 0x10, 0x46, 0xb0, - 0xfd, 0x44, 0x6e, 0x3f, 0xc7, 0x4c, 0x9c, 0xdd, 0xda, 0x2c, 0x9c, 0xc2, 0x2f, 0xb0, 0x11, 0x20, - 0xeb, 0x6a, 0x48, 0x46, 0x5e, 0x82, 0x41, 0xf6, 0x8b, 0xa9, 0xae, 0x9b, 0x1f, 0x45, 0x35, 0xcd, - 0x6f, 0x6d, 0x16, 0x4e, 0x62, 0x49, 0xa6, 0xe7, 0xb2, 0x86, 0x86, 0xa4, 0xe4, 0xb3, 0x29, 0xde, - 0x8e, 0x45, 0x47, 0x37, 0x3d, 0x37, 0x3f, 0x86, 0x5a, 0x70, 0xea, 0x4a, 0x30, 0x73, 0xcf, 0xea, - 0x4b, 0xb4, 0x79, 0x5b, 0x6f, 0xb6, 0xa9, 0x3b, 0xf1, 0x31, 0x36, 0x01, 0xfe, 0xf6, 0x66, 0xe1, - 0x95, 0x65, 0xd3, 0x5b, 0x69, 0x2f, 0x5d, 0x69, 0xd8, 0x6b, 0x57, 0x97, 0x1d, 0xfd, 0x9e, 0xe9, - 0xe9, 0x9e, 0x69, 0x5b, 0x7a, 0xf3, 0x6a, 0xb8, 0xb6, 0xb4, 0x4c, 0x65, 0x31, 0xb8, 0xc2, 0x6b, - 0x08, 0xbe, 0xc6, 0xc3, 0x9f, 0xea, 0xd7, 0x70, 0x22, 0x52, 0x81, 0x31, 0xf6, 0x4b, 0x9e, 0x56, - 0x73, 0x28, 0xe3, 0xc2, 0xd6, 0x66, 0xe1, 0x11, 0x2c, 0xdf, 0x61, 0x6e, 0x55, 0xcb, 0x15, 0xff, - 0x3c, 0x0b, 0xa3, 0x4c, 0xf7, 0xa5, 0x69, 0xaa, 0xc4, 0x66, 0x5c, 0x06, 0x61, 0x04, 0x6e, 0x4b, - 0x6f, 0x50, 0x31, 0x63, 0xa1, 0xb6, 0x58, 0x3e, 0x50, 0xe6, 0xaa, 0xd0, 0x93, 0xcb, 0x30, 0xc0, - 0x41, 0x95, 0x49, 0x31, 0x89, 0x8d, 0x6c, 0x6d, 0x16, 0x06, 0x5d, 0x84, 0xd5, 0x4d, 0x43, 0x0b, - 0xd0, 0x6c, 0x16, 0xe1, 0x7f, 0xcf, 0xd8, 0xae, 0xc7, 0x98, 0x8b, 0x39, 0x0c, 0xd5, 0x45, 0x14, - 0x58, 0x11, 0x28, 0x79, 0x16, 0x89, 0x16, 0x22, 0x2f, 0x03, 0x70, 0x48, 0xc9, 0x30, 0x1c, 0x31, - 0x91, 0xa1, 0x6e, 0x08, 0x16, 0xba, 0x61, 0xc8, 0xb3, 0xa0, 0x44, 0x4c, 0xd6, 0x60, 0x98, 0xff, - 0xc2, 0xce, 0xe4, 0xb3, 0xd8, 0xd0, 0xb5, 0x4b, 0xbe, 0xb2, 0x45, 0xa5, 0x73, 0x45, 0x26, 0x9d, - 0xb2, 0x3c, 0x67, 0x63, 0xa2, 0x20, 0x16, 0xbe, 0x33, 0xa2, 0xaa, 0x26, 0xe2, 0xe4, 0x29, 0x57, - 0x2e, 0xc3, 0xd6, 0xc3, 0x69, 0xdb, 0x59, 0xd7, 0x1d, 0x83, 0x1a, 0x13, 0x1b, 0xf2, 0x7a, 0x78, - 0xd7, 0x07, 0xd7, 0x97, 0xe4, 0x21, 0x2e, 0x93, 0xb3, 0xc1, 0xc5, 0xb9, 0xd5, 0xda, 0x4b, 0x38, - 0xb4, 0xfb, 0x63, 0xd2, 0x72, 0xdb, 0x4b, 0xea, 0x70, 0x8e, 0x96, 0x61, 0x53, 0x2e, 0x07, 0xdc, - 0xa6, 0x0e, 0x5b, 0x2c, 0x71, 0x76, 0x13, 0x53, 0xae, 0x60, 0x72, 0x8f, 0x63, 0xe2, 0x3c, 0x44, - 0x91, 0x73, 0xaf, 0xc1, 0x78, 0x4c, 0x14, 0x24, 0x07, 0x99, 0x55, 0xba, 0xc1, 0xd5, 0x45, 0x63, - 0x7f, 0x92, 0x93, 0xd0, 0x7b, 0x8f, 0x0d, 0x0f, 0xae, 0x06, 0x1a, 0xff, 0xf1, 0xc1, 0xf4, 0x07, - 0x52, 0x6c, 0x65, 0x27, 0x65, 0xdb, 0xb2, 0x68, 0xc3, 0x93, 0x17, 0xf7, 0x97, 0x60, 0x70, 0xd6, - 0x6e, 0xe8, 0x4d, 0xec, 0x47, 0xae, 0x77, 0x38, 0x52, 0x59, 0x07, 0x5e, 0x69, 0x32, 0x8c, 0x3c, - 0x52, 0x03, 0x52, 0xa6, 0x00, 0x1a, 0x5d, 0xb3, 0x3d, 0x8a, 0x05, 0xd3, 0xa1, 0x02, 0x60, 0x41, - 0x07, 0x51, 0xb2, 0x02, 0x84, 0xc4, 0xe4, 0x2a, 0x0c, 0x54, 0x99, 0x3d, 0xd3, 0xb0, 0x9b, 0x42, - 0xf9, 0x70, 0xc9, 0x45, 0x1b, 0x47, 0x9e, 0x13, 0x7d, 0xa2, 0xe2, 0x0c, 0x8c, 0x96, 0x9b, 0x26, - 0xb5, 0x3c, 0xb9, 0xd5, 0x6c, 0x64, 0x95, 0x96, 0xa9, 0xe5, 0xc9, 0xad, 0xc6, 0xb1, 0xa8, 0x33, - 0xa8, 0x3a, 0xbf, 0x20, 0x69, 0xf1, 0x97, 0x33, 0x70, 0xf6, 0x66, 0x7b, 0x89, 0x3a, 0x16, 0xf5, - 0xa8, 0x2b, 0x06, 0x66, 0xc0, 0x75, 0x1e, 0xc6, 0x63, 0x48, 0xc1, 0x1d, 0x0d, 0x92, 0xd5, 0x00, - 0xe9, 0x8f, 0x77, 0x79, 0x55, 0x8b, 0x15, 0x25, 0x33, 0x30, 0x16, 0x02, 0x59, 0x23, 0xdc, 0x7c, - 0x1a, 0xe7, 0xc2, 0x47, 0xb7, 0x36, 0x0b, 0xe7, 0x24, 0x6e, 0xac, 0xd9, 0xb2, 0x06, 0xab, 0xc5, - 0xc8, 0x4d, 0xc8, 0x85, 0xa0, 0xeb, 0x8e, 0xdd, 0x6e, 0xb9, 0xf9, 0x0c, 0xb2, 0xc2, 0x29, 0x48, - 0x62, 0xb5, 0x8c, 0x48, 0xd9, 0x50, 0x52, 0x0b, 0x92, 0xaf, 0x4c, 0xc9, 0xdc, 0xc4, 0x28, 0xcc, - 0xe2, 0x28, 0x7c, 0xbf, 0x3f, 0x0a, 0x3b, 0x0a, 0xe9, 0x8a, 0x5a, 0x52, 0x0c, 0x4a, 0xa5, 0x19, - 0xb1, 0x41, 0x19, 0xab, 0xf1, 0x5c, 0x19, 0x4e, 0x25, 0xf2, 0xda, 0x95, 0x56, 0xff, 0x51, 0x46, - 0xe6, 0x52, 0xb5, 0x8d, 0xa0, 0x33, 0x17, 0xe4, 0xce, 0xac, 0xda, 0x06, 0x4e, 0xdb, 0xa9, 0xd0, - 0x46, 0x91, 0x1a, 0xdb, 0xb2, 0x0d, 0x75, 0xe2, 0x8e, 0x97, 0x25, 0x9f, 0x80, 0xd3, 0x31, 0x20, - 0x9f, 0xae, 0xb9, 0xf6, 0x5f, 0xdc, 0xda, 0x2c, 0x14, 0x13, 0xb8, 0xaa, 0xb3, 0x77, 0x07, 0x2e, - 0x44, 0x87, 0x33, 0x92, 0xd4, 0x6d, 0xcb, 0xd3, 0x4d, 0x4b, 0xac, 0x36, 0x7c, 0x94, 0xbc, 0x67, - 0x6b, 0xb3, 0xf0, 0x84, 0xac, 0x83, 0x3e, 0x8d, 0xda, 0xf8, 0x4e, 0x7c, 0x88, 0x01, 0xf9, 0x04, - 0x54, 0x65, 0x4d, 0x5f, 0xf6, 0x77, 0x26, 0x97, 0xb6, 0x36, 0x0b, 0x4f, 0x26, 0xd6, 0x61, 0x32, - 0x2a, 0xd9, 0x12, 0xea, 0xc4, 0x89, 0x68, 0x40, 0x42, 0xdc, 0xbc, 0x6d, 0x50, 0xfc, 0x86, 0x5e, - 0xe4, 0x5f, 0xdc, 0xda, 0x2c, 0x3c, 0x2a, 0xf1, 0xb7, 0x6c, 0x83, 0xaa, 0xcd, 0x4f, 0x28, 0x5d, - 0xfc, 0xfd, 0x0c, 0x9c, 0xbe, 0x63, 0x5a, 0x86, 0xbd, 0xee, 0x4e, 0x52, 0x77, 0xd5, 0xb3, 0x5b, - 0x41, 0x47, 0x7f, 0x14, 0x4e, 0x45, 0x31, 0xc2, 0xb6, 0x14, 0x9d, 0xfd, 0xd4, 0xd6, 0x66, 0xe1, - 0xf1, 0x75, 0x4e, 0x50, 0x37, 0x38, 0x85, 0x6f, 0x9c, 0x4a, 0x95, 0x26, 0xf3, 0x60, 0xab, 0x87, - 0x80, 0x48, 0xf3, 0x1c, 0xae, 0x1e, 0x3e, 0x2b, 0x65, 0xa5, 0x93, 0xc9, 0xc9, 0x0b, 0xd0, 0x37, - 0x69, 0xaf, 0xe9, 0xa6, 0x25, 0x7a, 0x10, 0x67, 0xfc, 0xa0, 0x2d, 0x88, 0x91, 0x8a, 0x0a, 0x5a, - 0x56, 0xa7, 0x68, 0x0c, 0x6e, 0x5f, 0xa4, 0x5d, 0x82, 0x5f, 0x54, 0xd9, 0xc6, 0xc8, 0xe4, 0xa4, - 0x0d, 0x23, 0xa2, 0x09, 0x91, 0xf5, 0xf5, 0x39, 0x7f, 0x64, 0x27, 0x4b, 0xf1, 0x4a, 0xa4, 0x0c, - 0x1f, 0xd3, 0xd8, 0x5a, 0xff, 0x33, 0x63, 0x03, 0x3a, 0x5a, 0xcb, 0xb9, 0xd7, 0x81, 0xc4, 0x59, - 0xec, 0x6e, 0x81, 0xca, 0xc0, 0xa3, 0xb5, 0xd2, 0xdc, 0x6c, 0xc5, 0xf0, 0x77, 0x07, 0x55, 0xc7, - 0xbe, 0x67, 0x1a, 0xd2, 0x04, 0xbd, 0x04, 0x67, 0x14, 0xd4, 0x14, 0x6e, 0x48, 0x82, 0x7d, 0x29, - 0xaa, 0xaf, 0xbf, 0xf3, 0x68, 0x09, 0x9a, 0x3a, 0xdf, 0xb5, 0x44, 0xed, 0xdf, 0x4e, 0x8c, 0xd8, - 0x30, 0x54, 0x50, 0xb5, 0x15, 0xdb, 0xf1, 0x1a, 0x6d, 0x4f, 0xf4, 0x3e, 0x0e, 0xc3, 0x58, 0x1d, - 0xae, 0x20, 0xea, 0x52, 0x85, 0xcf, 0x87, 0x7c, 0x6d, 0x0a, 0x72, 0x25, 0xcf, 0x73, 0xcc, 0xa5, - 0xb6, 0x47, 0xe7, 0xf4, 0x56, 0xcb, 0xb4, 0x96, 0x71, 0x3a, 0x1f, 0xba, 0xf6, 0x6a, 0x60, 0x06, - 0x75, 0x95, 0xc4, 0x15, 0xb5, 0xb8, 0x34, 0x0b, 0xeb, 0x3e, 0xaa, 0xbe, 0xc6, 0x71, 0xf2, 0x2c, - 0xac, 0x96, 0x63, 0xb3, 0x70, 0x22, 0xaf, 0x5d, 0x75, 0xdd, 0x67, 0x32, 0x70, 0x7e, 0x61, 0xd5, - 0xd3, 0x35, 0xea, 0xda, 0x6d, 0xa7, 0x41, 0xdd, 0x5b, 0x2d, 0x43, 0xf7, 0x68, 0x38, 0x19, 0x17, - 0xa0, 0xb7, 0x64, 0x18, 0xd4, 0x40, 0x76, 0xbd, 0xfc, 0x04, 0x45, 0x67, 0x00, 0x8d, 0xc3, 0xc9, - 0x53, 0xd0, 0x2f, 0xca, 0x20, 0xf7, 0xde, 0x89, 0xa1, 0xad, 0xcd, 0x42, 0x7f, 0x9b, 0x83, 0x34, - 0x1f, 0xc7, 0xc8, 0x26, 0x69, 0x93, 0x32, 0xb2, 0x4c, 0x48, 0x66, 0x70, 0x90, 0xe6, 0xe3, 0xc8, - 0x1b, 0x30, 0x8a, 0x6c, 0x83, 0xf6, 0x88, 0xe5, 0xed, 0xa4, 0x2f, 0x5d, 0xb9, 0xb1, 0xdc, 0xfa, - 0xc0, 0xd6, 0xd4, 0x1d, 0xbf, 0x80, 0xa6, 0x30, 0x20, 0x77, 0x20, 0x27, 0x1a, 0x11, 0x32, 0xed, - 0xed, 0xc2, 0xf4, 0xd4, 0xd6, 0x66, 0x61, 0x5c, 0xb4, 0x5f, 0x62, 0x1b, 0x63, 0xc2, 0x18, 0x8b, - 0x66, 0x87, 0x8c, 0xfb, 0xb6, 0x63, 0x2c, 0xbe, 0x58, 0x66, 0xac, 0x32, 0x29, 0xbe, 0x05, 0xc3, - 0x72, 0x41, 0x72, 0x1a, 0x4f, 0xa9, 0xf8, 0x38, 0xc1, 0xf3, 0x2d, 0xd3, 0xc0, 0xa3, 0xa9, 0xe7, - 0x70, 0x8a, 0x6b, 0x38, 0x66, 0x8b, 0x19, 0x86, 0x42, 0xc9, 0xc7, 0xb6, 0x36, 0x0b, 0x43, 0x46, - 0x08, 0xd6, 0x64, 0x9a, 0xe2, 0xbf, 0x4f, 0xc1, 0x69, 0xc6, 0xbb, 0xe4, 0xba, 0xe6, 0xb2, 0xb5, - 0x26, 0x5b, 0x66, 0xcf, 0x40, 0x5f, 0x0d, 0xeb, 0x13, 0x35, 0x9d, 0xdc, 0xda, 0x2c, 0xe4, 0x78, - 0x0b, 0xe4, 0xa9, 0x8e, 0xd3, 0x04, 0x47, 0x34, 0xe9, 0x6d, 0x8e, 0x68, 0xd8, 0xae, 0xc5, 0xd3, - 0x1d, 0xcf, 0xb4, 0x96, 0x6b, 0x9e, 0xee, 0xb5, 0xdd, 0xc8, 0xae, 0x45, 0x60, 0xea, 0x2e, 0xa2, - 0x22, 0xbb, 0x96, 0x48, 0x21, 0xf2, 0x1a, 0x0c, 0x4f, 0x59, 0x46, 0xc8, 0x84, 0x4f, 0xad, 0x8f, - 0xb0, 0xcd, 0x04, 0x45, 0x78, 0x9c, 0x45, 0xa4, 0x40, 0xf1, 0x2f, 0x52, 0x90, 0xe7, 0xe7, 0x29, - 0xb3, 0xa6, 0xeb, 0xcd, 0xd1, 0xb5, 0x25, 0x69, 0x76, 0x9a, 0xf6, 0x0f, 0x68, 0x18, 0x4e, 0x32, - 0x37, 0xd0, 0xda, 0x13, 0x07, 0x34, 0x4d, 0xd3, 0x8d, 0xed, 0xe4, 0x95, 0x52, 0xa4, 0x02, 0xfd, - 0x9c, 0x33, 0x37, 0x17, 0x87, 0xae, 0xe5, 0x7d, 0x45, 0x50, 0xab, 0xe6, 0xca, 0xb0, 0xc6, 0x89, - 0xe5, 0xb3, 0x01, 0x51, 0x9e, 0xed, 0x5c, 0xc3, 0x32, 0x8b, 0xa6, 0xd7, 0xf4, 0xd7, 0x79, 0x3e, - 0x53, 0x48, 0x6d, 0xf2, 0x18, 0x52, 0x36, 0x41, 0x95, 0x72, 0xc5, 0x6f, 0xc9, 0x40, 0x4e, 0xad, - 0x9f, 0xdc, 0x81, 0x81, 0x1b, 0xb6, 0x69, 0x51, 0x63, 0xc1, 0xc2, 0x8f, 0xed, 0x7e, 0x64, 0xe9, - 0xef, 0xdc, 0x4e, 0xbc, 0x8d, 0x65, 0xea, 0xf2, 0x7e, 0x07, 0x4f, 0x30, 0x03, 0x66, 0xe4, 0x23, - 0x30, 0xc8, 0x76, 0x0c, 0xf7, 0x90, 0x73, 0x7a, 0x5b, 0xce, 0x8f, 0x09, 0xce, 0x27, 0x1d, 0x5e, - 0x28, 0xce, 0x3a, 0x64, 0xc7, 0x54, 0x54, 0xa3, 0xba, 0x6b, 0xfb, 0xab, 0x32, 0xaa, 0xa8, 0x83, - 0x10, 0x59, 0x45, 0x39, 0x0d, 0xdb, 0xe8, 0xf0, 0x8f, 0xc5, 0x1e, 0x95, 0x76, 0xba, 0x5c, 0xec, - 0x6a, 0x67, 0x4a, 0xc4, 0xc4, 0x82, 0x31, 0xd1, 0x37, 0x2b, 0x66, 0x0b, 0xf7, 0x88, 0x68, 0x05, - 0x8d, 0x5e, 0xbb, 0x78, 0xc5, 0x3f, 0x9a, 0xb8, 0x22, 0x1d, 0x74, 0xdf, 0x7b, 0xee, 0xca, 0x5c, - 0x40, 0x8e, 0xe7, 0x45, 0xa8, 0xde, 0x0a, 0x0b, 0x59, 0x71, 0xd6, 0x22, 0xe4, 0xc5, 0xaf, 0x4e, - 0xc3, 0xfb, 0xc2, 0x2e, 0xd2, 0xe8, 0x3d, 0x93, 0xae, 0x87, 0x1c, 0xc5, 0xc9, 0x15, 0x1b, 0xad, - 0x6e, 0x79, 0x45, 0xb7, 0x96, 0xa9, 0x41, 0x2e, 0x43, 0x2f, 0x3f, 0xa3, 0x49, 0xe1, 0x66, 0x02, - 0x67, 0x42, 0xf5, 0x78, 0x86, 0x53, 0x10, 0x1b, 0xfa, 0xc4, 0xa9, 0x0c, 0x57, 0xca, 0x52, 0x5c, - 0x29, 0x77, 0x50, 0xa3, 0x38, 0x77, 0xe1, 0xcb, 0x15, 0x0a, 0x3e, 0x76, 0xf2, 0x22, 0xaa, 0x39, - 0xf7, 0x32, 0x0c, 0x49, 0xc4, 0xbb, 0x5a, 0x8f, 0xbe, 0xb2, 0x57, 0x1e, 0xa6, 0x7e, 0xb3, 0xc4, - 0x30, 0xbd, 0xca, 0x86, 0x97, 0xeb, 0x32, 0x9b, 0x97, 0x8f, 0x4f, 0x31, 0x88, 0x10, 0x14, 0x1d, - 0x44, 0x08, 0x22, 0xcf, 0xc3, 0x00, 0x67, 0x11, 0x9c, 0xae, 0xe0, 0xc9, 0x8c, 0x83, 0xb0, 0xa8, - 0x55, 0x11, 0x10, 0x92, 0xef, 0x4a, 0xc1, 0x85, 0xae, 0x92, 0x40, 0xe5, 0x1b, 0xba, 0xf6, 0xe2, - 0x9e, 0xc4, 0x38, 0xf1, 0xbe, 0xad, 0xcd, 0xc2, 0x65, 0x49, 0x33, 0x1c, 0x89, 0xa6, 0xde, 0xe0, - 0x44, 0x52, 0xbb, 0xba, 0x37, 0x85, 0x6d, 0x6d, 0x78, 0xa5, 0xd3, 0x78, 0x80, 0x6c, 0x35, 0x36, - 0xfc, 0x46, 0x66, 0xc3, 0xad, 0x8d, 0xf8, 0xde, 0xbb, 0x3e, 0x49, 0x42, 0x35, 0x1d, 0xb8, 0x90, - 0x06, 0x9c, 0xe1, 0x98, 0x49, 0x7d, 0x63, 0xe1, 0xee, 0x9c, 0x6d, 0x79, 0x2b, 0x7e, 0x05, 0xbd, - 0xf2, 0x09, 0x2c, 0x56, 0x60, 0xe8, 0x1b, 0x75, 0xfb, 0x6e, 0x7d, 0x8d, 0x51, 0x25, 0xd4, 0xd1, - 0x89, 0x13, 0x5b, 0x23, 0xc4, 0x18, 0xf7, 0x67, 0xcf, 0xbe, 0xf0, 0x7c, 0xdc, 0x9f, 0x17, 0xe2, - 0x73, 0xa5, 0x52, 0x28, 0x69, 0xca, 0xec, 0xdf, 0xe3, 0x94, 0x59, 0x81, 0xe1, 0x59, 0xbb, 0xb1, - 0x1a, 0x68, 0xde, 0xcb, 0xd0, 0xb7, 0xa8, 0x3b, 0xcb, 0xd4, 0x43, 0xb1, 0x0e, 0x5d, 0x1b, 0xbf, - 0xc2, 0xaf, 0xaf, 0x18, 0x11, 0x47, 0x4c, 0x8c, 0x8a, 0x89, 0xac, 0xcf, 0xc3, 0xdf, 0x9a, 0x28, - 0x50, 0xfc, 0xa7, 0x7d, 0x30, 0x2c, 0xae, 0x5a, 0x70, 0x4d, 0x23, 0x1f, 0x0c, 0x2f, 0xaf, 0xc4, - 0xcc, 0x1b, 0x1c, 0x37, 0x07, 0xc7, 0xe4, 0xc3, 0x8c, 0xd9, 0xaf, 0x6c, 0x16, 0x52, 0x5b, 0x9b, - 0x85, 0x1e, 0x6d, 0x40, 0x3a, 0x3d, 0x09, 0x57, 0x5d, 0xc9, 0xcc, 0x90, 0x2f, 0x4f, 0x94, 0xb2, - 0x7c, 0x15, 0x7e, 0x0d, 0xfa, 0x45, 0x1b, 0x84, 0xf2, 0x9e, 0x09, 0x0f, 0xed, 0x22, 0x57, 0x46, - 0x4a, 0x69, 0xbf, 0x14, 0x79, 0x15, 0xfa, 0xf8, 0x21, 0x96, 0x10, 0xc0, 0xe9, 0xe4, 0x43, 0x3f, - 0xa5, 0xb8, 0x28, 0x43, 0x66, 0x00, 0xc2, 0x03, 0xac, 0xe0, 0x86, 0x4c, 0x70, 0x88, 0x1f, 0x6d, - 0x29, 0x5c, 0xa4, 0xb2, 0xe4, 0x25, 0x18, 0x5e, 0xa4, 0xce, 0x9a, 0x69, 0xe9, 0xcd, 0x9a, 0xf9, - 0x8e, 0x7f, 0x49, 0x86, 0xe6, 0x87, 0x6b, 0xbe, 0x23, 0xf7, 0x69, 0x84, 0x8e, 0x7c, 0x3c, 0xe9, - 0x80, 0xa8, 0x1f, 0x1b, 0xf2, 0xf8, 0xb6, 0x27, 0x27, 0x4a, 0x7b, 0x12, 0xce, 0x8b, 0xde, 0x80, - 0x91, 0xc8, 0xd9, 0x80, 0xb8, 0x05, 0xb9, 0x10, 0x67, 0x2d, 0x1d, 0x74, 0x28, 0x6c, 0xa3, 0x1c, - 0xd8, 0xa0, 0xa8, 0x58, 0xa6, 0x67, 0xea, 0xcd, 0xb2, 0xbd, 0xb6, 0xa6, 0x5b, 0x46, 0x7e, 0x30, - 0x1c, 0x14, 0x26, 0xc7, 0xd4, 0x1b, 0x1c, 0x25, 0x0f, 0x8a, 0x68, 0x21, 0x72, 0x13, 0x72, 0xa2, - 0x0f, 0x35, 0xda, 0xb0, 0x1d, 0x66, 0x11, 0xe1, 0x25, 0x87, 0x18, 0x15, 0x2e, 0xc7, 0xd5, 0x1d, - 0x1f, 0x29, 0x6f, 0x39, 0xd4, 0x82, 0x6c, 0x02, 0xae, 0x58, 0xf7, 0x4c, 0x66, 0xc4, 0x0f, 0x63, - 0x63, 0x70, 0x02, 0x36, 0x39, 0x48, 0x9e, 0x80, 0x05, 0x95, 0xb4, 0x60, 0x8f, 0x6c, 0xbf, 0x60, - 0xdf, 0xc8, 0x0e, 0x0c, 0xe5, 0x86, 0xd5, 0x6b, 0xaf, 0xe2, 0x3f, 0xcc, 0xc0, 0x90, 0x68, 0x09, - 0x33, 0x32, 0x8e, 0xc7, 0xcf, 0x7e, 0xc6, 0x4f, 0xe2, 0x38, 0xe8, 0x3b, 0xa8, 0x71, 0x50, 0xfc, - 0x54, 0x3a, 0x98, 0xec, 0xaa, 0x8e, 0x69, 0xed, 0x6f, 0xb2, 0xbb, 0x08, 0x50, 0x5e, 0x69, 0x5b, - 0xab, 0xfc, 0x7a, 0x3f, 0x1d, 0x5e, 0xef, 0x37, 0x4c, 0x4d, 0xc2, 0x90, 0x0b, 0x90, 0x9d, 0x64, - 0xfc, 0x59, 0xcf, 0x0c, 0x4f, 0x0c, 0x7e, 0x81, 0x73, 0x4a, 0xbd, 0x4f, 0x43, 0x30, 0xdb, 0xc1, - 0x4e, 0x6c, 0x78, 0x94, 0xef, 0x19, 0x32, 0x7c, 0x07, 0xbb, 0xc4, 0x00, 0x1a, 0x87, 0x93, 0x17, - 0x60, 0x7c, 0x92, 0x36, 0xf5, 0x8d, 0x39, 0xb3, 0xd9, 0x34, 0x5d, 0xda, 0xb0, 0x2d, 0xc3, 0x45, - 0x21, 0x8b, 0xea, 0xd6, 0x5c, 0x2d, 0x4e, 0x40, 0x8a, 0xd0, 0xb7, 0x70, 0xf7, 0xae, 0x4b, 0x3d, - 0x14, 0x5f, 0x66, 0x02, 0xd8, 0xdc, 0x6f, 0x23, 0x44, 0x13, 0x98, 0xe2, 0xf7, 0xa5, 0xd8, 0x16, - 0x11, 0xcf, 0x56, 0xc2, 0x41, 0xb4, 0x1f, 0x91, 0x5c, 0x0e, 0x2d, 0xa0, 0x34, 0x7e, 0xed, 0x98, - 0xf8, 0xda, 0x7e, 0x61, 0x05, 0x85, 0xb6, 0x4f, 0xe2, 0x57, 0x65, 0xb6, 0xf9, 0xaa, 0xe2, 0x77, - 0x64, 0xe0, 0x8c, 0x68, 0x71, 0xb9, 0x69, 0xb6, 0x96, 0x6c, 0xdd, 0x31, 0x34, 0xda, 0xa0, 0xe6, - 0x3d, 0x7a, 0x34, 0x07, 0x5e, 0x74, 0xe8, 0x64, 0xf7, 0x31, 0x74, 0xae, 0x45, 0x0f, 0x14, 0xb9, - 0xf9, 0x93, 0xdb, 0xda, 0x2c, 0x0c, 0xcb, 0x07, 0x8a, 0xd1, 0x63, 0xc4, 0x22, 0xf4, 0xcd, 0x52, - 0x6b, 0xd9, 0x5b, 0x41, 0x25, 0xe9, 0xe5, 0x4a, 0xd2, 0x44, 0x88, 0x26, 0x30, 0x12, 0x5f, 0xdc, - 0xa7, 0xf4, 0xc7, 0xf9, 0xb2, 0x8d, 0x8a, 0x26, 0x13, 0x15, 0xbf, 0x35, 0x03, 0x27, 0xd5, 0x6e, - 0xaa, 0x51, 0xcb, 0x38, 0xee, 0xa3, 0x07, 0xa7, 0x8f, 0xbe, 0x33, 0x0b, 0x8f, 0xf8, 0x67, 0xd2, - 0x2b, 0xba, 0x43, 0x8d, 0x49, 0xd3, 0xa1, 0x0d, 0xcf, 0x76, 0x36, 0x8e, 0xb0, 0x1d, 0x78, 0x70, - 0x5d, 0xf5, 0x02, 0xf4, 0x89, 0xb3, 0x1c, 0xbe, 0x9e, 0x8d, 0x06, 0x2d, 0x41, 0x68, 0x6c, 0x25, - 0xe4, 0xe7, 0x40, 0x4a, 0x07, 0xf7, 0xed, 0xa4, 0x83, 0x3f, 0x00, 0x23, 0x81, 0xe8, 0xa5, 0xee, - 0x43, 0xa3, 0xd1, 0xf0, 0x11, 0xbc, 0x03, 0xa3, 0x84, 0x58, 0x9b, 0x0f, 0xa8, 0x4c, 0xa2, 0x51, - 0x37, 0x22, 0x6a, 0x0b, 0xca, 0x99, 0x86, 0x26, 0x13, 0xa9, 0xaa, 0x32, 0xb8, 0x13, 0x55, 0xf9, - 0x4c, 0x2f, 0x9c, 0x4b, 0x56, 0x15, 0x8d, 0xea, 0xc6, 0xb1, 0xa6, 0xbc, 0x3b, 0x35, 0xe5, 0x71, - 0xc8, 0x56, 0x75, 0x6f, 0x45, 0xa8, 0x08, 0xbe, 0xfb, 0xb8, 0x6b, 0x36, 0x69, 0xbd, 0xa5, 0x7b, - 0x2b, 0x1a, 0xa2, 0xa4, 0xb9, 0x09, 0x90, 0x63, 0xd2, 0xdc, 0x14, 0x1a, 0x22, 0x43, 0x8f, 0xa5, - 0x2e, 0x65, 0x93, 0x0c, 0x11, 0x55, 0x29, 0x87, 0x77, 0xa2, 0x94, 0x9f, 0xed, 0xed, 0x34, 0x7f, - 0xdd, 0x71, 0x4c, 0x8f, 0x1e, 0x6b, 0xe5, 0xb1, 0x56, 0x1e, 0x82, 0x56, 0xfe, 0x5a, 0x1a, 0x46, - 0x82, 0x7d, 0xe9, 0xdb, 0xb4, 0x71, 0x38, 0xeb, 0x68, 0xb8, 0x9d, 0xcb, 0xec, 0x7b, 0x3b, 0xb7, - 0x1f, 0x25, 0x2c, 0x06, 0xfb, 0x6b, 0x6e, 0xea, 0xa0, 0x94, 0xf9, 0xfe, 0x3a, 0x38, 0x06, 0x7f, - 0x1c, 0xfa, 0xe7, 0xf4, 0xfb, 0xe6, 0x5a, 0x7b, 0x4d, 0xec, 0x54, 0xf0, 0x09, 0xf0, 0x9a, 0x7e, - 0x5f, 0xf3, 0xe1, 0xc5, 0x7f, 0x99, 0x82, 0x51, 0x21, 0x54, 0xc1, 0x7c, 0x5f, 0x52, 0x0d, 0xa5, - 0x93, 0xde, 0xb7, 0x74, 0x32, 0x7b, 0x97, 0x4e, 0xf1, 0xef, 0x66, 0x20, 0x3f, 0x6d, 0x36, 0xe9, - 0xa2, 0xa3, 0x5b, 0xee, 0x5d, 0xea, 0x88, 0x23, 0x85, 0x29, 0xc6, 0x6a, 0x5f, 0x1f, 0x28, 0x4d, - 0x43, 0xe9, 0x3d, 0x4d, 0x43, 0xef, 0x85, 0x41, 0xd1, 0x98, 0xe0, 0xf9, 0x39, 0x8e, 0x34, 0xc7, - 0x07, 0x6a, 0x21, 0x9e, 0x11, 0x97, 0x5a, 0x2d, 0xc7, 0xbe, 0x47, 0x1d, 0x7e, 0x1d, 0x2a, 0x88, - 0x75, 0x1f, 0xa8, 0x85, 0x78, 0x89, 0x33, 0xf5, 0xed, 0x5f, 0x99, 0x33, 0x75, 0xb4, 0x10, 0x4f, - 0x2e, 0xc1, 0xc0, 0xac, 0xdd, 0xc0, 0x47, 0x97, 0x62, 0x2a, 0x1a, 0xde, 0xda, 0x2c, 0x0c, 0x34, - 0x05, 0x4c, 0x0b, 0xb0, 0x8c, 0x72, 0xd2, 0x5e, 0xb7, 0x9a, 0xb6, 0xce, 0x1f, 0xd2, 0x0d, 0x70, - 0x4a, 0x43, 0xc0, 0xb4, 0x00, 0xcb, 0x28, 0x99, 0xcc, 0xf1, 0x81, 0xe2, 0x40, 0xc8, 0xf3, 0xae, - 0x80, 0x69, 0x01, 0xb6, 0xf8, 0x7d, 0x59, 0xa6, 0xbd, 0xae, 0xf9, 0xce, 0x43, 0xbf, 0x96, 0x84, - 0x03, 0xa6, 0x77, 0x0f, 0x03, 0xe6, 0xa1, 0x39, 0x13, 0x2d, 0xfe, 0x79, 0x3f, 0x80, 0x90, 0xfe, - 0xd4, 0xf1, 0x66, 0x77, 0x7f, 0x5a, 0x33, 0x09, 0xe3, 0x53, 0xd6, 0x8a, 0x6e, 0x35, 0xa8, 0x11, - 0x9e, 0x0c, 0xf7, 0xe1, 0xd0, 0xc6, 0x87, 0xeb, 0x54, 0x20, 0xc3, 0xa3, 0x61, 0x2d, 0x5e, 0x80, - 0x3c, 0x07, 0x43, 0x15, 0xcb, 0xa3, 0x8e, 0xde, 0xf0, 0xcc, 0x7b, 0x54, 0x4c, 0x0d, 0xf8, 0x04, - 0xc1, 0x0c, 0xc1, 0x9a, 0x4c, 0x43, 0x5e, 0x80, 0xe1, 0xaa, 0xee, 0x78, 0x66, 0xc3, 0x6c, 0xe9, - 0x96, 0xe7, 0xe6, 0x07, 0x70, 0x46, 0xc3, 0x65, 0xbf, 0x25, 0xc1, 0xb5, 0x08, 0x15, 0xf9, 0x38, - 0x0c, 0xe2, 0xb6, 0x19, 0x7d, 0x6c, 0x06, 0xb7, 0xbd, 0x56, 0x7e, 0x22, 0x7c, 0x6a, 0xcc, 0x0f, - 0xb8, 0xf1, 0xa9, 0x81, 0x7a, 0xb3, 0x1c, 0x70, 0x24, 0x6f, 0x42, 0xff, 0x94, 0x65, 0x20, 0x73, - 0xd8, 0x96, 0x79, 0x51, 0x30, 0x3f, 0x1d, 0x32, 0xb7, 0x5b, 0x0a, 0x6f, 0x9f, 0x5d, 0xf2, 0x28, - 0x1b, 0xfa, 0xd2, 0x8d, 0xb2, 0xe1, 0x2f, 0xc1, 0xcd, 0xc3, 0xc8, 0x41, 0xdd, 0x3c, 0x8c, 0xee, - 0xf1, 0xe6, 0xa1, 0xf8, 0x0e, 0x0c, 0x4d, 0x54, 0xa7, 0x83, 0xd1, 0x7b, 0x16, 0x32, 0x55, 0xf1, - 0x24, 0x26, 0xcb, 0xed, 0x99, 0x96, 0x69, 0x68, 0x0c, 0x46, 0x2e, 0xc3, 0x40, 0x19, 0x9f, 0xd2, - 0x8a, 0x3b, 0xdf, 0x2c, 0x5f, 0xff, 0x1a, 0x08, 0xc3, 0x17, 0xf5, 0x3e, 0x9a, 0x3c, 0x05, 0xfd, - 0x55, 0xc7, 0x5e, 0x76, 0xf4, 0x35, 0xb1, 0x06, 0xe3, 0x9b, 0xa4, 0x16, 0x07, 0x69, 0x3e, 0xae, - 0xf8, 0xd9, 0x94, 0x6f, 0xea, 0xb3, 0x12, 0xb5, 0x36, 0x5e, 0x4f, 0x60, 0xdd, 0x03, 0xbc, 0x84, - 0xcb, 0x41, 0x9a, 0x8f, 0x23, 0x97, 0xa1, 0x77, 0xca, 0x71, 0x6c, 0x47, 0xf6, 0x4b, 0xa2, 0x0c, - 0x20, 0x5f, 0xce, 0x23, 0x05, 0x79, 0x3f, 0x0c, 0xf1, 0x39, 0x87, 0x9f, 0xea, 0x66, 0xba, 0xdd, - 0x6b, 0xcb, 0x94, 0xc5, 0x9f, 0xce, 0x48, 0x36, 0x1b, 0x97, 0xf8, 0x43, 0x78, 0x33, 0xf2, 0x3c, - 0x64, 0x26, 0xaa, 0xd3, 0x62, 0x02, 0x3c, 0xe1, 0x17, 0x95, 0x54, 0x45, 0x29, 0xc7, 0xa8, 0xc9, - 0x79, 0xc8, 0x56, 0x99, 0xfa, 0xf4, 0xa1, 0x7a, 0x0c, 0x6c, 0x6d, 0x16, 0xb2, 0x2d, 0xa6, 0x3f, - 0x08, 0x45, 0x2c, 0xdb, 0x00, 0xf1, 0x5d, 0x16, 0xc7, 0x86, 0x7b, 0x9f, 0xf3, 0x90, 0x2d, 0x39, - 0xcb, 0xf7, 0xc4, 0xac, 0x85, 0x58, 0xdd, 0x59, 0xbe, 0xa7, 0x21, 0x94, 0x5c, 0x05, 0xd0, 0xa8, - 0xd7, 0x76, 0x2c, 0x74, 0x19, 0x1c, 0xc4, 0xf3, 0x44, 0x9c, 0x0d, 0x1d, 0x84, 0xd6, 0x1b, 0xb6, - 0x41, 0x35, 0x89, 0xa4, 0xf8, 0x0f, 0xc2, 0xcb, 0xad, 0x49, 0xd3, 0x5d, 0x3d, 0xee, 0xc2, 0x5d, - 0x74, 0xa1, 0x2e, 0x8e, 0x6c, 0xe3, 0x9d, 0x54, 0x80, 0xde, 0xe9, 0xa6, 0xbe, 0xec, 0x62, 0x1f, - 0x8a, 0x47, 0x8b, 0x77, 0x19, 0x40, 0xe3, 0x70, 0xa5, 0x9f, 0x06, 0xb6, 0xef, 0xa7, 0xcf, 0xf5, - 0x06, 0xa3, 0x6d, 0x9e, 0x7a, 0xeb, 0xb6, 0x73, 0xdc, 0x55, 0x3b, 0xed, 0xaa, 0x8b, 0xd0, 0x5f, - 0x73, 0x1a, 0xd2, 0x71, 0x07, 0xee, 0x07, 0x5c, 0xa7, 0xc1, 0x8f, 0x3a, 0x7c, 0x24, 0xa3, 0x9b, - 0x74, 0x3d, 0xa4, 0xeb, 0x0f, 0xe9, 0x0c, 0xd7, 0x13, 0x74, 0x02, 0x29, 0xe8, 0xaa, 0xb6, 0xe3, - 0x89, 0x8e, 0x0b, 0xe8, 0x5a, 0xb6, 0xe3, 0x69, 0x3e, 0x92, 0xbc, 0x17, 0x60, 0xb1, 0x5c, 0xf5, - 0x1d, 0x77, 0x06, 0xc3, 0x47, 0xa7, 0xc2, 0x63, 0x47, 0x93, 0xd0, 0x64, 0x11, 0x06, 0x17, 0x5a, - 0xd4, 0xe1, 0x5b, 0x21, 0xee, 0x04, 0xf8, 0x1e, 0x45, 0xb4, 0xa2, 0xdf, 0xaf, 0x88, 0xff, 0x03, - 0x72, 0xbe, 0xbe, 0xd8, 0xfe, 0x4f, 0x2d, 0x64, 0x44, 0xde, 0x0f, 0x7d, 0x25, 0x6e, 0xe7, 0x0d, - 0x21, 0xcb, 0x40, 0x64, 0xb8, 0x05, 0xe5, 0x28, 0xbe, 0x67, 0xd7, 0xf1, 0x6f, 0x4d, 0x90, 0x17, - 0x2f, 0x43, 0x4e, 0xad, 0x86, 0x0c, 0x41, 0x7f, 0x79, 0x61, 0x7e, 0x7e, 0xaa, 0xbc, 0x98, 0xeb, - 0x21, 0x03, 0x90, 0xad, 0x4d, 0xcd, 0x4f, 0xe6, 0x52, 0xc5, 0xef, 0x91, 0x66, 0x10, 0xa6, 0x5a, - 0xc7, 0xd7, 0xe3, 0xfb, 0xba, 0x3f, 0xca, 0xe1, 0x9d, 0x30, 0x9e, 0x18, 0xac, 0x99, 0x9e, 0x47, - 0x0d, 0xb1, 0x4a, 0xe0, 0x9d, 0xa9, 0x77, 0x5f, 0x8b, 0xe1, 0xc9, 0x33, 0x30, 0x82, 0x30, 0x71, - 0x4d, 0xca, 0xf7, 0xc7, 0xa2, 0x80, 0x73, 0x5f, 0x8b, 0x22, 0x8b, 0xbf, 0x10, 0xde, 0x90, 0xcf, - 0x52, 0xfd, 0xa8, 0xde, 0xaa, 0x3e, 0x20, 0xfd, 0x55, 0xfc, 0x91, 0x5e, 0xee, 0x4e, 0xc6, 0x7d, - 0xbc, 0x0f, 0x43, 0x94, 0xe1, 0x31, 0x70, 0x66, 0x17, 0xc7, 0xc0, 0xcf, 0x40, 0xdf, 0x1c, 0xf5, - 0x56, 0x6c, 0xff, 0x99, 0x1e, 0xbe, 0x8b, 0x59, 0x43, 0x88, 0xfc, 0x2e, 0x86, 0xd3, 0x90, 0x55, - 0x20, 0xbe, 0x03, 0x77, 0xf0, 0xe2, 0xdf, 0x3f, 0x76, 0x3e, 0x13, 0xdb, 0xa7, 0xd4, 0x30, 0xcc, - 0x03, 0xfa, 0xeb, 0x9c, 0x0c, 0x3c, 0x0a, 0xa4, 0x77, 0x73, 0xff, 0x71, 0xb3, 0xd0, 0xc7, 0x69, - 0xb4, 0x04, 0xb6, 0xe4, 0x0d, 0x18, 0x9c, 0x9b, 0x2e, 0x09, 0x67, 0x6e, 0xfe, 0x32, 0xe4, 0x6c, - 0x20, 0x45, 0x1f, 0x11, 0x88, 0x04, 0x7d, 0xf7, 0xd6, 0xee, 0xea, 0x71, 0x5f, 0xee, 0x90, 0x0b, - 0xd3, 0x16, 0xee, 0x05, 0x28, 0x4e, 0x17, 0x02, 0x6d, 0x89, 0xfa, 0x06, 0xaa, 0xb2, 0xe2, 0x58, - 0x45, 0x5b, 0x06, 0xf6, 0x31, 0xba, 0x17, 0x60, 0xbc, 0xd4, 0x6a, 0x35, 0x4d, 0x6a, 0xa0, 0xbe, - 0x68, 0xed, 0x26, 0x75, 0xc5, 0xab, 0x2a, 0x74, 0x2c, 0xd3, 0x39, 0xb2, 0x8e, 0x21, 0x04, 0xea, - 0x4e, 0x3b, 0xfa, 0x9a, 0x36, 0x5e, 0x16, 0x23, 0x36, 0x70, 0xf6, 0xb6, 0x53, 0x99, 0x14, 0xef, - 0xaa, 0x78, 0xc4, 0x06, 0x1f, 0x1c, 0x7d, 0x65, 0x2a, 0x93, 0x17, 0x7f, 0x3f, 0x0d, 0xa7, 0xcb, - 0x0e, 0xd5, 0x3d, 0x3a, 0x37, 0x5d, 0x2a, 0xb5, 0xf1, 0x3d, 0x64, 0xb3, 0x49, 0xad, 0xe5, 0xc3, - 0x99, 0x14, 0x5e, 0x81, 0xd1, 0xa0, 0x01, 0xb5, 0x86, 0xdd, 0xa2, 0xb2, 0x8b, 0x67, 0xc3, 0xc7, - 0xd4, 0x5d, 0x86, 0xd2, 0x14, 0x52, 0x72, 0x13, 0x4e, 0x04, 0x90, 0x52, 0xb3, 0x69, 0xaf, 0x6b, - 0xb4, 0xed, 0xf2, 0x47, 0xd7, 0x03, 0xfc, 0xd1, 0x75, 0xc8, 0x41, 0x67, 0xf8, 0xba, 0xc3, 0x08, - 0xb4, 0xa4, 0x52, 0x64, 0x06, 0x06, 0xa6, 0x9b, 0xf6, 0x3a, 0x06, 0xee, 0xe8, 0x8d, 0x2e, 0x9c, - 0x73, 0xd3, 0x25, 0x1f, 0xc5, 0xdf, 0xf2, 0xde, 0x65, 0xbc, 0xbc, 0x8d, 0x96, 0xac, 0x7a, 0x41, - 0xe9, 0xe2, 0x56, 0x06, 0xce, 0xdc, 0xd6, 0x9b, 0xa6, 0x11, 0x0a, 0x59, 0xa3, 0x6e, 0xcb, 0xb6, - 0x5c, 0x7a, 0x84, 0x66, 0x8b, 0xc8, 0x90, 0xcc, 0x1e, 0xc8, 0x90, 0x8c, 0x77, 0x76, 0xef, 0xbe, - 0x3b, 0xbb, 0x6f, 0xdf, 0x9d, 0xdd, 0xbf, 0xaf, 0xce, 0xfe, 0xe3, 0x14, 0xe4, 0x7c, 0x9f, 0x19, - 0x39, 0x94, 0x88, 0xe4, 0xd0, 0x81, 0x87, 0xa2, 0xca, 0xbb, 0x7f, 0xc4, 0x93, 0x1a, 0xf4, 0x4f, - 0xdd, 0x6f, 0x99, 0x0e, 0x75, 0x77, 0xe0, 0xb4, 0x70, 0x41, 0x1c, 0x00, 0x8d, 0x53, 0x5e, 0x24, - 0x76, 0xf6, 0xc3, 0xc1, 0xe8, 0xec, 0xcc, 0xbd, 0x86, 0x26, 0xfc, 0xf8, 0x28, 0xdc, 0xd9, 0x59, - 0x78, 0x17, 0x45, 0xbc, 0xd7, 0x43, 0x52, 0xf2, 0x04, 0x64, 0x16, 0x17, 0x67, 0xc5, 0xda, 0x80, - 0x71, 0x69, 0x3c, 0x4f, 0xf6, 0xe6, 0x66, 0xd8, 0xe2, 0xef, 0xa6, 0x79, 0xc4, 0x05, 0x3e, 0x85, - 0x1c, 0x8a, 0x3a, 0x4f, 0xc0, 0x80, 0x2f, 0x70, 0xa1, 0xd0, 0x81, 0xc3, 0x8b, 0xda, 0x11, 0x6a, - 0xdd, 0x81, 0x73, 0x53, 0xc1, 0x77, 0x64, 0xe0, 0x37, 0x1b, 0xb8, 0x57, 0x43, 0x47, 0x06, 0xdf, - 0x7d, 0xe1, 0xbd, 0x30, 0x18, 0xcc, 0x9a, 0xf2, 0x8d, 0x46, 0x30, 0xc5, 0x6a, 0x21, 0x5e, 0x59, - 0x2c, 0xfa, 0xf6, 0x61, 0x5a, 0xf8, 0xe2, 0xe5, 0xbd, 0x72, 0x2c, 0xde, 0x03, 0x16, 0xef, 0xd7, - 0x0b, 0xf1, 0x72, 0xe7, 0xb7, 0x23, 0x2b, 0xde, 0x03, 0x3b, 0xcd, 0x2f, 0xfe, 0x5a, 0x0a, 0x08, - 0x6b, 0x56, 0x55, 0x77, 0xdd, 0x75, 0xdb, 0x31, 0xb8, 0x73, 0xc4, 0xa1, 0x08, 0xe6, 0xe0, 0x6e, - 0x60, 0xff, 0xcd, 0x20, 0x9c, 0x88, 0x3c, 0xe7, 0x3e, 0xe2, 0x93, 0xd5, 0xe5, 0xe8, 0x68, 0xea, - 0xe6, 0x75, 0xf5, 0xa4, 0x7c, 0xc5, 0xdb, 0x1b, 0xf1, 0xdd, 0x94, 0xee, 0x76, 0xdf, 0x07, 0xc3, - 0xe2, 0x07, 0x5b, 0xeb, 0xfd, 0xbb, 0x3b, 0x1c, 0xa5, 0x2e, 0x03, 0x68, 0x11, 0x34, 0x79, 0x11, - 0x06, 0xd9, 0x80, 0x59, 0xc6, 0x10, 0x56, 0xfd, 0xa1, 0x47, 0x93, 0xe1, 0x03, 0xe5, 0xf5, 0x24, - 0xa0, 0x94, 0x9e, 0xe1, 0x0f, 0xec, 0xc0, 0x6f, 0xee, 0x13, 0x30, 0x54, 0xb2, 0x2c, 0x9b, 0x07, - 0xe3, 0x71, 0xc5, 0x65, 0x4b, 0xc7, 0x7d, 0xc6, 0x13, 0x18, 0x3a, 0x24, 0xa4, 0x4f, 0xdc, 0x68, - 0xc8, 0x0c, 0xc9, 0x35, 0xdf, 0x2b, 0x8b, 0x3a, 0xc2, 0x64, 0xc6, 0x0b, 0x27, 0x47, 0xc0, 0xe2, - 0x4e, 0x59, 0xd8, 0x79, 0x23, 0x55, 0xc7, 0x6e, 0xd9, 0x2e, 0x35, 0xb8, 0xa0, 0x86, 0x42, 0xb7, - 0xfc, 0x96, 0x40, 0xa0, 0x0b, 0x68, 0x24, 0x9c, 0x54, 0xa4, 0x08, 0xb9, 0x0b, 0x27, 0xfd, 0xab, - 0xef, 0xc0, 0xd9, 0xb6, 0x32, 0xe9, 0xa2, 0x2b, 0xc3, 0x50, 0x18, 0x33, 0x29, 0x44, 0x4d, 0x3c, - 0xea, 0x5f, 0xf4, 0xf8, 0xde, 0xba, 0x75, 0xd3, 0x90, 0xbb, 0x3a, 0x91, 0x1f, 0xf9, 0x32, 0x18, - 0x9a, 0xd3, 0xef, 0x4f, 0xb6, 0xc5, 0x69, 0xd2, 0xc8, 0xce, 0xef, 0x93, 0xd6, 0xf4, 0xfb, 0x75, - 0x43, 0x94, 0x53, 0x6c, 0x0a, 0x99, 0x25, 0xa9, 0xc3, 0xe9, 0xaa, 0x63, 0xaf, 0xd9, 0x1e, 0x35, - 0x14, 0xbf, 0xd5, 0xb1, 0xd0, 0xd1, 0xbd, 0x25, 0x28, 0xea, 0x5d, 0x1c, 0x58, 0x3b, 0xb0, 0x21, - 0x6b, 0x30, 0x56, 0x72, 0xdd, 0xf6, 0x1a, 0x0d, 0xef, 0xdc, 0x72, 0xdb, 0x7e, 0xc6, 0x7b, 0xc4, - 0x5b, 0xf4, 0x47, 0x74, 0x2c, 0xca, 0xaf, 0xdc, 0xea, 0x9e, 0x29, 0xd7, 0x88, 0xdf, 0xa2, 0xf2, - 0x66, 0xbd, 0xeb, 0x0b, 0x10, 0xa3, 0x6a, 0xe4, 0xc7, 0x71, 0x78, 0x61, 0xef, 0x06, 0xa2, 0xc7, - 0x88, 0x1c, 0x72, 0xef, 0x46, 0x8a, 0x90, 0x4f, 0xc0, 0xb9, 0x58, 0x6f, 0xf0, 0xaf, 0x62, 0x7d, - 0x4c, 0xa2, 0xee, 0xb8, 0x2a, 0xc1, 0x44, 0x96, 0x75, 0x81, 0xd6, 0x85, 0xc3, 0x8d, 0xec, 0xc0, - 0x68, 0x6e, 0x4c, 0x3b, 0x13, 0x17, 0x18, 0xf7, 0x18, 0xfb, 0x7b, 0x69, 0x65, 0xa6, 0xe3, 0x36, - 0xe0, 0xbe, 0x66, 0x3a, 0x79, 0xc6, 0x4a, 0xef, 0x71, 0xc6, 0x7a, 0x32, 0xfe, 0xd2, 0x24, 0x61, - 0x1a, 0xfa, 0x32, 0x18, 0xf5, 0x4b, 0x60, 0xbb, 0x37, 0x82, 0xa5, 0xac, 0x73, 0x77, 0x9f, 0x17, - 0xdd, 0x9d, 0x43, 0x23, 0x78, 0x43, 0xe9, 0x63, 0x85, 0x5f, 0xf1, 0xc7, 0x53, 0x00, 0xe1, 0x20, - 0x21, 0xef, 0x8b, 0xc6, 0x3a, 0x4c, 0x85, 0xd7, 0x6f, 0x22, 0x3e, 0x4f, 0x24, 0xb8, 0x21, 0x39, - 0x0f, 0x59, 0x8c, 0xe1, 0x94, 0x0e, 0x8f, 0xfb, 0x57, 0x4d, 0xcb, 0xd0, 0x10, 0xca, 0xb0, 0x52, - 0xb0, 0x15, 0xc4, 0xe2, 0x53, 0x13, 0x6e, 0xd9, 0x4f, 0xc2, 0x58, 0xad, 0xbd, 0x24, 0x2b, 0x8b, - 0x1c, 0x98, 0xc3, 0x6d, 0x2f, 0x05, 0xbe, 0xf8, 0x91, 0x40, 0x5d, 0xd1, 0x22, 0xc5, 0xdf, 0x95, - 0x36, 0x17, 0xbe, 0x52, 0x90, 0x4b, 0x90, 0x36, 0x0d, 0xd1, 0xad, 0x49, 0xf3, 0x07, 0xd7, 0xaa, - 0xb4, 0x69, 0x90, 0x39, 0x38, 0xd1, 0xb6, 0x56, 0x2d, 0x7b, 0xdd, 0xaa, 0x37, 0x6c, 0xcb, 0xf5, - 0x1c, 0xdd, 0xb4, 0x3c, 0x37, 0xb8, 0x6b, 0xf6, 0xd7, 0x30, 0x4e, 0x52, 0x0e, 0x29, 0x66, 0x7a, - 0x34, 0xd2, 0x8e, 0x41, 0xc9, 0xeb, 0x30, 0xa4, 0xaf, 0x63, 0x8c, 0x17, 0xd7, 0x6e, 0x52, 0x71, - 0x9d, 0x1c, 0xdc, 0xf9, 0x96, 0xee, 0xd4, 0xca, 0x1c, 0x13, 0xe5, 0x04, 0xfa, 0xba, 0x2b, 0x10, - 0x13, 0x23, 0x30, 0x24, 0x35, 0xa4, 0x78, 0x12, 0x48, 0xbc, 0xf2, 0xe2, 0x2a, 0x9c, 0x4a, 0xe4, - 0x45, 0x2e, 0xc2, 0x98, 0x1f, 0xf3, 0x90, 0xb5, 0xa2, 0x2d, 0x62, 0x39, 0x8d, 0x68, 0x23, 0x0c, - 0x5c, 0x72, 0x2c, 0xb7, 0x8c, 0xd1, 0x01, 0x9f, 0x86, 0xf1, 0x90, 0xae, 0xc5, 0x67, 0x78, 0x1e, - 0x49, 0x49, 0x1b, 0xf3, 0x29, 0xab, 0x1c, 0x5c, 0xfc, 0xbe, 0x94, 0x32, 0x82, 0x0e, 0xd1, 0x34, - 0xdc, 0xd1, 0xa8, 0x29, 0xfe, 0x6a, 0x06, 0x86, 0xaa, 0xb6, 0xe3, 0x89, 0xb0, 0x63, 0x47, 0xdb, - 0x56, 0x93, 0xce, 0x26, 0xb2, 0xbb, 0x38, 0x9b, 0x38, 0x0f, 0x59, 0xc9, 0xd5, 0x82, 0xdf, 0x87, - 0x1a, 0x86, 0xa3, 0x21, 0xf4, 0x4b, 0xec, 0x6e, 0x16, 0x7f, 0xfc, 0xd0, 0xbf, 0xef, 0x27, 0x46, - 0x5f, 0x9e, 0x06, 0x78, 0xf3, 0xb9, 0xe7, 0x1e, 0xe2, 0x2e, 0x2d, 0x7e, 0x73, 0x0a, 0xc6, 0xc4, - 0x93, 0x02, 0x29, 0x92, 0x6c, 0xbf, 0xff, 0x18, 0x44, 0x9e, 0xab, 0x39, 0x48, 0xf3, 0x71, 0xcc, - 0xb4, 0x9b, 0xba, 0x6f, 0x7a, 0x78, 0xab, 0x2a, 0x85, 0x92, 0xa5, 0x02, 0x26, 0x9b, 0x76, 0x3e, - 0x1d, 0x79, 0x9f, 0xff, 0x58, 0x22, 0x13, 0xda, 0xb3, 0xac, 0xc0, 0x54, 0xe2, 0x83, 0x89, 0xe2, - 0x0f, 0x66, 0x21, 0x3b, 0x75, 0x9f, 0x36, 0x8e, 0x78, 0xd7, 0x48, 0x57, 0x30, 0xd9, 0x7d, 0x5e, - 0xc1, 0xec, 0xe5, 0xf5, 0xd7, 0x6b, 0x61, 0x7f, 0xf6, 0x45, 0xab, 0x57, 0x7a, 0x5e, 0xad, 0xde, - 0xef, 0xe9, 0xa3, 0xf7, 0x78, 0xf0, 0x67, 0x32, 0x90, 0xa9, 0x95, 0xab, 0xc7, 0x7a, 0x73, 0xa8, - 0x7a, 0xd3, 0xfd, 0x75, 0x4d, 0x31, 0xb8, 0x30, 0x1f, 0x08, 0xdf, 0xb3, 0x2b, 0x77, 0xe3, 0x7f, - 0x96, 0x81, 0xd1, 0xda, 0xf4, 0x62, 0x55, 0xba, 0xb3, 0xba, 0xc9, 0xdf, 0x1c, 0xe3, 0xeb, 0x57, - 0xde, 0xa5, 0xe7, 0x63, 0x86, 0xeb, 0xad, 0x8a, 0xe5, 0xbd, 0xf4, 0x02, 0x46, 0xa0, 0xc5, 0x23, - 0x55, 0xee, 0xd5, 0xe0, 0x9a, 0xef, 0xd0, 0x6f, 0xc1, 0x00, 0x36, 0x3e, 0x03, 0xf2, 0x0a, 0x64, - 0x6e, 0x89, 0xb7, 0x63, 0x9d, 0xf8, 0x3c, 0x7f, 0x8d, 0xf3, 0x61, 0x93, 0x60, 0xa6, 0x6d, 0x1a, - 0xc8, 0x81, 0x95, 0x62, 0x85, 0xaf, 0x0b, 0x93, 0x61, 0x47, 0x85, 0x97, 0xfd, 0xc2, 0xd7, 0x2b, - 0x93, 0xa4, 0x06, 0x43, 0x55, 0xea, 0xac, 0x99, 0xd8, 0x51, 0xfe, 0x9c, 0xdd, 0x9d, 0xc9, 0x89, - 0xad, 0xcd, 0xc2, 0x50, 0x2b, 0x2c, 0x84, 0xcc, 0x64, 0x2e, 0xe4, 0x2d, 0x00, 0x6e, 0x55, 0xed, - 0x30, 0x3a, 0xf9, 0x05, 0xdc, 0xcf, 0xf3, 0x2d, 0x63, 0xc2, 0xde, 0x4d, 0x62, 0x46, 0x56, 0x21, - 0x37, 0x67, 0x1b, 0xe6, 0x5d, 0x93, 0x3f, 0x12, 0xc7, 0x0a, 0xfa, 0xb6, 0x7f, 0x9a, 0xc9, 0xb6, - 0x88, 0x6b, 0x52, 0xb9, 0xa4, 0x6a, 0x62, 0x8c, 0x8b, 0x3f, 0xd1, 0x0b, 0x59, 0xd6, 0xed, 0xc7, - 0xe3, 0x77, 0x3f, 0xe3, 0xb7, 0x04, 0xb9, 0x3b, 0xb6, 0xb3, 0x6a, 0x5a, 0xcb, 0x81, 0xcf, 0x8f, - 0x38, 0x73, 0xc2, 0x37, 0x87, 0xeb, 0x1c, 0x57, 0x0f, 0xdc, 0x83, 0xb4, 0x18, 0xf9, 0x36, 0x23, - 0xf8, 0x65, 0x00, 0x1e, 0xf8, 0x04, 0x69, 0x06, 0xc2, 0xa0, 0x4b, 0x3c, 0x2c, 0x0a, 0xba, 0x11, - 0xc9, 0x41, 0x97, 0x42, 0x62, 0x72, 0xd9, 0x7f, 0xb5, 0x35, 0x88, 0x5e, 0x45, 0x78, 0xb8, 0x86, - 0xaf, 0xb6, 0x64, 0x23, 0x80, 0xbf, 0xdf, 0xaa, 0x02, 0x48, 0x37, 0xe1, 0xa0, 0x08, 0x22, 0x32, - 0x39, 0x88, 0xa0, 0xb8, 0x09, 0x17, 0xe1, 0x9a, 0xc4, 0x83, 0xbc, 0xa4, 0x3c, 0xd5, 0x21, 0x11, - 0x6e, 0x1d, 0x5f, 0xea, 0x84, 0x4f, 0x3d, 0x87, 0xb7, 0x7b, 0xea, 0x59, 0xfc, 0xee, 0x0c, 0x0c, - 0x31, 0x6e, 0xb5, 0xf6, 0xda, 0x9a, 0xee, 0x6c, 0x1c, 0x2b, 0xf2, 0x7e, 0x14, 0xb9, 0x0e, 0xe3, - 0xb2, 0x6b, 0x0f, 0x33, 0x5d, 0xfd, 0xe8, 0x7b, 0xc1, 0x21, 0x89, 0x4a, 0x20, 0x2e, 0x11, 0xd9, - 0xbc, 0xef, 0x09, 0x30, 0x9e, 0x19, 0xba, 0x5a, 0x9c, 0x57, 0xf1, 0x1b, 0x53, 0x90, 0x53, 0xa1, - 0x81, 0xee, 0xa7, 0x12, 0x75, 0xff, 0x19, 0x18, 0x14, 0x8f, 0x7d, 0x74, 0x43, 0xbc, 0x3d, 0x1e, - 0xdd, 0xda, 0x2c, 0x00, 0x46, 0x9b, 0xa8, 0x3b, 0x54, 0x37, 0xb4, 0x90, 0x80, 0xbc, 0x08, 0xc3, - 0xf8, 0xe3, 0x8e, 0x63, 0x7a, 0x1e, 0xe5, 0x9d, 0x91, 0xe5, 0xb7, 0x7d, 0xbc, 0xc0, 0x3a, 0x47, - 0x68, 0x11, 0xb2, 0xe2, 0xcf, 0xa7, 0x61, 0xb0, 0xd6, 0x5e, 0x72, 0x37, 0x5c, 0x8f, 0xae, 0x1d, - 0x71, 0x1d, 0xf2, 0x0f, 0x6e, 0xb2, 0x89, 0x07, 0x37, 0x4f, 0xf8, 0x43, 0x4b, 0xba, 0x95, 0x0a, - 0x36, 0x06, 0xfe, 0xfb, 0xe9, 0x50, 0x8b, 0xfa, 0x76, 0xaf, 0x45, 0xc5, 0x7f, 0x9c, 0x86, 0x1c, - 0x7f, 0x66, 0x32, 0x69, 0xba, 0x8d, 0x03, 0x70, 0x7d, 0x3b, 0x7c, 0x99, 0xee, 0xef, 0x69, 0xd6, - 0x0e, 0x1c, 0x0a, 0x8b, 0x3f, 0x91, 0x86, 0xa1, 0x52, 0xdb, 0x5b, 0x29, 0x79, 0x38, 0xbf, 0x3d, - 0x94, 0xc7, 0x1e, 0xfb, 0x9a, 0xbc, 0x8a, 0x3f, 0x97, 0xe2, 0x79, 0x09, 0x16, 0xed, 0x55, 0x6a, - 0x1d, 0xc0, 0x95, 0xd8, 0x41, 0x1c, 0x14, 0xfb, 0x3d, 0x91, 0xd9, 0x5d, 0x4f, 0xe0, 0x45, 0xae, - 0x66, 0x37, 0xe9, 0xd1, 0xfe, 0x8c, 0x03, 0xbc, 0xc8, 0xf5, 0x05, 0x72, 0x00, 0x0f, 0x07, 0xde, - 0x5d, 0x02, 0x39, 0x80, 0xf3, 0xdc, 0x77, 0x87, 0x40, 0x7e, 0x3a, 0x05, 0x83, 0x13, 0xb6, 0x77, - 0xc4, 0x07, 0xbe, 0xf8, 0x8a, 0xa3, 0xad, 0xe6, 0xfe, 0x57, 0x1c, 0x6d, 0xdd, 0x2c, 0x7e, 0x53, - 0x1a, 0x4e, 0x8a, 0xdc, 0x49, 0xe2, 0x04, 0xed, 0x78, 0x3a, 0x16, 0x83, 0x2d, 0x2e, 0x9a, 0xe3, - 0x79, 0x48, 0x88, 0xe6, 0x3b, 0x33, 0x70, 0x12, 0xe3, 0xd3, 0xb3, 0xfd, 0xd8, 0xbb, 0xc0, 0x16, - 0x21, 0x8d, 0xe8, 0xf3, 0x9c, 0xb9, 0x84, 0xe7, 0x39, 0xff, 0x71, 0xb3, 0xf0, 0xd2, 0x2e, 0xd2, - 0x4e, 0x5d, 0xa9, 0xe1, 0x3e, 0x8b, 0x71, 0xf5, 0x1f, 0xf6, 0xb8, 0x00, 0x37, 0x6c, 0xd3, 0x12, - 0xef, 0xf7, 0xb9, 0x99, 0x5c, 0xdb, 0xda, 0x2c, 0x9c, 0x7a, 0xdb, 0x36, 0xad, 0xba, 0xfa, 0x88, - 0x7f, 0xb7, 0xf5, 0x85, 0xac, 0x35, 0xa9, 0x9a, 0xe2, 0xaf, 0xa7, 0xe0, 0x6c, 0x54, 0x8b, 0xdf, - 0x0d, 0xb6, 0xe3, 0xdf, 0x49, 0xc3, 0xa9, 0xeb, 0x28, 0x9c, 0xe0, 0x89, 0xe1, 0xf1, 0xbc, 0x25, - 0x06, 0x67, 0x82, 0x6c, 0x8e, 0x2d, 0xca, 0xce, 0xb2, 0x39, 0x9e, 0xd4, 0x85, 0x6c, 0x7e, 0x29, - 0x05, 0x27, 0x16, 0x2a, 0x93, 0xe5, 0x77, 0xc9, 0x88, 0x8a, 0x7f, 0xcf, 0x11, 0x37, 0x38, 0x63, - 0xdf, 0x73, 0xc4, 0x4d, 0xcf, 0xcf, 0xa4, 0xe1, 0x44, 0xad, 0x34, 0x37, 0xfb, 0x6e, 0x99, 0xc1, - 0xcb, 0xf2, 0x7b, 0x78, 0xff, 0x08, 0x4d, 0xd8, 0x02, 0xf2, 0x67, 0xde, 0xbe, 0xd6, 0xf9, 0x9d, - 0x7c, 0x5c, 0x28, 0x47, 0x7c, 0xea, 0x3e, 0x10, 0xa1, 0x30, 0xcd, 0x8f, 0x50, 0x1f, 0x71, 0xcd, - 0xff, 0xe7, 0x7d, 0x30, 0x74, 0xb3, 0xbd, 0x44, 0xc5, 0x83, 0xb0, 0x87, 0xfa, 0xdc, 0xf8, 0x1a, - 0x0c, 0x09, 0x31, 0xe0, 0xfd, 0x88, 0x14, 0x78, 0x57, 0x04, 0x1e, 0xe3, 0xf1, 0x03, 0x65, 0x22, - 0x72, 0x1e, 0xb2, 0xb7, 0xa9, 0xb3, 0x24, 0xc7, 0x70, 0xb8, 0x47, 0x9d, 0x25, 0x0d, 0xa1, 0x64, - 0x56, 0x7a, 0x6f, 0x59, 0xad, 0x60, 0x02, 0x44, 0x71, 0xe5, 0x88, 0x19, 0x1d, 0x83, 0x67, 0xc1, - 0x7a, 0xcb, 0xe4, 0xa9, 0x13, 0xe5, 0xf8, 0x31, 0x6a, 0x49, 0x32, 0x0f, 0xe3, 0x91, 0xe7, 0xc2, - 0x98, 0xfd, 0x6f, 0x20, 0x81, 0x5d, 0x52, 0xde, 0xbf, 0x78, 0x51, 0xf2, 0x1a, 0x0c, 0xfb, 0x40, - 0x7c, 0x98, 0x3a, 0x18, 0xe6, 0x23, 0x0a, 0x58, 0x29, 0x39, 0x5f, 0x22, 0x05, 0x64, 0x06, 0x78, - 0x05, 0x02, 0x09, 0x0c, 0x94, 0xc7, 0xda, 0x91, 0x02, 0xe4, 0x45, 0x64, 0x80, 0xae, 0x8c, 0xf8, - 0xdc, 0x6a, 0x08, 0x03, 0x1c, 0xe0, 0xf5, 0x91, 0x23, 0xe0, 0x3c, 0x8c, 0x45, 0x84, 0x8c, 0x2c, - 0x00, 0x84, 0xcf, 0x62, 0x44, 0xb0, 0xa0, 0x5d, 0x3f, 0xd8, 0x91, 0x58, 0xc8, 0xf7, 0x80, 0x23, - 0x7b, 0xb9, 0x07, 0x2c, 0xfe, 0xed, 0x0c, 0x0c, 0x95, 0x5a, 0x61, 0x56, 0xc0, 0xf7, 0x41, 0x5f, - 0xa9, 0xd5, 0xba, 0xa5, 0x55, 0xe4, 0x24, 0x2f, 0x7a, 0xab, 0x55, 0x6f, 0x3b, 0xa6, 0xec, 0xad, - 0xc0, 0x89, 0x48, 0x19, 0x46, 0x4a, 0xad, 0x56, 0xb5, 0xbd, 0xd4, 0x34, 0x1b, 0x52, 0xa6, 0x3f, - 0x9e, 0x5b, 0xbb, 0xd5, 0xaa, 0xb7, 0x10, 0xa3, 0x26, 0xfb, 0x8b, 0x96, 0x21, 0x9f, 0xc0, 0x10, - 0x7b, 0x22, 0xed, 0x1e, 0xcf, 0xe7, 0x56, 0x0c, 0x5e, 0xd3, 0x86, 0x6d, 0xbb, 0x12, 0x10, 0x89, - 0x3c, 0x7b, 0x7e, 0xf2, 0x22, 0x56, 0x51, 0x2c, 0xcf, 0x5e, 0xc8, 0x92, 0x3c, 0x0b, 0xfd, 0xa5, - 0x56, 0x4b, 0xba, 0xeb, 0xc2, 0x67, 0x71, 0xac, 0x94, 0x9a, 0x1b, 0x5a, 0x90, 0x89, 0xcf, 0x12, - 0xb7, 0xe3, 0xb6, 0xe3, 0xe1, 0x90, 0x1a, 0x09, 0x3f, 0xcb, 0xbf, 0x4e, 0xb7, 0xe5, 0xa8, 0x56, - 0x5a, 0xb4, 0xcc, 0xb9, 0x57, 0x61, 0x34, 0xda, 0xe2, 0x5d, 0xe5, 0xe2, 0xf9, 0x8b, 0x14, 0x4a, - 0xe5, 0x88, 0xbb, 0xec, 0x3c, 0x0f, 0x99, 0x52, 0xab, 0x25, 0x26, 0xb5, 0x13, 0x09, 0x9d, 0xaa, - 0xc6, 0x2c, 0x29, 0xb5, 0x5a, 0xfe, 0xa7, 0x1f, 0x71, 0xdf, 0xbf, 0x3d, 0x7d, 0xfa, 0x4f, 0xf3, - 0x4f, 0x3f, 0xda, 0x7e, 0x79, 0xc5, 0xcf, 0x67, 0x61, 0xac, 0xd4, 0x6a, 0x1d, 0x27, 0xde, 0x39, - 0xa8, 0xc8, 0x28, 0xcf, 0x01, 0x48, 0x73, 0x6c, 0x7f, 0xe0, 0x99, 0x3c, 0x24, 0xcd, 0xaf, 0xf9, - 0x94, 0x26, 0x11, 0xf9, 0xea, 0x37, 0xb0, 0x1b, 0xf5, 0x0b, 0xdf, 0xd3, 0x0c, 0xee, 0x36, 0x74, - 0x1a, 0xec, 0x38, 0x74, 0xda, 0x57, 0x64, 0x70, 0x72, 0x3d, 0xea, 0x91, 0x24, 0x1f, 0x14, 0xd5, - 0x10, 0xfd, 0xdc, 0xb7, 0xab, 0x69, 0xe6, 0xa7, 0x32, 0xf2, 0x00, 0xc5, 0x6c, 0x2e, 0xc7, 0xbd, - 0xd0, 0xbb, 0x2f, 0xfb, 0x7d, 0x54, 0x16, 0xa6, 0x08, 0x6f, 0xe7, 0xa7, 0xf1, 0x14, 0xc1, 0x16, - 0x1b, 0x0c, 0x55, 0x37, 0x0d, 0x4d, 0xa1, 0xf5, 0xfb, 0xb0, 0x7f, 0x57, 0x7d, 0xb8, 0x99, 0xc6, - 0x80, 0x2a, 0x41, 0xb0, 0xc6, 0xfd, 0x6f, 0x83, 0xae, 0x02, 0xf0, 0x07, 0x16, 0x81, 0x07, 0xc1, - 0x08, 0x8f, 0xcb, 0xc6, 0xb3, 0x7b, 0x8a, 0xb8, 0x6c, 0x21, 0x49, 0xf0, 0x20, 0x2b, 0x93, 0xf8, - 0x20, 0xeb, 0x32, 0x0c, 0x68, 0xfa, 0xfa, 0x1b, 0x6d, 0x2a, 0x1c, 0xda, 0xfc, 0x58, 0xc8, 0xfa, - 0x7a, 0xfd, 0x93, 0x0c, 0xa8, 0x05, 0x68, 0x52, 0x0c, 0x22, 0xf2, 0x48, 0x0f, 0x5f, 0xf8, 0x61, - 0x7e, 0x10, 0x87, 0x67, 0x2f, 0x8a, 0x4e, 0x3e, 0x08, 0x99, 0xd2, 0x9d, 0x9a, 0x90, 0xec, 0x39, - 0xc9, 0x45, 0x4b, 0xc8, 0xab, 0x63, 0xd9, 0x3b, 0xb5, 0xe2, 0x57, 0xa4, 0x81, 0xc4, 0x29, 0xc9, - 0x4b, 0x30, 0x88, 0xd0, 0x65, 0xa6, 0x33, 0x72, 0xe6, 0xff, 0x75, 0xb7, 0xee, 0x20, 0x34, 0x62, - 0x85, 0xfa, 0xa4, 0xe4, 0x65, 0x80, 0xd2, 0x9d, 0x9a, 0x9f, 0x64, 0x5b, 0xce, 0xfc, 0xbf, 0xee, - 0x26, 0x24, 0xd6, 0x96, 0x88, 0xd1, 0x80, 0xbd, 0x53, 0x9b, 0xb1, 0x5d, 0x4f, 0x88, 0x9a, 0x1b, - 0xb0, 0xeb, 0x6e, 0x7d, 0xc5, 0x76, 0xbd, 0x88, 0x01, 0xcb, 0xc9, 0x30, 0xa7, 0xea, 0x9d, 0x1a, - 0xf7, 0xf4, 0x34, 0x34, 0x3b, 0xc8, 0x5f, 0xca, 0x73, 0xaa, 0xae, 0xbb, 0x75, 0xee, 0x25, 0x6a, - 0xd4, 0x1d, 0xbb, 0x19, 0xcd, 0xa9, 0x1a, 0x29, 0x55, 0xfc, 0xba, 0x01, 0xc8, 0x4d, 0xea, 0x9e, - 0xbe, 0xa4, 0xbb, 0x54, 0xda, 0xf6, 0x8f, 0xf9, 0xb0, 0x68, 0xce, 0x70, 0x94, 0x83, 0xb1, 0x94, - 0xf0, 0x35, 0x6a, 0x01, 0xf2, 0x4a, 0xc8, 0xb7, 0xea, 0xd8, 0x9e, 0xdd, 0xb0, 0x9b, 0x91, 0x14, - 0xba, 0x4b, 0xf5, 0x96, 0x00, 0x6b, 0x31, 0x42, 0xf2, 0x0c, 0x0c, 0xf9, 0x30, 0xb6, 0x53, 0xc9, - 0x84, 0x3a, 0x63, 0x2c, 0xb1, 0x8d, 0x8a, 0x26, 0xa3, 0xc9, 0xcb, 0x30, 0xec, 0xff, 0x94, 0xf6, - 0x00, 0x3c, 0x1f, 0xf0, 0x52, 0x6c, 0x9b, 0x27, 0x93, 0xca, 0x45, 0x71, 0x7e, 0xeb, 0x8d, 0x14, - 0x55, 0x52, 0xee, 0x46, 0x48, 0xc9, 0x27, 0x61, 0xd4, 0xff, 0x2d, 0x76, 0x36, 0xfc, 0x7d, 0xe4, - 0x33, 0xbe, 0x12, 0xaa, 0x62, 0xbd, 0x12, 0x25, 0xe7, 0x7b, 0x9c, 0x47, 0xfc, 0xd4, 0xaf, 0xc6, - 0x52, 0x7c, 0x8b, 0xa3, 0x54, 0x40, 0x2a, 0x30, 0xee, 0x43, 0x42, 0x0d, 0xed, 0x0f, 0xb7, 0xb6, - 0xc6, 0x52, 0x3d, 0x51, 0x49, 0xe3, 0xa5, 0x48, 0x13, 0xce, 0x47, 0x80, 0x86, 0xbb, 0x62, 0xde, - 0xf5, 0xc4, 0xbe, 0x54, 0x24, 0x33, 0x10, 0x69, 0xc3, 0x03, 0xae, 0x9c, 0xa6, 0x2e, 0x5c, 0x48, - 0xa3, 0xa1, 0x97, 0xba, 0x72, 0x23, 0x35, 0x38, 0xe9, 0xe3, 0xaf, 0x97, 0xab, 0x55, 0xc7, 0x7e, - 0x9b, 0x36, 0xbc, 0xca, 0xa4, 0xb0, 0x42, 0x30, 0x60, 0xad, 0xb1, 0x54, 0x5f, 0x6e, 0xb4, 0x98, - 0x52, 0x30, 0x5c, 0x94, 0x79, 0x62, 0x61, 0x72, 0x1b, 0x4e, 0x49, 0xf0, 0x8a, 0xe5, 0x7a, 0xba, - 0xd5, 0xa0, 0x41, 0xa0, 0x28, 0x3c, 0x78, 0x10, 0x5c, 0x4d, 0x81, 0x8c, 0xb2, 0x4d, 0x2e, 0x4e, - 0x5e, 0x85, 0x11, 0x1f, 0xc1, 0xaf, 0x3b, 0x87, 0xf0, 0xba, 0x13, 0x87, 0xa4, 0xb1, 0x54, 0x57, - 0x03, 0x12, 0x44, 0x89, 0x65, 0x8d, 0xc2, 0xa0, 0x3b, 0xc3, 0x11, 0x8d, 0x52, 0xa2, 0xeb, 0x44, - 0x48, 0xc9, 0x6b, 0xa1, 0x46, 0x2d, 0x38, 0xe6, 0xb2, 0xe9, 0xa7, 0xf5, 0x3b, 0x23, 0xf4, 0xc3, - 0x46, 0x60, 0x92, 0x7e, 0x70, 0xf2, 0x73, 0x25, 0x38, 0x91, 0xa0, 0x63, 0xbb, 0xda, 0x95, 0x7e, - 0x2a, 0x1d, 0x36, 0xe2, 0x88, 0x6f, 0x4d, 0x27, 0x60, 0xc0, 0xff, 0x12, 0x61, 0x3c, 0xe4, 0x3b, - 0x0d, 0x4d, 0x95, 0x87, 0x8f, 0x8f, 0x88, 0xe3, 0x88, 0x6f, 0x57, 0x0f, 0x42, 0x1c, 0x5f, 0x48, - 0x85, 0xe2, 0x38, 0xe2, 0x5b, 0xd8, 0x9f, 0xcb, 0x86, 0x73, 0xd2, 0xf1, 0x3e, 0xf6, 0xa0, 0xcc, - 0xe4, 0xf0, 0xb9, 0x6f, 0xdf, 0x2e, 0x9e, 0xfb, 0xca, 0xaa, 0xd9, 0xbf, 0x37, 0xd5, 0x24, 0xaf, - 0xc2, 0x50, 0xd5, 0x76, 0xbd, 0x65, 0x87, 0xba, 0xd5, 0x20, 0x19, 0x0f, 0xc6, 0x20, 0x68, 0x09, - 0x70, 0xbd, 0x15, 0x0d, 0x16, 0x28, 0x91, 0x4b, 0x31, 0x14, 0x07, 0x77, 0x1f, 0x43, 0xb1, 0xf8, - 0x9b, 0x99, 0x98, 0x2e, 0x71, 0xb3, 0xf7, 0x48, 0xea, 0xd2, 0x01, 0x4c, 0x14, 0xe4, 0x5a, 0xb8, - 0x86, 0xf2, 0xfd, 0x41, 0xaf, 0x14, 0x73, 0x78, 0x49, 0x6c, 0x0f, 0xa2, 0x24, 0xe4, 0xa3, 0x70, - 0x26, 0x02, 0xa8, 0xea, 0x8e, 0xbe, 0x46, 0xbd, 0x30, 0x61, 0x35, 0x46, 0x91, 0xf4, 0x4b, 0xd7, - 0x5b, 0x01, 0x5a, 0x4e, 0x82, 0xdd, 0x81, 0x83, 0xa4, 0x98, 0xfd, 0xbb, 0xf0, 0xd5, 0xfe, 0x5c, - 0x26, 0x34, 0x93, 0xa2, 0xd1, 0xe0, 0x35, 0xea, 0xb6, 0x9b, 0xde, 0xc3, 0xdb, 0xc1, 0x7b, 0xcb, - 0xcf, 0x35, 0x03, 0x63, 0xa5, 0xbb, 0x77, 0x69, 0xc3, 0xf3, 0x93, 0x5c, 0xb8, 0x22, 0xfe, 0x2f, - 0xdf, 0xb6, 0x08, 0x94, 0x48, 0x5a, 0xe0, 0x46, 0x52, 0x88, 0x47, 0x8b, 0x15, 0x7f, 0x2b, 0x0b, - 0xf9, 0x60, 0xdb, 0x10, 0xf8, 0x63, 0x1e, 0xe2, 0x12, 0xfd, 0x40, 0xf4, 0x8a, 0x09, 0xe3, 0xa1, - 0x30, 0x84, 0x23, 0x5c, 0xbe, 0x17, 0xb7, 0x25, 0x05, 0x95, 0x59, 0x48, 0xc8, 0x77, 0x22, 0xe7, - 0xc4, 0x4e, 0x84, 0x84, 0xfe, 0xae, 0x75, 0x97, 0xb3, 0xd0, 0xe2, 0x5c, 0xc9, 0xd7, 0xa7, 0xe0, - 0xa4, 0xdf, 0x29, 0x0b, 0x4b, 0xcc, 0x24, 0xc7, 0x98, 0x24, 0xfe, 0x2e, 0xe8, 0x83, 0x9d, 0xab, - 0xe3, 0x9d, 0x74, 0x25, 0xa9, 0x30, 0x6f, 0x49, 0x10, 0x17, 0x2a, 0x50, 0x08, 0x1b, 0x69, 0x78, - 0x28, 0x14, 0x57, 0x4b, 0xac, 0xf7, 0xdc, 0x75, 0x38, 0xdb, 0x91, 0xe5, 0x76, 0x26, 0x70, 0xaf, - 0x6c, 0x02, 0xff, 0x46, 0x2a, 0x9c, 0x88, 0x14, 0x21, 0x91, 0x2b, 0x00, 0x21, 0x48, 0x6c, 0x8a, - 0xd1, 0x09, 0x2d, 0x14, 0x9a, 0x26, 0x51, 0x90, 0x05, 0xe8, 0x13, 0x62, 0x49, 0xa3, 0x58, 0xde, - 0xbb, 0x4d, 0x2f, 0x5c, 0x91, 0xe5, 0x80, 0x1b, 0x5e, 0xf1, 0xcd, 0x82, 0xcd, 0xb9, 0x97, 0x61, - 0x68, 0xaf, 0xdf, 0xf5, 0xf5, 0x19, 0x20, 0xf2, 0x0e, 0xf6, 0x10, 0xcd, 0xfb, 0x23, 0x3c, 0x85, - 0x5d, 0x82, 0x01, 0xf6, 0x09, 0x98, 0x80, 0x4b, 0x0a, 0xb8, 0xdf, 0x16, 0x30, 0x2d, 0xc0, 0x86, - 0xb1, 0x21, 0xfb, 0x93, 0x63, 0x43, 0x16, 0xbf, 0x31, 0x03, 0xa7, 0xe5, 0x0e, 0x99, 0xa4, 0x98, - 0xc3, 0xe7, 0xb8, 0x53, 0xbe, 0x84, 0x9d, 0x52, 0x84, 0x3e, 0xbe, 0x71, 0x11, 0xc9, 0x94, 0xf8, - 0xa1, 0x12, 0x42, 0x34, 0x81, 0x29, 0xfe, 0xeb, 0x34, 0x8c, 0x04, 0xc6, 0xa1, 0xee, 0xb8, 0x0f, - 0x71, 0x77, 0x7c, 0x00, 0x46, 0x30, 0xba, 0xdf, 0x1a, 0xb5, 0x78, 0x04, 0xbc, 0x5e, 0x29, 0xfb, - 0x99, 0x8f, 0x10, 0xc9, 0x31, 0x23, 0x84, 0x4c, 0xfb, 0xb9, 0xe5, 0x27, 0xc5, 0x5c, 0xe4, 0x66, - 0x1f, 0x87, 0x17, 0xbf, 0x2d, 0x03, 0xc3, 0xbe, 0x94, 0x27, 0xcc, 0xa3, 0x7a, 0x4b, 0x74, 0xb8, - 0x42, 0xbe, 0x0a, 0x50, 0xb5, 0x1d, 0x4f, 0x6f, 0xce, 0x87, 0x9a, 0x8f, 0xc7, 0xab, 0x2d, 0x84, - 0xf2, 0x32, 0x12, 0x09, 0xae, 0x5f, 0xa1, 0x59, 0xcd, 0x27, 0x26, 0xbe, 0x7e, 0x05, 0x50, 0x4d, - 0xa2, 0x28, 0xfe, 0x68, 0x1a, 0xc6, 0xfc, 0x4e, 0x9a, 0xba, 0x4f, 0x1b, 0xed, 0x87, 0x79, 0x6e, - 0x8a, 0x4a, 0xbb, 0x77, 0x5b, 0x69, 0x17, 0xff, 0x9d, 0x34, 0x91, 0x94, 0x9b, 0xf6, 0xf1, 0x44, - 0xf2, 0x97, 0xa1, 0xe3, 0xc5, 0xaf, 0xcc, 0xc0, 0x49, 0x5f, 0xea, 0xd3, 0x6d, 0x0b, 0x0f, 0x26, - 0xca, 0x7a, 0xb3, 0xf9, 0x30, 0xef, 0xc6, 0x87, 0x7c, 0x41, 0x2c, 0x88, 0x70, 0xb9, 0x22, 0x51, - 0xf1, 0x5d, 0x01, 0xae, 0xdb, 0xa6, 0xa1, 0xc9, 0x44, 0xe4, 0x35, 0x18, 0xf6, 0x7f, 0x96, 0x9c, - 0x65, 0x7f, 0x0b, 0x8e, 0xd7, 0x0c, 0x41, 0x21, 0xdd, 0x89, 0x44, 0x0f, 0x89, 0x14, 0x28, 0x7e, - 0x73, 0x06, 0xce, 0xdd, 0x31, 0x2d, 0xc3, 0x5e, 0x77, 0xcb, 0xd4, 0xf1, 0x78, 0xb8, 0x19, 0x2a, - 0x87, 0x3c, 0xab, 0xb5, 0xd1, 0x4e, 0x97, 0x43, 0x9e, 0xb9, 0x1c, 0xa4, 0xf9, 0x38, 0xf2, 0x22, - 0x0c, 0xd7, 0xa8, 0x63, 0xea, 0xcd, 0xf9, 0xf6, 0xda, 0x12, 0xf5, 0x9f, 0x9f, 0xe1, 0x3b, 0x3c, - 0x17, 0xe1, 0x75, 0x0b, 0x11, 0x5a, 0x84, 0x8c, 0x9c, 0x85, 0xcc, 0xad, 0xea, 0xbc, 0xb8, 0x38, - 0xc2, 0x0c, 0x76, 0xed, 0x96, 0xa5, 0x31, 0x18, 0x79, 0x03, 0x4e, 0x95, 0xb5, 0xd9, 0x49, 0xd3, - 0xe5, 0xc1, 0x49, 0x4c, 0xdb, 0xaa, 0xda, 0x18, 0x2d, 0x32, 0x1b, 0x7e, 0x61, 0xc3, 0x69, 0xd6, - 0x0d, 0x89, 0xa2, 0xde, 0x42, 0x12, 0x2d, 0xb9, 0x24, 0xb9, 0x0c, 0x03, 0x37, 0xe9, 0xc6, 0x2d, - 0x7c, 0x27, 0xd1, 0x8b, 0x0f, 0x05, 0xf1, 0x22, 0x74, 0x95, 0x6e, 0xd4, 0xdb, 0x0c, 0xa8, 0x05, - 0x68, 0x32, 0x01, 0xb9, 0xa9, 0xfb, 0x1e, 0xb5, 0x0c, 0x6a, 0x04, 0x45, 0x98, 0x68, 0x7b, 0xfd, - 0x50, 0x6e, 0x1c, 0x57, 0x0f, 0xcb, 0xc6, 0xe8, 0x91, 0x87, 0x48, 0x15, 0x19, 0xf0, 0xe8, 0x0f, - 0xef, 0x28, 0x82, 0xd4, 0x92, 0x32, 0x0f, 0x85, 0xbe, 0xf8, 0xdb, 0xfd, 0x41, 0xef, 0xf8, 0x59, - 0xc8, 0x8f, 0xfc, 0x21, 0xe8, 0x61, 0x67, 0x1f, 0x7f, 0x03, 0x4e, 0xa9, 0x22, 0x75, 0x82, 0x3c, - 0x2f, 0x42, 0xb3, 0xd6, 0x39, 0x41, 0xdd, 0x4f, 0xc1, 0x2d, 0x6e, 0x52, 0xb5, 0xe4, 0x92, 0x6a, - 0x42, 0xf3, 0xfe, 0x9d, 0x24, 0x34, 0x7f, 0x1a, 0xfa, 0x26, 0xed, 0x35, 0xdd, 0xf4, 0xa3, 0x7c, - 0xe1, 0x1c, 0x1b, 0xd4, 0x8b, 0x18, 0x4d, 0x50, 0x30, 0xfe, 0xa2, 0x62, 0xec, 0xb2, 0xc1, 0x90, - 0xbf, 0x5f, 0x80, 0xd9, 0xd0, 0x9a, 0x4c, 0x44, 0x6c, 0x18, 0x11, 0xd5, 0x89, 0x7b, 0x4f, 0xc0, - 0xad, 0xed, 0x8b, 0xbe, 0x8c, 0x3a, 0xab, 0xd5, 0x95, 0x48, 0x39, 0xbe, 0xc9, 0xe5, 0x79, 0xd6, - 0xc5, 0xc7, 0xf0, 0x1b, 0x50, 0x2d, 0xca, 0x5f, 0x4d, 0x64, 0x3e, 0xb4, 0x83, 0x44, 0xe6, 0x64, - 0x0a, 0xc6, 0x31, 0x0b, 0x46, 0xb0, 0xd1, 0x65, 0x2a, 0x31, 0x8c, 0x26, 0x3f, 0x5e, 0xa7, 0xf1, - 0xc4, 0x19, 0xec, 0xe3, 0xea, 0x0d, 0x81, 0xd6, 0xe2, 0x25, 0xd8, 0x3c, 0x32, 0x3f, 0x5b, 0xc2, - 0x7b, 0xb8, 0x01, 0x3e, 0x8f, 0x58, 0x4d, 0x5d, 0x63, 0x30, 0x72, 0x07, 0x86, 0xd9, 0xbc, 0x16, - 0x0c, 0x93, 0x51, 0xd4, 0x94, 0xa2, 0x22, 0x85, 0x84, 0xa9, 0x8f, 0xaf, 0x5e, 0x8d, 0x10, 0xa1, - 0x45, 0x18, 0x9d, 0x7b, 0x1d, 0x48, 0x5c, 0x4e, 0xbb, 0xba, 0xc4, 0xfb, 0x95, 0x6c, 0xb8, 0xd3, - 0x3f, 0xea, 0xcf, 0xb0, 0x0e, 0x62, 0xfd, 0x8b, 0x64, 0xb7, 0xed, 0xfd, 0x52, 0x66, 0xb7, 0xed, - 0x3b, 0xd8, 0xec, 0xb6, 0xd1, 0x19, 0xad, 0x7f, 0x1f, 0x33, 0xda, 0x87, 0x13, 0xd3, 0x02, 0xf3, - 0xfb, 0x11, 0x09, 0x2e, 0xaf, 0xe6, 0x32, 0x7d, 0xf1, 0x7b, 0x53, 0x30, 0x1e, 0x4b, 0x86, 0x43, - 0x9e, 0x07, 0xe0, 0x10, 0x29, 0xcc, 0x34, 0xbe, 0x29, 0x0c, 0x13, 0xe4, 0x08, 0xfb, 0x2c, 0x24, - 0x23, 0x57, 0x61, 0x80, 0xff, 0x12, 0x61, 0x00, 0xe3, 0x45, 0xda, 0x6d, 0xd3, 0xd0, 0x02, 0xa2, - 0xb0, 0x16, 0xbc, 0x50, 0xcf, 0x24, 0x16, 0xf1, 0x36, 0x5a, 0x41, 0x2d, 0x98, 0xae, 0xe6, 0xeb, - 0xd2, 0x30, 0x1c, 0x34, 0xb8, 0x64, 0x1c, 0x96, 0xf6, 0xf7, 0x89, 0xbc, 0x42, 0x99, 0xed, 0xf2, - 0x0a, 0x29, 0x4b, 0x8a, 0x48, 0x24, 0x74, 0x70, 0x8e, 0x8b, 0x9f, 0x4e, 0xc3, 0x58, 0x50, 0xeb, - 0x21, 0xde, 0xdd, 0x3e, 0x40, 0x22, 0xf9, 0xfa, 0x14, 0xe4, 0x27, 0xcc, 0x66, 0xd3, 0xb4, 0x96, - 0x2b, 0xd6, 0x5d, 0xdb, 0x59, 0xc3, 0x39, 0xff, 0xf0, 0xee, 0x10, 0x8a, 0x7f, 0x3d, 0x05, 0xe3, - 0xa2, 0x41, 0x65, 0xdd, 0x31, 0x0e, 0xef, 0x80, 0x56, 0x6d, 0xc9, 0xe1, 0xe9, 0x4b, 0xf1, 0x87, - 0xd3, 0x00, 0xb3, 0x76, 0x63, 0xf5, 0x88, 0xfb, 0x3d, 0xbe, 0x02, 0x7d, 0xdc, 0x73, 0x44, 0x68, - 0xec, 0xb8, 0xf0, 0xef, 0x63, 0x9f, 0xc6, 0x11, 0x13, 0x39, 0xb1, 0x32, 0xf4, 0x71, 0xe7, 0x93, - 0x7c, 0x4a, 0x13, 0x45, 0x58, 0xa5, 0x8c, 0x4e, 0x2c, 0x5d, 0x41, 0xa5, 0x0c, 0x16, 0xad, 0x74, - 0x6b, 0xb3, 0x90, 0x6d, 0xda, 0x8d, 0x55, 0x0d, 0xe9, 0x8b, 0xff, 0x6f, 0x8a, 0xcb, 0xee, 0x88, - 0x7b, 0x6f, 0xfb, 0x9f, 0x9f, 0xdd, 0xe5, 0xe7, 0xff, 0x8d, 0x14, 0x9c, 0xd4, 0x68, 0xc3, 0xbe, - 0x47, 0x9d, 0x8d, 0xb2, 0x6d, 0xd0, 0xeb, 0xd4, 0xa2, 0xce, 0x61, 0x8d, 0xa8, 0x1f, 0xc3, 0x0c, - 0x07, 0x61, 0x63, 0x6e, 0xb9, 0xd4, 0x38, 0x3a, 0x49, 0xf2, 0x8a, 0xff, 0xb9, 0x1f, 0xf2, 0x89, - 0x86, 0xfd, 0x91, 0x35, 0x2c, 0x3b, 0xee, 0xd6, 0xb2, 0x07, 0xb5, 0x5b, 0xeb, 0xdd, 0xdd, 0x6e, - 0xad, 0x6f, 0xb7, 0xbb, 0xb5, 0xfe, 0x9d, 0xec, 0xd6, 0xd6, 0xd4, 0xdd, 0xda, 0x00, 0xee, 0xd6, - 0x9e, 0xef, 0xba, 0x5b, 0x9b, 0xb2, 0x8c, 0x3d, 0xee, 0xd5, 0x22, 0xa6, 0xf6, 0xe0, 0x97, 0xd2, - 0xd4, 0x86, 0x83, 0x35, 0xb5, 0xf7, 0xb2, 0xc9, 0xbc, 0xc4, 0x26, 0xc5, 0x86, 0xed, 0x18, 0xd4, - 0x10, 0x7b, 0x4b, 0xbc, 0x76, 0x72, 0x04, 0x4c, 0x0b, 0xb0, 0xe4, 0x05, 0xc5, 0xfc, 0x1e, 0x41, - 0xf3, 0x1b, 0xd9, 0xcb, 0xe6, 0x77, 0xd4, 0xe8, 0x56, 0x4c, 0x9d, 0xd1, 0xbd, 0x9b, 0x3a, 0x07, - 0xb0, 0xa7, 0xfc, 0x0f, 0x69, 0x18, 0x97, 0x36, 0xb3, 0x07, 0xb0, 0x1c, 0x97, 0x60, 0x4c, 0x62, - 0x88, 0xb6, 0x7d, 0x3a, 0x7c, 0xef, 0xca, 0xf6, 0xc7, 0xea, 0x73, 0x59, 0x95, 0x9e, 0x55, 0xef, - 0xe7, 0xd8, 0x15, 0xb3, 0x40, 0x50, 0xbd, 0x0f, 0xe7, 0x5d, 0x62, 0x8a, 0x5f, 0x5a, 0x40, 0x2f, - 0x3d, 0xf9, 0xca, 0xee, 0x21, 0x6d, 0xee, 0x2a, 0x9c, 0x94, 0x1a, 0x53, 0x6a, 0x7b, 0x2b, 0xb6, - 0xc3, 0x5a, 0xd1, 0x2b, 0xa2, 0x8a, 0xfb, 0xbc, 0x12, 0x68, 0x44, 0x0e, 0xcf, 0x10, 0x53, 0xd7, - 0x7d, 0x94, 0x96, 0xc8, 0x94, 0x6d, 0xbe, 0x12, 0x11, 0xe4, 0x22, 0x64, 0x51, 0x6e, 0x52, 0xfa, - 0x4d, 0x45, 0x64, 0x88, 0x27, 0xcf, 0x04, 0x93, 0x4c, 0x3a, 0xf4, 0x5a, 0xe1, 0x93, 0x8b, 0xec, - 0xf3, 0x2b, 0xa6, 0x99, 0xd7, 0x61, 0x58, 0x1c, 0xbf, 0xde, 0xa4, 0x1b, 0x41, 0x86, 0x16, 0x4c, - 0x17, 0x25, 0xce, 0x67, 0xf1, 0x68, 0x31, 0xf2, 0x9a, 0x2e, 0x52, 0xa2, 0xf8, 0x3d, 0x29, 0xb8, - 0xa8, 0x51, 0x8b, 0xae, 0xeb, 0x4b, 0x4d, 0x2a, 0xb5, 0x5c, 0xac, 0xc0, 0x4c, 0x67, 0x4d, 0x77, - 0x4d, 0xf7, 0x1a, 0x2b, 0xfb, 0xd2, 0xa0, 0x69, 0x18, 0x96, 0xd7, 0x89, 0x5d, 0xac, 0x21, 0x91, - 0x72, 0xc5, 0x1f, 0xc8, 0x42, 0xff, 0x84, 0xed, 0xdd, 0xb0, 0xf7, 0x99, 0xe5, 0x3a, 0x5c, 0x5a, - 0xd3, 0xbb, 0x38, 0x36, 0x7c, 0x16, 0x2b, 0x97, 0x52, 0x2c, 0xe1, 0x29, 0xee, 0x92, 0x1d, 0x4b, - 0x27, 0xe6, 0x93, 0xed, 0x32, 0xbf, 0xf5, 0x4b, 0x30, 0x88, 0xd1, 0xac, 0xa4, 0x6b, 0x17, 0xf4, - 0xe3, 0xf0, 0x18, 0x50, 0xad, 0x23, 0x24, 0x25, 0x1f, 0x8d, 0x44, 0x01, 0xef, 0xdb, 0x7f, 0x3e, - 0x6c, 0x39, 0x20, 0xf8, 0xf3, 0xfc, 0xc6, 0x1e, 0xdb, 0x24, 0x65, 0xda, 0xc3, 0x03, 0x39, 0xa5, - 0x49, 0x01, 0xe1, 0x01, 0xe6, 0xaa, 0x2e, 0xc3, 0xc8, 0x84, 0xed, 0x49, 0x3e, 0x03, 0x83, 0xa1, - 0x5b, 0x3b, 0x93, 0x7c, 0xb2, 0xc3, 0x40, 0xb4, 0x4c, 0xf1, 0xcf, 0xb2, 0x30, 0xec, 0xff, 0x3c, - 0x24, 0xdd, 0x79, 0x1f, 0xf4, 0xcd, 0xd8, 0x52, 0x1a, 0x25, 0xf4, 0x33, 0x58, 0xb1, 0x5d, 0xc5, - 0x81, 0x42, 0x10, 0x31, 0xa9, 0xcf, 0xdb, 0x86, 0xec, 0x25, 0x83, 0x52, 0xb7, 0x6c, 0x23, 0x16, - 0x0e, 0x21, 0x20, 0x64, 0x93, 0x0c, 0x3a, 0x18, 0x49, 0x37, 0x76, 0x8a, 0x53, 0x11, 0xe2, 0x25, - 0xad, 0xec, 0xdb, 0xad, 0x56, 0xf6, 0xef, 0x55, 0x2b, 0x07, 0x0e, 0x56, 0x2b, 0xdf, 0x82, 0x61, - 0xac, 0xc9, 0xcf, 0x55, 0xbc, 0xbd, 0x01, 0x73, 0x56, 0xd8, 0x18, 0x23, 0xbc, 0xdd, 0x22, 0x63, - 0x31, 0x9a, 0x16, 0x11, 0x56, 0x8a, 0xee, 0xc2, 0x3e, 0x8e, 0x2d, 0x7e, 0x33, 0x05, 0xfd, 0x22, - 0x9b, 0xd8, 0xbe, 0x34, 0xee, 0x79, 0x18, 0x12, 0x6c, 0xa4, 0xb5, 0x17, 0x6f, 0xd6, 0xfc, 0x5c, - 0x6a, 0xc8, 0x49, 0x93, 0xa9, 0xc8, 0xab, 0x41, 0x21, 0xf4, 0x21, 0xcc, 0x84, 0xa9, 0xde, 0xc2, - 0x04, 0x6c, 0x46, 0xd4, 0x35, 0x38, 0x24, 0x27, 0xe7, 0x21, 0x3b, 0xc9, 0x9a, 0x2a, 0x45, 0x24, - 0x67, 0x4d, 0xd1, 0x10, 0x5a, 0xfc, 0x54, 0x16, 0x46, 0x95, 0x03, 0xc6, 0xa7, 0x61, 0x50, 0x1c, - 0xf0, 0x99, 0x7e, 0x6a, 0x24, 0xbc, 0x5a, 0x0b, 0x80, 0xda, 0x00, 0xff, 0xb3, 0x62, 0x90, 0x0f, - 0x43, 0xbf, 0xed, 0xa2, 0xc9, 0x80, 0xdf, 0x32, 0x1a, 0x0e, 0xa1, 0x85, 0x1a, 0x26, 0xb9, 0xc6, - 0xc1, 0x21, 0x48, 0x64, 0x8d, 0xb4, 0x5d, 0xfc, 0xb4, 0x17, 0x60, 0x50, 0x77, 0x5d, 0xea, 0xd5, - 0x3d, 0x7d, 0x59, 0xce, 0x96, 0x14, 0x00, 0xe5, 0xd1, 0x81, 0xc0, 0x45, 0x7d, 0x99, 0xbc, 0x0e, - 0x23, 0x0d, 0x87, 0xa2, 0x51, 0xa1, 0x37, 0x59, 0x2b, 0xa5, 0xed, 0x43, 0x04, 0x21, 0x2f, 0x96, - 0x21, 0xa2, 0x62, 0x90, 0xdb, 0x30, 0x22, 0x3e, 0x87, 0x3b, 0xf8, 0x88, 0xa4, 0xec, 0xc1, 0x32, - 0xc6, 0x45, 0xc2, 0x5d, 0x7c, 0x84, 0x9f, 0x97, 0x4c, 0x2e, 0xf3, 0x35, 0x24, 0x52, 0xb2, 0x00, - 0x64, 0x9d, 0x2e, 0xa1, 0x71, 0xc1, 0xea, 0xe2, 0xc9, 0x3e, 0x44, 0x1a, 0x71, 0x74, 0x8e, 0x8a, - 0x63, 0x65, 0x9f, 0xb1, 0x75, 0xba, 0x54, 0x8a, 0x20, 0xc9, 0x1d, 0x38, 0x15, 0x2f, 0xc2, 0x3e, - 0x99, 0xdf, 0x33, 0x3d, 0xb1, 0xb5, 0x59, 0x28, 0x24, 0x12, 0x48, 0x6c, 0x4f, 0xc4, 0xd8, 0x56, - 0x8c, 0x1b, 0xd9, 0x81, 0xfe, 0xdc, 0x80, 0x36, 0xca, 0xca, 0xfa, 0xa6, 0xba, 0x69, 0x14, 0x7f, - 0x21, 0xc5, 0x4c, 0x72, 0xf6, 0x41, 0x53, 0x4c, 0x10, 0x4c, 0xd7, 0xd7, 0x76, 0xa9, 0xeb, 0x6b, - 0x61, 0x9e, 0xf2, 0x3e, 0xb7, 0xcb, 0xec, 0xaa, 0x09, 0x2c, 0xb9, 0x02, 0x7d, 0x86, 0x7c, 0x3a, - 0x79, 0x3a, 0xda, 0x09, 0x7e, 0x3d, 0x9a, 0xa0, 0x22, 0x97, 0x20, 0xcb, 0x96, 0x2c, 0xf5, 0x68, - 0x42, 0xb6, 0x2e, 0x34, 0xa4, 0x28, 0x7e, 0x79, 0x1a, 0x86, 0xa5, 0xaf, 0xb9, 0xb6, 0xaf, 0xcf, - 0xf9, 0xe0, 0xce, 0x9a, 0xe9, 0xbf, 0x6e, 0xc3, 0x3d, 0xab, 0xdf, 0xe4, 0x17, 0x02, 0x51, 0xec, - 0xe8, 0x6e, 0x53, 0x08, 0xe6, 0x25, 0xf1, 0xa1, 0x7d, 0x3b, 0xdf, 0xa6, 0x33, 0xfa, 0x1b, 0xd9, - 0x81, 0x74, 0x2e, 0x73, 0x23, 0x3b, 0x90, 0xcd, 0xf5, 0x62, 0x5c, 0x41, 0x4c, 0x04, 0xc0, 0xcf, - 0x40, 0xac, 0xbb, 0xe6, 0xf2, 0x11, 0x77, 0x31, 0x3b, 0xd8, 0x98, 0x8b, 0x8a, 0x6c, 0x8e, 0xb8, - 0xbf, 0xd9, 0x97, 0x54, 0x36, 0xc7, 0x79, 0xcd, 0x85, 0x6c, 0x7e, 0x2b, 0x05, 0xf9, 0x44, 0xd9, - 0x94, 0x0e, 0xe9, 0xc1, 0xd3, 0xc1, 0x65, 0x37, 0xff, 0x62, 0x1a, 0xc6, 0x2b, 0x96, 0x47, 0x97, - 0xf9, 0x8e, 0xf1, 0x88, 0x4f, 0x15, 0x37, 0x61, 0x48, 0xfa, 0x18, 0xd1, 0xe7, 0x8f, 0x04, 0xa7, - 0x15, 0x21, 0xaa, 0x03, 0x27, 0xb9, 0xf4, 0xc1, 0x39, 0xec, 0xa9, 0x42, 0x3e, 0xe2, 0x73, 0xce, - 0xd1, 0x10, 0xf2, 0x11, 0x9f, 0xbc, 0x1e, 0x50, 0x21, 0x7f, 0x3a, 0x03, 0x27, 0x12, 0x2a, 0x27, - 0x17, 0xf1, 0xa1, 0x21, 0x86, 0x11, 0x4c, 0x85, 0xae, 0x01, 0x6e, 0x7b, 0x09, 0x23, 0x08, 0x6a, - 0x3e, 0x92, 0x2c, 0x62, 0x0c, 0x8e, 0x85, 0xca, 0x64, 0x59, 0x48, 0xb5, 0x28, 0x45, 0x13, 0x61, - 0xe0, 0xa4, 0x2f, 0x0b, 0xe2, 0x74, 0xd8, 0xa6, 0xd1, 0x50, 0xe2, 0x74, 0xb0, 0x32, 0xe4, 0x63, - 0x30, 0x58, 0x7a, 0xa7, 0xed, 0x50, 0xe4, 0xcb, 0x25, 0xfe, 0x64, 0xc0, 0xd7, 0x47, 0x24, 0x71, - 0xe6, 0x21, 0x47, 0x18, 0x85, 0xca, 0x3b, 0x64, 0x48, 0x16, 0xa0, 0xef, 0xba, 0xe9, 0xcd, 0xb4, - 0x97, 0x44, 0x2f, 0x04, 0xa1, 0x06, 0x39, 0x34, 0x89, 0x2f, 0xee, 0xca, 0x79, 0xc8, 0x74, 0x79, - 0x0f, 0xc4, 0x0b, 0x90, 0x59, 0xe8, 0x2d, 0xdd, 0xa9, 0x69, 0x25, 0xd1, 0x13, 0x8f, 0xc9, 0x01, - 0x55, 0x4a, 0x1d, 0xd9, 0x61, 0x78, 0x08, 0x5d, 0x0e, 0x21, 0x85, 0xf4, 0xc5, 0xaf, 0x4b, 0xc1, - 0xb9, 0xce, 0xc2, 0x23, 0xcf, 0x42, 0xbf, 0x66, 0x37, 0x69, 0x49, 0x9b, 0x17, 0x3d, 0x83, 0xd2, - 0xf4, 0x33, 0x5a, 0xcb, 0xd2, 0x14, 0x64, 0xe4, 0x43, 0x30, 0x54, 0x71, 0xdd, 0x36, 0x75, 0x6a, - 0xcf, 0xdf, 0xd2, 0x2a, 0x62, 0xcb, 0x8a, 0x5b, 0x22, 0x13, 0xc1, 0x75, 0xf7, 0x79, 0x25, 0x8e, - 0xa1, 0x4c, 0x5f, 0xfc, 0x9a, 0x14, 0x9c, 0xef, 0x26, 0x74, 0xf2, 0x3c, 0x0c, 0x2c, 0x52, 0x4b, - 0xb7, 0xbc, 0xca, 0xa4, 0x68, 0x12, 0xee, 0x00, 0x3d, 0x84, 0x45, 0x37, 0x32, 0x01, 0x21, 0x2b, - 0xc4, 0x0f, 0x85, 0x83, 0xf7, 0x2c, 0xfc, 0x00, 0x1b, 0x61, 0x4a, 0x21, 0x9f, 0xb0, 0xf8, 0x51, - 0x38, 0xdb, 0xb1, 0x8f, 0xc8, 0x87, 0x61, 0x78, 0xc1, 0x59, 0xd6, 0x2d, 0xf3, 0x1d, 0x3e, 0xc4, - 0x52, 0xe1, 0x2e, 0xdb, 0x96, 0xe0, 0xf2, 0xce, 0x4f, 0xa6, 0x2f, 0x2e, 0x41, 0xbe, 0x53, 0x87, - 0x91, 0x69, 0x18, 0xc5, 0x48, 0xf7, 0x25, 0xab, 0xb1, 0x62, 0x3b, 0xa1, 0xec, 0xd1, 0x03, 0xd3, - 0x63, 0x98, 0xba, 0x8e, 0x28, 0xa5, 0x0f, 0x94, 0x52, 0xc5, 0x5f, 0x4e, 0xc3, 0x70, 0xb5, 0xd9, - 0x5e, 0x36, 0xa5, 0x85, 0x79, 0xcf, 0xfb, 0x19, 0x7f, 0x77, 0x91, 0xde, 0xdd, 0xee, 0x82, 0x4d, - 0x67, 0xce, 0x1e, 0xa7, 0x33, 0xbf, 0x1c, 0x79, 0x15, 0xfa, 0x5a, 0xf8, 0x1d, 0xea, 0x3d, 0x00, - 0xff, 0xba, 0x4e, 0xf7, 0x00, 0xbc, 0x0c, 0x9b, 0xbf, 0x1a, 0xfb, 0x98, 0xbf, 0xc2, 0xb2, 0x92, - 0x40, 0xc3, 0x45, 0xf8, 0x58, 0xa0, 0x07, 0x22, 0xd0, 0x70, 0xc1, 0x3d, 0x16, 0xe8, 0x3e, 0x04, - 0xfa, 0x03, 0x69, 0x18, 0x8d, 0x56, 0x49, 0x9e, 0x85, 0x21, 0x5e, 0x0d, 0x3f, 0x77, 0x4b, 0x49, - 0xde, 0x19, 0x21, 0x58, 0x03, 0xfe, 0x43, 0x1c, 0x20, 0x8e, 0xad, 0xe8, 0x6e, 0x3d, 0x3c, 0x01, - 0xe3, 0xef, 0x10, 0x06, 0xf8, 0x8b, 0x3e, 0x05, 0xa5, 0x8d, 0xae, 0xe8, 0x6e, 0x39, 0xfc, 0x4d, - 0xa6, 0x80, 0x38, 0xb4, 0xed, 0xd2, 0x28, 0x83, 0x2c, 0x32, 0xe0, 0xab, 0x47, 0x0c, 0xab, 0x8d, - 0x73, 0x98, 0xcc, 0xe6, 0xe3, 0x41, 0xb3, 0x51, 0x19, 0x7a, 0xbb, 0x9f, 0x22, 0x3f, 0xb1, 0xb5, - 0x59, 0x38, 0x25, 0xd1, 0x27, 0x1f, 0x23, 0x73, 0x82, 0x49, 0xdd, 0xd3, 0xf9, 0xa1, 0x87, 0xdf, - 0x01, 0xc5, 0xaf, 0xfa, 0xa6, 0x14, 0xf4, 0x2e, 0x58, 0x74, 0xe1, 0x2e, 0x79, 0x0e, 0x06, 0x99, - 0xc6, 0xcc, 0xda, 0xac, 0x33, 0x53, 0xe2, 0x21, 0x90, 0xa4, 0x4a, 0x88, 0x98, 0xe9, 0xd1, 0x42, - 0x2a, 0xf2, 0x02, 0x40, 0xe8, 0xac, 0x2b, 0xd4, 0x8f, 0xc8, 0x65, 0x38, 0x66, 0xa6, 0x47, 0x93, - 0xe8, 0xfc, 0x52, 0xc2, 0xd5, 0x31, 0x13, 0x2f, 0xc5, 0x31, 0x7e, 0x29, 0x31, 0x40, 0x66, 0x81, - 0xb0, 0x5f, 0x55, 0xdd, 0x75, 0xd7, 0x6d, 0xc7, 0x28, 0xaf, 0xe8, 0xd6, 0x32, 0x55, 0xb7, 0xa7, - 0x71, 0x8a, 0x99, 0x1e, 0x2d, 0xa1, 0x1c, 0xf9, 0x20, 0x0c, 0xcb, 0x8f, 0xbf, 0xd5, 0xd7, 0x4b, - 0x32, 0x6e, 0xa6, 0x47, 0x8b, 0xd0, 0x92, 0xf7, 0xc3, 0x90, 0xf8, 0x7d, 0xc3, 0x16, 0x4f, 0x23, - 0xa4, 0x98, 0x70, 0x12, 0x6a, 0xa6, 0x47, 0x93, 0x29, 0xa5, 0x4a, 0xab, 0x8e, 0x69, 0x79, 0xe2, - 0xcd, 0xac, 0x5a, 0x29, 0xe2, 0xa4, 0x4a, 0xf1, 0x37, 0xf9, 0x10, 0x8c, 0x04, 0xc1, 0xf6, 0xd0, - 0x31, 0x85, 0xdf, 0x2e, 0x9c, 0x52, 0x0a, 0x73, 0xe4, 0x4c, 0x8f, 0x16, 0xa5, 0x26, 0x97, 0xa0, - 0x4f, 0xa3, 0xae, 0xf9, 0x8e, 0xff, 0xee, 0x61, 0x54, 0x1a, 0xe8, 0xe6, 0x3b, 0x4c, 0x4a, 0x02, - 0xcf, 0x7a, 0x27, 0x7c, 0x68, 0x21, 0xee, 0x02, 0x88, 0x52, 0xcb, 0x94, 0x65, 0xb0, 0xde, 0x91, - 0x5e, 0xd9, 0xbc, 0x1e, 0x86, 0x20, 0x14, 0x39, 0xc2, 0x87, 0xd4, 0x58, 0x2f, 0x32, 0x76, 0xa6, - 0x47, 0x53, 0xe8, 0x25, 0xa9, 0x4e, 0x9a, 0xee, 0xaa, 0x08, 0x4f, 0xad, 0x4a, 0x95, 0xa1, 0x24, - 0xa9, 0xb2, 0x9f, 0x52, 0xd5, 0xf3, 0xd4, 0x5b, 0xb7, 0x9d, 0x55, 0x11, 0x8c, 0x5a, 0xad, 0x5a, - 0x60, 0xa5, 0xaa, 0x05, 0x44, 0xae, 0x3a, 0x7c, 0x2c, 0x1f, 0xab, 0x5a, 0xf7, 0x74, 0xb9, 0x6a, - 0x7e, 0xd4, 0xe9, 0x77, 0xd2, 0x2c, 0xd5, 0xef, 0xd1, 0xfc, 0x58, 0x62, 0x87, 0x22, 0x4e, 0xea, - 0x50, 0xfc, 0xcd, 0x2a, 0xad, 0xda, 0x8e, 0x37, 0x6d, 0x3b, 0xeb, 0xba, 0x63, 0xe4, 0x73, 0xd1, - 0x4a, 0x25, 0x14, 0xab, 0x54, 0xfa, 0xc9, 0x3a, 0xe8, 0xcd, 0xe7, 0x9e, 0xf3, 0xcb, 0x8d, 0x47, - 0x3b, 0x28, 0xc4, 0xb0, 0x0e, 0x0a, 0x7f, 0x91, 0x02, 0x66, 0xc0, 0xcf, 0x13, 0x24, 0x1f, 0x0a, - 0x5a, 0x58, 0xae, 0xce, 0xf4, 0x68, 0x98, 0x1b, 0xbf, 0x08, 0xd9, 0xa9, 0xfb, 0xb4, 0x91, 0x3f, - 0x81, 0x14, 0xc3, 0x3e, 0x05, 0x83, 0xcd, 0xf4, 0x68, 0x88, 0x63, 0x53, 0x44, 0x90, 0x7f, 0x36, - 0x7f, 0x32, 0x3a, 0x45, 0x04, 0x08, 0x36, 0x45, 0x84, 0x59, 0x6a, 0xa7, 0xe3, 0x59, 0x56, 0xf3, - 0xa7, 0xa2, 0x6b, 0x8d, 0x8a, 0x9f, 0xe9, 0xd1, 0xe2, 0x99, 0x59, 0xdf, 0x1f, 0x49, 0x3c, 0x9a, - 0x3f, 0xad, 0x04, 0x62, 0x0c, 0x51, 0x4c, 0x5c, 0x72, 0x8a, 0xd2, 0x05, 0x38, 0xc1, 0xf3, 0x96, - 0x8b, 0x50, 0x8a, 0x62, 0xb2, 0x3a, 0x13, 0xdd, 0x19, 0x26, 0x90, 0xcc, 0xf4, 0x68, 0x49, 0x25, - 0x49, 0x39, 0x96, 0xc0, 0x33, 0x9f, 0x8f, 0x3e, 0xf2, 0x52, 0xd0, 0x33, 0x3d, 0x5a, 0x2c, 0xe5, - 0xe7, 0x0b, 0x72, 0xe6, 0xcc, 0xfc, 0xd9, 0x68, 0x27, 0x86, 0x18, 0xd6, 0x89, 0x52, 0x86, 0xcd, - 0x17, 0xe4, 0x6c, 0x8a, 0xf9, 0x73, 0xf1, 0x52, 0xe1, 0xcc, 0x29, 0x65, 0x5d, 0xd4, 0x92, 0x13, - 0xc4, 0xe5, 0x1f, 0x89, 0x3e, 0x07, 0x49, 0xa2, 0x99, 0xe9, 0xd1, 0x92, 0x93, 0xcb, 0x69, 0xc9, - 0x99, 0xd5, 0xf2, 0xe7, 0xbb, 0xf1, 0x0c, 0x5a, 0x97, 0x9c, 0x95, 0x4d, 0xef, 0x92, 0xe7, 0x2a, - 0x7f, 0x21, 0xba, 0x87, 0xec, 0x48, 0x38, 0xd3, 0xa3, 0x75, 0xc9, 0x96, 0x75, 0xab, 0x43, 0xd2, - 0xa9, 0xfc, 0xa3, 0xc8, 0xfe, 0x82, 0xb4, 0x45, 0x8d, 0x13, 0xcd, 0xf4, 0x68, 0x1d, 0x52, 0x56, - 0xdd, 0xea, 0x90, 0x93, 0x28, 0x5f, 0xe8, 0xca, 0x36, 0x90, 0x47, 0x87, 0x8c, 0x46, 0x0b, 0x89, - 0xe9, 0x7c, 0xf2, 0x8f, 0x45, 0x55, 0x37, 0x81, 0x84, 0xa9, 0x6e, 0x52, 0x22, 0xa0, 0x85, 0xc4, - 0xfc, 0x33, 0xf9, 0xc7, 0xbb, 0x30, 0x0c, 0xda, 0x98, 0x98, 0xb9, 0x66, 0x21, 0x31, 0x01, 0x4c, - 0xbe, 0x18, 0x65, 0x98, 0x40, 0xc2, 0x18, 0x26, 0xa5, 0x8e, 0x59, 0x48, 0xcc, 0x13, 0x92, 0x7f, - 0xa2, 0x0b, 0xc3, 0xb0, 0x85, 0x49, 0x19, 0x46, 0xde, 0x1f, 0x49, 0xd4, 0x91, 0x7f, 0x32, 0x3a, - 0x6f, 0x48, 0x28, 0x36, 0x6f, 0xc8, 0x29, 0x3d, 0xca, 0xb1, 0x28, 0xe2, 0xf9, 0xa7, 0xa2, 0xc3, - 0x5c, 0x41, 0xb3, 0x61, 0xae, 0xc6, 0x1d, 0x2f, 0xc7, 0x22, 0x1d, 0xe7, 0x2f, 0x76, 0x62, 0x82, - 0xe8, 0x28, 0x13, 0x1e, 0x1b, 0xb9, 0x92, 0x10, 0x6a, 0x37, 0xff, 0x9e, 0xa8, 0x83, 0x42, 0x8c, - 0x60, 0xa6, 0x47, 0x4b, 0x08, 0xd0, 0xab, 0x25, 0xc7, 0x95, 0xcb, 0x5f, 0x8a, 0x0e, 0xdb, 0x24, - 0x1a, 0x36, 0x6c, 0x13, 0x63, 0xd2, 0xcd, 0x26, 0xf9, 0x73, 0xe5, 0x2f, 0x47, 0x0d, 0xb3, 0x38, - 0x05, 0x33, 0xcc, 0x12, 0xfc, 0xc0, 0xb4, 0xe4, 0x68, 0x65, 0xf9, 0xa7, 0xbb, 0xb6, 0x10, 0x69, - 0x12, 0x5a, 0xc8, 0x83, 0x77, 0x85, 0xb6, 0xd3, 0xad, 0x56, 0xd3, 0xd6, 0x8d, 0xfc, 0x7b, 0x13, - 0x6d, 0x27, 0x8e, 0x94, 0x6c, 0x27, 0x0e, 0x60, 0xab, 0xbc, 0xec, 0xac, 0x93, 0x7f, 0x26, 0xba, - 0xca, 0xcb, 0x38, 0xb6, 0xca, 0x47, 0x1c, 0x7b, 0xca, 0x31, 0xc7, 0x96, 0xfc, 0xfb, 0xa2, 0x0a, - 0xa0, 0xa0, 0x99, 0x02, 0xa8, 0xae, 0x30, 0x9f, 0xe8, 0xec, 0x0a, 0x92, 0xbf, 0x12, 0x3d, 0x0b, - 0xeb, 0x44, 0x37, 0xd3, 0xa3, 0x75, 0x76, 0x27, 0xa9, 0x24, 0x78, 0x76, 0xe4, 0xaf, 0x46, 0x15, - 0x2c, 0x46, 0xc0, 0x14, 0x2c, 0xee, 0x0f, 0x52, 0x49, 0x70, 0xcd, 0xc8, 0x3f, 0xdb, 0x91, 0x55, - 0xf0, 0xcd, 0x09, 0x0e, 0x1d, 0x2f, 0xc8, 0xbe, 0x15, 0xf9, 0xe7, 0xa2, 0x8b, 0x5d, 0x88, 0x61, - 0x8b, 0x9d, 0xe4, 0x83, 0xf1, 0x82, 0xec, 0x55, 0x90, 0xbf, 0x16, 0x2f, 0x15, 0x2e, 0x91, 0x92, - 0xf7, 0x81, 0x96, 0xfc, 0x18, 0x3f, 0xff, 0x7c, 0x54, 0xeb, 0x92, 0x68, 0x98, 0xd6, 0x25, 0x3e, - 0xe4, 0x9f, 0x8e, 0xbf, 0xa9, 0xcf, 0xbf, 0xa0, 0xee, 0xb2, 0xa3, 0x78, 0x66, 0xf9, 0xc4, 0xde, - 0xe1, 0xbf, 0xae, 0x06, 0x3d, 0xcd, 0xbf, 0xa8, 0xdc, 0xab, 0x47, 0xb0, 0xcc, 0xbe, 0x55, 0x82, - 0xa4, 0xbe, 0xae, 0xc6, 0x09, 0xcd, 0xbf, 0x94, 0xcc, 0x21, 0xd0, 0x15, 0x35, 0xae, 0xe8, 0xeb, - 0x6a, 0x68, 0xcd, 0xfc, 0xfb, 0x93, 0x39, 0x04, 0xd2, 0x55, 0x43, 0x71, 0x3e, 0x27, 0x25, 0x14, - 0xc9, 0x7f, 0x20, 0x6a, 0x3a, 0x06, 0x08, 0x66, 0x3a, 0x86, 0x69, 0x47, 0x9e, 0x93, 0x12, 0x71, - 0xe4, 0x5f, 0x8e, 0x15, 0x09, 0x1a, 0x2b, 0xa5, 0xeb, 0x78, 0x4e, 0x4a, 0x60, 0x91, 0xff, 0x60, - 0xac, 0x48, 0xd0, 0x3a, 0x29, 0xcd, 0x85, 0xd1, 0xcd, 0xd7, 0x3c, 0xff, 0x4a, 0xa2, 0xe3, 0x6c, - 0x02, 0xe5, 0x4c, 0x8f, 0xd6, 0xcd, 0x67, 0xfd, 0x13, 0x9d, 0x3d, 0x14, 0xf2, 0xaf, 0x46, 0x87, - 0x70, 0x27, 0x3a, 0x36, 0x84, 0x3b, 0x7a, 0x39, 0x7c, 0x48, 0x89, 0x0a, 0x94, 0xff, 0x50, 0x74, - 0x8a, 0x8b, 0x20, 0xd9, 0x14, 0xa7, 0xc6, 0x10, 0x8a, 0x84, 0xbb, 0xc9, 0x7f, 0x38, 0x3a, 0xc5, - 0xc9, 0x38, 0x36, 0xc5, 0x45, 0x42, 0xe3, 0x94, 0x63, 0x51, 0x58, 0xf2, 0xaf, 0x45, 0xa7, 0x38, - 0x05, 0xcd, 0xa6, 0x38, 0x35, 0x6e, 0xcb, 0x87, 0x94, 0x60, 0x24, 0xf9, 0xd7, 0x93, 0xdb, 0x8f, - 0x48, 0xb9, 0xfd, 0x3c, 0x74, 0x89, 0x96, 0x1c, 0x55, 0x23, 0x5f, 0x8a, 0x8e, 0xdf, 0x24, 0x1a, - 0x36, 0x7e, 0x13, 0x23, 0x72, 0xa8, 0x1b, 0x07, 0xa1, 0x55, 0x13, 0x5d, 0x36, 0x0e, 0xa1, 0x29, - 0x92, 0x00, 0x8e, 0xec, 0x91, 0xf9, 0x46, 0xa8, 0xdc, 0x61, 0x8f, 0xec, 0x6f, 0x83, 0x14, 0x7a, - 0x36, 0xbb, 0xc6, 0x9e, 0xb9, 0xe7, 0x27, 0xa3, 0xb3, 0x6b, 0x8c, 0x80, 0xcd, 0xae, 0xf1, 0xc7, - 0xf1, 0xd3, 0x90, 0x13, 0x5a, 0xc4, 0xfd, 0x00, 0x4c, 0x6b, 0x39, 0x3f, 0xa5, 0xb8, 0x30, 0x2b, - 0x78, 0x36, 0x3b, 0xa9, 0x30, 0x5c, 0xaf, 0x39, 0xac, 0xdc, 0x34, 0x5b, 0x4b, 0xb6, 0xee, 0x18, - 0x35, 0x6a, 0x19, 0xf9, 0x69, 0x65, 0xbd, 0x4e, 0xa0, 0xc1, 0xf5, 0x3a, 0x01, 0x8e, 0xc1, 0x36, - 0x15, 0xb8, 0x46, 0x1b, 0xd4, 0xbc, 0x47, 0xf3, 0xd7, 0x91, 0x6d, 0xa1, 0x13, 0x5b, 0x41, 0x36, - 0xd3, 0xa3, 0x75, 0xe2, 0xc0, 0x6c, 0xf5, 0xb9, 0x8d, 0xda, 0x1b, 0xb3, 0x41, 0x20, 0x97, 0xaa, - 0x43, 0x5b, 0xba, 0x43, 0xf3, 0x33, 0x51, 0x5b, 0x3d, 0x91, 0x88, 0xd9, 0xea, 0x89, 0x88, 0x38, - 0x5b, 0x7f, 0x2c, 0x54, 0xba, 0xb1, 0x0d, 0x47, 0x44, 0x72, 0x69, 0x36, 0x3b, 0x45, 0x11, 0x4c, - 0x40, 0xb3, 0xb6, 0xb5, 0x8c, 0x27, 0x15, 0x37, 0xa2, 0xb3, 0x53, 0x67, 0x4a, 0x36, 0x3b, 0x75, - 0xc6, 0x32, 0x55, 0x8f, 0x62, 0xf9, 0x18, 0xbc, 0x19, 0x55, 0xf5, 0x04, 0x12, 0xa6, 0xea, 0x09, - 0xe0, 0x38, 0x43, 0x8d, 0xba, 0xd4, 0xcb, 0xcf, 0x76, 0x63, 0x88, 0x24, 0x71, 0x86, 0x08, 0x8e, - 0x33, 0x9c, 0xa6, 0x5e, 0x63, 0x25, 0x3f, 0xd7, 0x8d, 0x21, 0x92, 0xc4, 0x19, 0x22, 0x98, 0x6d, - 0x36, 0xa3, 0xe0, 0x89, 0x76, 0x73, 0xd5, 0xef, 0xb3, 0xf9, 0xe8, 0x66, 0xb3, 0x23, 0x21, 0xdb, - 0x6c, 0x76, 0x44, 0x92, 0xaf, 0xd9, 0xb1, 0xa3, 0x41, 0x7e, 0x01, 0x2b, 0xbc, 0x12, 0xda, 0x05, - 0x3b, 0x29, 0x35, 0xd3, 0xa3, 0xed, 0xd4, 0x91, 0xe1, 0xbd, 0xc1, 0xab, 0xdc, 0x7c, 0x15, 0xab, - 0x1a, 0x0b, 0xce, 0x2a, 0x38, 0x78, 0xa6, 0x47, 0x0b, 0xde, 0xed, 0xbe, 0x1f, 0x86, 0xf0, 0xa3, - 0x2a, 0x96, 0xe9, 0x4d, 0x4e, 0xe4, 0xdf, 0x88, 0x6e, 0x99, 0x24, 0x14, 0xdb, 0x32, 0x49, 0x3f, - 0xd9, 0x24, 0x8e, 0x3f, 0xf9, 0x14, 0x33, 0x39, 0x91, 0xd7, 0xa2, 0x93, 0x78, 0x04, 0xc9, 0x26, - 0xf1, 0x08, 0x20, 0xa8, 0x77, 0xd2, 0xb1, 0x5b, 0x93, 0x13, 0xf9, 0x5a, 0x42, 0xbd, 0x1c, 0x15, - 0xd4, 0xcb, 0x7f, 0x06, 0xf5, 0xd6, 0x56, 0xda, 0xde, 0x24, 0xfb, 0xc6, 0xc5, 0x84, 0x7a, 0x7d, - 0x64, 0x50, 0xaf, 0x0f, 0x60, 0x53, 0x21, 0x02, 0xaa, 0x8e, 0xcd, 0x26, 0xed, 0x9b, 0x66, 0xb3, - 0x99, 0xbf, 0x15, 0x9d, 0x0a, 0x55, 0x3c, 0x9b, 0x0a, 0x55, 0x18, 0x33, 0x3d, 0x79, 0xab, 0xe8, - 0x52, 0x7b, 0x39, 0x7f, 0x3b, 0x6a, 0x7a, 0x86, 0x18, 0x66, 0x7a, 0x86, 0xbf, 0x70, 0x77, 0xc1, - 0x7e, 0x69, 0xf4, 0xae, 0x43, 0xdd, 0x95, 0xfc, 0x1d, 0x65, 0x77, 0x21, 0xe1, 0x70, 0x77, 0x21, - 0xfd, 0x26, 0xcb, 0xf0, 0x48, 0x64, 0xa1, 0xf1, 0x6f, 0x6d, 0x6a, 0x54, 0x77, 0x1a, 0x2b, 0xf9, - 0x37, 0x91, 0xd5, 0x13, 0x89, 0x4b, 0x55, 0x94, 0x74, 0xa6, 0x47, 0xeb, 0xc6, 0x09, 0xb7, 0xe5, - 0x6f, 0xcc, 0xf2, 0x88, 0xdc, 0x5a, 0xb5, 0xec, 0x6f, 0x42, 0xdf, 0x52, 0xb6, 0xe5, 0x71, 0x12, - 0xdc, 0x96, 0xc7, 0xc1, 0xa4, 0x05, 0x8f, 0x2a, 0x5b, 0xb5, 0x39, 0xbd, 0xc9, 0xf6, 0x25, 0xd4, - 0xa8, 0xea, 0x8d, 0x55, 0xea, 0xe5, 0x3f, 0x82, 0xbc, 0x2f, 0x76, 0xd8, 0xf0, 0x29, 0xd4, 0x33, - 0x3d, 0xda, 0x36, 0xfc, 0x48, 0x11, 0xb2, 0xb5, 0xe9, 0xc5, 0x6a, 0xfe, 0xa3, 0xd1, 0xf3, 0x4d, - 0x06, 0x9b, 0xe9, 0xd1, 0x10, 0xc7, 0xac, 0xb4, 0x5b, 0xad, 0x65, 0x47, 0x37, 0x28, 0x37, 0xb4, - 0xd0, 0x76, 0x13, 0x06, 0xe8, 0xc7, 0xa2, 0x56, 0x5a, 0x27, 0x3a, 0x66, 0xa5, 0x75, 0xc2, 0x31, - 0x45, 0x8d, 0x24, 0x9f, 0xca, 0x7f, 0x3c, 0xaa, 0xa8, 0x11, 0x24, 0x53, 0xd4, 0x68, 0xaa, 0xaa, - 0x37, 0xe1, 0x74, 0xb0, 0x9f, 0x17, 0xeb, 0x2f, 0xef, 0xb4, 0xfc, 0x27, 0x90, 0xcf, 0xa3, 0xb1, - 0xcb, 0x80, 0x08, 0xd5, 0x4c, 0x8f, 0xd6, 0xa1, 0x3c, 0x5b, 0x71, 0x63, 0x09, 0x20, 0x85, 0x79, - 0xf1, 0x65, 0xd1, 0x15, 0xb7, 0x03, 0x19, 0x5b, 0x71, 0x3b, 0xa0, 0x12, 0x99, 0x0b, 0xa1, 0xea, - 0xdb, 0x30, 0x0f, 0x64, 0xda, 0x89, 0x43, 0x22, 0x73, 0x61, 0xa9, 0x2d, 0x6d, 0xc3, 0x3c, 0xb0, - 0xd6, 0x3a, 0x71, 0x20, 0x97, 0xa0, 0xaf, 0x56, 0x9b, 0xd3, 0xda, 0x56, 0xbe, 0xa1, 0x3c, 0x47, - 0x46, 0xe8, 0x4c, 0x8f, 0x26, 0xf0, 0xcc, 0x0c, 0x9a, 0x6a, 0xea, 0xae, 0x67, 0x36, 0x5c, 0x1c, - 0x31, 0xfe, 0x08, 0x31, 0xa2, 0x66, 0x50, 0x12, 0x0d, 0x33, 0x83, 0x92, 0xe0, 0xcc, 0x5e, 0x2c, - 0xeb, 0xae, 0xab, 0x5b, 0x86, 0xa3, 0x4f, 0xe0, 0x32, 0x41, 0x15, 0x67, 0xc0, 0x08, 0x96, 0xd9, - 0x8b, 0x51, 0x08, 0x1e, 0xbe, 0xfb, 0x10, 0xdf, 0xcc, 0xb9, 0xab, 0x1c, 0xbe, 0x2b, 0x78, 0x3c, - 0x7c, 0x57, 0x60, 0x68, 0x77, 0xfa, 0x30, 0x8d, 0x2e, 0x9b, 0x4c, 0x44, 0xf9, 0x65, 0xc5, 0xee, - 0x54, 0x09, 0xd0, 0xee, 0x54, 0x81, 0x91, 0x26, 0xf9, 0xcb, 0xed, 0x4a, 0x87, 0x26, 0x85, 0xab, - 0x6c, 0xac, 0x0c, 0x5b, 0xbf, 0xc3, 0xc1, 0x31, 0xb9, 0x61, 0xe9, 0x6b, 0xf6, 0xe4, 0x84, 0x2f, - 0x75, 0x33, 0xba, 0x7e, 0x77, 0x24, 0x64, 0xeb, 0x77, 0x47, 0x24, 0x9b, 0x5d, 0xfd, 0x8d, 0xd6, - 0x8a, 0xee, 0x50, 0x63, 0xd2, 0x74, 0xf0, 0x64, 0x71, 0x83, 0x6f, 0x0d, 0xdf, 0x8e, 0xce, 0xae, - 0x5d, 0x48, 0xd9, 0xec, 0xda, 0x05, 0xcd, 0x8c, 0xbc, 0x64, 0xb4, 0x46, 0x75, 0x23, 0xbf, 0x1a, - 0x35, 0xf2, 0x3a, 0x53, 0x32, 0x23, 0xaf, 0x33, 0xb6, 0xf3, 0xe7, 0xdc, 0x71, 0x4c, 0x8f, 0xe6, - 0x9b, 0x3b, 0xf9, 0x1c, 0x24, 0xed, 0xfc, 0x39, 0x88, 0x66, 0x1b, 0x42, 0xb5, 0x43, 0xd6, 0xa2, - 0x1b, 0xc2, 0x78, 0x37, 0xa8, 0x25, 0x98, 0xc5, 0x22, 0xbc, 0x1e, 0xf3, 0x56, 0xd4, 0x62, 0x11, - 0x60, 0x66, 0xb1, 0x84, 0x7e, 0x91, 0x11, 0x5f, 0xb7, 0xbc, 0x1d, 0x5d, 0x43, 0x65, 0x1c, 0x5b, - 0x43, 0x23, 0x7e, 0x71, 0xef, 0x8f, 0x38, 0x72, 0xe4, 0x5b, 0x51, 0xab, 0x43, 0x42, 0x31, 0xab, - 0x43, 0x76, 0xf9, 0x28, 0xc3, 0x18, 0xde, 0x82, 0x6b, 0xed, 0xe0, 0x1e, 0xe7, 0x93, 0xd1, 0xcf, - 0x54, 0xd0, 0xec, 0x33, 0x15, 0x50, 0x84, 0x89, 0x98, 0xb6, 0x9c, 0x0e, 0x4c, 0xc2, 0xf3, 0x41, - 0x05, 0x44, 0x66, 0x81, 0xd4, 0x4a, 0x73, 0xb3, 0x15, 0xa3, 0x2a, 0x5f, 0x91, 0xb9, 0xd1, 0x13, - 0xd8, 0x38, 0xc5, 0x4c, 0x8f, 0x96, 0x50, 0x8e, 0xbc, 0x0d, 0xe7, 0x05, 0x54, 0x84, 0x0e, 0xa8, - 0x3a, 0xf6, 0x3d, 0xd3, 0x08, 0x16, 0x04, 0x2f, 0xfa, 0x50, 0xb0, 0x1b, 0xed, 0x4c, 0x8f, 0xd6, - 0x95, 0x57, 0xe7, 0xba, 0xc4, 0xfa, 0xd0, 0xde, 0x49, 0x5d, 0xc1, 0x22, 0xd1, 0x95, 0x57, 0xe7, - 0xba, 0x84, 0xdc, 0xef, 0xed, 0xa4, 0xae, 0xa0, 0x13, 0xba, 0xf2, 0x22, 0x2e, 0x14, 0xba, 0xe1, - 0x4b, 0xcd, 0x66, 0x7e, 0x1d, 0xab, 0x7b, 0xcf, 0x4e, 0xaa, 0x2b, 0xa1, 0xc1, 0xb9, 0x1d, 0x47, - 0x36, 0x4b, 0x2f, 0xb4, 0xa8, 0x55, 0x8b, 0x2c, 0x40, 0xf7, 0xa3, 0xb3, 0x74, 0x8c, 0x80, 0xcd, - 0xd2, 0x31, 0x20, 0x1b, 0x50, 0xb2, 0x3f, 0x50, 0x7e, 0x23, 0x3a, 0xa0, 0x64, 0x1c, 0x1b, 0x50, - 0x11, 0xdf, 0xa1, 0x05, 0x38, 0xb1, 0xb0, 0xea, 0xe9, 0xbe, 0x05, 0xe9, 0x8a, 0xae, 0x7c, 0x47, - 0xb9, 0x64, 0x8a, 0x93, 0xe0, 0x25, 0x53, 0x1c, 0xcc, 0xc6, 0x08, 0x03, 0xd7, 0x36, 0xac, 0xc6, - 0xb4, 0x6e, 0x36, 0xdb, 0x0e, 0xcd, 0xff, 0x95, 0xe8, 0x18, 0x51, 0xd0, 0x6c, 0x8c, 0x28, 0x20, - 0xb6, 0x40, 0x33, 0x50, 0xc9, 0x75, 0xcd, 0x65, 0x4b, 0xec, 0x2b, 0xdb, 0x4d, 0x2f, 0xff, 0xff, - 0x8b, 0x2e, 0xd0, 0x49, 0x34, 0x6c, 0x81, 0x4e, 0x82, 0xe3, 0xa9, 0x13, 0xeb, 0x05, 0xb6, 0x78, - 0xc8, 0x77, 0x95, 0xff, 0x7f, 0xe5, 0xd4, 0x29, 0x81, 0x06, 0x4f, 0x9d, 0x12, 0xe0, 0x6c, 0x7d, - 0xe4, 0x36, 0xd9, 0xac, 0x19, 0xdc, 0x55, 0xff, 0x17, 0xd1, 0xf5, 0x51, 0xc5, 0xb3, 0xf5, 0x51, - 0x85, 0x45, 0xf9, 0x88, 0x2e, 0xf8, 0x2f, 0x3b, 0xf1, 0x09, 0xe4, 0x1f, 0x2b, 0x43, 0xae, 0xcb, - 0x7c, 0xc4, 0x48, 0xf9, 0xf2, 0x54, 0x27, 0x46, 0xc1, 0xf0, 0x88, 0x15, 0x8a, 0x32, 0xd2, 0xe8, - 0x3d, 0x93, 0xae, 0xe7, 0xbf, 0xa2, 0x23, 0x23, 0x4e, 0x10, 0x65, 0xc4, 0x61, 0xe4, 0x2d, 0x38, - 0x1d, 0xc2, 0xe6, 0xe8, 0xda, 0x52, 0x30, 0x33, 0xfd, 0xd5, 0x54, 0xd4, 0x0c, 0x4e, 0x26, 0x63, - 0x66, 0x70, 0x32, 0x26, 0x89, 0xb5, 0x10, 0xdd, 0x5f, 0xdb, 0x86, 0x75, 0x20, 0xc1, 0x0e, 0x0c, - 0x92, 0x58, 0x0b, 0x69, 0x7e, 0xe5, 0x36, 0xac, 0x03, 0x99, 0x76, 0x60, 0x40, 0xbe, 0x36, 0x05, - 0x17, 0x93, 0x51, 0xa5, 0x66, 0x73, 0xda, 0x76, 0x42, 0x5c, 0xfe, 0xab, 0x52, 0xd1, 0x83, 0x86, - 0x9d, 0x15, 0x9b, 0xe9, 0xd1, 0x76, 0x58, 0x01, 0xf9, 0x30, 0x8c, 0x94, 0xda, 0x86, 0xe9, 0xe1, - 0xc5, 0x1b, 0x33, 0x9c, 0xbf, 0x3a, 0xa5, 0x6c, 0x71, 0x64, 0x2c, 0x6e, 0x71, 0x64, 0x00, 0xb9, - 0x01, 0xe3, 0x35, 0xda, 0x68, 0x63, 0xbc, 0x09, 0xda, 0xb2, 0x1d, 0x8f, 0xf1, 0xf8, 0xeb, 0xa9, - 0xe8, 0x24, 0x16, 0xa3, 0x60, 0x93, 0x58, 0x0c, 0x48, 0x6e, 0xc7, 0x6e, 0xe5, 0x45, 0x67, 0x7e, - 0x4d, 0xaa, 0xeb, 0xb5, 0x7c, 0xd0, 0x97, 0xc9, 0xc5, 0x49, 0x55, 0xb9, 0x45, 0x17, 0x5c, 0xbf, - 0x36, 0xd5, 0xe5, 0x1a, 0x5d, 0x9a, 0xe1, 0xe2, 0x60, 0xc6, 0x31, 0x72, 0x77, 0x2d, 0x38, 0xfe, - 0x8d, 0x54, 0x97, 0x6b, 0xef, 0x90, 0x63, 0x02, 0x98, 0xbc, 0xc8, 0x5f, 0x8a, 0x08, 0x46, 0x7f, - 0x33, 0x15, 0x7f, 0x2a, 0x12, 0x94, 0x97, 0x08, 0x59, 0xb1, 0x5b, 0x6e, 0xa0, 0xf4, 0x9f, 0x4a, - 0xc5, 0xdf, 0xe6, 0x85, 0xc5, 0xc2, 0x5f, 0x84, 0xc2, 0xb9, 0xa9, 0xfb, 0x1e, 0x75, 0x2c, 0xbd, - 0x89, 0xdd, 0x59, 0xf3, 0x6c, 0x47, 0x5f, 0xa6, 0x53, 0x96, 0xbe, 0xd4, 0xa4, 0xf9, 0xaf, 0x4b, - 0x45, 0x2d, 0xd8, 0xce, 0xa4, 0xcc, 0x82, 0xed, 0x8c, 0x25, 0x2b, 0xf0, 0x48, 0x12, 0x76, 0xd2, - 0x74, 0xb1, 0x9e, 0xaf, 0x4f, 0x45, 0x4d, 0xd8, 0x2e, 0xb4, 0xcc, 0x84, 0xed, 0x82, 0x26, 0xd7, - 0x60, 0x70, 0xc2, 0xf6, 0xa7, 0xdf, 0x6f, 0x50, 0x1e, 0x43, 0x06, 0x98, 0x99, 0x1e, 0x2d, 0x24, - 0x13, 0x65, 0xc4, 0xa0, 0xfe, 0x74, 0xbc, 0x4c, 0x78, 0xf9, 0x14, 0xfc, 0x10, 0x65, 0x84, 0xb8, - 0xff, 0xab, 0x78, 0x99, 0xf0, 0x8e, 0x2b, 0xf8, 0xc1, 0x66, 0x12, 0x5e, 0xe3, 0xdc, 0x74, 0x89, - 0xd9, 0x6d, 0xe5, 0x15, 0xbd, 0xd9, 0xa4, 0xd6, 0x32, 0xcd, 0x7f, 0x46, 0x99, 0x49, 0x92, 0xc9, - 0xd8, 0x4c, 0x92, 0x8c, 0x21, 0x1f, 0x83, 0x33, 0xb7, 0xf5, 0xa6, 0x69, 0x84, 0x38, 0x8d, 0xba, - 0x2d, 0xdb, 0x72, 0x69, 0xfe, 0xb3, 0xa9, 0xe8, 0x6e, 0xba, 0x03, 0x1d, 0xdb, 0x4d, 0x77, 0x40, - 0x91, 0x39, 0x20, 0xb8, 0x8c, 0x06, 0xb3, 0x05, 0x5b, 0x9f, 0xf3, 0x7f, 0x2b, 0x15, 0xb5, 0x53, - 0xe3, 0x24, 0xcc, 0x4e, 0x8d, 0x43, 0x49, 0xbd, 0x73, 0x92, 0xa5, 0xfc, 0x37, 0xa6, 0xa2, 0xa7, - 0x35, 0x9d, 0x08, 0x67, 0x7a, 0xb4, 0xce, 0x99, 0x9a, 0xae, 0x43, 0xae, 0x56, 0xad, 0x4c, 0x4f, - 0x4f, 0xd5, 0x6e, 0x57, 0x26, 0xd1, 0x55, 0xc3, 0xc8, 0xff, 0x6d, 0x65, 0xc5, 0x52, 0x09, 0xd8, - 0x8a, 0xa5, 0xc2, 0xc8, 0x2b, 0x30, 0xcc, 0xda, 0xcf, 0x06, 0x0c, 0x7e, 0xf2, 0xe7, 0x52, 0x51, - 0x73, 0x4a, 0x46, 0x32, 0x73, 0x4a, 0xfe, 0x4d, 0x6a, 0x70, 0x92, 0x49, 0xb1, 0xea, 0xd0, 0xbb, - 0xd4, 0xa1, 0x56, 0xc3, 0x1f, 0xd3, 0xdf, 0x94, 0x8a, 0x5a, 0x19, 0x49, 0x44, 0xcc, 0xca, 0x48, - 0x82, 0x93, 0x55, 0x38, 0xaf, 0x9e, 0x04, 0xc9, 0x7e, 0xbd, 0xf9, 0xbf, 0x93, 0x52, 0x8c, 0xe1, - 0x2e, 0xc4, 0x68, 0x0c, 0x77, 0xc1, 0x13, 0x0b, 0x2e, 0x88, 0x63, 0x15, 0xf1, 0xe0, 0x52, 0xad, - 0xed, 0xf3, 0xbc, 0xb6, 0xa7, 0xc2, 0x07, 0x81, 0x5d, 0xa8, 0x67, 0x7a, 0xb4, 0xee, 0xec, 0x98, - 0x9e, 0xc5, 0x53, 0x09, 0xe5, 0xbf, 0x39, 0x95, 0xfc, 0x22, 0x25, 0xf2, 0x4c, 0x39, 0x29, 0x07, - 0xd1, 0x5b, 0x9d, 0x12, 0xe1, 0xe4, 0xff, 0xae, 0x32, 0xde, 0x92, 0xc9, 0xd8, 0x78, 0xeb, 0x90, - 0x49, 0xe7, 0x06, 0x8c, 0x73, 0xa5, 0xae, 0xea, 0x38, 0x0c, 0xad, 0x65, 0x6a, 0xe4, 0xff, 0x9e, - 0xb2, 0xda, 0xc5, 0x28, 0xf0, 0x69, 0x8f, 0x0a, 0x64, 0x53, 0x77, 0xad, 0xa5, 0x5b, 0x16, 0x1e, - 0xb3, 0xe6, 0xff, 0xbe, 0x32, 0x75, 0x87, 0x28, 0x7c, 0xb8, 0x1b, 0xfc, 0x62, 0x9a, 0xd0, 0x2d, - 0x89, 0x5c, 0xfe, 0xbf, 0x56, 0x34, 0xa1, 0x1b, 0x31, 0xd3, 0x84, 0xae, 0x19, 0xe9, 0x6e, 0x77, - 0xf0, 0xb1, 0xcf, 0x7f, 0x8b, 0xb2, 0x22, 0x27, 0x52, 0xb1, 0x15, 0x39, 0xd9, 0x45, 0xff, 0x76, - 0x07, 0xff, 0xf4, 0xfc, 0xb7, 0x76, 0xe7, 0x1b, 0xae, 0xf4, 0xc9, 0xee, 0xed, 0xb7, 0x3b, 0xf8, - 0x76, 0xe7, 0xbf, 0xad, 0x3b, 0xdf, 0xf0, 0x61, 0x5f, 0xb2, 0x6b, 0x78, 0xbd, 0xb3, 0x5f, 0x74, - 0xfe, 0xdb, 0xd5, 0xa9, 0xab, 0x03, 0x21, 0x4e, 0x5d, 0x9d, 0x9c, 0xab, 0x97, 0xe0, 0x2c, 0xd7, - 0x90, 0xeb, 0x8e, 0xde, 0x5a, 0xa9, 0x51, 0xcf, 0x33, 0xad, 0x65, 0x7f, 0x27, 0xf6, 0x1d, 0x29, - 0xe5, 0x78, 0xac, 0x13, 0x25, 0x1e, 0x8f, 0x75, 0x42, 0x32, 0xe5, 0x8d, 0x79, 0x40, 0xe7, 0xff, - 0x81, 0xa2, 0xbc, 0x31, 0x0a, 0xa6, 0xbc, 0x71, 0xc7, 0xe9, 0x1b, 0x09, 0x8e, 0xbe, 0xf9, 0xff, - 0xa6, 0x33, 0xaf, 0xa0, 0x7d, 0x09, 0xfe, 0xc1, 0x37, 0x12, 0xfc, 0x59, 0xf3, 0xff, 0x6d, 0x67, - 0x5e, 0xe1, 0x1b, 0xa4, 0xb8, 0x1b, 0xec, 0x5b, 0x70, 0x9a, 0xcf, 0xe6, 0xd3, 0xd4, 0xa0, 0x91, - 0x0f, 0xfd, 0x4e, 0x65, 0xec, 0x27, 0x93, 0xe1, 0x91, 0x7b, 0x22, 0x26, 0x89, 0xb5, 0x68, 0xeb, - 0x3f, 0xdc, 0x86, 0x75, 0xb8, 0x21, 0x48, 0xc6, 0xb0, 0xf5, 0x46, 0xf6, 0x7e, 0xcb, 0x7f, 0x97, - 0xb2, 0xde, 0xc8, 0x48, 0x7c, 0xce, 0x21, 0xbb, 0xca, 0xbd, 0x12, 0xf5, 0xf4, 0xca, 0x7f, 0x77, - 0x62, 0xe1, 0xa0, 0x03, 0xa2, 0x6e, 0x61, 0xaf, 0x44, 0xbd, 0x9a, 0xf2, 0xdf, 0x93, 0x58, 0x38, - 0xf8, 0x80, 0xa8, 0x0b, 0x14, 0xdb, 0x22, 0xb5, 0x3d, 0x9b, 0xb3, 0x8a, 0x4c, 0x0f, 0xff, 0x48, - 0xdd, 0x22, 0x25, 0x92, 0xe1, 0x16, 0x29, 0x11, 0x93, 0xc4, 0x5a, 0x7c, 0xde, 0xf7, 0x6e, 0xc3, - 0x5a, 0xda, 0xd8, 0x25, 0x62, 0x92, 0x58, 0x8b, 0x8f, 0xff, 0xbe, 0x6d, 0x58, 0x4b, 0x1b, 0xbb, - 0x44, 0x0c, 0x33, 0xc7, 0x42, 0xcc, 0x6d, 0xea, 0xb8, 0xa1, 0xfa, 0xfd, 0x77, 0x8a, 0x39, 0xd6, - 0x81, 0x8e, 0x99, 0x63, 0x1d, 0x50, 0x89, 0xdc, 0x85, 0x50, 0xbe, 0x7f, 0x3b, 0xee, 0xe1, 0xbd, - 0x4c, 0x07, 0x54, 0x22, 0x77, 0x21, 0x97, 0x7f, 0xbc, 0x1d, 0xf7, 0xf0, 0x62, 0xa6, 0x03, 0x8a, - 0x19, 0x45, 0x35, 0x4f, 0xf7, 0xcc, 0xc6, 0x8c, 0xed, 0x7a, 0xd2, 0x22, 0xff, 0xdf, 0x2b, 0x46, - 0x51, 0x12, 0x11, 0x33, 0x8a, 0x92, 0xe0, 0x71, 0xa6, 0x42, 0x1a, 0x3f, 0xd0, 0x95, 0x69, 0x68, - 0x69, 0x25, 0xc1, 0xe3, 0x4c, 0x85, 0x10, 0xfe, 0x87, 0xae, 0x4c, 0xc3, 0x97, 0xf2, 0x49, 0x70, - 0x66, 0x99, 0x96, 0x1d, 0x7b, 0xdd, 0xba, 0x41, 0xd7, 0x69, 0x53, 0x7c, 0xfa, 0x0f, 0x2a, 0x96, - 0xa9, 0x4a, 0x80, 0xb7, 0x28, 0x0a, 0x2c, 0xca, 0x48, 0x7c, 0xee, 0x0f, 0x75, 0x64, 0x14, 0x1e, - 0x13, 0xa9, 0xb0, 0x28, 0x23, 0xf1, 0x89, 0xff, 0xa4, 0x23, 0xa3, 0xf0, 0x98, 0x48, 0x85, 0x91, - 0x12, 0x8c, 0xa2, 0xaf, 0x84, 0xee, 0xfa, 0x2f, 0x3f, 0x7f, 0x2c, 0x15, 0xbd, 0xf5, 0x8a, 0xa2, - 0x67, 0x7a, 0x34, 0xa5, 0x80, 0xcc, 0x42, 0x7c, 0xd2, 0x8f, 0x77, 0x60, 0x11, 0xbe, 0x77, 0x8c, - 0x42, 0x64, 0x16, 0xe2, 0x63, 0xfe, 0x69, 0x07, 0x16, 0xe1, 0x83, 0xc7, 0x28, 0x84, 0x7c, 0x00, - 0x86, 0x6a, 0xd3, 0x8b, 0x55, 0x3f, 0xd1, 0xe9, 0x4f, 0xa4, 0x14, 0xaf, 0xa2, 0x10, 0x87, 0x5e, - 0x45, 0xe1, 0x4f, 0xf2, 0x61, 0x18, 0x29, 0xdb, 0x96, 0xa7, 0x37, 0xfc, 0x0d, 0xe8, 0x4f, 0x2a, - 0x67, 0x28, 0x11, 0xec, 0x4c, 0x8f, 0x16, 0x25, 0x97, 0xca, 0x8b, 0xb6, 0xff, 0x54, 0x72, 0xf9, - 0xa0, 0xe9, 0x51, 0x72, 0x36, 0xa3, 0xdd, 0xb1, 0x9d, 0xd5, 0xa6, 0xad, 0x1b, 0x7e, 0x40, 0x52, - 0xd1, 0x90, 0x7f, 0xa6, 0xcc, 0x68, 0xc9, 0x64, 0x6c, 0x46, 0x4b, 0xc6, 0x24, 0xb1, 0x16, 0x5d, - 0xf4, 0xd3, 0xdb, 0xb0, 0x0e, 0xe7, 0xe1, 0x64, 0x4c, 0x12, 0x6b, 0xf1, 0xf9, 0xff, 0x7c, 0x1b, - 0xd6, 0xe1, 0x3c, 0x9c, 0x8c, 0x61, 0xa6, 0xf5, 0x75, 0xd3, 0xf3, 0x1d, 0xdb, 0x7e, 0x46, 0x31, - 0xad, 0x43, 0x14, 0x33, 0xad, 0xc3, 0x5f, 0x84, 0xc2, 0xb9, 0xc0, 0x55, 0x32, 0xdc, 0xbb, 0x56, - 0xac, 0x7b, 0x6c, 0x7f, 0x9c, 0xff, 0x1f, 0x95, 0x53, 0x91, 0xce, 0xa4, 0x33, 0x3d, 0x5a, 0x17, - 0x46, 0xa4, 0xaa, 0xbc, 0x53, 0xe4, 0x41, 0xfd, 0xf2, 0x3f, 0x9b, 0xea, 0xf2, 0x50, 0x91, 0xd3, - 0xc4, 0x1e, 0x2a, 0x72, 0xb0, 0x98, 0xb3, 0x96, 0x9a, 0xf4, 0xd6, 0x7c, 0xe5, 0x4d, 0x69, 0x76, - 0xfd, 0x42, 0x7c, 0xce, 0x8a, 0x11, 0x89, 0x39, 0x2b, 0x06, 0x27, 0x7f, 0x2d, 0x05, 0x4f, 0xaa, - 0xf2, 0x7d, 0xf3, 0xc5, 0x67, 0x5f, 0xd6, 0xe8, 0x3d, 0xbb, 0x21, 0x5b, 0x56, 0x3f, 0xc7, 0x6b, - 0x79, 0xa6, 0x53, 0x77, 0x25, 0x15, 0x9a, 0xe9, 0xd1, 0x76, 0xc4, 0x7c, 0x07, 0xad, 0x10, 0x4a, - 0xf3, 0xf3, 0xbb, 0x6a, 0x45, 0xa0, 0x42, 0x3b, 0x62, 0xbe, 0x83, 0x56, 0x88, 0x51, 0xf1, 0x0b, - 0xbb, 0x6a, 0x45, 0x30, 0x46, 0x76, 0xc4, 0x1c, 0x77, 0x9f, 0x77, 0x6a, 0x95, 0x72, 0xf0, 0xd6, - 0x67, 0xc3, 0x6a, 0xe4, 0x7f, 0x51, 0xdd, 0x7d, 0xaa, 0x14, 0xb8, 0xfb, 0x54, 0x81, 0x6c, 0xb9, - 0x9f, 0xa1, 0x7a, 0x93, 0x6d, 0x47, 0x69, 0x63, 0x35, 0x62, 0xbc, 0xfd, 0x92, 0xb2, 0xdc, 0x77, - 0xa0, 0x63, 0xcb, 0x7d, 0x07, 0x54, 0x22, 0x77, 0x21, 0xa1, 0x5f, 0xde, 0x8e, 0x7b, 0x68, 0xaa, - 0x74, 0x40, 0x25, 0x72, 0x17, 0x5a, 0xf0, 0x2f, 0xb6, 0xe3, 0x1e, 0x9a, 0x2a, 0x1d, 0x50, 0xe4, - 0x1b, 0x52, 0x70, 0x29, 0xa9, 0x3b, 0x78, 0xec, 0x8f, 0x85, 0x7b, 0xd4, 0x71, 0x4c, 0xc3, 0xbf, - 0x40, 0xfe, 0x15, 0x5e, 0xdf, 0xb3, 0xdd, 0xfa, 0x3b, 0xa9, 0xe0, 0x4c, 0x8f, 0xb6, 0xe3, 0x4a, - 0x76, 0xd8, 0x22, 0x21, 0x81, 0x5f, 0xdd, 0x75, 0x8b, 0x02, 0x91, 0xec, 0xb8, 0x12, 0x9c, 0x70, - 0xcc, 0x65, 0xd7, 0xb3, 0x1d, 0x5a, 0xb5, 0x9b, 0x66, 0xc3, 0x5f, 0x6f, 0x7e, 0x4d, 0x9d, 0x70, - 0x12, 0x88, 0x70, 0xc2, 0x49, 0x80, 0xc7, 0x99, 0x0a, 0x8d, 0xf9, 0xf5, 0xae, 0x4c, 0x25, 0x73, - 0x2e, 0x01, 0x1e, 0x67, 0x2a, 0xc4, 0xf4, 0x2f, 0xbb, 0x32, 0x95, 0xcc, 0xb9, 0x04, 0x38, 0xb1, - 0xe0, 0x42, 0x68, 0xe8, 0x96, 0x96, 0xa9, 0xe5, 0x69, 0x76, 0xb3, 0x69, 0xb7, 0xbd, 0x45, 0xc7, - 0x5c, 0x5e, 0xa6, 0x4e, 0xfe, 0x37, 0x94, 0x03, 0xb2, 0xae, 0xd4, 0x33, 0x3d, 0x5a, 0x77, 0x76, - 0xc4, 0x83, 0x42, 0x32, 0xc1, 0xb4, 0xed, 0x34, 0xe8, 0xa4, 0x6d, 0xd1, 0xfc, 0x6f, 0xa6, 0xa2, - 0xd7, 0xd3, 0xdb, 0xd0, 0xcf, 0xf4, 0x68, 0xdb, 0xb1, 0x24, 0x9f, 0x84, 0x47, 0x93, 0x49, 0xd8, - 0x7f, 0x4b, 0x7a, 0x63, 0x35, 0xff, 0x3f, 0xa5, 0xa2, 0x6f, 0xfe, 0xba, 0x93, 0xcf, 0xf4, 0x68, - 0xdb, 0x30, 0x24, 0x93, 0x30, 0x36, 0x57, 0xae, 0x46, 0x1c, 0x3a, 0x7e, 0x2b, 0xa5, 0xb8, 0x5f, - 0x45, 0xf1, 0xe8, 0x7e, 0x15, 0x05, 0x31, 0x7b, 0x2a, 0x04, 0x4d, 0x59, 0x46, 0xfe, 0x7f, 0x56, - 0xec, 0xa9, 0x08, 0x16, 0xdf, 0x97, 0xca, 0x00, 0x36, 0xcf, 0x86, 0x00, 0xff, 0x5e, 0xfe, 0xb7, - 0x95, 0x79, 0x36, 0x46, 0xc1, 0xe6, 0xd9, 0x18, 0x90, 0x59, 0x39, 0x21, 0x70, 0xde, 0x16, 0x4f, - 0x7e, 0x4d, 0xdb, 0xca, 0xff, 0x8e, 0x62, 0xe5, 0x24, 0x93, 0x31, 0x2b, 0x27, 0x19, 0xc3, 0x54, - 0x7b, 0xc2, 0x6e, 0x5b, 0xc6, 0x4d, 0xba, 0xd1, 0xd2, 0x4d, 0xc7, 0xf7, 0x43, 0xca, 0xff, 0xae, - 0xa2, 0xda, 0x49, 0x44, 0x4c, 0xb5, 0x93, 0xe0, 0x31, 0xa6, 0xb6, 0xc7, 0x5b, 0xfb, 0xaf, 0xba, - 0x31, 0x15, 0x44, 0x31, 0xa6, 0x02, 0x4e, 0x3e, 0x95, 0x82, 0xf7, 0xc8, 0x88, 0x1b, 0xb6, 0x69, - 0xe1, 0x0b, 0xec, 0xdb, 0xd4, 0x09, 0xbe, 0x67, 0x5a, 0x37, 0x9b, 0xd4, 0xc8, 0x6f, 0xf2, 0x8a, - 0xae, 0x26, 0x55, 0xd4, 0xa5, 0xdc, 0x4c, 0x8f, 0xb6, 0xd3, 0x2a, 0xc8, 0x12, 0x9c, 0x0d, 0x45, - 0xca, 0x2c, 0x33, 0x6a, 0xd5, 0x6a, 0x53, 0x35, 0xcf, 0xa1, 0xfa, 0x5a, 0xfe, 0xf7, 0x94, 0xc3, - 0xb6, 0x8e, 0x94, 0xf8, 0x96, 0xbc, 0x13, 0x92, 0xac, 0xc2, 0xf9, 0x10, 0xe9, 0xdb, 0x85, 0x8b, - 0x8b, 0x55, 0x5f, 0x9d, 0x7e, 0x5f, 0x39, 0xa6, 0xed, 0x46, 0x3c, 0xd3, 0xa3, 0x75, 0x65, 0x86, - 0x17, 0x1f, 0xe5, 0xca, 0x1c, 0x6b, 0x83, 0x69, 0x2d, 0xf3, 0x77, 0x51, 0x7f, 0xa0, 0x5e, 0x7c, - 0x28, 0x04, 0x78, 0xf1, 0xa1, 0xc0, 0xf0, 0x36, 0xb7, 0x5c, 0x99, 0xf3, 0x2d, 0x05, 0xce, 0xe9, - 0x8b, 0xea, 0x6d, 0xae, 0x4a, 0x81, 0xb7, 0xb9, 0x2a, 0x90, 0x59, 0xd3, 0x22, 0x40, 0x55, 0x55, - 0xa3, 0xae, 0xe7, 0x98, 0xe8, 0xa9, 0xe3, 0x9f, 0x69, 0xfe, 0x6b, 0xc5, 0x9a, 0xee, 0x4c, 0xca, - 0xac, 0xe9, 0xce, 0x58, 0xb4, 0xa6, 0x5b, 0x2d, 0xbc, 0x16, 0x93, 0x8d, 0x98, 0x3f, 0x54, 0xad, - 0xe9, 0x38, 0x0d, 0x5a, 0xd3, 0x71, 0x70, 0x8c, 0xa3, 0x68, 0xf1, 0x1f, 0x75, 0xe3, 0x18, 0x5e, - 0xee, 0x26, 0x80, 0x63, 0x1c, 0xc5, 0x1a, 0xf4, 0xbf, 0x74, 0xe3, 0x28, 0xb9, 0x26, 0xc5, 0xc1, - 0x31, 0x8e, 0xa8, 0xe5, 0x1b, 0xf9, 0x7f, 0xd3, 0x8d, 0x23, 0xa7, 0x89, 0x71, 0xe4, 0x60, 0xa6, - 0x43, 0xb7, 0x2d, 0xea, 0x45, 0x84, 0xf8, 0xbf, 0x2a, 0x3a, 0xa4, 0x12, 0x30, 0x1d, 0x52, 0x61, - 0x51, 0x46, 0x42, 0x76, 0xff, 0x5b, 0x47, 0x46, 0xe1, 0x11, 0x85, 0x0a, 0x8b, 0x32, 0x12, 0x22, - 0xdb, 0xea, 0xc8, 0x28, 0x3c, 0xa2, 0x50, 0x61, 0xe4, 0x36, 0x9c, 0xf2, 0x2d, 0x9b, 0xe8, 0x53, - 0xe9, 0xff, 0x5d, 0xb9, 0x15, 0x48, 0xa4, 0x9a, 0xe9, 0xd1, 0x92, 0x8b, 0x27, 0xf0, 0x15, 0x9f, - 0xfb, 0xc7, 0xdd, 0xf9, 0x86, 0xb7, 0x18, 0x89, 0x88, 0x04, 0xbe, 0xe2, 0xeb, 0xff, 0x8f, 0xee, - 0x7c, 0xc3, 0x5b, 0x8c, 0x44, 0x04, 0x9b, 0xdb, 0x2b, 0x96, 0xb8, 0x57, 0x9c, 0xb3, 0x8d, 0xe0, - 0x24, 0xea, 0xdf, 0x2a, 0x73, 0x7b, 0x12, 0x11, 0x9b, 0xdb, 0x93, 0xe0, 0x71, 0xa6, 0x42, 0x06, - 0xff, 0x67, 0x57, 0xa6, 0xa1, 0xd5, 0x96, 0x04, 0x8f, 0x33, 0x15, 0x02, 0xf8, 0x93, 0xae, 0x4c, - 0x43, 0xab, 0x2d, 0x09, 0xce, 0xc4, 0x1a, 0xc0, 0x6b, 0xb4, 0xe1, 0x50, 0xff, 0xb8, 0xe6, 0xff, - 0x52, 0xc4, 0x9a, 0x48, 0xc5, 0xc4, 0x9a, 0x88, 0x48, 0xe0, 0x2b, 0x44, 0xf0, 0xa7, 0xdd, 0xf9, - 0x86, 0x6a, 0x90, 0x88, 0x48, 0xe0, 0x2b, 0xa4, 0xf0, 0xef, 0xba, 0xf3, 0x0d, 0xd5, 0x20, 0x11, - 0x11, 0xe1, 0x1b, 0xb1, 0xde, 0xff, 0xac, 0x13, 0x5f, 0xc5, 0x7c, 0x4f, 0x2e, 0x9e, 0xc0, 0x57, - 0xc8, 0xe1, 0xff, 0xee, 0xce, 0x37, 0x41, 0x0e, 0x11, 0x13, 0x3e, 0xce, 0x57, 0xc8, 0xe1, 0xdf, - 0x77, 0xe7, 0x9b, 0x20, 0x87, 0x88, 0x15, 0x8f, 0x4f, 0x97, 0xb8, 0xd9, 0x88, 0x07, 0x79, 0xe6, - 0x3b, 0xd4, 0xc8, 0xff, 0x79, 0xec, 0xe9, 0x92, 0x42, 0xc1, 0x9f, 0x2e, 0x29, 0xc0, 0x89, 0x7e, - 0xe8, 0xc5, 0x55, 0xef, 0x46, 0xdf, 0xc0, 0x0f, 0xa7, 0x72, 0x3f, 0x92, 0xba, 0xd1, 0x37, 0xf0, - 0x23, 0xa9, 0xdc, 0x8f, 0xb2, 0xff, 0x7f, 0x34, 0x95, 0xfb, 0xb1, 0x94, 0x76, 0x56, 0xb1, 0x7c, - 0xab, 0x4d, 0x5d, 0x1c, 0x71, 0x24, 0xa2, 0xf8, 0xcf, 0x44, 0x14, 0x6f, 0x7d, 0xf1, 0x5b, 0x52, - 0x30, 0xcc, 0x6d, 0x0d, 0x91, 0xbd, 0xe3, 0x1c, 0x0c, 0xf0, 0xf8, 0x07, 0x7e, 0xb8, 0x49, 0x2d, - 0xf8, 0x4d, 0x2e, 0xc2, 0xe8, 0xac, 0xee, 0x7a, 0xd8, 0xc4, 0x8a, 0x65, 0xd0, 0xfb, 0x18, 0xfb, - 0x2b, 0xa3, 0x29, 0x50, 0x32, 0xcb, 0xe9, 0x78, 0x39, 0x4c, 0x8c, 0x95, 0xd9, 0x36, 0x69, 0xc5, - 0xc0, 0x17, 0x36, 0x0b, 0x3d, 0x98, 0xa3, 0x42, 0x29, 0x5b, 0xfc, 0x85, 0x14, 0xc4, 0x22, 0x33, - 0xec, 0x3d, 0x4a, 0xed, 0x02, 0x8c, 0x29, 0xc9, 0xd8, 0x44, 0x00, 0xb3, 0x1d, 0xe6, 0x6a, 0x53, - 0x4b, 0x93, 0xf7, 0x04, 0x81, 0xb3, 0x6e, 0x69, 0xb3, 0x22, 0x21, 0x09, 0xcf, 0xee, 0xee, 0x34, - 0x35, 0x09, 0x25, 0x02, 0xce, 0xff, 0x3a, 0x09, 0xf3, 0x43, 0x91, 0x8b, 0x22, 0x64, 0xae, 0x94, - 0x2b, 0xa9, 0xed, 0x52, 0x47, 0x4e, 0x63, 0x82, 0x21, 0x72, 0x3f, 0x0c, 0xc3, 0x95, 0xb5, 0x16, - 0x75, 0x5c, 0xdb, 0xd2, 0x3d, 0xdb, 0xcf, 0x38, 0x8f, 0xc1, 0x37, 0x4d, 0x09, 0x2e, 0x07, 0xdf, - 0x94, 0xe9, 0xc9, 0x65, 0xe8, 0xd5, 0xec, 0x26, 0x75, 0xf3, 0x19, 0xcc, 0xf1, 0x85, 0x61, 0xed, - 0x1c, 0x06, 0x90, 0xe3, 0xa3, 0x22, 0x05, 0x23, 0xe5, 0xd9, 0xdb, 0xb3, 0x21, 0x29, 0x26, 0x6c, - 0x97, 0x49, 0x79, 0xce, 0xf7, 0x67, 0xa0, 0x0f, 0xcf, 0x26, 0xdd, 0x7c, 0x2f, 0xd2, 0x62, 0xdc, - 0xd5, 0x26, 0x42, 0xe4, 0x30, 0xae, 0x9c, 0x86, 0xdc, 0x84, 0x5c, 0xe8, 0x6f, 0x73, 0xdd, 0xb1, - 0xdb, 0x2d, 0x3f, 0x81, 0x7f, 0x61, 0x6b, 0xb3, 0xf0, 0xc8, 0x6a, 0x80, 0xab, 0x2f, 0x23, 0x52, - 0x62, 0x11, 0x2b, 0x48, 0x66, 0x60, 0x2c, 0x84, 0x31, 0x11, 0xb9, 0x22, 0xdb, 0x3c, 0x86, 0x0c, - 0x95, 0x78, 0x31, 0x71, 0xca, 0xac, 0xd4, 0x62, 0xa4, 0x02, 0xfd, 0x7e, 0x66, 0x95, 0x81, 0x6d, - 0x95, 0xf4, 0x84, 0xc8, 0xac, 0xd2, 0x2f, 0xe7, 0x54, 0xf1, 0xcb, 0x93, 0x69, 0x18, 0xd5, 0xec, - 0xb6, 0x47, 0x17, 0x6d, 0xb1, 0x60, 0x8a, 0x0c, 0x3e, 0xd8, 0x26, 0x87, 0x61, 0xea, 0x9e, 0x5d, - 0x6f, 0x70, 0x9c, 0x1c, 0xc6, 0x34, 0x5a, 0x8a, 0xcc, 0xc3, 0x78, 0xcc, 0x33, 0x09, 0x23, 0xb2, - 0x0d, 0xf2, 0x1c, 0x19, 0xd2, 0xe7, 0xc5, 0x99, 0xc5, 0x8b, 0x92, 0xaf, 0x4e, 0x41, 0xdf, 0xa2, - 0xa3, 0x9b, 0x9e, 0x2b, 0xa2, 0xb3, 0x9d, 0xba, 0xb2, 0xee, 0xe8, 0x2d, 0xa6, 0x1f, 0x57, 0x30, - 0xf5, 0xda, 0x6d, 0xbd, 0xd9, 0xa6, 0xee, 0xc4, 0x1d, 0xf6, 0x75, 0xbf, 0xbd, 0x59, 0x78, 0x85, - 0x87, 0xe2, 0xbd, 0xd2, 0xb0, 0xd7, 0xae, 0x2e, 0x3b, 0xfa, 0x3d, 0x93, 0xef, 0xbf, 0xf4, 0xe6, - 0x55, 0x8f, 0x36, 0xf1, 0x99, 0xe5, 0x55, 0xbd, 0x65, 0x5e, 0xc5, 0x64, 0xa1, 0x57, 0x03, 0x4e, - 0xbc, 0x06, 0xa6, 0x02, 0x1e, 0xfe, 0x25, 0xab, 0x00, 0xc7, 0x91, 0x79, 0x00, 0xf1, 0xa9, 0xa5, - 0x56, 0x4b, 0x84, 0x7a, 0x93, 0x1e, 0x27, 0xfa, 0x18, 0xae, 0xd8, 0x81, 0xc0, 0xf4, 0x96, 0x94, - 0x20, 0x4f, 0x93, 0x38, 0x30, 0x2d, 0x58, 0x14, 0x2d, 0xf2, 0xc5, 0x34, 0x22, 0x05, 0x8e, 0x15, - 0xa8, 0x04, 0x21, 0xa9, 0xc5, 0xc8, 0x12, 0x8c, 0x09, 0xbe, 0x41, 0x62, 0xef, 0xd1, 0xe8, 0xac, - 0xa0, 0xa0, 0xb9, 0xd2, 0x06, 0x6d, 0x34, 0x04, 0x58, 0xae, 0x43, 0x29, 0x41, 0x26, 0x60, 0xc4, - 0xff, 0x7b, 0x5e, 0x5f, 0xa3, 0x6e, 0x7e, 0x0c, 0x35, 0x16, 0x73, 0x98, 0xf9, 0xe5, 0x31, 0xc9, - 0x90, 0x2c, 0xba, 0x68, 0x11, 0x99, 0x07, 0xd7, 0xfa, 0x5c, 0x02, 0x0f, 0x55, 0xe7, 0xa3, 0x45, - 0x48, 0x19, 0x46, 0x82, 0x48, 0x33, 0xb7, 0x6e, 0x55, 0x26, 0x31, 0x96, 0x9c, 0xc8, 0x33, 0xa5, - 0x24, 0xbc, 0x96, 0x99, 0x44, 0xca, 0x48, 0x01, 0x86, 0x79, 0x70, 0x39, 0x25, 0xc0, 0x70, 0x2b, - 0x21, 0xc0, 0x70, 0x95, 0x7c, 0x08, 0x86, 0x4a, 0x77, 0x6a, 0x22, 0x70, 0xb2, 0x9b, 0x3f, 0x81, - 0x6d, 0xc7, 0x50, 0xc9, 0x18, 0xad, 0x59, 0x04, 0x59, 0x96, 0x9b, 0x2e, 0xd3, 0x93, 0x29, 0x18, - 0x8d, 0x5c, 0x5b, 0xb8, 0xf9, 0x93, 0xc8, 0x01, 0x5b, 0xae, 0x23, 0xa6, 0xee, 0x08, 0x94, 0x3c, - 0xbc, 0xa2, 0x85, 0x98, 0xd6, 0x4c, 0x9a, 0x2e, 0x26, 0xdb, 0xd7, 0x28, 0xc6, 0x68, 0xc6, 0xc8, - 0x74, 0x03, 0x5c, 0x6b, 0x0c, 0x81, 0xaa, 0x3b, 0x1c, 0x27, 0xf7, 0xa8, 0x52, 0x8c, 0xbc, 0x0d, - 0x04, 0xd3, 0xf3, 0x53, 0xc3, 0xdf, 0xb3, 0x56, 0x26, 0xdd, 0xfc, 0x69, 0x4c, 0x66, 0x49, 0xd4, - 0x90, 0xaa, 0x95, 0xc9, 0x89, 0x8b, 0x62, 0xfa, 0x78, 0x54, 0xe7, 0xa5, 0xea, 0x7e, 0x38, 0xd5, - 0xba, 0x69, 0xc8, 0x2d, 0x4e, 0xe0, 0x4a, 0xd6, 0xe1, 0x4c, 0xd5, 0xa1, 0xf7, 0x4c, 0xbb, 0xed, - 0xfa, 0xcb, 0x87, 0x3f, 0x6f, 0x9d, 0xd9, 0x76, 0xde, 0x7a, 0x5c, 0x54, 0x7c, 0xaa, 0xe5, 0xd0, - 0x7b, 0x75, 0x3f, 0xf1, 0x60, 0x24, 0x33, 0x54, 0x27, 0xee, 0x4c, 0x5c, 0x18, 0x9f, 0x5a, 0xc0, - 0x4d, 0xea, 0xe6, 0xf3, 0xe1, 0x54, 0xcb, 0xa3, 0x81, 0x9b, 0x01, 0x4e, 0x16, 0x97, 0x52, 0x8c, - 0x68, 0x40, 0xae, 0x97, 0x7d, 0x3f, 0x96, 0x52, 0xa3, 0x61, 0xb7, 0x2d, 0xcf, 0xcd, 0x9f, 0x45, - 0x66, 0x45, 0x26, 0x96, 0xe5, 0x46, 0x90, 0xce, 0xb4, 0xae, 0x0b, 0xbc, 0x2c, 0x96, 0x78, 0x69, - 0x32, 0x0b, 0xb9, 0xaa, 0x83, 0xaf, 0xea, 0x6e, 0xd2, 0x0d, 0x6e, 0x97, 0x61, 0x80, 0x3c, 0x31, - 0x55, 0xb6, 0x38, 0x0e, 0x73, 0x03, 0xb6, 0x10, 0x2b, 0x2f, 0x2b, 0x6a, 0x49, 0x39, 0xed, 0xdd, - 0x23, 0x3b, 0x4b, 0x7b, 0x47, 0x21, 0x27, 0xbc, 0x60, 0xee, 0x7b, 0xd4, 0x62, 0x4b, 0xbd, 0x2b, - 0x82, 0xe1, 0xe5, 0x15, 0xaf, 0x99, 0x00, 0xcf, 0xa7, 0x0e, 0x31, 0xca, 0x68, 0x00, 0x96, 0x1b, - 0xa6, 0x16, 0x89, 0xe7, 0x86, 0xbb, 0xb0, 0xfb, 0xdc, 0x70, 0xe4, 0x25, 0x18, 0xbc, 0x61, 0x9b, - 0xdc, 0xed, 0x04, 0x23, 0xdf, 0x89, 0xf4, 0x66, 0x6f, 0xdb, 0xa6, 0x55, 0xc7, 0x5c, 0x61, 0x72, - 0x44, 0xf7, 0x80, 0x94, 0x4c, 0xc1, 0x40, 0xad, 0x61, 0xb7, 0x68, 0xd5, 0xb4, 0x44, 0x64, 0xbb, - 0xc0, 0xdc, 0xf2, 0xe1, 0x7c, 0xf4, 0xbb, 0xec, 0x57, 0xbd, 0x15, 0xc9, 0xff, 0x14, 0x14, 0x25, - 0x1f, 0x81, 0xbc, 0xa2, 0xd7, 0x7c, 0x60, 0xb2, 0x31, 0xf3, 0x18, 0x8e, 0x99, 0x58, 0x18, 0x62, - 0x9f, 0x60, 0x22, 0xcb, 0x14, 0x58, 0xeb, 0x58, 0xbe, 0xf8, 0x07, 0xa9, 0xb0, 0x8d, 0xa4, 0x00, - 0xbd, 0xf8, 0xb7, 0x30, 0xab, 0x06, 0xb7, 0x36, 0x0b, 0xbd, 0xd8, 0x34, 0x8d, 0xc3, 0xc9, 0x22, - 0x0c, 0x85, 0x4e, 0x3d, 0x6e, 0x3e, 0x8d, 0x95, 0x3f, 0xae, 0x7e, 0xd3, 0x15, 0x89, 0x86, 0xe7, - 0x9a, 0xc5, 0x20, 0xc2, 0x7a, 0x08, 0xd5, 0x64, 0x36, 0xe7, 0x3e, 0x01, 0x39, 0xb5, 0x44, 0x42, - 0x36, 0xd3, 0x17, 0xe4, 0x6c, 0xa6, 0xf2, 0x6b, 0x2f, 0x51, 0xab, 0x45, 0x0d, 0x89, 0x8b, 0x9c, - 0xed, 0xf4, 0x65, 0x38, 0x9d, 0x4c, 0xc4, 0x3e, 0x98, 0x9b, 0x77, 0x29, 0x1c, 0x4b, 0xf8, 0xc1, - 0x68, 0xde, 0x09, 0xa3, 0xae, 0xf8, 0x6f, 0x33, 0xf2, 0xca, 0x4b, 0xce, 0x43, 0x16, 0x75, 0x3c, - 0x15, 0xa6, 0x3c, 0xc3, 0x44, 0xb2, 0x59, 0x91, 0xc9, 0x71, 0xd0, 0x3f, 0x23, 0xf4, 0x83, 0xc7, - 0x8f, 0x6e, 0x6d, 0x16, 0x20, 0x4c, 0x83, 0xa5, 0x85, 0x04, 0xe4, 0x2a, 0x40, 0xb5, 0xbd, 0xd4, - 0x34, 0x1b, 0x98, 0x5e, 0x38, 0x23, 0x05, 0x5b, 0x46, 0x28, 0xcf, 0x2e, 0x2c, 0x91, 0x90, 0x6b, - 0x30, 0xe4, 0xbf, 0xe3, 0x0d, 0x53, 0xfe, 0x61, 0xd6, 0x59, 0xb1, 0x4e, 0x8b, 0xa4, 0xb6, 0x12, - 0x11, 0xf9, 0x20, 0x40, 0xb8, 0x10, 0x08, 0x1b, 0x1b, 0x8d, 0x04, 0x79, 0xdd, 0x90, 0x8d, 0x84, - 0x90, 0x9a, 0x2d, 0x99, 0xf2, 0x44, 0xb4, 0x21, 0x32, 0x01, 0xe2, 0x92, 0x19, 0x99, 0xbd, 0xe4, - 0xa9, 0x21, 0x5a, 0x84, 0x2c, 0xc0, 0x78, 0x6c, 0xee, 0x11, 0x09, 0x02, 0x1f, 0xdf, 0xda, 0x2c, - 0x5c, 0x48, 0x98, 0xb8, 0x64, 0x93, 0x2c, 0x56, 0x96, 0x3c, 0x01, 0x99, 0x5b, 0x5a, 0x45, 0x24, - 0x29, 0xe3, 0xf9, 0xed, 0x22, 0x29, 0x02, 0x18, 0x96, 0xbc, 0x0c, 0xc0, 0x93, 0xad, 0x57, 0x6d, - 0xc7, 0x43, 0x5b, 0x72, 0x84, 0xe7, 0x69, 0xe5, 0xc9, 0xd8, 0xeb, 0xcc, 0x80, 0x91, 0x3f, 0x3a, - 0x24, 0x2e, 0xfe, 0xd5, 0x74, 0xcc, 0xa0, 0x61, 0x82, 0x17, 0xad, 0x90, 0x3a, 0x1f, 0x05, 0xef, - 0x37, 0x9d, 0x0b, 0x5e, 0x22, 0x22, 0x97, 0x60, 0xa0, 0xca, 0x96, 0x93, 0x86, 0xdd, 0x14, 0xaa, - 0x80, 0x99, 0x2a, 0x5a, 0x02, 0xa6, 0x05, 0x58, 0x72, 0x8d, 0x27, 0xcf, 0xb4, 0x94, 0x94, 0xa1, - 0x6d, 0x01, 0x53, 0x73, 0x67, 0x32, 0x18, 0x2b, 0x13, 0x98, 0x5b, 0xd9, 0xb0, 0x4c, 0x82, 0x31, - 0x15, 0xd0, 0x85, 0x5b, 0x99, 0xde, 0xed, 0xb6, 0x32, 0xc5, 0x9f, 0x4c, 0xc5, 0x27, 0x67, 0xf2, - 0x42, 0x3c, 0x7b, 0x1f, 0xce, 0x5d, 0x01, 0x50, 0xae, 0x35, 0xc8, 0xe3, 0x17, 0xc9, 0xc3, 0x97, - 0xde, 0x73, 0x1e, 0xbe, 0xcc, 0x2e, 0xf3, 0xf0, 0x15, 0xff, 0x9f, 0x6c, 0xd7, 0x50, 0x1f, 0x87, - 0x92, 0xaf, 0xe5, 0x65, 0xb6, 0x1d, 0x67, 0xb5, 0x97, 0xdc, 0xd8, 0xa6, 0x92, 0x47, 0x32, 0xa8, - 0xeb, 0x7c, 0x54, 0xba, 0x5a, 0x94, 0x92, 0xbc, 0x06, 0xc3, 0xfe, 0x07, 0x60, 0x7e, 0x47, 0x29, - 0x2f, 0x61, 0x60, 0x0a, 0x29, 0x99, 0x10, 0x23, 0x05, 0xc8, 0x8b, 0x30, 0x88, 0x86, 0x70, 0x4b, - 0x6f, 0xf8, 0xc9, 0x3f, 0x79, 0xb6, 0x50, 0x1f, 0x28, 0xaf, 0x60, 0x01, 0x25, 0xf9, 0x38, 0xf4, - 0x89, 0x4c, 0xe3, 0x7d, 0x38, 0xd7, 0x5f, 0xdd, 0x41, 0x6c, 0x94, 0x2b, 0x72, 0x96, 0x71, 0xbe, - 0xb5, 0x45, 0x40, 0x64, 0x6b, 0xcb, 0x13, 0x8c, 0x2f, 0xc2, 0x89, 0xaa, 0x43, 0x0d, 0x8c, 0xc2, - 0x33, 0x75, 0xbf, 0xe5, 0x88, 0x1c, 0xf0, 0x7c, 0x82, 0x40, 0xcb, 0xa6, 0xe5, 0xa3, 0x99, 0xcd, - 0x25, 0xf0, 0x72, 0x06, 0xc2, 0x84, 0xe2, 0xcc, 0xdc, 0xe5, 0x2d, 0xb9, 0x49, 0x37, 0xd6, 0x6d, - 0xc7, 0xe0, 0x69, 0xd2, 0xc5, 0xa2, 0x2f, 0x04, 0xbd, 0x2a, 0x50, 0xb2, 0xb9, 0x1b, 0x2d, 0x74, - 0xee, 0x65, 0x18, 0xda, 0x6b, 0x7e, 0xed, 0xef, 0x4f, 0x77, 0x08, 0x9a, 0x75, 0x34, 0xb3, 0xeb, - 0x4f, 0x28, 0xd3, 0x8d, 0x6c, 0xa3, 0x09, 0x78, 0xa7, 0xc6, 0x07, 0xd3, 0x4f, 0x01, 0x7a, 0x79, - 0x60, 0xd2, 0xde, 0xd0, 0xb6, 0xf8, 0x24, 0x7a, 0x31, 0x72, 0x78, 0xf1, 0xcf, 0xd2, 0x1d, 0x22, - 0x82, 0x3d, 0xbc, 0x32, 0x63, 0x0b, 0x8f, 0x2f, 0x8c, 0xca, 0x24, 0x4a, 0x6e, 0x44, 0x2c, 0x3c, - 0x3e, 0x98, 0x19, 0x15, 0x32, 0x11, 0xb9, 0x02, 0x50, 0xd5, 0x1d, 0x7d, 0x8d, 0x7a, 0x6c, 0x97, - 0xcb, 0xcf, 0x89, 0xd0, 0x0a, 0x69, 0x05, 0x50, 0x4d, 0xa2, 0x28, 0x7e, 0x67, 0xa6, 0x5b, 0xc4, - 0xb4, 0x63, 0xd9, 0xef, 0x46, 0xf6, 0xd7, 0x60, 0x28, 0x90, 0x6c, 0x65, 0x12, 0xed, 0x25, 0x51, - 0x26, 0x10, 0x3e, 0x96, 0x91, 0x88, 0xc8, 0x65, 0xde, 0xd6, 0x9a, 0xf9, 0x0e, 0xcf, 0x9c, 0x3c, - 0x22, 0x72, 0xe2, 0xea, 0x9e, 0x5e, 0x77, 0xcd, 0x77, 0xa8, 0x16, 0xa0, 0x8b, 0xff, 0x2c, 0x9d, - 0x18, 0x76, 0xee, 0xb8, 0x8f, 0x76, 0xd1, 0x47, 0x09, 0x42, 0xe4, 0x01, 0xf3, 0x8e, 0x85, 0xb8, - 0x0b, 0x21, 0xfe, 0x49, 0x3a, 0x31, 0xbc, 0xe0, 0xb1, 0x10, 0x77, 0x33, 0x5b, 0x3c, 0x03, 0x83, - 0x9a, 0xbd, 0xee, 0x96, 0x71, 0x4f, 0xc4, 0xe7, 0x0a, 0x9c, 0xa8, 0x1d, 0x7b, 0xdd, 0xad, 0xe3, - 0x6e, 0x47, 0x0b, 0x09, 0x8a, 0x7f, 0x91, 0xee, 0x12, 0x80, 0xf1, 0x58, 0xf0, 0x5f, 0xca, 0x25, - 0xf2, 0x87, 0xd2, 0x91, 0x00, 0x8f, 0x0f, 0xaf, 0xb0, 0xaf, 0x02, 0xd4, 0x1a, 0x2b, 0x74, 0x4d, - 0xc7, 0x7d, 0x70, 0x6f, 0x78, 0x64, 0xe1, 0x22, 0x94, 0x6f, 0x83, 0x25, 0x92, 0xe2, 0x0f, 0xa7, - 0x95, 0x08, 0x97, 0xc7, 0xb2, 0xdb, 0xb1, 0xec, 0x02, 0xad, 0x13, 0x41, 0x3b, 0x8f, 0x25, 0xb7, - 0x53, 0xc9, 0x7d, 0x4d, 0x5a, 0x89, 0x6f, 0xfa, 0xd0, 0xca, 0x8e, 0x0d, 0xc0, 0x78, 0xdc, 0xd5, - 0x87, 0x56, 0x93, 0x9e, 0x81, 0x41, 0x21, 0x87, 0x60, 0xa9, 0xe0, 0xf3, 0x3e, 0x07, 0xe2, 0x01, - 0x6d, 0x40, 0x50, 0xfc, 0xaa, 0x34, 0x44, 0xe3, 0xce, 0x3e, 0xa4, 0x3a, 0xf4, 0x43, 0xe9, 0x68, - 0xc4, 0xdd, 0x87, 0x57, 0x7f, 0xae, 0x00, 0xd4, 0xda, 0x4b, 0x0d, 0xe1, 0xd7, 0xd6, 0x2b, 0x9d, - 0xf0, 0x07, 0x50, 0x4d, 0xa2, 0x28, 0xfe, 0xa7, 0x74, 0x62, 0x18, 0xe0, 0x87, 0x57, 0x80, 0xcf, - 0xe3, 0xa9, 0x78, 0xc3, 0x0a, 0x27, 0x72, 0x3c, 0x84, 0x64, 0xe3, 0x4f, 0xbd, 0x28, 0x0c, 0x08, - 0xc9, 0x07, 0x12, 0xcc, 0x35, 0xbc, 0x7e, 0x0b, 0xcd, 0x35, 0xf9, 0x30, 0x5f, 0x32, 0xdc, 0x7e, - 0x3e, 0xbd, 0x5d, 0xd4, 0xe4, 0x87, 0x79, 0x55, 0xed, 0xaf, 0xea, 0x1b, 0x98, 0xdd, 0x87, 0xf5, - 0xc4, 0xf0, 0xc4, 0xa9, 0xad, 0xcd, 0xc2, 0x78, 0x8b, 0x83, 0xe4, 0x0b, 0x5b, 0x41, 0x55, 0xfc, - 0xa3, 0xde, 0xe4, 0x90, 0xbd, 0x0f, 0xaf, 0x08, 0xcf, 0x43, 0xb6, 0xaa, 0x7b, 0x2b, 0x42, 0x93, - 0xf1, 0x36, 0xb0, 0xa5, 0x7b, 0x2b, 0x1a, 0x42, 0xc9, 0x65, 0x18, 0xd0, 0xf4, 0x75, 0x7e, 0xe6, - 0xc9, 0x6f, 0xce, 0xf0, 0x60, 0xc7, 0xd1, 0xd7, 0xeb, 0xfc, 0xdc, 0x33, 0x40, 0x93, 0x22, 0xf4, - 0xcd, 0x51, 0x6f, 0xc5, 0x36, 0xc4, 0xc9, 0x37, 0x6c, 0x6d, 0x16, 0xfa, 0xd6, 0x10, 0xa2, 0x09, - 0x0c, 0xab, 0x6c, 0xc2, 0x36, 0x36, 0xf0, 0xe6, 0x6b, 0x98, 0x57, 0xb6, 0x64, 0x1b, 0x1b, 0x1a, - 0x42, 0xc9, 0xd7, 0xa6, 0xa0, 0x7f, 0x86, 0xea, 0x06, 0x1b, 0x21, 0x83, 0xdd, 0x9e, 0x2a, 0xbd, - 0x79, 0x30, 0x4f, 0x95, 0xc6, 0x57, 0x78, 0x65, 0xb2, 0xa2, 0x88, 0xfa, 0xc9, 0x75, 0x18, 0x28, - 0xeb, 0x1e, 0x5d, 0xb6, 0x9d, 0x0d, 0x7c, 0x7c, 0x35, 0x1a, 0xbe, 0x10, 0x8d, 0xe8, 0x8f, 0x4f, - 0xc4, 0x6f, 0xc6, 0x1a, 0xe2, 0x97, 0x16, 0x14, 0x66, 0x62, 0xe1, 0x37, 0x73, 0xf8, 0xfa, 0x4a, - 0x88, 0x85, 0x5f, 0xe1, 0x69, 0x02, 0x13, 0x1e, 0x2b, 0x0f, 0x27, 0x1f, 0x2b, 0xa3, 0xf5, 0x88, - 0x0f, 0x34, 0xcb, 0xb6, 0x41, 0xf1, 0x95, 0xd3, 0x88, 0xb0, 0x1e, 0x11, 0x5a, 0x6f, 0xd8, 0x06, - 0xb3, 0x1e, 0x03, 0x92, 0xe2, 0xef, 0xf5, 0x42, 0x62, 0x80, 0xcf, 0x63, 0x25, 0x3f, 0x56, 0xf2, - 0x50, 0xc9, 0x27, 0x63, 0x4a, 0x7e, 0x2e, 0x1e, 0x32, 0xf6, 0x01, 0xd5, 0xf0, 0xcf, 0x65, 0x63, - 0x01, 0xa7, 0x1f, 0xee, 0xdd, 0x65, 0x28, 0xbd, 0xde, 0x6d, 0xa5, 0x17, 0x0c, 0x88, 0xbe, 0x6d, - 0x07, 0x44, 0xff, 0x4e, 0x07, 0xc4, 0x40, 0xc7, 0x01, 0x11, 0x2a, 0xc8, 0x60, 0x47, 0x05, 0xa9, - 0x88, 0x41, 0x03, 0xdd, 0x13, 0x5f, 0x9f, 0xdf, 0xda, 0x2c, 0x8c, 0xb2, 0xd1, 0x94, 0x98, 0xf1, - 0x1a, 0x59, 0x14, 0x7f, 0x21, 0xdb, 0x25, 0x4a, 0xfc, 0xa1, 0xe8, 0xc8, 0xf3, 0x90, 0x29, 0xb5, - 0x5a, 0x42, 0x3f, 0x4e, 0x48, 0x7e, 0x55, 0x1d, 0x4a, 0x31, 0x6a, 0xf2, 0x41, 0xc8, 0x94, 0xee, - 0xd4, 0xd4, 0x5c, 0xd7, 0xa5, 0x3b, 0x35, 0xf1, 0x25, 0x1d, 0xcb, 0xde, 0xa9, 0x91, 0x57, 0xc3, - 0xa4, 0x53, 0x2b, 0x6d, 0x6b, 0x55, 0x6c, 0x14, 0xc5, 0x1b, 0x6d, 0xff, 0x25, 0x4f, 0x83, 0xa1, - 0xd8, 0x76, 0x51, 0xa1, 0x55, 0xb4, 0xa9, 0x6f, 0xe7, 0xda, 0xd4, 0xbf, 0xad, 0x36, 0x0d, 0xec, - 0x54, 0x9b, 0x06, 0x77, 0xa0, 0x4d, 0xb0, 0xad, 0x36, 0x0d, 0xed, 0x5f, 0x9b, 0x5a, 0x70, 0x2e, - 0x9e, 0xd9, 0x23, 0xd0, 0x08, 0x0d, 0x48, 0x1c, 0x2b, 0x1e, 0x96, 0xe0, 0xd5, 0x7f, 0x9b, 0x63, - 0xeb, 0xeb, 0x88, 0xae, 0xbb, 0x0c, 0x2f, 0x3f, 0x6a, 0x8c, 0x97, 0x2e, 0x7e, 0x7f, 0xba, 0x73, - 0x42, 0x92, 0xa3, 0x39, 0xc5, 0x7d, 0x59, 0xa2, 0x94, 0xb2, 0x4a, 0x28, 0x94, 0x8e, 0x52, 0x56, - 0xd8, 0x26, 0xc9, 0xec, 0xfb, 0xd2, 0x9d, 0xb2, 0xa4, 0xec, 0x4b, 0x62, 0x4f, 0xc5, 0x1f, 0xc3, - 0xa1, 0x73, 0x87, 0x1b, 0x7d, 0x05, 0x37, 0x0d, 0xc3, 0xb2, 0x10, 0x85, 0x94, 0x76, 0x22, 0xe0, - 0x48, 0x39, 0xf2, 0x6a, 0x90, 0x92, 0x5c, 0x7a, 0x1f, 0x83, 0x2f, 0xdd, 0xfc, 0x31, 0xab, 0x3c, - 0x8f, 0x91, 0xc9, 0xc9, 0x33, 0xd0, 0x37, 0x8d, 0x39, 0x3e, 0xe5, 0xc1, 0xce, 0xb3, 0x7e, 0xca, - 0xaf, 0x56, 0x38, 0x4d, 0xf1, 0x0f, 0x07, 0x12, 0x3c, 0x97, 0xf6, 0x25, 0x2c, 0x49, 0x4d, 0xd2, - 0x7b, 0x52, 0x93, 0x17, 0xa0, 0x8f, 0x4f, 0x2a, 0x42, 0x80, 0xa3, 0x72, 0x98, 0xac, 0xb6, 0xab, - 0x14, 0x13, 0xb4, 0xfb, 0x14, 0xda, 0x4b, 0x30, 0x88, 0xee, 0x7d, 0xd2, 0xb1, 0x2c, 0x6e, 0xcb, - 0xd7, 0x18, 0x50, 0xdd, 0xce, 0x87, 0xa4, 0xe4, 0x1e, 0x90, 0xd0, 0x31, 0x8e, 0xa9, 0x20, 0x35, - 0x4a, 0xfc, 0x02, 0xac, 0xfb, 0x5b, 0xec, 0xa7, 0xfd, 0x47, 0xe0, 0xa6, 0x5f, 0x9a, 0xcf, 0x09, - 0xd4, 0xa8, 0xcb, 0xdd, 0x84, 0x8f, 0xb2, 0x13, 0x6a, 0x20, 0x1b, 0x70, 0x22, 0x80, 0x4e, 0x9b, - 0x96, 0xe9, 0xae, 0x60, 0xc5, 0xfd, 0xdb, 0x56, 0xfc, 0x5e, 0x51, 0x71, 0x21, 0xac, 0xf8, 0xae, - 0x28, 0x1f, 0xaf, 0x39, 0xa9, 0x0e, 0x72, 0x13, 0x72, 0xb5, 0x15, 0xdb, 0xf1, 0x26, 0xa9, 0xdb, - 0x70, 0xcc, 0x16, 0x7a, 0xf4, 0xf3, 0xf9, 0x1c, 0x9f, 0x34, 0xbb, 0x0c, 0x57, 0x37, 0x42, 0xa4, - 0xfc, 0xa4, 0x59, 0x2d, 0xc8, 0xe4, 0xae, 0x99, 0xee, 0xea, 0x2c, 0xbd, 0x47, 0x9b, 0x62, 0xb2, - 0x47, 0xb9, 0x3b, 0xa6, 0xbb, 0x5a, 0x6f, 0x32, 0xa8, 0x2c, 0xf7, 0x80, 0x94, 0xbc, 0x0a, 0x7d, - 0xfc, 0x24, 0x4a, 0x58, 0x0a, 0x52, 0x1a, 0x45, 0x06, 0xed, 0xa0, 0x62, 0xa2, 0x0c, 0xf9, 0x78, - 0x92, 0x6f, 0xcd, 0x50, 0xd4, 0x57, 0x3f, 0x46, 0xd0, 0x81, 0x67, 0x82, 0xab, 0x8d, 0x6c, 0xca, - 0x0d, 0xef, 0xd1, 0x94, 0x7b, 0x03, 0x46, 0x42, 0xc6, 0x55, 0xdb, 0x40, 0x5b, 0x58, 0xf2, 0x4f, - 0x8c, 0x20, 0x3b, 0x70, 0x8b, 0x72, 0x20, 0xd3, 0xd0, 0x2f, 0x32, 0xb7, 0x08, 0xb7, 0x96, 0x47, - 0x93, 0xb3, 0x8e, 0x76, 0x1a, 0x9f, 0x02, 0x1d, 0x79, 0xe4, 0x39, 0xb6, 0xb3, 0x47, 0x9e, 0xc5, - 0x9f, 0x4c, 0xc1, 0x09, 0xd6, 0x1a, 0x45, 0x96, 0xe4, 0x6d, 0x00, 0x06, 0x16, 0xef, 0xf2, 0x52, - 0xf8, 0x2e, 0xef, 0xbd, 0xf2, 0x37, 0x2a, 0x05, 0xae, 0x84, 0xd4, 0xfc, 0x4d, 0xde, 0x05, 0xdf, - 0xa9, 0x61, 0xb5, 0xbd, 0x44, 0xeb, 0xb1, 0xc7, 0x79, 0x12, 0xf7, 0x73, 0x1f, 0xe2, 0xee, 0x62, - 0x7b, 0x7d, 0x07, 0xf7, 0xbd, 0xe9, 0x8e, 0x79, 0xb2, 0x0e, 0x65, 0x39, 0x9e, 0x80, 0x01, 0xff, - 0xad, 0xa2, 0x98, 0x28, 0x63, 0x2f, 0xe7, 0x3b, 0xd5, 0xed, 0xe3, 0xc9, 0x47, 0x13, 0x7b, 0x45, - 0x2c, 0xc9, 0x8f, 0x74, 0xe9, 0x07, 0x85, 0x63, 0x12, 0x97, 0x64, 0x81, 0x1d, 0xa2, 0xfd, 0xf2, - 0xc0, 0x0b, 0xec, 0x57, 0x53, 0x1d, 0xf3, 0x99, 0x1d, 0x55, 0x81, 0x15, 0xff, 0x30, 0xe3, 0xa7, - 0x51, 0xdb, 0xd7, 0x27, 0x3c, 0x03, 0x83, 0x22, 0xb2, 0x5e, 0xd4, 0x1d, 0x41, 0xdc, 0x4e, 0xe0, - 0x6d, 0x57, 0x40, 0xc0, 0x76, 0x2e, 0x92, 0x97, 0x8c, 0xe4, 0x8e, 0x20, 0x79, 0xc8, 0x68, 0x12, - 0x09, 0xdb, 0x9b, 0x4c, 0xdd, 0x37, 0x3d, 0xdc, 0xe8, 0xb0, 0xbe, 0xcc, 0xf0, 0xbd, 0x09, 0xbd, - 0x6f, 0x7a, 0x7c, 0x9b, 0x13, 0xa0, 0xd9, 0xbe, 0x43, 0x58, 0x27, 0xbd, 0xe1, 0xbe, 0x83, 0xef, - 0x88, 0x02, 0x5b, 0xe4, 0x19, 0x18, 0x14, 0x6f, 0xfc, 0xc5, 0xcb, 0x39, 0xd1, 0x5a, 0xe1, 0x15, - 0x80, 0xad, 0x0d, 0x08, 0x18, 0x47, 0x8d, 0x2e, 0x87, 0x6f, 0x85, 0x91, 0xa3, 0x83, 0x10, 0x4d, - 0x60, 0xc8, 0x35, 0x18, 0xad, 0x79, 0xba, 0x65, 0xe8, 0x8e, 0xb1, 0xd0, 0xf6, 0x5a, 0x6d, 0x4f, - 0xde, 0x67, 0xbb, 0x9e, 0x61, 0xb7, 0x3d, 0x4d, 0xa1, 0x20, 0xcf, 0xc2, 0x88, 0x0f, 0x99, 0x72, - 0x1c, 0xdb, 0x91, 0x37, 0x53, 0xae, 0x67, 0x50, 0xc7, 0xd1, 0xa2, 0x04, 0xe4, 0x03, 0x30, 0x52, - 0xb1, 0x82, 0x40, 0x71, 0xda, 0xac, 0xd8, 0x5a, 0xa1, 0x4b, 0xb2, 0x19, 0x20, 0xea, 0x6d, 0xa7, - 0xa9, 0x45, 0x09, 0x8b, 0x5b, 0xe9, 0x78, 0xb6, 0xb9, 0x87, 0xf7, 0x1c, 0xe6, 0x72, 0xf4, 0x7d, - 0x30, 0x3e, 0x8a, 0xc7, 0x3d, 0xae, 0xec, 0x9e, 0xc0, 0xb7, 0xba, 0xd7, 0x60, 0xe0, 0x26, 0xdd, - 0xe0, 0x4f, 0xd9, 0xfb, 0xc2, 0xc5, 0x74, 0x55, 0xc0, 0xe4, 0xc5, 0xd4, 0xa7, 0x2b, 0xfe, 0x78, - 0x3a, 0x9e, 0x47, 0xef, 0xe1, 0x15, 0xf6, 0xb3, 0xd0, 0x8f, 0xa2, 0xac, 0xf8, 0xb7, 0x98, 0x28, - 0x40, 0x14, 0x77, 0xd4, 0xa9, 0xc2, 0x27, 0x2b, 0x7e, 0x6b, 0x9f, 0x9a, 0x5c, 0xf1, 0xe1, 0x95, - 0xde, 0x2b, 0x30, 0x54, 0xb6, 0x2d, 0x17, 0x23, 0x4e, 0x35, 0x7c, 0x85, 0x45, 0xff, 0xa2, 0x46, - 0x08, 0x96, 0x77, 0x4d, 0x12, 0xf5, 0x5e, 0x94, 0x97, 0x59, 0xfc, 0x28, 0x72, 0xdc, 0xa5, 0xf5, - 0x87, 0x16, 0xff, 0x12, 0x03, 0xaa, 0x7b, 0xb4, 0x90, 0x94, 0xdc, 0x82, 0x81, 0xf2, 0x8a, 0xd9, - 0x34, 0x1c, 0x6a, 0xa1, 0x0b, 0x84, 0x64, 0xaa, 0x47, 0xfb, 0xf2, 0x0a, 0xfe, 0x8b, 0xb4, 0xbc, - 0x39, 0x0d, 0x51, 0x2c, 0xe2, 0x8d, 0x2c, 0x60, 0xe7, 0xbe, 0x31, 0x0d, 0x10, 0x16, 0x20, 0x8f, - 0x41, 0xda, 0x0f, 0x79, 0xc1, 0x5f, 0xde, 0x45, 0x34, 0x28, 0x8d, 0x4b, 0x85, 0x18, 0xdb, 0xe9, - 0x6d, 0xc7, 0xf6, 0x2d, 0xe8, 0xe3, 0x87, 0xf8, 0xe8, 0x1c, 0x23, 0x05, 0xd4, 0xeb, 0xd8, 0xe0, - 0x2b, 0x48, 0xcf, 0xb7, 0xec, 0x68, 0x79, 0x46, 0x1c, 0x4d, 0x38, 0xb3, 0x73, 0x0d, 0xe8, 0xc5, - 0xbf, 0xc8, 0x45, 0xc8, 0xa2, 0x14, 0x53, 0x78, 0x34, 0x87, 0xb3, 0xb4, 0x22, 0x3f, 0xc4, 0xb3, - 0x6e, 0x2a, 0xdb, 0x96, 0x27, 0xdc, 0x1c, 0x53, 0x97, 0x86, 0x85, 0x5c, 0x04, 0x2c, 0x22, 0x17, - 0x01, 0x2b, 0xfe, 0x6c, 0x3a, 0x21, 0xed, 0xe7, 0xc3, 0x3b, 0x4c, 0x5e, 0x06, 0xc0, 0xd0, 0x26, - 0x4c, 0x9e, 0xbe, 0xd7, 0x19, 0x8e, 0x12, 0x64, 0x84, 0x6a, 0x1b, 0xd9, 0x76, 0x84, 0xc4, 0xc5, - 0x9f, 0x4b, 0xc5, 0x72, 0x45, 0xee, 0x4b, 0x8e, 0xb2, 0x55, 0x96, 0xde, 0xa3, 0x19, 0xeb, 0xf7, - 0x45, 0x66, 0x77, 0x7d, 0x11, 0xfd, 0x96, 0x03, 0xb0, 0x4c, 0x0f, 0xf3, 0x5b, 0x7e, 0x2f, 0x9d, - 0x94, 0x39, 0xf3, 0x68, 0xaa, 0x78, 0x78, 0x64, 0x96, 0xdd, 0xc5, 0x91, 0xd9, 0x27, 0x60, 0x4c, - 0xc9, 0x27, 0x89, 0xf3, 0xbf, 0x14, 0x84, 0x33, 0x39, 0xeb, 0x64, 0xe7, 0xa0, 0x38, 0x11, 0xb2, - 0xe2, 0x7f, 0x4e, 0x75, 0xcf, 0x26, 0x7a, 0xe8, 0xaa, 0x93, 0x20, 0x80, 0xcc, 0x5f, 0x8e, 0x00, - 0x0e, 0x60, 0x1b, 0x7c, 0xb4, 0x05, 0xf0, 0x80, 0x4c, 0x1e, 0x5f, 0x6a, 0x01, 0x7c, 0x6b, 0x6a, - 0xdb, 0x64, 0xb0, 0x87, 0x2d, 0x83, 0xe2, 0xbf, 0x4a, 0x25, 0x26, 0x6d, 0xdd, 0x57, 0xbb, 0xc2, - 0xf3, 0xd9, 0xf4, 0x1e, 0xce, 0x67, 0x67, 0xa1, 0x9f, 0xb7, 0xc1, 0x10, 0xbd, 0xf1, 0x64, 0x97, - 0xcc, 0xb1, 0x9d, 0x4e, 0x3f, 0x7d, 0x16, 0xc5, 0x9f, 0x4a, 0xc5, 0x72, 0xc8, 0x1e, 0xe2, 0xb7, - 0xed, 0xe9, 0x76, 0xa3, 0xf8, 0xfb, 0xe9, 0xe4, 0x14, 0xb6, 0x87, 0xf8, 0x21, 0x07, 0x71, 0x9c, - 0xb6, 0xb7, 0x75, 0x6b, 0x11, 0x46, 0xa3, 0xb2, 0x10, 0xcb, 0xd6, 0xa3, 0xc9, 0x89, 0x7c, 0x3b, - 0xb4, 0x42, 0xe1, 0x51, 0xfc, 0x6c, 0x3a, 0x9e, 0x7d, 0xf7, 0xd0, 0xe7, 0xa7, 0xbd, 0xdd, 0x85, - 0x55, 0x60, 0x2c, 0xfc, 0x92, 0x45, 0xd3, 0x6b, 0xfa, 0xf7, 0x61, 0x78, 0x43, 0x23, 0x82, 0x24, - 0x35, 0x4d, 0xd7, 0xab, 0x7b, 0x0c, 0x19, 0x09, 0xd7, 0x13, 0x2d, 0xa7, 0x48, 0xe5, 0x01, 0x59, - 0xb6, 0x1e, 0x30, 0xa9, 0x3c, 0x20, 0x6b, 0xd9, 0xa1, 0x4b, 0xe5, 0xbb, 0xd2, 0x9d, 0xb2, 0x33, - 0x1f, 0xba, 0x6c, 0x3e, 0x22, 0xf7, 0x17, 0x6f, 0x99, 0x90, 0xd2, 0x63, 0x9d, 0xd2, 0x21, 0x77, - 0xe0, 0x19, 0xe3, 0xb3, 0xb7, 0x49, 0x2c, 0x51, 0x58, 0x0f, 0xc8, 0xf0, 0x3a, 0x1a, 0xc2, 0x7a, - 0x40, 0x46, 0xdd, 0x83, 0x27, 0xac, 0x1f, 0x49, 0xef, 0x34, 0x25, 0xf8, 0xb1, 0xf0, 0x62, 0xc2, - 0xfb, 0x74, 0x3a, 0x9e, 0xaa, 0xfe, 0xd0, 0xc5, 0x34, 0x0d, 0x7d, 0x22, 0x69, 0x7e, 0x47, 0xe1, - 0x70, 0x7c, 0x27, 0x93, 0x4d, 0x7c, 0xc7, 0x0b, 0x20, 0x6e, 0xaa, 0x76, 0x26, 0x12, 0x4e, 0x5b, - 0xfc, 0x8b, 0x94, 0x92, 0xd7, 0xfd, 0x50, 0xce, 0x48, 0xf6, 0xb6, 0xba, 0x7d, 0xc8, 0x3f, 0xad, - 0xcd, 0x2a, 0x99, 0x8d, 0x82, 0xef, 0x99, 0xa4, 0x9e, 0x6e, 0x36, 0xd5, 0xf2, 0x22, 0x8e, 0xcb, - 0x8f, 0xa7, 0x61, 0x3c, 0x46, 0x4a, 0x2e, 0x46, 0x22, 0xa7, 0xe1, 0xb9, 0xab, 0xf2, 0xf0, 0x81, - 0xc7, 0x50, 0xdb, 0xc5, 0x51, 0xf1, 0x45, 0xc8, 0x4e, 0xea, 0x1b, 0xfc, 0xdb, 0x7a, 0x39, 0x4b, - 0x43, 0xdf, 0x90, 0x8f, 0x14, 0x11, 0x4f, 0x96, 0xe0, 0x14, 0xbf, 0xf0, 0x31, 0x6d, 0x6b, 0xd1, - 0x5c, 0xa3, 0x15, 0x6b, 0xce, 0x6c, 0x36, 0x4d, 0x57, 0xdc, 0x5a, 0x3e, 0xb3, 0xb5, 0x59, 0xb8, - 0xe4, 0xd9, 0x9e, 0xde, 0xac, 0x53, 0x9f, 0xac, 0xee, 0x99, 0x6b, 0xb4, 0x6e, 0x5a, 0xf5, 0x35, - 0xa4, 0x94, 0x58, 0x26, 0xb3, 0x22, 0x15, 0x9e, 0x42, 0xb9, 0xd6, 0xd0, 0x2d, 0x8b, 0x1a, 0x15, - 0x6b, 0x62, 0xc3, 0xa3, 0xfc, 0xb6, 0x33, 0xc3, 0xcf, 0x3c, 0x79, 0x3c, 0x0f, 0x8e, 0x66, 0x8c, - 0x97, 0x18, 0x81, 0x96, 0x50, 0xa8, 0xf8, 0xa3, 0xd9, 0x84, 0x94, 0xfe, 0x47, 0x48, 0x7d, 0xfc, - 0x9e, 0xce, 0x6e, 0xd3, 0xd3, 0x57, 0xa1, 0x5f, 0xe4, 0xa8, 0x14, 0x37, 0x28, 0xe8, 0x80, 0x74, - 0x8f, 0x83, 0xe4, 0x2b, 0x28, 0x41, 0x45, 0x9a, 0x70, 0x6e, 0x91, 0x75, 0x53, 0x72, 0x67, 0xf6, - 0xed, 0xa1, 0x33, 0xbb, 0xf0, 0x23, 0x6f, 0xc1, 0x19, 0xc4, 0x26, 0x74, 0x6b, 0x3f, 0x56, 0x85, - 0xb6, 0x1e, 0xaf, 0x2a, 0xb9, 0x73, 0x3b, 0x95, 0x27, 0x1f, 0x81, 0xe1, 0x60, 0x80, 0x98, 0xd4, - 0x15, 0x57, 0x33, 0x5d, 0xc6, 0x19, 0x8f, 0xf4, 0xca, 0xc0, 0xf8, 0xec, 0x37, 0x1a, 0x2d, 0x34, - 0xc2, 0xab, 0xf8, 0x3b, 0x29, 0x38, 0x37, 0x75, 0xdf, 0xa3, 0x8e, 0xa5, 0x37, 0x11, 0x51, 0xf3, - 0x6c, 0x47, 0x5f, 0xa6, 0x53, 0x96, 0xbe, 0xd4, 0x3c, 0xfc, 0x95, 0xff, 0x43, 0xd0, 0x6f, 0xf0, - 0x8f, 0x12, 0x3a, 0xf5, 0x44, 0xe0, 0x1a, 0x94, 0xd0, 0x68, 0xf1, 0xfd, 0x9a, 0x5f, 0xa6, 0xf8, - 0xbb, 0x29, 0x78, 0x24, 0x91, 0xd0, 0x74, 0xdf, 0x0d, 0x9f, 0xf7, 0xe9, 0x4c, 0x87, 0xcf, 0x13, - 0x93, 0xe8, 0x65, 0xc8, 0x99, 0x61, 0xca, 0xe5, 0x7a, 0x18, 0x32, 0x50, 0x1b, 0x93, 0xe0, 0x38, - 0xba, 0x5e, 0x80, 0xe0, 0x0d, 0xa7, 0xe3, 0xbf, 0xea, 0x75, 0xeb, 0x6d, 0xc7, 0xe4, 0xe3, 0x52, - 0x3b, 0xe9, 0x2a, 0x4f, 0x7e, 0xdd, 0x5b, 0x8e, 0xc9, 0x2a, 0xd0, 0xbd, 0x15, 0x6a, 0xe9, 0xf5, - 0x75, 0xdb, 0x59, 0xc5, 0x70, 0xe2, 0x7c, 0x70, 0x6a, 0x63, 0x1c, 0x7e, 0xc7, 0x07, 0x93, 0x27, - 0x60, 0x64, 0xb9, 0xd9, 0xa6, 0x41, 0x00, 0x67, 0x7e, 0x99, 0xa9, 0x0d, 0x33, 0x60, 0x70, 0x05, - 0x74, 0x01, 0x00, 0x89, 0x30, 0xbf, 0x21, 0xbf, 0xb9, 0xd4, 0x06, 0x19, 0x64, 0x51, 0x74, 0xd7, - 0x39, 0xae, 0xd5, 0x5c, 0x48, 0xf5, 0xa6, 0x6d, 0x2d, 0xd7, 0x3d, 0xea, 0xac, 0x61, 0x43, 0xf1, - 0xb5, 0x86, 0x76, 0x1a, 0x29, 0xf0, 0x6e, 0xc8, 0x9d, 0xb5, 0xad, 0xe5, 0x45, 0xea, 0xac, 0xb1, - 0xa6, 0x3e, 0x03, 0x44, 0x34, 0xd5, 0xc1, 0x53, 0x1d, 0xfe, 0x71, 0xf8, 0x5c, 0x43, 0x13, 0x1f, - 0xc1, 0x8f, 0x7b, 0xf0, 0xc3, 0x0a, 0x30, 0xc4, 0xa3, 0xd8, 0x72, 0xa1, 0xe1, 0x1b, 0x0d, 0x0d, - 0x38, 0x08, 0xe5, 0x75, 0x1a, 0xc4, 0xf3, 0x11, 0xee, 0x89, 0xa3, 0x89, 0x5f, 0xc5, 0x4f, 0x65, - 0x80, 0xe0, 0xa1, 0x47, 0x60, 0x35, 0x60, 0xfa, 0xbe, 0xfd, 0x28, 0x5a, 0x38, 0xad, 0xa6, 0x77, - 0x35, 0xad, 0x8e, 0x59, 0xed, 0xb5, 0xba, 0xde, 0x6a, 0xd5, 0xef, 0x9a, 0x4d, 0x74, 0x85, 0xc5, - 0x85, 0x4f, 0x1b, 0xb1, 0xda, 0x6b, 0xa5, 0x56, 0x6b, 0x9a, 0x03, 0xc9, 0xd3, 0x30, 0xce, 0xe8, - 0xb0, 0x93, 0x02, 0xca, 0x2c, 0x52, 0x32, 0x06, 0x18, 0x06, 0xde, 0xa7, 0x3d, 0x0b, 0x03, 0x82, - 0x27, 0x5f, 0xab, 0x7a, 0xb5, 0x7e, 0xce, 0xcc, 0x65, 0x3d, 0x17, 0xb0, 0xe1, 0x93, 0x6b, 0xaf, - 0x36, 0xe8, 0x97, 0xc7, 0x64, 0x07, 0x56, 0x7b, 0x8d, 0x47, 0x31, 0xec, 0x47, 0x64, 0xf0, 0x9b, - 0x5c, 0x84, 0x51, 0xc6, 0x25, 0x10, 0x18, 0x8f, 0x0f, 0xdf, 0xab, 0x29, 0x50, 0x72, 0x0d, 0x4e, - 0x46, 0x20, 0xdc, 0x06, 0xe5, 0xae, 0x5d, 0xbd, 0x5a, 0x22, 0xae, 0xf8, 0xc3, 0x19, 0x18, 0x66, - 0xdd, 0xc1, 0xd6, 0xa7, 0x43, 0xea, 0x88, 0x33, 0xd0, 0x6f, 0x3b, 0xcb, 0xf5, 0xb6, 0xd3, 0x14, - 0x63, 0xaf, 0xcf, 0x76, 0x96, 0x6f, 0x39, 0x4d, 0x72, 0x0a, 0xfa, 0x58, 0xef, 0x98, 0x86, 0x18, - 0x62, 0xbd, 0x7a, 0xab, 0x55, 0x31, 0x48, 0x89, 0x77, 0x08, 0xc6, 0x16, 0xaf, 0x37, 0x70, 0x6b, - 0xcf, 0x5f, 0x5d, 0xf4, 0xf2, 0x15, 0x2f, 0x86, 0xc4, 0x7e, 0xc2, 0x88, 0xe3, 0xfc, 0x20, 0x40, - 0x61, 0x61, 0xe0, 0xb6, 0xc4, 0xe0, 0x7d, 0xa2, 0xb2, 0x10, 0xc8, 0x90, 0x05, 0xdf, 0xc4, 0x18, - 0x64, 0x12, 0x48, 0x48, 0xb5, 0x66, 0x1b, 0xe6, 0x5d, 0x93, 0x72, 0x4f, 0xbc, 0x5e, 0x7e, 0xb3, - 0x1d, 0xc7, 0x6a, 0x39, 0x9f, 0xc9, 0x9c, 0x80, 0x90, 0x57, 0xb8, 0x12, 0x72, 0x3a, 0x5c, 0xfb, - 0x78, 0xdf, 0x72, 0x3b, 0x4d, 0x41, 0xa1, 0x66, 0x62, 0x79, 0x5c, 0x08, 0x8b, 0xf3, 0x30, 0x82, - 0xef, 0x48, 0x6b, 0xb4, 0x49, 0x1b, 0x9e, 0xed, 0x90, 0xb3, 0x90, 0xb9, 0xe9, 0xbf, 0x24, 0xe5, - 0xce, 0x01, 0xab, 0x74, 0x43, 0x63, 0x30, 0x52, 0x0c, 0x9e, 0x01, 0xa4, 0xf1, 0xde, 0x18, 0x1f, - 0x60, 0xf1, 0xdb, 0x7d, 0xff, 0x4e, 0xbf, 0xf8, 0xeb, 0xfd, 0x90, 0xe3, 0x09, 0xdd, 0x6b, 0xb7, - 0x2b, 0x93, 0x98, 0x27, 0xd1, 0x38, 0x14, 0x3b, 0x69, 0x06, 0xa0, 0x6c, 0x5b, 0x16, 0xc5, 0xbc, - 0x58, 0x41, 0xc6, 0x8e, 0x30, 0x77, 0xb0, 0xc0, 0x74, 0xe0, 0x21, 0x95, 0x25, 0x97, 0x61, 0x80, - 0x7f, 0x51, 0x65, 0x52, 0xd8, 0x4f, 0xf8, 0xa6, 0xce, 0x6d, 0x99, 0x77, 0xef, 0xe2, 0x03, 0xbc, - 0x00, 0x4d, 0x2e, 0x42, 0xff, 0xe4, 0x7c, 0xad, 0x56, 0x9a, 0xf7, 0xaf, 0xd6, 0xd1, 0xc7, 0xd0, - 0xb0, 0xdc, 0xba, 0xab, 0x5b, 0xae, 0xe6, 0x23, 0xc9, 0x13, 0xd0, 0x57, 0xa9, 0x22, 0x19, 0xf7, - 0x9c, 0x1f, 0xda, 0xda, 0x2c, 0xf4, 0x9b, 0x2d, 0x4e, 0x25, 0x50, 0x58, 0xef, 0xed, 0xca, 0xa4, - 0xf4, 0xbe, 0x84, 0xd7, 0x7b, 0xcf, 0x34, 0xf0, 0x9e, 0x5e, 0x0b, 0xd0, 0xe4, 0x45, 0x18, 0xae, - 0x51, 0xc7, 0xd4, 0x9b, 0xf3, 0x6d, 0xdc, 0x7a, 0x4a, 0x91, 0x78, 0x5d, 0x84, 0xd7, 0x2d, 0x44, - 0x68, 0x11, 0x32, 0x72, 0x1e, 0xb2, 0x33, 0xa6, 0xe5, 0xbb, 0xb1, 0xa1, 0x9f, 0xd3, 0x8a, 0x69, - 0x79, 0x1a, 0x42, 0xc9, 0x13, 0x90, 0xb9, 0xb1, 0x58, 0x11, 0x4f, 0xe7, 0x90, 0xd7, 0xdb, 0x5e, - 0x24, 0xaa, 0xef, 0x8d, 0xc5, 0x0a, 0x79, 0x11, 0x06, 0xd9, 0xa2, 0x48, 0xad, 0x06, 0x75, 0xf3, - 0x43, 0xf8, 0x31, 0x3c, 0x94, 0xac, 0x0f, 0x94, 0x1f, 0xc1, 0x04, 0x94, 0xe4, 0x26, 0xe4, 0xd4, - 0xbc, 0x9a, 0xc2, 0x95, 0x12, 0x2d, 0xb8, 0x75, 0x81, 0x4b, 0x0a, 0x66, 0x1c, 0x2b, 0x48, 0x0c, - 0xc8, 0xab, 0x30, 0xb6, 0x4f, 0x44, 0x2b, 0x96, 0x67, 0x50, 0xb8, 0xb4, 0xb5, 0x59, 0x78, 0x32, - 0xc6, 0xb4, 0xee, 0x08, 0x2a, 0x89, 0x7b, 0x47, 0x4e, 0xe4, 0xa3, 0x00, 0x25, 0xcf, 0x73, 0xcc, - 0xa5, 0x36, 0x33, 0x37, 0x47, 0xbb, 0x7b, 0x62, 0x15, 0xb7, 0x36, 0x0b, 0x27, 0xf5, 0x80, 0x3c, - 0xd1, 0x1f, 0x4b, 0x62, 0x47, 0x5e, 0x83, 0x61, 0xb6, 0xe2, 0xf9, 0xa3, 0x50, 0x3c, 0x47, 0x47, - 0x13, 0x93, 0xad, 0x8d, 0x75, 0x57, 0x20, 0x64, 0x13, 0x53, 0x2e, 0x40, 0x3e, 0x06, 0xa3, 0x91, - 0x71, 0xcc, 0x73, 0x29, 0x48, 0xe9, 0x1d, 0x23, 0x58, 0x1e, 0x75, 0x15, 0x1f, 0x99, 0x07, 0xac, - 0x23, 0x51, 0x57, 0xa3, 0xbc, 0x8a, 0x7f, 0x9a, 0x86, 0x93, 0xa5, 0xb6, 0xb7, 0x52, 0x75, 0xa8, - 0xf0, 0xa3, 0x38, 0x80, 0x13, 0xbe, 0xbd, 0xcd, 0xf4, 0x7b, 0x7c, 0x25, 0xa1, 0xcc, 0x07, 0xd9, - 0x7d, 0xcc, 0x07, 0x77, 0x61, 0xac, 0x64, 0xac, 0x99, 0x56, 0x89, 0xa7, 0xdc, 0x9b, 0x9b, 0x2e, - 0xe1, 0xca, 0x21, 0x79, 0xd4, 0x2b, 0x68, 0xf1, 0x3d, 0x3c, 0xb1, 0x03, 0x43, 0xd5, 0x75, 0x8e, - 0xab, 0xaf, 0xdd, 0xd5, 0xeb, 0x8d, 0x15, 0xdd, 0x5a, 0x66, 0xab, 0x83, 0x52, 0xaa, 0xf8, 0xd9, - 0x34, 0x5c, 0xf0, 0xc3, 0x86, 0x53, 0x8f, 0x69, 0xaf, 0x69, 0x2d, 0x47, 0x92, 0xc1, 0x3d, 0x84, - 0xd2, 0x2f, 0x7e, 0x26, 0x0d, 0xe7, 0x55, 0xcf, 0xb8, 0x87, 0x5e, 0x28, 0x7f, 0x92, 0x86, 0x71, - 0x6e, 0x97, 0x55, 0x75, 0x6f, 0xa5, 0xcc, 0x35, 0x6a, 0x5f, 0x92, 0xb8, 0x0c, 0x03, 0x9c, 0x4d, - 0xf0, 0x4c, 0x1d, 0x17, 0x1f, 0xae, 0xac, 0xb8, 0xe8, 0xf9, 0x68, 0x32, 0x0f, 0x27, 0x4b, 0x77, - 0xef, 0xd2, 0x86, 0x17, 0xa6, 0x32, 0x98, 0x0f, 0xe3, 0xa6, 0xf3, 0xc0, 0xf6, 0x02, 0x1f, 0xa6, - 0x08, 0xc1, 0xf8, 0x60, 0x89, 0xe5, 0xc8, 0x22, 0x9c, 0x56, 0xe1, 0x35, 0xbe, 0x03, 0xcc, 0x4a, - 0xb1, 0xee, 0x63, 0x1c, 0xf9, 0x7f, 0x5a, 0x87, 0xb2, 0x49, 0xad, 0xc4, 0x95, 0xb5, 0xb7, 0x5b, - 0x2b, 0x71, 0x99, 0x4d, 0x2c, 0x57, 0xfc, 0xf1, 0x0c, 0x40, 0xad, 0xa5, 0x5b, 0x16, 0x06, 0x11, - 0x7a, 0x78, 0x1f, 0x14, 0xbe, 0x10, 0x71, 0x23, 0xd8, 0xe9, 0x90, 0x79, 0x51, 0x04, 0xfd, 0x32, - 0xda, 0x8e, 0xff, 0xe2, 0x36, 0x08, 0x3a, 0x84, 0x40, 0xd9, 0x6c, 0x08, 0x28, 0x49, 0x05, 0xb2, - 0x25, 0x67, 0xd9, 0x15, 0xee, 0x81, 0xdd, 0xfd, 0xa0, 0x75, 0x67, 0x39, 0x79, 0xdd, 0x45, 0x16, - 0xc5, 0x6f, 0x48, 0xc3, 0x59, 0x3e, 0x64, 0xae, 0x3b, 0x7a, 0x6b, 0xa5, 0x46, 0x3d, 0x0f, 0x37, - 0xdc, 0x0f, 0xef, 0x24, 0xf2, 0xf9, 0x34, 0x9c, 0xe6, 0x96, 0xec, 0x34, 0x35, 0x28, 0x3f, 0xb6, - 0x38, 0xda, 0xcf, 0x3c, 0xbf, 0xc4, 0xc2, 0x39, 0xda, 0xef, 0x46, 0x0f, 0x50, 0x38, 0xbf, 0x92, - 0x86, 0xd3, 0x61, 0x52, 0xc6, 0x48, 0xe2, 0xdb, 0x87, 0x5e, 0x38, 0x7b, 0x9b, 0x20, 0x13, 0x45, - 0xfa, 0x10, 0xdb, 0xdc, 0xb2, 0x2a, 0xf4, 0xee, 0xf1, 0x79, 0x60, 0x92, 0x48, 0x8f, 0x87, 0xf0, - 0xbe, 0xb4, 0xf4, 0x57, 0xd3, 0x70, 0x26, 0x14, 0xa9, 0xb8, 0x13, 0x3a, 0x1e, 0xf9, 0x07, 0x2f, - 0xd3, 0xe3, 0xa1, 0xbf, 0xaf, 0xa1, 0x9f, 0x28, 0xd3, 0xe3, 0xb1, 0xbf, 0x2f, 0x3d, 0xfd, 0xee, - 0x34, 0x5c, 0x50, 0x32, 0x31, 0x6b, 0x76, 0xb3, 0x69, 0xb7, 0xbd, 0x45, 0xc7, 0x5c, 0x5e, 0x3e, - 0x24, 0x27, 0xab, 0x83, 0x3b, 0xf6, 0x3d, 0x0d, 0x7d, 0xe2, 0xa2, 0x05, 0x73, 0x07, 0x6b, 0xe2, - 0xd7, 0x1e, 0xa5, 0xf5, 0x8f, 0xd2, 0x50, 0x48, 0x96, 0xd6, 0xb4, 0xed, 0x34, 0xe8, 0xa4, 0x6d, - 0xd1, 0x63, 0x79, 0x49, 0xf2, 0xfa, 0x9e, 0x34, 0x3c, 0x9a, 0x2c, 0x2f, 0xf6, 0xdf, 0x92, 0xde, - 0x58, 0x3d, 0x16, 0x97, 0x24, 0xae, 0x5f, 0x4e, 0xc3, 0x49, 0xf6, 0xa7, 0xd9, 0x98, 0xb1, 0x5d, - 0x8f, 0x35, 0xf5, 0x00, 0x56, 0xe1, 0xbd, 0xad, 0x18, 0x07, 0xf1, 0x9c, 0xde, 0xef, 0x9e, 0xec, - 0xbe, 0xba, 0xa7, 0x77, 0x1f, 0x5b, 0x9a, 0xb8, 0x40, 0x0f, 0x6d, 0x09, 0x7e, 0xb7, 0x0a, 0xf4, - 0x00, 0xd6, 0xdf, 0x87, 0x59, 0xa0, 0x7f, 0x33, 0x03, 0xb9, 0xb2, 0x63, 0xaf, 0x5b, 0x37, 0xe8, - 0x3a, 0x6d, 0x1e, 0xda, 0x70, 0x7f, 0x20, 0x0c, 0x44, 0x67, 0x8f, 0x06, 0xa2, 0x5f, 0x8e, 0xbc, - 0x06, 0x63, 0xa1, 0x2c, 0xe5, 0xc8, 0xb9, 0x78, 0x95, 0xdf, 0x60, 0xa8, 0xfa, 0xdb, 0x0c, 0x27, - 0x42, 0x3c, 0xaa, 0xd4, 0xc5, 0xbf, 0x88, 0xf4, 0xc6, 0xc3, 0x6d, 0xae, 0xef, 0xbb, 0x37, 0x6e, - 0xc1, 0xe9, 0x72, 0xdb, 0x71, 0xa8, 0xe5, 0x25, 0x77, 0x0a, 0xde, 0xa4, 0x35, 0x38, 0x45, 0x3d, - 0xde, 0x39, 0x1d, 0x0a, 0x33, 0xb6, 0xc2, 0x95, 0x4e, 0x65, 0xdb, 0x1f, 0xb2, 0x6d, 0x73, 0x8a, - 0x24, 0xb6, 0xc9, 0x85, 0x8b, 0x3f, 0x9f, 0x96, 0xbb, 0xfe, 0xd0, 0x66, 0xb5, 0x77, 0x45, 0xd7, - 0x17, 0x3f, 0x95, 0x81, 0x51, 0xd6, 0xac, 0x45, 0xdd, 0x5d, 0x3d, 0x36, 0x61, 0xf6, 0xb3, 0x40, - 0xb0, 0xaf, 0xf0, 0x25, 0x29, 0x02, 0x39, 0xe6, 0xe5, 0x56, 0x30, 0x78, 0xa7, 0xaf, 0xf0, 0xf1, - 0xc5, 0xef, 0xcd, 0x86, 0xdd, 0x71, 0x6c, 0x00, 0x1d, 0x76, 0x77, 0x90, 0x05, 0x38, 0x29, 0xe6, - 0x36, 0x1f, 0x84, 0x29, 0xd4, 0xc4, 0xfc, 0xc5, 0x33, 0x31, 0x8b, 0x69, 0xb1, 0xed, 0x52, 0xa7, - 0xee, 0xe9, 0xee, 0x6a, 0x1d, 0x73, 0xae, 0x69, 0x89, 0x05, 0x19, 0x43, 0x31, 0xab, 0x45, 0x19, - 0x0e, 0x84, 0x0c, 0xfd, 0x09, 0x31, 0xc6, 0x30, 0xa9, 0x60, 0xf1, 0x87, 0x52, 0x90, 0x53, 0x3f, - 0x87, 0x5c, 0x81, 0x01, 0xf6, 0x3b, 0x88, 0xf1, 0x22, 0x5e, 0xa0, 0x87, 0x1c, 0xf9, 0x73, 0x26, - 0x9f, 0x86, 0xbc, 0x04, 0x83, 0xf8, 0x72, 0x0c, 0x0b, 0xa4, 0xc3, 0xd0, 0x3a, 0x61, 0x01, 0x93, - 0xa1, 0x79, 0xb1, 0x90, 0x94, 0xbc, 0x02, 0x43, 0x95, 0xf0, 0xc9, 0xad, 0xb8, 0x80, 0xc6, 0x97, - 0xfe, 0x52, 0xc9, 0x90, 0x40, 0x93, 0xa9, 0x8b, 0x5f, 0x48, 0x87, 0xaa, 0x7e, 0x6c, 0x9a, 0xee, - 0xcb, 0x34, 0xfd, 0xfe, 0x0c, 0x8c, 0x94, 0x6d, 0xcb, 0xd3, 0x1b, 0xde, 0xf1, 0x61, 0xf0, 0x7e, - 0x0e, 0xd9, 0x48, 0x01, 0x7a, 0xa7, 0xd6, 0x74, 0xb3, 0x29, 0x0c, 0x1f, 0xcc, 0x33, 0x40, 0x19, - 0x40, 0xe3, 0x70, 0x72, 0x1d, 0xc3, 0x5e, 0x31, 0x49, 0x07, 0xef, 0x04, 0x47, 0xc3, 0x90, 0xec, - 0x12, 0x8a, 0x47, 0x81, 0x6a, 0x70, 0x00, 0x1f, 0x39, 0x72, 0x49, 0xb9, 0xcf, 0x8e, 0x0f, 0x46, - 0x8f, 0x48, 0x9f, 0x7d, 0x2e, 0x03, 0xa7, 0xd5, 0xf7, 0x8a, 0xc7, 0x03, 0x4e, 0x74, 0xde, 0x5f, - 0x81, 0x93, 0xaa, 0x6c, 0x26, 0x99, 0x34, 0x7a, 0xbb, 0xbf, 0x1d, 0xb9, 0xb2, 0xb5, 0x59, 0x78, - 0x2c, 0xfe, 0x54, 0x94, 0x55, 0x96, 0xf8, 0x9a, 0x24, 0xb1, 0x92, 0xc4, 0x9e, 0x79, 0x40, 0x9c, - 0xa2, 0x1f, 0xf2, 0x9e, 0xf9, 0x7c, 0x3a, 0xde, 0x33, 0xc7, 0x13, 0x9e, 0x58, 0xb8, 0x7f, 0x31, - 0x0d, 0x4f, 0xaa, 0xc2, 0x79, 0xf3, 0xc5, 0x67, 0x5f, 0xd6, 0xa8, 0x1f, 0x23, 0xf5, 0x78, 0x7a, - 0x11, 0x4a, 0x8c, 0xc1, 0x6e, 0x75, 0x37, 0x70, 0x94, 0x14, 0xc1, 0x6e, 0x19, 0x44, 0x13, 0x98, - 0x1d, 0x88, 0xf3, 0x78, 0x4e, 0xd8, 0x85, 0x38, 0xbf, 0x73, 0x5b, 0x71, 0x1e, 0x0f, 0x64, 0xff, - 0xb9, 0x5a, 0x16, 0xe0, 0xba, 0xe9, 0x89, 0x48, 0xd2, 0x47, 0xfc, 0xaa, 0x4c, 0x7a, 0xe7, 0x9a, - 0xdd, 0xd3, 0x3b, 0xd7, 0x30, 0x3e, 0x54, 0xef, 0x1e, 0xe2, 0x43, 0xbd, 0x06, 0xfd, 0x42, 0x8e, - 0x62, 0xdf, 0x7e, 0x26, 0xfc, 0x0a, 0x04, 0x77, 0xaa, 0xde, 0x97, 0xfe, 0x53, 0xd0, 0xef, 0xf2, - 0x98, 0x69, 0x62, 0x5f, 0x8d, 0xee, 0x3e, 0x02, 0xa4, 0xf9, 0x7f, 0x90, 0xf3, 0x80, 0x59, 0x86, - 0x64, 0x6f, 0x1c, 0x9e, 0x75, 0x88, 0xfd, 0x4b, 0x2a, 0xd0, 0x2f, 0xbc, 0x06, 0xf2, 0x80, 0x9e, - 0x1d, 0x81, 0x5a, 0x86, 0xfd, 0xcc, 0x9d, 0x07, 0xf8, 0x99, 0xb5, 0x20, 0x96, 0x7d, 0xb6, 0x05, - 0xa8, 0xf8, 0x53, 0x29, 0xc8, 0xa9, 0x85, 0xc8, 0x33, 0xd0, 0xc7, 0xff, 0x12, 0x3b, 0x74, 0x0c, - 0xdd, 0xca, 0x4b, 0xc8, 0xa1, 0x5b, 0x05, 0xf5, 0x8b, 0x30, 0xa8, 0xf9, 0xae, 0x20, 0x62, 0x87, - 0x8e, 0xef, 0x77, 0x03, 0xff, 0x90, 0x48, 0xb6, 0x0b, 0x1f, 0x48, 0x9e, 0x80, 0xcc, 0x42, 0xd3, - 0x10, 0x1b, 0x73, 0x74, 0x29, 0xb2, 0x9b, 0x72, 0x5c, 0x5a, 0x86, 0x65, 0x44, 0xf3, 0x74, 0x5d, - 0x3c, 0xf6, 0x46, 0x22, 0x8b, 0xae, 0xcb, 0x44, 0xf3, 0x74, 0xbd, 0xf8, 0x4b, 0x29, 0xff, 0xf9, - 0xee, 0xac, 0xe9, 0x7a, 0x15, 0xeb, 0x9e, 0xde, 0x34, 0x83, 0x8e, 0x20, 0xd7, 0x61, 0x34, 0x44, - 0x4a, 0x21, 0x0e, 0x62, 0xa1, 0x80, 0xd0, 0x09, 0xfe, 0x31, 0xc9, 0xf1, 0x25, 0x5a, 0x8c, 0x5c, - 0x94, 0x94, 0x5f, 0x3a, 0xb5, 0x90, 0xfd, 0xe6, 0xc5, 0x53, 0xec, 0xe1, 0x39, 0xd3, 0x75, 0x4d, - 0x6b, 0x99, 0xbb, 0x5f, 0x66, 0xd0, 0x13, 0x0a, 0xcf, 0x4f, 0xd6, 0x38, 0xbc, 0xee, 0x30, 0x84, - 0xec, 0xbf, 0x23, 0x17, 0x28, 0xfe, 0xa7, 0x14, 0x9c, 0x63, 0x9c, 0x30, 0x28, 0x69, 0xec, 0xc3, - 0xf6, 0x35, 0x80, 0xd7, 0xba, 0x48, 0x4a, 0x8c, 0xea, 0xc7, 0xe3, 0x71, 0x38, 0x14, 0x42, 0x85, - 0x7b, 0x17, 0xd9, 0xef, 0x2d, 0x2e, 0xdc, 0x2f, 0xa6, 0xf0, 0x7a, 0x70, 0xa9, 0x49, 0x6f, 0xcd, - 0x57, 0xde, 0x3c, 0xa0, 0x0b, 0xec, 0xbd, 0x4e, 0x5d, 0xaf, 0x43, 0xce, 0xc5, 0xb6, 0xd4, 0xdb, - 0x96, 0x79, 0x1f, 0x4f, 0xbe, 0xc4, 0xc7, 0x9c, 0x96, 0x3e, 0x46, 0x6a, 0xab, 0x36, 0xca, 0xe9, - 0x6f, 0x59, 0xe6, 0x7d, 0x8c, 0xc9, 0xfa, 0x61, 0x0c, 0x73, 0x2f, 0x51, 0x90, 0x73, 0x30, 0xe0, - 0x27, 0x16, 0x11, 0x69, 0x3a, 0x82, 0xdf, 0x24, 0x07, 0x99, 0xb6, 0x69, 0x60, 0x33, 0x7b, 0x35, - 0xf6, 0x67, 0xf1, 0x37, 0x32, 0x30, 0x5e, 0xba, 0x53, 0xab, 0x94, 0x03, 0x2f, 0x06, 0xe1, 0x57, - 0xbb, 0xb6, 0x4b, 0x59, 0xf8, 0xf4, 0xa4, 0x0c, 0xa3, 0x3c, 0x2e, 0x82, 0x88, 0xdd, 0xcf, 0xcf, - 0xa5, 0x7a, 0xb9, 0x37, 0x45, 0x14, 0x23, 0x29, 0xe9, 0x08, 0x62, 0x44, 0x88, 0x7f, 0x97, 0x34, - 0xe0, 0x6c, 0x84, 0xb4, 0xae, 0x07, 0x61, 0xe7, 0xfc, 0x90, 0x1f, 0xef, 0xd9, 0xda, 0x2c, 0x3c, - 0xd1, 0x91, 0x48, 0x62, 0x7d, 0x46, 0x66, 0x1d, 0x86, 0xaf, 0x73, 0xc9, 0x4d, 0x18, 0xe7, 0xe5, - 0xf1, 0xd0, 0x2e, 0x78, 0x24, 0xc1, 0x98, 0x4b, 0xe1, 0x1d, 0x24, 0xa4, 0x1c, 0xca, 0x0b, 0x91, - 0x4c, 0xe0, 0xc2, 0x27, 0xfa, 0x0e, 0x9c, 0xe2, 0xf4, 0x2d, 0xea, 0xe0, 0x48, 0xb4, 0xad, 0xba, - 0x4b, 0x3d, 0xe1, 0x5a, 0x3d, 0xf1, 0xc4, 0xd6, 0x66, 0xa1, 0x90, 0x48, 0x20, 0x31, 0x3d, 0x81, - 0x04, 0xd5, 0x00, 0x5f, 0xa3, 0x9e, 0xfc, 0x4e, 0xa3, 0x6f, 0x17, 0x6a, 0xfe, 0xcd, 0x69, 0x38, - 0x33, 0x43, 0xf5, 0xa6, 0xb7, 0x52, 0x5e, 0xa1, 0x8d, 0xd5, 0xe3, 0xa7, 0xd2, 0x11, 0xab, 0x25, - 0x51, 0x3a, 0xc7, 0x26, 0x72, 0x37, 0xe9, 0x1c, 0x5b, 0xbc, 0x42, 0x3a, 0xdf, 0x93, 0x86, 0x4b, - 0x49, 0x9b, 0x03, 0xbc, 0x1d, 0x70, 0x16, 0xee, 0x51, 0xc7, 0x31, 0x0d, 0x7a, 0x88, 0x8b, 0xca, - 0xc1, 0xd9, 0xc3, 0x72, 0x87, 0x65, 0xf7, 0xf8, 0x22, 0x76, 0x67, 0xe2, 0x3a, 0xc4, 0x9c, 0x3d, - 0x0f, 0x96, 0xb8, 0xbe, 0x29, 0x0d, 0x27, 0x6b, 0xe6, 0xb2, 0xeb, 0xd9, 0x0e, 0xad, 0x62, 0x80, - 0x92, 0x63, 0x4d, 0xea, 0x28, 0x9a, 0x43, 0x4c, 0x8d, 0xf5, 0xa0, 0x8b, 0xe6, 0x78, 0x40, 0x09, - 0xd1, 0xfc, 0x71, 0x16, 0xc6, 0xe6, 0xca, 0x55, 0x3f, 0x63, 0xa7, 0xa7, 0x3b, 0x47, 0x34, 0x63, - 0x41, 0x78, 0xb6, 0x90, 0xdd, 0xc3, 0xd9, 0xc2, 0xc1, 0x3d, 0x2f, 0x10, 0x39, 0x99, 0xfb, 0x76, - 0x95, 0x93, 0xf9, 0x49, 0x18, 0x5d, 0x6b, 0xb4, 0xea, 0x7e, 0x50, 0x2a, 0x53, 0xa4, 0x81, 0xd7, - 0x86, 0xd7, 0x1a, 0x7e, 0xbe, 0xe9, 0x8a, 0x41, 0x0a, 0x30, 0xd4, 0x68, 0x9a, 0xd4, 0xf2, 0xea, - 0xa6, 0x75, 0xd7, 0x16, 0x21, 0xa0, 0x80, 0x83, 0x2a, 0xd6, 0x5d, 0x9b, 0x11, 0xb8, 0xf8, 0x3d, - 0x9c, 0x80, 0xc7, 0x7b, 0x02, 0x0e, 0x42, 0x82, 0xcb, 0x90, 0xc3, 0xd3, 0xfc, 0x86, 0xdd, 0xac, - 0x8b, 0x60, 0x72, 0x22, 0xdc, 0xd3, 0x98, 0x0f, 0xf7, 0x03, 0xca, 0x3d, 0x0d, 0xe3, 0xa6, 0xb5, - 0xec, 0xb0, 0x1d, 0xba, 0xde, 0xf6, 0x78, 0x22, 0x1d, 0x11, 0xfe, 0x69, 0x4c, 0x20, 0x4a, 0x6d, - 0x8f, 0xa7, 0xd2, 0xb9, 0x04, 0x39, 0xaa, 0x92, 0x62, 0x14, 0x11, 0x6d, 0x94, 0x46, 0x28, 0x8b, - 0x3f, 0x9d, 0x85, 0x91, 0x50, 0xdd, 0xa6, 0x0e, 0xe9, 0x48, 0xec, 0xe1, 0x56, 0xb6, 0x70, 0xc7, - 0xd4, 0xbf, 0x8b, 0xdb, 0xd4, 0xaf, 0x4d, 0x41, 0xbf, 0x48, 0xf9, 0x8f, 0x9a, 0x37, 0x74, 0xed, - 0xd4, 0x95, 0x75, 0x47, 0x6f, 0xb5, 0xa8, 0x23, 0x82, 0x9a, 0xf0, 0xc8, 0x43, 0x13, 0x6f, 0xb2, - 0xe2, 0xbf, 0xbd, 0x59, 0x78, 0x65, 0xd9, 0xf4, 0x56, 0xda, 0x4b, 0x57, 0x1a, 0xf6, 0xda, 0xd5, - 0x65, 0x47, 0xbf, 0x67, 0x7a, 0x78, 0x34, 0xac, 0x37, 0xaf, 0x7a, 0xb4, 0x89, 0xa1, 0x1b, 0xaf, - 0xea, 0x2d, 0xf3, 0x2a, 0x66, 0xba, 0xb9, 0x1a, 0x70, 0x5a, 0x74, 0x74, 0xd3, 0x73, 0xb7, 0x36, - 0x0b, 0xe3, 0xa2, 0x32, 0xf9, 0xe0, 0x4c, 0x80, 0x8a, 0xbf, 0x9a, 0x82, 0xf1, 0xb9, 0x72, 0xf5, - 0x46, 0x6d, 0x61, 0x5e, 0xab, 0x96, 0xe7, 0xa8, 0xeb, 0xea, 0xcb, 0x94, 0x3c, 0x05, 0xfd, 0x02, - 0x22, 0x4e, 0x99, 0xf0, 0x78, 0xef, 0x6d, 0xd7, 0xb6, 0x9c, 0x56, 0x43, 0xf3, 0x71, 0x22, 0x23, - 0x53, 0xba, 0x4b, 0x46, 0xa6, 0x22, 0x88, 0xdc, 0xe0, 0xe2, 0x80, 0x2c, 0x92, 0x2d, 0x9c, 0xff, - 0x4f, 0x16, 0xa0, 0xaf, 0xa5, 0x3b, 0xfa, 0x9a, 0xbb, 0xdd, 0x6d, 0xd9, 0xa3, 0x5b, 0x9b, 0x85, - 0x1c, 0x27, 0x4d, 0xbc, 0x1d, 0x13, 0x6c, 0x8a, 0xdf, 0x90, 0xc5, 0x6f, 0x0a, 0x42, 0x6a, 0x04, - 0x59, 0xe5, 0xf7, 0x7c, 0xd2, 0xf0, 0x12, 0x64, 0xdb, 0xbb, 0x1c, 0x1d, 0x6d, 0x31, 0x3a, 0xdc, - 0x3d, 0x8d, 0x0e, 0x51, 0xca, 0xd7, 0xca, 0xec, 0x6e, 0xb5, 0xd2, 0xdd, 0xc5, 0x1d, 0x3f, 0xa7, - 0x25, 0xf3, 0xd0, 0xbf, 0xc6, 0xbb, 0x5f, 0x0c, 0x82, 0x20, 0x50, 0x64, 0x4c, 0x3f, 0x26, 0xce, - 0x8a, 0xcc, 0xae, 0xe3, 0xa2, 0x84, 0xac, 0x59, 0x02, 0x14, 0xd1, 0xf2, 0xfe, 0x43, 0xd6, 0xf2, - 0xbf, 0x95, 0x85, 0xd3, 0xa1, 0x46, 0xcc, 0xdb, 0x9e, 0x79, 0xd7, 0xe4, 0xd7, 0x2b, 0x0f, 0x91, - 0x5a, 0x48, 0x1d, 0xdc, 0x7b, 0x10, 0x1d, 0x1c, 0xaa, 0x59, 0xdf, 0x2e, 0xd4, 0xec, 0x41, 0x52, - 0x8b, 0x9f, 0xcd, 0xc0, 0xd9, 0x50, 0x2d, 0x66, 0x31, 0x75, 0x5e, 0xad, 0x36, 0x55, 0xf3, 0x1c, - 0xaa, 0xaf, 0x1d, 0x59, 0xcd, 0xd0, 0x77, 0xa5, 0x19, 0xfa, 0x9e, 0x27, 0x0c, 0xb9, 0x27, 0xfb, - 0x0e, 0xb9, 0x27, 0xbf, 0x25, 0x0b, 0xe7, 0xc3, 0x9e, 0x14, 0xe7, 0xf7, 0x33, 0x8b, 0x8b, 0xd5, - 0xa3, 0x3e, 0xfb, 0xef, 0xbe, 0x33, 0xfd, 0x3b, 0xb7, 0xde, 0xc4, 0x3b, 0xb7, 0x70, 0x41, 0xee, - 0xeb, 0xb8, 0x20, 0x3f, 0x0d, 0x83, 0x8e, 0xbe, 0xce, 0x5d, 0x04, 0xe4, 0x30, 0x7d, 0x01, 0x50, - 0x1b, 0x70, 0xf4, 0x75, 0xee, 0x80, 0x70, 0x1e, 0xb2, 0x4b, 0xb6, 0xb1, 0x81, 0x76, 0xcc, 0x30, - 0xaf, 0x8d, 0xfd, 0xd6, 0xf0, 0xdf, 0x88, 0x8a, 0x0c, 0x1e, 0xb2, 0x8a, 0xfc, 0x4e, 0x06, 0x4e, - 0x4e, 0xd8, 0x6d, 0xcb, 0xb8, 0x49, 0x37, 0x5a, 0xba, 0xe9, 0x68, 0xb4, 0x61, 0xdf, 0x63, 0x9f, - 0xf0, 0x97, 0xff, 0x24, 0xf6, 0xe0, 0xf6, 0xad, 0xcf, 0xc0, 0xe0, 0xa2, 0xbd, 0x4a, 0x2d, 0x29, - 0x12, 0x36, 0x66, 0x33, 0xf6, 0x18, 0x90, 0x47, 0xa4, 0x0a, 0x09, 0xc8, 0xb3, 0xd0, 0x3f, 0x61, - 0xf3, 0xcb, 0x43, 0x29, 0x1d, 0xeb, 0x92, 0x2d, 0x2e, 0x0d, 0x25, 0xa1, 0x09, 0x32, 0xf2, 0x12, - 0x0c, 0x56, 0xdb, 0x4b, 0x4d, 0xb3, 0x71, 0x93, 0xfa, 0x9e, 0x2a, 0xf8, 0x6c, 0xb9, 0x85, 0xc0, - 0xfa, 0x2a, 0xdd, 0x88, 0x44, 0x35, 0xf2, 0x49, 0xc9, 0x07, 0x60, 0xc4, 0x97, 0x6f, 0xd9, 0x6e, - 0x5b, 0x1e, 0xaa, 0x91, 0xc8, 0x83, 0xe9, 0x08, 0x44, 0x1d, 0xaf, 0x49, 0xb4, 0x28, 0x21, 0x79, - 0x11, 0x86, 0x7d, 0xc0, 0x9c, 0x6d, 0x50, 0x39, 0xee, 0x63, 0x50, 0x70, 0xcd, 0x36, 0xa8, 0x16, - 0x21, 0x2b, 0xfe, 0x8c, 0xda, 0xbb, 0xb6, 0x17, 0xac, 0xef, 0xc7, 0xbd, 0xdb, 0xa1, 0x77, 0x17, - 0x60, 0xbc, 0xea, 0xd0, 0x7b, 0xa6, 0xdd, 0x76, 0xd5, 0x5e, 0x7e, 0x7c, 0x6b, 0xb3, 0x70, 0xa1, - 0x25, 0x90, 0xf5, 0xc4, 0xee, 0x8e, 0x97, 0x25, 0xaf, 0xc3, 0xf0, 0x3c, 0x5d, 0x0f, 0x79, 0xf5, - 0x87, 0xd1, 0xcd, 0x2c, 0xba, 0x9e, 0xcc, 0x26, 0x52, 0xa2, 0xf8, 0x33, 0x69, 0x78, 0x8f, 0xdc, - 0x8f, 0x37, 0x6c, 0xd3, 0xc2, 0x67, 0xf8, 0xb7, 0xa9, 0x13, 0x18, 0x6d, 0xd3, 0xba, 0xd9, 0xdc, - 0x67, 0x30, 0xb8, 0x77, 0x79, 0xd7, 0x16, 0xbf, 0x98, 0x86, 0xa1, 0x5a, 0xb9, 0x32, 0xe7, 0xaf, - 0x7f, 0xdb, 0x27, 0xcf, 0x9d, 0x80, 0x11, 0x1e, 0x57, 0xae, 0x64, 0x18, 0x0e, 0x75, 0x5d, 0xb1, - 0xaf, 0xc3, 0xce, 0x13, 0xb1, 0xe3, 0x74, 0x8e, 0x91, 0x2f, 0x53, 0x23, 0x45, 0xd8, 0x74, 0xc1, - 0x56, 0x45, 0xf4, 0x6d, 0x17, 0x3b, 0xbe, 0xd0, 0xcb, 0x41, 0x67, 0x50, 0x79, 0xba, 0x08, 0x48, - 0xc9, 0x33, 0xd0, 0x37, 0xc7, 0x57, 0xa5, 0x6c, 0xf8, 0x52, 0x83, 0xaf, 0x46, 0xf2, 0x4b, 0x0d, - 0x4e, 0x43, 0x2e, 0x42, 0xb6, 0x1a, 0xae, 0x70, 0x38, 0xa7, 0xb0, 0xb5, 0x4d, 0x7e, 0xc1, 0x50, - 0xe5, 0xef, 0x4b, 0xb2, 0x13, 0x6c, 0x6d, 0xea, 0xdb, 0x41, 0x68, 0x35, 0xb6, 0x5c, 0x25, 0x87, - 0x56, 0x63, 0x2c, 0xc8, 0x49, 0x3f, 0x5d, 0x04, 0x3f, 0x4c, 0x12, 0x29, 0x28, 0x36, 0x60, 0x98, - 0xcb, 0xd8, 0x6d, 0xd9, 0x96, 0x4b, 0xc9, 0xa3, 0x00, 0x5c, 0x51, 0x30, 0x59, 0x3d, 0xa6, 0xfe, - 0xd5, 0x24, 0x48, 0xd0, 0xa0, 0xf4, 0xbe, 0x1b, 0x54, 0xfc, 0xfb, 0x69, 0x18, 0x65, 0x75, 0x97, - 0xed, 0xb5, 0x35, 0xdb, 0x9a, 0x64, 0x2a, 0x3d, 0x09, 0xfd, 0xa2, 0xb7, 0x85, 0x66, 0x06, 0x16, - 0x83, 0xa4, 0x08, 0xfc, 0x25, 0x8d, 0xc3, 0x7f, 0xc8, 0x8a, 0xe3, 0x2b, 0x8a, 0xe2, 0x70, 0x92, - 0x0d, 0x1d, 0x4e, 0x24, 0x37, 0x13, 0x39, 0xe9, 0xb4, 0x44, 0x4d, 0x5e, 0x63, 0x93, 0x77, 0x2c, - 0x12, 0x21, 0xbe, 0x19, 0x89, 0x04, 0x20, 0x94, 0x87, 0xbf, 0x5c, 0x80, 0xcc, 0xe0, 0x39, 0x2c, - 0x4a, 0x53, 0x74, 0xdb, 0xc9, 0xe8, 0x47, 0x70, 0x1c, 0xd7, 0x7f, 0x47, 0xfc, 0x92, 0x93, 0x24, - 0xfb, 0x14, 0xc5, 0xcf, 0x67, 0x20, 0xc7, 0x8a, 0x30, 0xab, 0xde, 0xb4, 0x96, 0x31, 0xb0, 0xfb, - 0x21, 0xcc, 0x18, 0xaf, 0x42, 0x1f, 0xef, 0xa2, 0xd8, 0x6b, 0x8b, 0x48, 0xe7, 0xa9, 0xa5, 0x39, - 0x86, 0x8d, 0x0b, 0x1e, 0x43, 0x5d, 0x1e, 0x17, 0x3c, 0xd8, 0xba, 0x3c, 0x2e, 0x38, 0x0d, 0xb9, - 0x0c, 0xbd, 0x7c, 0xb1, 0xed, 0x0d, 0x63, 0x65, 0xe3, 0x1a, 0x2b, 0xe7, 0x34, 0xe1, 0xab, 0xec, - 0xcb, 0xa8, 0xa9, 0x8e, 0x57, 0xb1, 0x0c, 0x7a, 0x5f, 0x84, 0xf8, 0xc6, 0x4e, 0x76, 0x19, 0xb4, - 0x6e, 0x32, 0xb0, 0x9c, 0x33, 0x39, 0x24, 0x66, 0xf3, 0x84, 0xdf, 0x65, 0xf2, 0xd2, 0x8e, 0xf3, - 0x44, 0xd0, 0xc9, 0x6a, 0xb5, 0xd1, 0x22, 0xc5, 0xad, 0x34, 0x8c, 0x8b, 0xfe, 0x44, 0xe8, 0xd1, - 0xec, 0x9d, 0x97, 0x01, 0x16, 0x85, 0x55, 0x1a, 0xc4, 0xd1, 0x46, 0x21, 0xfa, 0xb6, 0x6a, 0x34, - 0xc7, 0xbd, 0x44, 0x8c, 0x39, 0xab, 0x45, 0x02, 0x86, 0xca, 0xa4, 0x9c, 0xd9, 0x9d, 0x0a, 0xa8, - 0x52, 0x34, 0x24, 0x26, 0x57, 0xa1, 0x7f, 0xd2, 0x74, 0x5b, 0x4d, 0x3d, 0xe2, 0xcf, 0x6d, 0x70, - 0x90, 0x3c, 0xa2, 0x05, 0x55, 0xf1, 0x3b, 0x32, 0x70, 0xae, 0xcc, 0x4f, 0xb6, 0xab, 0x1a, 0x75, - 0x3d, 0xc7, 0xe4, 0x8f, 0xe6, 0x8e, 0xef, 0xb4, 0x62, 0xc9, 0xf9, 0x76, 0xe3, 0x13, 0x33, 0x0f, - 0x27, 0x93, 0xa4, 0x2a, 0xc2, 0x9f, 0x63, 0xf4, 0x55, 0xff, 0x8a, 0xa1, 0x55, 0x77, 0x24, 0x0a, - 0x2d, 0xb1, 0x5c, 0xf1, 0x73, 0x69, 0x38, 0x51, 0x6a, 0xb5, 0x4a, 0x6d, 0x6f, 0x45, 0x7d, 0x43, - 0xb3, 0xe7, 0x9d, 0xab, 0xec, 0xbe, 0x9c, 0xde, 0xa3, 0xe7, 0xba, 0xbf, 0xfb, 0xcd, 0xec, 0x72, - 0xf7, 0x3b, 0x03, 0xd0, 0xd8, 0xc7, 0x3b, 0x88, 0xb0, 0x6c, 0x5c, 0x32, 0xa1, 0xe6, 0x1e, 0x4b, - 0x26, 0x2a, 0x99, 0xf0, 0x32, 0xf6, 0x21, 0x97, 0xcc, 0x9f, 0xaa, 0x92, 0xc1, 0xfd, 0xc3, 0xc6, - 0xbe, 0x24, 0xf3, 0x0a, 0x8c, 0xe9, 0xad, 0x16, 0xbf, 0x98, 0x6b, 0x20, 0x53, 0x39, 0x7b, 0x98, - 0x82, 0xd2, 0x46, 0x74, 0xb9, 0xfa, 0x3d, 0x8b, 0x44, 0x3a, 0x44, 0xca, 0xee, 0xe7, 0x10, 0xa9, - 0x77, 0x8f, 0x27, 0x82, 0xbb, 0x38, 0xdb, 0x2d, 0x7e, 0x75, 0x1a, 0x72, 0xb7, 0x2d, 0xea, 0x1d, - 0xd8, 0xfc, 0x15, 0x36, 0x23, 0xbd, 0x8b, 0x83, 0xc9, 0xc3, 0xd7, 0xbe, 0xa8, 0x20, 0x0e, 0x60, - 0xba, 0x7a, 0x77, 0x08, 0xe2, 0x00, 0x66, 0xa7, 0xa3, 0x2a, 0x88, 0x7f, 0x91, 0x86, 0x53, 0xfe, - 0xe3, 0x34, 0x91, 0x01, 0xe1, 0xf8, 0x8d, 0xec, 0xbe, 0x82, 0x35, 0x26, 0x48, 0xf4, 0x38, 0xa4, - 0xe8, 0xbe, 0x42, 0x8a, 0x26, 0x48, 0xf4, 0xf8, 0x2d, 0xee, 0xbe, 0x74, 0xf4, 0xdb, 0x32, 0x70, - 0xb2, 0x62, 0x09, 0x57, 0xa1, 0x39, 0xdb, 0x38, 0x90, 0xa0, 0x66, 0x0f, 0x73, 0x20, 0x02, 0x0d, - 0xfa, 0xab, 0xfa, 0x06, 0x53, 0xd0, 0xed, 0x4e, 0xf5, 0x0a, 0x6c, 0x57, 0xdc, 0xe2, 0xb4, 0x89, - 0xe7, 0x68, 0x3e, 0xa3, 0x84, 0x4e, 0x3a, 0x7e, 0x9f, 0xff, 0xc0, 0x75, 0xd2, 0x2f, 0xa7, 0xd5, - 0x4e, 0x3a, 0x9e, 0x9a, 0xf6, 0xbd, 0x7c, 0x06, 0x02, 0xad, 0xd1, 0x86, 0x43, 0x8f, 0x03, 0xdb, - 0x1c, 0xb8, 0x44, 0x8f, 0x27, 0x92, 0x83, 0x96, 0xe8, 0xf1, 0xa8, 0xdf, 0x97, 0x44, 0xbf, 0x3d, - 0x23, 0x49, 0xf4, 0xc0, 0xbc, 0x3e, 0x8e, 0x17, 0xbb, 0x83, 0x5d, 0xec, 0x12, 0x7a, 0xe9, 0x78, - 0x26, 0x79, 0xe0, 0x7a, 0x29, 0x32, 0x3b, 0x1d, 0x98, 0x2f, 0xcc, 0x43, 0xdc, 0x4b, 0x4f, 0x37, - 0x78, 0x3c, 0xc9, 0x9b, 0xa6, 0x65, 0x90, 0xb3, 0x70, 0xea, 0x56, 0x6d, 0x4a, 0xab, 0xdf, 0xac, - 0xcc, 0x4f, 0xd6, 0x6f, 0xcd, 0xd7, 0xaa, 0x53, 0xe5, 0xca, 0x74, 0x65, 0x6a, 0x32, 0xd7, 0x43, - 0x4e, 0xc0, 0x58, 0x88, 0x9a, 0xb9, 0x35, 0x57, 0x9a, 0xcf, 0xa5, 0xc8, 0x38, 0x8c, 0x84, 0xc0, - 0x89, 0x85, 0xc5, 0x5c, 0x9a, 0x9c, 0x84, 0x5c, 0x08, 0xaa, 0xbd, 0x55, 0x5b, 0x9c, 0x9a, 0xcb, - 0x65, 0x9e, 0xfe, 0x7c, 0x0a, 0x80, 0xd5, 0xb2, 0xe0, 0x98, 0xcb, 0xa6, 0x45, 0x1e, 0x81, 0x33, - 0x48, 0xb4, 0xa0, 0x55, 0xae, 0x57, 0xe6, 0x95, 0x9a, 0x4e, 0xc1, 0xb8, 0x8c, 0x9c, 0x5d, 0x28, - 0x97, 0x66, 0x73, 0xa9, 0xa0, 0x01, 0x02, 0x5c, 0xab, 0x2d, 0x48, 0xb5, 0x09, 0xe0, 0xc2, 0xcd, - 0xc5, 0x52, 0x2e, 0xa3, 0x42, 0x6b, 0xe5, 0xca, 0x5c, 0x2e, 0x4b, 0xce, 0xc0, 0x09, 0x19, 0x3a, - 0x35, 0xbf, 0xa8, 0x95, 0x2a, 0x93, 0xb9, 0xde, 0xa7, 0xdf, 0x03, 0x43, 0x78, 0x17, 0x2a, 0x62, - 0x52, 0x0c, 0xc3, 0xc0, 0xc2, 0x44, 0x6d, 0x4a, 0xbb, 0x8d, 0xad, 0x01, 0xe8, 0x9b, 0x9c, 0x9a, - 0x67, 0x2d, 0x4b, 0x3d, 0xed, 0xc0, 0xd0, 0xdc, 0x74, 0x69, 0xba, 0x69, 0xaf, 0xe3, 0xbd, 0xf9, - 0x05, 0x38, 0x3b, 0x37, 0x5d, 0xaa, 0x4f, 0xcf, 0x2e, 0xdc, 0xa9, 0x2f, 0xbe, 0x55, 0x9d, 0x52, - 0xbe, 0xe3, 0x32, 0x3c, 0x15, 0x45, 0x57, 0xa7, 0xb4, 0x7a, 0x6d, 0xaa, 0x56, 0xab, 0x2c, 0xcc, - 0xd7, 0xcb, 0x53, 0xda, 0x62, 0x65, 0xba, 0x52, 0x2e, 0x2d, 0x4e, 0xe5, 0x52, 0x4c, 0xee, 0x51, - 0xd2, 0xca, 0x7c, 0x7d, 0xa2, 0x34, 0x3f, 0x99, 0x4b, 0x3f, 0xfd, 0x1f, 0x52, 0x00, 0xb5, 0xe9, - 0xc5, 0xaa, 0x68, 0xdc, 0x10, 0xf4, 0x57, 0xe6, 0x6f, 0x97, 0x66, 0x2b, 0xac, 0x86, 0x01, 0xc8, - 0x2e, 0x54, 0xa7, 0x58, 0x47, 0x0c, 0x42, 0x6f, 0x79, 0x76, 0xa1, 0x36, 0x95, 0x4b, 0x33, 0xa0, - 0x36, 0x55, 0x9a, 0xcc, 0x65, 0x18, 0xf0, 0x8e, 0x56, 0x59, 0x9c, 0xca, 0x65, 0xd9, 0x9f, 0xb3, - 0xb5, 0xc5, 0xd2, 0x62, 0xae, 0x97, 0xfd, 0x39, 0x8d, 0x7f, 0xf6, 0x31, 0x66, 0xb5, 0xa9, 0x45, - 0xfc, 0xd1, 0xcf, 0x3e, 0x7b, 0xda, 0xff, 0x35, 0xc0, 0x50, 0x8c, 0xf5, 0x64, 0x45, 0xcb, 0x0d, - 0xb2, 0x1f, 0x8c, 0x25, 0xfb, 0x01, 0x4c, 0x20, 0xda, 0xd4, 0xdc, 0xc2, 0xed, 0xa9, 0xdc, 0x10, - 0xe3, 0x35, 0x77, 0x93, 0x81, 0x87, 0xd9, 0x9f, 0xda, 0x1c, 0xfb, 0x73, 0x84, 0x71, 0xd2, 0xa6, - 0x4a, 0xb3, 0xd5, 0xd2, 0xe2, 0x4c, 0x6e, 0x94, 0xb5, 0x07, 0x79, 0x8e, 0xf1, 0x92, 0xf3, 0xa5, - 0xb9, 0xa9, 0x5c, 0x4e, 0xd0, 0x4c, 0xce, 0x56, 0xe6, 0x6f, 0xe6, 0xc6, 0xb1, 0x21, 0x6f, 0xcd, - 0xe1, 0x0f, 0xc2, 0x0a, 0xe0, 0x5f, 0x27, 0x9e, 0xfe, 0x18, 0xf4, 0x2d, 0xd4, 0x50, 0xd4, 0x67, - 0xe0, 0xc4, 0x42, 0x2d, 0x49, 0xc8, 0xe3, 0x30, 0xe2, 0x23, 0x66, 0x2b, 0xf3, 0xb7, 0xde, 0xe4, - 0x4a, 0xe9, 0x83, 0xe6, 0x4a, 0xe5, 0x85, 0x5a, 0x2e, 0xcd, 0x74, 0xc7, 0x07, 0xdd, 0xa9, 0xcc, - 0x4f, 0x2e, 0xdc, 0xa9, 0xe5, 0x32, 0x4f, 0xdf, 0x83, 0xe1, 0x49, 0x7a, 0xcf, 0x6c, 0x50, 0xa1, - 0x94, 0x17, 0xe0, 0xec, 0xe4, 0xd4, 0xed, 0x4a, 0x79, 0xaa, 0xa3, 0x5a, 0x46, 0xd1, 0xa5, 0x6a, - 0x25, 0x97, 0x22, 0xa7, 0x81, 0x44, 0xc1, 0x37, 0x4a, 0x73, 0xd3, 0xb9, 0x34, 0xc9, 0xc3, 0xc9, - 0x28, 0xbc, 0x32, 0xbf, 0x78, 0x6b, 0x7e, 0x2a, 0x97, 0x79, 0xfa, 0xdb, 0x53, 0x70, 0x6a, 0xaa, - 0xa9, 0xbb, 0x9e, 0xd9, 0x70, 0xa9, 0xee, 0x34, 0x56, 0xca, 0xba, 0x47, 0x97, 0x6d, 0x67, 0x83, - 0x14, 0xe1, 0xd1, 0xa9, 0xd9, 0x52, 0x6d, 0xb1, 0x52, 0xae, 0x4d, 0x95, 0xb4, 0xf2, 0x4c, 0x9d, - 0xa9, 0xc7, 0xf5, 0x05, 0xed, 0xad, 0xfa, 0xf5, 0xa9, 0xf9, 0x29, 0xad, 0x34, 0x9b, 0xeb, 0x21, - 0x4f, 0x40, 0xa1, 0x03, 0x4d, 0x6d, 0xaa, 0x7c, 0x4b, 0xab, 0x2c, 0xbe, 0x95, 0x4b, 0x91, 0xc7, - 0xe1, 0x42, 0x47, 0x22, 0xf6, 0x3b, 0x97, 0x26, 0x8f, 0xc2, 0xb9, 0x4e, 0x24, 0x6f, 0xcc, 0xe6, - 0x32, 0x4f, 0x7f, 0x53, 0x0a, 0xc8, 0x42, 0x8b, 0x5a, 0xb5, 0x68, 0x13, 0x1f, 0x83, 0xf3, 0x4c, - 0x2f, 0xea, 0x9d, 0x1b, 0xf8, 0x38, 0x5c, 0x48, 0xa4, 0x90, 0x9a, 0x57, 0x80, 0x47, 0x3a, 0x90, - 0x88, 0xc6, 0x9d, 0x87, 0x7c, 0x32, 0x01, 0x36, 0xed, 0x07, 0x53, 0x70, 0x2a, 0x31, 0x35, 0x2e, - 0xb9, 0x04, 0x4f, 0x96, 0x26, 0xe7, 0x58, 0xdf, 0x94, 0x17, 0x2b, 0x0b, 0xf3, 0xb5, 0x3a, 0x1b, - 0x55, 0x4c, 0xfb, 0x6e, 0xd5, 0x94, 0xde, 0xbc, 0x08, 0xc5, 0x2e, 0x94, 0xe5, 0x99, 0xd2, 0xfc, - 0x75, 0x36, 0xe4, 0xc9, 0x93, 0xf0, 0x58, 0x47, 0xba, 0xa9, 0xf9, 0xd2, 0xc4, 0xec, 0xd4, 0x64, - 0x2e, 0x4d, 0x9e, 0x82, 0xc7, 0x3b, 0x52, 0x4d, 0x56, 0x6a, 0x9c, 0x2c, 0xf3, 0xb4, 0x1e, 0x09, - 0xd8, 0xc8, 0xbe, 0xb2, 0xbc, 0x30, 0xbf, 0x58, 0x2a, 0x2f, 0x26, 0x69, 0xf6, 0x59, 0x38, 0x15, - 0xc1, 0x4e, 0xdc, 0xaa, 0x55, 0xe6, 0xa7, 0x6a, 0x35, 0x3e, 0x5d, 0x44, 0x50, 0x81, 0x68, 0xd3, - 0x13, 0x93, 0x5f, 0xf8, 0x83, 0x47, 0x7b, 0xbe, 0xf0, 0xc5, 0x47, 0x53, 0xbf, 0xf2, 0xc5, 0x47, - 0x53, 0xbf, 0xff, 0xc5, 0x47, 0x53, 0x1f, 0xb9, 0xb6, 0x9b, 0xd7, 0xbd, 0x7c, 0xc1, 0x58, 0xea, - 0xc3, 0x05, 0xfa, 0xf9, 0xff, 0x2f, 0x00, 0x00, 0xff, 0xff, 0x9d, 0x6f, 0xea, 0xf3, 0x84, 0x03, - 0x02, 0x00, + // 22378 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0xfd, 0x7b, 0x7c, 0x24, 0x59, + 0x56, 0x18, 0x08, 0x2b, 0x1f, 0x4a, 0x49, 0x47, 0xaf, 0xd4, 0xad, 0x57, 0x56, 0x75, 0x55, 0x67, + 0x77, 0x74, 0x77, 0x4d, 0x55, 0x4f, 0x4f, 0x55, 0x77, 0xf5, 0x63, 0xa6, 0xa7, 0x7b, 0xa6, 0x3b, + 0x95, 0x29, 0x95, 0xb2, 0x4a, 0x8f, 0xec, 0x48, 0x55, 0x55, 0xf7, 0xbc, 0x92, 0x50, 0xc6, 0x2d, + 0x29, 0x5a, 0xa9, 0x88, 0x9c, 0x88, 0xc8, 0x52, 0xa9, 0xfd, 0x7d, 0xbb, 0xc6, 0x06, 0x0c, 0xf6, + 0x00, 0xb3, 0x33, 0xc6, 0x83, 0x07, 0xdb, 0xcb, 0xcb, 0xbb, 0x18, 0x30, 0x2c, 0x5e, 0x16, 0xcc, + 0xcb, 0x80, 0x31, 0xcb, 0xf0, 0x34, 0x0f, 0xc3, 0xb2, 0x80, 0x05, 0x8c, 0x61, 0xd9, 0xd5, 0xb2, + 0x5e, 0x16, 0xb3, 0x06, 0x7b, 0xd7, 0xfe, 0xed, 0xef, 0x9e, 0x7b, 0x23, 0xe2, 0xc6, 0x23, 0x53, + 0xcf, 0x41, 0xa5, 0x2e, 0xfd, 0x53, 0xa5, 0x3c, 0xe7, 0xdc, 0x73, 0x6f, 0x9c, 0x7b, 0xee, 0xbd, + 0xe7, 0x3e, 0xce, 0x39, 0x70, 0xd9, 0xa5, 0x2d, 0xda, 0xb6, 0x6c, 0xf7, 0x6a, 0x8b, 0x2e, 0x6b, + 0xcd, 0x8d, 0xab, 0xee, 0x46, 0x9b, 0x3a, 0x57, 0xe9, 0x3d, 0x6a, 0xba, 0xde, 0x7f, 0x57, 0xda, + 0xb6, 0xe5, 0x5a, 0x24, 0xc7, 0x7f, 0x9d, 0x3b, 0xb9, 0x6c, 0x2d, 0x5b, 0x08, 0xba, 0xca, 0xfe, + 0xe2, 0xd8, 0x73, 0xe7, 0x97, 0x2d, 0x6b, 0xb9, 0x45, 0xaf, 0xe2, 0xaf, 0xa5, 0xce, 0xdd, 0xab, + 0x8e, 0x6b, 0x77, 0x9a, 0xae, 0xc0, 0x16, 0xa3, 0x58, 0xd7, 0x58, 0xa3, 0x8e, 0xab, 0xad, 0xb5, + 0x05, 0xc1, 0xa3, 0x51, 0x82, 0x75, 0x5b, 0x6b, 0xb7, 0xa9, 0x2d, 0x2a, 0x3f, 0xf7, 0x1e, 0xbf, + 0x9d, 0x5a, 0xb3, 0x49, 0x1d, 0xa7, 0x65, 0x38, 0xee, 0xd5, 0x7b, 0xcf, 0x49, 0xbf, 0x04, 0xe1, + 0xe3, 0xc9, 0x1f, 0x84, 0xff, 0x0a, 0x92, 0xf7, 0x25, 0x93, 0x78, 0x35, 0x46, 0xaa, 0x56, 0x3e, + 0x93, 0x86, 0xc1, 0x39, 0xea, 0x6a, 0xba, 0xe6, 0x6a, 0xe4, 0x3c, 0xf4, 0x57, 0x4d, 0x9d, 0xde, + 0x2f, 0xa4, 0x1e, 0x4b, 0x5d, 0xca, 0x4c, 0xe6, 0xb6, 0x36, 0x8b, 0x69, 0x6a, 0xa8, 0x1c, 0x48, + 0x2e, 0x40, 0x76, 0x71, 0xa3, 0x4d, 0x0b, 0xe9, 0xc7, 0x52, 0x97, 0x86, 0x26, 0x87, 0xb6, 0x36, + 0x8b, 0xfd, 0x28, 0x34, 0x15, 0xc1, 0xe4, 0x71, 0x48, 0x57, 0x2b, 0x85, 0x0c, 0x22, 0x27, 0xb6, + 0x36, 0x8b, 0xa3, 0x1d, 0x43, 0x7f, 0xc6, 0x5a, 0x33, 0x5c, 0xba, 0xd6, 0x76, 0x37, 0xd4, 0x74, + 0xb5, 0x42, 0x2e, 0x42, 0xb6, 0x6c, 0xe9, 0xb4, 0x90, 0x45, 0x22, 0xb2, 0xb5, 0x59, 0x1c, 0x6b, + 0x5a, 0x3a, 0x95, 0xa8, 0x10, 0x4f, 0x5e, 0x87, 0xec, 0xa2, 0xb1, 0x46, 0x0b, 0xfd, 0x8f, 0xa5, + 0x2e, 0x0d, 0x5f, 0x3b, 0x77, 0x85, 0x8b, 0xef, 0x8a, 0x27, 0xbe, 0x2b, 0x8b, 0x9e, 0x7c, 0x27, + 0xf3, 0x5f, 0xd8, 0x2c, 0xf6, 0x6d, 0x6d, 0x16, 0xb3, 0x4c, 0xe4, 0x9f, 0xfe, 0xdd, 0x62, 0x4a, + 0xc5, 0x92, 0xe4, 0x55, 0x18, 0x2e, 0xb7, 0x3a, 0x8e, 0x4b, 0xed, 0x79, 0x6d, 0x8d, 0x16, 0x72, + 0x58, 0xe1, 0xb9, 0xad, 0xcd, 0xe2, 0xe9, 0x26, 0x07, 0x37, 0x4c, 0x6d, 0x4d, 0xae, 0x58, 0x26, + 0x57, 0xfe, 0x69, 0x0a, 0xc6, 0xeb, 0xd4, 0x71, 0x0c, 0xcb, 0xf4, 0x65, 0xf3, 0x14, 0x0c, 0x09, + 0x50, 0xb5, 0x82, 0xf2, 0x19, 0x9a, 0x1c, 0xd8, 0xda, 0x2c, 0x66, 0x1c, 0x43, 0x57, 0x03, 0x0c, + 0x79, 0x16, 0x06, 0xee, 0x18, 0xee, 0xca, 0xdc, 0x74, 0x49, 0xc8, 0xe9, 0xf4, 0xd6, 0x66, 0x91, + 0xac, 0x1b, 0xee, 0x4a, 0x63, 0xed, 0xae, 0x26, 0x55, 0xe8, 0x91, 0x91, 0x59, 0xc8, 0xd7, 0x6c, + 0xe3, 0x9e, 0xe6, 0xd2, 0x9b, 0x74, 0xa3, 0x66, 0xb5, 0x8c, 0xe6, 0x86, 0x90, 0xe2, 0x63, 0x5b, + 0x9b, 0xc5, 0xf3, 0x6d, 0x8e, 0x6b, 0xac, 0xd2, 0x8d, 0x46, 0x1b, 0xb1, 0x12, 0x93, 0x58, 0x49, + 0xe5, 0x5b, 0x87, 0x60, 0xe4, 0x96, 0x43, 0x6d, 0xbf, 0xdd, 0x17, 0x21, 0xcb, 0x7e, 0x8b, 0x26, + 0xa3, 0xcc, 0x3b, 0x0e, 0xb5, 0x65, 0x99, 0x33, 0x3c, 0xb9, 0x0c, 0xfd, 0xb3, 0xd6, 0xb2, 0x61, + 0x8a, 0x66, 0x9f, 0xd8, 0xda, 0x2c, 0x8e, 0xb7, 0x18, 0x40, 0xa2, 0xe4, 0x14, 0xe4, 0xc3, 0x30, + 0x52, 0x5d, 0x63, 0x3a, 0x64, 0x99, 0x9a, 0x6b, 0xd9, 0xa2, 0xb5, 0x28, 0x5d, 0x43, 0x82, 0x4b, + 0x05, 0x43, 0xf4, 0xe4, 0x83, 0x00, 0xa5, 0x3b, 0x75, 0xd5, 0x6a, 0xd1, 0x92, 0x3a, 0x2f, 0x94, + 0x01, 0x4b, 0x6b, 0xeb, 0x4e, 0xc3, 0xb6, 0x5a, 0xb4, 0xa1, 0xd9, 0x72, 0xb5, 0x12, 0x35, 0x99, + 0x82, 0xb1, 0x12, 0x8e, 0x0a, 0x95, 0x7e, 0xb2, 0x43, 0x1d, 0xd7, 0x29, 0xf4, 0x3f, 0x96, 0xb9, + 0x34, 0x34, 0x79, 0x61, 0x6b, 0xb3, 0x78, 0x96, 0x8f, 0x97, 0x86, 0x2d, 0x50, 0x12, 0x8b, 0x48, + 0x21, 0x32, 0x09, 0xa3, 0xa5, 0x77, 0x3a, 0x36, 0xad, 0xea, 0xd4, 0x74, 0x0d, 0x77, 0x43, 0x68, + 0xc8, 0xf9, 0xad, 0xcd, 0x62, 0x41, 0x63, 0x88, 0x86, 0x21, 0x30, 0x12, 0x93, 0x70, 0x11, 0xb2, + 0x00, 0x13, 0xd7, 0xcb, 0xb5, 0x3a, 0xb5, 0xef, 0x19, 0x4d, 0x5a, 0x6a, 0x36, 0xad, 0x8e, 0xe9, + 0x16, 0x06, 0x90, 0xcf, 0xe3, 0x5b, 0x9b, 0xc5, 0x0b, 0xcb, 0xcd, 0x76, 0xc3, 0xe1, 0xd8, 0x86, + 0xc6, 0xd1, 0x12, 0xb3, 0x78, 0x59, 0xf2, 0x11, 0x18, 0x5d, 0xb4, 0x99, 0x16, 0xea, 0x15, 0xca, + 0xe0, 0x85, 0x41, 0xd4, 0xff, 0xd3, 0x57, 0xc4, 0x4c, 0xc5, 0xa1, 0x5e, 0xcf, 0xf2, 0xc6, 0xba, + 0xbc, 0x40, 0x43, 0x47, 0x9c, 0xdc, 0xd8, 0x10, 0x2b, 0x42, 0xa1, 0xc0, 0x3e, 0xde, 0xb0, 0xa9, + 0x1e, 0xd3, 0xb6, 0x21, 0x6c, 0xf3, 0xe5, 0xad, 0xcd, 0xe2, 0x53, 0xb6, 0xa0, 0x69, 0xf4, 0x54, + 0xbb, 0xae, 0xac, 0xc8, 0x14, 0x0c, 0x32, 0x6d, 0xba, 0x69, 0x98, 0x7a, 0x01, 0x1e, 0x4b, 0x5d, + 0x1a, 0xbb, 0x96, 0xf7, 0x5a, 0xef, 0xc1, 0x27, 0xcf, 0x6c, 0x6d, 0x16, 0x4f, 0x30, 0x1d, 0x6c, + 0xac, 0x1a, 0xa6, 0x3c, 0x45, 0xf8, 0x45, 0xd9, 0x28, 0x9a, 0xb4, 0x5c, 0x1c, 0xba, 0xc3, 0xc1, + 0x28, 0x5a, 0xb2, 0xdc, 0xe8, 0xb0, 0xf5, 0xc8, 0x48, 0x19, 0x46, 0x27, 0x2d, 0xb7, 0x6a, 0x3a, + 0xae, 0x66, 0x36, 0x69, 0xb5, 0x52, 0x18, 0xc1, 0x72, 0xa8, 0x16, 0xac, 0x9c, 0x21, 0x30, 0x8d, + 0xd0, 0xa4, 0x14, 0x2e, 0x43, 0xe6, 0x00, 0x58, 0x13, 0x16, 0x6c, 0x83, 0x0d, 0x84, 0x51, 0x6c, + 0x3f, 0x91, 0xdb, 0xcf, 0x31, 0x93, 0x67, 0xb7, 0x36, 0x8b, 0xa7, 0xf0, 0x0b, 0x2c, 0x04, 0xc8, + 0xba, 0x1a, 0x90, 0x91, 0x97, 0x60, 0x88, 0xfd, 0x62, 0xaa, 0xeb, 0x14, 0xc6, 0x50, 0x4d, 0x0b, + 0x5b, 0x9b, 0xc5, 0x93, 0x58, 0x92, 0xe9, 0xb9, 0xac, 0xa1, 0x01, 0x29, 0xf9, 0x6c, 0x8a, 0xb7, + 0x63, 0xd1, 0xd6, 0x0c, 0xd7, 0x29, 0x8c, 0xa3, 0x16, 0x9c, 0xba, 0xe2, 0xcf, 0xdc, 0xb3, 0xda, + 0x12, 0x6d, 0xdd, 0xd6, 0x5a, 0x1d, 0xea, 0x4c, 0x7e, 0x8c, 0x4d, 0x80, 0xbf, 0xb5, 0x59, 0x7c, + 0x65, 0xd9, 0x70, 0x57, 0x3a, 0x4b, 0x57, 0x9a, 0xd6, 0xda, 0xd5, 0x65, 0x5b, 0xbb, 0x67, 0xb8, + 0x9a, 0x6b, 0x58, 0xa6, 0xd6, 0xba, 0x1a, 0xac, 0x2d, 0x6d, 0x23, 0xb2, 0x18, 0x5c, 0xe1, 0x35, + 0xf8, 0x5f, 0xe3, 0xe2, 0xcf, 0xe8, 0xd7, 0x70, 0x22, 0x52, 0x85, 0x71, 0xf6, 0x4b, 0x9e, 0x56, + 0xf3, 0x28, 0xe3, 0xe2, 0xd6, 0x66, 0xf1, 0x11, 0x2c, 0xdf, 0x65, 0x6e, 0x8d, 0x96, 0x53, 0xfe, + 0x3c, 0x0b, 0x63, 0x4c, 0xf7, 0xa5, 0x69, 0xaa, 0xc4, 0x66, 0x5c, 0x06, 0x61, 0x04, 0x4e, 0x5b, + 0x6b, 0x52, 0x31, 0x63, 0xa1, 0xb6, 0x98, 0x1e, 0x50, 0xe6, 0x1a, 0xa1, 0x27, 0x97, 0x61, 0x90, + 0x83, 0xaa, 0x15, 0x31, 0x89, 0x8d, 0x6e, 0x6d, 0x16, 0x87, 0x1c, 0x84, 0x35, 0x0c, 0x5d, 0xf5, + 0xd1, 0x6c, 0x16, 0xe1, 0x7f, 0xcf, 0x58, 0x8e, 0xcb, 0x98, 0x8b, 0x39, 0x0c, 0xd5, 0x45, 0x14, + 0x58, 0x11, 0x28, 0x79, 0x16, 0x09, 0x17, 0x22, 0x2f, 0x03, 0x70, 0x48, 0x49, 0xd7, 0x6d, 0x31, + 0x91, 0xa1, 0x6e, 0x08, 0x16, 0x9a, 0xae, 0xcb, 0xb3, 0xa0, 0x44, 0x4c, 0xd6, 0x60, 0x84, 0xff, + 0xc2, 0xce, 0xe4, 0xb3, 0xd8, 0xf0, 0xb5, 0x4b, 0x9e, 0xb2, 0x85, 0xa5, 0x73, 0x45, 0x26, 0x9d, + 0x32, 0x5d, 0x7b, 0x63, 0xb2, 0x28, 0x16, 0xbe, 0x33, 0xa2, 0xaa, 0x16, 0xe2, 0xe4, 0x29, 0x57, + 0x2e, 0xc3, 0xd6, 0xc3, 0x69, 0xcb, 0x5e, 0xd7, 0x6c, 0x9d, 0xea, 0x93, 0x1b, 0xf2, 0x7a, 0x78, + 0xd7, 0x03, 0x37, 0x96, 0xe4, 0x21, 0x2e, 0x93, 0xb3, 0xc1, 0xc5, 0xb9, 0xd5, 0x3b, 0x4b, 0x38, + 0xb4, 0x07, 0x62, 0xd2, 0x72, 0x3a, 0x4b, 0xd1, 0xe1, 0x1c, 0x2e, 0xc3, 0xa6, 0x5c, 0x0e, 0xb8, + 0x4d, 0x6d, 0xb6, 0x58, 0xe2, 0xec, 0x26, 0xa6, 0x5c, 0xc1, 0xe4, 0x1e, 0xc7, 0xc4, 0x79, 0x88, + 0x22, 0xe7, 0x5e, 0x83, 0x89, 0x98, 0x28, 0x48, 0x1e, 0x32, 0xab, 0x74, 0x83, 0xab, 0x8b, 0xca, + 0xfe, 0x24, 0x27, 0xa1, 0xff, 0x1e, 0x1b, 0x1e, 0x5c, 0x0d, 0x54, 0xfe, 0xe3, 0x83, 0xe9, 0x0f, + 0xa4, 0xd8, 0xca, 0x4e, 0xca, 0x96, 0x69, 0xd2, 0xa6, 0x2b, 0x2f, 0xee, 0x2f, 0xc1, 0xd0, 0xac, + 0xd5, 0xd4, 0x5a, 0xd8, 0x8f, 0x5c, 0xef, 0x70, 0xa4, 0xb2, 0x0e, 0xbc, 0xd2, 0x62, 0x18, 0x79, + 0xa4, 0xfa, 0xa4, 0x4c, 0x01, 0x54, 0xba, 0x66, 0xb9, 0x14, 0x0b, 0xa6, 0x03, 0x05, 0xc0, 0x82, + 0x36, 0xa2, 0x64, 0x05, 0x08, 0x88, 0xc9, 0x55, 0x18, 0xac, 0x31, 0x7b, 0xa6, 0x69, 0xb5, 0x84, + 0xf2, 0xe1, 0x92, 0x8b, 0x36, 0x8e, 0x3c, 0x27, 0x7a, 0x44, 0xca, 0x0c, 0x8c, 0x95, 0x5b, 0x06, + 0x35, 0x5d, 0xb9, 0xd5, 0x6c, 0x64, 0x95, 0x96, 0xa9, 0xe9, 0xca, 0xad, 0xc6, 0xb1, 0xa8, 0x31, + 0x68, 0x74, 0x7e, 0x41, 0x52, 0xe5, 0x97, 0x32, 0x70, 0xf6, 0x66, 0x67, 0x89, 0xda, 0x26, 0x75, + 0xa9, 0x23, 0x06, 0xa6, 0xcf, 0x75, 0x1e, 0x26, 0x62, 0x48, 0xc1, 0x1d, 0x0d, 0x92, 0x55, 0x1f, + 0xe9, 0x8d, 0x77, 0x79, 0x55, 0x8b, 0x15, 0x25, 0x33, 0x30, 0x1e, 0x00, 0x59, 0x23, 0x9c, 0x42, + 0x1a, 0xe7, 0xc2, 0x47, 0xb7, 0x36, 0x8b, 0xe7, 0x24, 0x6e, 0xac, 0xd9, 0xb2, 0x06, 0x47, 0x8b, + 0x91, 0x9b, 0x90, 0x0f, 0x40, 0xd7, 0x6d, 0xab, 0xd3, 0x76, 0x0a, 0x19, 0x64, 0x85, 0x53, 0x90, + 0xc4, 0x6a, 0x19, 0x91, 0xb2, 0xa1, 0x14, 0x2d, 0x48, 0xbe, 0x22, 0x25, 0x73, 0x13, 0xa3, 0x30, + 0x8b, 0xa3, 0xf0, 0xfd, 0xde, 0x28, 0xec, 0x2a, 0xa4, 0x2b, 0xd1, 0x92, 0x62, 0x50, 0x46, 0x9a, + 0x11, 0x1b, 0x94, 0xb1, 0x1a, 0xcf, 0x95, 0xe1, 0x54, 0x22, 0xaf, 0x5d, 0x69, 0xf5, 0x1f, 0x66, + 0x64, 0x2e, 0x35, 0x4b, 0xf7, 0x3b, 0x73, 0x41, 0xee, 0xcc, 0x9a, 0xa5, 0xe3, 0xb4, 0x9d, 0x0a, + 0x6c, 0x14, 0xa9, 0xb1, 0x6d, 0x4b, 0x8f, 0x4e, 0xdc, 0xf1, 0xb2, 0xe4, 0x13, 0x70, 0x3a, 0x06, + 0xe4, 0xd3, 0x35, 0xd7, 0xfe, 0x8b, 0x5b, 0x9b, 0x45, 0x25, 0x81, 0x6b, 0x74, 0xf6, 0xee, 0xc2, + 0x85, 0x68, 0x70, 0x46, 0x92, 0xba, 0x65, 0xba, 0x9a, 0x61, 0x8a, 0xd5, 0x86, 0x8f, 0x92, 0xf7, + 0x6c, 0x6d, 0x16, 0x9f, 0x90, 0x75, 0xd0, 0xa3, 0x89, 0x36, 0xbe, 0x1b, 0x1f, 0xa2, 0x43, 0x21, + 0x01, 0x55, 0x5d, 0xd3, 0x96, 0xbd, 0x9d, 0xc9, 0xa5, 0xad, 0xcd, 0xe2, 0x93, 0x89, 0x75, 0x18, + 0x8c, 0x4a, 0xb6, 0x84, 0xba, 0x71, 0x22, 0x2a, 0x90, 0x00, 0x37, 0x6f, 0xe9, 0x14, 0xbf, 0xa1, + 0x1f, 0xf9, 0x2b, 0x5b, 0x9b, 0xc5, 0x47, 0x25, 0xfe, 0xa6, 0xa5, 0xd3, 0x68, 0xf3, 0x13, 0x4a, + 0x2b, 0xbf, 0x97, 0x81, 0xd3, 0x77, 0x0c, 0x53, 0xb7, 0xd6, 0x9d, 0x0a, 0x75, 0x56, 0x5d, 0xab, + 0xed, 0x77, 0xf4, 0x47, 0xe1, 0x54, 0x18, 0x23, 0x6c, 0x4b, 0xd1, 0xd9, 0x4f, 0x6d, 0x6d, 0x16, + 0x1f, 0x5f, 0xe7, 0x04, 0x0d, 0x9d, 0x53, 0x78, 0xc6, 0xa9, 0x54, 0x69, 0x32, 0x0f, 0xb6, 0x7a, + 0x08, 0x88, 0x34, 0xcf, 0xe1, 0xea, 0xe1, 0xb1, 0x8a, 0xac, 0x74, 0x32, 0x39, 0x79, 0x01, 0x72, + 0x15, 0x6b, 0x4d, 0x33, 0x4c, 0xd1, 0x83, 0x38, 0xe3, 0xfb, 0x6d, 0x41, 0x8c, 0x54, 0x54, 0xd0, + 0xb2, 0x3a, 0x45, 0x63, 0x70, 0xfb, 0x22, 0xed, 0x12, 0xbc, 0xa2, 0x91, 0x6d, 0x8c, 0x4c, 0x4e, + 0x3a, 0x30, 0x2a, 0x9a, 0x10, 0x5a, 0x5f, 0x9f, 0xf3, 0x46, 0x76, 0xb2, 0x14, 0xaf, 0x84, 0xca, + 0xf0, 0x31, 0x8d, 0xad, 0xf5, 0x3e, 0x33, 0x36, 0xa0, 0xc3, 0xb5, 0x9c, 0x7b, 0x1d, 0x48, 0x9c, + 0xc5, 0xee, 0x16, 0xa8, 0x0c, 0x3c, 0x5a, 0x2f, 0xcd, 0xcd, 0x56, 0x75, 0x6f, 0x77, 0x50, 0xb3, + 0xad, 0x7b, 0x86, 0x2e, 0x4d, 0xd0, 0x4b, 0x70, 0x26, 0x82, 0x9a, 0xc2, 0x0d, 0x89, 0xbf, 0x2f, + 0x45, 0xf5, 0xf5, 0x76, 0x1e, 0x6d, 0x41, 0xd3, 0xe0, 0xbb, 0x96, 0xb0, 0xfd, 0xdb, 0x8d, 0x11, + 0x1b, 0x86, 0x11, 0x54, 0x7d, 0xc5, 0xb2, 0xdd, 0x66, 0xc7, 0x15, 0xbd, 0x8f, 0xc3, 0x30, 0x56, + 0x87, 0x23, 0x88, 0x7a, 0x54, 0xe1, 0xf1, 0x21, 0x5f, 0x93, 0x82, 0x7c, 0xc9, 0x75, 0x6d, 0x63, + 0xa9, 0xe3, 0xd2, 0x39, 0xad, 0xdd, 0x36, 0xcc, 0x65, 0x9c, 0xce, 0x87, 0xaf, 0xbd, 0xea, 0x9b, + 0x41, 0x3d, 0x25, 0x71, 0x25, 0x5a, 0x5c, 0x9a, 0x85, 0x35, 0x0f, 0xd5, 0x58, 0xe3, 0x38, 0x79, + 0x16, 0x8e, 0x96, 0x63, 0xb3, 0x70, 0x22, 0xaf, 0x5d, 0x75, 0xdd, 0x67, 0x32, 0x70, 0x7e, 0x61, + 0xd5, 0xd5, 0x54, 0xea, 0x58, 0x1d, 0xbb, 0x49, 0x9d, 0x5b, 0x6d, 0x5d, 0x73, 0x69, 0x30, 0x19, + 0x17, 0xa1, 0xbf, 0xa4, 0xeb, 0x54, 0x47, 0x76, 0xfd, 0xfc, 0x04, 0x45, 0x63, 0x00, 0x95, 0xc3, + 0xc9, 0x53, 0x30, 0x20, 0xca, 0x20, 0xf7, 0xfe, 0xc9, 0xe1, 0xad, 0xcd, 0xe2, 0x40, 0x87, 0x83, + 0x54, 0x0f, 0xc7, 0xc8, 0x2a, 0xb4, 0x45, 0x19, 0x59, 0x26, 0x20, 0xd3, 0x39, 0x48, 0xf5, 0x70, + 0xe4, 0x0d, 0x18, 0x43, 0xb6, 0x7e, 0x7b, 0xc4, 0xf2, 0x76, 0xd2, 0x93, 0xae, 0xdc, 0x58, 0x6e, + 0x7d, 0x60, 0x6b, 0x1a, 0xb6, 0x57, 0x40, 0x8d, 0x30, 0x20, 0x77, 0x20, 0x2f, 0x1a, 0x11, 0x30, + 0xed, 0xef, 0xc1, 0xf4, 0xd4, 0xd6, 0x66, 0x71, 0x42, 0xb4, 0x5f, 0x62, 0x1b, 0x63, 0xc2, 0x18, + 0x8b, 0x66, 0x07, 0x8c, 0x73, 0xdb, 0x31, 0x16, 0x5f, 0x2c, 0x33, 0x8e, 0x32, 0x51, 0xde, 0x82, + 0x11, 0xb9, 0x20, 0x39, 0x8d, 0xa7, 0x54, 0x7c, 0x9c, 0xe0, 0xf9, 0x96, 0xa1, 0xe3, 0xd1, 0xd4, + 0x73, 0x38, 0xc5, 0x35, 0x6d, 0xa3, 0xcd, 0x0c, 0x43, 0xa1, 0xe4, 0xe3, 0x5b, 0x9b, 0xc5, 0x61, + 0x3d, 0x00, 0xab, 0x32, 0x8d, 0xf2, 0xef, 0x53, 0x70, 0x9a, 0xf1, 0x2e, 0x39, 0x8e, 0xb1, 0x6c, + 0xae, 0xc9, 0x96, 0xd9, 0x33, 0x90, 0xab, 0x63, 0x7d, 0xa2, 0xa6, 0x93, 0x5b, 0x9b, 0xc5, 0x3c, + 0x6f, 0x81, 0x3c, 0xd5, 0x71, 0x1a, 0xff, 0x88, 0x26, 0xbd, 0xcd, 0x11, 0x0d, 0xdb, 0xb5, 0xb8, + 0x9a, 0xed, 0x1a, 0xe6, 0x72, 0xdd, 0xd5, 0xdc, 0x8e, 0x13, 0xda, 0xb5, 0x08, 0x4c, 0xc3, 0x41, + 0x54, 0x68, 0xd7, 0x12, 0x2a, 0x44, 0x5e, 0x83, 0x91, 0x29, 0x53, 0x0f, 0x98, 0xf0, 0xa9, 0xf5, + 0x11, 0xb6, 0x99, 0xa0, 0x08, 0x8f, 0xb3, 0x08, 0x15, 0x50, 0xfe, 0x22, 0x05, 0x05, 0x7e, 0x9e, + 0x32, 0x6b, 0x38, 0xee, 0x1c, 0x5d, 0x5b, 0x92, 0x66, 0xa7, 0x69, 0xef, 0x80, 0x86, 0xe1, 0x24, + 0x73, 0x03, 0xad, 0x3d, 0x71, 0x40, 0xd3, 0x32, 0x9c, 0xd8, 0x4e, 0x3e, 0x52, 0x8a, 0x54, 0x61, + 0x80, 0x73, 0xe6, 0xe6, 0xe2, 0xf0, 0xb5, 0x82, 0xa7, 0x08, 0xd1, 0xaa, 0xb9, 0x32, 0xac, 0x71, + 0x62, 0xf9, 0x6c, 0x40, 0x94, 0x67, 0x3b, 0xd7, 0xa0, 0xcc, 0xa2, 0xe1, 0xb6, 0xbc, 0x75, 0x9e, + 0xcf, 0x14, 0x52, 0x9b, 0x5c, 0x86, 0x94, 0x4d, 0xd0, 0x48, 0x39, 0xe5, 0x9b, 0x33, 0x90, 0x8f, + 0xd6, 0x4f, 0xee, 0xc0, 0xe0, 0x0d, 0xcb, 0x30, 0xa9, 0xbe, 0x60, 0xe2, 0xc7, 0xf6, 0x3e, 0xb2, + 0xf4, 0x76, 0x6e, 0x27, 0xde, 0xc6, 0x32, 0x0d, 0x79, 0xbf, 0x83, 0x27, 0x98, 0x3e, 0x33, 0xf2, + 0x11, 0x18, 0x62, 0x3b, 0x86, 0x7b, 0xc8, 0x39, 0xbd, 0x2d, 0xe7, 0xc7, 0x04, 0xe7, 0x93, 0x36, + 0x2f, 0x14, 0x67, 0x1d, 0xb0, 0x63, 0x2a, 0xaa, 0x52, 0xcd, 0xb1, 0xbc, 0x55, 0x19, 0x55, 0xd4, + 0x46, 0x88, 0xac, 0xa2, 0x9c, 0x86, 0x6d, 0x74, 0xf8, 0xc7, 0x62, 0x8f, 0x4a, 0x3b, 0x5d, 0x2e, + 0xf6, 0x68, 0x67, 0x4a, 0xc4, 0xc4, 0x84, 0x71, 0xd1, 0x37, 0x2b, 0x46, 0x1b, 0xf7, 0x88, 0x68, + 0x05, 0x8d, 0x5d, 0xbb, 0x78, 0xc5, 0x3b, 0x9a, 0xb8, 0x22, 0x1d, 0x74, 0xdf, 0x7b, 0xee, 0xca, + 0x9c, 0x4f, 0x8e, 0xe7, 0x45, 0xa8, 0xde, 0x11, 0x16, 0xb2, 0xe2, 0xac, 0x85, 0xc8, 0x95, 0xaf, + 0x4a, 0xc3, 0xfb, 0x82, 0x2e, 0x52, 0xe9, 0x3d, 0x83, 0xae, 0x07, 0x1c, 0xc5, 0xc9, 0x15, 0x1b, + 0xad, 0x4e, 0x79, 0x45, 0x33, 0x97, 0xa9, 0x4e, 0x2e, 0x43, 0x3f, 0x3f, 0xa3, 0x49, 0xe1, 0x66, + 0x02, 0x67, 0xc2, 0xe8, 0xf1, 0x0c, 0xa7, 0x20, 0x16, 0xe4, 0xc4, 0xa9, 0x0c, 0x57, 0xca, 0x52, + 0x5c, 0x29, 0x77, 0x50, 0xa3, 0x38, 0x77, 0xe1, 0xcb, 0x15, 0x0a, 0x3e, 0x76, 0xf2, 0x22, 0xaa, + 0x39, 0xf7, 0x32, 0x0c, 0x4b, 0xc4, 0xbb, 0x5a, 0x8f, 0xbe, 0xa2, 0x5f, 0x1e, 0xa6, 0x5e, 0xb3, + 0xc4, 0x30, 0xbd, 0xca, 0x86, 0x97, 0xe3, 0x30, 0x9b, 0x97, 0x8f, 0x4f, 0x31, 0x88, 0x10, 0x14, + 0x1e, 0x44, 0x08, 0x22, 0xcf, 0xc3, 0x20, 0x67, 0xe1, 0x9f, 0xae, 0xe0, 0xc9, 0x8c, 0x8d, 0xb0, + 0xb0, 0x55, 0xe1, 0x13, 0x92, 0xef, 0x4c, 0xc1, 0x85, 0x9e, 0x92, 0x40, 0xe5, 0x1b, 0xbe, 0xf6, + 0xe2, 0x9e, 0xc4, 0x38, 0xf9, 0xbe, 0xad, 0xcd, 0xe2, 0x65, 0x49, 0x33, 0x6c, 0x89, 0xa6, 0xd1, + 0xe4, 0x44, 0x52, 0xbb, 0x7a, 0x37, 0x85, 0x6d, 0x6d, 0x78, 0xa5, 0xd3, 0x78, 0x80, 0x6c, 0x36, + 0x37, 0xbc, 0x46, 0x66, 0x83, 0xad, 0x8d, 0xf8, 0xde, 0xbb, 0x1e, 0x49, 0x42, 0x35, 0x5d, 0xb8, + 0x90, 0x26, 0x9c, 0xe1, 0x98, 0x8a, 0xb6, 0xb1, 0x70, 0x77, 0xce, 0x32, 0xdd, 0x15, 0xaf, 0x82, + 0x7e, 0xf9, 0x04, 0x16, 0x2b, 0xd0, 0xb5, 0x8d, 0x86, 0x75, 0xb7, 0xb1, 0xc6, 0xa8, 0x12, 0xea, + 0xe8, 0xc6, 0x89, 0xad, 0x11, 0x62, 0x8c, 0x7b, 0xb3, 0x67, 0x2e, 0x38, 0x1f, 0xf7, 0xe6, 0x85, + 0xf8, 0x5c, 0x19, 0x29, 0x94, 0x34, 0x65, 0x0e, 0xec, 0x71, 0xca, 0xac, 0xc2, 0xc8, 0xac, 0xd5, + 0x5c, 0xf5, 0x35, 0xef, 0x65, 0xc8, 0x2d, 0x6a, 0xf6, 0x32, 0x75, 0x51, 0xac, 0xc3, 0xd7, 0x26, + 0xae, 0xf0, 0xeb, 0x2b, 0x46, 0xc4, 0x11, 0x93, 0x63, 0x62, 0x22, 0xcb, 0xb9, 0xf8, 0x5b, 0x15, + 0x05, 0x94, 0x7f, 0x96, 0x83, 0x11, 0x71, 0xd5, 0x82, 0x6b, 0x1a, 0xf9, 0x60, 0x70, 0x79, 0x25, + 0x66, 0x5e, 0xff, 0xb8, 0xd9, 0x3f, 0x26, 0x1f, 0x61, 0xcc, 0x7e, 0x79, 0xb3, 0x98, 0xda, 0xda, + 0x2c, 0xf6, 0xa9, 0x83, 0xd2, 0xe9, 0x49, 0xb0, 0xea, 0x4a, 0x66, 0x86, 0x7c, 0x79, 0x12, 0x29, + 0xcb, 0x57, 0xe1, 0xd7, 0x60, 0x40, 0xb4, 0x41, 0x28, 0xef, 0x99, 0xe0, 0xd0, 0x2e, 0x74, 0x65, + 0x14, 0x29, 0xed, 0x95, 0x22, 0xaf, 0x42, 0x8e, 0x1f, 0x62, 0x09, 0x01, 0x9c, 0x4e, 0x3e, 0xf4, + 0x8b, 0x14, 0x17, 0x65, 0xc8, 0x0c, 0x40, 0x70, 0x80, 0xe5, 0xdf, 0x90, 0x09, 0x0e, 0xf1, 0xa3, + 0xad, 0x08, 0x17, 0xa9, 0x2c, 0x79, 0x09, 0x46, 0x16, 0xa9, 0xbd, 0x66, 0x98, 0x5a, 0xab, 0x6e, + 0xbc, 0xe3, 0x5d, 0x92, 0xa1, 0xf9, 0xe1, 0x18, 0xef, 0xc8, 0x7d, 0x1a, 0xa2, 0x23, 0x1f, 0x4f, + 0x3a, 0x20, 0x1a, 0xc0, 0x86, 0x3c, 0xbe, 0xed, 0xc9, 0x49, 0xa4, 0x3d, 0x09, 0xe7, 0x45, 0x6f, + 0xc0, 0x68, 0xe8, 0x6c, 0x40, 0xdc, 0x82, 0x5c, 0x88, 0xb3, 0x96, 0x0e, 0x3a, 0x22, 0x6c, 0xc3, + 0x1c, 0xd8, 0xa0, 0xa8, 0x9a, 0x86, 0x6b, 0x68, 0xad, 0xb2, 0xb5, 0xb6, 0xa6, 0x99, 0x7a, 0x61, + 0x28, 0x18, 0x14, 0x06, 0xc7, 0x34, 0x9a, 0x1c, 0x25, 0x0f, 0x8a, 0x70, 0x21, 0x72, 0x13, 0xf2, + 0xa2, 0x0f, 0x55, 0xda, 0xb4, 0x6c, 0x66, 0x11, 0xe1, 0x25, 0x87, 0x18, 0x15, 0x0e, 0xc7, 0x35, + 0x6c, 0x0f, 0x29, 0x6f, 0x39, 0xa2, 0x05, 0xd9, 0x04, 0x5c, 0x35, 0xef, 0x19, 0xcc, 0x88, 0x1f, + 0xc1, 0xc6, 0xe0, 0x04, 0x6c, 0x70, 0x90, 0x3c, 0x01, 0x0b, 0x2a, 0x69, 0xc1, 0x1e, 0xdd, 0x7e, + 0xc1, 0xbe, 0x91, 0x1d, 0x1c, 0xce, 0x8f, 0x44, 0xaf, 0xbd, 0x94, 0x7f, 0x94, 0x81, 0x61, 0xd1, + 0x12, 0x66, 0x64, 0x1c, 0x8f, 0x9f, 0xfd, 0x8c, 0x9f, 0xc4, 0x71, 0x90, 0x3b, 0xa8, 0x71, 0xa0, + 0x7c, 0x2a, 0xed, 0x4f, 0x76, 0x35, 0xdb, 0x30, 0xf7, 0x37, 0xd9, 0x5d, 0x04, 0x28, 0xaf, 0x74, + 0xcc, 0x55, 0x7e, 0xbd, 0x9f, 0x0e, 0xae, 0xf7, 0x9b, 0x86, 0x2a, 0x61, 0xc8, 0x05, 0xc8, 0x56, + 0x18, 0x7f, 0xd6, 0x33, 0x23, 0x93, 0x43, 0x5f, 0xe0, 0x9c, 0x52, 0xef, 0x53, 0x11, 0xcc, 0x76, + 0xb0, 0x93, 0x1b, 0x2e, 0xe5, 0x7b, 0x86, 0x0c, 0xdf, 0xc1, 0x2e, 0x31, 0x80, 0xca, 0xe1, 0xe4, + 0x05, 0x98, 0xa8, 0xd0, 0x96, 0xb6, 0x31, 0x67, 0xb4, 0x5a, 0x86, 0x43, 0x9b, 0x96, 0xa9, 0x3b, + 0x28, 0x64, 0x51, 0xdd, 0x9a, 0xa3, 0xc6, 0x09, 0x88, 0x02, 0xb9, 0x85, 0xbb, 0x77, 0x1d, 0xea, + 0xa2, 0xf8, 0x32, 0x93, 0xc0, 0xe6, 0x7e, 0x0b, 0x21, 0xaa, 0xc0, 0x28, 0x7f, 0x94, 0x62, 0x5b, + 0x44, 0x3c, 0x5b, 0x09, 0x06, 0xd1, 0x7e, 0x44, 0x72, 0x39, 0xb0, 0x80, 0xd2, 0xf8, 0xb5, 0xe3, + 0xe2, 0x6b, 0x07, 0x84, 0x15, 0x14, 0xd8, 0x3e, 0x89, 0x5f, 0x95, 0xd9, 0xee, 0xab, 0x5e, 0x82, + 0xe1, 0xc5, 0x4a, 0x6d, 0xd2, 0xab, 0x24, 0x8b, 0x95, 0x9c, 0x14, 0x95, 0x8c, 0xb8, 0x7a, 0x7b, + 0xa9, 0xe1, 0xd5, 0x24, 0x13, 0x2a, 0xdf, 0x9e, 0x81, 0x33, 0xe2, 0x4b, 0xcb, 0x2d, 0xa3, 0xbd, + 0x64, 0x69, 0xb6, 0xae, 0xd2, 0x26, 0x35, 0xee, 0xd1, 0xa3, 0x39, 0x60, 0xc3, 0x43, 0x2e, 0xbb, + 0x8f, 0x21, 0x77, 0x2d, 0x7c, 0x10, 0xc9, 0xcd, 0xa6, 0x3c, 0x13, 0xa7, 0x7c, 0x10, 0x19, 0x3e, + 0x7e, 0x54, 0x20, 0x37, 0x4b, 0xcd, 0x65, 0x77, 0x05, 0x95, 0xab, 0x9f, 0x2b, 0x57, 0x0b, 0x21, + 0xaa, 0xc0, 0x48, 0x7c, 0x71, 0x7f, 0x33, 0x10, 0xe7, 0xcb, 0x36, 0x38, 0xaa, 0x4c, 0xa4, 0x7c, + 0x4b, 0x06, 0x4e, 0x46, 0xbb, 0xa9, 0x4e, 0x4d, 0xfd, 0xb8, 0x8f, 0x1e, 0x9c, 0x3e, 0xfa, 0x8e, + 0x2c, 0x3c, 0xe2, 0x9d, 0x65, 0xaf, 0x68, 0x36, 0xd5, 0x2b, 0x86, 0x4d, 0x9b, 0xae, 0x65, 0x6f, + 0x1c, 0x61, 0xfb, 0xf1, 0xe0, 0xba, 0xea, 0x05, 0xc8, 0x89, 0x33, 0x20, 0xbe, 0x0e, 0x8e, 0xf9, + 0x2d, 0x41, 0x68, 0x6c, 0x05, 0xe5, 0xe7, 0x47, 0x91, 0x0e, 0xce, 0xed, 0xa4, 0x83, 0x3f, 0x00, + 0xa3, 0xbe, 0xe8, 0xa5, 0xee, 0x43, 0x63, 0x53, 0xf7, 0x10, 0xbc, 0x03, 0xc3, 0x84, 0x58, 0x9b, + 0x07, 0xa8, 0x56, 0xd0, 0x18, 0x1c, 0x15, 0xb5, 0xf9, 0xe5, 0x0c, 0x5d, 0x95, 0x89, 0xa2, 0xaa, + 0x32, 0xb4, 0x13, 0x55, 0xf9, 0x4c, 0x3f, 0x9c, 0x4b, 0x56, 0x15, 0x95, 0x6a, 0xfa, 0xb1, 0xa6, + 0xbc, 0x3b, 0x35, 0xe5, 0x71, 0xc8, 0xd6, 0x34, 0x77, 0x45, 0xa8, 0x08, 0xbe, 0x17, 0xb9, 0x6b, + 0xb4, 0x68, 0xa3, 0xad, 0xb9, 0x2b, 0x2a, 0xa2, 0xa4, 0xb9, 0x09, 0x90, 0x63, 0xd2, 0xdc, 0x14, + 0x18, 0x30, 0xc3, 0x8f, 0xa5, 0x2e, 0x65, 0x93, 0x0c, 0x98, 0xa8, 0x52, 0x8e, 0xec, 0x44, 0x29, + 0x3f, 0xdb, 0xdf, 0x6d, 0xfe, 0xba, 0x63, 0x1b, 0x2e, 0x3d, 0xd6, 0xca, 0x63, 0xad, 0x3c, 0x04, + 0xad, 0xfc, 0xd5, 0x34, 0x8c, 0xfa, 0xfb, 0xd9, 0xb7, 0x69, 0xf3, 0x70, 0xd6, 0xd1, 0x60, 0x1b, + 0x98, 0xd9, 0xf7, 0x36, 0x70, 0x3f, 0x4a, 0xa8, 0xf8, 0xfb, 0x72, 0x6e, 0xea, 0xa0, 0x94, 0xf9, + 0xbe, 0xdc, 0x3f, 0x3e, 0x7f, 0x1c, 0x06, 0xe6, 0xb4, 0xfb, 0xc6, 0x5a, 0x67, 0x4d, 0xec, 0x70, + 0xf0, 0xe9, 0xf0, 0x9a, 0x76, 0x5f, 0xf5, 0xe0, 0xca, 0xbf, 0x4a, 0xc1, 0x98, 0x10, 0xaa, 0x60, + 0xbe, 0x2f, 0xa9, 0x06, 0xd2, 0x49, 0xef, 0x5b, 0x3a, 0x99, 0xbd, 0x4b, 0x47, 0xf9, 0x7b, 0x19, + 0x28, 0x4c, 0x1b, 0x2d, 0xba, 0x68, 0x6b, 0xa6, 0x73, 0x97, 0xda, 0xe2, 0x28, 0x62, 0x8a, 0xb1, + 0xda, 0xd7, 0x07, 0x4a, 0xd3, 0x50, 0x7a, 0x4f, 0xd3, 0xd0, 0x7b, 0x61, 0x48, 0x34, 0xc6, 0x7f, + 0xb6, 0x8e, 0x23, 0xcd, 0xf6, 0x80, 0x6a, 0x80, 0x67, 0xc4, 0xa5, 0x76, 0xdb, 0xb6, 0xee, 0x51, + 0x9b, 0x5f, 0xa3, 0x0a, 0x62, 0xcd, 0x03, 0xaa, 0x01, 0x5e, 0xe2, 0x4c, 0x3d, 0xfb, 0x57, 0xe6, + 0x4c, 0x6d, 0x35, 0xc0, 0x93, 0x4b, 0x30, 0x38, 0x6b, 0x35, 0xf1, 0xb1, 0xa6, 0x98, 0x8a, 0x46, + 0xb6, 0x36, 0x8b, 0x83, 0x2d, 0x01, 0x53, 0x7d, 0x2c, 0xa3, 0xac, 0x58, 0xeb, 0x66, 0xcb, 0xd2, + 0xf8, 0x03, 0xbc, 0x41, 0x4e, 0xa9, 0x0b, 0x98, 0xea, 0x63, 0x19, 0x25, 0x93, 0x39, 0x3e, 0x6c, + 0x1c, 0x0c, 0x78, 0xde, 0x15, 0x30, 0xd5, 0xc7, 0x2a, 0xdf, 0x9b, 0x65, 0xda, 0xeb, 0x18, 0xef, + 0x3c, 0xf4, 0x6b, 0x49, 0x30, 0x60, 0xfa, 0xf7, 0x30, 0x60, 0x1e, 0x9a, 0xb3, 0x54, 0xe5, 0xcf, + 0x07, 0x00, 0x84, 0xf4, 0xa7, 0x8e, 0x37, 0xbb, 0xfb, 0xd3, 0x9a, 0x0a, 0x4c, 0x4c, 0x99, 0x2b, + 0x9a, 0xd9, 0xa4, 0x7a, 0x70, 0xa2, 0x9c, 0xc3, 0xa1, 0x8d, 0x0f, 0xde, 0xa9, 0x40, 0x06, 0x47, + 0xca, 0x6a, 0xbc, 0x00, 0x79, 0x0e, 0x86, 0xab, 0xa6, 0x4b, 0x6d, 0xad, 0xe9, 0x1a, 0xf7, 0xa8, + 0x98, 0x1a, 0xf0, 0xe9, 0x82, 0x11, 0x80, 0x55, 0x99, 0x86, 0xbc, 0x00, 0x23, 0x35, 0xcd, 0x76, + 0x8d, 0xa6, 0xd1, 0xd6, 0x4c, 0xd7, 0x29, 0x0c, 0xe2, 0x8c, 0x86, 0xcb, 0x7e, 0x5b, 0x82, 0xab, + 0x21, 0x2a, 0xf2, 0x71, 0x18, 0xc2, 0x6d, 0x33, 0xfa, 0xe6, 0x0c, 0x6d, 0x7b, 0x1d, 0xfd, 0x44, + 0xf0, 0x44, 0x99, 0x1f, 0x8c, 0xe3, 0x13, 0x85, 0xe8, 0x8d, 0xb4, 0xcf, 0x91, 0xbc, 0x09, 0x03, + 0x53, 0xa6, 0x8e, 0xcc, 0x61, 0x5b, 0xe6, 0x8a, 0x60, 0x7e, 0x3a, 0x60, 0x6e, 0xb5, 0x23, 0xbc, + 0x3d, 0x76, 0xc9, 0xa3, 0x6c, 0xf8, 0x4b, 0x37, 0xca, 0x46, 0xbe, 0x04, 0x37, 0x16, 0xa3, 0x07, + 0x75, 0x63, 0x31, 0xb6, 0xc7, 0x1b, 0x0b, 0xe5, 0x1d, 0x18, 0x9e, 0xac, 0x4d, 0xfb, 0xa3, 0xf7, + 0x2c, 0x64, 0x6a, 0xe2, 0x29, 0x4d, 0x96, 0xdb, 0x33, 0x6d, 0x43, 0x57, 0x19, 0x8c, 0x5c, 0x86, + 0xc1, 0x32, 0x3e, 0xc1, 0x15, 0x77, 0xc5, 0x59, 0xbe, 0xfe, 0x35, 0x11, 0x86, 0x2f, 0xf1, 0x3d, + 0x34, 0x79, 0x0a, 0x06, 0x6a, 0xb6, 0xb5, 0x6c, 0x6b, 0x6b, 0x62, 0x0d, 0xc6, 0xb7, 0x4c, 0x6d, + 0x0e, 0x52, 0x3d, 0x9c, 0xf2, 0xd9, 0x94, 0x67, 0xea, 0xb3, 0x12, 0xf5, 0x0e, 0x5e, 0x6b, 0x60, + 0xdd, 0x83, 0xbc, 0x84, 0xc3, 0x41, 0xaa, 0x87, 0x23, 0x97, 0xa1, 0x7f, 0xca, 0xb6, 0x2d, 0x5b, + 0xf6, 0x67, 0xa2, 0x0c, 0x20, 0x5f, 0xea, 0x23, 0x05, 0x79, 0x3f, 0x0c, 0xf3, 0x39, 0x87, 0x1f, + 0xd4, 0x66, 0x7a, 0xdd, 0x87, 0xcb, 0x94, 0xca, 0x4f, 0x65, 0x24, 0x9b, 0x8d, 0x4b, 0xfc, 0x21, + 0xbc, 0x51, 0x79, 0x1e, 0x32, 0x93, 0xb5, 0x69, 0x31, 0x01, 0x9e, 0xf0, 0x8a, 0x4a, 0xaa, 0x12, + 0x29, 0xc7, 0xa8, 0xc9, 0x79, 0xc8, 0xd6, 0x98, 0xfa, 0xe4, 0x50, 0x3d, 0x06, 0xb7, 0x36, 0x8b, + 0xd9, 0x36, 0xd3, 0x1f, 0x84, 0x22, 0x96, 0x6d, 0x80, 0xf8, 0x2e, 0x8b, 0x63, 0x83, 0xbd, 0xcf, + 0x79, 0xc8, 0x96, 0xec, 0xe5, 0x7b, 0x62, 0xd6, 0x42, 0xac, 0x66, 0x2f, 0xdf, 0x53, 0x11, 0x4a, + 0xae, 0x02, 0xa8, 0xd4, 0xed, 0xd8, 0x26, 0xba, 0x1a, 0x0e, 0xe1, 0x79, 0x22, 0xce, 0x86, 0x36, + 0x42, 0x1b, 0x4d, 0x4b, 0xa7, 0xaa, 0x44, 0xa2, 0xfc, 0xc3, 0xe0, 0x52, 0xac, 0x62, 0x38, 0xab, + 0xc7, 0x5d, 0xb8, 0x8b, 0x2e, 0xd4, 0xc4, 0x91, 0x6d, 0xbc, 0x93, 0x8a, 0xd0, 0x3f, 0xdd, 0xd2, + 0x96, 0x1d, 0xec, 0x43, 0xf1, 0xd8, 0xf1, 0x2e, 0x03, 0xa8, 0x1c, 0x1e, 0xe9, 0xa7, 0xc1, 0xed, + 0xfb, 0xe9, 0x73, 0xfd, 0xfe, 0x68, 0x9b, 0xa7, 0xee, 0xba, 0x65, 0x1f, 0x77, 0xd5, 0x4e, 0xbb, + 0xea, 0x22, 0x0c, 0xd4, 0xed, 0xa6, 0x74, 0xdc, 0x81, 0xfb, 0x01, 0xc7, 0x6e, 0xf2, 0xa3, 0x0e, + 0x0f, 0xc9, 0xe8, 0x2a, 0x8e, 0x8b, 0x74, 0x03, 0x01, 0x9d, 0xee, 0xb8, 0x82, 0x4e, 0x20, 0x05, + 0x5d, 0xcd, 0xb2, 0x5d, 0xd1, 0x71, 0x3e, 0x5d, 0xdb, 0xb2, 0x5d, 0xd5, 0x43, 0x92, 0xf7, 0x02, + 0x2c, 0x96, 0x6b, 0x9e, 0xc3, 0xcf, 0x50, 0xf0, 0x58, 0x55, 0x78, 0xfa, 0xa8, 0x12, 0x9a, 0x2c, + 0xc2, 0xd0, 0x42, 0x9b, 0xda, 0x7c, 0x2b, 0xc4, 0x9d, 0x07, 0xdf, 0x13, 0x11, 0xad, 0xe8, 0xf7, + 0x2b, 0xe2, 0x7f, 0x9f, 0x9c, 0xaf, 0x2f, 0x96, 0xf7, 0x53, 0x0d, 0x18, 0x91, 0xf7, 0x43, 0xae, + 0xc4, 0xed, 0xbc, 0x61, 0x64, 0xe9, 0x8b, 0x0c, 0xb7, 0xa0, 0x1c, 0xc5, 0xf7, 0xec, 0x1a, 0xfe, + 0xad, 0x0a, 0x72, 0xe5, 0x32, 0xe4, 0xa3, 0xd5, 0x90, 0x61, 0x18, 0x28, 0x2f, 0xcc, 0xcf, 0x4f, + 0x95, 0x17, 0xf3, 0x7d, 0x64, 0x10, 0xb2, 0xf5, 0xa9, 0xf9, 0x4a, 0x3e, 0xa5, 0x7c, 0xb7, 0x34, + 0x83, 0x30, 0xd5, 0x3a, 0xbe, 0x56, 0xdf, 0xd7, 0xfd, 0x51, 0x1e, 0xef, 0x92, 0xf1, 0xc4, 0x60, + 0xcd, 0x70, 0x5d, 0xaa, 0x8b, 0x55, 0x02, 0xef, 0x5a, 0xdd, 0xfb, 0x6a, 0x0c, 0x4f, 0x9e, 0x81, + 0x51, 0x84, 0x89, 0x6b, 0x52, 0xbe, 0x3f, 0x16, 0x05, 0xec, 0xfb, 0x6a, 0x18, 0xa9, 0xfc, 0x7c, + 0x70, 0xb3, 0x3e, 0x4b, 0xb5, 0xa3, 0x7a, 0xab, 0xfa, 0x80, 0xf4, 0x97, 0xf2, 0xc3, 0xfd, 0xdc, + 0x0d, 0x8d, 0xfb, 0x86, 0x1f, 0x86, 0x28, 0x83, 0x63, 0xe0, 0xcc, 0x2e, 0x8e, 0x81, 0x9f, 0x81, + 0xdc, 0x1c, 0x75, 0x57, 0x2c, 0xef, 0x79, 0x1f, 0xbe, 0xa7, 0x59, 0x43, 0x88, 0xfc, 0x9e, 0x86, + 0xd3, 0x90, 0x55, 0x20, 0x9e, 0xe3, 0xb7, 0xef, 0x29, 0xe0, 0x1d, 0x3b, 0x9f, 0x89, 0xed, 0x53, + 0xea, 0x18, 0x1e, 0x02, 0xfd, 0x7c, 0x4e, 0xfa, 0x9e, 0x08, 0xd2, 0x7b, 0xbb, 0xff, 0xb8, 0x59, + 0xcc, 0x71, 0x1a, 0x35, 0x81, 0x2d, 0x79, 0x03, 0x86, 0xe6, 0xa6, 0x4b, 0xc2, 0x09, 0x9c, 0xbf, + 0x28, 0x39, 0xeb, 0x4b, 0xd1, 0x43, 0xf8, 0x22, 0x41, 0x9f, 0xbf, 0xb5, 0xbb, 0x5a, 0xdc, 0x07, + 0x3c, 0xe0, 0xc2, 0xb4, 0x85, 0x7b, 0x0f, 0x8a, 0xd3, 0x05, 0x5f, 0x5b, 0xc2, 0x3e, 0x85, 0x51, + 0x59, 0x71, 0x6c, 0x44, 0x5b, 0x06, 0xf7, 0x31, 0xba, 0x17, 0x60, 0xa2, 0xd4, 0x6e, 0xb7, 0x0c, + 0xaa, 0xa3, 0xbe, 0xa8, 0x9d, 0x16, 0x75, 0xc4, 0x6b, 0x2c, 0x74, 0x48, 0xd3, 0x38, 0xb2, 0x81, + 0xa1, 0x07, 0x1a, 0x76, 0x27, 0xfc, 0x0a, 0x37, 0x5e, 0x16, 0x23, 0x3d, 0x70, 0xf6, 0x96, 0x5d, + 0xad, 0x88, 0xf7, 0x58, 0x3c, 0xd2, 0x83, 0x07, 0x0e, 0xbf, 0x4e, 0x95, 0xc9, 0x95, 0xdf, 0x4b, + 0xc3, 0xe9, 0xb2, 0x4d, 0x35, 0x97, 0xce, 0x4d, 0x97, 0x4a, 0x1d, 0x7c, 0x47, 0xd9, 0x6a, 0x51, + 0x73, 0xf9, 0x70, 0x26, 0x85, 0x57, 0x60, 0xcc, 0x6f, 0x40, 0xbd, 0x69, 0xb5, 0xa9, 0xec, 0x1a, + 0xda, 0xf4, 0x30, 0x0d, 0x87, 0xa1, 0xd4, 0x08, 0x29, 0xb9, 0x09, 0x27, 0x7c, 0x48, 0xa9, 0xd5, + 0xb2, 0xd6, 0x55, 0xda, 0x71, 0xf8, 0xbb, 0x93, 0x41, 0xfe, 0x58, 0x3b, 0xe0, 0xa0, 0x31, 0x7c, + 0xc3, 0x66, 0x04, 0x6a, 0x52, 0x29, 0x32, 0x03, 0x83, 0xd3, 0x2d, 0x6b, 0x1d, 0x03, 0x7e, 0xf4, + 0x87, 0x17, 0xce, 0xb9, 0xe9, 0x92, 0x87, 0xe2, 0x6f, 0x80, 0xef, 0x32, 0x5e, 0xee, 0x46, 0x5b, + 0x56, 0x3d, 0xbf, 0xb4, 0xb2, 0x95, 0x81, 0x33, 0xb7, 0xb5, 0x96, 0xa1, 0x07, 0x42, 0x56, 0xa9, + 0xd3, 0xb6, 0x4c, 0x87, 0x1e, 0xa1, 0xd9, 0x22, 0x34, 0x24, 0xb3, 0x07, 0x32, 0x24, 0xe3, 0x9d, + 0xdd, 0xbf, 0xef, 0xce, 0xce, 0xed, 0xbb, 0xb3, 0x07, 0xf6, 0xd5, 0xd9, 0x7f, 0x9c, 0x82, 0xbc, + 0xe7, 0x6b, 0x23, 0x87, 0x20, 0x91, 0x1c, 0x41, 0xf0, 0x50, 0x34, 0xe2, 0x2f, 0x80, 0x78, 0x52, + 0x87, 0x81, 0xa9, 0xfb, 0x6d, 0xc3, 0xa6, 0xce, 0x0e, 0x9c, 0x1d, 0x2e, 0x88, 0x03, 0xa0, 0x09, + 0xca, 0x8b, 0xc4, 0xce, 0x7e, 0x38, 0x18, 0x9d, 0xa4, 0xb9, 0xb7, 0xd1, 0xa4, 0x17, 0x57, 0x85, + 0x3b, 0x49, 0x0b, 0xaf, 0xa4, 0x90, 0xd7, 0x7b, 0x40, 0x4a, 0x9e, 0x80, 0xcc, 0xe2, 0xe2, 0xac, + 0x58, 0x1b, 0x30, 0x9e, 0x8d, 0xeb, 0xca, 0x5e, 0xe0, 0x0c, 0xab, 0xfc, 0x4e, 0x9a, 0x47, 0x6a, + 0xe0, 0x53, 0xc8, 0xa1, 0xa8, 0xf3, 0x24, 0x0c, 0x7a, 0x02, 0x17, 0x0a, 0xed, 0x3b, 0xca, 0x44, + 0x3b, 0x22, 0x5a, 0xb7, 0xef, 0x14, 0x55, 0xf4, 0x1c, 0x20, 0xf8, 0xcd, 0x06, 0xee, 0xd5, 0xd0, + 0x01, 0xc2, 0x73, 0x7b, 0x78, 0x2f, 0x0c, 0xf9, 0xb3, 0xa6, 0x7c, 0xa3, 0xe1, 0x4f, 0xb1, 0x6a, + 0x80, 0x8f, 0x2c, 0x16, 0xb9, 0x7d, 0x98, 0x16, 0x9e, 0x78, 0x79, 0xaf, 0x1c, 0x8b, 0xf7, 0x80, + 0xc5, 0xfb, 0x75, 0x42, 0xbc, 0xdc, 0x69, 0xee, 0xc8, 0x8a, 0xf7, 0xc0, 0x4e, 0xf3, 0x95, 0x5f, + 0x4d, 0x01, 0x61, 0xcd, 0xaa, 0x69, 0x8e, 0xb3, 0x6e, 0xd9, 0x3a, 0x77, 0xaa, 0x38, 0x14, 0xc1, + 0x1c, 0xdc, 0x0d, 0xec, 0x1f, 0x0d, 0xc1, 0x89, 0xd0, 0x33, 0xf0, 0x23, 0x3e, 0x59, 0x5d, 0x0e, + 0x8f, 0xa6, 0x5e, 0xde, 0x5a, 0x4f, 0xca, 0x57, 0xbc, 0xfd, 0x21, 0x9f, 0x4f, 0xe9, 0x6e, 0xf7, + 0x7d, 0x30, 0x22, 0x7e, 0xb0, 0xb5, 0xde, 0xbb, 0xbb, 0xc3, 0x51, 0xea, 0x30, 0x80, 0x1a, 0x42, + 0x93, 0x17, 0x61, 0x88, 0x0d, 0x98, 0x65, 0x0c, 0x7d, 0x35, 0x10, 0x78, 0x42, 0xe9, 0x1e, 0x50, + 0x5e, 0x4f, 0x7c, 0x4a, 0xe9, 0xf9, 0xfe, 0xe0, 0x0e, 0xfc, 0xed, 0x3e, 0x01, 0xc3, 0x25, 0xd3, + 0xb4, 0x78, 0x10, 0x1f, 0x47, 0x5c, 0xb6, 0x74, 0xdd, 0x67, 0x3c, 0x81, 0x21, 0x47, 0x02, 0xfa, + 0xc4, 0x8d, 0x86, 0xcc, 0x90, 0x5c, 0xf3, 0xbc, 0xb9, 0xa8, 0x2d, 0x4c, 0x66, 0xbc, 0x70, 0xb2, + 0x05, 0x2c, 0xee, 0xcc, 0x85, 0x9d, 0x37, 0x5a, 0xb3, 0xad, 0xb6, 0xe5, 0x50, 0x9d, 0x0b, 0x6a, + 0x38, 0x70, 0xe7, 0x6f, 0x0b, 0x04, 0xba, 0x8e, 0x86, 0xc2, 0x50, 0x85, 0x8a, 0x90, 0xbb, 0x70, + 0xd2, 0xbb, 0xfa, 0xf6, 0x9d, 0x74, 0xab, 0x15, 0x07, 0x5d, 0x20, 0x86, 0x83, 0x58, 0x4b, 0x01, + 0x6a, 0xf2, 0x51, 0xef, 0xa2, 0xc7, 0xf3, 0xf2, 0x6d, 0x18, 0xba, 0xdc, 0xd5, 0x89, 0xfc, 0xc8, + 0x97, 0xc1, 0xf0, 0x9c, 0x76, 0xbf, 0xd2, 0x11, 0xa7, 0x49, 0xa3, 0x3b, 0xbf, 0x4f, 0x5a, 0xd3, + 0xee, 0x37, 0x74, 0x51, 0x2e, 0x62, 0x53, 0xc8, 0x2c, 0x49, 0x03, 0x4e, 0xd7, 0x6c, 0x6b, 0xcd, + 0x72, 0xa9, 0x1e, 0xf1, 0x77, 0x1d, 0x0f, 0x1c, 0xe4, 0xdb, 0x82, 0xa2, 0xd1, 0xc3, 0xf1, 0xb5, + 0x0b, 0x1b, 0xb2, 0x06, 0xe3, 0x25, 0xc7, 0xe9, 0xac, 0xd1, 0xe0, 0xce, 0x2d, 0xbf, 0xed, 0x67, + 0xbc, 0x47, 0x3c, 0x2f, 0x7f, 0x44, 0xc3, 0xa2, 0xfc, 0xca, 0xad, 0xe1, 0x1a, 0x72, 0x8d, 0xf8, + 0x2d, 0x51, 0xde, 0xac, 0x77, 0x3d, 0x01, 0x62, 0x34, 0x8e, 0xc2, 0x04, 0x0e, 0x2f, 0xec, 0x5d, + 0x5f, 0xf4, 0x18, 0xc9, 0x43, 0xee, 0xdd, 0x50, 0x11, 0xf2, 0x09, 0x38, 0x17, 0xeb, 0x0d, 0xfe, + 0x55, 0xac, 0x8f, 0x49, 0xd8, 0x8d, 0x37, 0x4a, 0x30, 0x99, 0x65, 0x5d, 0xa0, 0xf6, 0xe0, 0x70, + 0x23, 0x3b, 0x38, 0x96, 0x1f, 0x57, 0xcf, 0xc4, 0x05, 0xc6, 0x3d, 0xcd, 0xfe, 0x7e, 0x3a, 0x32, + 0xd3, 0x71, 0x1b, 0x70, 0x5f, 0x33, 0x9d, 0x3c, 0x63, 0xa5, 0xf7, 0x38, 0x63, 0x3d, 0x19, 0x7f, + 0x69, 0x92, 0x30, 0x0d, 0x7d, 0x19, 0x8c, 0x79, 0x25, 0xb0, 0xdd, 0x1b, 0xfe, 0x52, 0xd6, 0xbd, + 0xbb, 0xcf, 0x8b, 0xee, 0xce, 0xa3, 0x11, 0xbc, 0x11, 0xe9, 0xe3, 0x08, 0x3f, 0xe5, 0xc7, 0x52, + 0x00, 0xc1, 0x20, 0x21, 0xef, 0x0b, 0xc7, 0x48, 0x4c, 0x05, 0xd7, 0x6f, 0x22, 0xae, 0x4f, 0x28, + 0x28, 0x22, 0x39, 0x0f, 0x59, 0x8c, 0xfd, 0x94, 0x0e, 0x8e, 0xfb, 0x57, 0x0d, 0x53, 0x57, 0x11, + 0xca, 0xb0, 0x52, 0x90, 0x16, 0xc4, 0xe2, 0x53, 0x13, 0x6e, 0xd9, 0x57, 0x60, 0xbc, 0xde, 0x59, + 0x92, 0x95, 0x45, 0x0e, 0xe8, 0xe1, 0x74, 0x96, 0x7c, 0x1f, 0xfe, 0x50, 0x80, 0xaf, 0x70, 0x11, + 0xe5, 0x77, 0xa4, 0xcd, 0x85, 0xa7, 0x14, 0xe4, 0x12, 0xa4, 0x0d, 0x5d, 0x74, 0x6b, 0xd2, 0xfc, + 0xc1, 0xb5, 0x2a, 0x6d, 0xe8, 0x64, 0x0e, 0x4e, 0x74, 0xcc, 0x55, 0xd3, 0x5a, 0x37, 0x1b, 0x4d, + 0xcb, 0x74, 0x5c, 0x5b, 0x33, 0x4c, 0xd7, 0xf1, 0xef, 0x9a, 0xbd, 0x35, 0x8c, 0x93, 0x94, 0x03, + 0x8a, 0x99, 0x3e, 0x95, 0x74, 0x62, 0x50, 0xf2, 0x3a, 0x0c, 0x6b, 0xeb, 0x18, 0x1b, 0xc6, 0xb1, + 0x5a, 0x54, 0x5c, 0x27, 0xfb, 0x77, 0xbe, 0xa5, 0x3b, 0xf5, 0x32, 0xc7, 0x84, 0x39, 0x81, 0xb6, + 0xee, 0x08, 0xc4, 0xe4, 0x28, 0x0c, 0x4b, 0x0d, 0x51, 0x4e, 0x02, 0x89, 0x57, 0xae, 0xac, 0xc2, + 0xa9, 0x44, 0x5e, 0xe4, 0x22, 0x8c, 0x7b, 0xb1, 0x12, 0x59, 0x2b, 0x3a, 0x22, 0x06, 0xd4, 0xa8, + 0x3a, 0xca, 0xc0, 0x25, 0xdb, 0x74, 0xca, 0x18, 0x55, 0xf0, 0x69, 0x98, 0x08, 0xe8, 0xda, 0x7c, + 0x86, 0xe7, 0x11, 0x98, 0xd4, 0x71, 0x8f, 0xb2, 0xc6, 0xc1, 0xca, 0xf7, 0xa6, 0x22, 0x23, 0xe8, + 0x10, 0x4d, 0xc3, 0x1d, 0x8d, 0x1a, 0xe5, 0x57, 0x32, 0x30, 0x5c, 0xb3, 0x6c, 0x57, 0x84, 0x2b, + 0x3b, 0xda, 0xb6, 0x9a, 0x74, 0x36, 0x91, 0xdd, 0xc5, 0xd9, 0xc4, 0x79, 0xc8, 0x4a, 0xae, 0x16, + 0xfc, 0x3e, 0x54, 0xd7, 0x6d, 0x15, 0xa1, 0x5f, 0x62, 0x37, 0xb5, 0xf8, 0xe3, 0x87, 0x81, 0x7d, + 0x3f, 0x31, 0xfa, 0xab, 0x69, 0x80, 0x37, 0x9f, 0x7b, 0xee, 0x21, 0xee, 0x52, 0xe5, 0x9b, 0x52, + 0x30, 0x2e, 0x9e, 0x14, 0x48, 0x11, 0x68, 0x07, 0xbc, 0xc7, 0x20, 0xf2, 0x5c, 0xcd, 0x41, 0xaa, + 0x87, 0x63, 0xa6, 0xdd, 0xd4, 0x7d, 0xc3, 0xc5, 0x5b, 0x55, 0x29, 0x04, 0x2d, 0x15, 0x30, 0xd9, + 0xb4, 0xf3, 0xe8, 0xc8, 0xfb, 0xbc, 0xc7, 0x12, 0x99, 0xc0, 0x9e, 0x65, 0x05, 0xa6, 0x12, 0x1f, + 0x4c, 0x28, 0x3f, 0x90, 0x85, 0xec, 0xd4, 0x7d, 0xda, 0x3c, 0xe2, 0x5d, 0x23, 0x5d, 0xc1, 0x64, + 0xf7, 0x79, 0x05, 0xb3, 0x97, 0xd7, 0x5f, 0xaf, 0x05, 0xfd, 0x99, 0x0b, 0x57, 0x1f, 0xe9, 0xf9, + 0x68, 0xf5, 0x5e, 0x4f, 0x1f, 0xbd, 0xc7, 0x83, 0x3f, 0x9d, 0x81, 0x4c, 0xbd, 0x5c, 0x3b, 0xd6, + 0x9b, 0x43, 0xd5, 0x9b, 0xde, 0xaf, 0x6b, 0x14, 0xff, 0xc2, 0x7c, 0x30, 0x78, 0xcf, 0x1e, 0xb9, + 0x1b, 0xff, 0xb3, 0x0c, 0x8c, 0xd5, 0xa7, 0x17, 0x6b, 0xd2, 0x9d, 0xd5, 0x4d, 0xfe, 0xe6, 0x18, + 0x5f, 0xbf, 0xf2, 0x2e, 0x3d, 0x1f, 0x33, 0x5c, 0x6f, 0x55, 0x4d, 0xf7, 0xa5, 0x17, 0x30, 0x72, + 0x2d, 0x1e, 0xa9, 0x72, 0xaf, 0x06, 0xc7, 0x78, 0x87, 0x7e, 0x33, 0x06, 0xbe, 0xf1, 0x18, 0x90, + 0x57, 0x20, 0x73, 0x4b, 0xbc, 0x1d, 0xeb, 0xc6, 0xe7, 0xf9, 0x6b, 0x9c, 0x0f, 0x9b, 0x04, 0x33, + 0x1d, 0x43, 0x47, 0x0e, 0xac, 0x14, 0x2b, 0x7c, 0x5d, 0x98, 0x0c, 0x3b, 0x2a, 0xbc, 0xec, 0x15, + 0xbe, 0x5e, 0xad, 0x90, 0x3a, 0x0c, 0xd7, 0xa8, 0xbd, 0x66, 0x60, 0x47, 0x79, 0x73, 0x76, 0x6f, + 0x26, 0x27, 0xb6, 0x36, 0x8b, 0xc3, 0xed, 0xa0, 0x10, 0x32, 0x93, 0xb9, 0x90, 0xb7, 0x00, 0xb8, + 0x55, 0xb5, 0xc3, 0xa8, 0xe6, 0x17, 0x70, 0x3f, 0xcf, 0xb7, 0x8c, 0x09, 0x7b, 0x37, 0x89, 0x19, + 0x59, 0x85, 0xfc, 0x9c, 0xa5, 0x1b, 0x77, 0x0d, 0xfe, 0x48, 0x1c, 0x2b, 0xc8, 0x6d, 0xff, 0x34, + 0x93, 0x6d, 0x11, 0xd7, 0xa4, 0x72, 0x49, 0xd5, 0xc4, 0x18, 0x2b, 0x3f, 0xde, 0x0f, 0x59, 0xd6, + 0xed, 0xc7, 0xe3, 0x77, 0x3f, 0xe3, 0xb7, 0x04, 0xf9, 0x3b, 0x96, 0xbd, 0x6a, 0x98, 0xcb, 0xbe, + 0xcf, 0x8f, 0x38, 0x73, 0xc2, 0x37, 0x87, 0xeb, 0x1c, 0xd7, 0xf0, 0xdd, 0x83, 0xd4, 0x18, 0xf9, + 0x36, 0x23, 0xf8, 0x65, 0x00, 0x1e, 0x30, 0x05, 0x69, 0x06, 0x83, 0x60, 0x4d, 0x3c, 0x9c, 0x0a, + 0xba, 0x11, 0xc9, 0xc1, 0x9a, 0x02, 0x62, 0x72, 0xd9, 0x7b, 0xb5, 0x35, 0x84, 0x5e, 0x45, 0x78, + 0xb8, 0x86, 0xaf, 0xb6, 0x64, 0x23, 0x80, 0xbf, 0xdf, 0xaa, 0x01, 0x48, 0x37, 0xe1, 0x10, 0x11, + 0x44, 0x68, 0x72, 0x10, 0xc1, 0x74, 0x13, 0x2e, 0xc2, 0x55, 0x89, 0x07, 0x79, 0x29, 0xf2, 0x54, + 0x87, 0x84, 0xb8, 0x75, 0x7d, 0xa9, 0x13, 0x3c, 0xf5, 0x1c, 0xd9, 0xee, 0xa9, 0xa7, 0xf2, 0x5d, + 0x19, 0x18, 0x66, 0xdc, 0xea, 0x9d, 0xb5, 0x35, 0xcd, 0xde, 0x38, 0x56, 0xe4, 0xfd, 0x28, 0x72, + 0x03, 0x26, 0x64, 0xd7, 0x1e, 0x66, 0xba, 0x7a, 0x51, 0xfb, 0xfc, 0x43, 0x92, 0x28, 0x81, 0xb8, + 0x44, 0x64, 0xf3, 0xbe, 0x2b, 0xc0, 0x78, 0x66, 0xe8, 0xa8, 0x71, 0x5e, 0xca, 0x37, 0xa4, 0x20, + 0x1f, 0x85, 0xfa, 0xba, 0x9f, 0x4a, 0xd4, 0xfd, 0x67, 0x60, 0x48, 0x3c, 0xf6, 0xd1, 0x74, 0xf1, + 0xf6, 0x78, 0x6c, 0x6b, 0xb3, 0x08, 0x18, 0xa5, 0xa2, 0x61, 0x53, 0x4d, 0x57, 0x03, 0x02, 0xf2, + 0x22, 0x8c, 0xe0, 0x8f, 0x3b, 0xb6, 0xe1, 0xba, 0x94, 0x77, 0x46, 0x96, 0xdf, 0xf6, 0xf1, 0x02, + 0xeb, 0x1c, 0xa1, 0x86, 0xc8, 0x94, 0x9f, 0x4b, 0xc3, 0x50, 0xbd, 0xb3, 0xe4, 0x6c, 0x38, 0x2e, + 0x5d, 0x3b, 0xe2, 0x3a, 0xe4, 0x1d, 0xdc, 0x64, 0x13, 0x0f, 0x6e, 0x9e, 0xf0, 0x86, 0x96, 0x74, + 0x2b, 0xe5, 0x6f, 0x0c, 0xbc, 0xf7, 0xd3, 0x81, 0x16, 0xe5, 0x76, 0xaf, 0x45, 0xca, 0x3f, 0x49, + 0x43, 0x9e, 0x3f, 0x33, 0xa9, 0x18, 0x4e, 0xf3, 0x00, 0x5c, 0xdf, 0x0e, 0x5f, 0xa6, 0xfb, 0x7b, + 0x9a, 0xb5, 0x03, 0x87, 0x42, 0xe5, 0xc7, 0xd3, 0x30, 0x5c, 0xea, 0xb8, 0x2b, 0x25, 0x17, 0xe7, + 0xb7, 0x87, 0xf2, 0xd8, 0x63, 0x5f, 0x93, 0x97, 0xf2, 0xb3, 0x29, 0x9e, 0xcf, 0x60, 0xd1, 0x5a, + 0xa5, 0xe6, 0x01, 0x5c, 0x89, 0x1d, 0xc4, 0x41, 0xb1, 0xd7, 0x13, 0x99, 0xdd, 0xf5, 0x04, 0x5e, + 0xe4, 0xaa, 0x56, 0x8b, 0x1e, 0xed, 0xcf, 0x38, 0xc0, 0x8b, 0x5c, 0x4f, 0x20, 0x07, 0xf0, 0x70, + 0xe0, 0xdd, 0x25, 0x90, 0x03, 0x38, 0xcf, 0x7d, 0x77, 0x08, 0xe4, 0xa7, 0x52, 0x30, 0x34, 0x69, + 0xb9, 0x47, 0x7c, 0xe0, 0x8b, 0xaf, 0x38, 0xda, 0x6a, 0xee, 0x7d, 0xc5, 0xd1, 0xd6, 0x4d, 0xe5, + 0x1b, 0xd3, 0x70, 0x52, 0xe4, 0x5c, 0x12, 0x27, 0x68, 0xc7, 0xd3, 0xb1, 0x18, 0x6c, 0x71, 0xd1, + 0x1c, 0xcf, 0x43, 0x42, 0x34, 0xdf, 0x91, 0x81, 0x93, 0x18, 0xd7, 0x9e, 0xed, 0xc7, 0xde, 0x05, + 0xb6, 0x08, 0x69, 0x86, 0x9f, 0xe7, 0xcc, 0x25, 0x3c, 0xcf, 0xf9, 0x8f, 0x9b, 0xc5, 0x97, 0x76, + 0x91, 0xae, 0xea, 0x4a, 0x1d, 0xf7, 0x59, 0x8c, 0xab, 0xf7, 0xb0, 0xc7, 0x01, 0xb8, 0x61, 0x19, + 0xa6, 0x78, 0xbf, 0xcf, 0xcd, 0xe4, 0xfa, 0xd6, 0x66, 0xf1, 0xd4, 0xdb, 0x96, 0x61, 0x36, 0xa2, + 0x8f, 0xf8, 0x77, 0x5b, 0x5f, 0xc0, 0x5a, 0x95, 0xaa, 0x51, 0x7e, 0x2d, 0x05, 0x67, 0xc3, 0x5a, + 0xfc, 0x6e, 0xb0, 0x1d, 0xff, 0x6e, 0x1a, 0x4e, 0x5d, 0x47, 0xe1, 0xf8, 0x4f, 0x0c, 0x8f, 0xe7, + 0x2d, 0x31, 0x38, 0x13, 0x64, 0x73, 0x6c, 0x51, 0x76, 0x97, 0xcd, 0xf1, 0xa4, 0x2e, 0x64, 0xf3, + 0x8b, 0x29, 0x38, 0xb1, 0x50, 0xad, 0x94, 0xdf, 0x25, 0x23, 0x2a, 0xfe, 0x3d, 0x47, 0xdc, 0xe0, + 0x8c, 0x7d, 0xcf, 0x11, 0x37, 0x3d, 0x3f, 0x93, 0x86, 0x13, 0xf5, 0xd2, 0xdc, 0xec, 0xbb, 0x65, + 0x06, 0x2f, 0xcb, 0xef, 0xe1, 0xbd, 0x23, 0x34, 0x61, 0x0b, 0xc8, 0x9f, 0x79, 0xfb, 0x5a, 0xf7, + 0x77, 0xf2, 0x71, 0xa1, 0x1c, 0xf1, 0xa9, 0xfb, 0x40, 0x84, 0xc2, 0x34, 0x3f, 0x44, 0x7d, 0xc4, + 0x35, 0xff, 0x5f, 0xe4, 0x60, 0xf8, 0x66, 0x67, 0x89, 0x8a, 0x07, 0x61, 0x0f, 0xf5, 0xb9, 0xf1, + 0x35, 0x18, 0x16, 0x62, 0xc0, 0xfb, 0x11, 0x29, 0xf0, 0xae, 0x08, 0x3c, 0xc6, 0xe3, 0x07, 0xca, + 0x44, 0xe4, 0x3c, 0x64, 0x6f, 0x53, 0x7b, 0x49, 0x8e, 0xe1, 0x70, 0x8f, 0xda, 0x4b, 0x2a, 0x42, + 0xc9, 0xac, 0xf4, 0xde, 0xb2, 0x56, 0xc5, 0xc4, 0x89, 0xe2, 0xca, 0x11, 0x33, 0x41, 0xfa, 0xcf, + 0x82, 0xb5, 0xb6, 0xc1, 0x53, 0x2e, 0xca, 0xf1, 0x63, 0xa2, 0x25, 0xc9, 0x3c, 0x4c, 0x84, 0x9e, + 0x0b, 0x63, 0xd6, 0xc0, 0xc1, 0x04, 0x76, 0x49, 0xf9, 0x02, 0xe3, 0x45, 0xc9, 0x6b, 0x30, 0xe2, + 0x01, 0xf1, 0x61, 0xea, 0x50, 0x90, 0xc7, 0xc8, 0x67, 0x15, 0xc9, 0x15, 0x13, 0x2a, 0x20, 0x33, + 0xc0, 0x2b, 0x10, 0x48, 0x60, 0x10, 0x79, 0xac, 0x1d, 0x2a, 0x40, 0x5e, 0x44, 0x06, 0xe8, 0xca, + 0x88, 0xcf, 0xad, 0x86, 0x31, 0xc0, 0x01, 0x5e, 0x1f, 0xd9, 0x02, 0xce, 0xc3, 0x58, 0x84, 0xc8, + 0xc8, 0x02, 0x40, 0xf0, 0x2c, 0x46, 0x04, 0x0b, 0xda, 0xf5, 0x83, 0x1d, 0x89, 0x85, 0x7c, 0x0f, + 0x38, 0xba, 0x97, 0x7b, 0x40, 0xe5, 0xef, 0x64, 0x60, 0xb8, 0xd4, 0x0e, 0xb2, 0x09, 0xbe, 0x0f, + 0x72, 0xa5, 0x76, 0xfb, 0x96, 0x5a, 0x95, 0x93, 0xc3, 0x68, 0xed, 0x76, 0xa3, 0x63, 0x1b, 0xb2, + 0xb7, 0x02, 0x27, 0x22, 0x65, 0x18, 0x2d, 0xb5, 0xdb, 0xb5, 0xce, 0x52, 0xcb, 0x68, 0x4a, 0x19, + 0x02, 0x79, 0x4e, 0xee, 0x76, 0xbb, 0xd1, 0x46, 0x4c, 0x34, 0x49, 0x60, 0xb8, 0x0c, 0xf9, 0x04, + 0x86, 0xd8, 0x13, 0xe9, 0xfa, 0x78, 0x1e, 0x38, 0xc5, 0x7f, 0x4d, 0x1b, 0xb4, 0xed, 0x8a, 0x4f, + 0x24, 0xf2, 0xf3, 0x79, 0x49, 0x8f, 0x58, 0x45, 0xb1, 0xfc, 0x7c, 0x01, 0x4b, 0xf2, 0x2c, 0x0c, + 0x94, 0xda, 0x6d, 0xe9, 0xae, 0x0b, 0x9f, 0xc5, 0xb1, 0x52, 0xd1, 0x9c, 0xd2, 0x82, 0x4c, 0x7c, + 0x96, 0xb8, 0x1d, 0xb7, 0x6c, 0x17, 0x87, 0xd4, 0x68, 0xf0, 0x59, 0xde, 0x75, 0xba, 0x25, 0x47, + 0xb5, 0x52, 0xc3, 0x65, 0xce, 0xbd, 0x0a, 0x63, 0xe1, 0x16, 0xef, 0x2a, 0x87, 0xcf, 0x5f, 0xa4, + 0x50, 0x2a, 0x47, 0xdc, 0x65, 0xe7, 0x79, 0xc8, 0x94, 0xda, 0x6d, 0x31, 0xa9, 0x9d, 0x48, 0xe8, + 0xd4, 0x68, 0xcc, 0x92, 0x52, 0xbb, 0xed, 0x7d, 0xfa, 0x11, 0xf7, 0xfd, 0xdb, 0xd3, 0xa7, 0xff, + 0x14, 0xff, 0xf4, 0xa3, 0xed, 0x97, 0xa7, 0x7c, 0x3e, 0x0b, 0xe3, 0xa5, 0x76, 0xfb, 0x38, 0x61, + 0xcf, 0x41, 0x45, 0x46, 0x79, 0x0e, 0x40, 0x9a, 0x63, 0x07, 0x7c, 0xcf, 0xe4, 0x61, 0x69, 0x7e, + 0x2d, 0xa4, 0x54, 0x89, 0xc8, 0x53, 0xbf, 0xc1, 0xdd, 0xa8, 0x5f, 0xf0, 0x9e, 0x66, 0x68, 0xb7, + 0xa1, 0xd3, 0x60, 0xc7, 0xa1, 0xd3, 0xbe, 0x3c, 0x83, 0x93, 0xeb, 0x51, 0x8f, 0x24, 0xf9, 0xa0, + 0xa8, 0x86, 0xe8, 0xe7, 0xdc, 0xae, 0xa6, 0x99, 0x9f, 0xcc, 0xc8, 0x03, 0x14, 0xb3, 0xc0, 0x1c, + 0xf7, 0x42, 0xff, 0xbe, 0xec, 0xf7, 0x31, 0x59, 0x98, 0x22, 0xbc, 0x9d, 0x97, 0xfe, 0x53, 0x04, + 0x5b, 0x6c, 0x32, 0x54, 0xc3, 0xd0, 0xd5, 0x08, 0xad, 0xd7, 0x87, 0x03, 0xbb, 0xea, 0xc3, 0xcd, + 0x34, 0x06, 0x54, 0xf1, 0x83, 0x35, 0xee, 0x7f, 0x1b, 0x74, 0x15, 0x80, 0x3f, 0xb0, 0xf0, 0x3d, + 0x08, 0x46, 0x79, 0x5c, 0x36, 0x9e, 0x15, 0x54, 0xc4, 0x65, 0x0b, 0x48, 0xfc, 0x07, 0x59, 0x99, + 0xc4, 0x07, 0x59, 0x97, 0x61, 0x50, 0xd5, 0xd6, 0xdf, 0xe8, 0x50, 0xe1, 0xd0, 0xe6, 0xc5, 0x42, + 0xd6, 0xd6, 0x1b, 0x9f, 0x64, 0x40, 0xd5, 0x47, 0x13, 0xc5, 0x8f, 0xc8, 0x23, 0x3d, 0x7c, 0xe1, + 0x87, 0xf9, 0x7e, 0x1c, 0x9e, 0xbd, 0x28, 0x3a, 0xf9, 0x20, 0x64, 0x4a, 0x77, 0xea, 0x42, 0xb2, + 0xe7, 0x24, 0x17, 0x2d, 0x21, 0xaf, 0xae, 0x65, 0xef, 0xd4, 0x95, 0x2f, 0x4f, 0x03, 0x89, 0x53, + 0x92, 0x97, 0x60, 0x08, 0xa1, 0xcb, 0x4c, 0x67, 0xa4, 0xdc, 0xfb, 0xda, 0xba, 0xd3, 0xb0, 0x11, + 0x1a, 0xb2, 0x42, 0x3d, 0x52, 0xf2, 0x32, 0x40, 0xe9, 0x4e, 0xdd, 0x4b, 0xce, 0x9d, 0x0e, 0xde, + 0x66, 0xb2, 0x82, 0xf1, 0x84, 0xdc, 0x12, 0x31, 0x1a, 0xb0, 0x77, 0xea, 0x33, 0x96, 0xe3, 0x0a, + 0x51, 0x73, 0x03, 0x76, 0xdd, 0x69, 0xac, 0x58, 0x8e, 0x1b, 0x32, 0x60, 0x39, 0x19, 0xe6, 0x62, + 0xbd, 0x53, 0xe7, 0x9e, 0x9e, 0xba, 0x6a, 0xf9, 0x79, 0x4f, 0x79, 0x2e, 0xd6, 0x75, 0xa7, 0xc1, + 0xbd, 0x44, 0xf5, 0x86, 0x6d, 0xb5, 0xc2, 0xb9, 0x58, 0x43, 0xa5, 0x94, 0xaf, 0x1d, 0x84, 0x7c, + 0x45, 0x73, 0xb5, 0x25, 0xcd, 0xa1, 0xd2, 0xb6, 0x7f, 0xdc, 0x83, 0x85, 0x73, 0x8d, 0xa3, 0x1c, + 0xf4, 0xa5, 0x84, 0xaf, 0x89, 0x16, 0x20, 0xaf, 0x04, 0x7c, 0x6b, 0xb6, 0xe5, 0x5a, 0x4d, 0xab, + 0x15, 0x4a, 0xbd, 0xbb, 0xd4, 0x68, 0x0b, 0xb0, 0x1a, 0x23, 0x24, 0xcf, 0xc0, 0xb0, 0x07, 0x63, + 0x3b, 0x95, 0x4c, 0xa0, 0x33, 0xfa, 0x12, 0xdb, 0xa8, 0xa8, 0x32, 0x9a, 0xbc, 0x0c, 0x23, 0xde, + 0x4f, 0x69, 0x0f, 0xc0, 0xf3, 0x08, 0x2f, 0xc5, 0xb6, 0x79, 0x32, 0xa9, 0x5c, 0x14, 0xe7, 0xb7, + 0xfe, 0x50, 0xd1, 0x48, 0xaa, 0xde, 0x10, 0x29, 0xf9, 0x24, 0x8c, 0x79, 0xbf, 0xc5, 0xce, 0x86, + 0xbf, 0x8f, 0x7c, 0xc6, 0x53, 0xc2, 0xa8, 0x58, 0xaf, 0x84, 0xc9, 0xf9, 0x1e, 0xe7, 0x11, 0x2f, + 0x65, 0xac, 0xbe, 0x14, 0xdf, 0xe2, 0x44, 0x2a, 0x20, 0x55, 0x98, 0xf0, 0x20, 0x81, 0x86, 0x0e, + 0x04, 0x5b, 0x5b, 0x7d, 0xa9, 0x91, 0xa8, 0xa4, 0xf1, 0x52, 0xa4, 0x05, 0xe7, 0x43, 0x40, 0xdd, + 0x59, 0x31, 0xee, 0xba, 0x62, 0x5f, 0x2a, 0x92, 0x19, 0x88, 0x74, 0xe3, 0x3e, 0x57, 0x4e, 0xd3, + 0x10, 0x2e, 0xa4, 0xe1, 0xd0, 0x4b, 0x3d, 0xb9, 0x91, 0x3a, 0x9c, 0xf4, 0xf0, 0xd7, 0xcb, 0xb5, + 0x9a, 0x6d, 0xbd, 0x4d, 0x9b, 0x6e, 0xb5, 0x22, 0xac, 0x10, 0x0c, 0x58, 0xab, 0x2f, 0x35, 0x96, + 0x9b, 0x6d, 0xa6, 0x14, 0x0c, 0x17, 0x66, 0x9e, 0x58, 0x98, 0xdc, 0x86, 0x53, 0x12, 0xbc, 0x6a, + 0x3a, 0xae, 0x66, 0x36, 0xa9, 0x1f, 0x28, 0x0a, 0x0f, 0x1e, 0x04, 0x57, 0x43, 0x20, 0xc3, 0x6c, + 0x93, 0x8b, 0x93, 0x57, 0x61, 0xd4, 0x43, 0xf0, 0xeb, 0xce, 0x61, 0xbc, 0xee, 0xc4, 0x21, 0xa9, + 0x2f, 0x35, 0xa2, 0x01, 0x09, 0xc2, 0xc4, 0xb2, 0x46, 0x61, 0xd0, 0x9d, 0x91, 0x90, 0x46, 0x45, + 0xa2, 0xeb, 0x84, 0x48, 0xc9, 0x6b, 0x81, 0x46, 0x2d, 0xd8, 0xc6, 0xb2, 0xe1, 0xa5, 0x03, 0x3c, + 0x23, 0xf4, 0xc3, 0x42, 0x60, 0x92, 0x7e, 0x70, 0xf2, 0x73, 0x25, 0x38, 0x91, 0xa0, 0x63, 0xbb, + 0xda, 0x95, 0x7e, 0x2a, 0x1d, 0x34, 0xe2, 0x88, 0x6f, 0x4d, 0x27, 0x61, 0xd0, 0xfb, 0x12, 0x61, + 0x3c, 0x14, 0xba, 0x0d, 0xcd, 0x28, 0x0f, 0x0f, 0x1f, 0x12, 0xc7, 0x11, 0xdf, 0xae, 0x1e, 0x84, + 0x38, 0xbe, 0x90, 0x0a, 0xc4, 0x71, 0xc4, 0xb7, 0xb0, 0x3f, 0x9b, 0x0d, 0xe6, 0xa4, 0xe3, 0x7d, + 0xec, 0x41, 0x99, 0xc9, 0xc1, 0x73, 0xdf, 0xdc, 0x2e, 0x9e, 0xfb, 0xca, 0xaa, 0x39, 0xb0, 0x37, + 0xd5, 0x24, 0xaf, 0xc2, 0x70, 0xcd, 0x72, 0xdc, 0x65, 0x9b, 0x3a, 0x35, 0x3f, 0x19, 0x0f, 0xc6, + 0x20, 0x68, 0x0b, 0x70, 0xa3, 0x1d, 0x0e, 0x16, 0x28, 0x91, 0x4b, 0x31, 0x14, 0x87, 0x76, 0x1f, + 0x43, 0x51, 0xf9, 0x8d, 0x4c, 0x4c, 0x97, 0xb8, 0xd9, 0x7b, 0x24, 0x75, 0xe9, 0x00, 0x26, 0x0a, + 0x72, 0x2d, 0x58, 0x43, 0xf9, 0xfe, 0xa0, 0x5f, 0x8a, 0x39, 0xbc, 0x24, 0xb6, 0x07, 0x61, 0x12, + 0xf2, 0x51, 0x38, 0x13, 0x02, 0xd4, 0x34, 0x5b, 0x5b, 0xa3, 0x6e, 0x90, 0xe8, 0x1a, 0xa3, 0x48, + 0x7a, 0xa5, 0x1b, 0x6d, 0x1f, 0x2d, 0x27, 0xcf, 0xee, 0xc2, 0x41, 0x52, 0xcc, 0x81, 0x5d, 0xf8, + 0x6a, 0x7f, 0x2e, 0x13, 0x98, 0x49, 0xe1, 0x68, 0xf0, 0x2a, 0x75, 0x3a, 0x2d, 0xf7, 0xe1, 0xed, + 0xe0, 0xbd, 0xe5, 0xe7, 0x9a, 0x81, 0xf1, 0xd2, 0xdd, 0xbb, 0xb4, 0xe9, 0x7a, 0x49, 0x2e, 0x1c, + 0x11, 0xff, 0x97, 0x6f, 0x5b, 0x04, 0x4a, 0x24, 0x2d, 0x70, 0x42, 0xa9, 0xc7, 0xc3, 0xc5, 0x94, + 0xdf, 0xcc, 0x42, 0xc1, 0xdf, 0x36, 0xf8, 0xfe, 0x98, 0x87, 0xb8, 0x44, 0x3f, 0x10, 0xbd, 0x62, + 0xc0, 0x44, 0x20, 0x0c, 0xe1, 0x08, 0x57, 0xe8, 0xc7, 0x6d, 0x49, 0x31, 0xca, 0x2c, 0x20, 0xe4, + 0x3b, 0x91, 0x73, 0x62, 0x27, 0x42, 0x02, 0x7f, 0xd7, 0x86, 0xc3, 0x59, 0xa8, 0x71, 0xae, 0xe4, + 0xeb, 0x52, 0x70, 0xd2, 0xeb, 0x94, 0x85, 0x25, 0x66, 0x92, 0x63, 0x4c, 0x12, 0x6f, 0x17, 0xf4, + 0xc1, 0xee, 0xd5, 0xf1, 0x4e, 0xba, 0x92, 0x54, 0x98, 0xb7, 0xc4, 0x8f, 0x0b, 0xe5, 0x2b, 0x84, + 0x85, 0x34, 0x3c, 0x14, 0x8a, 0xa3, 0x26, 0xd6, 0x7b, 0xee, 0x3a, 0x9c, 0xed, 0xca, 0x72, 0x3b, + 0x13, 0xb8, 0x5f, 0x36, 0x81, 0x7f, 0x3d, 0x15, 0x4c, 0x44, 0x11, 0x21, 0x91, 0x2b, 0x00, 0x01, + 0x48, 0x6c, 0x8a, 0xd1, 0x09, 0x2d, 0x10, 0x9a, 0x2a, 0x51, 0x90, 0x05, 0xc8, 0x09, 0xb1, 0xa4, + 0x51, 0x2c, 0xef, 0xdd, 0xa6, 0x17, 0xae, 0xc8, 0x72, 0xc0, 0x0d, 0xaf, 0xf8, 0x66, 0xc1, 0xe6, + 0xdc, 0xcb, 0x30, 0xbc, 0xd7, 0xef, 0xfa, 0xba, 0x0c, 0x10, 0x79, 0x07, 0x7b, 0x88, 0xe6, 0xfd, + 0x11, 0x9e, 0xc2, 0x2e, 0xc1, 0x20, 0xfb, 0x04, 0x4c, 0xc0, 0x25, 0x05, 0xdc, 0xef, 0x08, 0x98, + 0xea, 0x63, 0x83, 0xd8, 0x90, 0x03, 0xc9, 0xb1, 0x21, 0x95, 0x6f, 0xc8, 0xc0, 0x69, 0xb9, 0x43, + 0x2a, 0x14, 0x73, 0xf8, 0x1c, 0x77, 0xca, 0x97, 0xb0, 0x53, 0x14, 0xc8, 0xf1, 0x8d, 0x8b, 0x48, + 0xa6, 0xc4, 0x0f, 0x95, 0x10, 0xa2, 0x0a, 0x8c, 0xf2, 0x6f, 0xd2, 0x30, 0xea, 0x1b, 0x87, 0x9a, + 0xed, 0x3c, 0xc4, 0xdd, 0xf1, 0x01, 0x18, 0xc5, 0xe8, 0x7e, 0x6b, 0xd4, 0xe4, 0x11, 0xf0, 0xfa, + 0xa5, 0xec, 0x67, 0x1e, 0x42, 0x24, 0xc7, 0x0c, 0x11, 0x32, 0xed, 0xe7, 0x96, 0x9f, 0x14, 0x73, + 0x91, 0x9b, 0x7d, 0x1c, 0xae, 0x7c, 0x6b, 0x06, 0x46, 0x3c, 0x29, 0x4f, 0x1a, 0x47, 0xf5, 0x96, + 0xe8, 0x70, 0x85, 0x7c, 0x15, 0xa0, 0x66, 0xd9, 0xae, 0xd6, 0x9a, 0x0f, 0x34, 0x1f, 0x8f, 0x57, + 0xdb, 0x08, 0xe5, 0x65, 0x24, 0x12, 0x5c, 0xbf, 0x02, 0xb3, 0x9a, 0x4f, 0x4c, 0x7c, 0xfd, 0xf2, + 0xa1, 0xaa, 0x44, 0xa1, 0xfc, 0x48, 0x1a, 0xc6, 0xbd, 0x4e, 0x9a, 0xba, 0x4f, 0x9b, 0x9d, 0x87, + 0x79, 0x6e, 0x0a, 0x4b, 0xbb, 0x7f, 0x5b, 0x69, 0x2b, 0xff, 0x4e, 0x9a, 0x48, 0xca, 0x2d, 0xeb, + 0x78, 0x22, 0xf9, 0xcb, 0xd0, 0x71, 0xe5, 0x2b, 0x32, 0x70, 0xd2, 0x93, 0xfa, 0x74, 0xc7, 0xc4, + 0x83, 0x89, 0xb2, 0xd6, 0x6a, 0x3d, 0xcc, 0xbb, 0xf1, 0x61, 0x4f, 0x10, 0x0b, 0x22, 0x5c, 0xae, + 0x48, 0x54, 0x7c, 0x57, 0x80, 0x1b, 0x96, 0xa1, 0xab, 0x32, 0x11, 0x79, 0x0d, 0x46, 0xbc, 0x9f, + 0x25, 0x7b, 0xd9, 0xdb, 0x82, 0xe3, 0x35, 0x83, 0x5f, 0x48, 0xb3, 0x43, 0xd1, 0x43, 0x42, 0x05, + 0x94, 0x6f, 0xca, 0xc0, 0xb9, 0x3b, 0x86, 0xa9, 0x5b, 0xeb, 0x4e, 0x99, 0xda, 0x2e, 0x0f, 0x37, + 0x43, 0xe5, 0x90, 0x67, 0xf5, 0x0e, 0xda, 0xe9, 0x72, 0xc8, 0x33, 0x87, 0x83, 0x54, 0x0f, 0x47, + 0x5e, 0x84, 0x91, 0x3a, 0xb5, 0x0d, 0xad, 0x35, 0xdf, 0x59, 0x5b, 0xa2, 0xde, 0xf3, 0x33, 0x7c, + 0x87, 0xe7, 0x20, 0xbc, 0x61, 0x22, 0x42, 0x0d, 0x91, 0x91, 0xb3, 0x90, 0xb9, 0x55, 0x9b, 0x17, + 0x17, 0x47, 0x98, 0xc1, 0xae, 0xd3, 0x36, 0x55, 0x06, 0x23, 0x6f, 0xc0, 0xa9, 0xb2, 0x3a, 0x5b, + 0x31, 0x1c, 0x1e, 0x9c, 0xc4, 0xb0, 0xcc, 0x9a, 0x85, 0xd1, 0x22, 0xb3, 0xc1, 0x17, 0x36, 0xed, + 0x56, 0x43, 0x97, 0x28, 0x1a, 0x6d, 0x24, 0x51, 0x93, 0x4b, 0x92, 0xcb, 0x30, 0x78, 0x93, 0x6e, + 0xdc, 0xc2, 0x77, 0x12, 0xfd, 0xf8, 0x50, 0x10, 0x2f, 0x42, 0x57, 0xe9, 0x46, 0xa3, 0xc3, 0x80, + 0xaa, 0x8f, 0x26, 0x93, 0x90, 0x9f, 0xba, 0xef, 0x52, 0x53, 0xa7, 0xba, 0x5f, 0x84, 0x89, 0xb6, + 0xdf, 0x0b, 0xe5, 0xc6, 0x71, 0x8d, 0xa0, 0x6c, 0x8c, 0x1e, 0x79, 0x88, 0x54, 0x91, 0x3e, 0x8f, + 0x81, 0xe0, 0x8e, 0xc2, 0x4f, 0x2d, 0x29, 0xf3, 0x88, 0xd0, 0x2b, 0xbf, 0x35, 0xe0, 0xf7, 0x8e, + 0x97, 0x85, 0xfc, 0xc8, 0x1f, 0x82, 0x1e, 0x76, 0xf6, 0xf1, 0x37, 0xe0, 0x54, 0x54, 0xa4, 0xb6, + 0x9f, 0xe7, 0x45, 0x68, 0xd6, 0x3a, 0x27, 0x68, 0x78, 0x29, 0xb8, 0xc5, 0x4d, 0xaa, 0x9a, 0x5c, + 0x32, 0x9a, 0xd0, 0x7c, 0x60, 0x27, 0x09, 0xcd, 0x9f, 0x86, 0x5c, 0xc5, 0x5a, 0xd3, 0x0c, 0x2f, + 0xca, 0x17, 0xce, 0xb1, 0x7e, 0xbd, 0x88, 0x51, 0x05, 0x05, 0xe3, 0x2f, 0x2a, 0xc6, 0x2e, 0x1b, + 0x0a, 0xf8, 0x7b, 0x05, 0x98, 0x0d, 0xad, 0xca, 0x44, 0xc4, 0x82, 0x51, 0x51, 0x9d, 0xb8, 0xf7, + 0x04, 0xdc, 0xda, 0xbe, 0xe8, 0xc9, 0xa8, 0xbb, 0x5a, 0x5d, 0x09, 0x95, 0xe3, 0x9b, 0x5c, 0x9e, + 0x67, 0x5d, 0x7c, 0x0c, 0xbf, 0x01, 0x55, 0xc3, 0xfc, 0xa3, 0x89, 0xcc, 0x87, 0x77, 0x90, 0xc8, + 0x9c, 0x4c, 0xc1, 0x04, 0x66, 0xc1, 0xf0, 0x37, 0xba, 0x4c, 0x25, 0x46, 0xd0, 0xe4, 0xc7, 0xeb, + 0x34, 0x9e, 0x38, 0x83, 0x7d, 0x5c, 0xa3, 0x29, 0xd0, 0x6a, 0xbc, 0x04, 0x9b, 0x47, 0xe6, 0x67, + 0x4b, 0x78, 0x0f, 0x37, 0xc8, 0xe7, 0x11, 0xb3, 0xa5, 0xa9, 0x0c, 0x46, 0xee, 0xc0, 0x08, 0x9b, + 0xd7, 0xfc, 0x61, 0x32, 0x86, 0x9a, 0xa2, 0x44, 0xa4, 0x90, 0x30, 0xf5, 0xf1, 0xd5, 0xab, 0x19, + 0x20, 0xd4, 0x10, 0xa3, 0x73, 0xaf, 0x03, 0x89, 0xcb, 0x69, 0x57, 0x97, 0x78, 0xbf, 0x9c, 0x0d, + 0x76, 0xfa, 0x47, 0xfd, 0x19, 0xd6, 0x41, 0xac, 0x7f, 0xa1, 0xec, 0xb6, 0xfd, 0x5f, 0xca, 0xec, + 0xb6, 0xb9, 0x83, 0xcd, 0x6e, 0x1b, 0x9e, 0xd1, 0x06, 0xf6, 0x31, 0xa3, 0x7d, 0x38, 0x31, 0x2d, + 0x30, 0xbf, 0x1f, 0x91, 0xe0, 0xf2, 0x6a, 0x2e, 0xd3, 0x2b, 0xdf, 0x93, 0x82, 0x89, 0x58, 0x32, + 0x1c, 0xf2, 0x3c, 0x00, 0x87, 0x48, 0x61, 0xa6, 0xf1, 0x4d, 0x61, 0x90, 0x20, 0x47, 0xd8, 0x67, + 0x01, 0x19, 0xb9, 0x0a, 0x83, 0xfc, 0x97, 0x08, 0x03, 0x18, 0x2f, 0xd2, 0xe9, 0x18, 0xba, 0xea, + 0x13, 0x05, 0xb5, 0xe0, 0x85, 0x7a, 0x26, 0xb1, 0x88, 0xbb, 0xd1, 0xf6, 0x6b, 0xc1, 0x74, 0x35, + 0x5f, 0x9b, 0x86, 0x11, 0xbf, 0xc1, 0x25, 0xfd, 0xb0, 0xb4, 0x3f, 0x27, 0xf2, 0x0a, 0x65, 0xb6, + 0xcb, 0x2b, 0x14, 0x59, 0x52, 0x44, 0x22, 0xa1, 0x83, 0x73, 0x5c, 0xfc, 0x74, 0x1a, 0xc6, 0xfd, + 0x5a, 0x0f, 0xf1, 0xee, 0xf6, 0x01, 0x12, 0xc9, 0xd7, 0xa5, 0xa0, 0x30, 0x69, 0xb4, 0x5a, 0x86, + 0xb9, 0x5c, 0x35, 0xef, 0x5a, 0xf6, 0x1a, 0xce, 0xf9, 0x87, 0x77, 0x87, 0xa0, 0xfc, 0x8d, 0x14, + 0x4c, 0x88, 0x06, 0x95, 0x35, 0x5b, 0x3f, 0xbc, 0x03, 0xda, 0x68, 0x4b, 0x0e, 0x4f, 0x5f, 0x94, + 0x1f, 0x4a, 0x03, 0xcc, 0x5a, 0xcd, 0xd5, 0x23, 0xee, 0xf7, 0xf8, 0x0a, 0xe4, 0xb8, 0xe7, 0x88, + 0xd0, 0xd8, 0x09, 0xe1, 0xdf, 0xc7, 0x3e, 0x8d, 0x23, 0x26, 0xf3, 0x62, 0x65, 0xc8, 0x71, 0xe7, + 0x93, 0x42, 0x4a, 0x15, 0x45, 0x58, 0xa5, 0x8c, 0x4e, 0x2c, 0x5d, 0x7e, 0xa5, 0x0c, 0x16, 0xae, + 0x74, 0x6b, 0xb3, 0x98, 0x6d, 0x59, 0xcd, 0x55, 0x15, 0xe9, 0x95, 0xff, 0x37, 0xc5, 0x65, 0x77, + 0xc4, 0xbd, 0xb7, 0xbd, 0xcf, 0xcf, 0xee, 0xf2, 0xf3, 0xff, 0x66, 0x0a, 0x4e, 0xaa, 0xb4, 0x69, + 0xdd, 0xa3, 0xf6, 0x46, 0xd9, 0xd2, 0xe9, 0x75, 0x6a, 0x52, 0xfb, 0xb0, 0x46, 0xd4, 0x8f, 0x62, + 0x86, 0x83, 0xa0, 0x31, 0xb7, 0x1c, 0xaa, 0x1f, 0x9d, 0x24, 0x79, 0xca, 0x7f, 0x1e, 0x80, 0x42, + 0xa2, 0x61, 0x7f, 0x64, 0x0d, 0xcb, 0xae, 0xbb, 0xb5, 0xec, 0x41, 0xed, 0xd6, 0xfa, 0x77, 0xb7, + 0x5b, 0xcb, 0xed, 0x76, 0xb7, 0x36, 0xb0, 0x93, 0xdd, 0xda, 0x5a, 0x74, 0xb7, 0x36, 0x88, 0xbb, + 0xb5, 0xe7, 0x7b, 0xee, 0xd6, 0xa6, 0x4c, 0x7d, 0x8f, 0x7b, 0xb5, 0x90, 0xa9, 0x3d, 0xf4, 0xa5, + 0x34, 0xb5, 0xe1, 0x60, 0x4d, 0xed, 0xbd, 0x6c, 0x32, 0x2f, 0xb1, 0x49, 0xb1, 0x69, 0xd9, 0x3a, + 0xd5, 0xc5, 0xde, 0x12, 0xaf, 0x9d, 0x6c, 0x01, 0x53, 0x7d, 0x2c, 0x79, 0x21, 0x62, 0x7e, 0x8f, + 0xa2, 0xf9, 0x8d, 0xec, 0x65, 0xf3, 0x3b, 0x6c, 0x74, 0x47, 0x4c, 0x9d, 0xb1, 0xbd, 0x9b, 0x3a, + 0x07, 0xb0, 0xa7, 0xfc, 0x0f, 0x69, 0x98, 0x90, 0x36, 0xb3, 0x07, 0xb0, 0x1c, 0x97, 0x60, 0x5c, + 0x62, 0x88, 0xb6, 0x7d, 0x3a, 0x78, 0xef, 0xca, 0xf6, 0xc7, 0xd1, 0xe7, 0xb2, 0x51, 0x7a, 0x56, + 0xbd, 0x97, 0x63, 0x57, 0xcc, 0x02, 0x7e, 0xf5, 0x1e, 0x9c, 0x77, 0x89, 0x21, 0x7e, 0xa9, 0x3e, + 0xbd, 0xf4, 0xe4, 0x2b, 0xbb, 0x87, 0xb4, 0xb9, 0xab, 0x70, 0x52, 0x6a, 0x4c, 0xa9, 0xe3, 0xae, + 0x58, 0x36, 0x6b, 0x45, 0xbf, 0x88, 0x2a, 0xee, 0xf1, 0x4a, 0xa0, 0x11, 0x39, 0x3c, 0x03, 0x4c, + 0x43, 0xf3, 0x50, 0x6a, 0x22, 0x53, 0xb6, 0xf9, 0x4a, 0x44, 0x90, 0x8b, 0x90, 0x45, 0xb9, 0x49, + 0xe9, 0x37, 0x23, 0x22, 0x43, 0x3c, 0x79, 0xc6, 0x9f, 0x64, 0xd2, 0x81, 0xd7, 0x0a, 0x9f, 0x5c, + 0x64, 0x9f, 0x5f, 0x31, 0xcd, 0xbc, 0x0e, 0x23, 0xe2, 0xf8, 0xf5, 0x26, 0xdd, 0xf0, 0x33, 0xb4, + 0x60, 0xba, 0x28, 0x71, 0x3e, 0x8b, 0x47, 0x8b, 0xa1, 0xd7, 0x74, 0xa1, 0x12, 0xca, 0x77, 0xa7, + 0xe0, 0xa2, 0x4a, 0x4d, 0xba, 0xae, 0x2d, 0xb5, 0xa8, 0xd4, 0x72, 0xb1, 0x02, 0x33, 0x9d, 0x35, + 0x9c, 0x35, 0xcd, 0x6d, 0xae, 0xec, 0x4b, 0x83, 0xa6, 0x61, 0x44, 0x5e, 0x27, 0x76, 0xb1, 0x86, + 0x84, 0xca, 0x29, 0xdf, 0x9f, 0x85, 0x81, 0x49, 0xcb, 0xbd, 0x61, 0xed, 0x33, 0xcb, 0x75, 0xb0, + 0xb4, 0xa6, 0x77, 0x71, 0x6c, 0xf8, 0x2c, 0x56, 0x2e, 0xa5, 0x58, 0xc2, 0x53, 0xdc, 0x25, 0x2b, + 0x96, 0x4e, 0xcc, 0x23, 0xdb, 0x65, 0x7e, 0xeb, 0x97, 0x60, 0x08, 0xa3, 0x59, 0x49, 0xd7, 0x2e, + 0xe8, 0xc7, 0xe1, 0x32, 0x60, 0xb4, 0x8e, 0x80, 0x94, 0x7c, 0x34, 0x14, 0x05, 0x3c, 0xb7, 0xff, + 0x7c, 0xd8, 0x72, 0x40, 0xf0, 0xe7, 0xf9, 0x8d, 0x3d, 0xb6, 0x49, 0xca, 0xb4, 0x87, 0x07, 0x72, + 0x91, 0x26, 0xf9, 0x84, 0x07, 0x98, 0xab, 0xba, 0x0c, 0xa3, 0x93, 0x96, 0x2b, 0xf9, 0x0c, 0x0c, + 0x05, 0x6e, 0xed, 0x4c, 0xf2, 0xc9, 0x0e, 0x03, 0xe1, 0x32, 0xca, 0x9f, 0x65, 0x61, 0xc4, 0xfb, + 0x79, 0x48, 0xba, 0xf3, 0x3e, 0xc8, 0xcd, 0x58, 0x52, 0x1a, 0x25, 0xf4, 0x33, 0x58, 0xb1, 0x9c, + 0x88, 0x03, 0x85, 0x20, 0x62, 0x52, 0x9f, 0xb7, 0x74, 0xd9, 0x4b, 0x06, 0xa5, 0x6e, 0x5a, 0x7a, + 0x2c, 0x1c, 0x82, 0x4f, 0xc8, 0x26, 0x19, 0x74, 0x30, 0x92, 0x6e, 0xec, 0x22, 0x4e, 0x45, 0x88, + 0x97, 0xb4, 0x32, 0xb7, 0x5b, 0xad, 0x1c, 0xd8, 0xab, 0x56, 0x0e, 0x1e, 0xac, 0x56, 0xbe, 0x05, + 0x23, 0x58, 0x93, 0x97, 0xab, 0x78, 0x7b, 0x03, 0xe6, 0xac, 0xb0, 0x31, 0x46, 0x79, 0xbb, 0x45, + 0xc6, 0x62, 0x34, 0x2d, 0x42, 0xac, 0x22, 0xba, 0x0b, 0xfb, 0x38, 0xb6, 0xf8, 0x8d, 0x14, 0x0c, + 0x88, 0x6c, 0x62, 0xfb, 0xd2, 0xb8, 0xe7, 0x61, 0x58, 0xb0, 0x91, 0xd6, 0x5e, 0xbc, 0x59, 0xf3, + 0x72, 0xa9, 0x21, 0x27, 0x55, 0xa6, 0x22, 0xaf, 0xfa, 0x85, 0xd0, 0x87, 0x30, 0x13, 0xa4, 0x7a, + 0x0b, 0x12, 0xb0, 0xe9, 0x61, 0xd7, 0xe0, 0x80, 0x9c, 0x9c, 0x87, 0x6c, 0x85, 0x35, 0x55, 0x8a, + 0x48, 0xce, 0x9a, 0xa2, 0x22, 0x54, 0xf9, 0x54, 0x16, 0xc6, 0x22, 0x07, 0x8c, 0x4f, 0xc3, 0x90, + 0x38, 0xe0, 0x33, 0xbc, 0xd4, 0x48, 0x78, 0xb5, 0xe6, 0x03, 0xd5, 0x41, 0xfe, 0x67, 0x55, 0x27, + 0x1f, 0x86, 0x01, 0xcb, 0x41, 0x93, 0x01, 0xbf, 0x65, 0x2c, 0x18, 0x42, 0x0b, 0x75, 0x4c, 0x72, + 0x8d, 0x83, 0x43, 0x90, 0xc8, 0x1a, 0x69, 0x39, 0xf8, 0x69, 0x2f, 0xc0, 0x90, 0xe6, 0x38, 0xd4, + 0x6d, 0xb8, 0xda, 0xb2, 0x9c, 0x2d, 0xc9, 0x07, 0xca, 0xa3, 0x03, 0x81, 0x8b, 0xda, 0x32, 0x79, + 0x1d, 0x46, 0x9b, 0x36, 0x45, 0xa3, 0x42, 0x6b, 0xb1, 0x56, 0x4a, 0xdb, 0x87, 0x10, 0x42, 0x5e, + 0x2c, 0x03, 0x44, 0x55, 0x27, 0xb7, 0x61, 0x54, 0x7c, 0x0e, 0x77, 0xf0, 0x11, 0x49, 0xd9, 0xfd, + 0x65, 0x8c, 0x8b, 0x84, 0xbb, 0xf8, 0x08, 0x3f, 0x2f, 0x99, 0x5c, 0xe6, 0xab, 0x4b, 0xa4, 0x64, + 0x01, 0xc8, 0x3a, 0x5d, 0x42, 0xe3, 0x82, 0xd5, 0xc5, 0x93, 0x7d, 0x88, 0x34, 0xe2, 0xe8, 0x1c, + 0x15, 0xc7, 0xca, 0x3e, 0x63, 0xeb, 0x74, 0xa9, 0x14, 0x42, 0x92, 0x3b, 0x70, 0x2a, 0x5e, 0x84, + 0x7d, 0x32, 0xbf, 0x67, 0x7a, 0x62, 0x6b, 0xb3, 0x58, 0x4c, 0x24, 0x90, 0xd8, 0x9e, 0x88, 0xb1, + 0xad, 0xea, 0x37, 0xb2, 0x83, 0x03, 0xf9, 0x41, 0x75, 0x8c, 0x95, 0xf5, 0x4c, 0x75, 0x43, 0x57, + 0x7e, 0x3e, 0xc5, 0x4c, 0x72, 0xf6, 0x41, 0x53, 0x4c, 0x10, 0x4c, 0xd7, 0xd7, 0x76, 0xa9, 0xeb, + 0x6b, 0x41, 0x9e, 0xf2, 0x9c, 0xd3, 0x63, 0x76, 0x55, 0x05, 0x96, 0x5c, 0x81, 0x9c, 0x2e, 0x9f, + 0x4e, 0x9e, 0x0e, 0x77, 0x82, 0x57, 0x8f, 0x2a, 0xa8, 0xc8, 0x25, 0xc8, 0xb2, 0x25, 0x2b, 0x7a, + 0x34, 0x21, 0x5b, 0x17, 0x2a, 0x52, 0x28, 0x7f, 0x35, 0x0d, 0x23, 0xd2, 0xd7, 0x5c, 0xdb, 0xd7, + 0xe7, 0x7c, 0x70, 0x67, 0xcd, 0xf4, 0x5e, 0xb7, 0xe1, 0x9e, 0xd5, 0x6b, 0xf2, 0x0b, 0xbe, 0x28, + 0x76, 0x74, 0xb7, 0x29, 0x04, 0xf3, 0x92, 0xf8, 0xd0, 0xdc, 0xce, 0xb7, 0xe9, 0x8c, 0xfe, 0x46, + 0x76, 0x30, 0x9d, 0xcf, 0xdc, 0xc8, 0x0e, 0x66, 0xf3, 0xfd, 0x18, 0x57, 0x10, 0x13, 0x01, 0xf0, + 0x33, 0x10, 0xf3, 0xae, 0xb1, 0x7c, 0xc4, 0x5d, 0xcc, 0x0e, 0x36, 0xe6, 0x62, 0x44, 0x36, 0x47, + 0xdc, 0xdf, 0xec, 0x4b, 0x2a, 0x9b, 0xe3, 0xbc, 0xe6, 0x42, 0x36, 0xbf, 0x99, 0x82, 0x42, 0xa2, + 0x6c, 0x4a, 0x87, 0xf4, 0xe0, 0xe9, 0xe0, 0xb2, 0x9b, 0x7f, 0x31, 0x0d, 0x13, 0x55, 0xd3, 0xa5, + 0xcb, 0x7c, 0xc7, 0x78, 0xc4, 0xa7, 0x8a, 0x9b, 0x30, 0x2c, 0x7d, 0x8c, 0xe8, 0xf3, 0x47, 0xfc, + 0xd3, 0x8a, 0x00, 0xd5, 0x85, 0x93, 0x5c, 0xfa, 0xe0, 0x1c, 0xf6, 0xa2, 0x42, 0x3e, 0xe2, 0x73, + 0xce, 0xd1, 0x10, 0xf2, 0x11, 0x9f, 0xbc, 0x1e, 0x50, 0x21, 0x7f, 0x3a, 0x03, 0x27, 0x12, 0x2a, + 0x27, 0x17, 0xf1, 0xa1, 0x21, 0x86, 0x11, 0x4c, 0x05, 0xae, 0x01, 0x4e, 0x67, 0x09, 0x23, 0x08, + 0xaa, 0x1e, 0x92, 0x2c, 0x62, 0x0c, 0x8e, 0x85, 0x6a, 0xa5, 0x2c, 0xa4, 0xaa, 0x48, 0xd1, 0x44, + 0x18, 0x38, 0xe9, 0xcb, 0xfc, 0x38, 0x1d, 0x96, 0xa1, 0x37, 0x23, 0x71, 0x3a, 0x58, 0x19, 0xf2, + 0x31, 0x18, 0x2a, 0xbd, 0xd3, 0xb1, 0x29, 0xf2, 0xe5, 0x12, 0x7f, 0xd2, 0xe7, 0xeb, 0x21, 0x92, + 0x38, 0xf3, 0x90, 0x23, 0x8c, 0x22, 0xca, 0x3b, 0x60, 0x48, 0x16, 0x20, 0x77, 0xdd, 0x70, 0x67, + 0x3a, 0x4b, 0xa2, 0x17, 0xfc, 0x50, 0x83, 0x1c, 0x9a, 0xc4, 0x17, 0x77, 0xe5, 0x3c, 0x64, 0xba, + 0xbc, 0x07, 0xe2, 0x05, 0xc8, 0x2c, 0xf4, 0x97, 0xee, 0xd4, 0xd5, 0x92, 0xe8, 0x89, 0xc7, 0xe4, + 0x80, 0x2a, 0xa5, 0xae, 0xec, 0x30, 0x3c, 0x84, 0x26, 0x87, 0x90, 0x42, 0x7a, 0xe5, 0x6b, 0x53, + 0x70, 0xae, 0xbb, 0xf0, 0xc8, 0xb3, 0x30, 0xa0, 0x5a, 0x2d, 0x5a, 0x52, 0xe7, 0x45, 0xcf, 0xa0, + 0x34, 0xbd, 0x8c, 0xd6, 0xb2, 0x34, 0x05, 0x19, 0xf9, 0x10, 0x0c, 0x57, 0x1d, 0xa7, 0x43, 0xed, + 0xfa, 0xf3, 0xb7, 0xd4, 0xaa, 0xd8, 0xb2, 0xe2, 0x96, 0xc8, 0x40, 0x70, 0xc3, 0x79, 0x3e, 0x12, + 0xc7, 0x50, 0xa6, 0x57, 0xbe, 0x3a, 0x05, 0xe7, 0x7b, 0x09, 0x9d, 0x3c, 0x0f, 0x83, 0x8b, 0xd4, + 0xd4, 0x4c, 0xb7, 0x5a, 0x11, 0x4d, 0xc2, 0x1d, 0xa0, 0x8b, 0xb0, 0xf0, 0x46, 0xc6, 0x27, 0x64, + 0x85, 0xf8, 0xa1, 0xb0, 0xff, 0x9e, 0x85, 0x1f, 0x60, 0x23, 0x2c, 0x52, 0xc8, 0x23, 0x54, 0x3e, + 0x0a, 0x67, 0xbb, 0xf6, 0x11, 0xf9, 0x30, 0x8c, 0x2c, 0xd8, 0xcb, 0x9a, 0x69, 0xbc, 0xc3, 0x87, + 0x58, 0x2a, 0xd8, 0x65, 0x5b, 0x12, 0x5c, 0xde, 0xf9, 0xc9, 0xf4, 0xca, 0x12, 0x14, 0xba, 0x75, + 0x18, 0x99, 0x86, 0x31, 0x8c, 0x74, 0x5f, 0x32, 0x9b, 0x2b, 0x96, 0x1d, 0xc8, 0x1e, 0x3d, 0x30, + 0x5d, 0x86, 0x69, 0x68, 0x88, 0x8a, 0xf4, 0x41, 0xa4, 0x94, 0xf2, 0x4b, 0x69, 0x18, 0xa9, 0xb5, + 0x3a, 0xcb, 0x86, 0xb4, 0x30, 0xef, 0x79, 0x3f, 0xe3, 0xed, 0x2e, 0xd2, 0xbb, 0xdb, 0x5d, 0xb0, + 0xe9, 0xcc, 0xde, 0xe3, 0x74, 0xe6, 0x95, 0x23, 0xaf, 0x42, 0xae, 0x8d, 0xdf, 0x11, 0xbd, 0x07, + 0xe0, 0x5f, 0xd7, 0xed, 0x1e, 0x80, 0x97, 0x61, 0xf3, 0x57, 0x73, 0x1f, 0xf3, 0x57, 0x50, 0x56, + 0x12, 0x68, 0xb0, 0x08, 0x1f, 0x0b, 0xf4, 0x40, 0x04, 0x1a, 0x2c, 0xb8, 0xc7, 0x02, 0xdd, 0x87, + 0x40, 0xbf, 0x3f, 0x0d, 0x63, 0xe1, 0x2a, 0xc9, 0xb3, 0x30, 0xcc, 0xab, 0xe1, 0xe7, 0x6e, 0x29, + 0xc9, 0x3b, 0x23, 0x00, 0xab, 0xc0, 0x7f, 0x88, 0x03, 0xc4, 0xf1, 0x15, 0xcd, 0x69, 0x04, 0x27, + 0x60, 0xfc, 0x1d, 0xc2, 0x20, 0x7f, 0xd1, 0x17, 0x41, 0xa9, 0x63, 0x2b, 0x9a, 0x53, 0x0e, 0x7e, + 0x93, 0x29, 0x20, 0x36, 0xed, 0x38, 0x34, 0xcc, 0x20, 0x8b, 0x0c, 0xf8, 0xea, 0x11, 0xc3, 0xaa, + 0x13, 0x1c, 0x26, 0xb3, 0xf9, 0xb8, 0xdf, 0x6c, 0x54, 0x86, 0xfe, 0xde, 0xa7, 0xc8, 0x4f, 0x6c, + 0x6d, 0x16, 0x4f, 0x49, 0xf4, 0xc9, 0xc7, 0xc8, 0x9c, 0xa0, 0xa2, 0xb9, 0x1a, 0x3f, 0xf4, 0xf0, + 0x3a, 0x40, 0xf9, 0xca, 0x6f, 0x4c, 0x41, 0xff, 0x82, 0x49, 0x17, 0xee, 0x92, 0xe7, 0x60, 0x88, + 0x69, 0xcc, 0xac, 0xc5, 0x3a, 0x33, 0x25, 0x1e, 0x02, 0x49, 0xaa, 0x84, 0x88, 0x99, 0x3e, 0x35, + 0xa0, 0x22, 0x2f, 0x00, 0x04, 0xce, 0xba, 0x42, 0xfd, 0x88, 0x5c, 0x86, 0x63, 0x66, 0xfa, 0x54, + 0x89, 0xce, 0x2b, 0x25, 0x5c, 0x1d, 0x33, 0xf1, 0x52, 0x1c, 0xe3, 0x95, 0x12, 0x03, 0x64, 0x16, + 0x08, 0xfb, 0x55, 0xd3, 0x1c, 0x67, 0xdd, 0xb2, 0xf5, 0xf2, 0x8a, 0x66, 0x2e, 0xd3, 0xe8, 0xf6, + 0x34, 0x4e, 0x31, 0xd3, 0xa7, 0x26, 0x94, 0x23, 0x1f, 0x84, 0x11, 0xf9, 0xf1, 0x77, 0xf4, 0xf5, + 0x92, 0x8c, 0x9b, 0xe9, 0x53, 0x43, 0xb4, 0xe4, 0xfd, 0x30, 0x2c, 0x7e, 0xdf, 0xb0, 0xc4, 0xd3, + 0x08, 0x29, 0x26, 0x9c, 0x84, 0x9a, 0xe9, 0x53, 0x65, 0x4a, 0xa9, 0xd2, 0x9a, 0x6d, 0x98, 0xae, + 0x78, 0x33, 0x1b, 0xad, 0x14, 0x71, 0x52, 0xa5, 0xf8, 0x9b, 0x7c, 0x08, 0x46, 0xfd, 0x60, 0x7b, + 0xe8, 0x98, 0xc2, 0x6f, 0x17, 0x4e, 0x45, 0x0a, 0x73, 0xe4, 0x4c, 0x9f, 0x1a, 0xa6, 0x26, 0x97, + 0x20, 0xa7, 0x52, 0xc7, 0x78, 0xc7, 0x7b, 0xf7, 0x30, 0x26, 0x0d, 0x74, 0xe3, 0x1d, 0x26, 0x25, + 0x81, 0x67, 0xbd, 0x13, 0x3c, 0xb4, 0x10, 0x77, 0x01, 0x24, 0x52, 0xcb, 0x94, 0xa9, 0xb3, 0xde, + 0x91, 0x5e, 0xd9, 0xbc, 0x1e, 0x84, 0x20, 0x14, 0x39, 0xc2, 0x87, 0xa3, 0xb1, 0x5e, 0x64, 0xec, + 0x4c, 0x9f, 0x1a, 0xa1, 0x97, 0xa4, 0x5a, 0x31, 0x9c, 0x55, 0x11, 0x9e, 0x3a, 0x2a, 0x55, 0x86, + 0x92, 0xa4, 0xca, 0x7e, 0x4a, 0x55, 0xcf, 0x53, 0x77, 0xdd, 0xb2, 0x57, 0x45, 0x30, 0xea, 0x68, + 0xd5, 0x02, 0x2b, 0x55, 0x2d, 0x20, 0x72, 0xd5, 0xc1, 0x63, 0xf9, 0x58, 0xd5, 0x9a, 0xab, 0xc9, + 0x55, 0xf3, 0xa3, 0x4e, 0xaf, 0x93, 0x66, 0xa9, 0x76, 0x8f, 0x16, 0xc6, 0x13, 0x3b, 0x14, 0x71, + 0x52, 0x87, 0xe2, 0x6f, 0x56, 0x69, 0xcd, 0xb2, 0xdd, 0x69, 0xcb, 0x5e, 0xd7, 0x6c, 0xbd, 0x90, + 0x0f, 0x57, 0x2a, 0xa1, 0x58, 0xa5, 0xd2, 0x4f, 0xd6, 0x41, 0x6f, 0x3e, 0xf7, 0x9c, 0x57, 0x6e, + 0x22, 0xdc, 0x41, 0x01, 0x86, 0x75, 0x50, 0xf0, 0x8b, 0x14, 0x31, 0x03, 0x7e, 0x81, 0x20, 0xf9, + 0xb0, 0xdf, 0xc2, 0x72, 0x6d, 0xa6, 0x4f, 0xc5, 0xdc, 0xf8, 0x0a, 0x64, 0xa7, 0xee, 0xd3, 0x66, + 0xe1, 0x04, 0x52, 0x8c, 0x78, 0x14, 0x0c, 0x36, 0xd3, 0xa7, 0x22, 0x8e, 0x4d, 0x11, 0x7e, 0xfe, + 0xd9, 0xc2, 0xc9, 0xf0, 0x14, 0xe1, 0x23, 0xd8, 0x14, 0x11, 0x64, 0xa9, 0x9d, 0x8e, 0x67, 0x59, + 0x2d, 0x9c, 0x0a, 0xaf, 0x35, 0x51, 0xfc, 0x4c, 0x9f, 0x1a, 0xcf, 0xcc, 0xfa, 0xfe, 0x50, 0xe2, + 0xd1, 0xc2, 0xe9, 0x48, 0x20, 0xc6, 0x00, 0xc5, 0xc4, 0x25, 0xa7, 0x28, 0x5d, 0x80, 0x13, 0x3c, + 0x6f, 0xb9, 0x08, 0xa5, 0x28, 0x26, 0xab, 0x33, 0xe1, 0x9d, 0x61, 0x02, 0xc9, 0x4c, 0x9f, 0x9a, + 0x54, 0x92, 0x94, 0x63, 0x09, 0x3c, 0x0b, 0x85, 0xf0, 0x23, 0xaf, 0x08, 0x7a, 0xa6, 0x4f, 0x8d, + 0xa5, 0xfc, 0x7c, 0x41, 0xce, 0x9c, 0x59, 0x38, 0x1b, 0xee, 0xc4, 0x00, 0xc3, 0x3a, 0x51, 0xca, + 0xb0, 0xf9, 0x82, 0x9c, 0x4d, 0xb1, 0x70, 0x2e, 0x5e, 0x2a, 0x98, 0x39, 0xa5, 0xac, 0x8b, 0x6a, + 0x72, 0x82, 0xb8, 0xc2, 0x23, 0xe1, 0xe7, 0x20, 0x49, 0x34, 0x33, 0x7d, 0x6a, 0x72, 0x72, 0x39, + 0x35, 0x39, 0xb3, 0x5a, 0xe1, 0x7c, 0x2f, 0x9e, 0x7e, 0xeb, 0x92, 0xb3, 0xb2, 0x69, 0x3d, 0xf2, + 0x5c, 0x15, 0x2e, 0x84, 0xf7, 0x90, 0x5d, 0x09, 0x67, 0xfa, 0xd4, 0x1e, 0xd9, 0xb2, 0x6e, 0x75, + 0x49, 0x3a, 0x55, 0x78, 0x14, 0xd9, 0x5f, 0x90, 0xb6, 0xa8, 0x71, 0xa2, 0x99, 0x3e, 0xb5, 0x4b, + 0xca, 0xaa, 0x5b, 0x5d, 0x72, 0x12, 0x15, 0x8a, 0x3d, 0xd9, 0xfa, 0xf2, 0xe8, 0x92, 0xd1, 0x68, + 0x21, 0x31, 0x9d, 0x4f, 0xe1, 0xb1, 0xb0, 0xea, 0x26, 0x90, 0x30, 0xd5, 0x4d, 0x4a, 0x04, 0xb4, + 0x90, 0x98, 0x7f, 0xa6, 0xf0, 0x78, 0x0f, 0x86, 0x7e, 0x1b, 0x13, 0x33, 0xd7, 0x2c, 0x24, 0x26, + 0x80, 0x29, 0x28, 0x61, 0x86, 0x09, 0x24, 0x8c, 0x61, 0x52, 0xea, 0x98, 0x85, 0xc4, 0x3c, 0x21, + 0x85, 0x27, 0x7a, 0x30, 0x0c, 0x5a, 0x98, 0x94, 0x61, 0xe4, 0xfd, 0xa1, 0x44, 0x1d, 0x85, 0x27, + 0xc3, 0xf3, 0x86, 0x84, 0x62, 0xf3, 0x86, 0x9c, 0xd2, 0xa3, 0x1c, 0x8b, 0x22, 0x5e, 0x78, 0x2a, + 0x3c, 0xcc, 0x23, 0x68, 0x36, 0xcc, 0xa3, 0x71, 0xc7, 0xcb, 0xb1, 0x48, 0xc7, 0x85, 0x8b, 0xdd, + 0x98, 0x20, 0x3a, 0xcc, 0x84, 0xc7, 0x46, 0xae, 0x26, 0x84, 0xda, 0x2d, 0xbc, 0x27, 0xec, 0xa0, + 0x10, 0x23, 0x98, 0xe9, 0x53, 0x13, 0x02, 0xf4, 0xaa, 0xc9, 0x71, 0xe5, 0x0a, 0x97, 0xc2, 0xc3, + 0x36, 0x89, 0x86, 0x0d, 0xdb, 0xc4, 0x98, 0x74, 0xb3, 0x49, 0xfe, 0x5c, 0x85, 0xcb, 0x61, 0xc3, + 0x2c, 0x4e, 0xc1, 0x0c, 0xb3, 0x04, 0x3f, 0x30, 0x35, 0x39, 0x5a, 0x59, 0xe1, 0xe9, 0x9e, 0x2d, + 0x44, 0x9a, 0x84, 0x16, 0xf2, 0xe0, 0x5d, 0x81, 0xed, 0x74, 0xab, 0xdd, 0xb2, 0x34, 0xbd, 0xf0, + 0xde, 0x44, 0xdb, 0x89, 0x23, 0x25, 0xdb, 0x89, 0x03, 0xd8, 0x2a, 0x2f, 0x3b, 0xeb, 0x14, 0x9e, + 0x09, 0xaf, 0xf2, 0x32, 0x8e, 0xad, 0xf2, 0x21, 0xc7, 0x9e, 0x72, 0xcc, 0xb1, 0xa5, 0xf0, 0xbe, + 0xb0, 0x02, 0x44, 0xd0, 0x4c, 0x01, 0xa2, 0xae, 0x30, 0x9f, 0xe8, 0xee, 0x0a, 0x52, 0xb8, 0x12, + 0x3e, 0x0b, 0xeb, 0x46, 0x37, 0xd3, 0xa7, 0x76, 0x77, 0x27, 0xa9, 0x26, 0x78, 0x76, 0x14, 0xae, + 0x86, 0x15, 0x2c, 0x46, 0xc0, 0x14, 0x2c, 0xee, 0x0f, 0x52, 0x4d, 0x70, 0xcd, 0x28, 0x3c, 0xdb, + 0x95, 0x95, 0xff, 0xcd, 0x09, 0x0e, 0x1d, 0x2f, 0xc8, 0xbe, 0x15, 0x85, 0xe7, 0xc2, 0x8b, 0x5d, + 0x80, 0x61, 0x8b, 0x9d, 0xe4, 0x83, 0xf1, 0x82, 0xec, 0x55, 0x50, 0xb8, 0x16, 0x2f, 0x15, 0x2c, + 0x91, 0x92, 0xf7, 0x81, 0x9a, 0xfc, 0x18, 0xbf, 0xf0, 0x7c, 0x58, 0xeb, 0x92, 0x68, 0x98, 0xd6, + 0x25, 0x3e, 0xe4, 0x9f, 0x8e, 0xbf, 0xa9, 0x2f, 0xbc, 0x10, 0xdd, 0x65, 0x87, 0xf1, 0xcc, 0xf2, + 0x89, 0xbd, 0xc3, 0x7f, 0x3d, 0x1a, 0xf4, 0xb4, 0xf0, 0x62, 0xe4, 0x5e, 0x3d, 0x84, 0x65, 0xf6, + 0x6d, 0x24, 0x48, 0xea, 0xeb, 0xd1, 0x38, 0xa1, 0x85, 0x97, 0x92, 0x39, 0xf8, 0xba, 0x12, 0x8d, + 0x2b, 0xfa, 0x7a, 0x34, 0xb4, 0x66, 0xe1, 0xfd, 0xc9, 0x1c, 0x7c, 0xe9, 0x46, 0x43, 0x71, 0x3e, + 0x27, 0x25, 0x14, 0x29, 0x7c, 0x20, 0x6c, 0x3a, 0xfa, 0x08, 0x66, 0x3a, 0x06, 0x69, 0x47, 0x9e, + 0x93, 0x12, 0x71, 0x14, 0x5e, 0x8e, 0x15, 0xf1, 0x1b, 0x2b, 0xa5, 0xeb, 0x78, 0x4e, 0x4a, 0x60, + 0x51, 0xf8, 0x60, 0xac, 0x88, 0xdf, 0x3a, 0x29, 0xcd, 0x85, 0xde, 0xcb, 0xd7, 0xbc, 0xf0, 0x4a, + 0xa2, 0xe3, 0x6c, 0x02, 0xe5, 0x4c, 0x9f, 0xda, 0xcb, 0x67, 0xfd, 0x13, 0xdd, 0x3d, 0x14, 0x0a, + 0xaf, 0x86, 0x87, 0x70, 0x37, 0x3a, 0x36, 0x84, 0xbb, 0x7a, 0x39, 0x7c, 0x28, 0x12, 0x15, 0xa8, + 0xf0, 0xa1, 0xf0, 0x14, 0x17, 0x42, 0xb2, 0x29, 0x2e, 0x1a, 0x43, 0x28, 0x14, 0xee, 0xa6, 0xf0, + 0xe1, 0xf0, 0x14, 0x27, 0xe3, 0xd8, 0x14, 0x17, 0x0a, 0x8d, 0x53, 0x8e, 0x45, 0x61, 0x29, 0xbc, + 0x16, 0x9e, 0xe2, 0x22, 0x68, 0x36, 0xc5, 0x45, 0xe3, 0xb6, 0x7c, 0x28, 0x12, 0x8c, 0xa4, 0xf0, + 0x7a, 0x72, 0xfb, 0x11, 0x29, 0xb7, 0x9f, 0x87, 0x2e, 0x51, 0x93, 0xa3, 0x6a, 0x14, 0x4a, 0xe1, + 0xf1, 0x9b, 0x44, 0xc3, 0xc6, 0x6f, 0x62, 0x44, 0x8e, 0xe8, 0xc6, 0x41, 0x68, 0xd5, 0x64, 0x8f, + 0x8d, 0x43, 0x60, 0x8a, 0x24, 0x80, 0x43, 0x7b, 0x64, 0xbe, 0x11, 0x2a, 0x77, 0xd9, 0x23, 0x7b, + 0xdb, 0xa0, 0x08, 0x3d, 0x9b, 0x5d, 0x63, 0xcf, 0xdc, 0x0b, 0x95, 0xf0, 0xec, 0x1a, 0x23, 0x60, + 0xb3, 0x6b, 0xfc, 0x71, 0xfc, 0x34, 0xe4, 0x85, 0x16, 0x71, 0x3f, 0x00, 0xc3, 0x5c, 0x2e, 0x4c, + 0x45, 0x5c, 0x98, 0x23, 0x78, 0x36, 0x3b, 0x45, 0x61, 0xb8, 0x5e, 0x73, 0x58, 0xb9, 0x65, 0xb4, + 0x97, 0x2c, 0xcd, 0xd6, 0xeb, 0xd4, 0xd4, 0x0b, 0xd3, 0x91, 0xf5, 0x3a, 0x81, 0x06, 0xd7, 0xeb, + 0x04, 0x38, 0x06, 0xdb, 0x8c, 0xc0, 0x55, 0xda, 0xa4, 0xc6, 0x3d, 0x5a, 0xb8, 0x8e, 0x6c, 0x8b, + 0xdd, 0xd8, 0x0a, 0xb2, 0x99, 0x3e, 0xb5, 0x1b, 0x07, 0x66, 0xab, 0xcf, 0x6d, 0xd4, 0xdf, 0x98, + 0xf5, 0x03, 0xb9, 0xd4, 0x6c, 0xda, 0xd6, 0x6c, 0x5a, 0x98, 0x09, 0xdb, 0xea, 0x89, 0x44, 0xcc, + 0x56, 0x4f, 0x44, 0xc4, 0xd9, 0x7a, 0x63, 0xa1, 0xda, 0x8b, 0x6d, 0x30, 0x22, 0x92, 0x4b, 0xb3, + 0xd9, 0x29, 0x8c, 0x60, 0x02, 0x9a, 0xb5, 0xcc, 0x65, 0x3c, 0xa9, 0xb8, 0x11, 0x9e, 0x9d, 0xba, + 0x53, 0xb2, 0xd9, 0xa9, 0x3b, 0x96, 0xa9, 0x7a, 0x18, 0xcb, 0xc7, 0xe0, 0xcd, 0xb0, 0xaa, 0x27, + 0x90, 0x30, 0x55, 0x4f, 0x00, 0xc7, 0x19, 0xaa, 0xd4, 0xa1, 0x6e, 0x61, 0xb6, 0x17, 0x43, 0x24, + 0x89, 0x33, 0x44, 0x70, 0x9c, 0xe1, 0x34, 0x75, 0x9b, 0x2b, 0x85, 0xb9, 0x5e, 0x0c, 0x91, 0x24, + 0xce, 0x10, 0xc1, 0x6c, 0xb3, 0x19, 0x06, 0x4f, 0x76, 0x5a, 0xab, 0x5e, 0x9f, 0xcd, 0x87, 0x37, + 0x9b, 0x5d, 0x09, 0xd9, 0x66, 0xb3, 0x2b, 0x92, 0x7c, 0xf5, 0x8e, 0x1d, 0x0d, 0x0a, 0x0b, 0x58, + 0xe1, 0x95, 0xc0, 0x2e, 0xd8, 0x49, 0xa9, 0x99, 0x3e, 0x75, 0xa7, 0x8e, 0x0c, 0xef, 0xf5, 0x5f, + 0xe5, 0x16, 0x6a, 0x58, 0xd5, 0xb8, 0x7f, 0x56, 0xc1, 0xc1, 0x33, 0x7d, 0xaa, 0xff, 0x6e, 0xf7, + 0xfd, 0x30, 0x8c, 0x1f, 0x55, 0x35, 0x0d, 0xb7, 0x32, 0x59, 0x78, 0x23, 0xbc, 0x65, 0x92, 0x50, + 0x6c, 0xcb, 0x24, 0xfd, 0x64, 0x93, 0x38, 0xfe, 0xe4, 0x53, 0x4c, 0x65, 0xb2, 0xa0, 0x86, 0x27, + 0xf1, 0x10, 0x92, 0x4d, 0xe2, 0x21, 0x80, 0x5f, 0x6f, 0xc5, 0xb6, 0xda, 0x95, 0xc9, 0x42, 0x3d, + 0xa1, 0x5e, 0x8e, 0xf2, 0xeb, 0xe5, 0x3f, 0xfd, 0x7a, 0xeb, 0x2b, 0x1d, 0xb7, 0xc2, 0xbe, 0x71, + 0x31, 0xa1, 0x5e, 0x0f, 0xe9, 0xd7, 0xeb, 0x01, 0xd8, 0x54, 0x88, 0x80, 0x9a, 0x6d, 0xb1, 0x49, + 0xfb, 0xa6, 0xd1, 0x6a, 0x15, 0x6e, 0x85, 0xa7, 0xc2, 0x28, 0x9e, 0x4d, 0x85, 0x51, 0x18, 0x33, + 0x3d, 0x79, 0xab, 0xe8, 0x52, 0x67, 0xb9, 0x70, 0x3b, 0x6c, 0x7a, 0x06, 0x18, 0x66, 0x7a, 0x06, + 0xbf, 0x70, 0x77, 0xc1, 0x7e, 0xa9, 0xf4, 0xae, 0x4d, 0x9d, 0x95, 0xc2, 0x9d, 0xc8, 0xee, 0x42, + 0xc2, 0xe1, 0xee, 0x42, 0xfa, 0x4d, 0x96, 0xe1, 0x91, 0xd0, 0x42, 0xe3, 0xdd, 0xda, 0xd4, 0xa9, + 0x66, 0x37, 0x57, 0x0a, 0x6f, 0x22, 0xab, 0x27, 0x12, 0x97, 0xaa, 0x30, 0xe9, 0x4c, 0x9f, 0xda, + 0x8b, 0x13, 0x6e, 0xcb, 0xdf, 0x98, 0xe5, 0x11, 0xb9, 0xd5, 0x5a, 0xd9, 0xdb, 0x84, 0xbe, 0x15, + 0xd9, 0x96, 0xc7, 0x49, 0x70, 0x5b, 0x1e, 0x07, 0x93, 0x36, 0x3c, 0x1a, 0xd9, 0xaa, 0xcd, 0x69, + 0x2d, 0xb6, 0x2f, 0xa1, 0x7a, 0x4d, 0x6b, 0xae, 0x52, 0xb7, 0xf0, 0x11, 0xe4, 0x7d, 0xb1, 0xcb, + 0x86, 0x2f, 0x42, 0x3d, 0xd3, 0xa7, 0x6e, 0xc3, 0x8f, 0x28, 0x90, 0xad, 0x4f, 0x2f, 0xd6, 0x0a, + 0x1f, 0x0d, 0x9f, 0x6f, 0x32, 0xd8, 0x4c, 0x9f, 0x8a, 0x38, 0x66, 0xa5, 0xdd, 0x6a, 0x2f, 0xdb, + 0x9a, 0x4e, 0xb9, 0xa1, 0x85, 0xb6, 0x9b, 0x30, 0x40, 0x3f, 0x16, 0xb6, 0xd2, 0xba, 0xd1, 0x31, + 0x2b, 0xad, 0x1b, 0x8e, 0x29, 0x6a, 0x28, 0xf9, 0x54, 0xe1, 0xe3, 0x61, 0x45, 0x0d, 0x21, 0x99, + 0xa2, 0x86, 0x53, 0x55, 0xbd, 0x09, 0xa7, 0xfd, 0xfd, 0xbc, 0x58, 0x7f, 0x79, 0xa7, 0x15, 0x3e, + 0x81, 0x7c, 0x1e, 0x8d, 0x5d, 0x06, 0x84, 0xa8, 0x66, 0xfa, 0xd4, 0x2e, 0xe5, 0xd9, 0x8a, 0x1b, + 0x4b, 0x00, 0x29, 0xcc, 0x8b, 0x2f, 0x0b, 0xaf, 0xb8, 0x5d, 0xc8, 0xd8, 0x8a, 0xdb, 0x05, 0x95, + 0xc8, 0x5c, 0x08, 0x55, 0xdb, 0x86, 0xb9, 0x2f, 0xd3, 0x6e, 0x1c, 0x12, 0x99, 0x0b, 0x4b, 0x6d, + 0x69, 0x1b, 0xe6, 0xbe, 0xb5, 0xd6, 0x8d, 0x03, 0xb9, 0x04, 0xb9, 0x7a, 0x7d, 0x4e, 0xed, 0x98, + 0x85, 0x66, 0xe4, 0x39, 0x32, 0x42, 0x67, 0xfa, 0x54, 0x81, 0x67, 0x66, 0xd0, 0x54, 0x4b, 0x73, + 0x5c, 0xa3, 0xe9, 0xe0, 0x88, 0xf1, 0x46, 0x88, 0x1e, 0x36, 0x83, 0x92, 0x68, 0x98, 0x19, 0x94, + 0x04, 0x67, 0xf6, 0x62, 0x59, 0x73, 0x1c, 0xcd, 0xd4, 0x6d, 0x6d, 0x12, 0x97, 0x09, 0x1a, 0x71, + 0x06, 0x0c, 0x61, 0x99, 0xbd, 0x18, 0x86, 0xe0, 0xe1, 0xbb, 0x07, 0xf1, 0xcc, 0x9c, 0xbb, 0x91, + 0xc3, 0xf7, 0x08, 0x1e, 0x0f, 0xdf, 0x23, 0x30, 0xb4, 0x3b, 0x3d, 0x98, 0x4a, 0x97, 0x0d, 0x26, + 0xa2, 0xc2, 0x72, 0xc4, 0xee, 0x8c, 0x12, 0xa0, 0xdd, 0x19, 0x05, 0x86, 0x9a, 0xe4, 0x2d, 0xb7, + 0x2b, 0x5d, 0x9a, 0x14, 0xac, 0xb2, 0xb1, 0x32, 0x6c, 0xfd, 0x0e, 0x06, 0x47, 0x65, 0xc3, 0xd4, + 0xd6, 0xac, 0xca, 0xa4, 0x27, 0x75, 0x23, 0xbc, 0x7e, 0x77, 0x25, 0x64, 0xeb, 0x77, 0x57, 0x24, + 0x9b, 0x5d, 0xbd, 0x8d, 0xd6, 0x8a, 0x66, 0x53, 0xbd, 0x62, 0xd8, 0x78, 0xb2, 0xb8, 0xc1, 0xb7, + 0x86, 0x6f, 0x87, 0x67, 0xd7, 0x1e, 0xa4, 0x6c, 0x76, 0xed, 0x81, 0x66, 0x46, 0x5e, 0x32, 0x5a, + 0xa5, 0x9a, 0x5e, 0x58, 0x0d, 0x1b, 0x79, 0xdd, 0x29, 0x99, 0x91, 0xd7, 0x1d, 0xdb, 0xfd, 0x73, + 0xee, 0xd8, 0x86, 0x4b, 0x0b, 0xad, 0x9d, 0x7c, 0x0e, 0x92, 0x76, 0xff, 0x1c, 0x44, 0xb3, 0x0d, + 0x61, 0xb4, 0x43, 0xd6, 0xc2, 0x1b, 0xc2, 0x78, 0x37, 0x44, 0x4b, 0x30, 0x8b, 0x45, 0x78, 0x3d, + 0x16, 0xcc, 0xb0, 0xc5, 0x22, 0xc0, 0xcc, 0x62, 0x09, 0xfc, 0x22, 0x43, 0xbe, 0x6e, 0x05, 0x2b, + 0xbc, 0x86, 0xca, 0x38, 0xb6, 0x86, 0x86, 0xfc, 0xe2, 0xde, 0x1f, 0x72, 0xe4, 0x28, 0xb4, 0xc3, + 0x56, 0x87, 0x84, 0x62, 0x56, 0x87, 0xec, 0xf2, 0x51, 0x86, 0x71, 0xbc, 0x05, 0x57, 0x3b, 0xfe, + 0x3d, 0xce, 0x27, 0xc3, 0x9f, 0x19, 0x41, 0xb3, 0xcf, 0x8c, 0x80, 0x42, 0x4c, 0xc4, 0xb4, 0x65, + 0x77, 0x61, 0x12, 0x9c, 0x0f, 0x46, 0x40, 0x64, 0x16, 0x48, 0xbd, 0x34, 0x37, 0x5b, 0xd5, 0x6b, + 0xf2, 0x15, 0x99, 0x13, 0x3e, 0x81, 0x8d, 0x53, 0xcc, 0xf4, 0xa9, 0x09, 0xe5, 0xc8, 0xdb, 0x70, + 0x5e, 0x40, 0x45, 0xe8, 0x80, 0x9a, 0x6d, 0xdd, 0x33, 0x74, 0x7f, 0x41, 0x70, 0xc3, 0x0f, 0x05, + 0x7b, 0xd1, 0xce, 0xf4, 0xa9, 0x3d, 0x79, 0x75, 0xaf, 0x4b, 0xac, 0x0f, 0x9d, 0x9d, 0xd4, 0xe5, + 0x2f, 0x12, 0x3d, 0x79, 0x75, 0xaf, 0x4b, 0xc8, 0xfd, 0xde, 0x4e, 0xea, 0xf2, 0x3b, 0xa1, 0x27, + 0x2f, 0xe2, 0x40, 0xb1, 0x17, 0xbe, 0xd4, 0x6a, 0x15, 0xd6, 0xb1, 0xba, 0xf7, 0xec, 0xa4, 0xba, + 0x12, 0x1a, 0x9c, 0xdb, 0x71, 0x64, 0xb3, 0xf4, 0x42, 0x9b, 0x9a, 0xf5, 0xd0, 0x02, 0x74, 0x3f, + 0x3c, 0x4b, 0xc7, 0x08, 0xd8, 0x2c, 0x1d, 0x03, 0xb2, 0x01, 0x25, 0xfb, 0x03, 0x15, 0x36, 0xc2, + 0x03, 0x4a, 0xc6, 0xb1, 0x01, 0x15, 0xf2, 0x1d, 0x5a, 0x80, 0x13, 0x0b, 0xab, 0xae, 0xe6, 0x59, + 0x90, 0x8e, 0xe8, 0xca, 0x77, 0x22, 0x97, 0x4c, 0x71, 0x12, 0xbc, 0x64, 0x8a, 0x83, 0xd9, 0x18, + 0x61, 0xe0, 0xfa, 0x86, 0xd9, 0x9c, 0xd6, 0x8c, 0x56, 0xc7, 0xa6, 0x85, 0xbf, 0x12, 0x1e, 0x23, + 0x11, 0x34, 0x1b, 0x23, 0x11, 0x10, 0x5b, 0xa0, 0x19, 0xa8, 0xe4, 0x38, 0xc6, 0xb2, 0x29, 0xf6, + 0x95, 0x9d, 0x96, 0x5b, 0xf8, 0xff, 0x85, 0x17, 0xe8, 0x24, 0x1a, 0xb6, 0x40, 0x27, 0xc1, 0xf1, + 0xd4, 0x89, 0xf5, 0x02, 0x5b, 0x3c, 0xe4, 0xbb, 0xca, 0xff, 0x7f, 0xe4, 0xd4, 0x29, 0x81, 0x06, + 0x4f, 0x9d, 0x12, 0xe0, 0x6c, 0x7d, 0xe4, 0x36, 0xd9, 0xac, 0xe1, 0xdf, 0x55, 0xff, 0x17, 0xe1, + 0xf5, 0x31, 0x8a, 0x67, 0xeb, 0x63, 0x14, 0x16, 0xe6, 0x23, 0xba, 0xe0, 0xbf, 0xec, 0xc6, 0xc7, + 0x97, 0x7f, 0xac, 0x0c, 0xb9, 0x2e, 0xf3, 0x11, 0x23, 0xe5, 0xaf, 0xa6, 0xba, 0x31, 0xf2, 0x87, + 0x47, 0xac, 0x50, 0x98, 0x91, 0x4a, 0xef, 0x19, 0x74, 0xbd, 0xf0, 0xe5, 0x5d, 0x19, 0x71, 0x82, + 0x30, 0x23, 0x0e, 0x23, 0x6f, 0xc1, 0xe9, 0x00, 0x36, 0x47, 0xd7, 0x96, 0xfc, 0x99, 0xe9, 0xaf, + 0xa5, 0xc2, 0x66, 0x70, 0x32, 0x19, 0x33, 0x83, 0x93, 0x31, 0x49, 0xac, 0x85, 0xe8, 0xfe, 0xfa, + 0x36, 0xac, 0x7d, 0x09, 0x76, 0x61, 0x90, 0xc4, 0x5a, 0x48, 0xf3, 0x2b, 0xb6, 0x61, 0xed, 0xcb, + 0xb4, 0x0b, 0x03, 0xf2, 0x35, 0x29, 0xb8, 0x98, 0x8c, 0x2a, 0xb5, 0x5a, 0xd3, 0x96, 0x1d, 0xe0, + 0x0a, 0x5f, 0x99, 0x0a, 0x1f, 0x34, 0xec, 0xac, 0xd8, 0x4c, 0x9f, 0xba, 0xc3, 0x0a, 0xc8, 0x87, + 0x61, 0xb4, 0xd4, 0xd1, 0x0d, 0x17, 0x2f, 0xde, 0x98, 0xe1, 0xfc, 0x55, 0xa9, 0xc8, 0x16, 0x47, + 0xc6, 0xe2, 0x16, 0x47, 0x06, 0x90, 0x1b, 0x30, 0x51, 0xa7, 0xcd, 0x0e, 0xc6, 0x9b, 0xa0, 0x6d, + 0xcb, 0x76, 0x19, 0x8f, 0xbf, 0x91, 0x0a, 0x4f, 0x62, 0x31, 0x0a, 0x36, 0x89, 0xc5, 0x80, 0xe4, + 0x76, 0xec, 0x56, 0x5e, 0x74, 0xe6, 0x57, 0xa7, 0x7a, 0x5e, 0xcb, 0xfb, 0x7d, 0x99, 0x5c, 0x9c, + 0xd4, 0x22, 0xb7, 0xe8, 0x82, 0xeb, 0xd7, 0xa4, 0x7a, 0x5c, 0xa3, 0x4b, 0x33, 0x5c, 0x1c, 0xcc, + 0x38, 0x86, 0xee, 0xae, 0x05, 0xc7, 0xbf, 0x99, 0xea, 0x71, 0xed, 0x1d, 0x70, 0x4c, 0x00, 0x93, + 0x17, 0xf9, 0x4b, 0x11, 0xc1, 0xe8, 0x6f, 0xa5, 0xe2, 0x4f, 0x45, 0xfc, 0xf2, 0x12, 0x21, 0x2b, + 0x76, 0xcb, 0xf1, 0x95, 0xfe, 0x53, 0xa9, 0xf8, 0xdb, 0xbc, 0xa0, 0x58, 0xf0, 0x8b, 0x50, 0x38, + 0x37, 0x75, 0xdf, 0xa5, 0xb6, 0xa9, 0xb5, 0xb0, 0x3b, 0xeb, 0xae, 0x65, 0x6b, 0xcb, 0x74, 0xca, + 0xd4, 0x96, 0x5a, 0xb4, 0xf0, 0xb5, 0xa9, 0xb0, 0x05, 0xdb, 0x9d, 0x94, 0x59, 0xb0, 0xdd, 0xb1, + 0x64, 0x05, 0x1e, 0x49, 0xc2, 0x56, 0x0c, 0x07, 0xeb, 0xf9, 0xba, 0x54, 0xd8, 0x84, 0xed, 0x41, + 0xcb, 0x4c, 0xd8, 0x1e, 0x68, 0x72, 0x0d, 0x86, 0x26, 0x2d, 0x6f, 0xfa, 0xfd, 0xfa, 0xc8, 0x63, + 0x48, 0x1f, 0x33, 0xd3, 0xa7, 0x06, 0x64, 0xa2, 0x8c, 0x18, 0xd4, 0x9f, 0x8e, 0x97, 0x09, 0x2e, + 0x9f, 0xfc, 0x1f, 0xa2, 0x8c, 0x10, 0xf7, 0x7f, 0x15, 0x2f, 0x13, 0xdc, 0x71, 0xf9, 0x3f, 0xd8, + 0x4c, 0xc2, 0x6b, 0x9c, 0x9b, 0x2e, 0x31, 0xbb, 0xad, 0xbc, 0xa2, 0xb5, 0x5a, 0xd4, 0x5c, 0xa6, + 0x85, 0xcf, 0x44, 0x66, 0x92, 0x64, 0x32, 0x36, 0x93, 0x24, 0x63, 0xc8, 0xc7, 0xe0, 0xcc, 0x6d, + 0xad, 0x65, 0xe8, 0x01, 0x4e, 0xa5, 0x4e, 0xdb, 0x32, 0x1d, 0x5a, 0xf8, 0x6c, 0x2a, 0xbc, 0x9b, + 0xee, 0x42, 0xc7, 0x76, 0xd3, 0x5d, 0x50, 0x64, 0x0e, 0x08, 0x2e, 0xa3, 0xfe, 0x6c, 0xc1, 0xd6, + 0xe7, 0xc2, 0xdf, 0x4e, 0x85, 0xed, 0xd4, 0x38, 0x09, 0xb3, 0x53, 0xe3, 0x50, 0xd2, 0xe8, 0x9e, + 0x64, 0xa9, 0xf0, 0x0d, 0xa9, 0xf0, 0x69, 0x4d, 0x37, 0xc2, 0x99, 0x3e, 0xb5, 0x7b, 0xa6, 0xa6, + 0xeb, 0x90, 0xaf, 0xd7, 0xaa, 0xd3, 0xd3, 0x53, 0xf5, 0xdb, 0xd5, 0x0a, 0xba, 0x6a, 0xe8, 0x85, + 0xbf, 0x13, 0x59, 0xb1, 0xa2, 0x04, 0x6c, 0xc5, 0x8a, 0xc2, 0xc8, 0x2b, 0x30, 0xc2, 0xda, 0xcf, + 0x06, 0x0c, 0x7e, 0xf2, 0xe7, 0x52, 0x61, 0x73, 0x4a, 0x46, 0x32, 0x73, 0x4a, 0xfe, 0x4d, 0xea, + 0x70, 0x92, 0x49, 0xb1, 0x66, 0xd3, 0xbb, 0xd4, 0xa6, 0x66, 0xd3, 0x1b, 0xd3, 0xdf, 0x98, 0x0a, + 0x5b, 0x19, 0x49, 0x44, 0xcc, 0xca, 0x48, 0x82, 0x93, 0x55, 0x38, 0x1f, 0x3d, 0x09, 0x92, 0xfd, + 0x7a, 0x0b, 0x7f, 0x37, 0x15, 0x31, 0x86, 0x7b, 0x10, 0xa3, 0x31, 0xdc, 0x03, 0x4f, 0x4c, 0xb8, + 0x20, 0x8e, 0x55, 0xc4, 0x83, 0xcb, 0x68, 0x6d, 0x9f, 0xe7, 0xb5, 0x3d, 0x15, 0x3c, 0x08, 0xec, + 0x41, 0x3d, 0xd3, 0xa7, 0xf6, 0x66, 0xc7, 0xf4, 0x2c, 0x9e, 0x4a, 0xa8, 0xf0, 0x4d, 0xa9, 0xe4, + 0x17, 0x29, 0xa1, 0x67, 0xca, 0x49, 0x39, 0x88, 0xde, 0xea, 0x96, 0x08, 0xa7, 0xf0, 0xf7, 0x22, + 0xe3, 0x2d, 0x99, 0x8c, 0x8d, 0xb7, 0x2e, 0x99, 0x74, 0x6e, 0xc0, 0x04, 0x57, 0xea, 0x9a, 0x86, + 0xc3, 0xd0, 0x5c, 0xa6, 0x7a, 0xe1, 0xef, 0x47, 0x56, 0xbb, 0x18, 0x05, 0x3e, 0xed, 0x89, 0x02, + 0xd9, 0xd4, 0x5d, 0x6f, 0x6b, 0xa6, 0x89, 0xc7, 0xac, 0x85, 0x7f, 0x10, 0x99, 0xba, 0x03, 0x14, + 0x3e, 0xdc, 0xf5, 0x7f, 0x31, 0x4d, 0xe8, 0x95, 0x44, 0xae, 0xf0, 0x5f, 0x47, 0x34, 0xa1, 0x17, + 0x31, 0xd3, 0x84, 0x9e, 0x19, 0xe9, 0x6e, 0x77, 0xf1, 0xb1, 0x2f, 0x7c, 0x73, 0x64, 0x45, 0x4e, + 0xa4, 0x62, 0x2b, 0x72, 0xb2, 0x8b, 0xfe, 0xed, 0x2e, 0xfe, 0xe9, 0x85, 0x6f, 0xe9, 0xcd, 0x37, + 0x58, 0xe9, 0x93, 0xdd, 0xdb, 0x6f, 0x77, 0xf1, 0xed, 0x2e, 0x7c, 0x6b, 0x6f, 0xbe, 0xc1, 0xc3, + 0xbe, 0x64, 0xd7, 0xf0, 0x46, 0x77, 0xbf, 0xe8, 0xc2, 0xb7, 0x45, 0xa7, 0xae, 0x2e, 0x84, 0x38, + 0x75, 0x75, 0x73, 0xae, 0x5e, 0x82, 0xb3, 0x5c, 0x43, 0xae, 0xdb, 0x5a, 0x7b, 0xa5, 0x4e, 0x5d, + 0xd7, 0x30, 0x97, 0xbd, 0x9d, 0xd8, 0xb7, 0xa7, 0x22, 0xc7, 0x63, 0xdd, 0x28, 0xf1, 0x78, 0xac, + 0x1b, 0x92, 0x29, 0x6f, 0xcc, 0x03, 0xba, 0xf0, 0x0f, 0x23, 0xca, 0x1b, 0xa3, 0x60, 0xca, 0x1b, + 0x77, 0x9c, 0xbe, 0x91, 0xe0, 0xe8, 0x5b, 0xf8, 0x6f, 0xba, 0xf3, 0xf2, 0xdb, 0x97, 0xe0, 0x1f, + 0x7c, 0x23, 0xc1, 0x9f, 0xb5, 0xf0, 0xdf, 0x76, 0xe7, 0x15, 0xbc, 0x41, 0x8a, 0xbb, 0xc1, 0xbe, + 0x05, 0xa7, 0xf9, 0x6c, 0x3e, 0x4d, 0x75, 0x1a, 0xfa, 0xd0, 0xef, 0x88, 0x8c, 0xfd, 0x64, 0x32, + 0x3c, 0x72, 0x4f, 0xc4, 0x24, 0xb1, 0x16, 0x6d, 0xfd, 0x47, 0xdb, 0xb0, 0x0e, 0x36, 0x04, 0xc9, + 0x18, 0xb6, 0xde, 0xc8, 0xde, 0x6f, 0x85, 0xef, 0x8c, 0xac, 0x37, 0x32, 0x12, 0x9f, 0x73, 0xc8, + 0xae, 0x72, 0xaf, 0x84, 0x3d, 0xbd, 0x0a, 0xdf, 0x95, 0x58, 0xd8, 0xef, 0x80, 0xb0, 0x5b, 0xd8, + 0x2b, 0x61, 0xaf, 0xa6, 0xc2, 0x77, 0x27, 0x16, 0xf6, 0x3f, 0x20, 0xec, 0x02, 0xc5, 0xb6, 0x48, + 0x1d, 0xd7, 0xe2, 0xac, 0x42, 0xd3, 0xc3, 0x3f, 0x8e, 0x6e, 0x91, 0x12, 0xc9, 0x70, 0x8b, 0x94, + 0x88, 0x49, 0x62, 0x2d, 0x3e, 0xef, 0x7b, 0xb6, 0x61, 0x2d, 0x6d, 0xec, 0x12, 0x31, 0x49, 0xac, + 0xc5, 0xc7, 0x7f, 0xef, 0x36, 0xac, 0xa5, 0x8d, 0x5d, 0x22, 0x86, 0x99, 0x63, 0x01, 0xe6, 0x36, + 0xb5, 0x9d, 0x40, 0xfd, 0xfe, 0xbb, 0x88, 0x39, 0xd6, 0x85, 0x8e, 0x99, 0x63, 0x5d, 0x50, 0x89, + 0xdc, 0x85, 0x50, 0xbe, 0x6f, 0x3b, 0xee, 0xc1, 0xbd, 0x4c, 0x17, 0x54, 0x22, 0x77, 0x21, 0x97, + 0x7f, 0xb2, 0x1d, 0xf7, 0xe0, 0x62, 0xa6, 0x0b, 0x8a, 0x19, 0x45, 0x75, 0x57, 0x73, 0x8d, 0xe6, + 0x8c, 0xe5, 0xb8, 0xd2, 0x22, 0xff, 0xdf, 0x47, 0x8c, 0xa2, 0x24, 0x22, 0x66, 0x14, 0x25, 0xc1, + 0xe3, 0x4c, 0x85, 0x34, 0xbe, 0xbf, 0x27, 0xd3, 0xc0, 0xd2, 0x4a, 0x82, 0xc7, 0x99, 0x0a, 0x21, + 0xfc, 0x0f, 0x3d, 0x99, 0x06, 0x2f, 0xe5, 0x93, 0xe0, 0xcc, 0x32, 0x2d, 0xdb, 0xd6, 0xba, 0x79, + 0x83, 0xae, 0xd3, 0x96, 0xf8, 0xf4, 0x1f, 0x88, 0x58, 0xa6, 0x51, 0x02, 0xbc, 0x45, 0x89, 0xc0, + 0xc2, 0x8c, 0xc4, 0xe7, 0xfe, 0x60, 0x57, 0x46, 0xc1, 0x31, 0x51, 0x14, 0x16, 0x66, 0x24, 0x3e, + 0xf1, 0x9f, 0x76, 0x65, 0x14, 0x1c, 0x13, 0x45, 0x61, 0xa4, 0x04, 0x63, 0xe8, 0x2b, 0xa1, 0x39, + 0xde, 0xcb, 0xcf, 0x1f, 0x4d, 0x85, 0x6f, 0xbd, 0xc2, 0xe8, 0x99, 0x3e, 0x35, 0x52, 0x40, 0x66, + 0x21, 0x3e, 0xe9, 0xc7, 0xba, 0xb0, 0x08, 0xde, 0x3b, 0x86, 0x21, 0x32, 0x0b, 0xf1, 0x31, 0xff, + 0xac, 0x0b, 0x8b, 0xe0, 0xc1, 0x63, 0x18, 0x42, 0x3e, 0x00, 0xc3, 0xf5, 0xe9, 0xc5, 0x9a, 0x97, + 0xe8, 0xf4, 0xc7, 0x53, 0x11, 0xaf, 0xa2, 0x00, 0x87, 0x5e, 0x45, 0xc1, 0x4f, 0xf2, 0x61, 0x18, + 0x2d, 0x5b, 0xa6, 0xab, 0x35, 0xbd, 0x0d, 0xe8, 0x4f, 0x44, 0xce, 0x50, 0x42, 0xd8, 0x99, 0x3e, + 0x35, 0x4c, 0x2e, 0x95, 0x17, 0x6d, 0xff, 0xc9, 0xe4, 0xf2, 0x7e, 0xd3, 0xc3, 0xe4, 0x6c, 0x46, + 0xbb, 0x63, 0xd9, 0xab, 0x2d, 0x4b, 0xd3, 0xbd, 0x80, 0xa4, 0xa2, 0x21, 0xff, 0x3c, 0x32, 0xa3, + 0x25, 0x93, 0xb1, 0x19, 0x2d, 0x19, 0x93, 0xc4, 0x5a, 0x74, 0xd1, 0x4f, 0x6d, 0xc3, 0x3a, 0x98, + 0x87, 0x93, 0x31, 0x49, 0xac, 0xc5, 0xe7, 0xff, 0x8b, 0x6d, 0x58, 0x07, 0xf3, 0x70, 0x32, 0x86, + 0x99, 0xd6, 0xd7, 0x0d, 0xd7, 0x73, 0x6c, 0xfb, 0xe9, 0x88, 0x69, 0x1d, 0xa0, 0x98, 0x69, 0x1d, + 0xfc, 0x22, 0x14, 0xce, 0xf9, 0xae, 0x92, 0xc1, 0xde, 0xb5, 0x6a, 0xde, 0x63, 0xfb, 0xe3, 0xc2, + 0xff, 0x18, 0x39, 0x15, 0xe9, 0x4e, 0x3a, 0xd3, 0xa7, 0xf6, 0x60, 0x44, 0x6a, 0x91, 0x77, 0x8a, + 0x3c, 0xa8, 0x5f, 0xe1, 0x67, 0x52, 0x3d, 0x1e, 0x2a, 0x72, 0x9a, 0xd8, 0x43, 0x45, 0x0e, 0x16, + 0x73, 0xd6, 0x52, 0x8b, 0xde, 0x9a, 0xaf, 0xbe, 0x29, 0xcd, 0xae, 0x5f, 0x88, 0xcf, 0x59, 0x31, + 0x22, 0x31, 0x67, 0xc5, 0xe0, 0xe4, 0xaf, 0xa7, 0xe0, 0xc9, 0xa8, 0x7c, 0xdf, 0x7c, 0xf1, 0xd9, + 0x97, 0x55, 0x7a, 0xcf, 0x6a, 0xca, 0x96, 0xd5, 0xcf, 0xf2, 0x5a, 0x9e, 0xe9, 0xd6, 0x5d, 0x49, + 0x85, 0x66, 0xfa, 0xd4, 0x1d, 0x31, 0xdf, 0x41, 0x2b, 0x84, 0xd2, 0xfc, 0xdc, 0xae, 0x5a, 0xe1, + 0xab, 0xd0, 0x8e, 0x98, 0xef, 0xa0, 0x15, 0x62, 0x54, 0xfc, 0xfc, 0xae, 0x5a, 0xe1, 0x8f, 0x91, + 0x1d, 0x31, 0xc7, 0xdd, 0xe7, 0x9d, 0x7a, 0xb5, 0xec, 0xbf, 0xf5, 0xd9, 0x30, 0x9b, 0x85, 0x5f, + 0x88, 0xee, 0x3e, 0xa3, 0x14, 0xb8, 0xfb, 0x8c, 0x02, 0xd9, 0x72, 0x3f, 0x43, 0xb5, 0x16, 0xdb, + 0x8e, 0xd2, 0xe6, 0x6a, 0xc8, 0x78, 0xfb, 0xc5, 0xc8, 0x72, 0xdf, 0x85, 0x8e, 0x2d, 0xf7, 0x5d, + 0x50, 0x89, 0xdc, 0x85, 0x84, 0x7e, 0x69, 0x3b, 0xee, 0x81, 0xa9, 0xd2, 0x05, 0x95, 0xc8, 0x5d, + 0x68, 0xc1, 0xbf, 0xdc, 0x8e, 0x7b, 0x60, 0xaa, 0x74, 0x41, 0x91, 0xaf, 0x4f, 0xc1, 0xa5, 0xa4, + 0xee, 0xe0, 0xb1, 0x3f, 0x16, 0xee, 0x51, 0xdb, 0x36, 0x74, 0xef, 0x02, 0xf9, 0x97, 0x79, 0x7d, + 0xcf, 0xf6, 0xea, 0xef, 0xa4, 0x82, 0x33, 0x7d, 0xea, 0x8e, 0x2b, 0xd9, 0x61, 0x8b, 0x84, 0x04, + 0x7e, 0x65, 0xd7, 0x2d, 0xf2, 0x45, 0xb2, 0xe3, 0x4a, 0x70, 0xc2, 0x31, 0x96, 0x1d, 0xd7, 0xb2, + 0x69, 0xcd, 0x6a, 0x19, 0x4d, 0x6f, 0xbd, 0xf9, 0xd5, 0xe8, 0x84, 0x93, 0x40, 0x84, 0x13, 0x4e, + 0x02, 0x3c, 0xce, 0x54, 0x68, 0xcc, 0xaf, 0xf5, 0x64, 0x2a, 0x99, 0x73, 0x09, 0xf0, 0x38, 0x53, + 0x21, 0xa6, 0x7f, 0xd5, 0x93, 0xa9, 0x64, 0xce, 0x25, 0xc0, 0x89, 0x09, 0x17, 0x02, 0x43, 0xb7, + 0xb4, 0x4c, 0x4d, 0x57, 0xb5, 0x5a, 0x2d, 0xab, 0xe3, 0x2e, 0xda, 0xc6, 0xf2, 0x32, 0xb5, 0x0b, + 0xbf, 0x1e, 0x39, 0x20, 0xeb, 0x49, 0x3d, 0xd3, 0xa7, 0xf6, 0x66, 0x47, 0x5c, 0x28, 0x26, 0x13, + 0x4c, 0x5b, 0x76, 0x93, 0x56, 0x2c, 0x93, 0x16, 0x7e, 0x23, 0x15, 0xbe, 0x9e, 0xde, 0x86, 0x7e, + 0xa6, 0x4f, 0xdd, 0x8e, 0x25, 0xf9, 0x24, 0x3c, 0x9a, 0x4c, 0xc2, 0xfe, 0x5b, 0xd2, 0x9a, 0xab, + 0x85, 0xff, 0x29, 0x15, 0x7e, 0xf3, 0xd7, 0x9b, 0x7c, 0xa6, 0x4f, 0xdd, 0x86, 0x21, 0xa9, 0xc0, + 0xf8, 0x5c, 0xb9, 0x16, 0x72, 0xe8, 0xf8, 0xcd, 0x54, 0xc4, 0xfd, 0x2a, 0x8c, 0x47, 0xf7, 0xab, + 0x30, 0x88, 0xd9, 0x53, 0x01, 0x68, 0xca, 0xd4, 0x0b, 0xff, 0x73, 0xc4, 0x9e, 0x0a, 0x61, 0xf1, + 0x7d, 0xa9, 0x0c, 0x60, 0xf3, 0x6c, 0x00, 0xf0, 0xee, 0xe5, 0x7f, 0x2b, 0x32, 0xcf, 0xc6, 0x28, + 0xd8, 0x3c, 0x1b, 0x03, 0x32, 0x2b, 0x27, 0x00, 0xce, 0x5b, 0xe2, 0xc9, 0xaf, 0x61, 0x99, 0x85, + 0xdf, 0x8e, 0x58, 0x39, 0xc9, 0x64, 0xcc, 0xca, 0x49, 0xc6, 0x30, 0xd5, 0x9e, 0xb4, 0x3a, 0xa6, + 0x7e, 0x93, 0x6e, 0xb4, 0x35, 0xc3, 0xf6, 0xfc, 0x90, 0x0a, 0xbf, 0x13, 0x51, 0xed, 0x24, 0x22, + 0xa6, 0xda, 0x49, 0xf0, 0x18, 0x53, 0xcb, 0xe5, 0xad, 0xfd, 0xd7, 0xbd, 0x98, 0x0a, 0xa2, 0x18, + 0x53, 0x01, 0x27, 0x9f, 0x4a, 0xc1, 0x7b, 0x64, 0xc4, 0x0d, 0xcb, 0x30, 0xf1, 0x05, 0xf6, 0x6d, + 0x6a, 0xfb, 0xdf, 0x33, 0xad, 0x19, 0x2d, 0xaa, 0x17, 0x36, 0x79, 0x45, 0x57, 0x93, 0x2a, 0xea, + 0x51, 0x6e, 0xa6, 0x4f, 0xdd, 0x69, 0x15, 0x64, 0x09, 0xce, 0x06, 0x22, 0x65, 0x96, 0x19, 0x35, + 0xeb, 0xf5, 0xa9, 0xba, 0x6b, 0x53, 0x6d, 0xad, 0xf0, 0xbb, 0x91, 0xc3, 0xb6, 0xae, 0x94, 0xf8, + 0x96, 0xbc, 0x1b, 0x92, 0xac, 0xc2, 0xf9, 0x00, 0xe9, 0xd9, 0x85, 0x8b, 0x8b, 0x35, 0x4f, 0x9d, + 0x7e, 0x2f, 0x72, 0x4c, 0xdb, 0x8b, 0x78, 0xa6, 0x4f, 0xed, 0xc9, 0x0c, 0x2f, 0x3e, 0xca, 0xd5, + 0x39, 0xd6, 0x06, 0xc3, 0x5c, 0xe6, 0xef, 0xa2, 0x7e, 0x3f, 0x7a, 0xf1, 0x11, 0x21, 0xc0, 0x8b, + 0x8f, 0x08, 0x0c, 0x6f, 0x73, 0xcb, 0xd5, 0x39, 0xcf, 0x52, 0xe0, 0x9c, 0xbe, 0x18, 0xbd, 0xcd, + 0x8d, 0x52, 0xe0, 0x6d, 0x6e, 0x14, 0xc8, 0xac, 0x69, 0x11, 0xa0, 0xaa, 0xa6, 0x52, 0xc7, 0xb5, + 0x0d, 0xf4, 0xd4, 0xf1, 0xce, 0x34, 0xff, 0x4d, 0xc4, 0x9a, 0xee, 0x4e, 0xca, 0xac, 0xe9, 0xee, + 0x58, 0xb4, 0xa6, 0xdb, 0x6d, 0xbc, 0x16, 0x93, 0x8d, 0x98, 0x3f, 0x88, 0x5a, 0xd3, 0x71, 0x1a, + 0xb4, 0xa6, 0xe3, 0xe0, 0x18, 0x47, 0xd1, 0xe2, 0x3f, 0xec, 0xc5, 0x31, 0xb8, 0xdc, 0x4d, 0x00, + 0xc7, 0x38, 0x8a, 0x35, 0xe8, 0x7f, 0xe9, 0xc5, 0x51, 0x72, 0x4d, 0x8a, 0x83, 0x63, 0x1c, 0x51, + 0xcb, 0x37, 0x0a, 0x7f, 0xd4, 0x8b, 0x23, 0xa7, 0x89, 0x71, 0xe4, 0x60, 0xa6, 0x43, 0xb7, 0x4d, + 0xea, 0x86, 0x84, 0xf8, 0xbf, 0x46, 0x74, 0x28, 0x4a, 0xc0, 0x74, 0x28, 0x0a, 0x0b, 0x33, 0x12, + 0xb2, 0xfb, 0xdf, 0xba, 0x32, 0x0a, 0x8e, 0x28, 0xa2, 0xb0, 0x30, 0x23, 0x21, 0xb2, 0xad, 0xae, + 0x8c, 0x82, 0x23, 0x8a, 0x28, 0x8c, 0xdc, 0x86, 0x53, 0x9e, 0x65, 0x13, 0x7e, 0x2a, 0xfd, 0xbf, + 0x47, 0x6e, 0x05, 0x12, 0xa9, 0x66, 0xfa, 0xd4, 0xe4, 0xe2, 0x09, 0x7c, 0xc5, 0xe7, 0xfe, 0x71, + 0x6f, 0xbe, 0xc1, 0x2d, 0x46, 0x22, 0x22, 0x81, 0xaf, 0xf8, 0xfa, 0xff, 0xa3, 0x37, 0xdf, 0xe0, + 0x16, 0x23, 0x11, 0xc1, 0xe6, 0xf6, 0xaa, 0x29, 0xee, 0x15, 0xe7, 0x2c, 0xdd, 0x3f, 0x89, 0xfa, + 0xb7, 0x91, 0xb9, 0x3d, 0x89, 0x88, 0xcd, 0xed, 0x49, 0xf0, 0x38, 0x53, 0x21, 0x83, 0xff, 0xb3, + 0x27, 0xd3, 0xc0, 0x6a, 0x4b, 0x82, 0xc7, 0x99, 0x0a, 0x01, 0xfc, 0x49, 0x4f, 0xa6, 0x81, 0xd5, + 0x96, 0x04, 0x67, 0x62, 0xf5, 0xe1, 0x75, 0xda, 0xb4, 0xa9, 0x77, 0x5c, 0xf3, 0x7f, 0x45, 0xc4, + 0x9a, 0x48, 0xc5, 0xc4, 0x9a, 0x88, 0x48, 0xe0, 0x2b, 0x44, 0xf0, 0xa7, 0xbd, 0xf9, 0x06, 0x6a, + 0x90, 0x88, 0x48, 0xe0, 0x2b, 0xa4, 0xf0, 0xef, 0x7a, 0xf3, 0x0d, 0xd4, 0x20, 0x11, 0x11, 0xe2, + 0x1b, 0xb2, 0xde, 0xff, 0xac, 0x1b, 0xdf, 0x88, 0xf9, 0x9e, 0x5c, 0x3c, 0x81, 0xaf, 0x90, 0xc3, + 0xff, 0xdd, 0x9b, 0x6f, 0x82, 0x1c, 0x42, 0x26, 0x7c, 0x9c, 0xaf, 0x90, 0xc3, 0xbf, 0xef, 0xcd, + 0x37, 0x41, 0x0e, 0x21, 0x2b, 0x1e, 0x9f, 0x2e, 0x71, 0xb3, 0x11, 0x0f, 0xf2, 0x8c, 0x77, 0xa8, + 0x5e, 0xf8, 0xf3, 0xd8, 0xd3, 0xa5, 0x08, 0x05, 0x7f, 0xba, 0x14, 0x01, 0x4e, 0x0e, 0x40, 0x3f, + 0xae, 0x7a, 0x37, 0x72, 0x83, 0x3f, 0x94, 0xca, 0xff, 0x70, 0xea, 0x46, 0x6e, 0xf0, 0x87, 0x53, + 0xf9, 0x1f, 0x61, 0xff, 0xff, 0x48, 0x2a, 0xff, 0xa3, 0x29, 0xf5, 0x6c, 0xc4, 0xf2, 0xad, 0xb5, + 0x34, 0x71, 0xc4, 0x91, 0x88, 0xe2, 0x3f, 0x13, 0x51, 0xbc, 0xf5, 0xca, 0x37, 0xa7, 0x60, 0x84, + 0xdb, 0x1a, 0x22, 0x7b, 0xc7, 0x39, 0x18, 0xe4, 0xf1, 0x0f, 0xbc, 0x70, 0x93, 0xaa, 0xff, 0x9b, + 0x5c, 0x84, 0xb1, 0x59, 0xcd, 0x71, 0xb1, 0x89, 0x55, 0x53, 0xa7, 0xf7, 0x31, 0xf6, 0x57, 0x46, + 0x8d, 0x40, 0xc9, 0x2c, 0xa7, 0xe3, 0xe5, 0x30, 0x31, 0x56, 0x66, 0xdb, 0xa4, 0x15, 0x83, 0x5f, + 0xd8, 0x2c, 0xf6, 0x61, 0x8e, 0x8a, 0x48, 0x59, 0xe5, 0xe7, 0x53, 0x10, 0x8b, 0xcc, 0xb0, 0xf7, + 0x28, 0xb5, 0x0b, 0x30, 0x1e, 0x49, 0xc6, 0x26, 0x02, 0x98, 0xed, 0x30, 0x57, 0x5b, 0xb4, 0x34, + 0x79, 0x8f, 0x1f, 0x38, 0xeb, 0x96, 0x3a, 0x2b, 0x12, 0x92, 0xf0, 0xec, 0xee, 0x76, 0x4b, 0x95, + 0x50, 0x22, 0xe0, 0xfc, 0xaf, 0x91, 0x20, 0x3f, 0x14, 0xb9, 0x28, 0x42, 0xe6, 0x4a, 0xb9, 0x92, + 0x3a, 0x0e, 0xb5, 0xe5, 0x34, 0x26, 0x18, 0x22, 0xf7, 0xc3, 0x30, 0x52, 0x5d, 0x6b, 0x53, 0xdb, + 0xb1, 0x4c, 0xcd, 0xb5, 0xbc, 0x8c, 0xf3, 0x18, 0x7c, 0xd3, 0x90, 0xe0, 0x72, 0xf0, 0x4d, 0x99, + 0x9e, 0x5c, 0x86, 0x7e, 0xd5, 0x6a, 0x51, 0xa7, 0x90, 0xc1, 0x1c, 0x5f, 0x18, 0xd6, 0xce, 0x66, + 0x00, 0x39, 0x3e, 0x2a, 0x52, 0x30, 0x52, 0x9e, 0xbd, 0x3d, 0x1b, 0x90, 0x62, 0xc2, 0x76, 0x99, + 0x94, 0xe7, 0x7c, 0x7f, 0x06, 0x72, 0x78, 0x36, 0xe9, 0x14, 0xfa, 0x91, 0x16, 0xe3, 0xae, 0xb6, + 0x10, 0x22, 0x87, 0x71, 0xe5, 0x34, 0xe4, 0x26, 0xe4, 0x03, 0x7f, 0x9b, 0xeb, 0xb6, 0xd5, 0x69, + 0x7b, 0x09, 0xfc, 0x8b, 0x5b, 0x9b, 0xc5, 0x47, 0x56, 0x7d, 0x5c, 0x63, 0x19, 0x91, 0x12, 0x8b, + 0x58, 0x41, 0x32, 0x03, 0xe3, 0x01, 0x8c, 0x89, 0xc8, 0x11, 0xd9, 0xe6, 0x31, 0x64, 0xa8, 0xc4, + 0x8b, 0x89, 0x53, 0x66, 0x15, 0x2d, 0x46, 0xaa, 0x30, 0xe0, 0x65, 0x56, 0x19, 0xdc, 0x56, 0x49, + 0x4f, 0x88, 0xcc, 0x2a, 0x03, 0x72, 0x4e, 0x15, 0xaf, 0x3c, 0x99, 0x86, 0x31, 0xd5, 0xea, 0xb8, + 0x74, 0xd1, 0x12, 0x0b, 0xa6, 0xc8, 0xe0, 0x83, 0x6d, 0xb2, 0x19, 0xa6, 0xe1, 0x5a, 0x8d, 0x26, + 0xc7, 0xc9, 0x61, 0x4c, 0xc3, 0xa5, 0xc8, 0x3c, 0x4c, 0xc4, 0x3c, 0x93, 0x30, 0x22, 0xdb, 0x10, + 0xcf, 0x91, 0x21, 0x7d, 0x5e, 0x9c, 0x59, 0xbc, 0x28, 0xf9, 0xaa, 0x14, 0xe4, 0x16, 0x6d, 0xcd, + 0x70, 0x1d, 0x11, 0x9d, 0xed, 0xd4, 0x95, 0x75, 0x5b, 0x6b, 0x33, 0xfd, 0xb8, 0x82, 0xa9, 0xd7, + 0x6e, 0x6b, 0xad, 0x0e, 0x75, 0x26, 0xef, 0xb0, 0xaf, 0xfb, 0xad, 0xcd, 0xe2, 0x2b, 0x3c, 0x14, + 0xef, 0x95, 0xa6, 0xb5, 0x76, 0x75, 0xd9, 0xd6, 0xee, 0x19, 0x7c, 0xff, 0xa5, 0xb5, 0xae, 0xba, + 0xb4, 0x85, 0xcf, 0x2c, 0xaf, 0x6a, 0x6d, 0xe3, 0x2a, 0x26, 0x0b, 0xbd, 0xea, 0x73, 0xe2, 0x35, + 0x30, 0x15, 0x70, 0xf1, 0x2f, 0x59, 0x05, 0x38, 0x8e, 0xcc, 0x03, 0x88, 0x4f, 0x2d, 0xb5, 0xdb, + 0x22, 0xd4, 0x9b, 0xf4, 0x38, 0xd1, 0xc3, 0x70, 0xc5, 0xf6, 0x05, 0xa6, 0xb5, 0xa5, 0x04, 0x79, + 0xaa, 0xc4, 0x81, 0x69, 0xc1, 0xa2, 0x68, 0x91, 0x27, 0xa6, 0x51, 0x29, 0x70, 0xac, 0x40, 0x25, + 0x08, 0x29, 0x5a, 0x8c, 0x2c, 0xc1, 0xb8, 0xe0, 0xeb, 0x27, 0xf6, 0x1e, 0x0b, 0xcf, 0x0a, 0x11, + 0x34, 0x57, 0x5a, 0xbf, 0x8d, 0xba, 0x00, 0xcb, 0x75, 0x44, 0x4a, 0x90, 0x49, 0x18, 0xf5, 0xfe, + 0x9e, 0xd7, 0xd6, 0xa8, 0x53, 0x18, 0x47, 0x8d, 0xc5, 0x1c, 0x66, 0x5e, 0x79, 0x4c, 0x32, 0x24, + 0x8b, 0x2e, 0x5c, 0x44, 0xe6, 0xc1, 0xb5, 0x3e, 0x9f, 0xc0, 0x23, 0xaa, 0xf3, 0xe1, 0x22, 0xa4, + 0x0c, 0xa3, 0x7e, 0xa4, 0x99, 0x5b, 0xb7, 0xaa, 0x15, 0x8c, 0x25, 0x27, 0xf2, 0x4c, 0x45, 0x12, + 0x5e, 0xcb, 0x4c, 0x42, 0x65, 0xa4, 0x00, 0xc3, 0x3c, 0xb8, 0x5c, 0x24, 0xc0, 0x70, 0x3b, 0x21, + 0xc0, 0x70, 0x8d, 0x7c, 0x08, 0x86, 0x4b, 0x77, 0xea, 0x22, 0x70, 0xb2, 0x53, 0x38, 0x81, 0x6d, + 0xc7, 0x50, 0xc9, 0x18, 0xad, 0x59, 0x04, 0x59, 0x96, 0x9b, 0x2e, 0xd3, 0x93, 0x29, 0x18, 0x0b, + 0x5d, 0x5b, 0x38, 0x85, 0x93, 0xc8, 0x01, 0x5b, 0xae, 0x21, 0xa6, 0x61, 0x0b, 0x94, 0x3c, 0xbc, + 0xc2, 0x85, 0x98, 0xd6, 0x54, 0x0c, 0x07, 0x93, 0xed, 0xab, 0x14, 0x63, 0x34, 0x63, 0x64, 0xba, + 0x41, 0xae, 0x35, 0xba, 0x40, 0x35, 0x6c, 0x8e, 0x93, 0x7b, 0x34, 0x52, 0x8c, 0xbc, 0x0d, 0x04, + 0xd3, 0xf3, 0x53, 0xdd, 0xdb, 0xb3, 0x56, 0x2b, 0x4e, 0xe1, 0x34, 0x26, 0xb3, 0x24, 0xd1, 0x90, + 0xaa, 0xd5, 0xca, 0xe4, 0x45, 0x31, 0x7d, 0x3c, 0xaa, 0xf1, 0x52, 0x0d, 0x2f, 0x9c, 0x6a, 0xc3, + 0xd0, 0xe5, 0x16, 0x27, 0x70, 0x25, 0xeb, 0x70, 0xa6, 0x66, 0xd3, 0x7b, 0x86, 0xd5, 0x71, 0xbc, + 0xe5, 0xc3, 0x9b, 0xb7, 0xce, 0x6c, 0x3b, 0x6f, 0x3d, 0x2e, 0x2a, 0x3e, 0xd5, 0xb6, 0xe9, 0xbd, + 0x86, 0x97, 0x78, 0x30, 0x94, 0x19, 0xaa, 0x1b, 0x77, 0x26, 0x2e, 0x8c, 0x4f, 0x2d, 0xe0, 0x06, + 0x75, 0x0a, 0x85, 0x60, 0xaa, 0xe5, 0xd1, 0xc0, 0x0d, 0x1f, 0x27, 0x8b, 0x2b, 0x52, 0x8c, 0xa8, + 0x40, 0xae, 0x97, 0x3d, 0x3f, 0x96, 0x52, 0xb3, 0x69, 0x75, 0x4c, 0xd7, 0x29, 0x9c, 0x45, 0x66, + 0x0a, 0x13, 0xcb, 0x72, 0xd3, 0x4f, 0x67, 0xda, 0xd0, 0x04, 0x5e, 0x16, 0x4b, 0xbc, 0x34, 0x99, + 0x85, 0x7c, 0xcd, 0xc6, 0x57, 0x75, 0x37, 0xe9, 0x06, 0xb7, 0xcb, 0x30, 0x40, 0x9e, 0x98, 0x2a, + 0xdb, 0x1c, 0x87, 0xb9, 0x01, 0xdb, 0x88, 0x95, 0x97, 0x95, 0x68, 0x49, 0x39, 0xed, 0xdd, 0x23, + 0x3b, 0x4b, 0x7b, 0x47, 0x21, 0x2f, 0xbc, 0x60, 0xee, 0xbb, 0xd4, 0x64, 0x4b, 0xbd, 0x23, 0x82, + 0xe1, 0x15, 0x22, 0x5e, 0x33, 0x3e, 0x9e, 0x4f, 0x1d, 0x62, 0x94, 0x51, 0x1f, 0x2c, 0x37, 0x2c, + 0x5a, 0x24, 0x9e, 0x1b, 0xee, 0xc2, 0xee, 0x73, 0xc3, 0x91, 0x97, 0x60, 0xe8, 0x86, 0x65, 0x70, + 0xb7, 0x13, 0x8c, 0x7c, 0x27, 0xd2, 0x9b, 0xbd, 0x6d, 0x19, 0x66, 0x03, 0x73, 0x85, 0xc9, 0x11, + 0xdd, 0x7d, 0x52, 0x32, 0x05, 0x83, 0xf5, 0xa6, 0xd5, 0xa6, 0x35, 0xc3, 0x14, 0x91, 0xed, 0x7c, + 0x73, 0xcb, 0x83, 0xf3, 0xd1, 0xef, 0xb0, 0x5f, 0x8d, 0x76, 0x28, 0xff, 0x93, 0x5f, 0x94, 0x7c, + 0x04, 0x0a, 0x11, 0xbd, 0xe6, 0x03, 0x93, 0x8d, 0x99, 0xc7, 0x70, 0xcc, 0xc4, 0xc2, 0x10, 0x7b, + 0x04, 0x93, 0x59, 0xa6, 0xc0, 0x6a, 0xd7, 0xf2, 0xca, 0xef, 0xa7, 0x82, 0x36, 0x92, 0x22, 0xf4, + 0xe3, 0xdf, 0xc2, 0xac, 0x1a, 0xda, 0xda, 0x2c, 0xf6, 0x63, 0xd3, 0x54, 0x0e, 0x27, 0x8b, 0x30, + 0x1c, 0x38, 0xf5, 0x38, 0x85, 0x34, 0x56, 0xfe, 0x78, 0xf4, 0x9b, 0xae, 0x48, 0x34, 0x3c, 0xd7, + 0x2c, 0x06, 0x11, 0xd6, 0x02, 0xa8, 0x2a, 0xb3, 0x39, 0xf7, 0x09, 0xc8, 0x47, 0x4b, 0x24, 0x64, + 0x33, 0x7d, 0x41, 0xce, 0x66, 0x2a, 0xbf, 0xf6, 0x12, 0xb5, 0x9a, 0x54, 0x97, 0xb8, 0xc8, 0xd9, + 0x4e, 0x5f, 0x86, 0xd3, 0xc9, 0x44, 0xec, 0x83, 0xb9, 0x79, 0x97, 0xc2, 0xb1, 0x84, 0x1f, 0x8c, + 0xe6, 0x9d, 0x30, 0xea, 0x94, 0x7f, 0x9b, 0x91, 0x57, 0x5e, 0x72, 0x1e, 0xb2, 0xa8, 0xe3, 0xa9, + 0x20, 0xe5, 0x19, 0x26, 0x92, 0xcd, 0x8a, 0x4c, 0x8e, 0x43, 0xde, 0x19, 0xa1, 0x17, 0x3c, 0x7e, + 0x6c, 0x6b, 0xb3, 0x08, 0x41, 0x1a, 0x2c, 0x35, 0x20, 0x20, 0x57, 0x01, 0x6a, 0x9d, 0xa5, 0x96, + 0xd1, 0xc4, 0xf4, 0xc2, 0x19, 0x29, 0xd8, 0x32, 0x42, 0x79, 0x76, 0x61, 0x89, 0x84, 0x5c, 0x83, + 0x61, 0xef, 0x1d, 0x6f, 0x90, 0xf2, 0x0f, 0xb3, 0xce, 0x8a, 0x75, 0x5a, 0x24, 0xb5, 0x95, 0x88, + 0xc8, 0x07, 0x01, 0x82, 0x85, 0x40, 0xd8, 0xd8, 0x68, 0x24, 0xc8, 0xeb, 0x86, 0x6c, 0x24, 0x04, + 0xd4, 0x6c, 0xc9, 0x94, 0x27, 0xa2, 0x0d, 0x91, 0x09, 0x10, 0x97, 0xcc, 0xd0, 0xec, 0x25, 0x4f, + 0x0d, 0xe1, 0x22, 0x64, 0x01, 0x26, 0x62, 0x73, 0x8f, 0x48, 0x10, 0xf8, 0xf8, 0xd6, 0x66, 0xf1, + 0x42, 0xc2, 0xc4, 0x25, 0x9b, 0x64, 0xb1, 0xb2, 0xe4, 0x09, 0xc8, 0xdc, 0x52, 0xab, 0x22, 0x49, + 0x19, 0xcf, 0x6f, 0x17, 0x4a, 0x11, 0xc0, 0xb0, 0xe4, 0x65, 0x00, 0x9e, 0x6c, 0xbd, 0x66, 0xd9, + 0x2e, 0xda, 0x92, 0xa3, 0x3c, 0x4f, 0x2b, 0x4f, 0xc6, 0xde, 0x60, 0x06, 0x8c, 0xfc, 0xd1, 0x01, + 0xb1, 0xf2, 0xd7, 0xd2, 0x31, 0x83, 0x86, 0x09, 0x5e, 0xb4, 0x42, 0xea, 0x7c, 0x14, 0xbc, 0xd7, + 0x74, 0x2e, 0x78, 0x89, 0x88, 0x5c, 0x82, 0xc1, 0x1a, 0x5b, 0x4e, 0x9a, 0x56, 0x4b, 0xa8, 0x02, + 0x66, 0xaa, 0x68, 0x0b, 0x98, 0xea, 0x63, 0xc9, 0x35, 0x9e, 0x3c, 0xd3, 0x8c, 0xa4, 0x0c, 0xed, + 0x08, 0x58, 0x34, 0x77, 0x26, 0x83, 0xb1, 0x32, 0xbe, 0xb9, 0x95, 0x0d, 0xca, 0x24, 0x18, 0x53, + 0x3e, 0x5d, 0xb0, 0x95, 0xe9, 0xdf, 0x6e, 0x2b, 0xa3, 0xfc, 0x44, 0x2a, 0x3e, 0x39, 0x93, 0x17, + 0xe2, 0xd9, 0xfb, 0x70, 0xee, 0xf2, 0x81, 0x72, 0xad, 0x7e, 0x1e, 0xbf, 0x50, 0x1e, 0xbe, 0xf4, + 0x9e, 0xf3, 0xf0, 0x65, 0x76, 0x99, 0x87, 0x4f, 0xf9, 0x7f, 0xb2, 0x3d, 0x43, 0x7d, 0x1c, 0x4a, + 0xbe, 0x96, 0x97, 0xd9, 0x76, 0x9c, 0xd5, 0x5e, 0x72, 0x62, 0x9b, 0x4a, 0x1e, 0xc9, 0xa0, 0xa1, + 0xf1, 0x51, 0xe9, 0xa8, 0x61, 0x4a, 0xf2, 0x1a, 0x8c, 0x78, 0x1f, 0x80, 0xf9, 0x1d, 0xa5, 0xbc, + 0x84, 0xbe, 0x29, 0x14, 0xc9, 0x84, 0x18, 0x2a, 0x40, 0x5e, 0x84, 0x21, 0x34, 0x84, 0xdb, 0x5a, + 0xd3, 0x4b, 0xfe, 0xc9, 0xb3, 0x85, 0x7a, 0x40, 0x79, 0x05, 0xf3, 0x29, 0xc9, 0xc7, 0x21, 0x27, + 0x32, 0x8d, 0xe7, 0x70, 0xae, 0xbf, 0xba, 0x83, 0xd8, 0x28, 0x57, 0xe4, 0x2c, 0xe3, 0x7c, 0x6b, + 0x8b, 0x80, 0xd0, 0xd6, 0x96, 0x27, 0x18, 0x5f, 0x84, 0x13, 0x35, 0x9b, 0xea, 0x18, 0x85, 0x67, + 0xea, 0x7e, 0xdb, 0x16, 0x39, 0xe0, 0xf9, 0x04, 0x81, 0x96, 0x4d, 0xdb, 0x43, 0x33, 0x9b, 0x4b, + 0xe0, 0xe5, 0x0c, 0x84, 0x09, 0xc5, 0x99, 0xb9, 0xcb, 0x5b, 0x72, 0x93, 0x6e, 0xac, 0x5b, 0xb6, + 0xce, 0xd3, 0xa4, 0x8b, 0x45, 0x5f, 0x08, 0x7a, 0x55, 0xa0, 0x64, 0x73, 0x37, 0x5c, 0xe8, 0xdc, + 0xcb, 0x30, 0xbc, 0xd7, 0xfc, 0xda, 0xdf, 0x97, 0xee, 0x12, 0x34, 0xeb, 0x68, 0x66, 0xd7, 0x9f, + 0x8c, 0x4c, 0x37, 0xb2, 0x8d, 0x26, 0xe0, 0xdd, 0x1a, 0xef, 0x4f, 0x3f, 0x45, 0xe8, 0xe7, 0x81, + 0x49, 0xfb, 0x03, 0xdb, 0xe2, 0x93, 0xe8, 0xc5, 0xc8, 0xe1, 0xca, 0x9f, 0xa5, 0xbb, 0x44, 0x04, + 0x7b, 0x78, 0x65, 0xc6, 0x16, 0x1e, 0x4f, 0x18, 0xd5, 0x0a, 0x4a, 0x6e, 0x54, 0x2c, 0x3c, 0x1e, + 0x98, 0x19, 0x15, 0x32, 0x11, 0xb9, 0x02, 0x50, 0xd3, 0x6c, 0x6d, 0x8d, 0xba, 0x6c, 0x97, 0xcb, + 0xcf, 0x89, 0xd0, 0x0a, 0x69, 0xfb, 0x50, 0x55, 0xa2, 0x50, 0xbe, 0x23, 0xd3, 0x2b, 0x62, 0xda, + 0xb1, 0xec, 0x77, 0x23, 0xfb, 0x6b, 0x30, 0xec, 0x4b, 0xb6, 0x5a, 0x41, 0x7b, 0x49, 0x94, 0xf1, + 0x85, 0x8f, 0x65, 0x24, 0x22, 0x72, 0x99, 0xb7, 0xb5, 0x6e, 0xbc, 0xc3, 0x33, 0x27, 0x8f, 0x8a, + 0x9c, 0xb8, 0x9a, 0xab, 0x35, 0x1c, 0xe3, 0x1d, 0xaa, 0xfa, 0x68, 0xe5, 0x9f, 0xa7, 0x13, 0xc3, + 0xce, 0x1d, 0xf7, 0xd1, 0x2e, 0xfa, 0x28, 0x41, 0x88, 0x3c, 0x60, 0xde, 0xb1, 0x10, 0x77, 0x21, + 0xc4, 0x3f, 0x49, 0x27, 0x86, 0x17, 0x3c, 0x16, 0xe2, 0x6e, 0x66, 0x8b, 0x67, 0x60, 0x48, 0xb5, + 0xd6, 0x9d, 0x32, 0xee, 0x89, 0xf8, 0x5c, 0x81, 0x13, 0xb5, 0x6d, 0xad, 0x3b, 0x0d, 0xdc, 0xed, + 0xa8, 0x01, 0x81, 0xf2, 0x17, 0xe9, 0x1e, 0x01, 0x18, 0x8f, 0x05, 0xff, 0xa5, 0x5c, 0x22, 0x7f, + 0x30, 0x1d, 0x0a, 0xf0, 0xf8, 0xf0, 0x0a, 0xfb, 0x2a, 0x40, 0xbd, 0xb9, 0x42, 0xd7, 0x34, 0xdc, + 0x07, 0xf7, 0x07, 0x47, 0x16, 0x0e, 0x42, 0xf9, 0x36, 0x58, 0x22, 0x51, 0x7e, 0x28, 0x1d, 0x89, + 0x70, 0x79, 0x2c, 0xbb, 0x1d, 0xcb, 0xce, 0xd7, 0x3a, 0x11, 0xb4, 0xf3, 0x58, 0x72, 0x3b, 0x95, + 0xdc, 0x57, 0xa7, 0x23, 0xf1, 0x4d, 0x1f, 0x5a, 0xd9, 0xb1, 0x01, 0x18, 0x8f, 0xbb, 0xfa, 0xd0, + 0x6a, 0xd2, 0x33, 0x30, 0x24, 0xe4, 0xe0, 0x2f, 0x15, 0x7c, 0xde, 0xe7, 0x40, 0x3c, 0xa0, 0xf5, + 0x09, 0x94, 0xaf, 0x4c, 0x43, 0x38, 0xee, 0xec, 0x43, 0xaa, 0x43, 0x3f, 0x98, 0x0e, 0x47, 0xdc, + 0x7d, 0x78, 0xf5, 0xe7, 0x0a, 0x40, 0xbd, 0xb3, 0xd4, 0x14, 0x7e, 0x6d, 0xfd, 0xd2, 0x09, 0xbf, + 0x0f, 0x55, 0x25, 0x0a, 0xe5, 0x3f, 0xa5, 0x13, 0xc3, 0x00, 0x3f, 0xbc, 0x02, 0x7c, 0x1e, 0x4f, + 0xc5, 0x9b, 0x66, 0x30, 0x91, 0xe3, 0x21, 0x24, 0x1b, 0x7f, 0xd1, 0x8b, 0x42, 0x9f, 0x90, 0x7c, + 0x20, 0xc1, 0x5c, 0xc3, 0xeb, 0xb7, 0xc0, 0x5c, 0x93, 0x0f, 0xf3, 0x25, 0xc3, 0xed, 0xe7, 0xd2, + 0xdb, 0x45, 0x4d, 0x7e, 0x98, 0x57, 0xd5, 0x81, 0x9a, 0xb6, 0x81, 0xd9, 0x7d, 0x58, 0x4f, 0x8c, + 0x4c, 0x9e, 0xda, 0xda, 0x2c, 0x4e, 0xb4, 0x39, 0x48, 0xbe, 0xb0, 0x15, 0x54, 0xca, 0x1f, 0xf6, + 0x27, 0x87, 0xec, 0x7d, 0x78, 0x45, 0x78, 0x1e, 0xb2, 0x35, 0xcd, 0x5d, 0x11, 0x9a, 0x8c, 0xb7, + 0x81, 0x6d, 0xcd, 0x5d, 0x51, 0x11, 0x4a, 0x2e, 0xc3, 0xa0, 0xaa, 0xad, 0xf3, 0x33, 0x4f, 0x7e, + 0x73, 0x86, 0x07, 0x3b, 0xb6, 0xb6, 0xde, 0xe0, 0xe7, 0x9e, 0x3e, 0x9a, 0x28, 0x90, 0x9b, 0xa3, + 0xee, 0x8a, 0xa5, 0x8b, 0x93, 0x6f, 0xd8, 0xda, 0x2c, 0xe6, 0xd6, 0x10, 0xa2, 0x0a, 0x0c, 0xab, + 0x6c, 0xd2, 0xd2, 0x37, 0xf0, 0xe6, 0x6b, 0x84, 0x57, 0xb6, 0x64, 0xe9, 0x1b, 0x2a, 0x42, 0xc9, + 0xd7, 0xa4, 0x60, 0x60, 0x86, 0x6a, 0x3a, 0x1b, 0x21, 0x43, 0xbd, 0x9e, 0x2a, 0xbd, 0x79, 0x30, + 0x4f, 0x95, 0x26, 0x56, 0x78, 0x65, 0xb2, 0xa2, 0x88, 0xfa, 0xc9, 0x75, 0x18, 0x2c, 0x6b, 0x2e, + 0x5d, 0xb6, 0xec, 0x0d, 0x7c, 0x7c, 0x35, 0x16, 0xbc, 0x10, 0x0d, 0xe9, 0x8f, 0x47, 0xc4, 0x6f, + 0xc6, 0x9a, 0xe2, 0x97, 0xea, 0x17, 0x66, 0x62, 0xe1, 0x37, 0x73, 0xf8, 0xfa, 0x4a, 0x88, 0x85, + 0x5f, 0xe1, 0xa9, 0x02, 0x13, 0x1c, 0x2b, 0x8f, 0x24, 0x1f, 0x2b, 0xa3, 0xf5, 0x88, 0x0f, 0x34, + 0xcb, 0x96, 0x4e, 0xf1, 0x95, 0xd3, 0xa8, 0xb0, 0x1e, 0x11, 0xda, 0x68, 0x5a, 0x3a, 0xb3, 0x1e, + 0x7d, 0x12, 0xe5, 0x77, 0xfb, 0x21, 0x31, 0xc0, 0xe7, 0xb1, 0x92, 0x1f, 0x2b, 0x79, 0xa0, 0xe4, + 0x95, 0x98, 0x92, 0x9f, 0x8b, 0x87, 0x8c, 0x7d, 0x40, 0x35, 0xfc, 0x73, 0xd9, 0x58, 0xc0, 0xe9, + 0x87, 0x7b, 0x77, 0x19, 0x48, 0xaf, 0x7f, 0x5b, 0xe9, 0xf9, 0x03, 0x22, 0xb7, 0xed, 0x80, 0x18, + 0xd8, 0xe9, 0x80, 0x18, 0xec, 0x3a, 0x20, 0x02, 0x05, 0x19, 0xea, 0xaa, 0x20, 0x55, 0x31, 0x68, + 0xa0, 0x77, 0xe2, 0xeb, 0xf3, 0x5b, 0x9b, 0xc5, 0x31, 0x36, 0x9a, 0x12, 0x33, 0x5e, 0x23, 0x0b, + 0xe5, 0xe7, 0xb3, 0x3d, 0xa2, 0xc4, 0x1f, 0x8a, 0x8e, 0x3c, 0x0f, 0x99, 0x52, 0xbb, 0x2d, 0xf4, + 0xe3, 0x84, 0xe4, 0x57, 0xd5, 0xa5, 0x14, 0xa3, 0x26, 0x1f, 0x84, 0x4c, 0xe9, 0x4e, 0x3d, 0x9a, + 0xeb, 0xba, 0x74, 0xa7, 0x2e, 0xbe, 0xa4, 0x6b, 0xd9, 0x3b, 0x75, 0xf2, 0x6a, 0x90, 0x74, 0x6a, + 0xa5, 0x63, 0xae, 0x8a, 0x8d, 0xa2, 0x78, 0xa3, 0xed, 0xbd, 0xe4, 0x69, 0x32, 0x14, 0xdb, 0x2e, + 0x46, 0x68, 0x23, 0xda, 0x94, 0xdb, 0xb9, 0x36, 0x0d, 0x6c, 0xab, 0x4d, 0x83, 0x3b, 0xd5, 0xa6, + 0xa1, 0x1d, 0x68, 0x13, 0x6c, 0xab, 0x4d, 0xc3, 0xfb, 0xd7, 0xa6, 0x36, 0x9c, 0x8b, 0x67, 0xf6, + 0xf0, 0x35, 0x42, 0x05, 0x12, 0xc7, 0x8a, 0x87, 0x25, 0x78, 0xf5, 0xdf, 0xe1, 0xd8, 0xc6, 0x3a, + 0xa2, 0x1b, 0x0e, 0xc3, 0xcb, 0x8f, 0x1a, 0xe3, 0xa5, 0x95, 0xef, 0x4b, 0x77, 0x4f, 0x48, 0x72, + 0x34, 0xa7, 0xb8, 0x2f, 0x4b, 0x94, 0x52, 0x36, 0x12, 0x0a, 0xa5, 0xab, 0x94, 0x23, 0x6c, 0x93, + 0x64, 0xf6, 0xbd, 0xe9, 0x6e, 0x59, 0x52, 0xf6, 0x25, 0xb1, 0xa7, 0xe2, 0x8f, 0xe1, 0xd0, 0xb9, + 0xc3, 0x09, 0xbf, 0x82, 0x9b, 0x86, 0x11, 0x59, 0x88, 0x42, 0x4a, 0x3b, 0x11, 0x70, 0xa8, 0x1c, + 0x79, 0xd5, 0x4f, 0x49, 0x2e, 0xbd, 0x8f, 0xc1, 0x97, 0x6e, 0xde, 0x98, 0x8d, 0x3c, 0x8f, 0x91, + 0xc9, 0xc9, 0x33, 0x90, 0x9b, 0xc6, 0x1c, 0x9f, 0xf2, 0x60, 0xe7, 0x59, 0x3f, 0xe5, 0x57, 0x2b, + 0x9c, 0x46, 0xf9, 0x83, 0xc1, 0x04, 0xcf, 0xa5, 0x7d, 0x09, 0x4b, 0x52, 0x93, 0xf4, 0x9e, 0xd4, + 0xe4, 0x05, 0xc8, 0xf1, 0x49, 0x45, 0x08, 0x70, 0x4c, 0x0e, 0x93, 0xd5, 0x71, 0x22, 0xc5, 0x04, + 0xed, 0x3e, 0x85, 0xf6, 0x12, 0x0c, 0xa1, 0x7b, 0x9f, 0x74, 0x2c, 0x8b, 0xdb, 0xf2, 0x35, 0x06, + 0x8c, 0x6e, 0xe7, 0x03, 0x52, 0x72, 0x0f, 0x48, 0xe0, 0x18, 0xc7, 0x54, 0x90, 0xea, 0x25, 0x7e, + 0x01, 0xd6, 0xfb, 0x2d, 0xf6, 0xd3, 0xde, 0x23, 0x70, 0xc3, 0x2b, 0xcd, 0xe7, 0x04, 0xaa, 0x37, + 0xe4, 0x6e, 0xc2, 0x47, 0xd9, 0x09, 0x35, 0x90, 0x0d, 0x38, 0xe1, 0x43, 0xa7, 0x0d, 0xd3, 0x70, + 0x56, 0xb0, 0xe2, 0x81, 0x6d, 0x2b, 0x7e, 0xaf, 0xa8, 0xb8, 0x18, 0x54, 0x7c, 0x57, 0x94, 0x8f, + 0xd7, 0x9c, 0x54, 0x07, 0xb9, 0x09, 0xf9, 0xfa, 0x8a, 0x65, 0xbb, 0x15, 0xea, 0x34, 0x6d, 0xa3, + 0x8d, 0x1e, 0xfd, 0x7c, 0x3e, 0xc7, 0x27, 0xcd, 0x0e, 0xc3, 0x35, 0xf4, 0x00, 0x29, 0x3f, 0x69, + 0x8e, 0x16, 0x64, 0x72, 0x57, 0x0d, 0x67, 0x75, 0x96, 0xde, 0xa3, 0x2d, 0x31, 0xd9, 0xa3, 0xdc, + 0x6d, 0xc3, 0x59, 0x6d, 0xb4, 0x18, 0x54, 0x96, 0xbb, 0x4f, 0x4a, 0x5e, 0x85, 0x1c, 0x3f, 0x89, + 0x12, 0x96, 0x82, 0x94, 0x46, 0x91, 0x41, 0xbb, 0xa8, 0x98, 0x28, 0x43, 0x3e, 0x9e, 0xe4, 0x5b, + 0x33, 0x1c, 0xf6, 0xd5, 0x8f, 0x11, 0x74, 0xe1, 0x99, 0xe0, 0x6a, 0x23, 0x9b, 0x72, 0x23, 0x7b, + 0x34, 0xe5, 0xde, 0x80, 0xd1, 0x80, 0x71, 0xcd, 0xd2, 0xd1, 0x16, 0x96, 0xfc, 0x13, 0x43, 0xc8, + 0x2e, 0xdc, 0xc2, 0x1c, 0xc8, 0x34, 0x0c, 0x88, 0xcc, 0x2d, 0xc2, 0xad, 0xe5, 0xd1, 0xe4, 0xac, + 0xa3, 0xdd, 0xc6, 0xa7, 0x40, 0x87, 0x1e, 0x79, 0x8e, 0xef, 0xec, 0x91, 0xa7, 0xf2, 0x13, 0x29, + 0x38, 0xc1, 0x5a, 0x13, 0x91, 0x25, 0x79, 0x1b, 0x80, 0x81, 0xc5, 0xbb, 0xbc, 0x14, 0xbe, 0xcb, + 0x7b, 0xaf, 0xfc, 0x8d, 0x91, 0x02, 0x57, 0x02, 0x6a, 0xfe, 0x26, 0xef, 0x82, 0xe7, 0xd4, 0xb0, + 0xda, 0x59, 0xa2, 0x8d, 0xd8, 0xe3, 0x3c, 0x89, 0xfb, 0xb9, 0x0f, 0x71, 0x77, 0xb1, 0xbd, 0xbe, + 0x83, 0xfb, 0x9e, 0x74, 0xd7, 0x3c, 0x59, 0x87, 0xb2, 0x1c, 0x4f, 0xc2, 0xa0, 0xf7, 0x56, 0x51, + 0x4c, 0x94, 0xb1, 0x97, 0xf3, 0xdd, 0xea, 0xf6, 0xf0, 0xe4, 0xa3, 0x89, 0xbd, 0x22, 0x96, 0xe4, + 0x47, 0x7a, 0xf4, 0x43, 0x84, 0x63, 0x12, 0x97, 0x64, 0x81, 0x1d, 0xa2, 0xfd, 0xf2, 0xc0, 0x0b, + 0xec, 0x57, 0x52, 0x5d, 0xf3, 0x99, 0x1d, 0x55, 0x81, 0x29, 0x7f, 0x90, 0xf1, 0xd2, 0xa8, 0xed, + 0xeb, 0x13, 0x9e, 0x81, 0x21, 0x11, 0x59, 0x2f, 0xec, 0x8e, 0x20, 0x6e, 0x27, 0xf0, 0xb6, 0xcb, + 0x27, 0x60, 0x3b, 0x17, 0xc9, 0x4b, 0x46, 0x72, 0x47, 0x90, 0x3c, 0x64, 0x54, 0x89, 0x84, 0xed, + 0x4d, 0xa6, 0xee, 0x1b, 0x2e, 0x6e, 0x74, 0x58, 0x5f, 0x66, 0xf8, 0xde, 0x84, 0xde, 0x37, 0x5c, + 0xbe, 0xcd, 0xf1, 0xd1, 0x6c, 0xdf, 0x21, 0xac, 0x93, 0xfe, 0x60, 0xdf, 0xc1, 0x77, 0x44, 0xbe, + 0x2d, 0xf2, 0x0c, 0x0c, 0x89, 0x37, 0xfe, 0xe2, 0xe5, 0x9c, 0x68, 0xad, 0xf0, 0x0a, 0xc0, 0xd6, + 0xfa, 0x04, 0x8c, 0xa3, 0x4a, 0x97, 0x83, 0xb7, 0xc2, 0xc8, 0xd1, 0x46, 0x88, 0x2a, 0x30, 0xe4, + 0x1a, 0x8c, 0xd5, 0x5d, 0xcd, 0xd4, 0x35, 0x5b, 0x5f, 0xe8, 0xb8, 0xed, 0x8e, 0x2b, 0xef, 0xb3, + 0x1d, 0x57, 0xb7, 0x3a, 0xae, 0x1a, 0xa1, 0x20, 0xcf, 0xc2, 0xa8, 0x07, 0x99, 0xb2, 0x6d, 0xcb, + 0x96, 0x37, 0x53, 0x8e, 0xab, 0x53, 0xdb, 0x56, 0xc3, 0x04, 0xe4, 0x03, 0x30, 0x5a, 0x35, 0xfd, + 0x40, 0x71, 0xea, 0xac, 0xd8, 0x5a, 0xa1, 0x4b, 0xb2, 0xe1, 0x23, 0x1a, 0x1d, 0xbb, 0xa5, 0x86, + 0x09, 0x95, 0xad, 0x74, 0x3c, 0xdb, 0xdc, 0xc3, 0x7b, 0x0e, 0x73, 0x39, 0xfc, 0x3e, 0x18, 0x1f, + 0xc5, 0xe3, 0x1e, 0x57, 0x76, 0x4f, 0xe0, 0x5b, 0xdd, 0x6b, 0x30, 0x78, 0x93, 0x6e, 0xf0, 0xa7, + 0xec, 0xb9, 0x60, 0x31, 0x5d, 0x15, 0x30, 0x79, 0x31, 0xf5, 0xe8, 0x94, 0x1f, 0x4b, 0xc7, 0xf3, + 0xe8, 0x3d, 0xbc, 0xc2, 0x7e, 0x16, 0x06, 0x50, 0x94, 0x55, 0xef, 0x16, 0x13, 0x05, 0x88, 0xe2, + 0x0e, 0x3b, 0x55, 0x78, 0x64, 0xca, 0xb7, 0xe4, 0xa2, 0xc9, 0x15, 0x1f, 0x5e, 0xe9, 0xbd, 0x02, + 0xc3, 0x65, 0xcb, 0x74, 0x30, 0xe2, 0x54, 0xd3, 0x53, 0x58, 0xf4, 0x2f, 0x6a, 0x06, 0x60, 0x79, + 0xd7, 0x24, 0x51, 0xef, 0x45, 0x79, 0x99, 0xc5, 0x8f, 0x22, 0xc7, 0x5d, 0xda, 0x40, 0x60, 0xf1, + 0x2f, 0x31, 0x60, 0x74, 0x8f, 0x16, 0x90, 0x92, 0x5b, 0x30, 0x58, 0x5e, 0x31, 0x5a, 0xba, 0x4d, + 0x4d, 0x74, 0x81, 0x90, 0x4c, 0xf5, 0x70, 0x5f, 0x5e, 0xc1, 0x7f, 0x91, 0x96, 0x37, 0xa7, 0x29, + 0x8a, 0x85, 0xbc, 0x91, 0x05, 0xec, 0xdc, 0x37, 0xa4, 0x01, 0x82, 0x02, 0xe4, 0x31, 0x48, 0x7b, + 0x21, 0x2f, 0xf8, 0xcb, 0xbb, 0x90, 0x06, 0xa5, 0x71, 0xa9, 0x10, 0x63, 0x3b, 0xbd, 0xed, 0xd8, + 0xbe, 0x05, 0x39, 0x7e, 0x88, 0x8f, 0xce, 0x31, 0x52, 0x40, 0xbd, 0xae, 0x0d, 0xbe, 0x82, 0xf4, + 0x7c, 0xcb, 0x8e, 0x96, 0x67, 0xc8, 0xd1, 0x84, 0x33, 0x3b, 0xd7, 0x84, 0x7e, 0xfc, 0x8b, 0x5c, + 0x84, 0x2c, 0x4a, 0x31, 0x85, 0x47, 0x73, 0x38, 0x4b, 0x47, 0xe4, 0x87, 0x78, 0xd6, 0x4d, 0x65, + 0xcb, 0x74, 0x85, 0x9b, 0x63, 0xea, 0xd2, 0x88, 0x90, 0x8b, 0x80, 0x85, 0xe4, 0x22, 0x60, 0xca, + 0xcf, 0xa4, 0x13, 0xd2, 0x7e, 0x3e, 0xbc, 0xc3, 0xe4, 0x65, 0x00, 0x0c, 0x6d, 0xc2, 0xe4, 0xe9, + 0x79, 0x9d, 0xe1, 0x28, 0x41, 0x46, 0xa8, 0xb6, 0xa1, 0x6d, 0x47, 0x40, 0xac, 0xfc, 0x6c, 0x2a, + 0x96, 0x2b, 0x72, 0x5f, 0x72, 0x94, 0xad, 0xb2, 0xf4, 0x1e, 0xcd, 0x58, 0xaf, 0x2f, 0x32, 0xbb, + 0xeb, 0x8b, 0xf0, 0xb7, 0x1c, 0x80, 0x65, 0x7a, 0x98, 0xdf, 0xf2, 0xbb, 0xe9, 0xa4, 0xcc, 0x99, + 0x47, 0x53, 0xc5, 0x83, 0x23, 0xb3, 0xec, 0x2e, 0x8e, 0xcc, 0x3e, 0x01, 0xe3, 0x91, 0x7c, 0x92, + 0x38, 0xff, 0x4b, 0x41, 0x38, 0x93, 0xb3, 0x4e, 0x76, 0x0f, 0x8a, 0x13, 0x22, 0x53, 0xfe, 0x73, + 0xaa, 0x77, 0x36, 0xd1, 0x43, 0x57, 0x9d, 0x04, 0x01, 0x64, 0xfe, 0x72, 0x04, 0x70, 0x00, 0xdb, + 0xe0, 0xa3, 0x2d, 0x80, 0x07, 0x64, 0xf2, 0xf8, 0x52, 0x0b, 0xe0, 0x5b, 0x52, 0xdb, 0x26, 0x83, + 0x3d, 0x6c, 0x19, 0x28, 0xff, 0x3a, 0x95, 0x98, 0xb4, 0x75, 0x5f, 0xed, 0x0a, 0xce, 0x67, 0xd3, + 0x7b, 0x38, 0x9f, 0x9d, 0x85, 0x01, 0xde, 0x06, 0x5d, 0xf4, 0xc6, 0x93, 0x3d, 0x32, 0xc7, 0x76, + 0x3b, 0xfd, 0xf4, 0x58, 0x28, 0x3f, 0x99, 0x8a, 0xe5, 0x90, 0x3d, 0xc4, 0x6f, 0xdb, 0xd3, 0xed, + 0x86, 0xf2, 0x7b, 0xe9, 0xe4, 0x14, 0xb6, 0x87, 0xf8, 0x21, 0x07, 0x71, 0x9c, 0xb6, 0xb7, 0x75, + 0x6b, 0x11, 0xc6, 0xc2, 0xb2, 0x10, 0xcb, 0xd6, 0xa3, 0xc9, 0x89, 0x7c, 0xbb, 0xb4, 0x22, 0xc2, + 0x43, 0xf9, 0x6c, 0x3a, 0x9e, 0x7d, 0xf7, 0xd0, 0xe7, 0xa7, 0xbd, 0xdd, 0x85, 0x55, 0x61, 0x3c, + 0xf8, 0x92, 0x45, 0xc3, 0x6d, 0x79, 0xf7, 0x61, 0x78, 0x43, 0x23, 0x82, 0x24, 0xb5, 0x0c, 0xc7, + 0x6d, 0xb8, 0x0c, 0x19, 0x0a, 0xd7, 0x13, 0x2e, 0x17, 0x91, 0xca, 0x03, 0xb2, 0x6c, 0x3d, 0x60, + 0x52, 0x79, 0x40, 0xd6, 0xb2, 0x43, 0x97, 0xca, 0x77, 0xa6, 0xbb, 0x65, 0x67, 0x3e, 0x74, 0xd9, + 0x7c, 0x44, 0xee, 0x2f, 0xde, 0x32, 0x21, 0xa5, 0xc7, 0xba, 0xa5, 0x43, 0xee, 0xc2, 0x33, 0xc6, + 0x67, 0x6f, 0x93, 0x58, 0xa2, 0xb0, 0x1e, 0x90, 0xe1, 0x75, 0x34, 0x84, 0xf5, 0x80, 0x8c, 0xba, + 0x07, 0x4f, 0x58, 0x3f, 0x9c, 0xde, 0x69, 0x4a, 0xf0, 0x63, 0xe1, 0xc5, 0x84, 0xf7, 0xe9, 0x74, + 0x3c, 0x55, 0xfd, 0xa1, 0x8b, 0x69, 0x1a, 0x72, 0x22, 0x69, 0x7e, 0x57, 0xe1, 0x70, 0x7c, 0x37, + 0x93, 0x4d, 0x7c, 0xc7, 0x0b, 0x20, 0x6e, 0xaa, 0x76, 0x26, 0x12, 0x4e, 0xab, 0xfc, 0x45, 0x2a, + 0x92, 0xd7, 0xfd, 0x50, 0xce, 0x48, 0xf6, 0xb6, 0xba, 0x7d, 0xc8, 0x3b, 0xad, 0xcd, 0x46, 0x32, + 0x1b, 0xf9, 0xdf, 0x53, 0xa1, 0xae, 0x66, 0xb4, 0xa2, 0xe5, 0x45, 0x1c, 0x97, 0x1f, 0x4b, 0xc3, + 0x44, 0x8c, 0x94, 0x5c, 0x0c, 0x45, 0x4e, 0xc3, 0x73, 0xd7, 0xc8, 0xc3, 0x07, 0x1e, 0x43, 0x6d, + 0x17, 0x47, 0xc5, 0x17, 0x21, 0x5b, 0xd1, 0x36, 0xf8, 0xb7, 0xf5, 0x73, 0x96, 0xba, 0xb6, 0x21, + 0x1f, 0x29, 0x22, 0x9e, 0x2c, 0xc1, 0x29, 0x7e, 0xe1, 0x63, 0x58, 0xe6, 0xa2, 0xb1, 0x46, 0xab, + 0xe6, 0x9c, 0xd1, 0x6a, 0x19, 0x8e, 0xb8, 0xb5, 0x7c, 0x66, 0x6b, 0xb3, 0x78, 0xc9, 0xb5, 0x5c, + 0xad, 0xd5, 0xa0, 0x1e, 0x59, 0xc3, 0x35, 0xd6, 0x68, 0xc3, 0x30, 0x1b, 0x6b, 0x48, 0x29, 0xb1, + 0x4c, 0x66, 0x45, 0xaa, 0x3c, 0x85, 0x72, 0xbd, 0xa9, 0x99, 0x26, 0xd5, 0xab, 0xe6, 0xe4, 0x86, + 0x4b, 0xf9, 0x6d, 0x67, 0x86, 0x9f, 0x79, 0xf2, 0x78, 0x1e, 0x1c, 0xcd, 0x18, 0x2f, 0x31, 0x02, + 0x35, 0xa1, 0x90, 0xf2, 0x23, 0xd9, 0x84, 0x94, 0xfe, 0x47, 0x48, 0x7d, 0xbc, 0x9e, 0xce, 0x6e, + 0xd3, 0xd3, 0x57, 0x61, 0x40, 0xe4, 0xa8, 0x14, 0x37, 0x28, 0xe8, 0x80, 0x74, 0x8f, 0x83, 0xe4, + 0x2b, 0x28, 0x41, 0x45, 0x5a, 0x70, 0x6e, 0x91, 0x75, 0x53, 0x72, 0x67, 0xe6, 0xf6, 0xd0, 0x99, + 0x3d, 0xf8, 0x91, 0xb7, 0xe0, 0x0c, 0x62, 0x13, 0xba, 0x75, 0x00, 0xab, 0x42, 0x5b, 0x8f, 0x57, + 0x95, 0xdc, 0xb9, 0xdd, 0xca, 0x93, 0x8f, 0xc0, 0x88, 0x3f, 0x40, 0x0c, 0xea, 0x88, 0xab, 0x99, + 0x1e, 0xe3, 0x8c, 0x47, 0x7a, 0x65, 0x60, 0x7c, 0xf6, 0x1b, 0x8e, 0x16, 0x1a, 0xe2, 0xa5, 0xfc, + 0x76, 0x0a, 0xce, 0x4d, 0xdd, 0x77, 0xa9, 0x6d, 0x6a, 0x2d, 0x44, 0xd4, 0x5d, 0xcb, 0xd6, 0x96, + 0xe9, 0x94, 0xa9, 0x2d, 0xb5, 0x0e, 0x7f, 0xe5, 0xff, 0x10, 0x0c, 0xe8, 0xfc, 0xa3, 0x84, 0x4e, + 0x3d, 0xe1, 0xbb, 0x06, 0x25, 0x34, 0x5a, 0x7c, 0xbf, 0xea, 0x95, 0x51, 0x7e, 0x27, 0x05, 0x8f, + 0x24, 0x12, 0x1a, 0xce, 0xbb, 0xe1, 0xf3, 0x3e, 0x9d, 0xe9, 0xf2, 0x79, 0x62, 0x12, 0xbd, 0x0c, + 0x79, 0x23, 0x48, 0xb9, 0xdc, 0x08, 0x42, 0x06, 0xaa, 0xe3, 0x12, 0x1c, 0x47, 0xd7, 0x0b, 0xe0, + 0xbf, 0xe1, 0xb4, 0xbd, 0x57, 0xbd, 0x4e, 0xa3, 0x63, 0x1b, 0x7c, 0x5c, 0xaa, 0x27, 0x9d, 0xc8, + 0x93, 0x5f, 0xe7, 0x96, 0x6d, 0xb0, 0x0a, 0x34, 0x77, 0x85, 0x9a, 0x5a, 0x63, 0xdd, 0xb2, 0x57, + 0x31, 0x9c, 0x38, 0x1f, 0x9c, 0xea, 0x38, 0x87, 0xdf, 0xf1, 0xc0, 0xe4, 0x09, 0x18, 0x5d, 0x6e, + 0x75, 0xa8, 0x1f, 0xc0, 0x99, 0x5f, 0x66, 0xaa, 0x23, 0x0c, 0xe8, 0x5f, 0x01, 0x5d, 0x00, 0x40, + 0x22, 0xcc, 0x6f, 0xc8, 0x6f, 0x2e, 0xd5, 0x21, 0x06, 0x59, 0x14, 0xdd, 0x75, 0x8e, 0x6b, 0x35, + 0x17, 0x52, 0xa3, 0x65, 0x99, 0xcb, 0x0d, 0x97, 0xda, 0x6b, 0xd8, 0x50, 0x7c, 0xad, 0xa1, 0x9e, + 0x46, 0x0a, 0xbc, 0x1b, 0x72, 0x66, 0x2d, 0x73, 0x79, 0x91, 0xda, 0x6b, 0xac, 0xa9, 0xcf, 0x00, + 0x11, 0x4d, 0xb5, 0xf1, 0x54, 0x87, 0x7f, 0x1c, 0x3e, 0xd7, 0x50, 0xc5, 0x47, 0xf0, 0xe3, 0x1e, + 0xfc, 0xb0, 0x22, 0x0c, 0xf3, 0x28, 0xb6, 0x5c, 0x68, 0xf8, 0x46, 0x43, 0x05, 0x0e, 0x42, 0x79, + 0x9d, 0x06, 0xf1, 0x7c, 0x84, 0x7b, 0xe2, 0xa8, 0xe2, 0x97, 0xf2, 0xa9, 0x0c, 0x10, 0x3c, 0xf4, + 0xf0, 0xad, 0x06, 0x4c, 0xdf, 0xb7, 0x1f, 0x45, 0x0b, 0xa6, 0xd5, 0xf4, 0xae, 0xa6, 0xd5, 0x71, + 0xb3, 0xb3, 0xd6, 0xd0, 0xda, 0xed, 0xc6, 0x5d, 0xa3, 0x85, 0xae, 0xb0, 0xb8, 0xf0, 0xa9, 0xa3, + 0x66, 0x67, 0xad, 0xd4, 0x6e, 0x4f, 0x73, 0x20, 0x79, 0x1a, 0x26, 0x18, 0x1d, 0x76, 0x92, 0x4f, + 0x99, 0x45, 0x4a, 0xc6, 0x00, 0xc3, 0xc0, 0x7b, 0xb4, 0x67, 0x61, 0x50, 0xf0, 0xe4, 0x6b, 0x55, + 0xbf, 0x3a, 0xc0, 0x99, 0x39, 0xac, 0xe7, 0x7c, 0x36, 0x7c, 0x72, 0xed, 0x57, 0x87, 0xbc, 0xf2, + 0x98, 0xec, 0xc0, 0xec, 0xac, 0xf1, 0x28, 0x86, 0x03, 0x88, 0xf4, 0x7f, 0x93, 0x8b, 0x30, 0xc6, + 0xb8, 0xf8, 0x02, 0xe3, 0xf1, 0xe1, 0xfb, 0xd5, 0x08, 0x94, 0x5c, 0x83, 0x93, 0x21, 0x08, 0xb7, + 0x41, 0xb9, 0x6b, 0x57, 0xbf, 0x9a, 0x88, 0x53, 0x7e, 0x28, 0x03, 0x23, 0xac, 0x3b, 0xd8, 0xfa, + 0x74, 0x48, 0x1d, 0x71, 0x06, 0x06, 0x2c, 0x7b, 0xb9, 0xd1, 0xb1, 0x5b, 0x62, 0xec, 0xe5, 0x2c, + 0x7b, 0xf9, 0x96, 0xdd, 0x22, 0xa7, 0x20, 0xc7, 0x7a, 0xc7, 0xd0, 0xc5, 0x10, 0xeb, 0xd7, 0xda, + 0xed, 0xaa, 0x4e, 0x4a, 0xbc, 0x43, 0x30, 0xb6, 0x78, 0xa3, 0x89, 0x5b, 0x7b, 0xfe, 0xea, 0xa2, + 0x9f, 0xaf, 0x78, 0x31, 0x24, 0xf6, 0x13, 0x46, 0x1c, 0xe7, 0x07, 0x01, 0x11, 0x16, 0x3a, 0x6e, + 0x4b, 0x74, 0xde, 0x27, 0x51, 0x16, 0x02, 0x19, 0xb0, 0xe0, 0x9b, 0x18, 0x9d, 0x54, 0x80, 0x04, + 0x54, 0x6b, 0x96, 0x6e, 0xdc, 0x35, 0x28, 0xf7, 0xc4, 0xeb, 0xe7, 0x37, 0xdb, 0x71, 0xac, 0x9a, + 0xf7, 0x98, 0xcc, 0x09, 0x08, 0x79, 0x85, 0x2b, 0x21, 0xa7, 0xc3, 0xb5, 0x8f, 0xf7, 0x2d, 0xb7, + 0xd3, 0x22, 0x28, 0xd4, 0x4c, 0x2c, 0x8f, 0x0b, 0xa1, 0x32, 0x0f, 0xa3, 0xf8, 0x8e, 0xb4, 0x4e, + 0x5b, 0xb4, 0xe9, 0x5a, 0x36, 0x39, 0x0b, 0x99, 0x9b, 0xde, 0x4b, 0x52, 0xee, 0x1c, 0xb0, 0x4a, + 0x37, 0x54, 0x06, 0x23, 0x8a, 0xff, 0x0c, 0x20, 0x8d, 0xf7, 0xc6, 0xf8, 0x00, 0x8b, 0xdf, 0xee, + 0x7b, 0x77, 0xfa, 0xca, 0xaf, 0x0d, 0x40, 0x9e, 0x27, 0x74, 0xaf, 0xdf, 0xae, 0x56, 0x30, 0x4f, + 0xa2, 0x7e, 0x28, 0x76, 0xd2, 0x0c, 0x40, 0xd9, 0x32, 0x4d, 0x8a, 0x79, 0xb1, 0xfc, 0x8c, 0x1d, + 0x41, 0xee, 0x60, 0x81, 0xe9, 0xc2, 0x43, 0x2a, 0x4b, 0x2e, 0xc3, 0x20, 0xff, 0xa2, 0x6a, 0x45, + 0xd8, 0x4f, 0xf8, 0xa6, 0xce, 0x69, 0x1b, 0x77, 0xef, 0xe2, 0x03, 0x3c, 0x1f, 0x4d, 0x2e, 0xc2, + 0x40, 0x65, 0xbe, 0x5e, 0x2f, 0xcd, 0x7b, 0x57, 0xeb, 0xe8, 0x63, 0xa8, 0x9b, 0x4e, 0xc3, 0xd1, + 0x4c, 0x47, 0xf5, 0x90, 0xe4, 0x09, 0xc8, 0x55, 0x6b, 0x48, 0xc6, 0x3d, 0xe7, 0x87, 0xb7, 0x36, + 0x8b, 0x03, 0x46, 0x9b, 0x53, 0x09, 0x14, 0xd6, 0x7b, 0xbb, 0x5a, 0x91, 0xde, 0x97, 0xf0, 0x7a, + 0xef, 0x19, 0x3a, 0xde, 0xd3, 0xab, 0x3e, 0x9a, 0xbc, 0x08, 0x23, 0x75, 0x6a, 0x1b, 0x5a, 0x6b, + 0xbe, 0x83, 0x5b, 0x4f, 0x29, 0x12, 0xaf, 0x83, 0xf0, 0x86, 0x89, 0x08, 0x35, 0x44, 0x46, 0xce, + 0x43, 0x76, 0xc6, 0x30, 0x3d, 0x37, 0x36, 0xf4, 0x73, 0x5a, 0x31, 0x4c, 0x57, 0x45, 0x28, 0x79, + 0x02, 0x32, 0x37, 0x16, 0xab, 0xe2, 0xe9, 0x1c, 0xf2, 0x7a, 0xdb, 0x0d, 0x45, 0xf5, 0xbd, 0xb1, + 0x58, 0x25, 0x2f, 0xc2, 0x10, 0x5b, 0x14, 0xa9, 0xd9, 0xa4, 0x4e, 0x61, 0x18, 0x3f, 0x86, 0x87, + 0x92, 0xf5, 0x80, 0xf2, 0x23, 0x18, 0x9f, 0x92, 0xdc, 0x84, 0x7c, 0x34, 0xaf, 0xa6, 0x70, 0xa5, + 0x44, 0x0b, 0x6e, 0x5d, 0xe0, 0x92, 0x82, 0x19, 0xc7, 0x0a, 0x12, 0x1d, 0x0a, 0x51, 0x18, 0xdb, + 0x27, 0xa2, 0x15, 0xcb, 0x33, 0x28, 0x5c, 0xda, 0xda, 0x2c, 0x3e, 0x19, 0x63, 0xda, 0xb0, 0x05, + 0x95, 0xc4, 0xbd, 0x2b, 0x27, 0xf2, 0x51, 0x80, 0x92, 0xeb, 0xda, 0xc6, 0x52, 0x87, 0x99, 0x9b, + 0x63, 0xbd, 0x3d, 0xb1, 0x94, 0xad, 0xcd, 0xe2, 0x49, 0xcd, 0x27, 0x4f, 0xf4, 0xc7, 0x92, 0xd8, + 0x91, 0xd7, 0x60, 0x84, 0xad, 0x78, 0xde, 0x28, 0x14, 0xcf, 0xd1, 0xd1, 0xc4, 0x64, 0x6b, 0x63, + 0xc3, 0x11, 0x08, 0xd9, 0xc4, 0x94, 0x0b, 0x90, 0x8f, 0xc1, 0x58, 0x68, 0x1c, 0xf3, 0x5c, 0x0a, + 0x52, 0x7a, 0xc7, 0x10, 0x96, 0x47, 0x5d, 0xc5, 0x47, 0xe6, 0x3e, 0xeb, 0x50, 0xd4, 0xd5, 0x30, + 0x2f, 0xe5, 0x4f, 0xd3, 0x70, 0xb2, 0xd4, 0x71, 0x57, 0x6a, 0x36, 0x15, 0x7e, 0x14, 0x07, 0x70, + 0xc2, 0xb7, 0xb7, 0x99, 0x7e, 0x8f, 0xaf, 0x24, 0x22, 0xf3, 0x41, 0x76, 0x1f, 0xf3, 0xc1, 0x5d, + 0x18, 0x2f, 0xe9, 0x6b, 0x86, 0x59, 0xe2, 0x29, 0xf7, 0xe6, 0xa6, 0x4b, 0xb8, 0x72, 0x48, 0x1e, + 0xf5, 0x11, 0xb4, 0xf8, 0x1e, 0x9e, 0xd8, 0x81, 0xa1, 0x1a, 0x1a, 0xc7, 0x35, 0xd6, 0xee, 0x6a, + 0x8d, 0xe6, 0x8a, 0x66, 0x2e, 0xb3, 0xd5, 0x21, 0x52, 0x4a, 0xf9, 0x6c, 0x1a, 0x2e, 0x78, 0x61, + 0xc3, 0xa9, 0xcb, 0xb4, 0xd7, 0x30, 0x97, 0x43, 0xc9, 0xe0, 0x1e, 0x42, 0xe9, 0x2b, 0x9f, 0x49, + 0xc3, 0xf9, 0xa8, 0x67, 0xdc, 0x43, 0x2f, 0x94, 0x3f, 0x49, 0xc3, 0x04, 0xb7, 0xcb, 0x6a, 0x9a, + 0xbb, 0x52, 0xe6, 0x1a, 0xb5, 0x2f, 0x49, 0x5c, 0x86, 0x41, 0xce, 0xc6, 0x7f, 0xa6, 0x8e, 0x8b, + 0x0f, 0x57, 0x56, 0x5c, 0xf4, 0x3c, 0x34, 0x99, 0x87, 0x93, 0xa5, 0xbb, 0x77, 0x69, 0xd3, 0x0d, + 0x52, 0x19, 0xcc, 0x07, 0x71, 0xd3, 0x79, 0x60, 0x7b, 0x81, 0x0f, 0x52, 0x84, 0x60, 0x7c, 0xb0, + 0xc4, 0x72, 0x64, 0x11, 0x4e, 0x47, 0xe1, 0x75, 0xbe, 0x03, 0xcc, 0x4a, 0xb1, 0xee, 0x63, 0x1c, + 0xf9, 0x7f, 0x6a, 0x97, 0xb2, 0x49, 0xad, 0xc4, 0x95, 0xb5, 0xbf, 0x57, 0x2b, 0x71, 0x99, 0x4d, + 0x2c, 0xa7, 0xfc, 0x58, 0x06, 0xa0, 0xde, 0xd6, 0x4c, 0x13, 0x83, 0x08, 0x3d, 0xbc, 0x0f, 0x0a, + 0x5f, 0x08, 0xb9, 0x11, 0xec, 0x74, 0xc8, 0xbc, 0x28, 0x82, 0x7e, 0xe9, 0x1d, 0xdb, 0x7b, 0x71, + 0xeb, 0x07, 0x1d, 0x42, 0xa0, 0x6c, 0x36, 0xf8, 0x94, 0xa4, 0x0a, 0xd9, 0x92, 0xbd, 0xec, 0x08, + 0xf7, 0xc0, 0xde, 0x7e, 0xd0, 0x9a, 0xbd, 0x9c, 0xbc, 0xee, 0x22, 0x0b, 0xe5, 0xeb, 0xd3, 0x70, + 0x96, 0x0f, 0x99, 0xeb, 0xb6, 0xd6, 0x5e, 0xa9, 0x53, 0xd7, 0xc5, 0x0d, 0xf7, 0xc3, 0x3b, 0x89, + 0x7c, 0x3e, 0x0d, 0xa7, 0xb9, 0x25, 0x3b, 0x4d, 0x75, 0xca, 0x8f, 0x2d, 0x8e, 0xf6, 0x33, 0xcf, + 0x2f, 0xb1, 0x70, 0x8e, 0xf6, 0xbb, 0xd1, 0x03, 0x14, 0xce, 0x2f, 0xa7, 0xe1, 0x74, 0x90, 0x94, + 0x31, 0x94, 0xf8, 0xf6, 0xa1, 0x17, 0xce, 0xde, 0x26, 0xc8, 0x44, 0x91, 0x3e, 0xc4, 0x36, 0xb7, + 0xac, 0x0a, 0xfd, 0x7b, 0x7c, 0x1e, 0x98, 0x24, 0xd2, 0xe3, 0x21, 0xbc, 0x2f, 0x2d, 0xfd, 0x95, + 0x34, 0x9c, 0x09, 0x44, 0x2a, 0xee, 0x84, 0x8e, 0x47, 0xfe, 0xc1, 0xcb, 0xf4, 0x78, 0xe8, 0xef, + 0x6b, 0xe8, 0x27, 0xca, 0xf4, 0x78, 0xec, 0xef, 0x4b, 0x4f, 0xbf, 0x2b, 0x0d, 0x17, 0x22, 0x99, + 0x98, 0x55, 0xab, 0xd5, 0xb2, 0x3a, 0xee, 0xa2, 0x6d, 0x2c, 0x2f, 0x1f, 0x92, 0x93, 0xd5, 0xc1, + 0x1d, 0xfb, 0x9e, 0x86, 0x9c, 0xb8, 0x68, 0xc1, 0xdc, 0xc1, 0xaa, 0xf8, 0xb5, 0x47, 0x69, 0xfd, + 0xe3, 0x34, 0x14, 0x93, 0xa5, 0x35, 0x6d, 0xd9, 0x4d, 0x5a, 0xb1, 0x4c, 0x7a, 0x2c, 0x2f, 0x49, + 0x5e, 0xdf, 0x9d, 0x86, 0x47, 0x93, 0xe5, 0xc5, 0xfe, 0x5b, 0xd2, 0x9a, 0xab, 0xc7, 0xe2, 0x92, + 0xc4, 0xf5, 0x4b, 0x69, 0x38, 0xc9, 0xfe, 0x34, 0x9a, 0x33, 0x96, 0xe3, 0xb2, 0xa6, 0x1e, 0xc0, + 0x2a, 0xbc, 0xb7, 0x15, 0xe3, 0x20, 0x9e, 0xd3, 0x7b, 0xdd, 0x93, 0xdd, 0x57, 0xf7, 0xf4, 0xef, + 0x63, 0x4b, 0x13, 0x17, 0xe8, 0xa1, 0x2d, 0xc1, 0xef, 0x56, 0x81, 0x1e, 0xc0, 0xfa, 0xfb, 0x30, + 0x0b, 0xf4, 0x6f, 0x65, 0x20, 0x5f, 0xb6, 0xad, 0x75, 0xf3, 0x06, 0x5d, 0xa7, 0xad, 0x43, 0x1b, + 0xee, 0x0f, 0x84, 0x81, 0x68, 0xef, 0xd1, 0x40, 0xf4, 0xca, 0x91, 0xd7, 0x60, 0x3c, 0x90, 0xa5, + 0x1c, 0x39, 0x17, 0xaf, 0xf2, 0x9b, 0x0c, 0xd5, 0x78, 0x9b, 0xe1, 0x44, 0x88, 0xc7, 0x28, 0xb5, + 0xf2, 0x17, 0xa1, 0xde, 0x78, 0xb8, 0xcd, 0xf5, 0x7d, 0xf7, 0xc6, 0x2d, 0x38, 0x5d, 0xee, 0xd8, + 0x36, 0x35, 0xdd, 0xe4, 0x4e, 0xc1, 0x9b, 0xb4, 0x26, 0xa7, 0x68, 0xc4, 0x3b, 0xa7, 0x4b, 0x61, + 0xc6, 0x56, 0xb8, 0xd2, 0x45, 0xd9, 0x0e, 0x04, 0x6c, 0x3b, 0x9c, 0x22, 0x89, 0x6d, 0x72, 0x61, + 0xe5, 0xe7, 0xd2, 0x72, 0xd7, 0x1f, 0xda, 0xac, 0xf6, 0xae, 0xe8, 0x7a, 0xe5, 0x53, 0x19, 0x18, + 0x63, 0xcd, 0x5a, 0xd4, 0x9c, 0xd5, 0x63, 0x13, 0x66, 0x3f, 0x0b, 0x04, 0xfb, 0x0a, 0x4f, 0x92, + 0x22, 0x90, 0x63, 0x41, 0x6e, 0x05, 0x83, 0x77, 0xfb, 0x0a, 0x0f, 0xaf, 0x7c, 0x4f, 0x36, 0xe8, + 0x8e, 0x63, 0x03, 0xe8, 0xb0, 0xbb, 0x83, 0x2c, 0xc0, 0x49, 0x31, 0xb7, 0x79, 0x20, 0x4c, 0xa1, + 0x26, 0xe6, 0x2f, 0x9e, 0x89, 0x59, 0x4c, 0x8b, 0x1d, 0x87, 0xda, 0x0d, 0x57, 0x73, 0x56, 0x1b, + 0x98, 0x73, 0x4d, 0x4d, 0x2c, 0xc8, 0x18, 0x8a, 0x59, 0x2d, 0xcc, 0x70, 0x30, 0x60, 0xe8, 0x4d, + 0x88, 0x31, 0x86, 0x49, 0x05, 0x95, 0x1f, 0x4c, 0x41, 0x3e, 0xfa, 0x39, 0xe4, 0x0a, 0x0c, 0xb2, + 0xdf, 0x7e, 0x8c, 0x17, 0xf1, 0x02, 0x3d, 0xe0, 0xc8, 0x9f, 0x33, 0x79, 0x34, 0xe4, 0x25, 0x18, + 0xc2, 0x97, 0x63, 0x58, 0x20, 0x1d, 0x84, 0xd6, 0x09, 0x0a, 0x18, 0x0c, 0xcd, 0x8b, 0x05, 0xa4, + 0xe4, 0x15, 0x18, 0xae, 0x06, 0x4f, 0x6e, 0xc5, 0x05, 0x34, 0xbe, 0xf4, 0x97, 0x4a, 0x06, 0x04, + 0xaa, 0x4c, 0xad, 0x7c, 0x21, 0x1d, 0xa8, 0xfa, 0xb1, 0x69, 0xba, 0x2f, 0xd3, 0xf4, 0xfb, 0x32, + 0x30, 0x5a, 0xb6, 0x4c, 0x57, 0x6b, 0xba, 0xc7, 0x87, 0xc1, 0xfb, 0x39, 0x64, 0x23, 0x45, 0xe8, + 0x9f, 0x5a, 0xd3, 0x8c, 0x96, 0x30, 0x7c, 0x30, 0xcf, 0x00, 0x65, 0x00, 0x95, 0xc3, 0xc9, 0x75, + 0x0c, 0x7b, 0xc5, 0x24, 0xed, 0xbf, 0x13, 0x1c, 0x0b, 0x42, 0xb2, 0x4b, 0x28, 0x1e, 0x05, 0xaa, + 0xc9, 0x01, 0x7c, 0xe4, 0xc8, 0x25, 0xe5, 0x3e, 0x3b, 0x3e, 0x18, 0x3d, 0x22, 0x7d, 0xf6, 0xb9, + 0x0c, 0x9c, 0x8e, 0xbe, 0x57, 0x3c, 0x1e, 0x70, 0xa2, 0xf3, 0xfe, 0x0a, 0x9c, 0x8c, 0xca, 0xa6, + 0xc2, 0xa4, 0xd1, 0xdf, 0xfb, 0xed, 0xc8, 0x95, 0xad, 0xcd, 0xe2, 0x63, 0xf1, 0xa7, 0xa2, 0xac, + 0xb2, 0xc4, 0xd7, 0x24, 0x89, 0x95, 0x24, 0xf6, 0xcc, 0x03, 0xe2, 0x14, 0xfd, 0x90, 0xf7, 0xcc, + 0xe7, 0xd3, 0xf1, 0x9e, 0x39, 0x9e, 0xf0, 0xc4, 0xc2, 0xfd, 0x0b, 0x69, 0x78, 0x32, 0x2a, 0x9c, + 0x37, 0x5f, 0x7c, 0xf6, 0x65, 0x95, 0x7a, 0x31, 0x52, 0x8f, 0xa7, 0x17, 0xa1, 0xc4, 0x18, 0xec, + 0x56, 0x73, 0x7c, 0x47, 0x49, 0x11, 0xec, 0x96, 0x41, 0x54, 0x81, 0xd9, 0x81, 0x38, 0x8f, 0xe7, + 0x84, 0x5d, 0x88, 0xf3, 0x3b, 0xb6, 0x15, 0xe7, 0xf1, 0x40, 0xf6, 0x9e, 0xab, 0x65, 0x01, 0xae, + 0x1b, 0xae, 0x88, 0x24, 0x7d, 0xc4, 0xaf, 0xca, 0xa4, 0x77, 0xae, 0xd9, 0x3d, 0xbd, 0x73, 0x0d, + 0xe2, 0x43, 0xf5, 0xef, 0x21, 0x3e, 0xd4, 0x6b, 0x30, 0x20, 0xe4, 0x28, 0xf6, 0xed, 0x67, 0x82, + 0xaf, 0x40, 0x70, 0xb7, 0xea, 0x3d, 0xe9, 0x3f, 0x05, 0x03, 0x0e, 0x8f, 0x99, 0x26, 0xf6, 0xd5, + 0xe8, 0xee, 0x23, 0x40, 0xaa, 0xf7, 0x07, 0x39, 0x0f, 0x98, 0x65, 0x48, 0xf6, 0xc6, 0xe1, 0x59, + 0x87, 0xd8, 0xbf, 0xa4, 0x0a, 0x03, 0xc2, 0x6b, 0xa0, 0x00, 0xe8, 0xd9, 0xe1, 0xab, 0x65, 0xd0, + 0xcf, 0xdc, 0x79, 0x80, 0x9f, 0x59, 0x0b, 0x62, 0xd9, 0x67, 0x5b, 0x80, 0x94, 0x9f, 0x4c, 0x41, + 0x3e, 0x5a, 0x88, 0x3c, 0x03, 0x39, 0xfe, 0x97, 0xd8, 0xa1, 0x63, 0xe8, 0x56, 0x5e, 0x42, 0x0e, + 0xdd, 0x2a, 0xa8, 0x5f, 0x84, 0x21, 0xd5, 0x73, 0x05, 0x11, 0x3b, 0x74, 0x7c, 0xbf, 0xeb, 0xfb, + 0x87, 0x84, 0xb2, 0x5d, 0x78, 0x40, 0xf2, 0x04, 0x64, 0x16, 0x5a, 0xba, 0xd8, 0x98, 0xa3, 0x4b, + 0x91, 0xd5, 0x92, 0xe3, 0xd2, 0x32, 0x2c, 0x23, 0x9a, 0xa7, 0xeb, 0xe2, 0xb1, 0x37, 0x12, 0x99, + 0x74, 0x5d, 0x26, 0x9a, 0xa7, 0xeb, 0xca, 0x2f, 0xa6, 0xbc, 0xe7, 0xbb, 0xb3, 0x86, 0xe3, 0x56, + 0xcd, 0x7b, 0x5a, 0xcb, 0xf0, 0x3b, 0x82, 0x5c, 0x87, 0xb1, 0x00, 0x29, 0x85, 0x38, 0x88, 0x85, + 0x02, 0x42, 0x27, 0xf8, 0xc7, 0x24, 0xc7, 0x97, 0x70, 0x31, 0x72, 0x51, 0x52, 0x7e, 0xe9, 0xd4, + 0x42, 0xf6, 0x9b, 0x17, 0x4f, 0xb1, 0x47, 0xe6, 0x0c, 0xc7, 0x31, 0xcc, 0x65, 0xee, 0x7e, 0x99, + 0x41, 0x4f, 0x28, 0x3c, 0x3f, 0x59, 0xe3, 0xf0, 0x86, 0xcd, 0x10, 0xb2, 0xff, 0x8e, 0x5c, 0x40, + 0xf9, 0x4f, 0x29, 0x38, 0xc7, 0x38, 0x61, 0x50, 0xd2, 0xd8, 0x87, 0xed, 0x6b, 0x00, 0xaf, 0xf5, + 0x90, 0x94, 0x18, 0xd5, 0x8f, 0xc7, 0xe3, 0x70, 0x44, 0x08, 0x23, 0xdc, 0x7b, 0xc8, 0x7e, 0x6f, + 0x71, 0xe1, 0x7e, 0x21, 0x85, 0xd7, 0x83, 0x4b, 0x2d, 0x7a, 0x6b, 0xbe, 0xfa, 0xe6, 0x01, 0x5d, + 0x60, 0xef, 0x75, 0xea, 0x7a, 0x1d, 0xf2, 0x0e, 0xb6, 0xa5, 0xd1, 0x31, 0x8d, 0xfb, 0x78, 0xf2, + 0x25, 0x3e, 0xe6, 0xb4, 0xf4, 0x31, 0x52, 0x5b, 0xd5, 0x31, 0x4e, 0x7f, 0xcb, 0x34, 0xee, 0x63, + 0x4c, 0xd6, 0x0f, 0x63, 0x98, 0x7b, 0x89, 0x82, 0x9c, 0x83, 0x41, 0x2f, 0xb1, 0x88, 0x48, 0xd3, + 0xe1, 0xff, 0x26, 0x79, 0xc8, 0x74, 0x0c, 0x1d, 0x9b, 0xd9, 0xaf, 0xb2, 0x3f, 0x95, 0x5f, 0xcf, + 0xc0, 0x44, 0xe9, 0x4e, 0xbd, 0x5a, 0xf6, 0xbd, 0x18, 0x84, 0x5f, 0xed, 0xda, 0x2e, 0x65, 0xe1, + 0xd1, 0x93, 0x32, 0x8c, 0xf1, 0xb8, 0x08, 0x22, 0x76, 0x3f, 0x3f, 0x97, 0xea, 0xe7, 0xde, 0x14, + 0x61, 0x8c, 0xa4, 0xa4, 0xa3, 0x88, 0x11, 0x21, 0xfe, 0x1d, 0xd2, 0x84, 0xb3, 0x21, 0xd2, 0x86, + 0xe6, 0x87, 0x9d, 0xf3, 0x42, 0x7e, 0xbc, 0x67, 0x6b, 0xb3, 0xf8, 0x44, 0x57, 0x22, 0x89, 0xf5, + 0x19, 0x99, 0x75, 0x10, 0xbe, 0xce, 0x21, 0x37, 0x61, 0x82, 0x97, 0xc7, 0x43, 0x3b, 0xff, 0x91, + 0x04, 0x63, 0x2e, 0x85, 0x77, 0x90, 0x90, 0x72, 0x28, 0x2f, 0x44, 0x32, 0x81, 0x0b, 0x9f, 0xe8, + 0x3b, 0x70, 0x8a, 0xd3, 0xb7, 0xa9, 0x8d, 0x23, 0xd1, 0x32, 0x1b, 0x0e, 0x75, 0x85, 0x6b, 0xf5, + 0xe4, 0x13, 0x5b, 0x9b, 0xc5, 0x62, 0x22, 0x81, 0xc4, 0xf4, 0x04, 0x12, 0xd4, 0x7c, 0x7c, 0x9d, + 0xba, 0xf2, 0x3b, 0x8d, 0xdc, 0x2e, 0xd4, 0xfc, 0x9b, 0xd2, 0x70, 0x66, 0x86, 0x6a, 0x2d, 0x77, + 0xa5, 0xbc, 0x42, 0x9b, 0xab, 0xc7, 0x4f, 0xa5, 0x43, 0x56, 0x4b, 0xa2, 0x74, 0x8e, 0x4d, 0xe4, + 0x5e, 0xd2, 0x39, 0xb6, 0x78, 0x85, 0x74, 0xbe, 0x3b, 0x0d, 0x97, 0x92, 0x36, 0x07, 0x78, 0x3b, + 0x60, 0x2f, 0xdc, 0xa3, 0xb6, 0x6d, 0xe8, 0xf4, 0x10, 0x17, 0x95, 0x83, 0xb3, 0x87, 0xe5, 0x0e, + 0xcb, 0xee, 0xf1, 0x45, 0xec, 0xce, 0xc4, 0x75, 0x88, 0x39, 0x7b, 0x1e, 0x2c, 0x71, 0x7d, 0x63, + 0x1a, 0x4e, 0xd6, 0x8d, 0x65, 0xc7, 0xb5, 0x6c, 0x5a, 0xc3, 0x00, 0x25, 0xc7, 0x9a, 0xd4, 0x55, + 0x34, 0x87, 0x98, 0x1a, 0xeb, 0x41, 0x17, 0xcd, 0xf1, 0x80, 0x12, 0xa2, 0xf9, 0xe3, 0x2c, 0x8c, + 0xcf, 0x95, 0x6b, 0x5e, 0xc6, 0x4e, 0x57, 0xb3, 0x8f, 0x68, 0xc6, 0x82, 0xe0, 0x6c, 0x21, 0xbb, + 0x87, 0xb3, 0x85, 0x83, 0x7b, 0x5e, 0x20, 0x72, 0x32, 0xe7, 0x76, 0x95, 0x93, 0xf9, 0x49, 0x18, + 0x5b, 0x6b, 0xb6, 0x1b, 0x5e, 0x50, 0x2a, 0x43, 0xa4, 0x81, 0x57, 0x47, 0xd6, 0x9a, 0x5e, 0xbe, + 0xe9, 0xaa, 0x4e, 0x8a, 0x30, 0xdc, 0x6c, 0x19, 0xd4, 0x74, 0x1b, 0x86, 0x79, 0xd7, 0x12, 0x21, + 0xa0, 0x80, 0x83, 0xaa, 0xe6, 0x5d, 0x8b, 0x11, 0x38, 0xf8, 0x3d, 0x9c, 0x80, 0xc7, 0x7b, 0x02, + 0x0e, 0x42, 0x82, 0xcb, 0x90, 0xc7, 0xd3, 0xfc, 0xa6, 0xd5, 0x6a, 0x88, 0x60, 0x72, 0x22, 0xdc, + 0xd3, 0xb8, 0x07, 0xf7, 0x02, 0xca, 0x3d, 0x0d, 0x13, 0x86, 0xb9, 0x6c, 0xb3, 0x1d, 0xba, 0xd6, + 0x71, 0x79, 0x22, 0x1d, 0x11, 0xfe, 0x69, 0x5c, 0x20, 0x4a, 0x1d, 0x97, 0xa7, 0xd2, 0xb9, 0x04, + 0x79, 0x1a, 0x25, 0xc5, 0x28, 0x22, 0xea, 0x18, 0x0d, 0x51, 0x2a, 0x3f, 0x95, 0x85, 0xd1, 0x40, + 0xdd, 0xa6, 0x0e, 0xe9, 0x48, 0xec, 0xe1, 0x56, 0xb6, 0x60, 0xc7, 0x34, 0xb0, 0x8b, 0xdb, 0xd4, + 0xaf, 0x49, 0xc1, 0x80, 0x48, 0xf9, 0x8f, 0x9a, 0x37, 0x7c, 0xed, 0xd4, 0x95, 0x75, 0x5b, 0x6b, + 0xb7, 0xa9, 0x2d, 0x82, 0x9a, 0xf0, 0xc8, 0x43, 0x93, 0x6f, 0xb2, 0xe2, 0xbf, 0xb5, 0x59, 0x7c, + 0x65, 0xd9, 0x70, 0x57, 0x3a, 0x4b, 0x57, 0x9a, 0xd6, 0xda, 0xd5, 0x65, 0x5b, 0xbb, 0x67, 0xb8, + 0x78, 0x34, 0xac, 0xb5, 0xae, 0xba, 0xb4, 0x85, 0xa1, 0x1b, 0xaf, 0x6a, 0x6d, 0xe3, 0x2a, 0x66, + 0xba, 0xb9, 0xea, 0x73, 0x5a, 0xb4, 0x35, 0xc3, 0x75, 0xb6, 0x36, 0x8b, 0x13, 0xa2, 0x32, 0xf9, + 0xe0, 0x4c, 0x80, 0x94, 0x5f, 0x49, 0xc1, 0xc4, 0x5c, 0xb9, 0x76, 0xa3, 0xbe, 0x30, 0xaf, 0xd6, + 0xca, 0x73, 0xd4, 0x71, 0xb4, 0x65, 0x4a, 0x9e, 0x82, 0x01, 0x01, 0x11, 0xa7, 0x4c, 0x78, 0xbc, + 0xf7, 0xb6, 0x63, 0x99, 0x76, 0xbb, 0xa9, 0x7a, 0x38, 0x91, 0x91, 0x29, 0xdd, 0x23, 0x23, 0x93, + 0x02, 0x22, 0x37, 0xb8, 0x38, 0x20, 0x0b, 0x65, 0x0b, 0xe7, 0xff, 0x93, 0x05, 0xc8, 0xb5, 0x35, + 0x5b, 0x5b, 0x73, 0xb6, 0xbb, 0x2d, 0x7b, 0x74, 0x6b, 0xb3, 0x98, 0xe7, 0xa4, 0x89, 0xb7, 0x63, + 0x82, 0x8d, 0xf2, 0xf5, 0x59, 0xfc, 0x26, 0x3f, 0xa4, 0x86, 0x9f, 0x55, 0x7e, 0xcf, 0x27, 0x0d, + 0x2f, 0x41, 0xb6, 0xb3, 0xcb, 0xd1, 0xd1, 0x11, 0xa3, 0xc3, 0xd9, 0xd3, 0xe8, 0x10, 0xa5, 0x3c, + 0xad, 0xcc, 0xee, 0x56, 0x2b, 0x9d, 0x5d, 0xdc, 0xf1, 0x73, 0x5a, 0x32, 0x0f, 0x03, 0x6b, 0xbc, + 0xfb, 0xc5, 0x20, 0xf0, 0x03, 0x45, 0xc6, 0xf4, 0x63, 0xf2, 0xac, 0xc8, 0xec, 0x3a, 0x21, 0x4a, + 0xc8, 0x9a, 0x25, 0x40, 0x21, 0x2d, 0x1f, 0x38, 0x64, 0x2d, 0xff, 0xdb, 0x59, 0x38, 0x1d, 0x68, + 0xc4, 0xbc, 0xe5, 0x1a, 0x77, 0x0d, 0x7e, 0xbd, 0xf2, 0x10, 0xa9, 0x85, 0xd4, 0xc1, 0xfd, 0x07, + 0xd1, 0xc1, 0x81, 0x9a, 0xe5, 0x76, 0xa1, 0x66, 0x0f, 0x92, 0x5a, 0xfc, 0x4c, 0x06, 0xce, 0x06, + 0x6a, 0x31, 0x8b, 0xa9, 0xf3, 0xea, 0xf5, 0xa9, 0xba, 0x6b, 0x53, 0x6d, 0xed, 0xc8, 0x6a, 0x86, + 0xb6, 0x2b, 0xcd, 0xd0, 0xf6, 0x3c, 0x61, 0xc8, 0x3d, 0x99, 0x3b, 0xe4, 0x9e, 0xfc, 0xe6, 0x2c, + 0x9c, 0x0f, 0x7a, 0x52, 0x9c, 0xdf, 0xcf, 0x2c, 0x2e, 0xd6, 0x8e, 0xfa, 0xec, 0xbf, 0xfb, 0xce, + 0xf4, 0xee, 0xdc, 0xfa, 0x13, 0xef, 0xdc, 0x82, 0x05, 0x39, 0xd7, 0x75, 0x41, 0x7e, 0x1a, 0x86, + 0x6c, 0x6d, 0x9d, 0xbb, 0x08, 0xc8, 0x61, 0xfa, 0x7c, 0xa0, 0x3a, 0x68, 0x6b, 0xeb, 0xdc, 0x01, + 0xe1, 0x3c, 0x64, 0x97, 0x2c, 0x7d, 0x03, 0xed, 0x98, 0x11, 0x5e, 0x1b, 0xfb, 0xad, 0xe2, 0xbf, + 0x21, 0x15, 0x19, 0x3a, 0x64, 0x15, 0xf9, 0xed, 0x0c, 0x9c, 0x9c, 0xb4, 0x3a, 0xa6, 0x7e, 0x93, + 0x6e, 0xb4, 0x35, 0xc3, 0x56, 0x69, 0xd3, 0xba, 0xc7, 0x3e, 0xe1, 0x2f, 0xff, 0x49, 0xec, 0xc1, + 0xed, 0x5b, 0x9f, 0x81, 0xa1, 0x45, 0x6b, 0x95, 0x9a, 0x52, 0x24, 0x6c, 0xcc, 0x66, 0xec, 0x32, + 0x20, 0x8f, 0x48, 0x15, 0x10, 0x90, 0x67, 0x61, 0x60, 0xd2, 0xe2, 0x97, 0x87, 0x52, 0x3a, 0xd6, + 0x25, 0x4b, 0x5c, 0x1a, 0x4a, 0x42, 0x13, 0x64, 0xe4, 0x25, 0x18, 0xaa, 0x75, 0x96, 0x5a, 0x46, + 0xf3, 0x26, 0xf5, 0x3c, 0x55, 0xf0, 0xd9, 0x72, 0x1b, 0x81, 0x8d, 0x55, 0xba, 0x11, 0x8a, 0x6a, + 0xe4, 0x91, 0x92, 0x0f, 0xc0, 0xa8, 0x27, 0xdf, 0xb2, 0xd5, 0x31, 0x5d, 0x54, 0x23, 0x91, 0x07, + 0xd3, 0x16, 0x88, 0x06, 0x5e, 0x93, 0xa8, 0x61, 0x42, 0xf2, 0x22, 0x8c, 0x78, 0x80, 0x39, 0x4b, + 0xa7, 0x72, 0xdc, 0x47, 0xbf, 0xe0, 0x9a, 0xa5, 0x53, 0x35, 0x44, 0xa6, 0xfc, 0x74, 0xb4, 0x77, + 0x2d, 0xd7, 0x5f, 0xdf, 0x8f, 0x7b, 0xb7, 0x4b, 0xef, 0x2e, 0xc0, 0x44, 0xcd, 0xa6, 0xf7, 0x0c, + 0xab, 0xe3, 0x44, 0x7b, 0xf9, 0xf1, 0xad, 0xcd, 0xe2, 0x85, 0xb6, 0x40, 0x36, 0x12, 0xbb, 0x3b, + 0x5e, 0x96, 0xbc, 0x0e, 0x23, 0xf3, 0x74, 0x3d, 0xe0, 0x35, 0x10, 0x44, 0x37, 0x33, 0xe9, 0x7a, + 0x32, 0x9b, 0x50, 0x09, 0xe5, 0xa7, 0xd3, 0xf0, 0x1e, 0xb9, 0x1f, 0x6f, 0x58, 0x86, 0x89, 0xcf, + 0xf0, 0x6f, 0x53, 0xdb, 0x37, 0xda, 0xa6, 0x35, 0xa3, 0xb5, 0xcf, 0x60, 0x70, 0xef, 0xf2, 0xae, + 0x55, 0xbe, 0x98, 0x86, 0xe1, 0x7a, 0xb9, 0x3a, 0xe7, 0xad, 0x7f, 0xdb, 0x27, 0xcf, 0x9d, 0x84, + 0x51, 0x1e, 0x57, 0xae, 0xa4, 0xeb, 0x36, 0x75, 0x1c, 0xb1, 0xaf, 0xc3, 0xce, 0x13, 0xb1, 0xe3, + 0x34, 0x8e, 0x91, 0x2f, 0x53, 0x43, 0x45, 0xd8, 0x74, 0xc1, 0x56, 0x45, 0xf4, 0x6d, 0x17, 0x3b, + 0xbe, 0xc0, 0xcb, 0x41, 0x63, 0x50, 0x79, 0xba, 0xf0, 0x49, 0xc9, 0x33, 0x90, 0x9b, 0xe3, 0xab, + 0x52, 0x36, 0x78, 0xa9, 0xc1, 0x57, 0x23, 0xf9, 0xa5, 0x06, 0xa7, 0x21, 0x17, 0x21, 0x5b, 0x0b, + 0x56, 0x38, 0x9c, 0x53, 0xd8, 0xda, 0x26, 0xbf, 0x60, 0xa8, 0xf1, 0xf7, 0x25, 0xd9, 0x49, 0xb6, + 0x36, 0xe5, 0x76, 0x10, 0x5a, 0x8d, 0x2d, 0x57, 0xc9, 0xa1, 0xd5, 0x18, 0x0b, 0x72, 0xd2, 0x4b, + 0x17, 0xc1, 0x0f, 0x93, 0x44, 0x0a, 0x8a, 0x0d, 0x18, 0xe1, 0x32, 0x76, 0xda, 0x96, 0xe9, 0x50, + 0xf2, 0x28, 0x00, 0x57, 0x14, 0x4c, 0x56, 0x8f, 0xa9, 0x7f, 0x55, 0x09, 0xe2, 0x37, 0x28, 0xbd, + 0xef, 0x06, 0x29, 0xff, 0x20, 0x0d, 0x63, 0xac, 0xee, 0xb2, 0xb5, 0xb6, 0x66, 0x99, 0x15, 0xa6, + 0xd2, 0x15, 0x18, 0x10, 0xbd, 0x2d, 0x34, 0xd3, 0xb7, 0x18, 0x24, 0x45, 0xe0, 0x2f, 0x69, 0x6c, + 0xfe, 0x43, 0x56, 0x1c, 0x4f, 0x51, 0x22, 0x0e, 0x27, 0xd9, 0xc0, 0xe1, 0x44, 0x72, 0x33, 0x91, + 0x93, 0x4e, 0x4b, 0xd4, 0xe4, 0x35, 0x36, 0x79, 0xc7, 0x22, 0x11, 0xe2, 0x9b, 0x91, 0x50, 0x00, + 0x42, 0x79, 0xf8, 0xcb, 0x05, 0xc8, 0x0c, 0x9e, 0xc3, 0xa2, 0x34, 0x45, 0xb7, 0x9d, 0x0c, 0x7f, + 0x04, 0xc7, 0x71, 0xfd, 0xb7, 0xc5, 0x2f, 0x39, 0x49, 0xb2, 0x47, 0xa1, 0x7c, 0x3e, 0x03, 0x79, + 0x56, 0x84, 0x59, 0xf5, 0x86, 0xb9, 0x8c, 0x81, 0xdd, 0x0f, 0x61, 0xc6, 0x78, 0x15, 0x72, 0xbc, + 0x8b, 0x62, 0xaf, 0x2d, 0x42, 0x9d, 0x17, 0x2d, 0xcd, 0x31, 0x6c, 0x5c, 0xf0, 0x18, 0xea, 0xf2, + 0xb8, 0xe0, 0xc1, 0xd6, 0xe5, 0x71, 0xc1, 0x69, 0xc8, 0x65, 0xe8, 0xe7, 0x8b, 0x6d, 0x7f, 0x10, + 0x2b, 0x1b, 0xd7, 0x58, 0x39, 0xa7, 0x09, 0x5f, 0x65, 0x5f, 0x46, 0x4d, 0xb5, 0xdd, 0xaa, 0xa9, + 0xd3, 0xfb, 0x22, 0xc4, 0x37, 0x76, 0xb2, 0xc3, 0xa0, 0x0d, 0x83, 0x81, 0xe5, 0x9c, 0xc9, 0x01, + 0x31, 0x9b, 0x27, 0xbc, 0x2e, 0x93, 0x97, 0x76, 0x9c, 0x27, 0xfc, 0x4e, 0x8e, 0x56, 0x1b, 0x2e, + 0xa2, 0x6c, 0xa5, 0x61, 0x42, 0xf4, 0x27, 0x42, 0x8f, 0x66, 0xef, 0xbc, 0x0c, 0xb0, 0x28, 0xac, + 0x52, 0x3f, 0x8e, 0x36, 0x0a, 0xd1, 0xb3, 0x55, 0xc3, 0x39, 0xee, 0x25, 0x62, 0xcc, 0x59, 0x2d, + 0x12, 0x30, 0x54, 0x2b, 0x72, 0x66, 0x77, 0x2a, 0xa0, 0x91, 0xa2, 0x01, 0x31, 0xb9, 0x0a, 0x03, + 0x15, 0xc3, 0x69, 0xb7, 0xb4, 0x90, 0x3f, 0xb7, 0xce, 0x41, 0xf2, 0x88, 0x16, 0x54, 0xca, 0xb7, + 0x67, 0xe0, 0x5c, 0x99, 0x9f, 0x6c, 0xd7, 0x54, 0xea, 0xb8, 0xb6, 0xc1, 0x1f, 0xcd, 0x1d, 0xdf, + 0x69, 0xc5, 0x92, 0xf3, 0xed, 0xc6, 0x27, 0x66, 0x1e, 0x4e, 0x26, 0x49, 0x55, 0x84, 0x3f, 0xc7, + 0xe8, 0xab, 0xde, 0x15, 0x43, 0xbb, 0x61, 0x4b, 0x14, 0x6a, 0x62, 0x39, 0xe5, 0x73, 0x69, 0x38, + 0x51, 0x6a, 0xb7, 0x4b, 0x1d, 0x77, 0x25, 0xfa, 0x86, 0x66, 0xcf, 0x3b, 0x57, 0xd9, 0x7d, 0x39, + 0xbd, 0x47, 0xcf, 0x75, 0x6f, 0xf7, 0x9b, 0xd9, 0xe5, 0xee, 0x77, 0x06, 0xa0, 0xb9, 0x8f, 0x77, + 0x10, 0x41, 0xd9, 0xb8, 0x64, 0x02, 0xcd, 0x3d, 0x96, 0x4c, 0x58, 0x32, 0xc1, 0x65, 0xec, 0x43, + 0x2e, 0x99, 0x3f, 0x8d, 0x4a, 0x06, 0xf7, 0x0f, 0x1b, 0xfb, 0x92, 0xcc, 0x2b, 0x30, 0xae, 0xb5, + 0xdb, 0xfc, 0x62, 0xae, 0x89, 0x4c, 0xe5, 0xec, 0x61, 0x11, 0x94, 0x3a, 0xaa, 0xc9, 0xd5, 0xef, + 0x59, 0x24, 0xd2, 0x21, 0x52, 0x76, 0x3f, 0x87, 0x48, 0xfd, 0x7b, 0x3c, 0x11, 0xdc, 0xc5, 0xd9, + 0xae, 0xf2, 0x55, 0x69, 0xc8, 0xdf, 0x36, 0xa9, 0x7b, 0x60, 0xf3, 0x57, 0xd0, 0x8c, 0xf4, 0x2e, + 0x0e, 0x26, 0x0f, 0x5f, 0xfb, 0xc2, 0x82, 0x38, 0x80, 0xe9, 0xea, 0xdd, 0x21, 0x88, 0x03, 0x98, + 0x9d, 0x8e, 0xaa, 0x20, 0xfe, 0x65, 0x1a, 0x4e, 0x79, 0x8f, 0xd3, 0x44, 0x06, 0x84, 0xe3, 0x37, + 0xb2, 0xfb, 0x0a, 0xd6, 0x98, 0x20, 0xd1, 0xe3, 0x90, 0xa2, 0xfb, 0x0a, 0x29, 0x9a, 0x20, 0xd1, + 0xe3, 0xb7, 0xb8, 0xfb, 0xd2, 0xd1, 0x6f, 0xcd, 0xc0, 0xc9, 0xaa, 0x29, 0x5c, 0x85, 0xe6, 0x2c, + 0xfd, 0x40, 0x82, 0x9a, 0x3d, 0xcc, 0x81, 0x08, 0x54, 0x18, 0xa8, 0x69, 0x1b, 0x4c, 0x41, 0xb7, + 0x3b, 0xd5, 0x2b, 0xb2, 0x5d, 0x71, 0x9b, 0xd3, 0x26, 0x9e, 0xa3, 0x79, 0x8c, 0x12, 0x3a, 0xe9, + 0xf8, 0x7d, 0xfe, 0x03, 0xd7, 0x49, 0xbf, 0x94, 0x8e, 0x76, 0xd2, 0xf1, 0xd4, 0xb4, 0xef, 0xe5, + 0xd3, 0x17, 0x68, 0x9d, 0x36, 0x6d, 0x7a, 0x1c, 0xd8, 0xe6, 0xc0, 0x25, 0x7a, 0x3c, 0x91, 0x1c, + 0xb4, 0x44, 0x8f, 0x47, 0xfd, 0xbe, 0x24, 0xfa, 0x6d, 0x19, 0x49, 0xa2, 0x07, 0xe6, 0xf5, 0x71, + 0xbc, 0xd8, 0x1d, 0xec, 0x62, 0x97, 0xd0, 0x4b, 0xc7, 0x33, 0xc9, 0x03, 0xd7, 0x4b, 0xa1, 0xd9, + 0xe9, 0xc0, 0x7c, 0x61, 0x1e, 0xe2, 0x5e, 0x7a, 0xba, 0xc9, 0xe3, 0x49, 0xde, 0x34, 0x4c, 0x9d, + 0x9c, 0x85, 0x53, 0xb7, 0xea, 0x53, 0x6a, 0xe3, 0x66, 0x75, 0xbe, 0xd2, 0xb8, 0x35, 0x5f, 0xaf, + 0x4d, 0x95, 0xab, 0xd3, 0xd5, 0xa9, 0x4a, 0xbe, 0x8f, 0x9c, 0x80, 0xf1, 0x00, 0x35, 0x73, 0x6b, + 0xae, 0x34, 0x9f, 0x4f, 0x91, 0x09, 0x18, 0x0d, 0x80, 0x93, 0x0b, 0x8b, 0xf9, 0x34, 0x39, 0x09, + 0xf9, 0x00, 0x54, 0x7f, 0xab, 0xbe, 0x38, 0x35, 0x97, 0xcf, 0x3c, 0xfd, 0xf9, 0x14, 0x00, 0xab, + 0x65, 0xc1, 0x36, 0x96, 0x0d, 0x93, 0x3c, 0x02, 0x67, 0x90, 0x68, 0x41, 0xad, 0x5e, 0xaf, 0xce, + 0x47, 0x6a, 0x3a, 0x05, 0x13, 0x32, 0x72, 0x76, 0xa1, 0x5c, 0x9a, 0xcd, 0xa7, 0xfc, 0x06, 0x08, + 0x70, 0xbd, 0xbe, 0x20, 0xd5, 0x26, 0x80, 0x0b, 0x37, 0x17, 0x4b, 0xf9, 0x4c, 0x14, 0x5a, 0x2f, + 0x57, 0xe7, 0xf2, 0x59, 0x72, 0x06, 0x4e, 0xc8, 0xd0, 0xa9, 0xf9, 0x45, 0xb5, 0x54, 0xad, 0xe4, + 0xfb, 0x9f, 0x7e, 0x0f, 0x0c, 0xe3, 0x5d, 0xa8, 0x88, 0x49, 0x31, 0x02, 0x83, 0x0b, 0x93, 0xf5, + 0x29, 0xf5, 0x36, 0xb6, 0x06, 0x20, 0x57, 0x99, 0x9a, 0x67, 0x2d, 0x4b, 0x3d, 0x6d, 0xc3, 0xf0, + 0xdc, 0x74, 0x69, 0xba, 0x65, 0xad, 0xe3, 0xbd, 0xf9, 0x05, 0x38, 0x3b, 0x37, 0x5d, 0x6a, 0x4c, + 0xcf, 0x2e, 0xdc, 0x69, 0x2c, 0xbe, 0x55, 0x9b, 0x8a, 0x7c, 0xc7, 0x65, 0x78, 0x2a, 0x8c, 0xae, + 0x4d, 0xa9, 0x8d, 0xfa, 0x54, 0xbd, 0x5e, 0x5d, 0x98, 0x6f, 0x94, 0xa7, 0xd4, 0xc5, 0xea, 0x74, + 0xb5, 0x5c, 0x5a, 0x9c, 0xca, 0xa7, 0x98, 0xdc, 0xc3, 0xa4, 0xd5, 0xf9, 0xc6, 0x64, 0x69, 0xbe, + 0x92, 0x4f, 0x3f, 0xfd, 0x1f, 0x52, 0x00, 0xf5, 0xe9, 0xc5, 0x9a, 0x68, 0xdc, 0x30, 0x0c, 0x54, + 0xe7, 0x6f, 0x97, 0x66, 0xab, 0xac, 0x86, 0x41, 0xc8, 0x2e, 0xd4, 0xa6, 0x58, 0x47, 0x0c, 0x41, + 0x7f, 0x79, 0x76, 0xa1, 0x3e, 0x95, 0x4f, 0x33, 0xa0, 0x3a, 0x55, 0xaa, 0xe4, 0x33, 0x0c, 0x78, + 0x47, 0xad, 0x2e, 0x4e, 0xe5, 0xb3, 0xec, 0xcf, 0xd9, 0xfa, 0x62, 0x69, 0x31, 0xdf, 0xcf, 0xfe, + 0x9c, 0xc6, 0x3f, 0x73, 0x8c, 0x59, 0x7d, 0x6a, 0x11, 0x7f, 0x0c, 0xb0, 0xcf, 0x9e, 0xf6, 0x7e, + 0x0d, 0x32, 0x14, 0x63, 0x5d, 0xa9, 0xaa, 0xf9, 0x21, 0xf6, 0x83, 0xb1, 0x64, 0x3f, 0x80, 0x09, + 0x44, 0x9d, 0x9a, 0x5b, 0xb8, 0x3d, 0x95, 0x1f, 0x66, 0xbc, 0xe6, 0x6e, 0x32, 0xf0, 0x08, 0xfb, + 0x53, 0x9d, 0x63, 0x7f, 0x8e, 0x32, 0x4e, 0xea, 0x54, 0x69, 0xb6, 0x56, 0x5a, 0x9c, 0xc9, 0x8f, + 0xb1, 0xf6, 0x20, 0xcf, 0x71, 0x5e, 0x72, 0xbe, 0x34, 0x37, 0x95, 0xcf, 0x0b, 0x9a, 0xca, 0x6c, + 0x75, 0xfe, 0x66, 0x7e, 0x02, 0x1b, 0xf2, 0xd6, 0x1c, 0xfe, 0x20, 0xac, 0x00, 0xfe, 0x75, 0xe2, + 0xe9, 0x8f, 0x41, 0x6e, 0xa1, 0x8e, 0xa2, 0x3e, 0x03, 0x27, 0x16, 0xea, 0x49, 0x42, 0x9e, 0x80, + 0x51, 0x0f, 0x31, 0x5b, 0x9d, 0xbf, 0xf5, 0x26, 0x57, 0x4a, 0x0f, 0x34, 0x57, 0x2a, 0x2f, 0xd4, + 0xf3, 0x69, 0xa6, 0x3b, 0x1e, 0xe8, 0x4e, 0x75, 0xbe, 0xb2, 0x70, 0xa7, 0x9e, 0xcf, 0x3c, 0x7d, + 0x0f, 0x46, 0x2a, 0xf4, 0x9e, 0xd1, 0xa4, 0x42, 0x29, 0x2f, 0xc0, 0xd9, 0xca, 0xd4, 0xed, 0x6a, + 0x79, 0xaa, 0xab, 0x5a, 0x86, 0xd1, 0xa5, 0x5a, 0x35, 0x9f, 0x22, 0xa7, 0x81, 0x84, 0xc1, 0x37, + 0x4a, 0x73, 0xd3, 0xf9, 0x34, 0x29, 0xc0, 0xc9, 0x30, 0xbc, 0x3a, 0xbf, 0x78, 0x6b, 0x7e, 0x2a, + 0x9f, 0x79, 0xfa, 0xdb, 0x52, 0x70, 0x6a, 0xaa, 0xa5, 0x39, 0xae, 0xd1, 0x74, 0xa8, 0x66, 0x37, + 0x57, 0xca, 0x9a, 0x4b, 0x97, 0x2d, 0x7b, 0x83, 0x28, 0xf0, 0xe8, 0xd4, 0x6c, 0xa9, 0xbe, 0x58, + 0x2d, 0xd7, 0xa7, 0x4a, 0x6a, 0x79, 0xa6, 0xc1, 0xd4, 0xe3, 0xfa, 0x82, 0xfa, 0x56, 0xe3, 0xfa, + 0xd4, 0xfc, 0x94, 0x5a, 0x9a, 0xcd, 0xf7, 0x91, 0x27, 0xa0, 0xd8, 0x85, 0xa6, 0x3e, 0x55, 0xbe, + 0xa5, 0x56, 0x17, 0xdf, 0xca, 0xa7, 0xc8, 0xe3, 0x70, 0xa1, 0x2b, 0x11, 0xfb, 0x9d, 0x4f, 0x93, + 0x47, 0xe1, 0x5c, 0x37, 0x92, 0x37, 0x66, 0xf3, 0x99, 0xa7, 0xbf, 0x31, 0x05, 0x64, 0xa1, 0x4d, + 0xcd, 0x7a, 0xb8, 0x89, 0x8f, 0xc1, 0x79, 0xa6, 0x17, 0x8d, 0xee, 0x0d, 0x7c, 0x1c, 0x2e, 0x24, + 0x52, 0x48, 0xcd, 0x2b, 0xc2, 0x23, 0x5d, 0x48, 0x44, 0xe3, 0xce, 0x43, 0x21, 0x99, 0x00, 0x9b, + 0xf6, 0x03, 0x29, 0x38, 0x95, 0x98, 0x1a, 0x97, 0x5c, 0x82, 0x27, 0x4b, 0x95, 0x39, 0xd6, 0x37, + 0xe5, 0xc5, 0xea, 0xc2, 0x7c, 0xbd, 0xc1, 0x46, 0x15, 0xd3, 0xbe, 0x5b, 0xf5, 0x48, 0x6f, 0x5e, + 0x04, 0xa5, 0x07, 0x65, 0x79, 0xa6, 0x34, 0x7f, 0x9d, 0x0d, 0x79, 0xf2, 0x24, 0x3c, 0xd6, 0x95, + 0x6e, 0x6a, 0xbe, 0x34, 0x39, 0x3b, 0x55, 0xc9, 0xa7, 0xc9, 0x53, 0xf0, 0x78, 0x57, 0xaa, 0x4a, + 0xb5, 0xce, 0xc9, 0x32, 0x4f, 0x6b, 0xa1, 0x80, 0x8d, 0xec, 0x2b, 0xcb, 0x0b, 0xf3, 0x8b, 0xa5, + 0xf2, 0x62, 0x92, 0x66, 0x9f, 0x85, 0x53, 0x21, 0xec, 0xe4, 0xad, 0x7a, 0x75, 0x7e, 0xaa, 0x5e, + 0xe7, 0xd3, 0x45, 0x08, 0xe5, 0x8b, 0x36, 0x3d, 0x59, 0xf9, 0xc2, 0xef, 0x3f, 0xda, 0xf7, 0x85, + 0x2f, 0x3e, 0x9a, 0xfa, 0xe5, 0x2f, 0x3e, 0x9a, 0xfa, 0xbd, 0x2f, 0x3e, 0x9a, 0xfa, 0xc8, 0xb5, + 0xdd, 0xbc, 0xee, 0xe5, 0x0b, 0xc6, 0x52, 0x0e, 0x17, 0xe8, 0xe7, 0xff, 0xbf, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xb4, 0xa4, 0xe7, 0x62, 0xbc, 0x03, 0x02, 0x00, } func (m *Metadata) Marshal() (dAtA []byte, err error) { @@ -22834,6 +22838,13 @@ func (m *DesktopRecording) MarshalToSizedBuffer(dAtA []byte) (int, error) { i -= len(m.XXX_unrecognized) copy(dAtA[i:], m.XXX_unrecognized) } + if len(m.TDPBMessage) > 0 { + i -= len(m.TDPBMessage) + copy(dAtA[i:], m.TDPBMessage) + i = encodeVarintEvents(dAtA, i, uint64(len(m.TDPBMessage))) + i-- + dAtA[i] = 0x22 + } if m.DelayMilliseconds != 0 { i = encodeVarintEvents(dAtA, i, uint64(m.DelayMilliseconds)) i-- @@ -51102,6 +51113,10 @@ func (m *DesktopRecording) Size() (n int) { if m.DelayMilliseconds != 0 { n += 1 + sovEvents(uint64(m.DelayMilliseconds)) } + l = len(m.TDPBMessage) + if l > 0 { + n += 1 + l + sovEvents(uint64(l)) + } if m.XXX_unrecognized != nil { n += len(m.XXX_unrecognized) } @@ -66754,6 +66769,40 @@ func (m *DesktopRecording) Unmarshal(dAtA []byte) error { break } } + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field TDPBMessage", wireType) + } + var byteLen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowEvents + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + byteLen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if byteLen < 0 { + return ErrInvalidLengthEvents + } + postIndex := iNdEx + byteLen + if postIndex < 0 { + return ErrInvalidLengthEvents + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.TDPBMessage = append(m.TDPBMessage[:0], dAtA[iNdEx:postIndex]...) + if m.TDPBMessage == nil { + m.TDPBMessage = []byte{} + } + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipEvents(dAtA[iNdEx:]) diff --git a/lib/service/desktop.go b/lib/service/desktop.go index badef6b0cf2..344fe8d9b77 100644 --- a/lib/service/desktop.go +++ b/lib/service/desktop.go @@ -41,6 +41,7 @@ import ( "github.com/gravitational/teleport/lib/reversetunnelclient" "github.com/gravitational/teleport/lib/services" "github.com/gravitational/teleport/lib/srv/desktop" + "github.com/gravitational/teleport/lib/srv/desktop/tdp/protocol/tdpb" "github.com/gravitational/teleport/lib/utils" ) @@ -177,6 +178,7 @@ func (process *TeleportProcess) initWindowsDesktopServiceRegistered(logger *slog return trace.Wrap(err) } tlsConfig.ClientAuth = tls.RequireAndVerifyClientCert + tlsConfig.NextProtos = []string{tdpb.ProtocolName} // Populate the correct CAs for the incoming client connection. tlsConfig.GetConfigForClient = func(info *tls.ClientHelloInfo) (*tls.Config, error) { var clusterName string diff --git a/lib/srv/desktop/audit.go b/lib/srv/desktop/audit.go index 8fbf3b40f06..b58ca93e78d 100644 --- a/lib/srv/desktop/audit.go +++ b/lib/srv/desktop/audit.go @@ -25,11 +25,13 @@ import ( "github.com/gravitational/trace" "github.com/jonboulle/clockwork" + tdpbv1 "github.com/gravitational/teleport/api/gen/proto/go/teleport/desktop/v1" "github.com/gravitational/teleport/api/types" "github.com/gravitational/teleport/api/types/events" libevents "github.com/gravitational/teleport/lib/events" "github.com/gravitational/teleport/lib/services" "github.com/gravitational/teleport/lib/srv/desktop/tdp/protocol/legacy" + "github.com/gravitational/teleport/lib/srv/desktop/tdp/protocol/tdpb" "github.com/gravitational/teleport/lib/tlsca" ) @@ -201,8 +203,8 @@ func (d *desktopSessionAuditor) makeClipboardReceive(length int32) *events.Deskt // In the happy path, no event is emitted here, but details from the announcement // are cached for future audit events. An event is returned only if there was // an error. -func (d *desktopSessionAuditor) onSharedDirectoryAnnounce(m legacy.SharedDirectoryAnnounce) *events.DesktopSharedDirectoryStart { - err := d.auditCache.SetName(directoryID(m.DirectoryID), directoryName(m.Name)) +func (d *desktopSessionAuditor) onSharedDirectoryAnnounce(m *tdpb.SharedDirectoryAnnounce) *events.DesktopSharedDirectoryStart { + err := d.auditCache.SetName(directoryID(m.DirectoryId), directoryName(m.Name)) if err == nil { // no work to do yet, but data is cached for future events return nil @@ -228,21 +230,21 @@ func (d *desktopSessionAuditor) onSharedDirectoryAnnounce(m legacy.SharedDirecto }, DesktopAddr: d.desktop.GetAddr(), DirectoryName: m.Name, - DirectoryID: m.DirectoryID, + DirectoryID: m.DirectoryId, DesktopName: d.desktop.GetName(), } } // makeSharedDirectoryStart creates a DesktopSharedDirectoryStart event. -func (d *desktopSessionAuditor) makeSharedDirectoryStart(m legacy.SharedDirectoryAcknowledge) *events.DesktopSharedDirectoryStart { +func (d *desktopSessionAuditor) makeSharedDirectoryStart(m *tdpb.SharedDirectoryAcknowledge) *events.DesktopSharedDirectoryStart { code := libevents.DesktopSharedDirectoryStartCode - name, ok := d.auditCache.GetName(directoryID(m.DirectoryID)) + name, ok := d.auditCache.GetName(directoryID(m.DirectoryId)) if !ok { code = libevents.DesktopSharedDirectoryStartFailureCode name = "unknown" } - if m.ErrCode != legacy.ErrCodeNil { + if m.ErrorCode != legacy.ErrCodeNil { code = libevents.DesktopSharedDirectoryStartFailureCode } @@ -256,10 +258,10 @@ func (d *desktopSessionAuditor) makeSharedDirectoryStart(m legacy.SharedDirector UserMetadata: d.identity.GetUserMetadata(), SessionMetadata: d.getSessionMetadata(), ConnectionMetadata: d.getConnectionMetadata(), - Status: statusFromErrCode(m.ErrCode), + Status: statusFromErrCode(m.ErrorCode), DesktopAddr: d.desktop.GetAddr(), DirectoryName: string(name), - DirectoryID: m.DirectoryID, + DirectoryID: m.DirectoryId, DesktopName: d.desktop.GetName(), } } @@ -268,12 +270,12 @@ func (d *desktopSessionAuditor) makeSharedDirectoryStart(m legacy.SharedDirector // In the happy path, no event is emitted here, but details from the operation // are cached for future audit events. An event is returned only if there was // an error. -func (d *desktopSessionAuditor) onSharedDirectoryReadRequest(m legacy.SharedDirectoryReadRequest) *events.DesktopSharedDirectoryRead { - did := directoryID(m.DirectoryID) +func (d *desktopSessionAuditor) onSharedDirectoryReadRequest(completion completionID, directory directoryID, m *tdpbv1.SharedDirectoryRequest_Read) *events.DesktopSharedDirectoryRead { + did := directory path := m.Path offset := m.Offset - err := d.auditCache.SetReadRequestInfo(completionID(m.CompletionID), readRequestInfo{ + err := d.auditCache.SetReadRequestInfo(completion, readRequestInfo{ directoryID: did, path: path, offset: offset, @@ -314,7 +316,7 @@ func (d *desktopSessionAuditor) onSharedDirectoryReadRequest(m legacy.SharedDire } // makeSharedDirectoryReadResponse creates a DesktopSharedDirectoryRead audit event. -func (d *desktopSessionAuditor) makeSharedDirectoryReadResponse(m legacy.SharedDirectoryReadResponse) *events.DesktopSharedDirectoryRead { +func (d *desktopSessionAuditor) makeSharedDirectoryReadResponse(completion completionID, errorCode uint32, m *tdpbv1.SharedDirectoryResponse_Read) *events.DesktopSharedDirectoryRead { var did directoryID var name directoryName @@ -324,7 +326,7 @@ func (d *desktopSessionAuditor) makeSharedDirectoryReadResponse(m legacy.SharedD code := libevents.DesktopSharedDirectoryReadCode // Gather info from the audit cache - info, ok := d.auditCache.TakeReadRequestInfo(completionID(m.CompletionID)) + info, ok := d.auditCache.TakeReadRequestInfo(completion) if ok { did = info.directoryID // Only search for the directory name if we retrieved the directory ID from the audit cache. @@ -341,7 +343,7 @@ func (d *desktopSessionAuditor) makeSharedDirectoryReadResponse(m legacy.SharedD name = "unknown" } - if m.ErrCode != legacy.ErrCodeNil { + if errorCode != legacy.ErrCodeNil { code = libevents.DesktopSharedDirectoryWriteFailureCode } @@ -355,12 +357,12 @@ func (d *desktopSessionAuditor) makeSharedDirectoryReadResponse(m legacy.SharedD UserMetadata: d.identity.GetUserMetadata(), SessionMetadata: d.getSessionMetadata(), ConnectionMetadata: d.getConnectionMetadata(), - Status: statusFromErrCode(m.ErrCode), + Status: statusFromErrCode(errorCode), DesktopAddr: d.desktop.GetAddr(), DirectoryName: string(name), DirectoryID: uint32(did), Path: path, - Length: m.ReadDataLength, + Length: uint32(len(m.Data)), Offset: offset, DesktopName: d.desktop.GetName(), } @@ -370,13 +372,13 @@ func (d *desktopSessionAuditor) makeSharedDirectoryReadResponse(m legacy.SharedD // In the happy path, no event is emitted here, but details from the operation // are cached for future audit events. An event is returned only if there was // an error. -func (d *desktopSessionAuditor) onSharedDirectoryWriteRequest(m legacy.SharedDirectoryWriteRequest) *events.DesktopSharedDirectoryWrite { - did := directoryID(m.DirectoryID) +func (d *desktopSessionAuditor) onSharedDirectoryWriteRequest(completion completionID, directory directoryID, m *tdpbv1.SharedDirectoryRequest_Write) *events.DesktopSharedDirectoryWrite { + did := directory path := m.Path offset := m.Offset err := d.auditCache.SetWriteRequestInfo( - completionID(m.CompletionID), + completion, writeRequestInfo{ directoryID: did, path: path, @@ -412,13 +414,13 @@ func (d *desktopSessionAuditor) onSharedDirectoryWriteRequest(m legacy.SharedDir DirectoryName: string(name), DirectoryID: uint32(did), Path: path, - Length: m.WriteDataLength, + Length: uint32(len(m.Data)), Offset: offset, } } // makeSharedDirectoryWriteResponse creates a DesktopSharedDirectoryWrite audit event. -func (d *desktopSessionAuditor) makeSharedDirectoryWriteResponse(m legacy.SharedDirectoryWriteResponse) *events.DesktopSharedDirectoryWrite { +func (d *desktopSessionAuditor) makeSharedDirectoryWriteResponse(completion completionID, errorCode uint32, m *tdpbv1.SharedDirectoryResponse_Write) *events.DesktopSharedDirectoryWrite { var did directoryID var name directoryName @@ -427,7 +429,7 @@ func (d *desktopSessionAuditor) makeSharedDirectoryWriteResponse(m legacy.Shared code := libevents.DesktopSharedDirectoryWriteCode // Gather info from the audit cache - info, ok := d.auditCache.TakeWriteRequestInfo(completionID(m.CompletionID)) + info, ok := d.auditCache.TakeWriteRequestInfo(completion) if ok { did = info.directoryID // Only search for the directory name if we retrieved the directoryID from the audit cache. @@ -444,7 +446,7 @@ func (d *desktopSessionAuditor) makeSharedDirectoryWriteResponse(m legacy.Shared name = "unknown" } - if m.ErrCode != legacy.ErrCodeNil { + if errorCode != legacy.ErrCodeNil { code = libevents.DesktopSharedDirectoryWriteFailureCode } @@ -458,7 +460,7 @@ func (d *desktopSessionAuditor) makeSharedDirectoryWriteResponse(m legacy.Shared UserMetadata: d.identity.GetUserMetadata(), SessionMetadata: d.getSessionMetadata(), ConnectionMetadata: d.getConnectionMetadata(), - Status: statusFromErrCode(m.ErrCode), + Status: statusFromErrCode(errorCode), DesktopAddr: d.desktop.GetAddr(), DirectoryName: string(name), DirectoryID: uint32(did), diff --git a/lib/srv/desktop/audit_test.go b/lib/srv/desktop/audit_test.go index b4d34c8f12d..68577329d37 100644 --- a/lib/srv/desktop/audit_test.go +++ b/lib/srv/desktop/audit_test.go @@ -29,11 +29,13 @@ import ( "github.com/jonboulle/clockwork" "github.com/stretchr/testify/require" + tdpbv1 "github.com/gravitational/teleport/api/gen/proto/go/teleport/desktop/v1" "github.com/gravitational/teleport/api/types" "github.com/gravitational/teleport/api/types/events" libevents "github.com/gravitational/teleport/lib/events" "github.com/gravitational/teleport/lib/reversetunnel" "github.com/gravitational/teleport/lib/srv/desktop/tdp/protocol/legacy" + "github.com/gravitational/teleport/lib/srv/desktop/tdp/protocol/tdpb" "github.com/gravitational/teleport/lib/tlsca" logutils "github.com/gravitational/teleport/lib/utils/log" ) @@ -257,16 +259,16 @@ func TestDesktopSharedDirectoryStartEvent(t *testing.T) { if test.sendsAnnounce { // SharedDirectoryAnnounce initializes the nameCache. - audit.onSharedDirectoryAnnounce(legacy.SharedDirectoryAnnounce{ - DirectoryID: uint32(testDirectoryID), + audit.onSharedDirectoryAnnounce(&tdpb.SharedDirectoryAnnounce{ + DirectoryId: uint32(testDirectoryID), Name: testDirName, }) } // SharedDirectoryAcknowledge causes the event to be emitted - startEvent := audit.makeSharedDirectoryStart(legacy.SharedDirectoryAcknowledge{ - DirectoryID: uint32(testDirectoryID), - ErrCode: test.errCode, + startEvent := audit.makeSharedDirectoryStart(&tdpb.SharedDirectoryAcknowledge{ + DirectoryId: uint32(testDirectoryID), + ErrorCode: test.errCode, }) baseEvent := &events.DesktopSharedDirectoryStart{ @@ -392,29 +394,24 @@ func TestDesktopSharedDirectoryReadEvent(t *testing.T) { if test.sendsAnnounce { // SharedDirectoryAnnounce initializes the name cache - audit.onSharedDirectoryAnnounce(legacy.SharedDirectoryAnnounce{ - DirectoryID: uint32(testDirectoryID), + audit.onSharedDirectoryAnnounce(&tdpb.SharedDirectoryAnnounce{ + DirectoryId: uint32(testDirectoryID), Name: testDirName, }) } if test.sendsReq { // SharedDirectoryReadRequest initializes the readRequestCache. - audit.onSharedDirectoryReadRequest(legacy.SharedDirectoryReadRequest{ - CompletionID: uint32(testCompletionID), - DirectoryID: uint32(testDirectoryID), - Path: testFilePath, - Offset: testOffset, - Length: testLength, + audit.onSharedDirectoryReadRequest(testCompletionID, testDirectoryID, &tdpbv1.SharedDirectoryRequest_Read{ + Path: testFilePath, + Offset: testOffset, + Length: testLength, }) } // SharedDirectoryReadResponse causes the event to be emitted. - readEvent := audit.makeSharedDirectoryReadResponse(legacy.SharedDirectoryReadResponse{ - CompletionID: uint32(testCompletionID), - ErrCode: test.errCode, - ReadDataLength: testLength, - ReadData: []byte{}, // irrelevant in this context + readEvent := audit.makeSharedDirectoryReadResponse(testCompletionID, test.errCode, &tdpbv1.SharedDirectoryResponse_Read{ + Data: make([]byte, testLength), // slice contents are irrelevant in this context }) baseEvent := &events.DesktopSharedDirectoryRead{ @@ -542,27 +539,23 @@ func TestDesktopSharedDirectoryWriteEvent(t *testing.T) { if test.sendsAnnounce { // SharedDirectoryAnnounce initializes the nameCache. - audit.onSharedDirectoryAnnounce(legacy.SharedDirectoryAnnounce{ - DirectoryID: uint32(testDirectoryID), + audit.onSharedDirectoryAnnounce(&tdpb.SharedDirectoryAnnounce{ + DirectoryId: uint32(testDirectoryID), Name: testDirName, }) } if test.sendsReq { // SharedDirectoryWriteRequest initializes the writeRequestCache. - audit.onSharedDirectoryWriteRequest(legacy.SharedDirectoryWriteRequest{ - CompletionID: uint32(testCompletionID), - DirectoryID: uint32(testDirectoryID), - Path: testFilePath, - Offset: testOffset, - WriteDataLength: testLength, + audit.onSharedDirectoryWriteRequest(testCompletionID, testDirectoryID, &tdpbv1.SharedDirectoryRequest_Write{ + Path: testFilePath, + Offset: testOffset, + Data: make([]byte, testLength), }) } // SharedDirectoryWriteResponse causes the event to be emitted. - writeEvent := audit.makeSharedDirectoryWriteResponse(legacy.SharedDirectoryWriteResponse{ - CompletionID: uint32(testCompletionID), - ErrCode: test.errCode, + writeEvent := audit.makeSharedDirectoryWriteResponse(testCompletionID, test.errCode, &tdpbv1.SharedDirectoryResponse_Write{ BytesWritten: testLength, }) @@ -620,8 +613,8 @@ func TestDesktopSharedDirectoryStartEventAuditCacheMax(t *testing.T) { fillReadRequestCache(&audit.auditCache, testDirectoryID) // Send a SharedDirectoryAnnounce - startEvent := audit.onSharedDirectoryAnnounce(legacy.SharedDirectoryAnnounce{ - DirectoryID: uint32(testDirectoryID), + startEvent := audit.onSharedDirectoryAnnounce(&tdpb.SharedDirectoryAnnounce{ + DirectoryId: uint32(testDirectoryID), Name: testDirName, }) require.NotNil(t, startEvent) @@ -666,8 +659,8 @@ func TestDesktopSharedDirectoryReadEventAuditCacheMax(t *testing.T) { id, audit := setup(testDesktop) // Send a SharedDirectoryAnnounce - audit.onSharedDirectoryAnnounce(legacy.SharedDirectoryAnnounce{ - DirectoryID: uint32(testDirectoryID), + audit.onSharedDirectoryAnnounce(&tdpb.SharedDirectoryAnnounce{ + DirectoryId: uint32(testDirectoryID), Name: testDirName, }) @@ -675,12 +668,10 @@ func TestDesktopSharedDirectoryReadEventAuditCacheMax(t *testing.T) { fillReadRequestCache(&audit.auditCache, testDirectoryID) // SharedDirectoryReadRequest should cause a failed audit event. - readEvent := audit.onSharedDirectoryReadRequest(legacy.SharedDirectoryReadRequest{ - CompletionID: uint32(testCompletionID), - DirectoryID: uint32(testDirectoryID), - Path: testFilePath, - Offset: testOffset, - Length: testLength, + readEvent := audit.onSharedDirectoryReadRequest(testCompletionID, testDirectoryID, &tdpbv1.SharedDirectoryRequest_Read{ + Path: testFilePath, + Offset: testOffset, + Length: testLength, }) require.NotNil(t, readEvent) @@ -724,19 +715,17 @@ func TestDesktopSharedDirectoryReadEventAuditCacheMax(t *testing.T) { func TestDesktopSharedDirectoryWriteEventAuditCacheMax(t *testing.T) { id, audit := setup(testDesktop) - audit.onSharedDirectoryAnnounce(legacy.SharedDirectoryAnnounce{ - DirectoryID: uint32(testDirectoryID), + audit.onSharedDirectoryAnnounce(&tdpb.SharedDirectoryAnnounce{ + DirectoryId: uint32(testDirectoryID), Name: testDirName, }) fillReadRequestCache(&audit.auditCache, testDirectoryID) - writeEvent := audit.onSharedDirectoryWriteRequest(legacy.SharedDirectoryWriteRequest{ - CompletionID: uint32(testCompletionID), - DirectoryID: uint32(testDirectoryID), - Path: testFilePath, - Offset: testOffset, - WriteDataLength: testLength, + writeEvent := audit.onSharedDirectoryWriteRequest(testCompletionID, testDirectoryID, &tdpbv1.SharedDirectoryRequest_Write{ + Path: testFilePath, + Offset: testOffset, + Data: make([]byte, testLength), }) require.NotNil(t, writeEvent, "audit event should have been generated") @@ -780,8 +769,8 @@ func TestAuditCacheLifecycle(t *testing.T) { _, audit := setup(testDesktop) // SharedDirectoryAnnounce initializes the nameCache. - audit.onSharedDirectoryAnnounce(legacy.SharedDirectoryAnnounce{ - DirectoryID: uint32(testDirectoryID), + audit.onSharedDirectoryAnnounce(&tdpb.SharedDirectoryAnnounce{ + DirectoryId: uint32(testDirectoryID), Name: testDirName, }) @@ -796,22 +785,18 @@ func TestAuditCacheLifecycle(t *testing.T) { require.False(t, ok) // A SharedDirectoryReadRequest should add a corresponding entry in the readRequestCache. - audit.onSharedDirectoryReadRequest(legacy.SharedDirectoryReadRequest{ - CompletionID: uint32(testCompletionID), - DirectoryID: uint32(testDirectoryID), - Path: testFilePath, - Offset: testOffset, - Length: testLength, + audit.onSharedDirectoryReadRequest(testCompletionID, testDirectoryID, &tdpbv1.SharedDirectoryRequest_Read{ + Path: testFilePath, + Offset: testOffset, + Length: testLength, }) require.Equal(t, 2, audit.auditCache.totalItems()) // A SharedDirectoryWriteRequest should add a corresponding entry in the writeRequestCache. - audit.onSharedDirectoryWriteRequest(legacy.SharedDirectoryWriteRequest{ - CompletionID: uint32(testCompletionID), - DirectoryID: uint32(testDirectoryID), - Path: testFilePath, - Offset: testOffset, - WriteDataLength: testLength, + audit.onSharedDirectoryWriteRequest(testCompletionID, testDirectoryID, &tdpbv1.SharedDirectoryRequest_Write{ + Path: testFilePath, + Offset: testOffset, + Data: make([]byte, testLength), }) require.Equal(t, 3, audit.auditCache.totalItems()) @@ -822,18 +807,13 @@ func TestAuditCacheLifecycle(t *testing.T) { require.Contains(t, audit.auditCache.writeRequestCache, testCompletionID) // SharedDirectoryReadResponse should cause the entry in the readRequestCache to be cleaned up. - audit.makeSharedDirectoryReadResponse(legacy.SharedDirectoryReadResponse{ - CompletionID: uint32(testCompletionID), - ErrCode: legacy.ErrCodeNil, - ReadDataLength: testLength, - ReadData: []byte{}, // irrelevant in this context + audit.makeSharedDirectoryReadResponse(testCompletionID, legacy.ErrCodeNil, &tdpbv1.SharedDirectoryResponse_Read{ + Data: make([]byte, testLength), // slice contents are irrelevant in this context }) require.Equal(t, 2, audit.auditCache.totalItems()) // SharedDirectoryWriteResponse should cause the entry in the writeRequestCache to be cleaned up. - audit.makeSharedDirectoryWriteResponse(legacy.SharedDirectoryWriteResponse{ - CompletionID: uint32(testCompletionID), - ErrCode: legacy.ErrCodeNil, + audit.makeSharedDirectoryWriteResponse(testCompletionID, legacy.ErrCodeNil, &tdpbv1.SharedDirectoryResponse_Write{ BytesWritten: testLength, }) require.Equal(t, 1, audit.auditCache.totalItems()) diff --git a/lib/srv/desktop/rdp/rdpclient/client.go b/lib/srv/desktop/rdp/rdpclient/client.go index 393e5b89aee..5c42dccc3e6 100644 --- a/lib/srv/desktop/rdp/rdpclient/client.go +++ b/lib/srv/desktop/rdp/rdpclient/client.go @@ -86,9 +86,11 @@ import ( "github.com/google/uuid" "github.com/gravitational/trace" + tdpbv1 "github.com/gravitational/teleport/api/gen/proto/go/teleport/desktop/v1" "github.com/gravitational/teleport/api/types" "github.com/gravitational/teleport/lib/srv/desktop/tdp" "github.com/gravitational/teleport/lib/srv/desktop/tdp/protocol/legacy" + "github.com/gravitational/teleport/lib/srv/desktop/tdp/protocol/tdpb" "github.com/gravitational/teleport/lib/utils" logutils "github.com/gravitational/teleport/lib/utils/log" ) @@ -144,6 +146,10 @@ type Client struct { // handle allows the rust code to call back into the client. handle cgo.Handle + // conn handles TDP messages between Windows Desktop Service + // and a Teleport Proxy. + conn tdp.MessageReadWriteCloser + // Synchronization point to prevent input messages from being forwarded // until the connection is established. // Used with sync/atomic, 0 means false, 1 means true. @@ -166,8 +172,21 @@ type Client struct { mouseX, mouseY uint32 } +// reads in handshake messages and optionally wraps the connection in a translation layer +// based on the client protocol. +func prepareConnecton(clientProtocol string, conn *tdp.Conn, logger *slog.Logger) (tdp.MessageReadWriteCloser, *tdpb.ClientHello, error) { + // Read Hello either from tdpb or tdp. + if clientProtocol == tdpb.ProtocolName { + hello, err := readClientHello(conn, logger) + return conn, hello, trace.Wrap(err) + } + hello, err := readLegacyHandshake(conn, logger) + // Translate to legacy tdp + return tdp.NewReadWriteInterceptor(conn, tdpb.TranslateToModern, tdpb.TranslateToLegacy), hello, trace.Wrap(err) +} + // New creates and connects a new Client based on cfg. -func New(cfg Config) (*Client, error) { +func New(conn *tdp.Conn, cfg Config) (*Client, error) { if err := cfg.checkAndSetDefaults(); err != nil { return nil, err } @@ -176,19 +195,21 @@ func New(cfg Config) (*Client, error) { readyForInput: 0, } - if err := c.readClientUsername(); err != nil { + // read the client hello and wrap the connection with a translation layer (if needed) + wrappedConn, hello, err := prepareConnecton(cfg.ClientProtocol, conn, cfg.Logger) + if err != nil { return nil, trace.Wrap(err) } - if err := cfg.AuthorizeFn(c.username); err != nil { + + c.conn = wrappedConn + c.username = hello.Username + c.keyboardLayout = hello.KeyboardLayout + + if err := cfg.AuthorizeFn(hello.Username); err != nil { return nil, trace.Wrap(err) } - if err := c.readClientSize(); err != nil { - return nil, trace.Wrap(err) - } - if err := c.readClientKeyboardLayout(); err != nil { - return nil, trace.Wrap(err) - } - return c, nil + + return c, trace.Wrap(c.setClientSize(hello.ScreenSpec.GetHeight(), hello.ScreenSpec.GetHeight())) } // Run starts the RDP client, using the provided user certificate and private key. @@ -235,8 +256,8 @@ func (c *Client) GetClientUsername() string { // ReadClientScreenSpec reads the next message from the connection, expecting // it to be a ClientScreenSpec. If it is not, an error is returned. -func (c *Client) ReadClientScreenSpec() (*legacy.ClientScreenSpec, error) { - m, err := c.cfg.Conn.ReadMessage() +func ReadClientScreenSpec(conn *tdp.Conn) (*tdpbv1.ClientScreenSpec, error) { + m, err := conn.ReadMessage() if err != nil { return nil, trace.Wrap(err) } @@ -246,96 +267,131 @@ func (c *Client) ReadClientScreenSpec() (*legacy.ClientScreenSpec, error) { return nil, trace.BadParameter("expected ClientScreenSpec, got %T", m) } - return &spec, nil + return &tdpbv1.ClientScreenSpec{Width: spec.Width, Height: spec.Height}, nil } // SendNotification is a convenience function for sending a Notification message. func (c *Client) SendNotification(message string, severity legacy.Severity) error { - return c.cfg.Conn.WriteMessage(legacy.Alert{Message: message, Severity: severity}) + return c.conn.WriteMessage(legacy.Alert{Message: message, Severity: severity}) } -func (c *Client) readClientUsername() error { +func readClientUsername(conn *tdp.Conn, logger *slog.Logger) (string, error) { for { - msg, err := c.cfg.Conn.ReadMessage() + msg, err := conn.ReadMessage() if err != nil { - return trace.Wrap(err) + return "", trace.Wrap(err) } u, ok := msg.(legacy.ClientUsername) if !ok { - c.cfg.Logger.DebugContext(context.Background(), "Received unexpected ClientUsername message", "message_type", logutils.TypeAttr(msg)) + logger.DebugContext(context.Background(), "Received unexpected ClientUsername message", "message_type", logutils.TypeAttr(msg)) continue } - c.cfg.Logger.DebugContext(context.Background(), "Got RDP username", "username", u.Username) - c.username = u.Username - return nil + logger.DebugContext(context.Background(), "Got RDP username", "username", u.Username) + return u.Username, nil } } -func (c *Client) readClientSize() error { +func readClientSize(conn *tdp.Conn, logger *slog.Logger) (*tdpbv1.ClientScreenSpec, error) { for { - s, err := c.ReadClientScreenSpec() + s, err := ReadClientScreenSpec(conn) if err != nil { if trace.IsBadParameter(err) { - c.cfg.Logger.DebugContext(context.Background(), "Failed to read client screen spec", "error", err) + logger.DebugContext(context.Background(), "Failed to read client screen spec", "error", err) continue } else { - return err + return nil, err } } - - if c.cfg.hasSizeOverride() { - // Some desktops have a screen size in their resource definition. - // If non-zero then we always request this screen size. - c.cfg.Logger.DebugContext(context.Background(), "Forcing a fixed screen size", "width", c.cfg.Width, "height", c.cfg.Height) - c.requestedWidth = uint16(c.cfg.Width) - c.requestedHeight = uint16(c.cfg.Height) - } else { - // If not otherwise specified, we request the screen size based - // on what the client (browser) reports. - c.cfg.Logger.DebugContext(context.Background(), "Got RDP screen size", "width", s.Width, "height", s.Height) - c.requestedWidth = uint16(s.Width) - c.requestedHeight = uint16(s.Height) - } - - if c.requestedWidth > types.MaxRDPScreenWidth || c.requestedHeight > types.MaxRDPScreenHeight { - err = trace.BadParameter( - "screen size of %d x %d is greater than the maximum allowed by RDP (%d x %d)", - s.Width, s.Height, types.MaxRDPScreenWidth, types.MaxRDPScreenHeight, - ) - if err := c.sendTDPAlert(err.Error(), legacy.SeverityError); err != nil { - return trace.Wrap(err) - } - return trace.Wrap(err) - } - - return nil + return s, nil } } -func (c *Client) readClientKeyboardLayout() error { - msgType, err := c.cfg.Conn.PeekNextByte() +func readClientKeyboardLayout(conn *tdp.Conn, logger *slog.Logger) (uint32, error) { + msgType, err := conn.PeekNextByte() if err != nil { - return trace.Wrap(err) + return 0, trace.Wrap(err) } if legacy.MessageType(msgType) != legacy.TypeClientKeyboardLayout { - c.cfg.Logger.DebugContext(context.Background(), "Client did not send keyboard layout") - return nil + logger.DebugContext(context.Background(), "Client did not send keyboard layout") + return 0, nil } - msg, err := c.cfg.Conn.ReadMessage() + msg, err := conn.ReadMessage() if err != nil { - return trace.Wrap(err) + return 0, trace.Wrap(err) } k, ok := msg.(legacy.ClientKeyboardLayout) if !ok { - return trace.BadParameter("Unexpected message %T", msg) + return 0, trace.BadParameter("Unexpected message %T", msg) } - c.cfg.Logger.DebugContext(context.Background(), "Got RDP keyboard layout", "keyboard_layout", k.KeyboardLayout) - c.keyboardLayout = k.KeyboardLayout - return nil + logger.DebugContext(context.Background(), "Got RDP keyboard layout", "keyboard_layout", k.KeyboardLayout) + return k.KeyboardLayout, nil } -func (c *Client) sendTDPAlert(message string, severity legacy.Severity) error { - return c.cfg.Conn.WriteMessage(legacy.Alert{Message: message, Severity: severity}) +func (c *Client) sendTDBPAlert(message string, severity tdpbv1.AlertSeverity) error { + return c.conn.WriteMessage(&tdpb.Alert{Message: message, Severity: severity}) +} + +func readClientHello(conn *tdp.Conn, logger *slog.Logger) (*tdpb.ClientHello, error) { + for { + msg, err := conn.ReadMessage() + if err != nil { + return nil, trace.Wrap(err) + } + m, ok := msg.(*tdpb.ClientHello) + if !ok { + // Most likely we received an early ping message + if _, isPing := msg.(*tdpb.Ping); !isPing { + logger.DebugContext(context.Background(), "Received unexpected message while waiting for client hello", "message_type", logutils.TypeAttr(msg)) + } + continue + } + logger.DebugContext(context.Background(), "Got ClientHello", "message", m) + return m, nil + } +} + +func readLegacyHandshake(conn *tdp.Conn, logger *slog.Logger) (*tdpb.ClientHello, error) { + hello := &tdpb.ClientHello{} + var err error + + if hello.Username, err = readClientUsername(conn, logger); err != nil { + return nil, trace.Wrap(err) + } + + if hello.ScreenSpec, err = readClientSize(conn, logger); err != nil { + return nil, trace.Wrap(err) + } + + if hello.KeyboardLayout, err = readClientKeyboardLayout(conn, logger); err != nil { + return nil, trace.Wrap(err) + } + return hello, nil +} + +func (c *Client) setClientSize(width uint32, height uint32) error { + if c.cfg.hasSizeOverride() { + // Some desktops have a screen size in their resource definition. + // If non-zero then we always request this screen size. + c.cfg.Logger.DebugContext(context.Background(), "Forcing a fixed screen size", "width", c.cfg.Width, "height", c.cfg.Height) + c.requestedWidth = uint16(c.cfg.Width) + c.requestedHeight = uint16(c.cfg.Height) + } else { + // If not otherwise specified, we request the screen size based + // on what the client (browser) reports. + c.cfg.Logger.DebugContext(context.Background(), "Got RDP screen size", "width", width, "height", height) + c.requestedWidth = uint16(width) + c.requestedHeight = uint16(height) + } + + if width > types.MaxRDPScreenWidth || c.requestedHeight > types.MaxRDPScreenHeight { + err := trace.BadParameter( + "screen size of %d x %d is greater than the maximum allowed by RDP (%d x %d)", + width, height, types.MaxRDPScreenWidth, types.MaxRDPScreenHeight, + ) + return trace.Wrap(err) + } + + return nil } func (c *Client) startRustRDP(ctx context.Context, certDER, keyDER []byte) error { @@ -434,7 +490,7 @@ func (c *Client) startRustRDP(ctx context.Context, certDER, keyDER []byte) error err = trace.Errorf("RDP client exited with an unknown error") } - c.sendTDPAlert(err.Error(), legacy.SeverityError) + c.sendTDBPAlert(err.Error(), tdpbv1.AlertSeverity_ALERT_SEVERITY_ERROR) return err } @@ -446,7 +502,7 @@ func (c *Client) startRustRDP(ctx context.Context, certDER, keyDER []byte) error c.cfg.Logger.InfoContext(ctx, message) - c.sendTDPAlert(message, legacy.SeverityError) + c.sendTDBPAlert(message, tdpbv1.AlertSeverity_ALERT_SEVERITY_ERROR) return nil } @@ -467,7 +523,7 @@ func (c *Client) startInputStreaming(stopCh chan struct{}) error { // we will disable ping only if the env var is truthy disableDesktopPing, _ := strconv.ParseBool(os.Getenv("TELEPORT_DISABLE_DESKTOP_LATENCY_DETECTOR_PING")) - var withheldResize *legacy.ClientScreenSpec + var withheldResize *tdpb.ClientScreenSpec for { select { case <-stopCh: @@ -475,17 +531,20 @@ func (c *Client) startInputStreaming(stopCh chan struct{}) error { default: } - msg, err := c.cfg.Conn.ReadMessage() + msg, err := c.conn.ReadMessage() if utils.IsOKNetworkError(err) { return nil } else if legacy.IsNonFatalErr(err) { - c.SendNotification(err.Error(), legacy.SeverityWarning) + _ = c.conn.WriteMessage(&tdpb.Alert{ + Severity: tdpbv1.AlertSeverity_ALERT_SEVERITY_ERROR, + Message: err.Error(), + }) continue } else if err != nil { - c.cfg.Logger.WarnContext(context.Background(), "Failed reading TDP input message", "error", err) + c.cfg.Logger.WarnContext(context.Background(), "Failed reading TDPB input message", "error", err) return err } - if m, ok := msg.(legacy.Ping); ok { + if m, ok := msg.(*tdpb.Ping); ok { go func() { // Upon receiving a ping message, we make a connection // to the host and send the same message back to the proxy. @@ -496,8 +555,8 @@ func (c *Client) startInputStreaming(stopCh chan struct{}) error { conn.Close() } } - if err := c.cfg.Conn.WriteMessage(m); err != nil { - c.cfg.Logger.WarnContext(context.Background(), "Failed writing TDP ping message", "error", err) + if err := c.conn.WriteMessage(m); err != nil { + c.cfg.Logger.WarnContext(context.Background(), "Failed writing TDPB ping message", "error", err) } }() continue @@ -505,10 +564,10 @@ func (c *Client) startInputStreaming(stopCh chan struct{}) error { if atomic.LoadUint32(&c.readyForInput) == 0 { switch m := msg.(type) { - case legacy.ClientScreenSpec: + case *tdpb.ClientScreenSpec: // Withhold the latest screen size until the client is ready for input. This ensures // that the client receives the correct screen size when it is ready. - withheldResize = &m + withheldResize = m c.cfg.Logger.DebugContext(context.Background(), "Withholding screen size until client is ready for input", "width", m.Width, "height", m.Height) default: // Ignore all messages except ClientScreenSpec until the client is ready for input. @@ -525,16 +584,15 @@ func (c *Client) startInputStreaming(stopCh chan struct{}) error { // because we don't want a session to be closed due to inactivity during a large // file transfer. switch msg.(type) { - case legacy.KeyboardButton, legacy.MouseMove, legacy.MouseButton, legacy.MouseWheel, - legacy.SharedDirectoryAnnounce, legacy.SharedDirectoryInfoResponse, - legacy.SharedDirectoryReadResponse, legacy.SharedDirectoryWriteResponse: + case *tdpb.KeyboardButton, *tdpb.MouseMove, *tdpb.MouseButton, *tdpb.MouseWheel, + *tdpb.SharedDirectoryAnnounce, *tdpb.SharedDirectoryResponse: c.UpdateClientActivity() } if withheldResize != nil { c.cfg.Logger.DebugContext(context.Background(), "Sending withheld screen size to client") - if err := c.handleTDPInput(*withheldResize); err != nil { + if err := c.handleTDPInput(withheldResize); err != nil { return trace.Wrap(err) } withheldResize = nil @@ -549,7 +607,7 @@ func (c *Client) startInputStreaming(stopCh chan struct{}) error { // handleTDPInput handles a single TDP message sent to us from the browser. func (c *Client) handleTDPInput(msg tdp.Message) error { switch m := msg.(type) { - case legacy.ClientScreenSpec: + case *tdpb.ClientScreenSpec: // If the client has specified a fixed screen size, we don't // need to send a screen resize event. if c.cfg.hasSizeOverride() { @@ -564,7 +622,7 @@ func (c *Client) handleTDPInput(msg tdp.Message) error { ); errCode != C.ErrCodeSuccess { return trace.Errorf("ClientScreenSpec: client_write_screen_resize: %v", errCode) } - case legacy.MouseMove: + case *tdpb.MouseMove: c.mouseX, c.mouseY = m.X, m.Y if errCode := C.client_write_rdp_pointer( C.uintptr_t(c.handle), @@ -577,15 +635,15 @@ func (c *Client) handleTDPInput(msg tdp.Message) error { ); errCode != C.ErrCodeSuccess { return trace.Errorf("MouseMove: client_write_rdp_pointer: %v", errCode) } - case legacy.MouseButton: + case *tdpb.MouseButton: // Map the button to a C enum value. var button C.CGOPointerButton switch m.Button { - case legacy.LeftMouseButton: + case tdpbv1.MouseButtonType_MOUSE_BUTTON_TYPE_LEFT: button = C.PointerButtonLeft - case legacy.RightMouseButton: + case tdpbv1.MouseButtonType_MOUSE_BUTTON_TYPE_RIGHT: button = C.PointerButtonRight - case legacy.MiddleMouseButton: + case tdpbv1.MouseButtonType_MOUSE_BUTTON_TYPE_MIDDLE: button = C.PointerButtonMiddle default: button = C.PointerButtonNone @@ -596,18 +654,18 @@ func (c *Client) handleTDPInput(msg tdp.Message) error { x: C.uint16_t(c.mouseX), y: C.uint16_t(c.mouseY), button: uint32(button), - down: m.State == legacy.ButtonPressed, + down: C.bool(m.Pressed), wheel: C.PointerWheelNone, }, ); errCode != C.ErrCodeSuccess { return trace.Errorf("MouseButton: client_write_rdp_pointer: %v", errCode) } - case legacy.MouseWheel: + case *tdpb.MouseWheel: var wheel C.CGOPointerWheel switch m.Axis { - case legacy.VerticalWheelAxis: + case tdpbv1.MouseWheelAxis_MOUSE_WHEEL_AXIS_VERTICAL: wheel = C.PointerWheelVertical - case legacy.HorizontalWheelAxis: + case tdpbv1.MouseWheelAxis_MOUSE_WHEEL_AXIS_HORIZONTAL: wheel = C.PointerWheelHorizontal // TDP positive scroll deltas move towards top-left. // RDP positive scroll deltas move towards top-right. @@ -630,185 +688,187 @@ func (c *Client) handleTDPInput(msg tdp.Message) error { ); errCode != C.ErrCodeSuccess { return trace.Errorf("MouseWheel: client_write_rdp_pointer: %v", errCode) } - case legacy.KeyboardButton: + case *tdpb.KeyboardButton: if errCode := C.client_write_rdp_keyboard( C.uintptr_t(c.handle), C.CGOKeyboardEvent{ code: C.uint16_t(m.KeyCode), - down: m.State == legacy.ButtonPressed, + down: C.bool(m.Pressed), }, ); errCode != C.ErrCodeSuccess { return trace.Errorf("KeyboardButton: client_write_rdp_keyboard: %v", errCode) } - case legacy.SyncKeys: + case *tdpb.SyncKeys: if errCode := C.client_write_rdp_sync_keys(C.uintptr_t(c.handle), C.CGOSyncKeys{ - scroll_lock_down: m.ScrollLockState == legacy.ButtonPressed, - num_lock_down: m.NumLockState == legacy.ButtonPressed, - caps_lock_down: m.CapsLockState == legacy.ButtonPressed, - kana_lock_down: m.KanaLockState == legacy.ButtonPressed, + scroll_lock_down: C.bool(m.ScrollLockPressed), + num_lock_down: C.bool(m.NumLockState), + caps_lock_down: C.bool(m.CapsLockState), + kana_lock_down: C.bool(m.KanaLockState), }); errCode != C.ErrCodeSuccess { return trace.Errorf("SyncKeys: client_write_rdp_sync_keys: %v", errCode) } - case legacy.ClipboardData: + case *tdpb.ClipboardData: if !c.cfg.AllowClipboard { c.cfg.Logger.DebugContext(context.Background(), "Received clipboard data, but clipboard is disabled") return nil } - if len(m) > 0 { + if len(m.Data) > 0 { if errCode := C.client_update_clipboard( C.uintptr_t(c.handle), - (*C.uint8_t)(unsafe.Pointer(&m[0])), - C.uint32_t(len(m)), + (*C.uint8_t)(unsafe.Pointer(&m.Data[0])), + C.uint32_t(len(m.Data)), ); errCode != C.ErrCodeSuccess { - return trace.Errorf("ClipboardData: client_update_clipboard (len=%v): %v", len(m), errCode) + return trace.Errorf("ClipboardData: client_update_clipboard (len=%v): %v", len(m.Data), errCode) } } else { c.cfg.Logger.WarnContext(context.Background(), "Received an empty clipboard message") } - case legacy.SharedDirectoryAnnounce: + case *tdpb.SharedDirectoryAnnounce: if c.cfg.AllowDirectorySharing { driveName := C.CString(m.Name) defer C.free(unsafe.Pointer(driveName)) if errCode := C.client_handle_tdp_sd_announce(C.uintptr_t(c.handle), C.CGOSharedDirectoryAnnounce{ - directory_id: C.uint32_t(m.DirectoryID), + directory_id: C.uint32_t(m.DirectoryId), name: driveName, }); errCode != C.ErrCodeSuccess { return trace.Errorf("SharedDirectoryAnnounce: failed with %v", errCode) } } - case legacy.SharedDirectoryInfoResponse: - if c.cfg.AllowDirectorySharing { - path := C.CString(m.Fso.Path) - defer C.free(unsafe.Pointer(path)) - if errCode := C.client_handle_tdp_sd_info_response(C.uintptr_t(c.handle), C.CGOSharedDirectoryInfoResponse{ - completion_id: C.uint32_t(m.CompletionID), - err_code: m.ErrCode, - fso: C.CGOFileSystemObject{ - last_modified: C.uint64_t(m.Fso.LastModified), - size: C.uint64_t(m.Fso.Size), - file_type: m.Fso.FileType, - is_empty: C.uint8_t(m.Fso.IsEmpty), - path: path, - }, - }); errCode != C.ErrCodeSuccess { - return trace.Errorf("SharedDirectoryInfoResponse failed: %v", errCode) - } - } - case legacy.SharedDirectoryCreateResponse: - if c.cfg.AllowDirectorySharing { - path := C.CString(m.Fso.Path) - defer C.free(unsafe.Pointer(path)) - if errCode := C.client_handle_tdp_sd_create_response(C.uintptr_t(c.handle), C.CGOSharedDirectoryCreateResponse{ - completion_id: C.uint32_t(m.CompletionID), - err_code: m.ErrCode, - fso: C.CGOFileSystemObject{ - last_modified: C.uint64_t(m.Fso.LastModified), - size: C.uint64_t(m.Fso.Size), - file_type: m.Fso.FileType, - is_empty: C.uint8_t(m.Fso.IsEmpty), - path: path, - }, - }); errCode != C.ErrCodeSuccess { - return trace.Errorf("SharedDirectoryCreateResponse failed: %v", errCode) - } - } - case legacy.SharedDirectoryDeleteResponse: - if c.cfg.AllowDirectorySharing { - if errCode := C.client_handle_tdp_sd_delete_response(C.uintptr_t(c.handle), C.CGOSharedDirectoryDeleteResponse{ - completion_id: C.uint32_t(m.CompletionID), - err_code: m.ErrCode, - }); errCode != C.ErrCodeSuccess { - return trace.Errorf("SharedDirectoryDeleteResponse failed: %v", errCode) - } - } - case legacy.SharedDirectoryListResponse: - if c.cfg.AllowDirectorySharing { - fsoList := make([]C.CGOFileSystemObject, 0, len(m.FsoList)) - - for _, fso := range m.FsoList { - path := C.CString(fso.Path) + case *tdpb.SharedDirectoryResponse: + switch op := m.Operation.(type) { + case *tdpbv1.SharedDirectoryResponse_Info_: + if c.cfg.AllowDirectorySharing { + path := C.CString(op.Info.Fso.Path) defer C.free(unsafe.Pointer(path)) - - fsoList = append(fsoList, C.CGOFileSystemObject{ - last_modified: C.uint64_t(fso.LastModified), - size: C.uint64_t(fso.Size), - file_type: fso.FileType, - is_empty: C.uint8_t(fso.IsEmpty), - path: path, - }) + if errCode := C.client_handle_tdp_sd_info_response(C.uintptr_t(c.handle), C.CGOSharedDirectoryInfoResponse{ + completion_id: C.uint32_t(m.CompletionId), + err_code: m.ErrorCode, + fso: C.CGOFileSystemObject{ + last_modified: C.uint64_t(op.Info.Fso.LastModified), + size: C.uint64_t(op.Info.Fso.Size), + file_type: op.Info.Fso.FileType, + is_empty: isEmpty(op.Info.Fso.IsEmpty), + path: path, + }, + }); errCode != C.ErrCodeSuccess { + return trace.Errorf("SharedDirectoryInfoResponse failed: %v", errCode) + } } - - fsoListLen := len(fsoList) - var cgoFsoList *C.CGOFileSystemObject - - if fsoListLen > 0 { - cgoFsoList = (*C.CGOFileSystemObject)(unsafe.Pointer(&fsoList[0])) - } else { - cgoFsoList = (*C.CGOFileSystemObject)(unsafe.Pointer(&fsoList)) + case *tdpbv1.SharedDirectoryResponse_Create_: + if c.cfg.AllowDirectorySharing { + path := C.CString(op.Create.Fso.Path) + defer C.free(unsafe.Pointer(path)) + if errCode := C.client_handle_tdp_sd_create_response(C.uintptr_t(c.handle), C.CGOSharedDirectoryCreateResponse{ + completion_id: C.uint32_t(m.CompletionId), + err_code: m.ErrorCode, + fso: C.CGOFileSystemObject{ + last_modified: C.uint64_t(op.Create.Fso.LastModified), + size: C.uint64_t(op.Create.Fso.Size), + file_type: op.Create.Fso.FileType, + is_empty: isEmpty(op.Create.Fso.IsEmpty), + path: path, + }, + }); errCode != C.ErrCodeSuccess { + return trace.Errorf("SharedDirectoryCreateResponse failed: %v", errCode) + } } + case *tdpbv1.SharedDirectoryResponse_Delete_: + if c.cfg.AllowDirectorySharing { + if errCode := C.client_handle_tdp_sd_delete_response(C.uintptr_t(c.handle), C.CGOSharedDirectoryDeleteResponse{ + completion_id: C.uint32_t(m.CompletionId), + err_code: m.ErrorCode, + }); errCode != C.ErrCodeSuccess { + return trace.Errorf("SharedDirectoryDeleteResponse failed: %v", errCode) + } + } + case *tdpbv1.SharedDirectoryResponse_List_: + if c.cfg.AllowDirectorySharing { + fsoList := make([]C.CGOFileSystemObject, 0, len(op.List.FsoList)) + for _, fso := range op.List.FsoList { + path := C.CString(fso.Path) + defer C.free(unsafe.Pointer(path)) - if errCode := C.client_handle_tdp_sd_list_response(C.uintptr_t(c.handle), C.CGOSharedDirectoryListResponse{ - completion_id: C.uint32_t(m.CompletionID), - err_code: m.ErrCode, - fso_list_length: C.uint32_t(fsoListLen), - fso_list: cgoFsoList, - }); errCode != C.ErrCodeSuccess { - return trace.Errorf("SharedDirectoryListResponse failed: %v", errCode) + fsoList = append(fsoList, C.CGOFileSystemObject{ + last_modified: C.uint64_t(fso.LastModified), + size: C.uint64_t(fso.Size), + file_type: fso.FileType, + is_empty: isEmpty(fso.IsEmpty), + path: path, + }) + } + + fsoListLen := len(fsoList) + var cgoFsoList *C.CGOFileSystemObject + + if fsoListLen > 0 { + cgoFsoList = (*C.CGOFileSystemObject)(unsafe.Pointer(&fsoList[0])) + } else { + cgoFsoList = (*C.CGOFileSystemObject)(unsafe.Pointer(&fsoList)) + } + + if errCode := C.client_handle_tdp_sd_list_response(C.uintptr_t(c.handle), C.CGOSharedDirectoryListResponse{ + completion_id: C.uint32_t(m.CompletionId), + err_code: m.ErrorCode, + fso_list_length: C.uint32_t(fsoListLen), + fso_list: cgoFsoList, + }); errCode != C.ErrCodeSuccess { + return trace.Errorf("SharedDirectoryListResponse failed: %v", errCode) + } + } + case *tdpbv1.SharedDirectoryResponse_Read_: + if c.cfg.AllowDirectorySharing { + var readData *C.uint8_t + if len(op.Read.Data) > 0 { + readData = (*C.uint8_t)(unsafe.Pointer(&op.Read.Data[0])) + } else { + readData = (*C.uint8_t)(unsafe.Pointer(&op.Read.Data)) + } + + if errCode := C.client_handle_tdp_sd_read_response(C.uintptr_t(c.handle), C.CGOSharedDirectoryReadResponse{ + completion_id: C.uint32_t(m.CompletionId), + err_code: m.ErrorCode, + read_data_length: C.uint32_t(len(op.Read.Data)), + read_data: readData, + }); errCode != C.ErrCodeSuccess { + return trace.Errorf("SharedDirectoryReadResponse failed: %v", errCode) + } + } + case *tdpbv1.SharedDirectoryResponse_Write_: + if c.cfg.AllowDirectorySharing { + if errCode := C.client_handle_tdp_sd_write_response(C.uintptr_t(c.handle), C.CGOSharedDirectoryWriteResponse{ + completion_id: C.uint32_t(m.CompletionId), + err_code: m.ErrorCode, + bytes_written: C.uint32_t(op.Write.BytesWritten), + }); errCode != C.ErrCodeSuccess { + return trace.Errorf("SharedDirectoryWriteResponse failed: %v", errCode) + } + } + case *tdpbv1.SharedDirectoryResponse_Move_: + if c.cfg.AllowDirectorySharing { + if errCode := C.client_handle_tdp_sd_move_response(C.uintptr_t(c.handle), C.CGOSharedDirectoryMoveResponse{ + completion_id: C.uint32_t(m.CompletionId), + err_code: m.ErrorCode, + }); errCode != C.ErrCodeSuccess { + return trace.Errorf("SharedDirectoryMoveResponse failed: %v", errCode) + } + } + case *tdpbv1.SharedDirectoryResponse_Truncate_: + if c.cfg.AllowDirectorySharing { + if errCode := C.client_handle_tdp_sd_truncate_response(C.uintptr_t(c.handle), C.CGOSharedDirectoryTruncateResponse{ + completion_id: C.uint32_t(m.CompletionId), + err_code: m.ErrorCode, + }); errCode != C.ErrCodeSuccess { + return trace.Errorf("SharedDirectoryTruncateResponse failed: %v", errCode) + } } } - case legacy.SharedDirectoryReadResponse: - if c.cfg.AllowDirectorySharing { - var readData *C.uint8_t - if m.ReadDataLength > 0 { - readData = (*C.uint8_t)(unsafe.Pointer(&m.ReadData[0])) - } else { - readData = (*C.uint8_t)(unsafe.Pointer(&m.ReadData)) - } - - if errCode := C.client_handle_tdp_sd_read_response(C.uintptr_t(c.handle), C.CGOSharedDirectoryReadResponse{ - completion_id: C.uint32_t(m.CompletionID), - err_code: m.ErrCode, - read_data_length: C.uint32_t(m.ReadDataLength), - read_data: readData, - }); errCode != C.ErrCodeSuccess { - return trace.Errorf("SharedDirectoryReadResponse failed: %v", errCode) - } - } - case legacy.SharedDirectoryWriteResponse: - if c.cfg.AllowDirectorySharing { - if errCode := C.client_handle_tdp_sd_write_response(C.uintptr_t(c.handle), C.CGOSharedDirectoryWriteResponse{ - completion_id: C.uint32_t(m.CompletionID), - err_code: m.ErrCode, - bytes_written: C.uint32_t(m.BytesWritten), - }); errCode != C.ErrCodeSuccess { - return trace.Errorf("SharedDirectoryWriteResponse failed: %v", errCode) - } - } - case legacy.SharedDirectoryMoveResponse: - if c.cfg.AllowDirectorySharing { - if errCode := C.client_handle_tdp_sd_move_response(C.uintptr_t(c.handle), C.CGOSharedDirectoryMoveResponse{ - completion_id: C.uint32_t(m.CompletionID), - err_code: m.ErrCode, - }); errCode != C.ErrCodeSuccess { - return trace.Errorf("SharedDirectoryMoveResponse failed: %v", errCode) - } - } - case legacy.SharedDirectoryTruncateResponse: - if c.cfg.AllowDirectorySharing { - if errCode := C.client_handle_tdp_sd_truncate_response(C.uintptr_t(c.handle), C.CGOSharedDirectoryTruncateResponse{ - completion_id: C.uint32_t(m.CompletionID), - err_code: m.ErrCode, - }); errCode != C.ErrCodeSuccess { - return trace.Errorf("SharedDirectoryTruncateResponse failed: %v", errCode) - } - } - case legacy.RDPResponsePDU: - pduLen := uint32(len(m)) + case *tdpb.RDPResponsePDU: + pduLen := uint32(len(m.Response)) if pduLen == 0 { c.cfg.Logger.ErrorContext(context.Background(), "response PDU empty") } - rdpResponsePDU := (*C.uint8_t)(unsafe.SliceData(m)) + rdpResponsePDU := (*C.uint8_t)(unsafe.SliceData(m.Response)) if errCode := C.client_handle_tdp_rdp_response_pdu( C.uintptr_t(c.handle), rdpResponsePDU, C.uint32_t(pduLen), @@ -963,7 +1023,7 @@ func (c *Client) handleRDPFastPathPDU(data []byte) C.CGOErrCode { // from the fact that a fast path pdu was sent. atomic.StoreUint32(&c.readyForInput, 1) - if err := c.cfg.Conn.WriteMessage(legacy.RDPFastPathPDU(data)); err != nil { + if err := c.conn.WriteMessage(&tdpb.FastPathPDU{Pdu: data}); err != nil { c.cfg.Logger.ErrorContext(context.Background(), "failed handling RDPFastPathPDU", "error", err) return C.ErrCodeFailure } @@ -992,11 +1052,14 @@ func (c *Client) handleRDPConnectionActivated(ioChannelID, userChannelID, screen // This is especially true when we request dimensions that are not a multiple of 4. c.cfg.Logger.DebugContext(context.Background(), "RDP server provided resolution", "width", screenWidth, "height", screenHeight) - if err := c.cfg.Conn.WriteMessage(legacy.ConnectionActivated{ - IOChannelID: uint16(ioChannelID), - UserChannelID: uint16(userChannelID), - ScreenWidth: uint16(screenWidth), - ScreenHeight: uint16(screenHeight), + if err := c.conn.WriteMessage(&tdpb.ServerHello{ + ActivationSpec: &tdpbv1.ConnectionActivated{ + IoChannelId: uint32(ioChannelID), + UserChannelId: uint32(userChannelID), + ScreenWidth: uint32(screenWidth), + ScreenHeight: uint32(screenHeight), + }, + ClipboardEnabled: true, }); err != nil { c.cfg.Logger.ErrorContext(context.Background(), "failed handling connection initialization", "error", err) return C.ErrCodeFailure @@ -1026,7 +1089,7 @@ func (c *Client) handleRemoteCopy(data []byte) C.CGOErrCode { c.cfg.Logger.DebugContext(context.Background(), "Received clipboard data from Windows desktop", "len", len(data)) - if err := c.cfg.Conn.WriteMessage(legacy.ClipboardData(data)); err != nil { + if err := c.conn.WriteMessage(&tdpb.ClipboardData{Data: data}); err != nil { c.cfg.Logger.ErrorContext(context.Background(), "failed handling remote copy", "error", err) return C.ErrCodeFailure } @@ -1039,21 +1102,21 @@ func cgo_tdp_sd_acknowledge(handle C.uintptr_t, ack *C.CGOSharedDirectoryAcknowl if err != nil { return C.ErrCodeFailure } - return client.sharedDirectoryAcknowledge(legacy.SharedDirectoryAcknowledge{ + return client.sharedDirectoryAcknowledge(&tdpb.SharedDirectoryAcknowledge{ //nolint:unconvert // Avoid hard dependencies on C types - ErrCode: uint32(ack.err_code), - DirectoryID: uint32(ack.directory_id), + ErrorCode: uint32(ack.err_code), + DirectoryId: uint32(ack.directory_id), }) } // sharedDirectoryAcknowledge is sent by the TDP server to the client // to acknowledge that a SharedDirectoryAnnounce was received. -func (c *Client) sharedDirectoryAcknowledge(ack legacy.SharedDirectoryAcknowledge) C.CGOErrCode { +func (c *Client) sharedDirectoryAcknowledge(ack *tdpb.SharedDirectoryAcknowledge) C.CGOErrCode { if !c.cfg.AllowDirectorySharing { return C.ErrCodeFailure } - if err := c.cfg.Conn.WriteMessage(ack); err != nil { + if err := c.conn.WriteMessage(ack); err != nil { c.cfg.Logger.ErrorContext(context.Background(), "failed to send SharedDirectoryAcknowledge", "error", err) return C.ErrCodeFailure } @@ -1066,22 +1129,25 @@ func cgo_tdp_sd_info_request(handle C.uintptr_t, req *C.CGOSharedDirectoryInfoRe if err != nil { return C.ErrCodeFailure } - return client.sharedDirectoryInfoRequest(legacy.SharedDirectoryInfoRequest{ - CompletionID: uint32(req.completion_id), - DirectoryID: uint32(req.directory_id), - Path: C.GoString(req.path), + return client.sharedDirectoryRequest(&tdpb.SharedDirectoryRequest{ + CompletionId: uint32(req.completion_id), + DirectoryId: uint32(req.directory_id), + Operation: &tdpbv1.SharedDirectoryRequest_Info_{ + Info: &tdpbv1.SharedDirectoryRequest_Info{ + Path: C.GoString(req.path), + }, + }, }) } -// sharedDirectoryInfoRequest is sent from the TDP server to the client -// to request information about a file or directory at a given path. -func (c *Client) sharedDirectoryInfoRequest(req legacy.SharedDirectoryInfoRequest) C.CGOErrCode { +// sharedDirectoryRequest sends a shared directory request to the client. +func (c *Client) sharedDirectoryRequest(req *tdpb.SharedDirectoryRequest) C.CGOErrCode { if !c.cfg.AllowDirectorySharing { return C.ErrCodeFailure } - if err := c.cfg.Conn.WriteMessage(req); err != nil { - c.cfg.Logger.ErrorContext(context.Background(), "failed to send SharedDirectoryAcknowledge", "error", err) + if err := c.conn.WriteMessage(req); err != nil { + c.cfg.Logger.ErrorContext(context.Background(), "failed to send shared directory request", "error", err, "operation", req.Operation) return C.ErrCodeFailure } return C.ErrCodeSuccess @@ -1093,194 +1159,132 @@ func cgo_tdp_sd_create_request(handle C.uintptr_t, req *C.CGOSharedDirectoryCrea if err != nil { return C.ErrCodeFailure } - return client.sharedDirectoryCreateRequest(legacy.SharedDirectoryCreateRequest{ - CompletionID: uint32(req.completion_id), - DirectoryID: uint32(req.directory_id), - //nolint:unconvert // Avoid hard dependencies on C types. - FileType: uint32(req.file_type), - Path: C.GoString(req.path), + + return client.sharedDirectoryRequest(&tdpb.SharedDirectoryRequest{ + CompletionId: uint32(req.completion_id), + DirectoryId: uint32(req.directory_id), + Operation: &tdpbv1.SharedDirectoryRequest_Create_{ + Create: &tdpbv1.SharedDirectoryRequest_Create{ + Path: C.GoString(req.path), + }, + }, }) } -// sharedDirectoryCreateRequest is sent by the TDP server to -// the client to request the creation of a new file or directory. -func (c *Client) sharedDirectoryCreateRequest(req legacy.SharedDirectoryCreateRequest) C.CGOErrCode { - if !c.cfg.AllowDirectorySharing { - return C.ErrCodeFailure - } - - if err := c.cfg.Conn.WriteMessage(req); err != nil { - c.cfg.Logger.ErrorContext(context.Background(), "failed to send SharedDirectoryCreateRequest", "error", err) - return C.ErrCodeFailure - } - return C.ErrCodeSuccess -} - //export cgo_tdp_sd_delete_request func cgo_tdp_sd_delete_request(handle C.uintptr_t, req *C.CGOSharedDirectoryDeleteRequest) C.CGOErrCode { client, err := toClient(handle) if err != nil { return C.ErrCodeFailure } - return client.sharedDirectoryDeleteRequest(legacy.SharedDirectoryDeleteRequest{ - CompletionID: uint32(req.completion_id), - DirectoryID: uint32(req.directory_id), - Path: C.GoString(req.path), + + return client.sharedDirectoryRequest(&tdpb.SharedDirectoryRequest{ + CompletionId: uint32(req.completion_id), + DirectoryId: uint32(req.directory_id), + Operation: &tdpbv1.SharedDirectoryRequest_Delete_{ + Delete: &tdpbv1.SharedDirectoryRequest_Delete{ + Path: C.GoString(req.path), + }, + }, }) } -// sharedDirectoryDeleteRequest is sent by the TDP server to the client -// to request the deletion of a file or directory at path. -func (c *Client) sharedDirectoryDeleteRequest(req legacy.SharedDirectoryDeleteRequest) C.CGOErrCode { - if !c.cfg.AllowDirectorySharing { - return C.ErrCodeFailure - } - - if err := c.cfg.Conn.WriteMessage(req); err != nil { - c.cfg.Logger.ErrorContext(context.Background(), "failed to send SharedDirectoryDeleteRequest", "error", err) - return C.ErrCodeFailure - } - return C.ErrCodeSuccess -} - //export cgo_tdp_sd_list_request func cgo_tdp_sd_list_request(handle C.uintptr_t, req *C.CGOSharedDirectoryListRequest) C.CGOErrCode { client, err := toClient(handle) if err != nil { return C.ErrCodeFailure } - return client.sharedDirectoryListRequest(legacy.SharedDirectoryListRequest{ - CompletionID: uint32(req.completion_id), - DirectoryID: uint32(req.directory_id), - Path: C.GoString(req.path), + + return client.sharedDirectoryRequest(&tdpb.SharedDirectoryRequest{ + CompletionId: uint32(req.completion_id), + DirectoryId: uint32(req.directory_id), + Operation: &tdpbv1.SharedDirectoryRequest_List_{ + List: &tdpbv1.SharedDirectoryRequest_List{ + Path: C.GoString(req.path), + }, + }, }) } -// sharedDirectoryListRequest is sent by the TDP server to the client -// to request the contents of a directory. -func (c *Client) sharedDirectoryListRequest(req legacy.SharedDirectoryListRequest) C.CGOErrCode { - if !c.cfg.AllowDirectorySharing { - return C.ErrCodeFailure - } - - if err := c.cfg.Conn.WriteMessage(req); err != nil { - c.cfg.Logger.ErrorContext(context.Background(), "failed to send SharedDirectoryListRequest", "error", err) - return C.ErrCodeFailure - } - return C.ErrCodeSuccess -} - //export cgo_tdp_sd_read_request func cgo_tdp_sd_read_request(handle C.uintptr_t, req *C.CGOSharedDirectoryReadRequest) C.CGOErrCode { client, err := toClient(handle) if err != nil { return C.ErrCodeFailure } - return client.sharedDirectoryReadRequest(legacy.SharedDirectoryReadRequest{ - CompletionID: uint32(req.completion_id), - DirectoryID: uint32(req.directory_id), - Path: C.GoString(req.path), - Offset: uint64(req.offset), - Length: uint32(req.length), + + return client.sharedDirectoryRequest(&tdpb.SharedDirectoryRequest{ + CompletionId: uint32(req.completion_id), + DirectoryId: uint32(req.directory_id), + Operation: &tdpbv1.SharedDirectoryRequest_Read_{ + Read: &tdpbv1.SharedDirectoryRequest_Read{ + Path: C.GoString(req.path), + Offset: uint64(req.offset), + Length: uint32(req.length), + }, + }, }) } -// SharedDirectoryReadRequest is sent by the TDP server to the client -// to request the contents of a file. -func (c *Client) sharedDirectoryReadRequest(req legacy.SharedDirectoryReadRequest) C.CGOErrCode { - if !c.cfg.AllowDirectorySharing { - return C.ErrCodeFailure - } - - if err := c.cfg.Conn.WriteMessage(req); err != nil { - c.cfg.Logger.ErrorContext(context.Background(), "failed to send SharedDirectoryReadRequest", "error", err) - return C.ErrCodeFailure - } - return C.ErrCodeSuccess -} - //export cgo_tdp_sd_write_request func cgo_tdp_sd_write_request(handle C.uintptr_t, req *C.CGOSharedDirectoryWriteRequest) C.CGOErrCode { client, err := toClient(handle) if err != nil { return C.ErrCodeFailure } - return client.sharedDirectoryWriteRequest(legacy.SharedDirectoryWriteRequest{ - CompletionID: uint32(req.completion_id), - DirectoryID: uint32(req.directory_id), - Offset: uint64(req.offset), - Path: C.GoString(req.path), - WriteDataLength: uint32(req.write_data_length), - WriteData: C.GoBytes(unsafe.Pointer(req.write_data), C.int(req.write_data_length)), + + return client.sharedDirectoryRequest(&tdpb.SharedDirectoryRequest{ + CompletionId: uint32(req.completion_id), + DirectoryId: uint32(req.directory_id), + Operation: &tdpbv1.SharedDirectoryRequest_Write_{ + Write: &tdpbv1.SharedDirectoryRequest_Write{ + Path: C.GoString(req.path), + Offset: uint64(req.offset), + Data: C.GoBytes(unsafe.Pointer(req.write_data), C.int(req.write_data_length)), + }, + }, }) } -// SharedDirectoryWriteRequest is sent by the TDP server to the client -// to write to a file. -func (c *Client) sharedDirectoryWriteRequest(req legacy.SharedDirectoryWriteRequest) C.CGOErrCode { - if !c.cfg.AllowDirectorySharing { - return C.ErrCodeFailure - } - - if err := c.cfg.Conn.WriteMessage(req); err != nil { - c.cfg.Logger.ErrorContext(context.Background(), "failed to send SharedDirectoryWriteRequest", "error", err) - return C.ErrCodeFailure - } - return C.ErrCodeSuccess -} - //export cgo_tdp_sd_move_request func cgo_tdp_sd_move_request(handle C.uintptr_t, req *C.CGOSharedDirectoryMoveRequest) C.CGOErrCode { client, err := toClient(handle) if err != nil { return C.ErrCodeFailure } - return client.sharedDirectoryMoveRequest(legacy.SharedDirectoryMoveRequest{ - CompletionID: uint32(req.completion_id), - DirectoryID: uint32(req.directory_id), - OriginalPath: C.GoString(req.original_path), - NewPath: C.GoString(req.new_path), + + return client.sharedDirectoryRequest(&tdpb.SharedDirectoryRequest{ + CompletionId: uint32(req.completion_id), + DirectoryId: uint32(req.directory_id), + Operation: &tdpbv1.SharedDirectoryRequest_Move_{ + Move: &tdpbv1.SharedDirectoryRequest_Move{ + OriginalPath: C.GoString(req.original_path), + NewPath: C.GoString(req.new_path), + }, + }, }) } -func (c *Client) sharedDirectoryMoveRequest(req legacy.SharedDirectoryMoveRequest) C.CGOErrCode { - if !c.cfg.AllowDirectorySharing { - return C.ErrCodeFailure - } - - if err := c.cfg.Conn.WriteMessage(req); err != nil { - c.cfg.Logger.ErrorContext(context.Background(), "failed to send SharedDirectoryMoveRequest", "error", err) - return C.ErrCodeFailure - } - return C.ErrCodeSuccess -} - //export cgo_tdp_sd_truncate_request func cgo_tdp_sd_truncate_request(handle C.uintptr_t, req *C.CGOSharedDirectoryTruncateRequest) C.CGOErrCode { client, err := toClient(handle) if err != nil { return C.ErrCodeFailure } - return client.sharedDirectoryTruncateRequest(legacy.SharedDirectoryTruncateRequest{ - CompletionID: uint32(req.completion_id), - DirectoryID: uint32(req.directory_id), - Path: C.GoString(req.path), - EndOfFile: uint32(req.end_of_file), + + return client.sharedDirectoryRequest(&tdpb.SharedDirectoryRequest{ + CompletionId: uint32(req.completion_id), + DirectoryId: uint32(req.directory_id), + Operation: &tdpbv1.SharedDirectoryRequest_Truncate_{ + Truncate: &tdpbv1.SharedDirectoryRequest_Truncate{ + Path: C.GoString(req.path), + EndOfFile: uint32(req.end_of_file), + }, + }, }) } -func (c *Client) sharedDirectoryTruncateRequest(req legacy.SharedDirectoryTruncateRequest) C.CGOErrCode { - if !c.cfg.AllowDirectorySharing { - return C.ErrCodeFailure - } - - if err := c.cfg.Conn.WriteMessage(req); err != nil { - c.cfg.Logger.ErrorContext(context.Background(), "failed to send SharedDirectoryTruncateRequest", "error", err) - return C.ErrCodeFailure - } - return C.ErrCodeSuccess -} - // GetClientLastActive returns the time of the last recorded activity. // For RDP, "activity" is defined as user-input messages // (mouse move, button press, etc.) @@ -1296,3 +1300,11 @@ func (c *Client) UpdateClientActivity() { c.clientLastActive = time.Now().UTC() c.clientActivityMu.Unlock() } + +// Convert Go bool to C.uint8_t +func isEmpty(b bool) C.uint8_t { + if b { + return 1 + } + return 0 +} diff --git a/lib/srv/desktop/rdp/rdpclient/client_common.go b/lib/srv/desktop/rdp/rdpclient/client_common.go index a3206304daa..943c3661c63 100644 --- a/lib/srv/desktop/rdp/rdpclient/client_common.go +++ b/lib/srv/desktop/rdp/rdpclient/client_common.go @@ -23,11 +23,14 @@ import ( "context" "image/png" "log/slog" + "slices" "github.com/gravitational/trace" "github.com/gravitational/teleport/api/types" "github.com/gravitational/teleport/lib/srv/desktop/tdp" + "github.com/gravitational/teleport/lib/srv/desktop/tdp/protocol/legacy" + "github.com/gravitational/teleport/lib/srv/desktop/tdp/protocol/tdpb" ) // LicenseStore implements client-side license storage for Microsoft @@ -48,10 +51,6 @@ type Config struct { // AuthorizeFn is called to authorize a user connecting to a Windows desktop. AuthorizeFn func(login string) error - // Conn handles TDP messages between Windows Desktop Service - // and a Teleport Proxy. - Conn *tdp.Conn - // Encoder is an optional override for PNG encoding. Encoder *png.Encoder @@ -90,6 +89,9 @@ type Config struct { // AD indicates whether the desktop is part of an Active Directory domain. AD bool + + // The desktop protocol version used by the client (TDP or TDPB). + ClientProtocol string } //nolint:unused // used in client.go that is behind desktop_access_rdp build flag @@ -97,9 +99,6 @@ func (c *Config) checkAndSetDefaults() error { if c.Addr == "" { return trace.BadParameter("missing Addr in rdpclient.Config") } - if c.Conn == nil { - return trace.BadParameter("missing Conn in rdpclient.Config") - } if c.AuthorizeFn == nil { return trace.BadParameter("missing AuthorizeFn in rdpclient.Config") } @@ -109,6 +108,9 @@ func (c *Config) checkAndSetDefaults() error { if c.Encoder == nil { c.Encoder = tdp.PNGEncoder() } + if !slices.Contains([]string{tdpb.ProtocolName, legacy.ProtocolName}, c.ClientProtocol) { + return trace.BadParameter("missing ClientProtocol in rdpclient.Config") + } c.Logger = c.Logger.With("rdp_addr", c.Addr) return nil } diff --git a/lib/srv/desktop/rdp/rdpclient/client_nop.go b/lib/srv/desktop/rdp/rdpclient/client_nop.go index 8f0ae11cff0..753717b3850 100644 --- a/lib/srv/desktop/rdp/rdpclient/client_nop.go +++ b/lib/srv/desktop/rdp/rdpclient/client_nop.go @@ -28,6 +28,8 @@ import ( "context" "errors" "time" + + "github.com/gravitational/teleport/lib/srv/desktop/tdp" ) // Client is the dummy RDP client. @@ -37,7 +39,7 @@ type Client struct { // New creates and connects a new Client based on opts. // //nolint:staticcheck // SA4023. False positive, depends on build tags. -func New(cfg Config) (*Client, error) { +func New(_ *tdp.Conn, cfg Config) (*Client, error) { return nil, errors.New("the real rdpclient.Client implementation was not included in this build") } diff --git a/lib/srv/desktop/rdp/rdpclient/client_test.go b/lib/srv/desktop/rdp/rdpclient/client_test.go index c3622635c9e..41de3be5b92 100644 --- a/lib/srv/desktop/rdp/rdpclient/client_test.go +++ b/lib/srv/desktop/rdp/rdpclient/client_test.go @@ -21,13 +21,14 @@ package rdpclient import ( "bytes" + "io" "log/slog" "testing" "github.com/stretchr/testify/require" "github.com/gravitational/teleport/lib/srv/desktop/tdp" - "github.com/gravitational/teleport/lib/srv/desktop/tdp/protocol/legacy" + "github.com/gravitational/teleport/lib/srv/desktop/tdp/protocol/tdpb" ) type fakeConn struct { @@ -54,63 +55,42 @@ func (f *fakeConn) AddMessage(message tdp.Message) error { func TestClientNew_EOF(t *testing.T) { f := fakeConn{} - err := f.AddMessage(legacy.ClientUsername{Username: "user"}) - require.NoError(t, err) - conn := tdp.NewConn(&f, legacy.Decode) + conn := tdp.NewConn(&f, tdp.DecoderAdapter(tdpb.DecodePermissive)) - _, err = New(createConfig(conn)) - require.EqualError(t, err, "EOF") + _, err := New(conn, createConfig()) + require.ErrorIs(t, err, io.EOF) } func TestClientNew_NoKeyboardLayout(t *testing.T) { f := fakeConn{} - err := f.AddMessage(legacy.ClientUsername{Username: "user"}) - require.NoError(t, err) - err = f.AddMessage(legacy.ClientScreenSpec{ - Width: 100, - Height: 100, - }) - require.NoError(t, err) - err = f.AddMessage(legacy.ClientScreenSpec{ - Width: 100, - Height: 100, - }) + err := f.AddMessage(&tdpb.ClientHello{Username: "user"}) require.NoError(t, err) - conn := tdp.NewConn(&f, legacy.Decode) + conn := tdp.NewConn(&f, tdp.DecoderAdapter(tdpb.DecodePermissive)) - _, err = New(createConfig(conn)) + _, err = New(conn, createConfig()) require.NoError(t, err) } func TestClientNew_KeyboardLayout(t *testing.T) { f := fakeConn{} - err := f.AddMessage(legacy.ClientUsername{Username: "user"}) - require.NoError(t, err) - err = f.AddMessage(legacy.ClientScreenSpec{ - Width: 100, - Height: 100, - }) - require.NoError(t, err) - err = f.AddMessage(legacy.ClientKeyboardLayout{}) - require.NoError(t, err) - err = f.AddMessage(legacy.ClientScreenSpec{ - Width: 100, - Height: 100, - }) + err := f.AddMessage(&tdpb.ClientHello{Username: "user", KeyboardLayout: 1}) require.NoError(t, err) - conn := tdp.NewConn(&f, legacy.Decode) + conn := tdp.NewConn(&f, tdp.DecoderAdapter(tdpb.DecodePermissive)) - _, err = New(createConfig(conn)) + _, err = New(conn, createConfig()) require.NoError(t, err) + } -func createConfig(conn *tdp.Conn) Config { +func createConfig() Config { return Config{ - Addr: "example.com", - AuthorizeFn: func(login string) error { return nil }, - Conn: conn, - Logger: slog.Default(), + Addr: "example.com", + AuthorizeFn: func(login string) error { return nil }, + Logger: slog.Default(), + Width: 1, + Height: 1, + ClientProtocol: tdpb.ProtocolName, } } diff --git a/lib/srv/desktop/tdp/protocol/legacy/proto.go b/lib/srv/desktop/tdp/protocol/legacy/proto.go index 2b59b3336d8..3afe97e876e 100644 --- a/lib/srv/desktop/tdp/protocol/legacy/proto.go +++ b/lib/srv/desktop/tdp/protocol/legacy/proto.go @@ -42,6 +42,9 @@ import ( "github.com/gravitational/teleport/lib/web/mfajson" ) +// ProtocolName is the identifier for the TDP protocol. +const ProtocolName = "teleport-tdp" + // MessageType identifies the type of the message. type MessageType byte diff --git a/lib/srv/desktop/tdp/protocol/tdpb/tdpb.go b/lib/srv/desktop/tdp/protocol/tdpb/tdpb.go index 23b166cced1..c88ac5d9cc8 100644 --- a/lib/srv/desktop/tdp/protocol/tdpb/tdpb.go +++ b/lib/srv/desktop/tdp/protocol/tdpb/tdpb.go @@ -33,6 +33,9 @@ import ( "github.com/gravitational/teleport/lib/srv/desktop/tdp" ) +// ProtocolName is the identifier for the TDPB protocol. +const ProtocolName = "teleport-tdpb-1.0" + // ErrUnknownMessage is returned when an unknown message is decoded. var ErrUnknownMessage = errors.New("decoded unknown TDPB message") diff --git a/lib/srv/desktop/tdp/protocol/tdpb/translate.go b/lib/srv/desktop/tdp/protocol/tdpb/translate.go index c48eac9403f..0368c225aaf 100644 --- a/lib/srv/desktop/tdp/protocol/tdpb/translate.go +++ b/lib/srv/desktop/tdp/protocol/tdpb/translate.go @@ -271,6 +271,13 @@ func TranslateToLegacy(msg tdp.Message) ([]tdp.Message, error) { return nil, trace.WrapWithMessage(err, "Cannot parse uuid bytes from ping") } return []tdp.Message{legacy.Ping{UUID: id}}, nil + case *ServerHello: + return []tdp.Message{legacy.ConnectionActivated{ + IOChannelID: uint16(m.ActivationSpec.IoChannelId), + UserChannelID: uint16(m.ActivationSpec.UserChannelId), + ScreenWidth: uint16(m.ActivationSpec.ScreenWidth), + ScreenHeight: uint16(m.ActivationSpec.ScreenHeight), + }}, nil default: return nil, trace.Errorf("Could not translate to TDP. Encountered unexpected message type %T", m) } diff --git a/lib/srv/desktop/windows_server.go b/lib/srv/desktop/windows_server.go index c3aaf92ff0d..4daaeaa6822 100644 --- a/lib/srv/desktop/windows_server.go +++ b/lib/srv/desktop/windows_server.go @@ -41,6 +41,7 @@ import ( "github.com/gravitational/teleport" apidefaults "github.com/gravitational/teleport/api/defaults" + tdpbv1 "github.com/gravitational/teleport/api/gen/proto/go/teleport/desktop/v1" "github.com/gravitational/teleport/api/types" "github.com/gravitational/teleport/api/types/events" "github.com/gravitational/teleport/api/utils/clientutils" @@ -60,6 +61,7 @@ import ( "github.com/gravitational/teleport/lib/srv/desktop/rdp/rdpclient" "github.com/gravitational/teleport/lib/srv/desktop/tdp" "github.com/gravitational/teleport/lib/srv/desktop/tdp/protocol/legacy" + "github.com/gravitational/teleport/lib/srv/desktop/tdp/protocol/tdpb" "github.com/gravitational/teleport/lib/tlsca" "github.com/gravitational/teleport/lib/utils" "github.com/gravitational/teleport/lib/utils/dns" @@ -624,33 +626,64 @@ func (s *WindowsService) Serve(plainLis net.Listener) error { } } +func newErrorSender(protocol string, conn *tdp.Conn, logger *slog.Logger) func(string) { + if protocol == tdpb.ProtocolName { + return func(message string) { + if err := conn.WriteMessage(&tdpb.Alert{Message: message, Severity: tdpbv1.AlertSeverity_ALERT_SEVERITY_ERROR}); err != nil { + logger.ErrorContext(context.Background(), "Failed to send TDPB error message", "error", err, "message", message) + } + } + } + return func(message string) { + if err := conn.WriteMessage(&legacy.Alert{Message: message, Severity: legacy.SeverityError}); err != nil { + logger.ErrorContext(context.Background(), "Failed to send TDP error message", "error", err, "message", message) + } + } +} + // handleConnection handles TLS connections from a Teleport proxy. // It authenticates and authorizes the connection, and then begins // translating the TDP messages from the proxy into native RDP. func (s *WindowsService) handleConnection(proxyConn *tls.Conn) { log := s.cfg.Logger - tdpConn := tdp.NewConn(proxyConn, legacy.Decode) + // Ensure TLS handshake is complete so that we can the read ALPN result. + if err := proxyConn.Handshake(); err != nil { + log.ErrorContext(context.Background(), "Failed to complete TLS handshake") + return + } + + // Figure out which protocol the client is using + clientProtocol := proxyConn.ConnectionState().NegotiatedProtocol + var decoder tdp.Decoder + switch clientProtocol { + case tdpb.ProtocolName: + decoder = tdp.DecoderAdapter(tdpb.DecodePermissive) + case "": + clientProtocol = legacy.ProtocolName + decoder = legacy.Decode + default: + log.ErrorContext(context.Background(), "Unknown client protocol selection", "protocol", clientProtocol) + return + } + + tdpConn := tdp.NewConn(proxyConn, decoder) defer tdpConn.Close() - // Inline function to enforce that we are centralizing TDP Error sending in this function. - sendTDPError := func(message string) { - if err := tdpConn.WriteMessage(legacy.Alert{Message: message, Severity: legacy.SeverityError}); err != nil { - log.ErrorContext(context.Background(), "Failed to send TDP error message", "error", err) - } - } + // Inline function to enforce that we are centralizing TDP/TDPB Error sending in this function. + sendError := newErrorSender(clientProtocol, tdpConn, log) // Check connection limits. remoteAddr, _, err := net.SplitHostPort(proxyConn.RemoteAddr().String()) if err != nil { log.ErrorContext(context.Background(), "Could not parse client IP", "addr", proxyConn.RemoteAddr().String(), "error", err) - sendTDPError("Internal error.") + sendError("Internal error.") return } log = log.With("client_ip", remoteAddr) if err := s.cfg.ConnLimiter.AcquireConnection(remoteAddr); err != nil { log.WarnContext(context.Background(), "Connection limit exceeded, rejecting connection") - sendTDPError("Connection limit exceeded.") + sendError("Connection limit exceeded.") return } defer s.cfg.ConnLimiter.ReleaseConnection(remoteAddr) @@ -659,7 +692,7 @@ func (s *WindowsService) handleConnection(proxyConn *tls.Conn) { ctx, err := s.middleware.WrapContextWithUser(s.closeCtx, proxyConn) if err != nil { log.WarnContext(ctx, "mTLS authentication failed for incoming connection", "error", err) - sendTDPError("Connection authentication failed.") + sendError("Connection authentication failed.") return } log.DebugContext(ctx, "Authenticated Windows desktop connection") @@ -667,7 +700,7 @@ func (s *WindowsService) handleConnection(proxyConn *tls.Conn) { authContext, err := s.cfg.Authorizer.Authorize(ctx) if err != nil { log.WarnContext(ctx, "authorization failed for Windows desktop connection", "error", err) - sendTDPError("Connection authorization failed.") + sendError("Connection authorization failed.") return } @@ -690,12 +723,12 @@ func (s *WindowsService) handleConnection(proxyConn *tls.Conn) { })) if err != nil { log.WarnContext(ctx, "Failed to fetch desktop by name", "error", err) - sendTDPError("Teleport failed to find the requested desktop in its database.") + sendError("Teleport failed to find the requested desktop in its database.") return } if len(desktops) == 0 { log.ErrorContext(ctx, "desktop not found", "host_uuid", s.cfg.Heartbeat.HostUUID, "name", desktopName) - sendTDPError(fmt.Sprintf("Could not find desktop %v.", desktopName)) + sendError(fmt.Sprintf("Could not find desktop %v.", desktopName)) return } desktop := desktops[0] @@ -704,19 +737,19 @@ func (s *WindowsService) handleConnection(proxyConn *tls.Conn) { log.DebugContext(ctx, "Connecting to Windows desktop") defer log.DebugContext(ctx, "Windows desktop disconnected") - if err := s.connectRDP(ctx, log, tdpConn, desktop, authContext); err != nil { + if err := s.connectRDP(ctx, log, tdpConn, desktop, authContext, clientProtocol); err != nil { log.ErrorContext(context.Background(), "RDP connection failed", "error", err) msg := "RDP connection failed." var um trace.UserMessager if errors.As(err, &um) { msg = um.UserMessage() } - sendTDPError(msg) + sendError(msg) return } } -func (s *WindowsService) connectRDP(ctx context.Context, log *slog.Logger, tdpConn *tdp.Conn, desktop types.WindowsDesktop, authCtx *authz.Context) error { +func (s *WindowsService) connectRDP(ctx context.Context, log *slog.Logger, tdpConn *tdp.Conn, desktop types.WindowsDesktop, authCtx *authz.Context, clientProtocol string) error { identity := authCtx.Identity.GetIdentity() log = log.With("teleport_user", identity.Username, "desktop_addr", desktop.GetAddr(), "ad", !desktop.NonAD()) @@ -838,17 +871,16 @@ func (s *WindowsService) connectRDP(ctx context.Context, log *slog.Logger, tdpCo } log = log.With("kdc_addr", kdcAddr, "nla", nla) - log.InfoContext(context.Background(), "initiating RDP client") + log.InfoContext(context.Background(), "initiating RDP client", "client_protocol", clientProtocol) //nolint:staticcheck // SA4023. False positive, depends on build tags. - rdpc, err := rdpclient.New(rdpclient.Config{ + rdpc, err := rdpclient.New(tdpConn, rdpclient.Config{ LicenseStore: s.cfg.LicenseStore, HostID: s.cfg.Heartbeat.HostUUID, Logger: log, Addr: addr.String(), ComputerName: computerName, KDCAddr: kdcAddr, - Conn: tdpConn, AuthorizeFn: authorize, AllowClipboard: authCtx.Checker.DesktopClipboard(), AllowDirectorySharing: authCtx.Checker.DesktopDirectorySharing(), @@ -857,6 +889,7 @@ func (s *WindowsService) connectRDP(ctx context.Context, log *slog.Logger, tdpCo Height: height, AD: !desktop.NonAD(), NLA: nla, + ClientProtocol: clientProtocol, }) // before we check the error above, we grab the Windows user so that // future audit events include the proper username @@ -974,6 +1007,30 @@ func populateCertMetadata(metadata *events.WindowsCertificateMetadata, cert *x50 metadata.EnhancedKeyUsage = enhancedKeyUsages } +func (s *WindowsService) recordEvent(ctx context.Context, t time.Time, delay int64, m tdp.Message, data []byte, recorder libevents.SessionPreparerRecorder) { + e := &events.DesktopRecording{ + Metadata: events.Metadata{ + Type: libevents.DesktopRecordingEvent, + Time: t, + }, + TDPBMessage: data, + DelayMilliseconds: delay, + } + + if len(data) > libevents.MaxProtoMessageSizeBytes { + // Technically a PNG frame is unbounded and could be too big for a single protobuf. + // In practice though, Windows limits RDP bitmaps to 64x64 pixels, and we compress + // the PNGs before they get here, so most PNG frames are under 500 bytes. The largest + // ones are around 2000 bytes. Anything approaching the limit of a single protobuf + // is likely some sort of DoS attempt and not legitimate RDP traffic, so we don't log it. + s.cfg.Logger.WarnContext(ctx, "refusing to record message", "len", len(data), "type", logutils.TypeAttr(m)) + } else { + if err := libevents.SetupAndRecordEvent(ctx, recorder, e); err != nil { + s.cfg.Logger.WarnContext(ctx, "could not record desktop recording event", "error", err) + } + } +} + func (s *WindowsService) makeTDPSendHandler( ctx context.Context, recorder libevents.SessionPreparerRecorder, @@ -981,45 +1038,22 @@ func (s *WindowsService) makeTDPSendHandler( tdpConn *tdp.Conn, audit *desktopSessionAuditor, ) func(m tdp.Message, b []byte) { - return func(m tdp.Message, b []byte) { - switch b[0] { - case byte(legacy.TypeRDPConnectionInitialized), byte(legacy.TypeRDPFastPathPDU), byte(legacy.TypePNG2Frame), - byte(legacy.TypePNGFrame), byte(legacy.TypeError), byte(legacy.TypeAlert): - e := &events.DesktopRecording{ - Metadata: events.Metadata{ - Type: libevents.DesktopRecordingEvent, - Time: s.cfg.Clock.Now().UTC().Round(time.Millisecond), - }, - Message: b, - DelayMilliseconds: delay(), - } - if e.Size() > libevents.MaxProtoMessageSizeBytes { - // Technically a PNG frame is unbounded and could be too big for a single protobuf. - // In practice though, Windows limits RDP bitmaps to 64x64 pixels, and we compress - // the PNGs before they get here, so most PNG frames are under 500 bytes. The largest - // ones are around 2000 bytes. Anything approaching the limit of a single protobuf - // is likely some sort of DoS attempt and not legitimate RDP traffic, so we don't log it. - s.cfg.Logger.WarnContext(ctx, "refusing to record PNG frame, image too large", "len", len(b)) - } else { - if err := libevents.SetupAndRecordEvent(ctx, recorder, e); err != nil { - s.cfg.Logger.WarnContext(ctx, "could not record desktop recording event", "error", err) - } - } - case byte(legacy.TypeClipboardData): - if clip, ok := m.(legacy.ClipboardData); ok { - // the TDP send handler emits a clipboard receive event, because we - // received clipboard data from the remote desktop and are sending - // it on the TDP connection - rxEvent := audit.makeClipboardReceive(int32(len(clip))) - s.emit(ctx, rxEvent) - } - case byte(legacy.TypeSharedDirectoryAcknowledge): - if message, ok := m.(legacy.SharedDirectoryAcknowledge); ok { - s.emit(ctx, audit.makeSharedDirectoryStart(message)) - } - case byte(legacy.TypeSharedDirectoryReadRequest): - if message, ok := m.(legacy.SharedDirectoryReadRequest); ok { - errorEvent := audit.onSharedDirectoryReadRequest(message) + return func(msg tdp.Message, data []byte) { + switch m := msg.(type) { + case *tdpb.ServerHello, *tdpb.FastPathPDU, *tdpb.PNGFrame, *tdpb.Alert: + s.recordEvent(ctx, s.cfg.Clock.Now().UTC().Round(time.Millisecond), delay(), m, data, recorder) + case *tdpb.ClipboardData: + // the TDP send handler emits a clipboard receive event, because we + // received clipboard data from the remote desktop and are sending + // it on the TDP connection + rxEvent := audit.makeClipboardReceive(int32(len(m.Data))) + s.emit(ctx, rxEvent) + case *tdpb.SharedDirectoryAcknowledge: + s.emit(ctx, audit.makeSharedDirectoryStart(m)) + case *tdpb.SharedDirectoryRequest: + switch req := m.Operation.(type) { + case *tdpbv1.SharedDirectoryRequest_Write_: + errorEvent := audit.onSharedDirectoryWriteRequest(completionID(m.CompletionId), directoryID(m.DirectoryId), req.Write) if errorEvent != nil { // if we can't audit due to a full cache, abort the connection // as a security measure @@ -1028,10 +1062,8 @@ func (s *WindowsService) makeTDPSendHandler( } s.emit(ctx, errorEvent) } - } - case byte(legacy.TypeSharedDirectoryWriteRequest): - if message, ok := m.(legacy.SharedDirectoryWriteRequest); ok { - errorEvent := audit.onSharedDirectoryWriteRequest(message) + case *tdpbv1.SharedDirectoryRequest_Read_: + errorEvent := audit.onSharedDirectoryReadRequest(completionID(m.CompletionId), directoryID(m.DirectoryId), req.Read) if errorEvent != nil { // if we can't audit due to a full cache, abort the connection // as a security measure @@ -1054,36 +1086,21 @@ func (s *WindowsService) makeTDPReceiveHandler( ) func(m tdp.Message) { return func(m tdp.Message) { switch msg := m.(type) { - case legacy.ClientScreenSpec, legacy.MouseButton, legacy.MouseMove: + case *tdpb.ClientScreenSpec, *tdpb.MouseButton, *tdpb.MouseMove: b, err := m.Encode() if err != nil { s.cfg.Logger.WarnContext(ctx, "could not emit desktop recording event", "error", err) } - e := &events.DesktopRecording{ - Metadata: events.Metadata{ - Type: libevents.DesktopRecordingEvent, - Time: s.cfg.Clock.Now().UTC().Round(time.Millisecond), - }, - Message: b, - DelayMilliseconds: delay(), - } - if e.Size() > libevents.MaxProtoMessageSizeBytes { - // screen spec, mouse button, and mouse move are fixed size messages, - // so they cannot exceed the maximum size - s.cfg.Logger.WarnContext(ctx, "refusing to record message", "len", len(b), "type", logutils.TypeAttr(m)) - } else { - if err := libevents.SetupAndRecordEvent(ctx, recorder, e); err != nil { - s.cfg.Logger.WarnContext(ctx, "could not record desktop recording event", "error", err) - } - } - case legacy.ClipboardData: + + s.recordEvent(ctx, s.cfg.Clock.Now().UTC().Round(time.Millisecond), delay(), m, b, recorder) + case *tdpb.ClipboardData: // the TDP receive handler emits a clipboard send event, because we // received clipboard data from the user (over TDP) and are sending // it to the remote desktop - sendEvent := audit.makeClipboardSend(int32(len(msg))) + sendEvent := audit.makeClipboardSend(int32(len(msg.Data))) s.emit(ctx, sendEvent) - case legacy.SharedDirectoryAnnounce: - errorEvent := audit.onSharedDirectoryAnnounce(m.(legacy.SharedDirectoryAnnounce)) + case *tdpb.SharedDirectoryAnnounce: + errorEvent := audit.onSharedDirectoryAnnounce(m.(*tdpb.SharedDirectoryAnnounce)) if errorEvent != nil { // if we can't audit due to a full cache, abort the connection // as a security measure @@ -1093,12 +1110,15 @@ func (s *WindowsService) makeTDPReceiveHandler( } s.emit(ctx, errorEvent) } - case legacy.SharedDirectoryReadResponse: + case *tdpb.SharedDirectoryResponse: // shared directory audit events can be noisy, so we use a compactor // to retain and delay them in an attempt to coalesce contiguous events - audit.compactor.handleRead(ctx, audit.makeSharedDirectoryReadResponse(msg)) - case legacy.SharedDirectoryWriteResponse: - audit.compactor.handleWrite(ctx, audit.makeSharedDirectoryWriteResponse(msg)) + switch op := msg.Operation.(type) { + case *tdpbv1.SharedDirectoryResponse_Read_: + audit.compactor.handleRead(ctx, audit.makeSharedDirectoryReadResponse(completionID(msg.CompletionId), msg.ErrorCode, op.Read)) + case *tdpbv1.SharedDirectoryResponse_Write_: + audit.compactor.handleWrite(ctx, audit.makeSharedDirectoryWriteResponse(completionID(msg.CompletionId), msg.ErrorCode, op.Write)) + } } } } @@ -1361,10 +1381,12 @@ type monitorErrorSender struct { } func (m *monitorErrorSender) WriteString(s string) (n int, err error) { - if err := m.tdpConn.WriteMessage(legacy.Alert{Message: s, Severity: legacy.SeverityError}); err != nil { - return 0, trace.Wrap(err, "sending TDP error message") + if err := m.tdpConn.WriteMessage(&tdpb.Alert{ + Severity: tdpbv1.AlertSeverity_ALERT_SEVERITY_ERROR, + Message: s, + }); err != nil { + return 0, trace.Wrap(err, "sending TDPB error message") } - return len(s), nil } diff --git a/lib/srv/desktop/windows_server_test.go b/lib/srv/desktop/windows_server_test.go index 190f345e260..34f00709aeb 100644 --- a/lib/srv/desktop/windows_server_test.go +++ b/lib/srv/desktop/windows_server_test.go @@ -34,10 +34,13 @@ import ( "testing" "time" + "github.com/google/go-cmp/cmp" "github.com/jonboulle/clockwork" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" + "google.golang.org/protobuf/testing/protocmp" + tdpbv1 "github.com/gravitational/teleport/api/gen/proto/go/teleport/desktop/v1" "github.com/gravitational/teleport/api/types" "github.com/gravitational/teleport/api/types/events" "github.com/gravitational/teleport/lib/auth/authclient" @@ -47,7 +50,7 @@ import ( "github.com/gravitational/teleport/lib/modules" "github.com/gravitational/teleport/lib/service/servicecfg" "github.com/gravitational/teleport/lib/srv/desktop/tdp" - "github.com/gravitational/teleport/lib/srv/desktop/tdp/protocol/legacy" + "github.com/gravitational/teleport/lib/srv/desktop/tdp/protocol/tdpb" "github.com/gravitational/teleport/lib/tlsca" logutils "github.com/gravitational/teleport/lib/utils/log" "github.com/gravitational/teleport/lib/utils/log/logtest" @@ -310,21 +313,19 @@ func TestEmitsRecordingEventsOnSend(t *testing.T) { emitter := &eventstest.MockRecorderEmitter{} emitterPreparer := libevents.WithNoOpPreparer(emitter) - // a fake PNG Frame message - encoded := []byte{byte(legacy.TypePNGFrame), 0x01, 0x02} - delay := func() int64 { return 0 } handler := s.makeTDPSendHandler(context.Background(), emitterPreparer, delay, nil /* conn */, nil /* auditor */) - // the handler accepts both the message structure and its encoded form, - // but our logic only depends on the encoded form, so pass a nil message - handler(nil /* message */, encoded) + msg := &tdpb.PNGFrame{Data: []byte{0x01, 0x02}} + encoded, err := msg.Encode() + require.NoError(t, err) + handler(msg, encoded) e := emitter.LastEvent() require.NotNil(t, e) dr, ok := e.(*events.DesktopRecording) require.True(t, ok) - require.Equal(t, encoded, dr.Message) + require.Equal(t, encoded, dr.TDPBMessage) } func TestSkipsExtremelyLargePNGs(t *testing.T) { @@ -341,15 +342,14 @@ func TestSkipsExtremelyLargePNGs(t *testing.T) { // a fake PNG Frame message, which is way too big to be legitimate maliciousPNG := make([]byte, libevents.MaxProtoMessageSizeBytes+1) rand.Read(maliciousPNG) - maliciousPNG[0] = byte(legacy.TypePNGFrame) + png := &tdpb.PNGFrame{Data: maliciousPNG} + encoded, err := png.Encode() + require.NoError(t, err) delay := func() int64 { return 0 } handler := s.makeTDPSendHandler(context.Background(), emitterPreparer, delay, nil /* conn */, nil /* auditor */) - // the handler accepts both the message structure and its encoded form, - // but our logic only depends on the encoded form, so pass a nil message - var msg tdp.Message - handler(msg, maliciousPNG) + handler(png, encoded) require.Nil(t, emitter.LastEvent()) } @@ -367,9 +367,9 @@ func TestEmitsRecordingEventsOnReceive(t *testing.T) { delay := func() int64 { return 0 } handler := s.makeTDPReceiveHandler(context.Background(), emitterPreparer, delay, nil /* conn */, nil /* auditor */) - msg := legacy.MouseButton{ - Button: legacy.LeftMouseButton, - State: legacy.ButtonPressed, + msg := &tdpb.MouseButton{ + Button: tdpbv1.MouseButtonType_MOUSE_BUTTON_TYPE_LEFT, + Pressed: true, } handler(msg) @@ -377,9 +377,9 @@ func TestEmitsRecordingEventsOnReceive(t *testing.T) { require.NotNil(t, e) dr, ok := e.(*events.DesktopRecording) require.True(t, ok) - decoded, err := legacy.Decode(bytes.NewBuffer(dr.Message)) + decoded, err := tdpb.DecodePermissive(bytes.NewBuffer(dr.TDPBMessage)) require.NoError(t, err) - require.Equal(t, msg, decoded) + require.Empty(t, cmp.Diff((*tdpbv1.MouseButton)(msg), (*tdpbv1.MouseButton)(decoded.(*tdpb.MouseButton)), protocmp.Transform())) } func TestEmitsClipboardSendEvents(t *testing.T) { @@ -404,7 +404,9 @@ func TestEmitsClipboardSendEvents(t *testing.T) { rand.Read(fakeClipboardData) start := s.cfg.Clock.Now().UTC() - msg := legacy.ClipboardData(fakeClipboardData) + msg := &tdpb.ClipboardData{ + Data: fakeClipboardData, + } handler(msg) e := emitter.LastEvent() @@ -440,7 +442,7 @@ func TestEmitsClipboardReceiveEvents(t *testing.T) { rand.Read(fakeClipboardData) start := s.cfg.Clock.Now().UTC() - msg := legacy.ClipboardData(fakeClipboardData) + msg := &tdpb.ClipboardData{Data: fakeClipboardData} encoded, err := msg.Encode() require.NoError(t, err) handler(msg, encoded) diff --git a/lib/web/apiserver.go b/lib/web/apiserver.go index df130a0bb88..fd2661979ef 100644 --- a/lib/web/apiserver.go +++ b/lib/web/apiserver.go @@ -106,6 +106,7 @@ import ( "github.com/gravitational/teleport/lib/services" "github.com/gravitational/teleport/lib/services/readonly" "github.com/gravitational/teleport/lib/session" + "github.com/gravitational/teleport/lib/srv/desktop/tdp/protocol/tdpb" "github.com/gravitational/teleport/lib/utils" logutils "github.com/gravitational/teleport/lib/utils/log" "github.com/gravitational/teleport/lib/web/app" @@ -1054,7 +1055,7 @@ func (h *Handler) bindDefaultEndpoints() { h.GET("/webapi/sites/:site/desktopservices", h.WithClusterAuth(h.clusterDesktopServicesGet)) h.GET("/webapi/sites/:site/desktops/:desktopName", h.WithClusterAuth(h.getDesktopHandle)) // GET /webapi/sites/:site/desktops/:desktopName/connect?username=&width=&height= - h.GET("/webapi/sites/:site/desktops/:desktopName/connect/ws", h.WithClusterAuthWebSocket(h.desktopConnectHandle, WithSubprotocols(protocolTDPB))) + h.GET("/webapi/sites/:site/desktops/:desktopName/connect/ws", h.WithClusterAuthWebSocket(h.desktopConnectHandle, WithSubprotocols(tdpb.ProtocolName))) // GET /webapi/sites/:site/desktopplayback/:sid/ws h.GET("/webapi/sites/:site/desktopplayback/:sid/ws", h.WithClusterAuthWebSocket(h.desktopPlaybackHandle)) h.GET("/webapi/sites/:site/desktops/:desktopName/active", h.WithClusterAuth(h.desktopIsActive)) diff --git a/lib/web/desktop.go b/lib/web/desktop.go index 39860caa6f9..1c0c2847e15 100644 --- a/lib/web/desktop.go +++ b/lib/web/desktop.go @@ -57,7 +57,6 @@ import ( const ( tdpbQueryParameter = "tdpb" - protocolTDPB = "teleport-tdpb-1.0" protocolTDP = "teleport-tdp" ) @@ -226,7 +225,26 @@ func (t *tdpHandshaker) forwardTDPB(w io.Writer, username string, _ bool) error hello.KeyboardLayout = t.keyboardLayout.KeyboardLayout } - return trace.Wrap(sendAll(w, append([]tdp.Message{hello}, t.withheld...))) + withheld, err := translateAll(t.withheld, tdpb.TranslateToModern) + if err != nil { + return trace.Wrap(err) + } + return trace.Wrap(sendAll(w, append([]tdp.Message{hello}, withheld...))) +} + +func translateAll(messages []tdp.Message, translate func(tdp.Message) ([]tdp.Message, error)) ([]tdp.Message, error) { + translated := make([]tdp.Message, 0, len(messages)) + for _, msg := range messages { + out, err := translate(msg) + if err != nil { + return nil, trace.Wrap(err) + } + + if len(out) > 0 { + translated = append(translated, out...) + } + } + return translated, nil } // implements handshaker for TDPB clients @@ -292,7 +310,11 @@ func (t *tdpbHandshaker) forwardTDP(w io.Writer, username string, forwardKeyboar messages = append(messages, legacy.ClientKeyboardLayout{KeyboardLayout: t.hello.KeyboardLayout}) } - return sendAll(w, append(messages, t.withheld...)) + withheld, err := translateAll(t.withheld, tdpb.TranslateToLegacy) + if err != nil { + return trace.Wrap(err) + } + return sendAll(w, append(messages, withheld...)) } func (t *tdpbHandshaker) forwardTDPB(w io.Writer, username string, _ bool) error { @@ -319,7 +341,7 @@ type handshaker interface { // creates a handshaker instance that interops with either TDP or TDPB clients func newHandshaker(protocol string, ws *websocket.Conn) handshaker { - if protocol == protocolTDPB { + if protocol == tdpb.ProtocolName { return &tdpbHandshaker{ connection: &desktopWebsocketAdapter{conn: ws}, } @@ -435,7 +457,7 @@ func (h *Handler) createDesktopConnection( serverProtocol = protocolTDP sendKeyboardLayout, _ := utils.MinVerWithoutPreRelease(version, "18.0.0") err = handshaker.forwardTDP(serviceConnTLS, username, sendKeyboardLayout) - case protocolTDPB: + case tdpb.ProtocolName: err = handshaker.forwardTDPB(serviceConnTLS, username, true /* unused */) default: err = trace.BadParameter("Unknown desktop agent protocol %v", serverProtocol) @@ -576,7 +598,7 @@ func (h *Handler) createDesktopTLSConfig( } tlsConfig.Certificates = []tls.Certificate{certConf} - tlsConfig.NextProtos = []string{protocolTDPB} + tlsConfig.NextProtos = []string{tdpb.ProtocolName} // Pass target desktop name via SNI. tlsConfig.ServerName = desktopName + SNISuffix return tlsConfig, nil @@ -650,8 +672,8 @@ func readClientProtocol(r *http.Request) (string, error) { switch tdpbVersion { case "": return protocolTDP, nil - case protocolTDPB: - return protocolTDPB, nil + case tdpb.ProtocolName: + return tdpb.ProtocolName, nil default: return "", trace.BadParameter("unknown TDPB version %q", tdpbVersion) } @@ -733,7 +755,7 @@ func (d desktopPinger) pingTDPB(ctx context.Context) error { } func newConn(rwc io.ReadWriteCloser, protocol string) *tdp.Conn { - if protocol == protocolTDPB { + if protocol == tdpb.ProtocolName { return tdp.NewConn(rwc, tdp.DecoderAdapter(tdpb.DecodePermissive)) } return tdp.NewConn(rwc, legacy.Decode) @@ -790,16 +812,16 @@ func (p desktopWebsocketProxy) run(ctx context.Context) error { needTranslation := p.clientProtocol != p.serverProtocol if needTranslation { // Translation is needed - if p.serverProtocol == protocolTDPB { - p.log.InfoContext(ctx, "Proxying desktop connection with translation", "server_dialect", protocolTDPB, "client_dialect", protocolTDP) - // Server speaks TDPB + if p.serverProtocol == tdpb.ProtocolName { + p.log.InfoContext(ctx, "Proxying desktop connection with translation", "server_dialect", tdpb.ProtocolName, "client_dialect", protocolTDP) + // Agent speaks TDPB // Translate to TDPB when writing to the server. Intercept pings when reading from the server. serverConn = tdp.NewReadWriteInterceptor(serverConn, nil, tdpb.TranslateToModern) // Client speaks TDP // Translate to TDP (legacy) when writing to this connection clientConn = tdp.NewReadWriteInterceptor(clientConn, nil, tdpb.TranslateToLegacy) } else { - p.log.InfoContext(ctx, "Proxying desktop connection with translation", "server_dialect", protocolTDP, "client_dialect", protocolTDPB) + p.log.InfoContext(ctx, "Proxying desktop connection with translation", "server_dialect", protocolTDP, "client_dialect", tdpb.ProtocolName) // Agent speaks TDP // Translate to TDPB when reading from this connection. serverConn = tdp.NewReadWriteInterceptor(serverConn, nil, tdpb.TranslateToLegacy) diff --git a/lib/web/desktop_test.go b/lib/web/desktop_test.go index 88379f2439a..7aeab812df5 100644 --- a/lib/web/desktop_test.go +++ b/lib/web/desktop_test.go @@ -202,7 +202,7 @@ func TestProxyConnection(t *testing.T) { { name: "tdp-tdpb", clientProtocol: protocolTDP, - serverProtocol: protocolTDPB, + serverProtocol: tdpb.ProtocolName, version: "17.5.0", clientFn: tdpClient, echoFn: tdpbEchoServer, @@ -217,7 +217,7 @@ func TestProxyConnection(t *testing.T) { }, { name: "tdpb-tdp", - clientProtocol: protocolTDPB, + clientProtocol: tdpb.ProtocolName, serverProtocol: protocolTDP, version: "17.5.0", clientFn: tdpbClient, @@ -225,8 +225,8 @@ func TestProxyConnection(t *testing.T) { }, { name: "tdpb-tdpb", - clientProtocol: protocolTDPB, - serverProtocol: protocolTDPB, + clientProtocol: tdpb.ProtocolName, + serverProtocol: tdpb.ProtocolName, version: "17.5.0", clientFn: tdpbClient, echoFn: tdpbEchoServer, @@ -234,7 +234,7 @@ func TestProxyConnection(t *testing.T) { { name: "tdp-tdpb-no-latency-monitor", clientProtocol: protocolTDP, - serverProtocol: protocolTDPB, + serverProtocol: tdpb.ProtocolName, /* server version does not support latency monitoring */ version: "17.0.0", clientFn: tdpClient, @@ -339,7 +339,7 @@ func TestHandshaker(t *testing.T) { defer handshaker.Close() defer client.Close() - shaker := newHandshaker(protocolTDPB, handshaker) + shaker := newHandshaker(tdpb.ProtocolName, handshaker) done := make(chan error) go func() { @@ -355,7 +355,6 @@ func TestHandshaker(t *testing.T) { KeyboardLayout: 12, } require.NoError(t, tdp.EncodeTo(&clientConn, hello)) - require.NoError(t, tdp.EncodeTo(&clientConn, &tdpb.PNGFrame{Data: []byte("somedata")})) // Should succeed require.NoError(t, <-done) @@ -399,6 +398,49 @@ func TestHandshaker(t *testing.T) { require.ErrorIs(t, err, io.EOF) }) + t.Run("withheld-tdpb-messages-are-translated", func(t *testing.T) { + tdpbHandshaker := tdpbHandshaker{ + hello: &tdpb.ClientHello{ + ScreenSpec: &tdpbv1.ClientScreenSpec{ + Width: 10, + Height: 10, + }, + KeyboardLayout: 1, + }, + withheld: []tdp.Message{&tdpb.MouseMove{X: 1, Y: 2}}, + } + + buf := bytes.NewBuffer(nil) + require.NoError(t, tdpbHandshaker.forwardTDP(buf, "someuser", false)) + username, err := legacy.Decode(buf) + require.IsType(t, legacy.ClientUsername{}, username) + require.NoError(t, err) + screenSpec, err := legacy.Decode(buf) + require.NoError(t, err) + require.IsType(t, legacy.ClientScreenSpec{}, screenSpec) + pngFrame, err := legacy.Decode(buf) + require.NoError(t, err) + require.IsType(t, legacy.MouseMove{}, pngFrame) + }) + + t.Run("withheld-tdp-messages-are-translated", func(t *testing.T) { + tdbHandshaker := tdpHandshaker{ + screenSpec: legacy.ClientScreenSpec{ + Width: 10, + Height: 10, + }, + withheld: []tdp.Message{legacy.MouseMove{X: 1, Y: 2}}, + } + + buf := bytes.NewBuffer(nil) + require.NoError(t, tdbHandshaker.forwardTDPB(buf, "someuser", false)) + hello, err := tdpb.DecodePermissive(buf) + require.IsType(t, &tdpb.ClientHello{}, hello) + require.NoError(t, err) + pngFrame, err := tdpb.DecodePermissive(buf) + require.NoError(t, err) + require.IsType(t, &tdpb.MouseMove{}, pngFrame) + }) } func TestDesktopWebsocketAdapter(t *testing.T) { diff --git a/web/packages/shared/libs/tdp/client.ts b/web/packages/shared/libs/tdp/client.ts index a69df9bb5ac..5adf074570c 100644 --- a/web/packages/shared/libs/tdp/client.ts +++ b/web/packages/shared/libs/tdp/client.ts @@ -368,8 +368,17 @@ export class TdpClient extends EventEmitter { // processMessage should be await-ed when called, // so that its internal await-or-not logic is obeyed. - async processMessage(buffer: ArrayBufferLike): Promise { - const result = this.codec.decodeMessage(buffer); + async processMessage( + buffer: ArrayBufferLike, + codecOverride?: Codec + ): Promise { + let codec = this.codec; + if (codecOverride) { + // Allow the caller to override the codec. + codec = codecOverride; + } + + const result = codec.decodeMessage(buffer); if (!result) { // Codec implementations *should* return an 'unknown' result kind // instead of undefined, but double check anyway for safety. diff --git a/web/packages/teleport/src/lib/tdp/playerClient.ts b/web/packages/teleport/src/lib/tdp/playerClient.ts index 7b4bcf95253..e99a0478aa8 100644 --- a/web/packages/teleport/src/lib/tdp/playerClient.ts +++ b/web/packages/teleport/src/lib/tdp/playerClient.ts @@ -19,6 +19,7 @@ import { ClientScreenSpec, selectDirectoryInBrowser, + TdpbCodec, TdpClient, TdpClientEvent, } from 'shared/libs/tdp'; @@ -57,6 +58,7 @@ export class PlayerClient extends TdpClient { private sendTimeUpdates = true; private lastUpdateTime = 0; private timeout = null; + private tdpbCodec = new TdpbCodec(); constructor({ url, setTime, setPlayerStatus, setStatusText }) { super( @@ -174,7 +176,16 @@ export class PlayerClient extends TdpClient { this.scheduleNextUpdate(json.ms); } - await super.processMessage(base64ToArrayBuffer(json.message)); + // Handle TDPB recordings by switching to the TDPB codec + if (json.tdpb_message !== undefined) { + await super.processMessage( + base64ToArrayBuffer(json.tdpb_message), + this.tdpbCodec + ); + } else { + // Handle TDP recordings + await super.processMessage(base64ToArrayBuffer(json.message)); + } } }