mirror of https://github.com/FreeRDP/FreeRDP
cunit: remove deprecated unit tests
This commit is contained in:
parent
ddedc574f3
commit
734b30a5fd
|
@ -628,11 +628,6 @@ include_directories("${CMAKE_BINARY_DIR}/winpr/include")
|
|||
|
||||
add_subdirectory(winpr)
|
||||
|
||||
if(WITH_CUNIT)
|
||||
message(FATAL_ERROR "cunit (WITH_CUNIT) is deprecated please use BUILD_TESTING to build ctest tests.
|
||||
The cunit directory contains the old tests and is kept until all tests are converted.")
|
||||
endif()
|
||||
|
||||
# Sub-directories
|
||||
|
||||
if(WITH_THIRD_PARTY)
|
||||
|
|
|
@ -1,77 +0,0 @@
|
|||
# FreeRDP: A Remote Desktop Protocol Implementation
|
||||
# cunit cmake build script
|
||||
#
|
||||
# Copyright 2011 O.S. Systems Software Ltda.
|
||||
# Copyright 2011 Otavio Salvador <otavio@ossystems.com.br>
|
||||
# Copyright 2011 Marc-Andre Moreau <marcandre.moreau@gmail.com>
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
include_directories(${CUNIT_INCLUDE_DIRS})
|
||||
include_directories(${CMAKE_SOURCE_DIR}) # for some internal tests
|
||||
|
||||
include_directories(../libfreerdp/core)
|
||||
include_directories(../libfreerdp/gdi)
|
||||
include_directories(../libfreerdp/cache)
|
||||
include_directories(../libfreerdp/codec)
|
||||
|
||||
add_executable(test_freerdp
|
||||
test_gcc.c
|
||||
test_gcc.h
|
||||
test_mcs.c
|
||||
test_mcs.h
|
||||
test_color.c
|
||||
test_color.h
|
||||
test_bitmap.c
|
||||
test_bitmap.h
|
||||
test_gdi.c
|
||||
test_gdi.h
|
||||
test_orders.c
|
||||
test_orders.h
|
||||
test_pcap.c
|
||||
test_pcap.h
|
||||
test_ntlm.c
|
||||
test_ntlm.h
|
||||
test_license.c
|
||||
test_license.h
|
||||
test_cliprdr.c
|
||||
test_cliprdr.h
|
||||
test_drdynvc.c
|
||||
test_drdynvc.h
|
||||
test_rfx.c
|
||||
test_rfx.h
|
||||
test_nsc.c
|
||||
test_nsc.h
|
||||
test_sspi.c
|
||||
test_sspi.h
|
||||
test_freerdp.c
|
||||
test_freerdp.h
|
||||
test_rail.c
|
||||
test_rail.h
|
||||
test_mppc.c
|
||||
test_mppc.h
|
||||
test_mppc_enc.c
|
||||
test_mppc_enc.h)
|
||||
|
||||
target_link_libraries(test_freerdp ${CUNIT_LIBRARIES})
|
||||
|
||||
target_link_libraries(test_freerdp freerdp-core)
|
||||
target_link_libraries(test_freerdp freerdp-gdi)
|
||||
target_link_libraries(test_freerdp freerdp-utils)
|
||||
target_link_libraries(test_freerdp freerdp-codec)
|
||||
target_link_libraries(test_freerdp freerdp-crypto)
|
||||
|
||||
target_link_libraries(test_freerdp winpr)
|
||||
|
||||
add_test(CUnitTests ${CMAKE_SOURCE_DIR}/cunit/test_freerdp)
|
||||
|
1250
cunit/test_bitmap.c
1250
cunit/test_bitmap.c
File diff suppressed because it is too large
Load Diff
|
@ -1,26 +0,0 @@
|
|||
/**
|
||||
* FreeRDP: A Remote Desktop Protocol Implementation
|
||||
* Bitmap Unit Tests
|
||||
*
|
||||
* Copyright 2011 Jay Sorg <jay.sorg@gmail.com>
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
#include "test_freerdp.h"
|
||||
|
||||
int init_bitmap_suite(void);
|
||||
int clean_bitmap_suite(void);
|
||||
int add_bitmap_suite(void);
|
||||
|
||||
void test_bitmap(void);
|
|
@ -1,245 +0,0 @@
|
|||
/**
|
||||
* FreeRDP: A Remote Desktop Protocol Implementation
|
||||
* Clipboard Virtual Channel Unit Tests
|
||||
*
|
||||
* Copyright 2011 Vic Lee
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
#include <stdlib.h>
|
||||
#include <freerdp/freerdp.h>
|
||||
#include <freerdp/constants.h>
|
||||
#include <freerdp/channels/channels.h>
|
||||
#include <freerdp/utils/event.h>
|
||||
#include <winpr/print.h>
|
||||
#include <freerdp/client/cliprdr.h>
|
||||
|
||||
#include "test_cliprdr.h"
|
||||
|
||||
int init_cliprdr_suite(void)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
int clean_cliprdr_suite(void)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
int add_cliprdr_suite(void)
|
||||
{
|
||||
add_test_suite(cliprdr);
|
||||
|
||||
add_test_function(cliprdr);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static const BYTE test_clip_caps_data[] =
|
||||
{
|
||||
"\x07\x00\x00\x00\x10\x00\x00\x00\x01\x00\x00\x00\x01\x00\x0C\x00"
|
||||
"\x02\x00\x00\x00\x0E\x00\x00\x00"
|
||||
};
|
||||
|
||||
static const BYTE test_monitor_ready_data[] =
|
||||
{
|
||||
"\x01\x00\x00\x00\x00\x00\x00\x00"
|
||||
};
|
||||
|
||||
static const BYTE test_format_list_data[] =
|
||||
{
|
||||
"\x02\x00\x00\x00\x48\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00"
|
||||
"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
|
||||
"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\xd0\x00\x00"
|
||||
"\x48\x00\x54\x00\x4D\x00\x4C\x00\x20\x00\x46\x00\x6F\x00\x72\x00"
|
||||
"\x6D\x00\x61\x00\x74\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
|
||||
};
|
||||
|
||||
static const BYTE test_format_list_response_data[] =
|
||||
{
|
||||
"\x03\x00\x01\x00\x00\x00\x00\x00"
|
||||
};
|
||||
|
||||
static const BYTE test_data_request_data[] =
|
||||
{
|
||||
"\x04\x00\x00\x00\x04\x00\x00\x00\x01\x00\x00\x00"
|
||||
};
|
||||
|
||||
static const BYTE test_data_response_data[] =
|
||||
{
|
||||
"\x05\x00\x01\x00\x18\x00\x00\x00\x68\x00\x65\x00\x6C\x00\x6C\x00"
|
||||
"\x6F\x00\x20\x00\x77\x00\x6F\x00\x72\x00\x6c\x00\x64\x00\x00\x00"
|
||||
};
|
||||
|
||||
static int test_rdp_channel_data(freerdp* instance, int chan_id, BYTE* data, int data_size)
|
||||
{
|
||||
printf("chan_id %d data_size %d\n", chan_id, data_size);
|
||||
winpr_HexDump(data, data_size);
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int event_processed;
|
||||
|
||||
static void event_process_callback(wMessage* event)
|
||||
{
|
||||
printf("Event %d processed.\n", event->event_type);
|
||||
event_processed = 1;
|
||||
}
|
||||
|
||||
void test_cliprdr(void)
|
||||
{
|
||||
int i;
|
||||
rdpChannels* channels;
|
||||
rdpSettings settings = { 0 };
|
||||
freerdp instance = { 0 };
|
||||
wMessage* event;
|
||||
RDP_CB_FORMAT_LIST_EVENT* format_list_event;
|
||||
RDP_CB_DATA_REQUEST_EVENT* data_request_event;
|
||||
RDP_CB_DATA_RESPONSE_EVENT* data_response_event;
|
||||
|
||||
settings.Hostname = "testhost";
|
||||
instance.settings = &settings;
|
||||
instance.SendChannelData = test_rdp_channel_data;
|
||||
|
||||
channels = freerdp_channels_new();
|
||||
|
||||
freerdp_channels_load_plugin(channels, &settings, "../channels/cliprdr/cliprdr.so", NULL);
|
||||
freerdp_channels_pre_connect(channels, &instance);
|
||||
freerdp_channels_post_connect(channels, &instance);
|
||||
|
||||
/* server sends cliprdr capabilities and monitor ready PDU */
|
||||
freerdp_channels_data(&instance, 0, (char*)test_clip_caps_data, sizeof(test_clip_caps_data) - 1,
|
||||
CHANNEL_FLAG_FIRST | CHANNEL_FLAG_LAST, sizeof(test_clip_caps_data) - 1);
|
||||
|
||||
freerdp_channels_data(&instance, 0, (char*)test_monitor_ready_data, sizeof(test_monitor_ready_data) - 1,
|
||||
CHANNEL_FLAG_FIRST | CHANNEL_FLAG_LAST, sizeof(test_monitor_ready_data) - 1);
|
||||
|
||||
/* cliprdr sends clipboard_sync event to UI */
|
||||
while ((event = freerdp_channels_pop_event(channels)) == NULL)
|
||||
{
|
||||
freerdp_channels_check_fds(channels, &instance);
|
||||
}
|
||||
printf("Got event %d\n", event->event_type);
|
||||
CU_ASSERT(event->event_type == RDP_EVENT_TYPE_CB_MONITOR_READY);
|
||||
freerdp_event_free(event);
|
||||
|
||||
/* UI sends format_list event to cliprdr */
|
||||
event = freerdp_event_new(RDP_EVENT_CLASS_CLIPRDR, RDP_EVENT_TYPE_CB_FORMAT_LIST, event_process_callback, NULL);
|
||||
format_list_event = (RDP_CB_FORMAT_LIST_EVENT*) event;
|
||||
format_list_event->num_formats = 2;
|
||||
format_list_event->formats = (UINT32*) malloc(sizeof(UINT32) * 2);
|
||||
format_list_event->formats[0] = CB_FORMAT_TEXT;
|
||||
format_list_event->formats[1] = CB_FORMAT_HTML;
|
||||
event_processed = 0;
|
||||
freerdp_channels_send_event(channels, event);
|
||||
|
||||
/* cliprdr sends format list PDU to server */
|
||||
while (!event_processed)
|
||||
{
|
||||
freerdp_channels_check_fds(channels, &instance);
|
||||
}
|
||||
|
||||
/* server sends format list response PDU to cliprdr */
|
||||
freerdp_channels_data(&instance, 0, (char*)test_format_list_response_data, sizeof(test_format_list_response_data) - 1,
|
||||
CHANNEL_FLAG_FIRST | CHANNEL_FLAG_LAST, sizeof(test_format_list_response_data) - 1);
|
||||
|
||||
/* server sends format list PDU to cliprdr */
|
||||
freerdp_channels_data(&instance, 0, (char*)test_format_list_data, sizeof(test_format_list_data) - 1,
|
||||
CHANNEL_FLAG_FIRST | CHANNEL_FLAG_LAST, sizeof(test_format_list_data) - 1);
|
||||
|
||||
/* cliprdr sends format_list event to UI */
|
||||
while ((event = freerdp_channels_pop_event(channels)) == NULL)
|
||||
{
|
||||
freerdp_channels_check_fds(channels, &instance);
|
||||
}
|
||||
printf("Got event %d\n", event->event_type);
|
||||
CU_ASSERT(event->event_type == RDP_EVENT_TYPE_CB_FORMAT_LIST);
|
||||
if (event->event_type == RDP_EVENT_TYPE_CB_FORMAT_LIST)
|
||||
{
|
||||
format_list_event = (RDP_CB_FORMAT_LIST_EVENT*)event;
|
||||
for (i = 0; i < format_list_event->num_formats; i++)
|
||||
printf("Format: 0x%X\n", format_list_event->formats[i]);
|
||||
}
|
||||
freerdp_event_free(event);
|
||||
|
||||
/* server sends data request PDU to cliprdr */
|
||||
freerdp_channels_data(&instance, 0, (char*)test_data_request_data, sizeof(test_data_request_data) - 1,
|
||||
CHANNEL_FLAG_FIRST | CHANNEL_FLAG_LAST, sizeof(test_data_request_data) - 1);
|
||||
|
||||
/* cliprdr sends data request event to UI */
|
||||
while ((event = freerdp_channels_pop_event(channels)) == NULL)
|
||||
{
|
||||
freerdp_channels_check_fds(channels, &instance);
|
||||
}
|
||||
printf("Got event %d\n", event->event_type);
|
||||
CU_ASSERT(event->event_type == RDP_EVENT_TYPE_CB_DATA_REQUEST);
|
||||
if (event->event_type == RDP_EVENT_TYPE_CB_DATA_REQUEST)
|
||||
{
|
||||
data_request_event = (RDP_CB_DATA_REQUEST_EVENT*)event;
|
||||
printf("Requested format: 0x%X\n", data_request_event->format);
|
||||
}
|
||||
freerdp_event_free(event);
|
||||
|
||||
/* UI sends data response event to cliprdr */
|
||||
event = freerdp_event_new(RDP_EVENT_CLASS_CLIPRDR, RDP_EVENT_TYPE_CB_DATA_RESPONSE, event_process_callback, NULL);
|
||||
data_response_event = (RDP_CB_DATA_RESPONSE_EVENT*)event;
|
||||
data_response_event->data = (BYTE*)malloc(6);
|
||||
strcpy((char*)data_response_event->data, "hello");
|
||||
data_response_event->size = 6;
|
||||
event_processed = 0;
|
||||
freerdp_channels_send_event(channels, event);
|
||||
|
||||
/* cliprdr sends data response PDU to server */
|
||||
while (!event_processed)
|
||||
{
|
||||
freerdp_channels_check_fds(channels, &instance);
|
||||
}
|
||||
|
||||
/* UI sends data request event to cliprdr */
|
||||
event = freerdp_event_new(RDP_EVENT_CLASS_CLIPRDR, RDP_EVENT_TYPE_CB_DATA_REQUEST, event_process_callback, NULL);
|
||||
data_request_event = (RDP_CB_DATA_REQUEST_EVENT*)event;
|
||||
data_request_event->format = CB_FORMAT_UNICODETEXT;
|
||||
event_processed = 0;
|
||||
freerdp_channels_send_event(channels, event);
|
||||
|
||||
/* cliprdr sends data request PDU to server */
|
||||
while (!event_processed)
|
||||
{
|
||||
freerdp_channels_check_fds(channels, &instance);
|
||||
}
|
||||
|
||||
/* server sends data response PDU to cliprdr */
|
||||
freerdp_channels_data(&instance, 0, (char*)test_data_response_data, sizeof(test_data_response_data) - 1,
|
||||
CHANNEL_FLAG_FIRST | CHANNEL_FLAG_LAST, sizeof(test_data_response_data) - 1);
|
||||
|
||||
/* cliprdr sends data response event to UI */
|
||||
while ((event = freerdp_channels_pop_event(channels)) == NULL)
|
||||
{
|
||||
freerdp_channels_check_fds(channels, &instance);
|
||||
}
|
||||
printf("Got event %d\n", event->event_type);
|
||||
CU_ASSERT(event->event_type == RDP_EVENT_TYPE_CB_DATA_RESPONSE);
|
||||
if (event->event_type == RDP_EVENT_TYPE_CB_DATA_RESPONSE)
|
||||
{
|
||||
data_response_event = (RDP_CB_DATA_RESPONSE_EVENT*)event;
|
||||
printf("Data response size: %d\n", data_response_event->size);
|
||||
winpr_HexDump(data_response_event->data, data_response_event->size);
|
||||
}
|
||||
freerdp_event_free(event);
|
||||
|
||||
freerdp_channels_close(channels, &instance);
|
||||
freerdp_channels_free(channels);
|
||||
}
|
|
@ -1,26 +0,0 @@
|
|||
/**
|
||||
* FreeRDP: A Remote Desktop Protocol Implementation
|
||||
* Clipboard Virtual Channel Unit Tests
|
||||
*
|
||||
* Copyright 2011 Vic Lee
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
#include "test_freerdp.h"
|
||||
|
||||
int init_cliprdr_suite(void);
|
||||
int clean_cliprdr_suite(void);
|
||||
int add_cliprdr_suite(void);
|
||||
|
||||
void test_cliprdr(void);
|
|
@ -1,152 +0,0 @@
|
|||
/**
|
||||
* FreeRDP: A Remote Desktop Protocol Implementation
|
||||
* Color Conversion Unit Tests
|
||||
*
|
||||
* Copyright 2010 Marc-Andre Moreau <marcandre.moreau@gmail.com>
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <freerdp/freerdp.h>
|
||||
#include <freerdp/gdi/gdi.h>
|
||||
#include <freerdp/codec/color.h>
|
||||
#include "test_color.h"
|
||||
|
||||
int init_color_suite(void)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
int clean_color_suite(void)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
int add_color_suite(void)
|
||||
{
|
||||
add_test_suite(color);
|
||||
|
||||
add_test_function(color_GetRGB32);
|
||||
add_test_function(color_GetBGR32);
|
||||
add_test_function(color_GetRGB_565);
|
||||
add_test_function(color_GetRGB16);
|
||||
add_test_function(color_GetBGR_565);
|
||||
add_test_function(color_GetBGR16);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* GDI Color Space Conversions: http://msdn.microsoft.com/en-us/library/ff566496(VS.85).aspx */
|
||||
|
||||
void test_color_GetRGB32(void)
|
||||
{
|
||||
int r, g, b;
|
||||
UINT32 rgb32 = 0x00AABBCC;
|
||||
GetRGB32(r, g, b, rgb32);
|
||||
|
||||
CU_ASSERT(r == 0xAA);
|
||||
CU_ASSERT(g == 0xBB);
|
||||
CU_ASSERT(b == 0xCC);
|
||||
}
|
||||
|
||||
void test_color_GetBGR32(void)
|
||||
{
|
||||
int r, g, b;
|
||||
UINT32 bgr32 = 0x00CCBBAA;
|
||||
GetBGR32(r, g, b, bgr32);
|
||||
|
||||
CU_ASSERT(r == 0xAA);
|
||||
CU_ASSERT(g == 0xBB);
|
||||
CU_ASSERT(b == 0xCC);
|
||||
}
|
||||
|
||||
void test_color_GetRGB_565(void)
|
||||
{
|
||||
/*
|
||||
R: 0x15, 10101
|
||||
G: 0x33, 110011
|
||||
B: 0x1D, 11101
|
||||
|
||||
0xAE7D, 10101110 01111101
|
||||
*/
|
||||
|
||||
int r, g, b;
|
||||
UINT16 rgb16 = 0xAE7D;
|
||||
GetRGB_565(r, g, b, rgb16);
|
||||
|
||||
CU_ASSERT(r == 0x15);
|
||||
CU_ASSERT(g == 0x33);
|
||||
CU_ASSERT(b == 0x1D);
|
||||
}
|
||||
|
||||
void test_color_GetRGB16(void)
|
||||
{
|
||||
/*
|
||||
R: 0x15 -> 0xAD, 10101 -> 10101101
|
||||
G: 0x33 -> 0xCF, 110011 -> 11001111
|
||||
B: 0x1D -> 0xEF, 11101 -> 11101101
|
||||
|
||||
0xAE7D -> 0xADCFEF
|
||||
10101110 01111101 -> 10101101 11001111 11101101
|
||||
*/
|
||||
|
||||
int r, g, b;
|
||||
UINT16 rgb16 = 0xAE7D;
|
||||
GetRGB16(r, g, b, rgb16);
|
||||
|
||||
CU_ASSERT(r == 0xAD);
|
||||
CU_ASSERT(g == 0xCF);
|
||||
CU_ASSERT(b == 0xEF);
|
||||
}
|
||||
|
||||
void test_color_GetBGR_565(void)
|
||||
{
|
||||
/*
|
||||
B: 0x1D, 11101
|
||||
G: 0x33, 110011
|
||||
R: 0x15, 10101
|
||||
|
||||
0xEE75, 11101110 01110101
|
||||
*/
|
||||
|
||||
int r, g, b;
|
||||
UINT16 bgr16 = 0xEE75;
|
||||
GetBGR_565(r, g, b, bgr16);
|
||||
|
||||
CU_ASSERT(r == 0x15);
|
||||
CU_ASSERT(g == 0x33);
|
||||
CU_ASSERT(b == 0x1D);
|
||||
}
|
||||
|
||||
void test_color_GetBGR16(void)
|
||||
{
|
||||
/*
|
||||
B: 0x1D -> 0xEF, 11101 -> 11101101
|
||||
G: 0x33 -> 0xCF, 110011 -> 11001111
|
||||
R: 0x15 -> 0xAD, 10101 -> 10101101
|
||||
|
||||
0xEE75 -> 0xADCFEF
|
||||
11101110 01110101 -> 10101101 11001111 11101101
|
||||
*/
|
||||
|
||||
int r, g, b;
|
||||
UINT16 bgr16 = 0xEE75;
|
||||
GetBGR16(r, g, b, bgr16);
|
||||
|
||||
CU_ASSERT(r == 0xAD);
|
||||
CU_ASSERT(g == 0xCF);
|
||||
CU_ASSERT(b == 0xEF);
|
||||
}
|
||||
|
|
@ -1,31 +0,0 @@
|
|||
/**
|
||||
* FreeRDP: A Remote Desktop Protocol Implementation
|
||||
* Color Conversion Unit Tests
|
||||
*
|
||||
* Copyright 2010 Marc-Andre Moreau <marcandre.moreau@gmail.com>
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
#include "test_freerdp.h"
|
||||
|
||||
int init_color_suite(void);
|
||||
int clean_color_suite(void);
|
||||
int add_color_suite(void);
|
||||
|
||||
void test_color_GetRGB32(void);
|
||||
void test_color_GetBGR32(void);
|
||||
void test_color_GetRGB_565(void);
|
||||
void test_color_GetRGB16(void);
|
||||
void test_color_GetBGR_565(void);
|
||||
void test_color_GetBGR16(void);
|
|
@ -1,95 +0,0 @@
|
|||
/**
|
||||
* FreeRDP: A Remote Desktop Protocol Implementation
|
||||
* Dynamic Virtual Channel Unit Tests
|
||||
*
|
||||
* Copyright 2011 Vic Lee
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
#include <freerdp/freerdp.h>
|
||||
#include <freerdp/constants.h>
|
||||
#include <freerdp/channels/channels.h>
|
||||
#include <freerdp/utils/event.h>
|
||||
#include <winpr/print.h>
|
||||
|
||||
#include "test_drdynvc.h"
|
||||
|
||||
int init_drdynvc_suite(void)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
int clean_drdynvc_suite(void)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
int add_drdynvc_suite(void)
|
||||
{
|
||||
add_test_suite(drdynvc);
|
||||
|
||||
add_test_function(drdynvc);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static const BYTE test_capability_request_data[] =
|
||||
{
|
||||
"\x58\x00\x02\x00\x33\x33\x11\x11\x3D\x0A\xA7\x04"
|
||||
};
|
||||
|
||||
static int data_received = 0;
|
||||
|
||||
static int test_rdp_channel_data(freerdp* instance, int chan_id, BYTE* data, int data_size)
|
||||
{
|
||||
printf("chan_id %d data_size %d\n", chan_id, data_size);
|
||||
winpr_HexDump(data, data_size);
|
||||
data_received = 1;
|
||||
return 0;
|
||||
}
|
||||
|
||||
void test_drdynvc(void)
|
||||
{
|
||||
rdpChannels* chan_man;
|
||||
rdpSettings settings = { 0 };
|
||||
freerdp instance = { 0 };
|
||||
|
||||
settings.Hostname = "testhost";
|
||||
instance.settings = &settings;
|
||||
instance.SendChannelData = test_rdp_channel_data;
|
||||
|
||||
chan_man = freerdp_channels_new();
|
||||
|
||||
freerdp_channels_load_plugin(chan_man, &settings, "../channels/drdynvc/drdynvc.so", NULL);
|
||||
freerdp_channels_pre_connect(chan_man, &instance);
|
||||
freerdp_channels_post_connect(chan_man, &instance);
|
||||
|
||||
/* server sends capability request PDU */
|
||||
freerdp_channels_data(&instance, 0, (char*)test_capability_request_data, sizeof(test_capability_request_data) - 1,
|
||||
CHANNEL_FLAG_FIRST | CHANNEL_FLAG_LAST, sizeof(test_capability_request_data) - 1);
|
||||
|
||||
/* drdynvc sends capability response PDU to server */
|
||||
data_received = 0;
|
||||
while (!data_received)
|
||||
{
|
||||
freerdp_channels_check_fds(chan_man, &instance);
|
||||
}
|
||||
|
||||
freerdp_channels_close(chan_man, &instance);
|
||||
freerdp_channels_free(chan_man);
|
||||
}
|
|
@ -1,26 +0,0 @@
|
|||
/**
|
||||
* FreeRDP: A Remote Desktop Protocol Implementation
|
||||
* Dynamic Virtual Channel Unit Tests
|
||||
*
|
||||
* Copyright 2011 Vic Lee
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
#include "test_freerdp.h"
|
||||
|
||||
int init_drdynvc_suite(void);
|
||||
int clean_drdynvc_suite(void);
|
||||
int add_drdynvc_suite(void);
|
||||
|
||||
void test_drdynvc(void);
|
|
@ -1,184 +0,0 @@
|
|||
/**
|
||||
* FreeRDP: A Remote Desktop Protocol Implementation
|
||||
* FreeRDP Unit Tests
|
||||
*
|
||||
* Copyright 2010 Marc-Andre Moreau <marcandre.moreau@gmail.com>
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
#include <CUnit/Basic.h>
|
||||
|
||||
#include "test_gcc.h"
|
||||
#include "test_mcs.h"
|
||||
#include "test_color.h"
|
||||
#include "test_bitmap.h"
|
||||
#include "test_gdi.h"
|
||||
#include "test_orders.h"
|
||||
#include "test_ntlm.h"
|
||||
#include "test_license.h"
|
||||
#include "test_cliprdr.h"
|
||||
#include "test_drdynvc.h"
|
||||
#include "test_rfx.h"
|
||||
#include "test_nsc.h"
|
||||
#include "test_freerdp.h"
|
||||
#include "test_rail.h"
|
||||
#include "test_pcap.h"
|
||||
#include "test_mppc.h"
|
||||
#include "test_mppc_enc.h"
|
||||
|
||||
#define TAG __FILE__
|
||||
|
||||
void dump_data(unsigned char * p, int len, int width, char* name)
|
||||
{
|
||||
unsigned char *line = p;
|
||||
int i, thisline, offset = 0;
|
||||
|
||||
printf("\n%s[%d][%d]:\n", name, len / width, width);
|
||||
while (offset < len)
|
||||
{
|
||||
printf("%04x ", offset);
|
||||
thisline = len - offset;
|
||||
if (thisline > width)
|
||||
thisline = width;
|
||||
|
||||
for (i = 0; i < thisline; i++)
|
||||
printf("%02x ", line[i]);
|
||||
|
||||
for (; i < width; i++)
|
||||
printf(" ");
|
||||
|
||||
printf("\n");
|
||||
offset += thisline;
|
||||
line += thisline;
|
||||
}
|
||||
printf("\n");
|
||||
}
|
||||
|
||||
void assert_stream(wStream* s, BYTE* data, int length, const char* func, int line)
|
||||
{
|
||||
int i;
|
||||
int actual_length;
|
||||
BYTE* actual_data;
|
||||
|
||||
actual_data = s->buffer;
|
||||
actual_length = Stream_GetPosition(s);
|
||||
|
||||
if (actual_length != length)
|
||||
{
|
||||
printf("\n %s (%d): length mismatch, actual:%d, expected:%d\n", func, line, actual_length, length);
|
||||
|
||||
printf("\nActual:\n");
|
||||
winpr_HexDump(TAG, WLOG_ERR, actual_data, actual_length);
|
||||
|
||||
printf("Expected:\n");
|
||||
winpr_HexDump(TAG, WLOG_ERR, data, length);
|
||||
|
||||
CU_FAIL("assert_stream, length mismatch");
|
||||
return;
|
||||
}
|
||||
|
||||
for (i = 0; i < length; i++)
|
||||
{
|
||||
if (actual_data[i] != data[i])
|
||||
{
|
||||
printf("\n %s (%d): buffer mismatch:\n", func, line);
|
||||
|
||||
printf("\nActual:\n");
|
||||
winpr_HexDump(TAG, WLOG_ERR, actual_data, length);
|
||||
|
||||
printf("Expected:\n");
|
||||
winpr_HexDump(TAG, WLOG_ERR, data, length);
|
||||
|
||||
CU_FAIL("assert_stream, buffer mismatch");
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
typedef BOOL (*pInitTestSuite)(void);
|
||||
|
||||
struct _test_suite
|
||||
{
|
||||
char name[32];
|
||||
pInitTestSuite Init;
|
||||
};
|
||||
typedef struct _test_suite test_suite;
|
||||
|
||||
const static test_suite suites[] =
|
||||
{
|
||||
{ "bitmap", add_bitmap_suite },
|
||||
//{ "cliprdr", add_cliprdr_suite },
|
||||
{ "color", add_color_suite },
|
||||
//{ "drdynvc", add_drdynvc_suite },
|
||||
//{ "gcc", add_gcc_suite },
|
||||
{ "gdi", add_gdi_suite },
|
||||
{ "license", add_license_suite },
|
||||
//{ "mcs", add_mcs_suite },
|
||||
{ "mppc", add_mppc_suite },
|
||||
{ "mppc_enc", add_mppc_enc_suite },
|
||||
{ "ntlm", add_ntlm_suite },
|
||||
//{ "orders", add_orders_suite },
|
||||
{ "pcap", add_pcap_suite },
|
||||
//{ "rail", add_rail_suite },
|
||||
{ "rfx", add_rfx_suite },
|
||||
{ "nsc", add_nsc_suite }
|
||||
};
|
||||
#define N_SUITES (sizeof suites / sizeof suites[0])
|
||||
|
||||
int main(int argc, char* argv[])
|
||||
{
|
||||
int i, k;
|
||||
int status = 0;
|
||||
|
||||
if (CU_initialize_registry() != CUE_SUCCESS)
|
||||
return CU_get_error();
|
||||
|
||||
if (argc < 2)
|
||||
{
|
||||
for (k = 0; k < N_SUITES; k++)
|
||||
suites[k].Init();
|
||||
}
|
||||
else
|
||||
{
|
||||
if (!strcmp(argv[1], "-h") || !strcmp(argv[1], "--help"))
|
||||
{
|
||||
puts("Test suites:");
|
||||
for (k = 0; k < N_SUITES; k++)
|
||||
printf("\t%s\n", suites[k].name);
|
||||
printf("\nUsage: %s [suite-1] [suite-2] ...\n", argv[0]);
|
||||
return 0;
|
||||
}
|
||||
|
||||
for (i = 1; i < argc; i++)
|
||||
{
|
||||
for (k = 0; k < N_SUITES; k++)
|
||||
{
|
||||
if (!strcmp(suites[k].name, argv[i]))
|
||||
{
|
||||
suites[k].Init();
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
CU_basic_set_mode(CU_BRM_VERBOSE);
|
||||
CU_basic_run_tests();
|
||||
|
||||
status = CU_get_number_of_failure_records();
|
||||
CU_cleanup_registry();
|
||||
|
||||
return status;
|
||||
}
|
||||
|
|
@ -1,43 +0,0 @@
|
|||
/**
|
||||
* FreeRDP: A Remote Desktop Protocol Implementation
|
||||
* FreeRDP Unit Tests
|
||||
*
|
||||
* Copyright 2010 Marc-Andre Moreau <marcandre.moreau@gmail.com>
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <CUnit/CUnit.h>
|
||||
#include <freerdp/types.h>
|
||||
#include <winpr/print.h>
|
||||
#include <winpr/stream.h>
|
||||
|
||||
#define add_test_suite(name) \
|
||||
CU_pSuite pSuite; \
|
||||
pSuite = CU_add_suite(#name, init_##name##_suite, clean_##name##_suite); \
|
||||
if (pSuite == NULL) { \
|
||||
CU_cleanup_registry(); return CU_get_error(); \
|
||||
}
|
||||
|
||||
#define add_test_function(name) \
|
||||
if (CU_add_test(pSuite, #name, test_##name) == NULL) { \
|
||||
CU_cleanup_registry(); return CU_get_error(); \
|
||||
}
|
||||
|
||||
void dump_data(unsigned char * p, int len, int width, char* name);
|
||||
void assert_stream(wStream* s, BYTE* data, int length, const char* func, int line);
|
||||
|
||||
#define ASSERT_STREAM(_s, _data, _length) assert_stream(_s, _data, _length, __FUNCTION__, __LINE__)
|
215
cunit/test_gcc.c
215
cunit/test_gcc.c
|
@ -1,215 +0,0 @@
|
|||
/**
|
||||
* FreeRDP: A Remote Desktop Protocol Implementation
|
||||
* T.124 Generic Conference Control (GCC) Unit Tests
|
||||
*
|
||||
* Copyright 2011 Marc-Andre Moreau <marcandre.moreau@gmail.com>
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
#include "gcc.h"
|
||||
|
||||
#include <freerdp/freerdp.h>
|
||||
#include <winpr/print.h>
|
||||
#include <winpr/stream.h>
|
||||
|
||||
#include "test_gcc.h"
|
||||
|
||||
int init_gcc_suite(void)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
int clean_gcc_suite(void)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
int add_gcc_suite(void)
|
||||
{
|
||||
add_test_suite(gcc);
|
||||
|
||||
add_test_function(gcc_write_conference_create_request);
|
||||
add_test_function(gcc_write_client_core_data);
|
||||
add_test_function(gcc_write_client_security_data);
|
||||
add_test_function(gcc_write_client_cluster_data);
|
||||
add_test_function(gcc_write_client_network_data);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
BYTE gcc_user_data[284] =
|
||||
"\x01\xc0\xd8\x00\x04\x00\x08\x00\x00\x05\x00\x04\x01\xCA\x03\xAA"
|
||||
"\x09\x04\x00\x00\xCE\x0E\x00\x00\x45\x00\x4c\x00\x54\x00\x4f\x00"
|
||||
"\x4e\x00\x53\x00\x2d\x00\x44\x00\x45\x00\x56\x00\x32\x00\x00\x00"
|
||||
"\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00"
|
||||
"\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
|
||||
"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
|
||||
"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
|
||||
"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
|
||||
"\x00\x00\x00\x00\x01\xCA\x01\x00\x00\x00\x00\x00\x18\x00\x07\x00"
|
||||
"\x01\x00\x36\x00\x39\x00\x37\x00\x31\x00\x32\x00\x2d\x00\x37\x00"
|
||||
"\x38\x00\x33\x00\x2d\x00\x30\x00\x33\x00\x35\x00\x37\x00\x39\x00"
|
||||
"\x37\x00\x34\x00\x2d\x00\x34\x00\x32\x00\x37\x00\x31\x00\x34\x00"
|
||||
"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
|
||||
"\x00\x00\x00\x00\x00\x00\x00\x00\x04\xC0\x0C\x00\x0D\x00\x00\x00"
|
||||
"\x00\x00\x00\x00\x02\xC0\x0C\x00\x1B\x00\x00\x00\x00\x00\x00\x00"
|
||||
"\x03\xC0\x2C\x00\x03\x00\x00\x00\x72\x64\x70\x64\x72\x00\x00\x00"
|
||||
"\x00\x00\x80\x80\x63\x6c\x69\x70\x72\x64\x72\x00\x00\x00\xA0\xC0"
|
||||
"\x72\x64\x70\x73\x6e\x64\x00\x00\x00\x00\x00\xc0";
|
||||
|
||||
BYTE gcc_conference_create_request_expected[307] =
|
||||
"\x00\x05\x00\x14\x7C\x00\x01\x81\x2A\x00\x08\x00\x10\x00\x01\xC0"
|
||||
"\x00\x44\x75\x63\x61\x81\x1c\x01\xc0\xd8\x00\x04\x00\x08\x00\x00"
|
||||
"\x05\x00\x04\x01\xCA\x03\xAA\x09\x04\x00\x00\xCE\x0E\x00\x00\x45"
|
||||
"\x00\x4c\x00\x54\x00\x4f\x00\x4e\x00\x53\x00\x2d\x00\x44\x00\x45"
|
||||
"\x00\x56\x00\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04"
|
||||
"\x00\x00\x00\x00\x00\x00\x00\x0c\x00\x00\x00\x00\x00\x00\x00\x00"
|
||||
"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
|
||||
"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
|
||||
"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
|
||||
"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\xCA\x01\x00\x00"
|
||||
"\x00\x00\x00\x18\x00\x07\x00\x01\x00\x36\x00\x39\x00\x37\x00\x31"
|
||||
"\x00\x32\x00\x2d\x00\x37\x00\x38\x00\x33\x00\x2d\x00\x30\x00\x33"
|
||||
"\x00\x35\x00\x37\x00\x39\x00\x37\x00\x34\x00\x2d\x00\x34\x00\x32"
|
||||
"\x00\x37\x00\x31\x00\x34\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
|
||||
"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04"
|
||||
"\xC0\x0C\x00\x0D\x00\x00\x00\x00\x00\x00\x00\x02\xC0\x0C\x00\x1B"
|
||||
"\x00\x00\x00\x00\x00\x00\x00\x03\xC0\x2C\x00\x03\x00\x00\x00\x72"
|
||||
"\x64\x70\x64\x72\x00\x00\x00\x00\x00\x80\x80\x63\x6c\x69\x70\x72"
|
||||
"\x64\x72\x00\x00\x00\xA0\xC0\x72\x64\x70\x73\x6e\x64\x00\x00\x00"
|
||||
"\x00\x00\xc0";
|
||||
|
||||
void test_gcc_write_conference_create_request(void)
|
||||
{
|
||||
wStream* s;
|
||||
wStream user_data;
|
||||
|
||||
user_data.buffer = gcc_user_data;
|
||||
user_data.capacity = sizeof(gcc_user_data);
|
||||
user_data.pointer = user_data.buffer + user_data.capacity;
|
||||
|
||||
s = stream_new(sizeof(gcc_conference_create_request_expected));
|
||||
|
||||
gcc_write_conference_create_request(s, &user_data);
|
||||
ASSERT_STREAM(s, (BYTE*) gcc_conference_create_request_expected, sizeof(gcc_conference_create_request_expected));
|
||||
}
|
||||
|
||||
BYTE gcc_client_core_data_expected[216] =
|
||||
"\x01\xc0\xd8\x00\x04\x00\x08\x00\x00\x05\x00\x04\x01\xCA\x03\xAA"
|
||||
"\x09\x04\x00\x00\xCE\x0E\x00\x00\x45\x00\x4c\x00\x54\x00\x4f\x00"
|
||||
"\x4e\x00\x53\x00\x2d\x00\x44\x00\x45\x00\x56\x00\x32\x00\x00\x00"
|
||||
"\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00"
|
||||
"\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
|
||||
"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
|
||||
"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
|
||||
"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
|
||||
"\x00\x00\x00\x00\x01\xCA\x01\x00\x00\x00\x00\x00\x18\x00\x07\x00"
|
||||
"\x01\x00\x36\x00\x39\x00\x37\x00\x31\x00\x32\x00\x2d\x00\x37\x00"
|
||||
"\x38\x00\x33\x00\x2d\x00\x30\x00\x33\x00\x35\x00\x37\x00\x39\x00"
|
||||
"\x37\x00\x34\x00\x2d\x00\x34\x00\x32\x00\x37\x00\x31\x00\x34\x00"
|
||||
"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
|
||||
"\x00\x00\x00\x00\x00\x00\x00\x00";
|
||||
|
||||
void test_gcc_write_client_core_data(void)
|
||||
{
|
||||
wStream* s;
|
||||
rdpSettings* settings;
|
||||
|
||||
s = stream_new(512);
|
||||
settings = freerdp_settings_new(NULL);
|
||||
|
||||
settings->width = 1280;
|
||||
settings->height = 1024;
|
||||
settings->rdp_version = 5;
|
||||
settings->color_depth = 24;
|
||||
settings->kbd_layout = 0x409;
|
||||
settings->kbd_type = 0x04;
|
||||
settings->kbd_fn_keys = 12;
|
||||
settings->client_build = 3790;
|
||||
strcpy(settings->ClientHostname, "ELTONS-DEV2");
|
||||
strcpy(settings->ClientProductId, "69712-783-0357974-42714");
|
||||
|
||||
gcc_write_client_core_data(s, settings);
|
||||
|
||||
ASSERT_STREAM(s, (BYTE*) gcc_client_core_data_expected, sizeof(gcc_client_core_data_expected));
|
||||
}
|
||||
|
||||
BYTE gcc_client_security_data_expected[12] =
|
||||
"\x02\xC0\x0C\x00\x1B\x00\x00\x00\x00\x00\x00\x00";
|
||||
|
||||
void test_gcc_write_client_security_data(void)
|
||||
{
|
||||
wStream* s;
|
||||
rdpSettings* settings;
|
||||
|
||||
s = stream_new(12);
|
||||
settings = freerdp_settings_new(NULL);
|
||||
|
||||
settings->DisableEncryption = 1; /* turn on encryption */
|
||||
settings->EncryptionMethods =
|
||||
ENCRYPTION_METHOD_40BIT |
|
||||
ENCRYPTION_METHOD_56BIT |
|
||||
ENCRYPTION_METHOD_128BIT |
|
||||
ENCRYPTION_METHOD_FIPS;
|
||||
|
||||
gcc_write_client_security_data(s, settings);
|
||||
|
||||
ASSERT_STREAM(s, (BYTE*) gcc_client_security_data_expected, sizeof(gcc_client_security_data_expected));
|
||||
}
|
||||
|
||||
BYTE gcc_client_cluster_data_expected[12] =
|
||||
"\x04\xC0\x0C\x00\x0D\x00\x00\x00\x00\x00\x00\x00";
|
||||
|
||||
void test_gcc_write_client_cluster_data(void)
|
||||
{
|
||||
wStream* s;
|
||||
rdpSettings* settings;
|
||||
|
||||
s = stream_new(12);
|
||||
settings = freerdp_settings_new(NULL);
|
||||
|
||||
gcc_write_client_cluster_data(s, settings);
|
||||
|
||||
ASSERT_STREAM(s, (BYTE*) gcc_client_cluster_data_expected, sizeof(gcc_client_cluster_data_expected));
|
||||
}
|
||||
|
||||
BYTE gcc_client_network_data_expected[44] =
|
||||
"\x03\xC0\x2C\x00\x03\x00\x00\x00\x72\x64\x70\x64\x72\x00\x00\x00"
|
||||
"\x00\x00\x80\x80\x63\x6c\x69\x70\x72\x64\x72\x00\x00\x00\xA0\xC0"
|
||||
"\x72\x64\x70\x73\x6e\x64\x00\x00\x00\x00\x00\xc0";
|
||||
|
||||
void test_gcc_write_client_network_data(void)
|
||||
{
|
||||
wStream* s;
|
||||
rdpSettings* settings;
|
||||
|
||||
s = stream_new(44);
|
||||
settings = freerdp_settings_new(NULL);
|
||||
|
||||
settings->ChannelCount = 3;
|
||||
memset(settings->ChannelDefArray, 0, sizeof(rdpChannel) * settings->ChannelCount);
|
||||
|
||||
strcpy(settings->ChannelDefArray[0].Name, "rdpdr");
|
||||
settings->ChannelDefArray[0].options = 0x80800000;
|
||||
|
||||
strcpy(settings->ChannelDefArray[1].Name, "cliprdr");
|
||||
settings->ChannelDefArray[1].options = 0xc0A00000;
|
||||
|
||||
strcpy(settings->ChannelDefArray[2].Name, "rdpsnd");
|
||||
settings->ChannelDefArray[2].options = 0xc0000000;
|
||||
|
||||
gcc_write_client_network_data(s, settings);
|
||||
|
||||
ASSERT_STREAM(s, (BYTE*) gcc_client_network_data_expected, sizeof(gcc_client_network_data_expected));
|
||||
}
|
|
@ -1,30 +0,0 @@
|
|||
/**
|
||||
* FreeRDP: A Remote Desktop Protocol Implementation
|
||||
* T.124 Generic Conference Control (GCC) Unit Tests
|
||||
*
|
||||
* Copyright 2011 Marc-Andre Moreau <marcandre.moreau@gmail.com>
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
#include "test_freerdp.h"
|
||||
|
||||
int init_gcc_suite(void);
|
||||
int clean_gcc_suite(void);
|
||||
int add_gcc_suite(void);
|
||||
|
||||
void test_gcc_write_conference_create_request(void);
|
||||
void test_gcc_write_client_core_data(void);
|
||||
void test_gcc_write_client_security_data(void);
|
||||
void test_gcc_write_client_cluster_data(void);
|
||||
void test_gcc_write_client_network_data(void);
|
2991
cunit/test_gdi.c
2991
cunit/test_gdi.c
File diff suppressed because it is too large
Load Diff
|
@ -1,47 +0,0 @@
|
|||
/**
|
||||
* FreeRDP: A Remote Desktop Protocol Implementation
|
||||
* GDI Unit Tests
|
||||
*
|
||||
* Copyright 2010 Marc-Andre Moreau <marcandre.moreau@gmail.com>
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
#include "test_freerdp.h"
|
||||
|
||||
int init_gdi_suite(void);
|
||||
int clean_gdi_suite(void);
|
||||
int add_gdi_suite(void);
|
||||
|
||||
void test_gdi_GetDC(void);
|
||||
void test_gdi_CreateCompatibleDC(void);
|
||||
void test_gdi_CreateBitmap(void);
|
||||
void test_gdi_CreateCompatibleBitmap(void);
|
||||
void test_gdi_CreatePen(void);
|
||||
void test_gdi_CreateSolidBrush(void);
|
||||
void test_gdi_CreatePatternBrush(void);
|
||||
void test_gdi_CreateRectRgn(void);
|
||||
void test_gdi_CreateRect(void);
|
||||
void test_gdi_GetPixel(void);
|
||||
void test_gdi_SetPixel(void);
|
||||
void test_gdi_SetROP2(void);
|
||||
void test_gdi_MoveToEx(void);
|
||||
void test_gdi_LineTo(void);
|
||||
void test_gdi_Ellipse(void);
|
||||
void test_gdi_PtInRect(void);
|
||||
void test_gdi_FillRect(void);
|
||||
void test_gdi_BitBlt_32bpp(void);
|
||||
void test_gdi_BitBlt_16bpp(void);
|
||||
void test_gdi_BitBlt_8bpp(void);
|
||||
void test_gdi_ClipCoords(void);
|
||||
void test_gdi_InvalidateRegion(void);
|
|
@ -1,499 +0,0 @@
|
|||
/**
|
||||
* FreeRDP: A Remote Desktop Protocol Implementation
|
||||
* Licensing Unit Tests
|
||||
*
|
||||
* Copyright 2011 Marc-Andre Moreau <marcandre.moreau@gmail.com>
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
#include "license.h"
|
||||
|
||||
#include <freerdp/freerdp.h>
|
||||
#include <winpr/print.h>
|
||||
#include <winpr/stream.h>
|
||||
|
||||
#include "test_license.h"
|
||||
|
||||
rdpRdp* rdp;
|
||||
rdpLicense* license;
|
||||
|
||||
int init_license_suite(void)
|
||||
{
|
||||
rdp = rdp_new(NULL);
|
||||
license = rdp->license;
|
||||
return 0;
|
||||
}
|
||||
|
||||
int clean_license_suite(void)
|
||||
{
|
||||
rdp_free(rdp);
|
||||
return 0;
|
||||
}
|
||||
|
||||
int add_license_suite(void)
|
||||
{
|
||||
add_test_suite(license);
|
||||
|
||||
add_test_function(license);
|
||||
//add_test_function(license_generate_keys);
|
||||
//add_test_function(license_encrypt_premaster_secret);
|
||||
add_test_function(license_decrypt_platform_challenge);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* Server License Request (2200 bytes) */
|
||||
|
||||
BYTE server_license_request[2200] =
|
||||
"\x01\x03\x98\x08\x84\xef\xae\x20\xb1\xd5\x9e\x36\x49\x1a\xe8\x2e"
|
||||
"\x0a\x99\x89\xac\x49\xa6\x47\x4f\x33\x9b\x5a\xb9\x95\x03\xa6\xc6"
|
||||
"\xc2\x3c\x3f\x61\x00\x00\x06\x00\x2c\x00\x00\x00\x4d\x00\x69\x00"
|
||||
"\x63\x00\x72\x00\x6f\x00\x73\x00\x6f\x00\x66\x00\x74\x00\x20\x00"
|
||||
"\x43\x00\x6f\x00\x72\x00\x70\x00\x6f\x00\x72\x00\x61\x00\x74\x00"
|
||||
"\x69\x00\x6f\x00\x6e\x00\x00\x00\x08\x00\x00\x00\x41\x00\x30\x00"
|
||||
"\x32\x00\x00\x00\x0d\x00\x04\x00\x01\x00\x00\x00\x03\x00\x12\x08"
|
||||
"\x02\x00\x00\x80\x02\x00\x00\x00\xf5\x02\x00\x00\x30\x82\x02\xf1"
|
||||
"\x30\x82\x01\xdd\xa0\x03\x02\x01\x02\x02\x08\x01\x9e\x24\xa2\xf2"
|
||||
"\xae\x90\x80\x30\x09\x06\x05\x2b\x0e\x03\x02\x1d\x05\x00\x30\x32"
|
||||
"\x31\x30\x30\x13\x06\x03\x55\x04\x03\x1e\x0c\x00\x52\x00\x4f\x00"
|
||||
"\x44\x00\x45\x00\x4e\x00\x54\x30\x19\x06\x03\x55\x04\x07\x1e\x12"
|
||||
"\x00\x57\x00\x4f\x00\x52\x00\x4b\x00\x47\x00\x52\x00\x4f\x00\x55"
|
||||
"\x00\x50\x30\x1e\x17\x0d\x37\x30\x30\x35\x32\x37\x30\x31\x31\x31"
|
||||
"\x30\x33\x5a\x17\x0d\x34\x39\x30\x35\x32\x37\x30\x31\x31\x31\x30"
|
||||
"\x33\x5a\x30\x32\x31\x30\x30\x13\x06\x03\x55\x04\x03\x1e\x0c\x00"
|
||||
"\x52\x00\x4f\x00\x44\x00\x45\x00\x4e\x00\x54\x30\x19\x06\x03\x55"
|
||||
"\x04\x07\x1e\x12\x00\x57\x00\x4f\x00\x52\x00\x4b\x00\x47\x00\x52"
|
||||
"\x00\x4f\x00\x55\x00\x50\x30\x82\x01\x22\x30\x0d\x06\x09\x2a\x86"
|
||||
"\x48\x86\xf7\x0d\x01\x01\x01\x05\x00\x03\x82\x01\x0f\x00\x30\x82"
|
||||
"\x01\x0a\x02\x82\x01\x01\x00\x88\xad\x7c\x8f\x8b\x82\x76\x5a\xbd"
|
||||
"\x8f\x6f\x62\x18\xe1\xd9\xaa\x41\xfd\xed\x68\x01\xc6\x34\x35\xb0"
|
||||
"\x29\x04\xca\x4a\x4a\x1c\x7e\x80\x14\xf7\x8e\x77\xb8\x25\xff\x16"
|
||||
"\x47\x6f\xbd\xe2\x34\x3d\x2e\x02\xb9\x53\xe4\x33\x75\xad\x73\x28"
|
||||
"\x80\xa0\x4d\xfc\x6c\xc0\x22\x53\x1b\x2c\xf8\xf5\x01\x60\x19\x7e"
|
||||
"\x79\x19\x39\x8d\xb5\xce\x39\x58\xdd\x55\x24\x3b\x55\x7b\x43\xc1"
|
||||
"\x7f\x14\x2f\xb0\x64\x3a\x54\x95\x2b\x88\x49\x0c\x61\x2d\xac\xf8"
|
||||
"\x45\xf5\xda\x88\x18\x5f\xae\x42\xf8\x75\xc7\x26\x6d\xb5\xbb\x39"
|
||||
"\x6f\xcc\x55\x1b\x32\x11\x38\x8d\xe4\xe9\x44\x84\x11\x36\xa2\x61"
|
||||
"\x76\xaa\x4c\xb4\xe3\x55\x0f\xe4\x77\x8e\xde\xe3\xa9\xea\xb7\x41"
|
||||
"\x94\x00\x58\xaa\xc9\x34\xa2\x98\xc6\x01\x1a\x76\x14\x01\xa8\xdc"
|
||||
"\x30\x7c\x77\x5a\x20\x71\x5a\xa2\x3f\xaf\x13\x7e\xe8\xfd\x84\xa2"
|
||||
"\x5b\xcf\x25\xe9\xc7\x8f\xa8\xf2\x8b\x84\xc7\x04\x5e\x53\x73\x4e"
|
||||
"\x0e\x89\xa3\x3c\xe7\x68\x5c\x24\xb7\x80\x53\x3c\x54\xc8\xc1\x53"
|
||||
"\xaa\x71\x71\x3d\x36\x15\xd6\x6a\x9d\x7d\xde\xae\xf9\xe6\xaf\x57"
|
||||
"\xae\xb9\x01\x96\x5d\xe0\x4d\xcd\xed\xc8\xd7\xf3\x01\x03\x38\x10"
|
||||
"\xbe\x7c\x42\x67\x01\xa7\x23\x02\x03\x01\x00\x01\xa3\x13\x30\x11"
|
||||
"\x30\x0f\x06\x03\x55\x1d\x13\x04\x08\x30\x06\x01\x01\xff\x02\x01"
|
||||
"\x00\x30\x09\x06\x05\x2b\x0e\x03\x02\x1d\x05\x00\x03\x82\x01\x01"
|
||||
"\x00\x81\xdd\xd2\xd3\x33\xd4\xa3\xb6\x8e\x6e\x7d\x9f\xfd\x73\x9f"
|
||||
"\x31\x0b\xdd\x42\x82\x3f\x7e\x21\xdf\x28\xcc\x59\xca\x6a\xc0\xa9"
|
||||
"\x3d\x30\x7d\xe1\x91\xdb\x77\x6b\x8b\x10\xe6\xfd\xbc\x3c\xa3\x58"
|
||||
"\x48\xc2\x36\xdd\xa0\x0b\xf5\x8e\x13\xda\x7b\x04\x08\x44\xb4\xf2"
|
||||
"\xa8\x0d\x1e\x0b\x1d\x1a\x3f\xf9\x9b\x4b\x5a\x54\xc5\xb3\xb4\x03"
|
||||
"\x93\x75\xb3\x72\x5c\x3d\xcf\x63\x0f\x15\xe1\x64\x58\xde\x52\x8d"
|
||||
"\x97\x79\x0e\xa4\x34\xd5\x66\x05\x58\xb8\x6e\x79\xb2\x09\x86\xd5"
|
||||
"\xf0\xed\xc4\x6b\x4c\xab\x02\xb8\x16\x5f\x3b\xed\x88\x5f\xd1\xde"
|
||||
"\x44\xe3\x73\x47\x21\xf7\x03\xce\xe1\x6d\x10\x0f\x95\xcf\x7c\xa2"
|
||||
"\x7a\xa6\xbf\x20\xdb\xe1\x93\x04\xc8\x5e\x6a\xbe\xc8\x01\x5d\x27"
|
||||
"\xb2\x03\x0f\x66\x75\xe7\xcb\xea\x8d\x4e\x98\x9d\x22\xed\x28\x40"
|
||||
"\xd2\x7d\xa4\x4b\xef\xcc\xbf\x01\x2a\x6d\x3a\x3e\xbe\x47\x38\xf8"
|
||||
"\xea\xa4\xc6\x30\x1d\x5e\x25\xcf\xfb\xe8\x3d\x42\xdd\x29\xe8\x99"
|
||||
"\x89\x9e\xbf\x39\xee\x77\x09\xd9\x3e\x8b\x52\x36\xb6\xbb\x8b\xbd"
|
||||
"\x0d\xb2\x52\xaa\x2c\xcf\x38\x4e\x4d\xcf\x1d\x6d\x5d\x25\x17\xac"
|
||||
"\x2c\xf6\xf0\x65\x5a\xc9\xfe\x31\x53\xb4\xf0\x0c\x94\x4e\x0d\x54"
|
||||
"\x8e\xfd\x04\x00\x00\x30\x82\x04\xf9\x30\x82\x03\xe5\xa0\x03\x02"
|
||||
"\x01\x02\x02\x05\x01\x00\x00\x00\x02\x30\x09\x06\x05\x2b\x0e\x03"
|
||||
"\x02\x1d\x05\x00\x30\x32\x31\x30\x30\x13\x06\x03\x55\x04\x03\x1e"
|
||||
"\x0c\x00\x52\x00\x4f\x00\x44\x00\x45\x00\x4e\x00\x54\x30\x19\x06"
|
||||
"\x03\x55\x04\x07\x1e\x12\x00\x57\x00\x4f\x00\x52\x00\x4b\x00\x47"
|
||||
"\x00\x52\x00\x4f\x00\x55\x00\x50\x30\x1e\x17\x0d\x30\x37\x30\x35"
|
||||
"\x32\x36\x31\x32\x34\x35\x35\x33\x5a\x17\x0d\x33\x38\x30\x31\x31"
|
||||
"\x39\x30\x33\x31\x34\x30\x37\x5a\x30\x81\x92\x31\x81\x8f\x30\x23"
|
||||
"\x06\x03\x55\x04\x03\x1e\x1c\x00\x6e\x00\x63\x00\x61\x00\x6c\x00"
|
||||
"\x72\x00\x70\x00\x63\x00\x3a\x00\x52\x00\x4f\x00\x44\x00\x45\x00"
|
||||
"\x4e\x00\x54\x30\x23\x06\x03\x55\x04\x07\x1e\x1c\x00\x6e\x00\x63"
|
||||
"\x00\x61\x00\x6c\x00\x72\x00\x70\x00\x63\x00\x3a\x00\x52\x00\x4f"
|
||||
"\x00\x44\x00\x45\x00\x4e\x00\x54\x30\x43\x06\x03\x55\x04\x05\x1e"
|
||||
"\x3c\x00\x31\x00\x42\x00\x63\x00\x4b\x00\x65\x00\x62\x00\x68\x00"
|
||||
"\x70\x00\x58\x00\x5a\x00\x74\x00\x4c\x00\x71\x00\x4f\x00\x37\x00"
|
||||
"\x53\x00\x51\x00\x6e\x00\x42\x00\x70\x00\x52\x00\x66\x00\x75\x00"
|
||||
"\x64\x00\x64\x00\x64\x00\x59\x00\x3d\x00\x0d\x00\x0a\x30\x82\x01"
|
||||
"\x1e\x30\x09\x06\x05\x2b\x0e\x03\x02\x0f\x05\x00\x03\x82\x01\x0f"
|
||||
"\x00\x30\x82\x01\x0a\x02\x82\x01\x01\x00\xc8\x90\x6b\xf0\xc6\x58"
|
||||
"\x81\xa6\x89\x1c\x0e\xf2\xf6\xd9\x82\x12\x71\xa5\x6e\x51\xdb\xe0"
|
||||
"\x32\x66\xaa\x91\x77\x0e\x88\xab\x44\xb7\xd3\x97\xda\x78\x8f\x0e"
|
||||
"\x44\x26\x46\x7f\x16\xd4\xc6\x63\xeb\xca\x55\xe5\x4e\x8b\x2d\xa6"
|
||||
"\x6d\x83\x95\xa7\xa8\x6a\xfa\xd0\xbe\x26\x80\xae\xab\x0a\x64\x90"
|
||||
"\x32\x8c\xdf\x5c\xf8\xf9\xd0\x7e\xd1\x6b\x3a\x29\x7e\x7d\xbd\x02"
|
||||
"\xa3\x86\x6c\xfd\xa5\x35\x71\xda\x21\xb4\xee\xa4\x97\xf3\xa8\xb2"
|
||||
"\x12\xdb\xa4\x27\x57\x36\xc9\x08\x22\x5c\x54\xf7\x99\x7b\xa3\x2f"
|
||||
"\xb8\x5c\xd5\x16\xb8\x19\x27\x6b\x71\x97\x14\x5b\xe8\x1f\x23\xe8"
|
||||
"\x5c\xb8\x1b\x73\x4b\x6e\x7a\x03\x13\xff\x97\xe9\x62\xb9\x4a\xa0"
|
||||
"\x51\x23\xc3\x6c\x32\x3e\x02\xf2\x63\x97\x23\x1c\xc5\x78\xd8\xfc"
|
||||
"\xb7\x07\x4b\xb0\x56\x0f\x74\xdf\xc5\x56\x28\xe4\x96\xfd\x20\x8e"
|
||||
"\x65\x5a\xe6\x45\xed\xc1\x05\x3e\xab\x58\x55\x40\xaf\xe2\x47\xa0"
|
||||
"\x4c\x49\xa3\x8d\x39\xe3\x66\x5f\x93\x33\x6d\xf8\x5f\xc5\x54\xe5"
|
||||
"\xfb\x57\x3a\xde\x45\x12\xb5\xc7\x05\x4b\x88\x1f\xb4\x35\x0f\x7c"
|
||||
"\xc0\x75\x17\xc6\x67\xdd\x48\x80\xcb\x0a\xbe\x9d\xf6\x93\x60\x65"
|
||||
"\x34\xeb\x97\xaf\x65\x6d\xdf\xbf\x6f\x5b\x02\x03\x01\x00\x01\xa3"
|
||||
"\x82\x01\xbf\x30\x82\x01\xbb\x30\x14\x06\x09\x2b\x06\x01\x04\x01"
|
||||
"\x82\x37\x12\x04\x01\x01\xff\x04\x04\x01\x00\x05\x00\x30\x3c\x06"
|
||||
"\x09\x2b\x06\x01\x04\x01\x82\x37\x12\x02\x01\x01\xff\x04\x2c\x4d"
|
||||
"\x00\x69\x00\x63\x00\x72\x00\x6f\x00\x73\x00\x6f\x00\x66\x00\x74"
|
||||
"\x00\x20\x00\x43\x00\x6f\x00\x72\x00\x70\x00\x6f\x00\x72\x00\x61"
|
||||
"\x00\x74\x00\x69\x00\x6f\x00\x6e\x00\x00\x00\x30\x81\xcd\x06\x09"
|
||||
"\x2b\x06\x01\x04\x01\x82\x37\x12\x05\x01\x01\xff\x04\x81\xbc\x00"
|
||||
"\x30\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x09\x04\x00\x00\x1c"
|
||||
"\x00\x4a\x00\x66\x00\x4a\x00\xb0\x00\x01\x00\x33\x00\x64\x00\x32"
|
||||
"\x00\x36\x00\x37\x00\x39\x00\x35\x00\x34\x00\x2d\x00\x65\x00\x65"
|
||||
"\x00\x62\x00\x37\x00\x2d\x00\x31\x00\x31\x00\x64\x00\x31\x00\x2d"
|
||||
"\x00\x62\x00\x39\x00\x34\x00\x65\x00\x2d\x00\x30\x00\x30\x00\x63"
|
||||
"\x00\x30\x00\x34\x00\x66\x00\x61\x00\x33\x00\x30\x00\x38\x00\x30"
|
||||
"\x00\x64\x00\x00\x00\x33\x00\x64\x00\x32\x00\x36\x00\x37\x00\x39"
|
||||
"\x00\x35\x00\x34\x00\x2d\x00\x65\x00\x65\x00\x62\x00\x37\x00\x2d"
|
||||
"\x00\x31\x00\x31\x00\x64\x00\x31\x00\x2d\x00\x62\x00\x39\x00\x34"
|
||||
"\x00\x65\x00\x2d\x00\x30\x00\x30\x00\x63\x00\x30\x00\x34\x00\x66"
|
||||
"\x00\x61\x00\x33\x00\x30\x00\x38\x00\x30\x00\x64\x00\x00\x00\x00"
|
||||
"\x00\x00\x10\x00\x80\x64\x00\x00\x00\x00\x00\x30\x6e\x06\x09\x2b"
|
||||
"\x06\x01\x04\x01\x82\x37\x12\x06\x01\x01\xff\x04\x5e\x00\x30\x00"
|
||||
"\x00\x00\x00\x0e\x00\x3e\x00\x52\x00\x4f\x00\x44\x00\x45\x00\x4e"
|
||||
"\x00\x54\x00\x00\x00\x37\x00\x38\x00\x34\x00\x34\x00\x30\x00\x2d"
|
||||
"\x00\x30\x00\x30\x00\x36\x00\x2d\x00\x35\x00\x38\x00\x36\x00\x37"
|
||||
"\x00\x30\x00\x34\x00\x35\x00\x2d\x00\x37\x00\x30\x00\x33\x00\x34"
|
||||
"\x00\x37\x00\x00\x00\x57\x00\x4f\x00\x52\x00\x4b\x00\x47\x00\x52"
|
||||
"\x00\x4f\x00\x55\x00\x50\x00\x00\x00\x00\x00\x30\x25\x06\x03\x55"
|
||||
"\x1d\x23\x01\x01\xff\x04\x1b\x30\x19\xa1\x10\xa4\x0e\x52\x00\x4f"
|
||||
"\x00\x44\x00\x45\x00\x4e\x00\x54\x00\x00\x00\x82\x05\x01\x00\x00"
|
||||
"\x00\x02\x30\x09\x06\x05\x2b\x0e\x03\x02\x1d\x05\x00\x03\x82\x01"
|
||||
"\x01\x00\x2e\xeb\xc7\x0d\xb8\x1d\x47\x11\x9d\x09\x88\x9b\x51\xdc"
|
||||
"\x45\xdd\x56\x51\xe2\xd1\x23\x11\x39\x9b\x2d\xda\xc7\xfe\x7a\xd7"
|
||||
"\x84\xe3\x3d\x54\x77\x97\x4d\x19\x92\x30\x64\xa0\x47\xc6\x2f\x6d"
|
||||
"\x93\xd2\x64\x7c\x76\xc8\x26\x45\xad\x5a\x44\x54\xea\xf6\x4b\x28"
|
||||
"\x77\x1f\x77\xea\xec\x74\x02\x38\x68\x9e\x79\x14\x72\x83\x34\x74"
|
||||
"\x62\xd2\xc1\x0c\xa4\x0b\xf2\xa9\xb0\x38\xbb\x7c\xd0\xae\xbe\xbf"
|
||||
"\x74\x47\x16\xa0\xa2\xd3\xfc\x1d\xb9\xba\x26\x10\x06\xef\xba\x1d"
|
||||
"\x43\x01\x4e\x4e\x6f\x56\xca\xe0\xee\xd0\xf9\x4e\xa6\x62\x63\xff"
|
||||
"\xda\x0b\xc9\x15\x61\x6c\xed\x6b\x0b\xc4\x58\x53\x86\x0f\x8c\x0c"
|
||||
"\x1a\x2e\xdf\xc1\xf2\x43\x48\xd4\xaf\x0a\x78\x36\xb2\x51\x32\x28"
|
||||
"\x6c\xc2\x75\x79\x3f\x6e\x99\x66\x88\x3e\x34\xd3\x7f\x6d\x9d\x07"
|
||||
"\xe4\x6b\xeb\x84\xe2\x0a\xbb\xca\x7d\x3a\x40\x71\xb0\xbe\x47\x9f"
|
||||
"\x12\x58\x31\x61\x2b\x9b\x4a\x9a\x49\x8f\xe5\xb4\x0c\xf5\x04\x4d"
|
||||
"\x3c\xce\xbc\xd2\x79\x15\xd9\x28\xf4\x23\x56\x77\x9f\x38\x64\x3e"
|
||||
"\x03\x88\x92\x04\x26\x76\xb9\xb5\xdf\x19\xd0\x78\x4b\x7a\x60\x40"
|
||||
"\x23\x91\xf1\x15\x22\x2b\xb4\xe7\x02\x54\xa9\x16\x21\x5b\x60\x96"
|
||||
"\xa9\x5c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
|
||||
"\x00\x00\x01\x00\x00\x00\x0e\x00\x0e\x00\x6d\x69\x63\x72\x6f\x73"
|
||||
"\x6f\x66\x74\x2e\x63\x6f\x6d\x00";
|
||||
|
||||
/* Client New License Request (341 bytes) */
|
||||
|
||||
BYTE client_new_license_request[341] =
|
||||
"\x13\x83\x55\x01\x01\x00\x00\x00\x00\x00\x01\x04\xdc\x73\xa0\xc8"
|
||||
"\x69\x25\x6b\x18\xaf\x0b\x94\x7a\xa9\xa5\x20\xaf\x8b\xbc\x0d\xcc"
|
||||
"\xa3\x95\xb7\xb9\xeb\x81\x5d\xbe\x0a\x10\x9c\xd8\x02\x00\x08\x01"
|
||||
"\xda\x9c\x5d\xa6\x68\x9d\xa3\x90\x67\x24\xf3\x3a\xea\xa1\xe2\x68"
|
||||
"\xad\x12\xf5\xf6\x0b\x7a\xac\x92\xb1\x69\x6f\x42\x55\x8a\xa0\xe2"
|
||||
"\x9b\x2c\xd0\xc7\xee\x33\x6c\x47\x79\xc3\x1e\xbf\x03\x8b\x95\x70"
|
||||
"\x07\xa2\xbe\xee\x54\x02\x68\xf8\x90\xd7\xfe\x2c\x08\xe1\x6b\x2d"
|
||||
"\xff\x94\x76\x72\x5f\x7a\x76\x75\x32\x55\xcc\x58\x61\x63\xa5\x64"
|
||||
"\xf1\x6e\xc3\x07\x81\x82\x6f\x88\x73\x62\xfc\x28\x65\x91\xc2\xc8"
|
||||
"\x9f\x05\xb0\xd3\x93\x12\xbf\x6a\x50\x18\x99\x2d\x4d\xc4\x7f\x74"
|
||||
"\xd3\x30\x9f\x16\x78\xa5\xdf\xaa\x83\x65\x4f\x77\x30\x42\xe0\xd7"
|
||||
"\x69\xc8\x4d\xa5\x73\x11\x59\x35\xb9\xa7\xe2\xb0\xf6\xe3\xb9\x39"
|
||||
"\xc3\xd4\xe4\x6b\xca\x40\x9a\xac\x66\xe6\x1a\xa4\x1b\x39\x7e\x09"
|
||||
"\xe3\x72\x99\xdd\x90\x62\x55\x97\xa9\x04\xc7\x51\xaa\xa2\x01\xcb"
|
||||
"\x5a\x63\x4d\x1a\xe5\x99\xc3\xb1\x2a\x73\xe8\x9a\x00\x46\x92\x59"
|
||||
"\x39\xa3\x80\xa1\xac\x90\x52\xea\x63\x81\x49\x7d\xf3\x2d\x5c\xc3"
|
||||
"\x19\x9f\xed\xfe\x81\x1d\x8c\x04\x1c\xd9\x23\xd2\x6d\x80\x84\xf3"
|
||||
"\x00\xf2\xb1\x69\x2f\xcd\xb3\x9f\x69\xee\x60\x3e\x4b\xb5\xbe\x5a"
|
||||
"\x09\x83\x0b\xbc\x3d\x3e\x05\x47\x65\x96\x31\x8c\x6b\xc5\xe6\xa0"
|
||||
"\x00\x00\x00\x00\x00\x00\x00\x00\x0f\x00\x0e\x00\x41\x64\x6d\x69"
|
||||
"\x6e\x69\x73\x74\x72\x61\x74\x6f\x72\x00\x10\x00\x07\x00\x52\x4f"
|
||||
"\x44\x45\x4e\x54\x00";
|
||||
|
||||
/* Server Platform Challenge (38 bytes) */
|
||||
|
||||
BYTE server_platform_challenge[38] =
|
||||
"\x02\x03\x26\x00\xff\xff\xff\xff\x50\xf7\x0a\x00\x46\x37\x85\x54"
|
||||
"\x8e\xc5\x91\x34\x97\x5d\x78\x94\xad\x3b\x81\xda\x88\x18\x56\x0f"
|
||||
"\x3a\xd1\xf1\x03\xef\x35";
|
||||
|
||||
/* Client Platform Challenge Response (66 bytes) */
|
||||
|
||||
BYTE client_platform_challenge_response[66] =
|
||||
"\x15\x83\x42\x00\x01\x00\x12\x00\xfa\xb4\xe8\x24\xcf\x56\xb2\x4e"
|
||||
"\x80\x02\xbd\xb6\x61\xfc\xdf\xe9\x6c\x44\x01\x00\x14\x00\xf8\xb5"
|
||||
"\xe8\x25\x3d\x0f\x3f\x70\x1d\xda\x60\x19\x16\xfe\x73\x1a\x45\x7e"
|
||||
"\x02\x71\x38\x23\x62\x5d\x10\x8b\x93\xc3\xf1\xe4\x67\x1f\x4a\xb6"
|
||||
"\x00\x0a";
|
||||
|
||||
BYTE license_server_modulus[256] =
|
||||
"\x88\xad\x7c\x8f\x8b\x82\x76\x5a\xbd\x8f\x6f\x62\x18\xe1\xd9\xaa"
|
||||
"\x41\xfd\xed\x68\x01\xc6\x34\x35\xb0\x29\x04\xca\x4a\x4a\x1c\x7e"
|
||||
"\x80\x14\xf7\x8e\x77\xb8\x25\xff\x16\x47\x6f\xbd\xe2\x34\x3d\x2e"
|
||||
"\x02\xb9\x53\xe4\x33\x75\xad\x73\x28\x80\xa0\x4d\xfc\x6c\xc0\x22"
|
||||
"\x53\x1b\x2c\xf8\xf5\x01\x60\x19\x7e\x79\x19\x39\x8d\xb5\xce\x39"
|
||||
"\x58\xdd\x55\x24\x3b\x55\x7b\x43\xc1\x7f\x14\x2f\xb0\x64\x3a\x54"
|
||||
"\x95\x2b\x88\x49\x0c\x61\x2d\xac\xf8\x45\xf5\xda\x88\x18\x5f\xae"
|
||||
"\x42\xf8\x75\xc7\x26\x6d\xb5\xbb\x39\x6f\xcc\x55\x1b\x32\x11\x38"
|
||||
"\x8d\xe4\xe9\x44\x84\x11\x36\xa2\x61\x76\xaa\x4c\xb4\xe3\x55\x0f"
|
||||
"\xe4\x77\x8e\xde\xe3\xa9\xea\xb7\x41\x94\x00\x58\xaa\xc9\x34\xa2"
|
||||
"\x98\xc6\x01\x1a\x76\x14\x01\xa8\xdc\x30\x7c\x77\x5a\x20\x71\x5a"
|
||||
"\xa2\x3f\xaf\x13\x7e\xe8\xfd\x84\xa2\x5b\xcf\x25\xe9\xc7\x8f\xa8"
|
||||
"\xf2\x8b\x84\xc7\x04\x5e\x53\x73\x4e\x0e\x89\xa3\x3c\xe7\x68\x5c"
|
||||
"\x24\xb7\x80\x53\x3c\x54\xc8\xc1\x53\xaa\x71\x71\x3d\x36\x15\xd6"
|
||||
"\x6a\x9d\x7d\xde\xae\xf9\xe6\xaf\x57\xae\xb9\x01\x96\x5d\xe0\x4d"
|
||||
"\xcd\xed\xc8\xd7\xf3\x01\x03\x38\x10\xbe\x7c\x42\x67\x01\xa7\x23";
|
||||
|
||||
BYTE license_server_exponent[4] = "\x00\x01\x00\x01";
|
||||
|
||||
BYTE terminal_server_modulus[256] =
|
||||
"\xc8\x90\x6b\xf0\xc6\x58\x81\xa6\x89\x1c\x0e\xf2\xf6\xd9\x82\x12"
|
||||
"\x71\xa5\x6e\x51\xdb\xe0\x32\x66\xaa\x91\x77\x0e\x88\xab\x44\xb7"
|
||||
"\xd3\x97\xda\x78\x8f\x0e\x44\x26\x46\x7f\x16\xd4\xc6\x63\xeb\xca"
|
||||
"\x55\xe5\x4e\x8b\x2d\xa6\x6d\x83\x95\xa7\xa8\x6a\xfa\xd0\xbe\x26"
|
||||
"\x80\xae\xab\x0a\x64\x90\x32\x8c\xdf\x5c\xf8\xf9\xd0\x7e\xd1\x6b"
|
||||
"\x3a\x29\x7e\x7d\xbd\x02\xa3\x86\x6c\xfd\xa5\x35\x71\xda\x21\xb4"
|
||||
"\xee\xa4\x97\xf3\xa8\xb2\x12\xdb\xa4\x27\x57\x36\xc9\x08\x22\x5c"
|
||||
"\x54\xf7\x99\x7b\xa3\x2f\xb8\x5c\xd5\x16\xb8\x19\x27\x6b\x71\x97"
|
||||
"\x14\x5b\xe8\x1f\x23\xe8\x5c\xb8\x1b\x73\x4b\x6e\x7a\x03\x13\xff"
|
||||
"\x97\xe9\x62\xb9\x4a\xa0\x51\x23\xc3\x6c\x32\x3e\x02\xf2\x63\x97"
|
||||
"\x23\x1c\xc5\x78\xd8\xfc\xb7\x07\x4b\xb0\x56\x0f\x74\xdf\xc5\x56"
|
||||
"\x28\xe4\x96\xfd\x20\x8e\x65\x5a\xe6\x45\xed\xc1\x05\x3e\xab\x58"
|
||||
"\x55\x40\xaf\xe2\x47\xa0\x4c\x49\xa3\x8d\x39\xe3\x66\x5f\x93\x33"
|
||||
"\x6d\xf8\x5f\xc5\x54\xe5\xfb\x57\x3a\xde\x45\x12\xb5\xc7\x05\x4b"
|
||||
"\x88\x1f\xb4\x35\x0f\x7c\xc0\x75\x17\xc6\x67\xdd\x48\x80\xcb\x0a"
|
||||
"\xbe\x9d\xf6\x93\x60\x65\x34\xeb\x97\xaf\x65\x6d\xdf\xbf\x6f\x5b";
|
||||
|
||||
BYTE terminal_server_exponent[4] = "\x00\x01\x00\x01";
|
||||
|
||||
BYTE client_random[32] =
|
||||
"\xdc\x73\xa0\xc8\x69\x25\x6b\x18\xaf\x0b\x94\x7a\xa9\xa5\x20\xaf"
|
||||
"\x8b\xbc\x0d\xcc\xa3\x95\xb7\xb9\xeb\x81\x5d\xbe\x0a\x10\x9c\xd8";
|
||||
|
||||
BYTE server_random[32] =
|
||||
"\x84\xef\xae\x20\xb1\xd5\x9e\x36\x49\x1a\xe8\x2e\x0a\x99\x89\xac"
|
||||
"\x49\xa6\x47\x4f\x33\x9b\x5a\xb9\x95\x03\xa6\xc6\xc2\x3c\x3f\x61";
|
||||
|
||||
BYTE premaster_secret[48] =
|
||||
"\xcf\x7a\xdb\xcb\xfb\x0e\x15\x23\x87\x1c\x84\x81\xba\x9d\x4e\x15"
|
||||
"\xbb\xd2\x56\xbd\xd8\xf7\xf3\x16\xcc\x35\x3b\xe1\x93\x42\x78\xdd"
|
||||
"\x92\x9a\xe4\x7a\xe2\x99\xd4\x73\xb1\xaa\x6f\x55\x94\x3b\xc9\xbc";
|
||||
|
||||
BYTE encrypted_premaster_secret[264] =
|
||||
"\xda\x9c\x5d\xa6\x68\x9d\xa3\x90\x67\x24\xf3\x3a\xea\xa1\xe2\x68"
|
||||
"\xad\x12\xf5\xf6\x0b\x7a\xac\x92\xb1\x69\x6f\x42\x55\x8a\xa0\xe2"
|
||||
"\x9b\x2c\xd0\xc7\xee\x33\x6c\x47\x79\xc3\x1e\xbf\x03\x8b\x95\x70"
|
||||
"\x07\xa2\xbe\xee\x54\x02\x68\xf8\x90\xd7\xfe\x2c\x08\xe1\x6b\x2d"
|
||||
"\xff\x94\x76\x72\x5f\x7a\x76\x75\x32\x55\xcc\x58\x61\x63\xa5\x64"
|
||||
"\xf1\x6e\xc3\x07\x81\x82\x6f\x88\x73\x62\xfc\x28\x65\x91\xc2\xc8"
|
||||
"\x9f\x05\xb0\xd3\x93\x12\xbf\x6a\x50\x18\x99\x2d\x4d\xc4\x7f\x74"
|
||||
"\xd3\x30\x9f\x16\x78\xa5\xdf\xaa\x83\x65\x4f\x77\x30\x42\xe0\xd7"
|
||||
"\x69\xc8\x4d\xa5\x73\x11\x59\x35\xb9\xa7\xe2\xb0\xf6\xe3\xb9\x39"
|
||||
"\xc3\xd4\xe4\x6b\xca\x40\x9a\xac\x66\xe6\x1a\xa4\x1b\x39\x7e\x09"
|
||||
"\xe3\x72\x99\xdd\x90\x62\x55\x97\xa9\x04\xc7\x51\xaa\xa2\x01\xcb"
|
||||
"\x5a\x63\x4d\x1a\xe5\x99\xc3\xb1\x2a\x73\xe8\x9a\x00\x46\x92\x59"
|
||||
"\x39\xa3\x80\xa1\xac\x90\x52\xea\x63\x81\x49\x7d\xf3\x2d\x5c\xc3"
|
||||
"\x19\x9f\xed\xfe\x81\x1d\x8c\x04\x1c\xd9\x23\xd2\x6d\x80\x84\xf3"
|
||||
"\x00\xf2\xb1\x69\x2f\xcd\xb3\x9f\x69\xee\x60\x3e\x4b\xb5\xbe\x5a"
|
||||
"\x09\x83\x0b\xbc\x3d\x3e\x05\x47\x65\x96\x31\x8c\x6b\xc5\xe6\xa0"
|
||||
"\x00\x00\x00\x00\x00\x00\x00\x00";
|
||||
|
||||
BYTE platform_challenge[10] = "\x54\x00\x45\x00\x53\x00\x54\x00\x00\x00";
|
||||
|
||||
void test_license(void)
|
||||
{
|
||||
wStream _s, *s;
|
||||
|
||||
s = &_s;
|
||||
memcpy(license->ClientRandom, client_random, sizeof(client_random));
|
||||
memcpy(license->PremasterSecret, premaster_secret, sizeof(premaster_secret));
|
||||
|
||||
s->buffer = server_license_request;
|
||||
s->pointer = s->buffer + LICENSE_PREAMBLE_LENGTH;
|
||||
license_read_license_request_packet(license, s);
|
||||
|
||||
#if 0
|
||||
printf("\n");
|
||||
|
||||
printf("client random:\n");
|
||||
winpr_HexDump(license->ClientRandom, 32);
|
||||
printf("\n");
|
||||
|
||||
printf("server random:\n");
|
||||
winpr_HexDump(license->ServerRandom, 32);
|
||||
printf("\n");
|
||||
|
||||
printf("premaster secret:\n");
|
||||
winpr_HexDump(license->PremasterSecret, 48);
|
||||
printf("\n");
|
||||
|
||||
printf("master secret:\n");
|
||||
winpr_HexDump(license->MasterSecret, 48);
|
||||
printf("\n");
|
||||
|
||||
printf("session key blob:\n");
|
||||
winpr_HexDump(license->SessionKeyBlob, 48);
|
||||
printf("\n");
|
||||
|
||||
printf("licensing encryption key:\n");
|
||||
winpr_HexDump(license->LicensingEncryptionKey, 16);
|
||||
printf("\n");
|
||||
|
||||
printf("mac salt key:\n");
|
||||
winpr_HexDump(license->MacSaltKey, 16);
|
||||
printf("\n");
|
||||
|
||||
printf("modulus:\n");
|
||||
winpr_HexDump(license->certificate->cert_info.modulus.buffer,
|
||||
license->certificate->cert_info.modulus.length);
|
||||
printf("\n");
|
||||
|
||||
printf("exponent:\n");
|
||||
winpr_HexDump(license->certificate->cert_info.exponent, 4);
|
||||
printf("\n");
|
||||
|
||||
printf("encrypted premaster secret:\n");
|
||||
winpr_HexDump(license->EncryptedPremasterSecret->buffer,
|
||||
license->EncryptedPremasterSecret->length);
|
||||
printf("\n");
|
||||
#endif
|
||||
|
||||
s->buffer = server_platform_challenge;
|
||||
s->pointer = s->buffer + LICENSE_PREAMBLE_LENGTH;
|
||||
license_read_platform_challenge_packet(license, s);
|
||||
}
|
||||
|
||||
BYTE test_client_random[32] =
|
||||
"\xdc\x73\xa0\xc8\x69\x25\x6b\x18\xaf\x0b\x94\x7a\xa9\xa5\x20\xaf"
|
||||
"\x8b\xbc\x0d\xcc\xa3\x95\xb7\xb9\xeb\x81\x5d\xbe\x0a\x10\x9c\xd8";
|
||||
|
||||
BYTE test_server_random[32] =
|
||||
"\x16\x7e\xf8\x71\x48\x16\x1a\x4f\xa5\x2c\xcd\x73\x63\x60\xa6\xc3"
|
||||
"\xb9\x19\x1b\x4b\x6b\xb2\x0a\xb8\xec\xf1\x8d\x95\x4e\xa8\x21\xc5";
|
||||
|
||||
BYTE test_premaster_secret[48] =
|
||||
"\xcf\x7a\xdb\xcb\xfb\x0e\x15\x23\x87\x1c\x84\x81\xba\x9d\x4e\x15"
|
||||
"\xbb\xd2\x56\xbd\xd8\xf7\xf3\x16\xcc\x35\x3b\xe1\x93\x42\x78\xdd"
|
||||
"\x92\x9a\xe4\x7a\xe2\x99\xd4\x73\xb1\xaa\x6f\x55\x94\x3b\xc9\xbc";
|
||||
|
||||
BYTE test_modulus[64] =
|
||||
"\x23\xc9\xec\x0e\x9f\x1e\x0e\x1a\x78\xaf\xa5\x14\xd4\xf5\x45\xe4"
|
||||
"\x04\x6e\xf4\x01\xe9\xdf\x45\xd1\xc2\xae\xf4\x7f\xd3\xb9\xcb\xf3"
|
||||
"\x1a\x23\xa1\x0d\x4b\xd4\xd1\x4a\xd2\xd1\xc9\x7c\xab\x24\x8b\xb1"
|
||||
"\x5a\x93\xca\x34\x44\x17\xb5\xe4\xfe\xf7\x9a\xaa\x72\x0d\x41\x95";
|
||||
|
||||
BYTE test_exponent[4] = "\x01\x00\x01\x00";
|
||||
|
||||
BYTE test_master_secret[48] =
|
||||
"\xbe\x51\xee\x63\x23\x90\xd0\xf4\x3a\xce\x3a\x37\x65\xc3\xdd\xcf"
|
||||
"\xed\xf0\xc8\x19\xed\x77\x33\x4e\xfd\x2b\x7d\x5a\xe2\xca\xf3\x0a"
|
||||
"\xf1\x16\xe5\x0c\x78\x59\x7e\xd4\x4b\x57\xce\x17\x60\x3a\x5a\xb3";
|
||||
|
||||
BYTE test_session_key_blob[48] =
|
||||
"\x07\x4f\xa0\x2e\xee\xc4\x5a\x46\x21\x8c\xae\x01\x45\x02\x26\xe4"
|
||||
"\x54\x6b\x59\x10\xcc\x5b\xd1\x96\xd0\x5c\xeb\xc2\x96\x9b\x44\x7b"
|
||||
"\x1c\xd9\x66\xb1\x9e\x24\xaa\x60\x4f\x89\xd1\x4e\xf8\xb9\x55\x3b";
|
||||
|
||||
BYTE test_mac_salt_key[16] =
|
||||
"\x07\x4f\xa0\x2e\xee\xc4\x5a\x46\x21\x8c\xae\x01\x45\x02\x26\xe4";
|
||||
|
||||
BYTE test_licensing_encryption_key[16] =
|
||||
"\xf3\xb1\xe0\x3b\xfe\xb4\xf2\xc5\x28\xa9\x48\xcd\x90\xf1\x93\xe5";
|
||||
|
||||
BYTE test_encrypted_premaster_secret[64] =
|
||||
"\x6b\xbc\x77\x9f\x20\x0c\x98\x39\xc1\x85\x77\xc8\x19\x87\xd8\x82"
|
||||
"\x93\xbd\x21\x69\x5f\x87\xe0\xd6\x4e\xad\x5e\x23\x13\x80\x8c\x63"
|
||||
"\x3e\xd6\x6e\x60\xc9\x40\xe9\x86\x08\x8c\xd5\xaa\xa9\x54\xfe\x27"
|
||||
"\x4c\x1f\x87\x57\xde\xca\xd4\xc7\x1e\x46\x9e\x00\x7a\xdb\x47\x23";
|
||||
|
||||
void test_license_generate_keys(void)
|
||||
{
|
||||
wStream _s, *s;
|
||||
|
||||
s = &_s;
|
||||
memcpy(license->ClientRandom, client_random, sizeof(client_random));
|
||||
memcpy(license->ServerRandom, test_server_random, sizeof(test_server_random));
|
||||
memcpy(license->PremasterSecret, premaster_secret, sizeof(premaster_secret));
|
||||
memcpy(license->certificate->cert_info.exponent, test_exponent, sizeof(test_exponent));
|
||||
memcpy(license->certificate->cert_info.Modulus, test_modulus, sizeof(test_modulus));
|
||||
license->certificate->cert_info.ModulusLength = sizeof(test_modulus);
|
||||
|
||||
license_generate_keys(license);
|
||||
license_encrypt_premaster_secret(license);
|
||||
|
||||
s->buffer = license->MasterSecret;
|
||||
s->pointer = s->buffer + sizeof(test_master_secret);
|
||||
ASSERT_STREAM(s, test_master_secret, sizeof(test_master_secret));
|
||||
|
||||
s->buffer = license->SessionKeyBlob;
|
||||
s->pointer = s->buffer + sizeof(test_session_key_blob);
|
||||
ASSERT_STREAM(s, test_session_key_blob, sizeof(test_session_key_blob));
|
||||
|
||||
s->buffer = license->MacSaltKey;
|
||||
s->pointer = s->buffer + sizeof(test_mac_salt_key);
|
||||
ASSERT_STREAM(s, test_mac_salt_key, sizeof(test_mac_salt_key));
|
||||
|
||||
s->buffer = license->LicensingEncryptionKey;
|
||||
s->pointer = s->buffer + sizeof(test_licensing_encryption_key);
|
||||
ASSERT_STREAM(s, test_licensing_encryption_key, sizeof(test_licensing_encryption_key));
|
||||
|
||||
s->buffer = license->EncryptedPremasterSecret->data;
|
||||
s->pointer = s->buffer + sizeof(test_encrypted_premaster_secret);
|
||||
ASSERT_STREAM(s, test_encrypted_premaster_secret, sizeof(test_encrypted_premaster_secret));
|
||||
}
|
||||
|
||||
void test_license_encrypt_premaster_secret(void)
|
||||
{
|
||||
wStream _s, *s;
|
||||
|
||||
s = &_s;
|
||||
memcpy(license->PremasterSecret, premaster_secret, sizeof(premaster_secret));
|
||||
memcpy(license->certificate->cert_info.exponent, test_exponent, sizeof(test_exponent));
|
||||
memcpy(license->certificate->cert_info.Modulus, test_modulus, sizeof(test_modulus));
|
||||
license->certificate->cert_info.ModulusLength = sizeof(test_modulus);
|
||||
|
||||
s->buffer = license->EncryptedPremasterSecret->data;
|
||||
s->pointer = s->buffer + sizeof(test_encrypted_premaster_secret);
|
||||
ASSERT_STREAM(s, test_encrypted_premaster_secret, sizeof(test_encrypted_premaster_secret));
|
||||
}
|
||||
|
||||
BYTE test_encrypted_platform_challenge[10] =
|
||||
"\x84\x0a\x42\x50\xad\x5e\xc1\x29\x30\xbd";
|
||||
|
||||
BYTE test_platform_challenge[10] =
|
||||
"\x54\x00\x45\x00\x53\x00\x54\x00\x00\x00";
|
||||
|
||||
void test_license_decrypt_platform_challenge(void)
|
||||
{
|
||||
wStream _s, *s;
|
||||
|
||||
s = &_s;
|
||||
memcpy(license->LicensingEncryptionKey, test_licensing_encryption_key,
|
||||
sizeof(test_licensing_encryption_key));
|
||||
|
||||
license->EncryptedPlatformChallenge->data =
|
||||
(BYTE*) malloc(sizeof(test_encrypted_platform_challenge));
|
||||
license->EncryptedPlatformChallenge->length =
|
||||
sizeof(test_encrypted_platform_challenge);
|
||||
|
||||
memcpy(license->EncryptedPlatformChallenge->data, test_encrypted_platform_challenge,
|
||||
sizeof(test_encrypted_platform_challenge));
|
||||
|
||||
license_decrypt_platform_challenge(license);
|
||||
|
||||
s->buffer = license->PlatformChallenge->data;
|
||||
s->pointer = s->buffer + sizeof(test_platform_challenge);
|
||||
|
||||
ASSERT_STREAM(s, test_platform_challenge, sizeof(test_platform_challenge));
|
||||
}
|
|
@ -1,29 +0,0 @@
|
|||
/**
|
||||
* FreeRDP: A Remote Desktop Protocol Implementation
|
||||
* Licensing Unit Tests
|
||||
*
|
||||
* Copyright 2011 Marc-Andre Moreau <marcandre.moreau@gmail.com>
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
#include "test_freerdp.h"
|
||||
|
||||
int init_license_suite(void);
|
||||
int clean_license_suite(void);
|
||||
int add_license_suite(void);
|
||||
|
||||
void test_license(void);
|
||||
void test_license_generate_keys(void);
|
||||
void test_license_encrypt_premaster_secret(void);
|
||||
void test_license_decrypt_platform_challenge(void);
|
115
cunit/test_mcs.c
115
cunit/test_mcs.c
|
@ -1,115 +0,0 @@
|
|||
/**
|
||||
* FreeRDP: A Remote Desktop Protocol Implementation
|
||||
* T.125 Multipoint Communication Service (MCS) Protocol Unit Tests
|
||||
*
|
||||
* Copyright 2011 Marc-Andre Moreau <marcandre.moreau@gmail.com>
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
#include "mcs.h"
|
||||
|
||||
#include <freerdp/freerdp.h>
|
||||
#include <winpr/print.h>
|
||||
#include <winpr/stream.h>
|
||||
|
||||
#include "test_mcs.h"
|
||||
|
||||
int init_mcs_suite(void)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
int clean_mcs_suite(void)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
int add_mcs_suite(void)
|
||||
{
|
||||
add_test_suite(mcs);
|
||||
|
||||
add_test_function(mcs_write_connect_initial);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
BYTE gcc_CCrq[307] =
|
||||
"\x00\x05\x00\x14\x7C\x00\x01\x81\x2A\x00\x08\x00\x10\x00\x01\xC0"
|
||||
"\x00\x44\x75\x63\x61\x81\x1c\x01\xc0\xd8\x00\x04\x00\x08\x00\x00"
|
||||
"\x05\x00\x04\x01\xCA\x03\xAA\x09\x04\x00\x00\xCE\x0E\x00\x00\x45"
|
||||
"\x00\x4c\x00\x54\x00\x4f\x00\x4e\x00\x53\x00\x2d\x00\x44\x00\x45"
|
||||
"\x00\x56\x00\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04"
|
||||
"\x00\x00\x00\x00\x00\x00\x00\x0c\x00\x00\x00\x00\x00\x00\x00\x00"
|
||||
"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
|
||||
"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
|
||||
"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
|
||||
"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\xCA\x01\x00\x00"
|
||||
"\x00\x00\x00\x18\x00\x07\x00\x01\x00\x36\x00\x39\x00\x37\x00\x31"
|
||||
"\x00\x32\x00\x2d\x00\x37\x00\x38\x00\x33\x00\x2d\x00\x30\x00\x33"
|
||||
"\x00\x35\x00\x37\x00\x39\x00\x37\x00\x34\x00\x2d\x00\x34\x00\x32"
|
||||
"\x00\x37\x00\x31\x00\x34\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
|
||||
"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04"
|
||||
"\xC0\x0C\x00\x0D\x00\x00\x00\x00\x00\x00\x00\x02\xC0\x0C\x00\x1B"
|
||||
"\x00\x00\x00\x00\x00\x00\x00\x03\xC0\x2C\x00\x03\x00\x00\x00\x72"
|
||||
"\x64\x70\x64\x72\x00\x00\x00\x00\x00\x80\x80\x63\x6c\x69\x70\x72"
|
||||
"\x64\x72\x00\x00\x00\xA0\xC0\x72\x64\x70\x73\x6e\x64\x00\x00\x00"
|
||||
"\x00\x00\xc0";
|
||||
|
||||
BYTE mcs_connect_initial_expected[409] =
|
||||
"\x7F\x65\x82\x01\x94\x04\x01\x01\x04\x01\x01\x01\x01\xFF\x30\x19"
|
||||
"\x02\x01\x22\x02\x01\x02\x02\x01\x00\x02\x01\x01\x02\x01\x00\x02"
|
||||
"\x01\x01\x02\x02\xFF\xFF\x02\x01\x02\x30\x19\x02\x01\x01\x02\x01"
|
||||
"\x01\x02\x01\x01\x02\x01\x01\x02\x01\x00\x02\x01\x01\x02\x02\x04"
|
||||
"\x20\x02\x01\x02\x30\x1C\x02\x02\xFF\xFF\x02\x02\xFC\x17\x02\x02"
|
||||
"\xFF\xFF\x02\x01\x01\x02\x01\x00\x02\x01\x01\x02\x02\xFF\xFF\x02"
|
||||
"\x01\x02\x04\x82\x01\x33\x00\x05\x00\x14\x7C\x00\x01\x81\x2A\x00"
|
||||
"\x08\x00\x10\x00\x01\xC0\x00\x44\x75\x63\x61\x81\x1c\x01\xc0\xd8"
|
||||
"\x00\x04\x00\x08\x00\x00\x05\x00\x04\x01\xCA\x03\xAA\x09\x04\x00"
|
||||
"\x00\xCE\x0E\x00\x00\x45\x00\x4c\x00\x54\x00\x4f\x00\x4e\x00\x53"
|
||||
"\x00\x2d\x00\x44\x00\x45\x00\x56\x00\x32\x00\x00\x00\x00\x00\x00"
|
||||
"\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x0c\x00\x00"
|
||||
"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
|
||||
"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
|
||||
"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
|
||||
"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
|
||||
"\x00\x01\xCA\x01\x00\x00\x00\x00\x00\x18\x00\x07\x00\x01\x00\x36"
|
||||
"\x00\x39\x00\x37\x00\x31\x00\x32\x00\x2d\x00\x37\x00\x38\x00\x33"
|
||||
"\x00\x2d\x00\x30\x00\x33\x00\x35\x00\x37\x00\x39\x00\x37\x00\x34"
|
||||
"\x00\x2d\x00\x34\x00\x32\x00\x37\x00\x31\x00\x34\x00\x00\x00\x00"
|
||||
"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
|
||||
"\x00\x00\x00\x00\x00\x04\xC0\x0C\x00\x0D\x00\x00\x00\x00\x00\x00"
|
||||
"\x00\x02\xC0\x0C\x00\x1B\x00\x00\x00\x00\x00\x00\x00\x03\xC0\x2C"
|
||||
"\x00\x03\x00\x00\x00\x72\x64\x70\x64\x72\x00\x00\x00\x00\x00\x80"
|
||||
"\x80\x63\x6c\x69\x70\x72\x64\x72\x00\x00\x00\xA0\xC0\x72\x64\x70"
|
||||
"\x73\x6e\x64\x00\x00\x00\x00\x00\xc0";
|
||||
|
||||
void test_mcs_write_connect_initial(void)
|
||||
{
|
||||
wStream* s;
|
||||
rdpMcs* mcs;
|
||||
wStream _user_data, *user_data;
|
||||
|
||||
mcs = mcs_new((rdpTransport*) NULL);
|
||||
|
||||
user_data = &_user_data;
|
||||
user_data->buffer = gcc_CCrq;
|
||||
user_data->pointer = user_data->buffer + sizeof(gcc_CCrq);
|
||||
|
||||
s = stream_new(512);
|
||||
mcs_write_connect_initial(s, mcs, user_data);
|
||||
|
||||
ASSERT_STREAM(s, (BYTE*) mcs_connect_initial_expected, sizeof(mcs_connect_initial_expected));
|
||||
|
||||
Stream_Free(s, TRUE);
|
||||
}
|
|
@ -1,26 +0,0 @@
|
|||
/**
|
||||
* FreeRDP: A Remote Desktop Protocol Implementation
|
||||
* T.125 Multipoint Communication Service (MCS) Protocol Unit Tests
|
||||
*
|
||||
* Copyright 2011 Marc-Andre Moreau <marcandre.moreau@gmail.com>
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
#include "test_freerdp.h"
|
||||
|
||||
int init_mcs_suite(void);
|
||||
int clean_mcs_suite(void);
|
||||
int add_mcs_suite(void);
|
||||
|
||||
void test_mcs_write_connect_initial(void);
|
|
@ -1,665 +0,0 @@
|
|||
/**
|
||||
* FreeRDP: A Remote Desktop Protocol Implementation
|
||||
* Microsoft Point to Point Compression (MPPC) Unit Tests
|
||||
*
|
||||
* Copyright 2011 Laxmikant Rashinkar <LK.Rashinkar@gmail.com>
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
#include <freerdp/freerdp.h>
|
||||
#include <stdint.h>
|
||||
#include <sys/time.h>
|
||||
|
||||
#include "rdp.h"
|
||||
#include "test_mppc.h"
|
||||
|
||||
BYTE_t compressed_rd5[] =
|
||||
{
|
||||
0x24, 0x02, 0x03, 0x09, 0x00, 0x20, 0x0c, 0x05, 0x10, 0x01, 0x40, 0x0a, 0xbf, 0xdf, 0xc3, 0x20,
|
||||
0x80, 0x00, 0x1f, 0x0a, 0x00, 0x00, 0x07, 0x43, 0x4e, 0x00, 0x68, 0x02, 0x00, 0x22, 0x00, 0x34,
|
||||
0xcb, 0xfb, 0xf8, 0x18, 0x40, 0x01, 0x00, 0x27, 0xe2, 0x90, 0x0f, 0xc3, 0x91, 0xa8, 0x00, 0x08,
|
||||
0x00, 0x00, 0x68, 0x50, 0x60, 0x65, 0xfc, 0x0e, 0xfe, 0x04, 0x00, 0x08, 0x00, 0x06, 0x0c, 0x00,
|
||||
0x01, 0x00, 0xf8, 0x40, 0x20, 0x00, 0x00, 0x90, 0x00, 0xcf, 0x95, 0x1f, 0x44, 0x90, 0x00, 0x6e,
|
||||
0x03, 0xf4, 0x40, 0x21, 0x9f, 0x26, 0x01, 0xbf, 0x88, 0x10, 0x90, 0x00, 0x08, 0x04, 0x00, 0x04,
|
||||
0x30, 0x03, 0xe4, 0xc7, 0xea, 0x05, 0x1e, 0x87, 0xf8, 0x20, 0x1c, 0x00, 0x10, 0x84, 0x22, 0x1f,
|
||||
0x71, 0x0d, 0x0e, 0xb9, 0x88, 0x9f, 0x5c, 0xee, 0x41, 0x97, 0xfb, 0xf8, 0x88, 0x68, 0x08, 0x6d,
|
||||
0xd0, 0x44, 0xfc, 0x34, 0x06, 0xe6, 0x16, 0x21, 0x04, 0x11, 0x0f, 0xb9, 0x85, 0x86, 0x5d, 0x44,
|
||||
0x4f, 0xae, 0xb7, 0x40, 0xa8, 0xcd, 0x5b, 0xed, 0x02, 0xee, 0xc2, 0x21, 0x40, 0x21, 0x21, 0x23,
|
||||
0x17, 0xb7, 0x00, 0x60, 0x00, 0x3b, 0xfd, 0xfc, 0x00, 0x0c, 0x00, 0x08, 0x00, 0x34, 0x00, 0x33,
|
||||
0xc7, 0xe0, 0xc0, 0x0f, 0x07, 0x12, 0x42, 0x01, 0xe8, 0x6c, 0xc7, 0x83, 0x07, 0x8c, 0xd4, 0x30,
|
||||
0x07, 0x20, 0x01, 0x90, 0xa3, 0xf1, 0xdb, 0xf5, 0xd4, 0x13, 0xc2, 0x4f, 0x0f, 0xe5, 0xe2, 0xc7,
|
||||
0x87, 0xf2, 0xf0, 0x93, 0xc3, 0xf9, 0x78, 0xb0, 0x1a, 0x03, 0xe1, 0xf1, 0xd0, 0x08, 0x4c, 0x66,
|
||||
0xac, 0x32, 0x31, 0x70, 0x60, 0x11, 0x01, 0x11, 0x01, 0x01, 0x01, 0xf0, 0x36, 0x1f, 0xe5, 0xe0,
|
||||
0x6c, 0xbc, 0x26, 0xf0, 0x36, 0x5f, 0xe5, 0xe0, 0x6c, 0xbc, 0x26, 0xf0, 0x34, 0xf9, 0x94, 0x32,
|
||||
0x31, 0x74, 0x20, 0x10, 0x00, 0x00, 0x0f, 0xbf, 0x87, 0xdf, 0xef, 0xfe, 0x4b, 0xbf, 0x02, 0xfa,
|
||||
0xde, 0xa7, 0x79, 0x32, 0x44, 0x7c, 0x20, 0x82, 0x00, 0x5f, 0xef, 0xff, 0x09, 0xe1, 0x05, 0x74,
|
||||
0x32, 0xea, 0x09, 0xe1, 0x0f, 0x55, 0x83, 0x85, 0x2a, 0xa0, 0x1d, 0x50, 0x0e, 0x0e, 0x0b, 0x01,
|
||||
0x01, 0x43, 0x06, 0x02, 0xbe, 0x5f, 0x00, 0x00, 0x0c, 0x3d, 0x4d, 0x87, 0xa6, 0x5e, 0xa6, 0xcb,
|
||||
0xc3, 0xcf, 0x53, 0x65, 0xe9, 0x97, 0xa9, 0xb2, 0xf5, 0x9b, 0xd4, 0xd3, 0xee, 0xcd, 0xc0, 0x7c,
|
||||
0xae, 0xe0, 0x65, 0x1f, 0xe5, 0xe0, 0x6c, 0xbc, 0x26, 0xf0, 0x36, 0x5f, 0xe5, 0xe0, 0x6c, 0xbc,
|
||||
0x26, 0xf0, 0x34, 0xfb, 0xb3, 0xf2, 0x41, 0x30, 0x20, 0x04, 0xa0, 0x80, 0x93, 0xf3, 0xf2, 0x1b,
|
||||
0xed, 0xf6, 0x0f, 0x04, 0x82, 0x7b, 0xcc, 0x00, 0x65, 0xef, 0x4f, 0x86, 0x02, 0xf7, 0xa7, 0xe0,
|
||||
0x0a, 0x88, 0x1c, 0x34, 0x02, 0x02, 0x02, 0x60, 0x60, 0x49, 0x40, 0xc1, 0x2f, 0x14, 0xca, 0x60,
|
||||
0xc1, 0x81, 0x80, 0x07, 0xc3, 0x00, 0x00, 0x39, 0xfa, 0x86, 0x38, 0x93, 0x47, 0x08, 0x27, 0x08,
|
||||
0xfc, 0xb8, 0x4e, 0x38, 0x47, 0xe5, 0xc2, 0x09, 0xc2, 0x3f, 0x2e, 0x13, 0x8e, 0x11, 0xf3, 0xc3,
|
||||
0x57, 0x1a, 0x88, 0x7d, 0x44, 0x3c, 0x3c, 0x04, 0x0f, 0xd4, 0x3f, 0x83, 0x8d, 0x82, 0x00, 0x25,
|
||||
0x04, 0x84, 0xdf, 0xe0, 0x17, 0xf8, 0x04, 0x03, 0xe1, 0x47, 0xc4, 0xaf, 0x9c, 0x00, 0x00, 0x31,
|
||||
0xf5, 0x4c, 0x71, 0x78, 0x8f, 0x54, 0xfb, 0x1c, 0x97, 0xa4, 0x04, 0x13, 0xd5, 0x2f, 0x77, 0xc7,
|
||||
0xb8, 0x9e, 0xef, 0xcb, 0xc2, 0x6f, 0x77, 0xe5, 0xee, 0x27, 0xbb, 0xf2, 0xf7, 0xe3, 0xdd, 0xf3,
|
||||
0xc6, 0xfb, 0x2a, 0x78, 0x6d, 0x3c, 0x34, 0x37, 0xc0, 0xaf, 0x25, 0xc7, 0x81, 0x7d, 0x6e, 0x5d,
|
||||
0x5c, 0xd6, 0xe3, 0x43, 0xc0, 0x82, 0xd0, 0x95, 0x90, 0xd8, 0xbd, 0xfc, 0x00, 0x09, 0xc0, 0x34,
|
||||
0x39, 0x46, 0x84, 0x20, 0x40, 0x38, 0xa3, 0x42, 0x12, 0xb0, 0x55, 0xbe, 0x28, 0xc0, 0x70, 0x64,
|
||||
0x28, 0xc8, 0x48, 0x42, 0x08, 0xb2, 0x1b, 0x46, 0xa6, 0x09, 0x54, 0x2e, 0x5f, 0x73, 0x84, 0xfc,
|
||||
0x28, 0x4a, 0x73, 0x79, 0xf2, 0x6c, 0x5d, 0x82, 0x82, 0x6e, 0xc2, 0x27, 0xd7, 0x6b, 0xb8, 0x4f,
|
||||
0xa4, 0xa4, 0x22, 0xee, 0x22, 0x7e, 0x10, 0x03, 0x78, 0x08, 0xf4, 0x94, 0x5e, 0x02, 0x01, 0xef,
|
||||
0x02, 0x27, 0xd7, 0x8b, 0xc8, 0x3f, 0xa4, 0xa4, 0x1a, 0xf3, 0xd1, 0x84, 0x0c, 0x32, 0x31, 0x75,
|
||||
0x60, 0x05, 0xe2, 0x30, 0xb7, 0xad, 0x5b, 0x15, 0xd5, 0xc3, 0xc0, 0x00, 0x11, 0x81, 0x81, 0x69,
|
||||
0x8f, 0x06, 0x0f, 0x14, 0xcf, 0xa6, 0xe8, 0xb1, 0x22, 0x77, 0xeb, 0xd7, 0x45, 0x89, 0xf0, 0xb6,
|
||||
0x3e, 0x23, 0x06, 0x80, 0xf8, 0x5b, 0x0f, 0x04, 0x83, 0xfc, 0x2d, 0x8f, 0x88, 0xc1, 0xa0, 0x3e,
|
||||
0x16, 0x1d, 0x00, 0x83, 0x74, 0x58, 0xa0, 0xc0, 0x10, 0xce, 0x8b, 0x17, 0xe0, 0x68, 0xff, 0x20,
|
||||
0xff, 0x03, 0x63, 0xe5, 0xcf, 0x1f, 0xa0, 0x40, 0x00, 0x00, 0x2a, 0xff, 0xd6, 0xd1, 0xc0, 0xb9,
|
||||
0xe0, 0x5f, 0x6b, 0x81, 0x73, 0xc9, 0x93, 0xd1, 0x63, 0x50, 0xf0, 0x9b, 0xf0, 0x48, 0x4f, 0xaf,
|
||||
0xe0, 0x1b, 0xef, 0x82, 0x6f, 0xc2, 0x40, 0xe0, 0xe4, 0x60, 0xa0, 0x69, 0xa1, 0xa1, 0xbe, 0xba,
|
||||
0x04, 0x00, 0x08, 0x00, 0x10, 0x00, 0x20, 0x00, 0x42, 0x00, 0x44, 0x00, 0x88, 0x01, 0x10, 0x02,
|
||||
0x21, 0x02, 0x22, 0x04, 0x44, 0x08, 0x9c, 0x8f, 0xcd, 0xe0, 0x02, 0x20, 0x88, 0x02, 0x10, 0x40,
|
||||
0x01, 0xf0, 0x60, 0x44, 0xc0, 0xce, 0xb1, 0x8f, 0xd0, 0x30, 0x00, 0x60, 0x00, 0xa0, 0x00, 0xc4,
|
||||
0x00, 0xcc, 0x01, 0x98, 0x03, 0x28, 0x03, 0x31, 0x03, 0x33, 0x06, 0x66, 0x07, 0x0e, 0x2c, 0xe3,
|
||||
0x7b, 0x18, 0x85, 0xc7, 0xd6, 0x51, 0x71, 0x0f, 0x0e, 0xb8, 0x88, 0x9f, 0x5c, 0x6e, 0x41, 0xde,
|
||||
0xeb, 0x71, 0x20, 0x5c, 0xba, 0xf7, 0xc8, 0x6f, 0xba, 0xc1, 0xf7, 0x30, 0xd0, 0xce, 0xc1, 0x31,
|
||||
0x74, 0xec, 0x13, 0x41, 0x77, 0x41, 0x13, 0xa0, 0x10, 0xbf, 0x7c, 0x45, 0xd3, 0xa5, 0xbc, 0x55,
|
||||
0x84, 0xaa, 0x41, 0xc1, 0xc1, 0xe0, 0xe0, 0x29, 0x01, 0x20, 0x81, 0x00, 0x03, 0x80, 0x07, 0xc0,
|
||||
0x0f, 0xe0, 0x06, 0xbe, 0x16, 0x75, 0xe7, 0x9f, 0xfb, 0x1e, 0x17, 0x90, 0xef, 0x0b, 0xbb, 0x15,
|
||||
0x03, 0x7c, 0x2b, 0x7e, 0x22, 0x78, 0x56, 0x83, 0xae, 0x77, 0x40, 0xcf, 0xb0, 0xf0, 0x98, 0x28,
|
||||
0x04, 0x2f, 0xaf, 0x0e, 0x40, 0xfc, 0x01, 0x1c, 0x5c, 0xb1, 0xf2, 0xbf, 0xa5, 0xd7, 0x8f, 0x97,
|
||||
0xc0, 0xfe, 0x9f, 0x02, 0xe7, 0x24, 0x79, 0xe0, 0x9b, 0xa9, 0xfd, 0x74, 0x3b, 0xaf, 0x2d, 0xf8,
|
||||
0x4b, 0xd2, 0xf7, 0x84, 0x54, 0x04, 0x2a, 0x02, 0x02, 0x01, 0xe1, 0x1e, 0xf0, 0x87, 0xff, 0x77,
|
||||
0x07, 0x00, 0x02, 0x00, 0x0d, 0xbd, 0xe1, 0xf0, 0x01, 0x1e, 0xf0, 0xfd, 0x80, 0x4c, 0x24, 0x11,
|
||||
0x2c, 0x10, 0x24, 0x02, 0x01, 0x40, 0xb0, 0x5c, 0x2c, 0x14, 0x08, 0x07, 0x1b, 0x80, 0x01, 0xa7,
|
||||
0xbd, 0x3e, 0x00, 0x27, 0xde, 0x9f, 0xb0, 0x85, 0x01, 0xfb, 0xd2, 0x04, 0x0c, 0x1c, 0x2e, 0x0e,
|
||||
0x06, 0x18, 0x03, 0xd4, 0x00, 0x00, 0x67, 0xef, 0x4f, 0x80, 0x0a, 0xf7, 0xa7, 0xe3, 0x94, 0xe0,
|
||||
0xe0, 0x10, 0x1b, 0xfd, 0xfc, 0x74, 0x62, 0xe8, 0xc0, 0x1d, 0x62, 0x00, 0x0b, 0x00, 0xb7, 0x70,
|
||||
0xe6, 0x8a, 0x68, 0x75, 0x38, 0x3c, 0x3c, 0x4c, 0x2f, 0x87, 0xef, 0x01, 0xc7, 0xb2, 0x40, 0x21,
|
||||
0xa3, 0x23, 0x0a, 0x08, 0x01, 0xa1, 0xa1, 0xe1, 0x80, 0x69, 0x40, 0xe1, 0x00, 0x00, 0x40, 0xd0,
|
||||
0xea, 0xe5, 0xe1, 0xc0, 0x81, 0x87, 0xed, 0x68, 0x1a, 0x08, 0x94, 0x0c, 0x0c, 0xf1, 0x7c, 0xbe,
|
||||
0x5f, 0x2f, 0x8f, 0x00, 0x00, 0x0d, 0x1f, 0x68, 0x7a, 0x1a, 0x04, 0x05, 0xce, 0xe6, 0x2a, 0x0c,
|
||||
0x01, 0xc2, 0x00, 0x40, 0x42, 0x61, 0xc0, 0x49, 0x41, 0x60, 0xa0, 0x80, 0x01, 0xc0, 0x03, 0xe0,
|
||||
0x07, 0xf0, 0x07, 0xfa, 0x00, 0x07, 0x3b, 0x99, 0x01, 0x0f, 0x19, 0x18, 0x54, 0x40, 0xe0, 0x60,
|
||||
0xee, 0xd0, 0x0e, 0x19, 0x0a, 0x03, 0xa5, 0x7d, 0x05, 0xd0, 0x83, 0x98, 0x5a, 0x96, 0x21, 0x4b,
|
||||
0x10, 0x10, 0xe6, 0x17, 0xaf, 0xeb, 0xaf, 0x34, 0x3c, 0xc8, 0x0f, 0xf0, 0x64, 0x3f, 0xd0, 0x0f,
|
||||
0xe0, 0x03, 0xfe, 0x10, 0x02, 0x7d, 0x47, 0x2d, 0x58, 0xfc, 0x35, 0xe0, 0xca, 0x0f, 0x19, 0x0a,
|
||||
0xf9, 0xf1, 0xe0, 0xb9, 0xc0, 0x81, 0x10, 0x03, 0xe0, 0xbd, 0x4f, 0xea, 0x61, 0xf7, 0xeb, 0xf6,
|
||||
0x02, 0xd4, 0x7a, 0xf9, 0xff, 0x15, 0x30, 0xfa, 0x88, 0x68, 0x68, 0xd8, 0x80, 0x12, 0x60, 0x50,
|
||||
0x50, 0xf0, 0x03, 0xfc, 0x01, 0xfe, 0x01, 0x7f, 0xa0, 0x7c, 0x28, 0xbf, 0xd0, 0x3e, 0x64, 0x0f,
|
||||
0x00, 0x37, 0x00, 0x08, 0x80, 0x20, 0x0b, 0x88, 0x81, 0xa5, 0x04, 0x84, 0x60, 0x40, 0x36, 0x04,
|
||||
0x1b, 0x8f, 0x88, 0x01, 0x00, 0xa1, 0x80, 0x1e, 0x00, 0x36, 0xfd, 0xb9, 0x12, 0x02, 0x4c, 0x09,
|
||||
0x08, 0x1e, 0x00, 0x61, 0x80, 0x20, 0x60, 0x44, 0x17, 0xdc, 0x7c, 0x62, 0x00, 0x03, 0x67, 0xdb,
|
||||
0x81, 0xb1, 0x30, 0x34, 0xb0, 0xa0, 0xaf, 0xa0, 0x80, 0x75, 0x35, 0x20, 0x7c, 0x49, 0xfc, 0x0f,
|
||||
0xf5, 0x0d, 0x7f, 0x7e, 0x45, 0x00, 0x53, 0x42, 0x82, 0x83, 0xc0, 0x0c, 0x28, 0x1f, 0x72, 0x3e,
|
||||
0xd3, 0xf5, 0x62, 0xd4, 0x00, 0x22, 0xa8, 0x81, 0xec, 0x67, 0x96, 0x02, 0xa0, 0x49, 0x7d, 0xfd,
|
||||
0x6b, 0xbf, 0xcc, 0x7c, 0x4a, 0xf8, 0xd0, 0x00, 0x00, 0xcf, 0xd5, 0xd2, 0x23, 0x35, 0x60, 0x01,
|
||||
0xf1, 0x60, 0x14, 0xc0, 0xb0, 0xbe, 0xb3, 0x02, 0x0f, 0x89, 0x5f, 0x1b, 0x00, 0x02, 0x0b, 0xfd,
|
||||
0x80, 0x00, 0x01, 0x9b, 0xf3, 0x40, 0x42, 0x10, 0x00, 0xd8, 0xb8, 0x0f, 0xa8, 0x17, 0xfe, 0x59,
|
||||
0xef, 0x14, 0x61, 0xf2, 0x30, 0x65, 0xfc, 0x51, 0xe2, 0xc1, 0x18, 0xc0, 0x07, 0x5e, 0x68, 0x08,
|
||||
0xe8, 0x46, 0xf8, 0x95, 0xf1, 0xb0, 0xf9, 0x13, 0x7f, 0xbc, 0x00, 0x00, 0x32, 0x7e, 0xa8, 0xeb,
|
||||
0xcd, 0x03, 0x20, 0x09, 0xa1, 0x81, 0x97, 0xfb, 0x87, 0x80, 0xb0, 0xf9, 0x19, 0x7c, 0xa8, 0x63,
|
||||
0xf3, 0xe6, 0x20, 0x22, 0xbd, 0x85, 0x9e, 0x62, 0x00, 0x8b, 0x7c, 0x87, 0x91, 0x00, 0x22, 0xff,
|
||||
0x21, 0xe2, 0xa0, 0x08, 0xc7, 0xc8, 0x78, 0x20, 0x02, 0x33, 0xf2, 0x1c, 0x10, 0x41, 0xe3, 0x40,
|
||||
0x69, 0x7c, 0x45, 0x72, 0x62, 0xf0, 0x04, 0x7f, 0x60, 0x68, 0x6f, 0x80, 0x00, 0x08, 0x1f, 0xf7,
|
||||
0xad, 0x51, 0x03, 0xf3, 0xf8, 0xa0, 0x9d, 0xa8, 0x40, 0x00, 0x23, 0x42, 0x37, 0x46, 0x0f, 0xde,
|
||||
0xa6, 0x06, 0xd3, 0x3c, 0x33, 0xe1, 0x78, 0xd8, 0x34, 0x32, 0x14, 0x67, 0xdb, 0xd2, 0x38, 0xaf,
|
||||
0xc7, 0x9c, 0xdf, 0xd0, 0x21, 0xe6, 0xd7, 0x80, 0x40, 0x22, 0x3f, 0x21, 0xe8, 0xd8, 0x12, 0xf9,
|
||||
0x0f, 0xb4, 0x01, 0x13, 0xf9, 0x0f, 0x46, 0xc0, 0xa7, 0x13, 0x37, 0x1e, 0x67, 0x07, 0x8b, 0x01,
|
||||
0xfd, 0xfe, 0x0f, 0xf7, 0x7a, 0xf0, 0x16, 0x36, 0x0a, 0x92, 0x08, 0x08, 0xc1, 0x70, 0xb8, 0x30,
|
||||
0x34, 0xf1, 0xf3, 0x72, 0x27, 0x8f, 0x4b, 0x60, 0x21, 0xc4, 0xdd, 0xe2, 0xdf, 0x0b, 0xca, 0x4f,
|
||||
0x2e, 0x4f, 0x9c, 0xde, 0x59, 0xe9, 0xf1, 0x55, 0x00, 0x8d, 0xf2, 0x20, 0x53, 0x3c, 0xc4, 0xf6,
|
||||
0x46, 0x7e, 0x24, 0xee, 0xf2, 0x0c, 0x0d, 0x81, 0x83, 0xf9, 0x98, 0x0e, 0x00, 0x02, 0x10, 0x11,
|
||||
0x01, 0x08, 0x95, 0x2a, 0xfc, 0x28, 0x95, 0x2a, 0x84, 0x80, 0xbf, 0x81, 0x06, 0x80, 0x0d, 0x00,
|
||||
0x86, 0xe0, 0x6b, 0xa5, 0xc3, 0xd8, 0x8f, 0x22, 0xa0, 0x3e, 0xe9, 0x8f, 0x90, 0xf2, 0x6b, 0x85,
|
||||
0x77, 0x57, 0x99, 0x43, 0x5c, 0x66, 0x5f, 0x9e, 0x85, 0x7c, 0x3f, 0x1f, 0xb3, 0xce, 0xc0, 0x0e,
|
||||
0x64, 0x20, 0x0e, 0x20, 0xdc, 0x7e, 0x18, 0x81, 0x90, 0xa3, 0x13, 0x4e, 0x52, 0x71, 0x81, 0x03,
|
||||
0xa4, 0x30, 0x30, 0x6c, 0x73, 0x8f, 0xc4, 0x50, 0x60, 0x16, 0x38, 0x03, 0xbf, 0x6f, 0x89, 0x3e,
|
||||
0x00, 0x77, 0x00, 0xb1, 0xc0, 0x28, 0x3d, 0x73, 0x98, 0x06, 0xfe, 0x00, 0xe9, 0x81, 0xa3, 0xb8,
|
||||
0x1c, 0x85, 0x20, 0x45, 0x45, 0xe1, 0xa1, 0x23, 0x63, 0xa0, 0x29, 0x61, 0x41, 0x27, 0xf4, 0x03,
|
||||
0xfa, 0x01, 0x02, 0x05, 0xff, 0xe1, 0x20, 0x34, 0x08, 0x08, 0x04, 0x04, 0x02, 0xff, 0xeb, 0x96,
|
||||
0x05, 0x24, 0x8e, 0x0a, 0xb1, 0xce, 0xf2, 0x06, 0xc7, 0xb9, 0x01, 0xd7, 0x20, 0x52, 0x04, 0x03,
|
||||
0xe1, 0x47, 0xc4, 0xa4, 0x0b, 0xfd, 0x03, 0x01, 0xc0, 0x47, 0xe6, 0xc0, 0x2c, 0x7c, 0x09, 0x10,
|
||||
0x1c, 0x0a, 0xfd, 0x7e, 0xc0, 0xd2, 0x94, 0x7a, 0x1a, 0x06, 0x07, 0xcf, 0x12, 0x2a, 0x8c, 0x1e,
|
||||
0xe7, 0x07, 0x08, 0x81, 0x81, 0x91, 0x90, 0x72, 0x26, 0x9e, 0x55, 0x44, 0x0e, 0x4d, 0x21, 0x00,
|
||||
0x08, 0x40, 0x02, 0x20, 0x01, 0x17, 0x2c, 0xd4, 0x22, 0x00, 0x88, 0x80, 0x44, 0x40, 0x23, 0xcd,
|
||||
0xf8, 0xf1, 0xc8, 0x9b, 0x02, 0x10, 0x0c, 0x02, 0x99, 0x30, 0x00, 0x0a, 0x06, 0x01, 0x4b, 0x18,
|
||||
0x00, 0x46, 0x00, 0x29, 0x9c, 0xa3, 0x86, 0x60, 0x11, 0x98, 0x05, 0x32, 0x80, 0xcc, 0xc0, 0xf3,
|
||||
0xc3, 0xb8, 0x7a, 0x21, 0x7d, 0xbe, 0xfa, 0xce, 0x2a, 0x9d, 0xfa, 0xa0, 0x3c, 0x32, 0xfb, 0x7d,
|
||||
0x13, 0x22, 0x05, 0xeb, 0x0b, 0xbb, 0xb8, 0x00, 0x15, 0xfe, 0xfe, 0x1a, 0x14, 0x7e, 0x1c, 0x00,
|
||||
0x01, 0x82, 0x3a, 0xa7, 0xd2, 0x6c, 0x11, 0xdd, 0x00, 0x00, 0x00, 0xc0, 0x40, 0x18, 0x23, 0x5a,
|
||||
0x00, 0x80, 0xb0, 0x47, 0x84, 0x7c, 0xa8, 0x03, 0xa7, 0x82, 0x48, 0x83, 0x01, 0x50, 0x11, 0x2a,
|
||||
0x37, 0xfb, 0xfc, 0x03, 0x03, 0xd1, 0xa3, 0x35, 0x68, 0xcd, 0x58, 0x40, 0x03, 0xe3, 0x47, 0xc4,
|
||||
0xaf, 0x8d, 0x1f, 0x42, 0x84, 0x20, 0x81, 0x08, 0x57, 0xfb, 0xff, 0xd0, 0x98, 0x27, 0xc8, 0xaf,
|
||||
0x99, 0x1f, 0x12, 0x04, 0x3e, 0x84, 0xfe, 0x08, 0x1c, 0xc1, 0x31, 0x58, 0x80, 0x3a, 0xd1, 0x99,
|
||||
0x8a, 0x40, 0x02, 0x5a, 0x04, 0x00, 0x02, 0x1a, 0x38, 0xf3, 0x08, 0x00, 0x01, 0xda, 0xe3, 0x35,
|
||||
0x60, 0x5f, 0x88, 0x00, 0x03, 0x6e, 0xbf, 0xdf, 0xc0, 0xbe, 0x20, 0x00, 0x42, 0x80, 0x01, 0x77,
|
||||
0x9e, 0x80, 0xd0, 0x30, 0x4a, 0x32, 0x81, 0xe3, 0x94, 0x04, 0x21, 0x0a, 0x9c, 0xcc, 0x52, 0x03,
|
||||
0x7d, 0xa7, 0x0c, 0x51, 0x80, 0x6f, 0xa5, 0xc0, 0x3f, 0x3e, 0x80, 0xa0, 0x22, 0x10, 0x40, 0x68,
|
||||
0x17, 0x9f, 0x60, 0x1e, 0x9b, 0x09, 0x52, 0x03, 0x2d, 0x03, 0x81, 0x88, 0x41, 0x3c, 0x65, 0x14,
|
||||
0x98, 0xcd, 0x58, 0x6a, 0x04, 0x21, 0x80, 0x9b, 0x81, 0x45, 0x21, 0x24, 0xe1, 0x8c, 0xf1, 0x9a,
|
||||
0xb0, 0xa9, 0x38, 0xef, 0xe7, 0x90, 0xdf, 0x98, 0x00, 0x19, 0xa8, 0x18, 0x42, 0x6a, 0xc0, 0x7f,
|
||||
0xda, 0x00, 0x00, 0x2b, 0x1e, 0x36, 0x7c, 0xaa, 0xa0, 0x00, 0xc0, 0xf8, 0xa0, 0xbe, 0x60, 0x2e,
|
||||
0xb1, 0x09, 0xab, 0x60, 0x3e, 0x38, 0xf9, 0x6f, 0xa9, 0x3e, 0x08, 0x81, 0xa6, 0x8c, 0x13, 0xae,
|
||||
0x83, 0x7e, 0x0a, 0xfb, 0x0f, 0x60, 0x86, 0x3e, 0x90, 0x6d, 0xa2, 0x33, 0x56, 0x06, 0xfa, 0xcf,
|
||||
0xc5, 0x1f, 0x12, 0x38, 0x49, 0x3d, 0x04, 0x03, 0xa6, 0x42, 0x54, 0x82, 0x3e, 0xd3, 0xd1, 0xd0,
|
||||
0x08, 0x58, 0x06, 0xdc, 0x10, 0x85, 0xe8, 0xf8, 0xf8, 0x94, 0x10, 0x84, 0x21, 0xe7, 0xa3, 0x85,
|
||||
0xfe, 0xfe, 0xc1, 0xe9, 0x77, 0xa3, 0x27, 0xe7, 0xbd, 0x31, 0x98, 0x17, 0xa1, 0xe2, 0x13, 0xe8,
|
||||
0x5a, 0xf1, 0x44, 0x7c, 0x4a, 0x00, 0x00, 0x07, 0x2d, 0x03, 0x2d, 0x05, 0xa3, 0x46, 0x6a, 0xc1,
|
||||
0x9e, 0x9f, 0x9f, 0x51, 0xc0, 0x55, 0x1a, 0x13, 0x56, 0x0e, 0xf4, 0xa4, 0x85, 0xfd, 0x4c, 0x47,
|
||||
0x10, 0x0d, 0x70, 0x24, 0x9b, 0xfa, 0x45, 0x41, 0x3a, 0x33, 0xea, 0x28, 0x60, 0x00, 0x80, 0x00,
|
||||
0xbc, 0x00, 0x80, 0x7b, 0x2e, 0x43, 0x10, 0x0b, 0x00, 0xec, 0x1e, 0x98, 0x8a, 0xb4, 0x26, 0xac,
|
||||
0x5f, 0xf9, 0x20, 0x03, 0xf2, 0xc1, 0xdf, 0xca, 0x14, 0x40, 0x07, 0x40, 0x1e, 0x00, 0x3d, 0x10,
|
||||
0xe1, 0x37, 0x90, 0x64, 0x17, 0xec, 0x3d, 0x4c, 0xf5, 0x94, 0x20, 0x15, 0x80, 0xdc, 0x3e, 0x74,
|
||||
0x7f, 0x87, 0x87, 0xa9, 0xa6, 0x33, 0x56, 0x16, 0xfd, 0xcf, 0xa9, 0x1f, 0x12, 0x23, 0x35, 0x60,
|
||||
0xaf, 0xa4, 0x04, 0xf5, 0xb0, 0x1f, 0xe4, 0x3d, 0x75, 0x1c, 0x20, 0xeb, 0xd7, 0x19, 0x00, 0xb8,
|
||||
0x04, 0x21, 0x7a, 0xd3, 0xbe, 0x15, 0xeb, 0x4a, 0xf1, 0x84, 0x78, 0x52, 0x3e, 0x25, 0x03, 0x16,
|
||||
0x81, 0xc3, 0x7d, 0x59, 0x1f, 0x12, 0x30, 0x50, 0xe3, 0xe1, 0xcf, 0xc5, 0x8f, 0xa1, 0x1c, 0x0e,
|
||||
0x9e, 0xd0, 0x0d, 0x7b, 0x18, 0x14, 0xcc, 0x21, 0x04, 0x1b, 0x6a, 0x8c, 0xd5, 0x86, 0xe0, 0x31,
|
||||
0x9a, 0xb0, 0x4f, 0xc8, 0x0b, 0x7c, 0x40, 0x37, 0xc4, 0x5c, 0x22, 0x80, 0x3e, 0x54, 0x71, 0x10,
|
||||
0xbf, 0x26, 0xf9, 0xa2, 0x1c, 0x0b, 0x82, 0xf0, 0x8f, 0x22, 0x47, 0x8a, 0xab, 0xca, 0xd4, 0x31,
|
||||
0x08, 0xf1, 0xe6, 0x51, 0x9a, 0xb7, 0xcc, 0x80, 0x7f, 0xc9, 0xc2, 0x13, 0x08, 0xfd, 0x95, 0xfe,
|
||||
0x23, 0xc0, 0x14, 0x0f, 0x08, 0xe1, 0xb5, 0x5f, 0x4a, 0x38, 0x10, 0x47, 0x1b, 0x17, 0x0a, 0x07,
|
||||
0x1d, 0x38, 0xe3, 0xcb, 0x42, 0x10, 0x4f, 0x5d, 0x40, 0x3f, 0xf8, 0xe1, 0x0a, 0xe0, 0x45, 0xa8,
|
||||
0x47, 0xe0, 0x78, 0x23, 0x0f, 0x91, 0x5f, 0x4a, 0x7f, 0xe3, 0xc9, 0x11, 0xe0, 0x4a, 0x09, 0xfe,
|
||||
0x5a, 0xf0, 0xea, 0x8f, 0x21, 0x57, 0x82, 0xa3, 0xfa, 0x47, 0xc4, 0x8e, 0x0d, 0x8f, 0xcc, 0xfe,
|
||||
0x11, 0xf1, 0x22, 0x33, 0x56, 0xe1, 0xf9, 0x1f, 0x9a, 0x83, 0x79, 0x2d, 0xe3, 0xf5, 0x23, 0xf6,
|
||||
0x50, 0x64, 0x17, 0xce, 0x4f, 0x12, 0x58, 0x5f, 0xe0, 0xc4, 0x32, 0x0d, 0xfc, 0xab, 0xd5, 0x54,
|
||||
0x15, 0x04, 0xfd, 0x91, 0xf1, 0x20, 0x32, 0x0d, 0xe1, 0x48, 0xf8, 0x91, 0xe5, 0x48, 0x09, 0xfc,
|
||||
0xdb, 0x7b, 0xab, 0x84, 0x22, 0x0d, 0xfd, 0x23, 0xda, 0xd1, 0xf2, 0x20, 0x2a, 0x11, 0xfe, 0x23,
|
||||
0xe7, 0x4f, 0x8c, 0x2f, 0x80, 0xe7, 0x1f, 0x09, 0x40, 0x2f, 0x00, 0xee, 0x7f, 0xf5, 0x1f, 0x12,
|
||||
0x3c, 0x0d, 0x40, 0xff, 0xa9, 0xc3, 0x1b, 0x01, 0x42, 0xce, 0x18, 0x5b, 0x52, 0xd9, 0x8a, 0x79,
|
||||
0xa7, 0xbc, 0xc5, 0x01, 0x08, 0x41, 0x21, 0xb5, 0xfc, 0x1b, 0x93, 0x1e, 0x8f, 0x60, 0x02, 0x98,
|
||||
0xf8, 0xe0, 0x0c, 0x1c, 0x2e, 0x15, 0x00, 0xe7, 0x61, 0x08, 0x02, 0xfd, 0x16, 0x5c, 0xdb, 0xf2,
|
||||
0xb8, 0x4f, 0x03, 0xfd, 0x81, 0x8a, 0x88, 0x52, 0x05, 0x20, 0x0e, 0xe9, 0xf9, 0xaa, 0xed, 0x7f,
|
||||
0xbf, 0xd0, 0x0b, 0x0b, 0x42, 0x60, 0x85, 0xa1, 0x3f, 0x0a, 0x0b, 0x42, 0x40, 0x08, 0xa8, 0x02,
|
||||
0x04, 0xa9, 0x60, 0x46, 0x00, 0x45, 0x40, 0x5c, 0xa7, 0xa6, 0xfa, 0x5c, 0x07, 0xf0, 0xe0, 0xa4,
|
||||
0x0f, 0x94, 0xc4, 0x16, 0x82, 0x96, 0x82, 0x94, 0x83, 0x71, 0x76, 0x04, 0x94, 0x8f, 0xa1, 0xf3,
|
||||
0x40, 0x00, 0x93, 0x85, 0xa2, 0x50, 0xc0, 0x00, 0x28, 0x1c, 0xbb, 0x03, 0x09, 0x12, 0x5e, 0x91,
|
||||
0xaf, 0x21, 0x42, 0x05, 0x09, 0x6b, 0xe5, 0x59, 0x27, 0xcf, 0x8f, 0x88, 0x24, 0x00, 0x90, 0x7c,
|
||||
0x60, 0x00, 0x00, 0x17, 0x1a, 0x02, 0x40, 0x2c, 0x03, 0x94, 0x1a, 0xf8, 0x02, 0xa0, 0x80, 0xd2,
|
||||
0x15, 0xf5, 0x64, 0x00, 0xc0, 0x32, 0x01, 0x83, 0xa4, 0xc0, 0x5e, 0xb2, 0x0e, 0x70, 0x9a, 0x7b,
|
||||
0x12, 0x23, 0x35, 0x6f, 0x26, 0x43, 0x7f, 0x40, 0x6a, 0x04, 0xe8, 0x14, 0x04, 0xa4, 0xb3, 0x14,
|
||||
0x81, 0x30, 0x2f, 0x16, 0x84, 0xd0, 0x0c, 0x0b, 0x42, 0x6e, 0x14, 0x00, 0x9a, 0x00, 0x87, 0x76,
|
||||
0x80, 0x07, 0x98, 0x2c, 0x03, 0x99, 0x9c, 0xf3, 0xbb, 0x7f, 0xb8, 0xa4, 0xdb, 0xde, 0xfc, 0x4a,
|
||||
0x00, 0x05, 0xa4, 0xc2, 0x6a, 0xc0, 0xed, 0x3d, 0x15, 0xc1, 0x04, 0xe1, 0x30, 0x2e, 0x2c, 0xf1,
|
||||
0x50, 0x69, 0x84, 0xa9, 0x0f, 0xf8, 0xc2, 0xbe, 0x35, 0xa8, 0x87, 0x50, 0x10, 0x0e, 0x00, 0xe5,
|
||||
0x1e, 0xc6, 0xa9, 0x55, 0xfe, 0xff, 0x48, 0xf5, 0xe0, 0x53, 0xdc, 0x78, 0x80, 0x10, 0x51, 0x89,
|
||||
0x52, 0xc0, 0x06, 0xab, 0x03, 0x14, 0x6f, 0xed, 0x85, 0xde, 0x80, 0x03, 0x09, 0x52, 0xe5, 0xff,
|
||||
0x5e, 0x02, 0xbf, 0x8f, 0x8f, 0xc9, 0xcf, 0xe5, 0xeb, 0xf3, 0x72, 0xbb, 0x80, 0x00, 0xc6, 0x6a,
|
||||
0xd8, 0x08, 0x95, 0xf4, 0xb2, 0xf9, 0x4f, 0xa1, 0xc1, 0xc2, 0x5a, 0xef, 0xf7, 0xfa, 0x81, 0xdd,
|
||||
0xbd, 0xef, 0xee, 0xe0, 0xd1, 0xe5, 0x72, 0xc5, 0xcd, 0xf0, 0x2c, 0x00, 0x03, 0xcb, 0x98, 0xf0,
|
||||
0x7f, 0x52, 0x00
|
||||
};
|
||||
|
||||
BYTE_t decompressed_rd5[] =
|
||||
{
|
||||
0x24, 0x02, 0x03, 0x09, 0x00, 0x20, 0x0c, 0x05, 0x10, 0x01, 0x40, 0x0a, 0xff, 0xff, 0x0c, 0x84,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1d, 0x0d, 0x38, 0x01, 0xc0, 0x10, 0x01, 0x10,
|
||||
0x01, 0xcc, 0xff, 0x7f, 0x03, 0x08, 0x00, 0x20, 0x04, 0x05, 0x10, 0x01, 0x40, 0x0a, 0x00, 0x0c,
|
||||
0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x35, 0x00, 0x01, 0x00, 0x00, 0x0d, 0x0a,
|
||||
0x0c, 0x0c, 0xff, 0x03, 0xff, 0x02, 0x00, 0x04, 0x00, 0x03, 0x06, 0x00, 0x00, 0x80, 0x00, 0x80,
|
||||
0x00, 0x02, 0x00, 0x00, 0x09, 0x00, 0x0c, 0x80, 0x00, 0x80, 0x00, 0x06, 0x00, 0x00, 0x48, 0x00,
|
||||
0x37, 0x01, 0x02, 0x00, 0x00, 0x01, 0x0c, 0x48, 0x00, 0x37, 0x01, 0x06, 0x01, 0x00, 0x00, 0x04,
|
||||
0x24, 0x00, 0x02, 0x01, 0x00, 0x01, 0x0c, 0x00, 0x04, 0x24, 0x00, 0x02, 0x00, 0x00, 0x09, 0x0a,
|
||||
0x3d, 0x0f, 0x00, 0x01, 0x00, 0x0e, 0x00, 0x08, 0x42, 0x11, 0x0f, 0xf1, 0x0d, 0x0e, 0xf3, 0x11,
|
||||
0x3e, 0xf3, 0xf2, 0x0c, 0xff, 0xff, 0x11, 0x0d, 0x01, 0x0d, 0xf4, 0x11, 0x3f, 0x0d, 0x01, 0xf3,
|
||||
0x0b, 0x10, 0x84, 0x11, 0x0f, 0xf3, 0x0b, 0x0c, 0xf5, 0x11, 0x3e, 0xf5, 0xf4, 0x0a, 0x99, 0xd6,
|
||||
0x11, 0x0d, 0x01, 0x0b, 0xf6, 0x11, 0x0a, 0x01, 0x09, 0x09, 0x18, 0xfb, 0x70, 0x06, 0x00, 0x03,
|
||||
0xff, 0xff, 0x00, 0x03, 0x00, 0x02, 0x00, 0x0d, 0x00, 0x0c, 0x00, 0x00, 0x80, 0x0c, 0x00, 0x0f,
|
||||
0x00, 0x01, 0x49, 0x08, 0x07, 0xc3, 0x66, 0x3c, 0x18, 0x3c, 0x66, 0xc3, 0x00, 0x72, 0x00, 0x19,
|
||||
0x0a, 0x3f, 0x1d, 0xfe, 0xf5, 0x04, 0xff, 0xff, 0x11, 0x0f, 0xf1, 0x0d, 0x0e, 0xf3, 0x11, 0x3e,
|
||||
0xf3, 0xf2, 0x0c, 0x08, 0x42, 0x11, 0x0d, 0x01, 0x0d, 0xf4, 0x11, 0x3f, 0x0d, 0x01, 0xf3, 0x0b,
|
||||
0x99, 0xd6, 0x11, 0x0f, 0xf3, 0x0b, 0x0c, 0xf5, 0x11, 0x3e, 0xf5, 0xf4, 0x0a, 0x10, 0x84, 0x11,
|
||||
0x0d, 0x01, 0x0b, 0xf6, 0x11, 0x3a, 0x01, 0x09, 0x99, 0xd6, 0x19, 0x18, 0xf0, 0x60, 0x11, 0x01,
|
||||
0x11, 0x01, 0x01, 0x01, 0x00, 0x19, 0x0a, 0x3f, 0x1d, 0xfe, 0xf5, 0x04, 0x08, 0x42, 0x11, 0x0f,
|
||||
0xf1, 0x0d, 0x0e, 0xf3, 0x11, 0x3e, 0xf3, 0xf2, 0x0c, 0xff, 0xff, 0x11, 0x0d, 0x01, 0x0d, 0xf4,
|
||||
0x11, 0x3f, 0x0d, 0x01, 0xf3, 0x0b, 0x10, 0x84, 0x11, 0x0f, 0xf3, 0x0b, 0x0c, 0xf5, 0x11, 0x3e,
|
||||
0xf5, 0xf4, 0x0a, 0x99, 0xd6, 0x11, 0x0d, 0x01, 0x0b, 0xf6, 0x11, 0x0a, 0x01, 0x09, 0x19, 0x18,
|
||||
0xf4, 0x20, 0x10, 0x00, 0x00, 0x0f, 0xff, 0x0f, 0xff, 0xff, 0x19, 0x0a, 0x3f, 0x1d, 0xfe, 0xf5,
|
||||
0x04, 0x08, 0x42, 0x11, 0x0f, 0xf1, 0x0d, 0x0e, 0xf3, 0x11, 0x3e, 0xf3, 0xf2, 0x0c, 0xff, 0xff,
|
||||
0x11, 0x0d, 0x01, 0x0d, 0xf4, 0x11, 0x3f, 0x0d, 0x01, 0xf3, 0x0b, 0x10, 0x84, 0x11, 0x0f, 0xf3,
|
||||
0x0b, 0x0c, 0xf5, 0x11, 0x3e, 0xf5, 0xf4, 0x0a, 0x99, 0xd6, 0x11, 0x0d, 0x01, 0x0b, 0xf6, 0x11,
|
||||
0x0a, 0x01, 0x09, 0x19, 0x18, 0xf4, 0x20, 0xff, 0xff, 0x00, 0x11, 0x01, 0x11, 0x01, 0x01, 0x11,
|
||||
0xf4, 0x20, 0x10, 0x84, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0x19, 0x0a, 0x3f, 0xdd, 0x0c, 0xf5,
|
||||
0x04, 0x08, 0x42, 0x11, 0x0f, 0xf1, 0x0d, 0x0e, 0xf3, 0x11, 0x3e, 0xf3, 0xf2, 0x0c, 0xff, 0xff,
|
||||
0x11, 0x0d, 0x01, 0x0d, 0xf4, 0x11, 0x3f, 0x0d, 0x01, 0xf3, 0x0b, 0x10, 0x84, 0x11, 0x0f, 0xf3,
|
||||
0x0b, 0x0c, 0xf5, 0x11, 0x3e, 0xf5, 0xf4, 0x0a, 0x99, 0xd6, 0x11, 0x0d, 0x01, 0x0b, 0xf6, 0x11,
|
||||
0x0a, 0x01, 0x09, 0x19, 0x18, 0xf4, 0x60, 0x00, 0x00, 0x00, 0xd0, 0x0e, 0xd0, 0x0e, 0x0e, 0x0b,
|
||||
0x01, 0x01, 0x43, 0x06, 0x02, 0xfc, 0xfc, 0x00, 0x00, 0x30, 0x00, 0x19, 0x0a, 0x3f, 0x1d, 0xfe,
|
||||
0xf5, 0x04, 0xff, 0xff, 0x11, 0x0f, 0xf1, 0x0d, 0x0e, 0xf3, 0x11, 0x3e, 0xf3, 0xf2, 0x0c, 0x08,
|
||||
0x42, 0x11, 0x0d, 0x01, 0x0d, 0xf4, 0x11, 0x3f, 0x0d, 0x01, 0xf3, 0x0b, 0x99, 0xd6, 0x11, 0x0f,
|
||||
0xf3, 0x0b, 0x0c, 0xf5, 0x11, 0x3e, 0xf5, 0xf4, 0x0a, 0x10, 0x84, 0x11, 0x0d, 0x01, 0x0b, 0xf6,
|
||||
0x11, 0x3a, 0x01, 0x09, 0x99, 0xd6, 0x19, 0x18, 0xf0, 0x60, 0x11, 0x01, 0x11, 0x01, 0x01, 0x01,
|
||||
0x01, 0x19, 0x0a, 0x3f, 0x1d, 0xfe, 0xf5, 0x04, 0x08, 0x42, 0x11, 0x0f, 0xf1, 0x0d, 0x0e, 0xf3,
|
||||
0x11, 0x3e, 0xf3, 0xf2, 0x0c, 0xff, 0xff, 0x11, 0x0d, 0x01, 0x0d, 0xf4, 0x11, 0x3f, 0x0d, 0x01,
|
||||
0xf3, 0x0b, 0x10, 0x84, 0x11, 0x0f, 0xf3, 0x0b, 0x0c, 0xf5, 0x11, 0x3e, 0xf5, 0xf4, 0x0a, 0x99,
|
||||
0xd6, 0x11, 0x0d, 0x01, 0x0b, 0xf6, 0x11, 0x0a, 0x01, 0x09, 0x19, 0x18, 0xf4, 0x20, 0x10, 0x00,
|
||||
0x00, 0x0f, 0xff, 0x0f, 0xff, 0xff, 0x19, 0x0a, 0x3f, 0x1d, 0xfe, 0xf5, 0x04, 0x08, 0x42, 0x11,
|
||||
0x0f, 0xf1, 0x0d, 0x0e, 0xf3, 0x11, 0x3e, 0xf3, 0xf2, 0x0c, 0xff, 0xff, 0x11, 0x0d, 0x01, 0x0d,
|
||||
0xf4, 0x11, 0x3f, 0x0d, 0x01, 0xf3, 0x0b, 0x10, 0x84, 0x11, 0x0f, 0xf3, 0x0b, 0x0c, 0xf5, 0x11,
|
||||
0x3e, 0xf5, 0xf4, 0x0a, 0x99, 0xd6, 0x11, 0x0d, 0x01, 0x0b, 0xf6, 0x11, 0x0a, 0x01, 0x09, 0x19,
|
||||
0x18, 0xf4, 0x20, 0xff, 0xff, 0x00, 0x11, 0x01, 0x11, 0x01, 0x01, 0x11, 0xf4, 0x20, 0x10, 0x84,
|
||||
0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0x19, 0x0a, 0x3f, 0xdd, 0x0c, 0xf5, 0x04, 0x08, 0x42, 0x11,
|
||||
0x0f, 0xf1, 0x0d, 0x0e, 0xf3, 0x11, 0x3e, 0xf3, 0xf2, 0x0c, 0xff, 0xff, 0x11, 0x0d, 0x01, 0x0d,
|
||||
0xf4, 0x11, 0x3f, 0x0d, 0x01, 0xf3, 0x0b, 0x10, 0x84, 0x11, 0x0f, 0xf3, 0x0b, 0x0c, 0xf5, 0x11,
|
||||
0x3e, 0xf5, 0xf4, 0x0a, 0x99, 0xd6, 0x11, 0x0d, 0x01, 0x0b, 0xf6, 0x11, 0x0a, 0x01, 0x09, 0x19,
|
||||
0x18, 0xf4, 0x60, 0x00, 0x00, 0x00, 0xd0, 0x0e, 0xd0, 0x0e, 0x0e, 0x13, 0x02, 0x00, 0x4a, 0x08,
|
||||
0x09, 0x3f, 0x3f, 0x21, 0xfd, 0xfd, 0x87, 0x84, 0x84, 0xfc, 0x00, 0x00, 0x00, 0x32, 0x00, 0x19,
|
||||
0x0a, 0x3f, 0x1d, 0xfe, 0xf5, 0x04, 0xff, 0xff, 0x11, 0x0f, 0xf1, 0x0d, 0x0e, 0xf3, 0x11, 0x3e,
|
||||
0xf3, 0xf2, 0x0c, 0x08, 0x42, 0x11, 0x0d, 0x01, 0x0d, 0xf4, 0x11, 0x3f, 0x0d, 0x01, 0xf3, 0x0b,
|
||||
0x99, 0xd6, 0x11, 0x0f, 0xf3, 0x0b, 0x0c, 0xf5, 0x11, 0x3e, 0xf5, 0xf4, 0x0a, 0x10, 0x84, 0x11,
|
||||
0x0d, 0x01, 0x0b, 0xf6, 0x11, 0x3a, 0x01, 0x09, 0x99, 0xd6, 0x19, 0x18, 0xf0, 0x60, 0x11, 0x01,
|
||||
0x11, 0x01, 0x01, 0x01, 0x02, 0x19, 0x0a, 0x3f, 0x1d, 0xfe, 0xf5, 0x04, 0x08, 0x42, 0x11, 0x0f,
|
||||
0xf1, 0x0d, 0x0e, 0xf3, 0x11, 0x3e, 0xf3, 0xf2, 0x0c, 0xff, 0xff, 0x11, 0x0d, 0x01, 0x0d, 0xf4,
|
||||
0x11, 0x3f, 0x0d, 0x01, 0xf3, 0x0b, 0x10, 0x84, 0x11, 0x0f, 0xf3, 0x0b, 0x0c, 0xf5, 0x11, 0x3e,
|
||||
0xf5, 0xf4, 0x0a, 0x99, 0xd6, 0x11, 0x0d, 0x01, 0x0b, 0xf6, 0x11, 0x0a, 0x01, 0x09, 0x19, 0x18,
|
||||
0xf4, 0x20, 0x10, 0x00, 0x00, 0x0f, 0xff, 0x0f, 0xff, 0xff, 0x19, 0x0a, 0x3f, 0x1d, 0xfe, 0xf5,
|
||||
0x04, 0x08, 0x42, 0x11, 0x0f, 0xf1, 0x0d, 0x0e, 0xf3, 0x11, 0x3e, 0xf3, 0xf2, 0x0c, 0xff, 0xff,
|
||||
0x11, 0x0d, 0x01, 0x0d, 0xf4, 0x11, 0x3f, 0x0d, 0x01, 0xf3, 0x0b, 0x10, 0x84, 0x11, 0x0f, 0xf3,
|
||||
0x0b, 0x0c, 0xf5, 0x11, 0x3e, 0xf5, 0xf4, 0x0a, 0x99, 0xd6, 0x11, 0x0d, 0x01, 0x0b, 0xf6, 0x11,
|
||||
0x0a, 0x01, 0x09, 0x19, 0x18, 0x54, 0x40, 0x00, 0x00, 0x00, 0x10, 0x10, 0x13, 0x03, 0x02, 0x4a,
|
||||
0x06, 0x09, 0x78, 0xcc, 0xcc, 0x18, 0x30, 0x30, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x73, 0x00,
|
||||
0x19, 0x0a, 0x3f, 0xdd, 0x0c, 0xf5, 0x04, 0xff, 0xff, 0x11, 0x0f, 0xf1, 0x0d, 0x0e, 0xf3, 0x11,
|
||||
0x3e, 0xf3, 0xf2, 0x0c, 0x08, 0x42, 0x11, 0x0d, 0x01, 0x0d, 0xf4, 0x11, 0x3f, 0x0d, 0x01, 0xf3,
|
||||
0x0b, 0x99, 0xd6, 0x11, 0x0f, 0xf3, 0x0b, 0x0c, 0xf5, 0x11, 0x3e, 0xf5, 0xf4, 0x0a, 0x10, 0x84,
|
||||
0x11, 0x0d, 0x01, 0x0b, 0xf6, 0x11, 0x3a, 0x01, 0x09, 0x99, 0xd6, 0x19, 0x18, 0xf0, 0x60, 0xd1,
|
||||
0x0f, 0xd1, 0x0f, 0x0f, 0x01, 0x03, 0x19, 0x0a, 0x3f, 0x1d, 0xfe, 0xf5, 0x04, 0x08, 0x42, 0x11,
|
||||
0x0f, 0xf1, 0x0d, 0x0e, 0xf3, 0x11, 0x3e, 0xf3, 0xf2, 0x0c, 0xff, 0xff, 0x11, 0x0d, 0x01, 0x0d,
|
||||
0xf4, 0x11, 0x3f, 0x0d, 0x01, 0xf3, 0x0b, 0x10, 0x84, 0x11, 0x0f, 0xf3, 0x0b, 0x0c, 0xf5, 0x11,
|
||||
0x3e, 0xf5, 0xf4, 0x0a, 0x99, 0xd6, 0x11, 0x0d, 0x01, 0x0b, 0xf6, 0x11, 0x0a, 0x01, 0x09, 0x19,
|
||||
0x18, 0xf4, 0x20, 0x10, 0x00, 0x00, 0x0f, 0xff, 0x0f, 0xff, 0xff, 0x19, 0x0a, 0x3f, 0x1d, 0xfe,
|
||||
0xf5, 0x04, 0x08, 0x42, 0x11, 0x0f, 0xf1, 0x0d, 0x0e, 0xf3, 0x11, 0x3e, 0xf3, 0xf2, 0x0c, 0xff,
|
||||
0xff, 0x11, 0x0d, 0x01, 0x0d, 0xf4, 0x11, 0x3f, 0x0d, 0x01, 0xf3, 0x0b, 0x10, 0x84, 0x11, 0x0f,
|
||||
0xf3, 0x0b, 0x0c, 0xf5, 0x11, 0x3e, 0xf5, 0xf4, 0x0a, 0x99, 0xd6, 0x11, 0x0d, 0x01, 0x0b, 0xf6,
|
||||
0x11, 0x0a, 0x01, 0x09, 0x19, 0x18, 0x54, 0x40, 0x00, 0x00, 0x00, 0x10, 0x10, 0x1b, 0x04, 0x00,
|
||||
0x4a, 0x09, 0x09, 0xff, 0x80, 0xff, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80,
|
||||
0x80, 0x80, 0x80, 0xff, 0x80, 0x00, 0x00, 0x31, 0x00, 0x19, 0x0a, 0x3f, 0x1d, 0xfe, 0xf5, 0x04,
|
||||
0xff, 0xff, 0x11, 0x0f, 0xf1, 0x0d, 0x0e, 0xf3, 0x11, 0x3e, 0xf3, 0xf2, 0x0c, 0x08, 0x42, 0x11,
|
||||
0x0d, 0x01, 0x0d, 0xf4, 0x11, 0x3f, 0x0d, 0x01, 0xf3, 0x0b, 0x99, 0xd6, 0x11, 0x0f, 0xf3, 0x0b,
|
||||
0x0c, 0xf5, 0x11, 0x3e, 0xf5, 0xf4, 0x0a, 0x10, 0x84, 0x11, 0x0d, 0x01, 0x0b, 0xf6, 0x11, 0x3a,
|
||||
0x01, 0x09, 0x99, 0xd6, 0x19, 0x18, 0xf0, 0x60, 0x11, 0x01, 0x11, 0x01, 0x01, 0x01, 0x04, 0x19,
|
||||
0x0a, 0x3f, 0xdd, 0x0c, 0xf5, 0x04, 0x08, 0x42, 0x11, 0x0f, 0xf1, 0x0d, 0x0e, 0xf3, 0x11, 0x3e,
|
||||
0xf3, 0xf2, 0x0c, 0xff, 0xff, 0x11, 0x0d, 0x01, 0x0d, 0xf4, 0x11, 0x3f, 0x0d, 0x01, 0xf3, 0x0b,
|
||||
0x10, 0x84, 0x11, 0x0f, 0xf3, 0x0b, 0x0c, 0xf5, 0x11, 0x3e, 0xf5, 0xf4, 0x0a, 0x99, 0xd6, 0x11,
|
||||
0x0d, 0x01, 0x0b, 0xf6, 0x11, 0x0a, 0x01, 0x09, 0x19, 0x18, 0xf4, 0x20, 0x10, 0x00, 0x00, 0xcf,
|
||||
0x0d, 0xcf, 0x0d, 0x0d, 0x19, 0x0a, 0x3f, 0x1d, 0xfe, 0xf5, 0x04, 0x08, 0x42, 0x11, 0x0f, 0xf1,
|
||||
0x0d, 0x0e, 0xf3, 0x11, 0x3e, 0xf3, 0xf2, 0x0c, 0xff, 0xff, 0x11, 0x0d, 0x01, 0x0d, 0xf4, 0x11,
|
||||
0x3f, 0x0d, 0x01, 0xf3, 0x0b, 0x10, 0x84, 0x11, 0x0f, 0xf3, 0x0b, 0x0c, 0xf5, 0x11, 0x3e, 0xf5,
|
||||
0xf4, 0x0a, 0x99, 0xd6, 0x11, 0x0d, 0x01, 0x0b, 0xf6, 0x11, 0x0a, 0x01, 0x09, 0x19, 0x18, 0xf4,
|
||||
0x20, 0xff, 0xff, 0x00, 0x11, 0x01, 0x11, 0x01, 0x01, 0x11, 0xf4, 0x20, 0x10, 0x84, 0x00, 0xff,
|
||||
0xff, 0xff, 0xff, 0xff, 0x19, 0x0a, 0x3f, 0xee, 0x34, 0x3c, 0x08, 0x2d, 0x09, 0x59, 0x0d, 0x97,
|
||||
0xff, 0x00, 0x02, 0x70, 0x0d, 0x0e, 0x51, 0xc2, 0x10, 0x20, 0x1c, 0x51, 0xc2, 0x12, 0xe0, 0xd6,
|
||||
0x51, 0xc2, 0x12, 0x30, 0x1c, 0x19, 0x0a, 0x32, 0x12, 0x10, 0x84, 0x59, 0x0d, 0xc6, 0xcc, 0x12,
|
||||
0xd0, 0xf2, 0x51, 0xc2, 0x10, 0x20, 0x1c, 0x51, 0xc2, 0x12, 0xe0, 0xd6, 0x51, 0xc2, 0x12, 0x30,
|
||||
0x1c, 0x19, 0x0a, 0x3f, 0x0a, 0x12, 0xb9, 0xf9, 0x08, 0x42, 0x11, 0x0f, 0xf6, 0x0a, 0x09, 0xf6,
|
||||
0x11, 0x3e, 0xf6, 0xf7, 0x09, 0xff, 0xff, 0x11, 0x0d, 0x01, 0x08, 0xf7, 0x11, 0x3f, 0x08, 0x01,
|
||||
0xf8, 0x08, 0x10, 0x84, 0x11, 0x0f, 0xf8, 0x08, 0x07, 0xf8, 0x11, 0x3e, 0xf8, 0xf9, 0x07, 0x99,
|
||||
0xd6, 0x11, 0x0d, 0x01, 0x06, 0xf9, 0x11, 0x0a, 0x01, 0x06, 0x19, 0x18, 0xf5, 0x60, 0x05, 0x00,
|
||||
0x00, 0x00, 0xef, 0x5a, 0xec, 0x57, 0x57, 0x0f, 0x00, 0x00, 0x46, 0x06, 0x05, 0xcc, 0x78, 0x30,
|
||||
0x78, 0xcc, 0x00, 0x00, 0x00, 0x72, 0x00, 0x19, 0x0a, 0x3f, 0x13, 0xfe, 0xfa, 0x04, 0xff, 0xff,
|
||||
0x11, 0x0f, 0xf6, 0x0a, 0x09, 0xf6, 0x11, 0x3e, 0xf6, 0xf7, 0x09, 0x08, 0x42, 0x11, 0x0d, 0x01,
|
||||
0x08, 0xf7, 0x11, 0x3f, 0x08, 0x01, 0xf8, 0x08, 0x99, 0xd6, 0x11, 0x0f, 0xf8, 0x08, 0x07, 0xf8,
|
||||
0x11, 0x3e, 0xf8, 0xf9, 0x07, 0x10, 0x84, 0x11, 0x0d, 0x01, 0x06, 0xf9, 0x11, 0x3a, 0x01, 0x06,
|
||||
0x99, 0xd6, 0x19, 0x18, 0xf0, 0x60, 0x0c, 0x01, 0x0c, 0x01, 0x01, 0x01, 0x00, 0x19, 0x0a, 0x3f,
|
||||
0x13, 0xfe, 0xfa, 0x04, 0x08, 0x42, 0x11, 0x0f, 0xf6, 0x0a, 0x09, 0xf6, 0x11, 0x3e, 0xf6, 0xf7,
|
||||
0x09, 0xff, 0xff, 0x11, 0x0d, 0x01, 0x08, 0xf7, 0x11, 0x3f, 0x08, 0x01, 0xf8, 0x08, 0x10, 0x84,
|
||||
0x11, 0x0f, 0xf8, 0x08, 0x07, 0xf8, 0x11, 0x3e, 0xf8, 0xf9, 0x07, 0x99, 0xd6, 0x11, 0x0d, 0x01,
|
||||
0x06, 0xf9, 0x11, 0x0a, 0x01, 0x06, 0x19, 0x18, 0xf4, 0x20, 0x10, 0x00, 0x00, 0x0a, 0xff, 0x0a,
|
||||
0xff, 0xff, 0x19, 0x0a, 0x3f, 0x13, 0xfe, 0xfa, 0x04, 0x08, 0x42, 0x11, 0x0f, 0xf6, 0x0a, 0x09,
|
||||
0xf6, 0x11, 0x3e, 0xf6, 0xf7, 0x09, 0xff, 0xff, 0x11, 0x0d, 0x01, 0x08, 0xf7, 0x11, 0x3f, 0x08,
|
||||
0x01, 0xf8, 0x08, 0x10, 0x84, 0x11, 0x0f, 0xf8, 0x08, 0x07, 0xf8, 0x11, 0x3e, 0xf8, 0xf9, 0x07,
|
||||
0x99, 0xd6, 0x11, 0x0d, 0x01, 0x06, 0xf9, 0x11, 0x0a, 0x01, 0x06, 0x19, 0x18, 0xf4, 0x20, 0xff,
|
||||
0xff, 0x00, 0x0c, 0x01, 0x0c, 0x01, 0x01, 0x11, 0xf4, 0x20, 0x10, 0x84, 0x00, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0x19, 0x0a, 0x0f, 0x09, 0xfe, 0x09, 0x09, 0x19, 0x18, 0xf5, 0x60, 0x06, 0xff, 0xff,
|
||||
0x00, 0x09, 0xfe, 0x12, 0x07, 0x07, 0x23, 0x05, 0x03, 0x4d, 0x0d, 0x0d, 0x00, 0x00, 0x00, 0x08,
|
||||
0x00, 0x10, 0x00, 0x20, 0x00, 0x40, 0x00, 0x88, 0x01, 0x10, 0x02, 0x20, 0x04, 0x40, 0x08, 0x88,
|
||||
0x11, 0x10, 0x22, 0x20, 0x44, 0x40, 0x00, 0x00, 0x6f, 0x00, 0x11, 0x04, 0x40, 0x10, 0x84, 0x00,
|
||||
0x1f, 0x06, 0x04, 0x4c, 0x0c, 0x0c, 0x00, 0x00, 0x00, 0x10, 0x00, 0x30, 0x00, 0x60, 0x00, 0xc0,
|
||||
0x01, 0x90, 0x03, 0x30, 0x06, 0x60, 0x0c, 0xc0, 0x19, 0x90, 0x33, 0x30, 0x66, 0x60, 0x70, 0x00,
|
||||
0x19, 0x0a, 0x37, 0xe3, 0x10, 0xf1, 0x08, 0x42, 0x11, 0x0f, 0xf1, 0x0f, 0x0e, 0xf1, 0x11, 0x3e,
|
||||
0xf1, 0xf2, 0x0e, 0x99, 0xd6, 0x11, 0x0d, 0x01, 0x0d, 0xf2, 0x11, 0x3f, 0x0d, 0x01, 0xf3, 0x0d,
|
||||
0x10, 0x84, 0x11, 0x0f, 0xf3, 0x0d, 0x0c, 0xf3, 0x11, 0x3e, 0xf3, 0xf4, 0x0c, 0xff, 0xff, 0x11,
|
||||
0x0d, 0x01, 0x0b, 0xf4, 0x11, 0x3a, 0x01, 0x0b, 0x99, 0xd6, 0x19, 0x18, 0xf4, 0x60, 0x00, 0x00,
|
||||
0x00, 0xd6, 0x12, 0xd2, 0x0e, 0x0e, 0x0f, 0x07, 0x01, 0x48, 0x09, 0x04, 0x08, 0x00, 0x1c, 0x00,
|
||||
0x3e, 0x00, 0x7f, 0x00, 0x35, 0x00, 0x19, 0x0a, 0x3f, 0x1d, 0xfe, 0xf5, 0x04, 0x10, 0x84, 0x11,
|
||||
0x0f, 0xf1, 0x0f, 0x0e, 0xf1, 0x11, 0x0e, 0xf1, 0xf2, 0x0e, 0x11, 0x0d, 0x01, 0x0d, 0xf2, 0x11,
|
||||
0x3f, 0x0d, 0x01, 0xf3, 0x0d, 0x99, 0xd6, 0x11, 0x0f, 0xf3, 0x0d, 0x0c, 0xf3, 0x11, 0x0e, 0xf3,
|
||||
0xf4, 0x0c, 0x11, 0x0d, 0x01, 0x0b, 0xf4, 0x11, 0x0a, 0x01, 0x0b, 0x19, 0x18, 0xf0, 0x60, 0x11,
|
||||
0x01, 0x11, 0x01, 0x01, 0x01, 0x07, 0x19, 0x0a, 0x3f, 0x1d, 0xfe, 0xf5, 0x04, 0x08, 0x42, 0x11,
|
||||
0x0f, 0xf1, 0x0f, 0x0e, 0xf1, 0x11, 0x3e, 0xf1, 0xf2, 0x0e, 0x99, 0xd6, 0x11, 0x0d, 0x01, 0x0d,
|
||||
0xf2, 0x11, 0x3f, 0x0d, 0x01, 0xf3, 0x0d, 0x10, 0x84, 0x11, 0x0f, 0xf3, 0x0d, 0x0c, 0xf3, 0x11,
|
||||
0x3e, 0xf3, 0xf4, 0x0c, 0xff, 0xff, 0x11, 0x0d, 0x01, 0x0b, 0xf4, 0x11, 0x3a, 0x01, 0x0b, 0x99,
|
||||
0xd6, 0x19, 0x18, 0xf4, 0x20, 0x10, 0x00, 0x00, 0x0f, 0xff, 0x0f, 0xff, 0xff, 0x19, 0x0a, 0x3f,
|
||||
0x1d, 0xfe, 0xf5, 0x04, 0x08, 0x42, 0x11, 0x0f, 0xf1, 0x0f, 0x0e, 0xf1, 0x11, 0x3e, 0xf1, 0xf2,
|
||||
0x0e, 0x99, 0xd6, 0x11, 0x0d, 0x01, 0x0d, 0xf2, 0x11, 0x3f, 0x0d, 0x01, 0xf3, 0x0d, 0x10, 0x84,
|
||||
0x11, 0x0f, 0xf3, 0x0d, 0x0c, 0xf3, 0x11, 0x3e, 0xf3, 0xf4, 0x0c, 0xff, 0xff, 0x11, 0x0d, 0x01,
|
||||
0x0b, 0xf4, 0x11, 0x3a, 0x01, 0x0b, 0x99, 0xd6, 0x19, 0x18, 0xf4, 0x20, 0xff, 0xff, 0x00, 0x11,
|
||||
0x01, 0x11, 0x01, 0x01, 0x11, 0xf4, 0x20, 0x10, 0x84, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0x19,
|
||||
0x0a, 0x3f, 0xdd, 0x0e, 0xf5, 0x04, 0x08, 0x42, 0x11, 0x0f, 0xf1, 0x0f, 0x0e, 0xf1, 0x11, 0x3e,
|
||||
0xf1, 0xf2, 0x0e, 0x99, 0xd6, 0x11, 0x0d, 0x01, 0x0d, 0xf2, 0x11, 0x3f, 0x0d, 0x01, 0xf3, 0x0d,
|
||||
0x10, 0x84, 0x11, 0x0f, 0xf3, 0x0d, 0x0c, 0xf3, 0x11, 0x3e, 0xf3, 0xf4, 0x0c, 0xff, 0xff, 0x11,
|
||||
0x0d, 0x01, 0x0b, 0xf4, 0x11, 0x3a, 0x01, 0x0b, 0x99, 0xd6, 0x19, 0x18, 0xf4, 0x60, 0x00, 0x00,
|
||||
0x00, 0xd0, 0x10, 0xd0, 0x10, 0x10, 0x0f, 0x08, 0x01, 0x48, 0x09, 0x04, 0x7f, 0x00, 0x3e, 0x00,
|
||||
0x1c, 0x00, 0x08, 0x00, 0x36, 0x00, 0x19, 0x0a, 0x3f, 0x1d, 0xfe, 0xf5, 0x04, 0x10, 0x84, 0x11,
|
||||
0x0f, 0xf1, 0x0f, 0x0e, 0xf1, 0x11, 0x0e, 0xf1, 0xf2, 0x0e, 0x11, 0x0d, 0x01, 0x0d, 0xf2, 0x11,
|
||||
0x3f, 0x0d, 0x01, 0xf3, 0x0d, 0x99, 0xd6, 0x11, 0x0f, 0xf3, 0x0d, 0x0c, 0xf3, 0x11, 0x0e, 0xf3,
|
||||
0xf4, 0x0c, 0x11, 0x0d, 0x01, 0x0b, 0xf4, 0x11, 0x0a, 0x01, 0x0b, 0x19, 0x18, 0xf0, 0x60, 0x11,
|
||||
0x01, 0x11, 0x01, 0x01, 0x01, 0x08, 0x19, 0x0a, 0x3f, 0x1d, 0xfe, 0xf5, 0x04, 0x08, 0x42, 0x11,
|
||||
0x0f, 0xf1, 0x0f, 0x0e, 0xf1, 0x11, 0x3e, 0xf1, 0xf2, 0x0e, 0x99, 0xd6, 0x11, 0x0d, 0x01, 0x0d,
|
||||
0xf2, 0x11, 0x3f, 0x0d, 0x01, 0xf3, 0x0d, 0x10, 0x84, 0x11, 0x0f, 0xf3, 0x0d, 0x0c, 0xf3, 0x11,
|
||||
0x3e, 0xf3, 0xf4, 0x0c, 0xff, 0xff, 0x11, 0x0d, 0x01, 0x0b, 0xf4, 0x11, 0x3a, 0x01, 0x0b, 0x99,
|
||||
0xd6, 0x19, 0x18, 0xf4, 0x20, 0x10, 0x00, 0x00, 0x0f, 0xff, 0x0f, 0xff, 0xff, 0x19, 0x0a, 0x3f,
|
||||
0x1d, 0xfe, 0xf5, 0x04, 0x08, 0x42, 0x11, 0x0f, 0xf1, 0x0f, 0x0e, 0xf1, 0x11, 0x3e, 0xf1, 0xf2,
|
||||
0x0e, 0x99, 0xd6, 0x11, 0x0d, 0x01, 0x0d, 0xf2, 0x11, 0x3f, 0x0d, 0x01, 0xf3, 0x0d, 0x10, 0x84,
|
||||
0x11, 0x0f, 0xf3, 0x0d, 0x0c, 0xf3, 0x11, 0x3e, 0xf3, 0xf4, 0x0c, 0xff, 0xff, 0x11, 0x0d, 0x01,
|
||||
0x0b, 0xf4, 0x11, 0x3a, 0x01, 0x0b, 0x99, 0xd6, 0x19, 0x18, 0xf4, 0x20, 0xff, 0xff, 0x00, 0x11,
|
||||
0x01, 0x11, 0x01, 0x01, 0x11, 0xf4, 0x20, 0x10, 0x84, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0x19,
|
||||
0x0a, 0x3f, 0xdd, 0x0e, 0xf5, 0x04, 0x08, 0x42, 0x11, 0x0f, 0xf1, 0x0f, 0x0e, 0xf1, 0x11, 0x3e,
|
||||
0xf1, 0xf2, 0x0e, 0x99, 0xd6, 0x11, 0x0d, 0x01, 0x0d, 0xf2, 0x11, 0x3f, 0x0d, 0x01, 0xf3, 0x0d,
|
||||
0x10, 0x84, 0x11, 0x0f, 0xf3, 0x0d, 0x0c, 0xf3, 0x11, 0x3e, 0xf3, 0xf4, 0x0c, 0xff, 0xff, 0x11,
|
||||
0x0d, 0x01, 0x0b, 0xf4, 0x11, 0x3a, 0x01, 0x0b, 0x99, 0xd6, 0x19, 0x18, 0xf4, 0x60, 0x00, 0x00,
|
||||
0x00, 0xd0, 0x10, 0xd0, 0x10, 0x10, 0x13, 0x09, 0x04, 0x4b, 0x04, 0x09, 0x00, 0x80, 0xc0, 0xe0,
|
||||
0xf0, 0xe0, 0xc0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x34, 0x00, 0x19, 0x0a, 0x3f, 0x1d, 0xfe, 0xf5,
|
||||
0x04, 0x10, 0x84, 0x11, 0x0f, 0xf1, 0x0f, 0x0e, 0xf1, 0x11, 0x0e, 0xf1, 0xf2, 0x0e, 0x11, 0x0d,
|
||||
0x01, 0x0d, 0xf2, 0x11, 0x3f, 0x0d, 0x01, 0xf3, 0x0d, 0x99, 0xd6, 0x11, 0x0f, 0xf3, 0x0d, 0x0c,
|
||||
0xf3, 0x11, 0x0e, 0xf3, 0xf4, 0x0c, 0x11, 0x0d, 0x01, 0x0b, 0xf4, 0x11, 0x0a, 0x01, 0x0b, 0x19,
|
||||
0x18, 0xf0, 0x60, 0x11, 0x01, 0x11, 0x01, 0x01, 0x01, 0x09, 0x19, 0x0a, 0x3f, 0x1d, 0xfe, 0xf5,
|
||||
0x04, 0x08, 0x42, 0x11, 0x0f, 0xf1, 0x0f, 0x0e, 0xf1, 0x11, 0x3e, 0xf1, 0xf2, 0x0e, 0x99, 0xd6,
|
||||
0x11, 0x0d, 0x01, 0x0d, 0xf2, 0x11, 0x3f, 0x0d, 0x01, 0xf3, 0x0d, 0x10, 0x84, 0x11, 0x0f, 0xf3,
|
||||
0x0d, 0x0c, 0xf3, 0x11, 0x3e, 0xf3, 0xf4, 0x0c, 0xff, 0xff, 0x11, 0x0d, 0x01, 0x0b, 0xf4, 0x11,
|
||||
0x3a, 0x01, 0x0b, 0x99, 0xd6, 0x19, 0x18, 0xf4, 0x20, 0x10, 0x00, 0x00, 0x0f, 0xff, 0x0f, 0xff,
|
||||
0xff, 0x19, 0x0a, 0x3f, 0x1d, 0xfe, 0xf5, 0x04, 0x08, 0x42, 0x11, 0x0f, 0xf1, 0x0f, 0x0e, 0xf1,
|
||||
0x11, 0x3e, 0xf1, 0xf2, 0x0e, 0x99, 0xd6, 0x11, 0x0d, 0x01, 0x0d, 0xf2, 0x11, 0x3f, 0x0d, 0x01,
|
||||
0xf3, 0x0d, 0x10, 0x84, 0x11, 0x0f, 0xf3, 0x0d, 0x0c, 0xf3, 0x11, 0x3e, 0xf3, 0xf4, 0x0c, 0xff,
|
||||
0xff, 0x11, 0x0d, 0x01, 0x0b, 0xf4, 0x11, 0x3a, 0x01, 0x0b, 0x99, 0xd6, 0x19, 0x18, 0xf4, 0x20,
|
||||
0xff, 0xff, 0x00, 0x11, 0x01, 0x11, 0x01, 0x01, 0x11, 0xf4, 0x20, 0x10, 0x84, 0x00, 0xff, 0xff,
|
||||
0xff, 0xff, 0xff, 0x19, 0x0a, 0x3f, 0xdd, 0x0e, 0xf5, 0x04, 0x08, 0x42, 0x11, 0x0f, 0xf1, 0x0f,
|
||||
0x0e, 0xf1, 0x11, 0x3e, 0xf1, 0xf2, 0x0e, 0x99, 0xd6, 0x11, 0x0d, 0x01, 0x0d, 0xf2, 0x11, 0x3f,
|
||||
0x0d, 0x01, 0xf3, 0x0d, 0x10, 0x84, 0x11, 0x0f, 0xf3, 0x0d, 0x0c, 0xf3, 0x11, 0x3e, 0xf3, 0xf4,
|
||||
0x0c, 0xff, 0xff, 0x11, 0x0d, 0x01, 0x0b, 0xf4, 0x11, 0x3a, 0x01, 0x0b, 0x99, 0xd6, 0x19, 0x18,
|
||||
0xf4, 0x60, 0x00, 0x00, 0x00, 0xd0, 0x10, 0xd0, 0x10, 0x10, 0x13, 0x0a, 0x03, 0x4b, 0x04, 0x09,
|
||||
0x00, 0x10, 0x30, 0x70, 0xf0, 0x70, 0x30, 0x10, 0x00, 0x00, 0x00, 0x00, 0x33, 0x00, 0x19, 0x0a,
|
||||
0x3f, 0x1d, 0xfe, 0xf5, 0x04, 0x10, 0x84, 0x11, 0x0f, 0xf1, 0x0f, 0x0e, 0xf1, 0x11, 0x0e, 0xf1,
|
||||
0xf2, 0x0e, 0x11, 0x0d, 0x01, 0x0d, 0xf2, 0x11, 0x3f, 0x0d, 0x01, 0xf3, 0x0d, 0x99, 0xd6, 0x11,
|
||||
0x0f, 0xf3, 0x0d, 0x0c, 0xf3, 0x11, 0x0e, 0xf3, 0xf4, 0x0c, 0x11, 0x0d, 0x01, 0x0b, 0xf4, 0x11,
|
||||
0x0a, 0x01, 0x0b, 0x19, 0x18, 0xf0, 0x60, 0x11, 0x01, 0x11, 0x01, 0x01, 0x01, 0x0a, 0x19, 0x0a,
|
||||
0x3f, 0x1d, 0xfe, 0xf5, 0x04, 0x08, 0x42, 0x11, 0x0f, 0xf1, 0x0f, 0x0e, 0xf1, 0x11, 0x3e, 0xf1,
|
||||
0xf2, 0x0e, 0x99, 0xd6, 0x11, 0x0d, 0x01, 0x0d, 0xf2, 0x11, 0x3f, 0x0d, 0x01, 0xf3, 0x0d, 0x10,
|
||||
0x84, 0x11, 0x0f, 0xf3, 0x0d, 0x0c, 0xf3, 0x11, 0x3e, 0xf3, 0xf4, 0x0c, 0xff, 0xff, 0x11, 0x0d,
|
||||
0x01, 0x0b, 0xf4, 0x11, 0x3a, 0x01, 0x0b, 0x99, 0xd6, 0x19, 0x18, 0xf4, 0x20, 0x10, 0x00, 0x00,
|
||||
0x0f, 0xff, 0x0f, 0xff, 0xff, 0x19, 0x0a, 0x3f, 0x1d, 0xfe, 0xf5, 0x04, 0x08, 0x42, 0x11, 0x0f,
|
||||
0xf1, 0x0f, 0x0e, 0xf1, 0x11, 0x3e, 0xf1, 0xf2, 0x0e, 0x99, 0xd6, 0x11, 0x0d, 0x01, 0x0d, 0xf2,
|
||||
0x11, 0x3f, 0x0d, 0x01, 0xf3, 0x0d, 0x10, 0x84, 0x11, 0x0f, 0xf3, 0x0d, 0x0c, 0xf3, 0x11, 0x3e,
|
||||
0xf3, 0xf4, 0x0c, 0xff, 0xff, 0x11, 0x0d, 0x01, 0x0b, 0xf4, 0x11, 0x3a, 0x01, 0x0b, 0x99, 0xd6,
|
||||
0x19, 0x18, 0xf4, 0x20, 0xff, 0xff, 0x00, 0x11, 0x01, 0x11, 0x01, 0x01, 0x11, 0xf4, 0x20, 0x10,
|
||||
0x84, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0x19, 0x0a, 0x3f, 0xce, 0x0e, 0x01, 0x01, 0xff, 0xff,
|
||||
0x1d, 0x18, 0xf4, 0x60, 0x0e, 0xe2, 0x00, 0x0b, 0x00, 0xee, 0x00, 0x00, 0x00, 0x00, 0xcd, 0x0e,
|
||||
0xce, 0x0f, 0x0f, 0x13, 0x0b, 0x04, 0x4b, 0x04, 0x09, 0x00, 0x80, 0xc0, 0xe0, 0xf0, 0xe0, 0xc0,
|
||||
0x80, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x19, 0x0a, 0x01, 0x0d, 0x19, 0x18, 0x50, 0x40, 0x0d,
|
||||
0x0d, 0x0f, 0x0c, 0x03, 0x4a, 0x07, 0x08, 0x00, 0x02, 0x06, 0x8e, 0xdc, 0xf8, 0x70, 0x20, 0x61,
|
||||
0x00, 0x19, 0x0a, 0x01, 0x0d, 0x19, 0x18, 0x50, 0x40, 0x0d, 0x0d, 0x0f, 0x0d, 0x04, 0x4a, 0x06,
|
||||
0x06, 0x78, 0xfc, 0xfc, 0xfc, 0xfc, 0x78, 0x00, 0x00, 0x68, 0x00, 0x19, 0x0a, 0x3d, 0x0d, 0x02,
|
||||
0x02, 0x99, 0xd6, 0x19, 0x18, 0xd0, 0x60, 0x0e, 0x10, 0x02, 0x02, 0x13, 0x0e, 0x02, 0x4a, 0x0b,
|
||||
0x05, 0x04, 0x00, 0x0e, 0x00, 0x1f, 0x00, 0x3f, 0x80, 0x7f, 0xc0, 0x00, 0x00, 0x35, 0x00, 0x19,
|
||||
0x0a, 0x01, 0x0f, 0x19, 0x18, 0x54, 0x40, 0x10, 0x00, 0x00, 0x0f, 0x0f, 0x01, 0x0e, 0x19, 0x0a,
|
||||
0x03, 0xca, 0x0f, 0x19, 0x18, 0xf4, 0x20, 0xff, 0xff, 0x00, 0xcb, 0x10, 0xcb, 0x10, 0x10, 0x11,
|
||||
0xf4, 0x20, 0x10, 0x84, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0x19, 0x0a, 0x01, 0x0f, 0x19, 0x18,
|
||||
0x54, 0x40, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x13, 0x0f, 0x02, 0x4a, 0x0b, 0x05, 0x7f, 0xc0, 0x3f,
|
||||
0x80, 0x1f, 0x00, 0x0e, 0x00, 0x04, 0x00, 0x00, 0x00, 0x36, 0x00, 0x19, 0x0a, 0x01, 0x0f, 0x19,
|
||||
0x18, 0x54, 0x40, 0x10, 0x00, 0x00, 0x0f, 0x0f, 0x01, 0x0f, 0x19, 0x0a, 0x01, 0x0f, 0x19, 0x18,
|
||||
0xf4, 0x20, 0xff, 0xff, 0x00, 0x10, 0x01, 0x10, 0x01, 0x01, 0x11, 0xf4, 0x20, 0x10, 0x84, 0x00,
|
||||
0xff, 0xff, 0xff, 0xff, 0xff, 0x19, 0x0a, 0x3f, 0xd3, 0x0f, 0xfe, 0xfe, 0xff, 0xff, 0x19, 0x18,
|
||||
0xf4, 0x60, 0x00, 0x00, 0x00, 0xd3, 0x0f, 0xd1, 0x0d, 0x0d, 0x1b, 0x10, 0x02, 0x4c, 0x0a, 0x0a,
|
||||
0x1e, 0x00, 0x7f, 0x80, 0x7f, 0x80, 0xff, 0xc0, 0xff, 0xc0, 0xff, 0xc0, 0xff, 0xc0, 0x7f, 0x80,
|
||||
0x7f, 0x80, 0x1e, 0x00, 0x6e, 0x00, 0x11, 0x00, 0x40, 0x17, 0x11, 0x03, 0x4a, 0x09, 0x08, 0x01,
|
||||
0x00, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x01, 0x00, 0xc3, 0x00, 0x3c, 0x00, 0x6d,
|
||||
0x00, 0x11, 0x00, 0x40, 0x17, 0x12, 0x02, 0x4c, 0x09, 0x08, 0x1e, 0x00, 0x61, 0x80, 0x40, 0x00,
|
||||
0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x40, 0x00, 0x6c, 0x00, 0x11, 0x00, 0x40, 0x1b,
|
||||
0x13, 0x03, 0x4b, 0x0a, 0x0a, 0x00, 0x80, 0x00, 0x80, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00,
|
||||
0x40, 0x00, 0x80, 0x00, 0x80, 0xc3, 0x00, 0x3c, 0x00, 0x6b, 0x00, 0x11, 0x00, 0x40, 0x1b, 0x14,
|
||||
0x01, 0x4d, 0x0a, 0x0a, 0x0f, 0x00, 0x30, 0xc0, 0x40, 0x00, 0x40, 0x00, 0x80, 0x00, 0x80, 0x00,
|
||||
0x80, 0x00, 0x80, 0x00, 0x40, 0x00, 0x40, 0x00, 0x6a, 0x00, 0x11, 0x54, 0x40, 0xff, 0xff, 0x00,
|
||||
0x0d, 0x0d, 0x1b, 0x15, 0x02, 0x4b, 0x09, 0x09, 0xff, 0x80, 0xff, 0x80, 0xff, 0x80, 0xff, 0x80,
|
||||
0xff, 0x80, 0xff, 0x80, 0xff, 0x80, 0xff, 0x80, 0xff, 0x80, 0x00, 0x00, 0x67, 0x00, 0x11, 0x04,
|
||||
0x40, 0x99, 0xd6, 0x00, 0x1f, 0x16, 0x01, 0x4c, 0x0b, 0x0b, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20,
|
||||
0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0xff, 0xe0,
|
||||
0x00, 0x00, 0x66, 0x00, 0x11, 0x04, 0x40, 0x08, 0x42, 0x00, 0x1b, 0x17, 0x01, 0x4c, 0x0a, 0x0a,
|
||||
0xff, 0xc0, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00,
|
||||
0x80, 0x00, 0x80, 0x00, 0x65, 0x00, 0x11, 0x04, 0x40, 0xff, 0xff, 0x00, 0x23, 0x18, 0x00, 0x4d,
|
||||
0x0d, 0x0d, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08,
|
||||
0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0xff, 0xf8, 0x00, 0x00, 0x64, 0x00,
|
||||
0x11, 0x04, 0x40, 0x10, 0x84, 0x00, 0x1f, 0x19, 0x00, 0x4d, 0x0c, 0x0c, 0xff, 0xf0, 0x80, 0x00,
|
||||
0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00,
|
||||
0x80, 0x00, 0x80, 0x00, 0x63, 0x00, 0x11, 0x54, 0x40, 0xff, 0xff, 0x00, 0x0d, 0x0d, 0x01, 0x15,
|
||||
0x11, 0x04, 0x40, 0x99, 0xd6, 0x00, 0x01, 0x16, 0x11, 0x04, 0x40, 0x08, 0x42, 0x00, 0x01, 0x17,
|
||||
0x11, 0x04, 0x40, 0xff, 0xff, 0x00, 0x01, 0x18, 0x11, 0x04, 0x40, 0x10, 0x84, 0x00, 0x01, 0x19,
|
||||
0x11, 0x04, 0x40, 0x00, 0x00, 0x00, 0x0f, 0x1a, 0x03, 0x4b, 0x07, 0x08, 0x00, 0x02, 0x06, 0x8e,
|
||||
0xdc, 0xf8, 0x70, 0x20, 0x62, 0x00, 0x11, 0x54, 0x40, 0x99, 0xd6, 0x00, 0x0d, 0x0d, 0x01, 0x15,
|
||||
0x11, 0x00, 0x40, 0x01, 0x16, 0x11, 0x04, 0x40, 0x08, 0x42, 0x00, 0x01, 0x17, 0x11, 0x04, 0x40,
|
||||
0xff, 0xff, 0x00, 0x01, 0x18, 0x11, 0x04, 0x40, 0x10, 0x84, 0x00, 0x01, 0x19, 0x11, 0x54, 0x40,
|
||||
0x99, 0xd6, 0x00, 0x0d, 0x0d, 0x01, 0x15, 0x11, 0x00, 0x40, 0x01, 0x16, 0x11, 0x04, 0x40, 0x08,
|
||||
0x42, 0x00, 0x01, 0x17, 0x11, 0x04, 0x40, 0xff, 0xff, 0x00, 0x01, 0x18, 0x11, 0x04, 0x40, 0x10,
|
||||
0x84, 0x00, 0x01, 0x19, 0x11, 0x04, 0x40, 0x00, 0x00, 0x00, 0x01, 0x1a, 0x11, 0xf4, 0x60, 0x99,
|
||||
0xd6, 0x00, 0xcc, 0x0d, 0xcc, 0x0d, 0x0d, 0x01, 0x15, 0x11, 0x00, 0x40, 0x01, 0x16, 0x11, 0x04,
|
||||
0x40, 0x08, 0x42, 0x00, 0x01, 0x17, 0x11, 0x04, 0x40, 0xff, 0xff, 0x00, 0x01, 0x18, 0x11, 0x04,
|
||||
0x40, 0x10, 0x84, 0x00, 0x01, 0x19, 0x11, 0x00, 0x40, 0x01, 0x1a, 0x19, 0x0a, 0x33, 0x0d, 0x0d,
|
||||
0x00, 0x00, 0x19, 0x18, 0x54, 0x40, 0xff, 0xff, 0x00, 0x0d, 0x0d, 0x01, 0x10, 0x11, 0x04, 0x40,
|
||||
0x99, 0xd6, 0x00, 0x01, 0x11, 0x11, 0x04, 0x40, 0x08, 0x42, 0x00, 0x01, 0x12, 0x11, 0x04, 0x40,
|
||||
0xff, 0xff, 0x00, 0x01, 0x13, 0x11, 0x04, 0x40, 0x10, 0x84, 0x00, 0x01, 0x14, 0x19, 0x0a, 0x01,
|
||||
0x0d, 0x19, 0x18, 0x54, 0x40, 0xff, 0xff, 0x00, 0x0d, 0x0d, 0x01, 0x10, 0x11, 0x04, 0x40, 0x99,
|
||||
0xd6, 0x00, 0x01, 0x11, 0x11, 0x04, 0x40, 0x08, 0x42, 0x00, 0x01, 0x12, 0x11, 0x04, 0x40, 0xff,
|
||||
0xff, 0x00, 0x01, 0x13, 0x11, 0x04, 0x40, 0x10, 0x84, 0x00, 0x01, 0x14, 0x11, 0x04, 0x40, 0x00,
|
||||
0x00, 0x00, 0x0b, 0x1b, 0x05, 0x49, 0x04, 0x04, 0x60, 0xf0, 0xf0, 0x60, 0x69, 0x00, 0x19, 0x0a,
|
||||
0x01, 0x0d, 0x19, 0x18, 0x54, 0x40, 0x99, 0xd6, 0x00, 0x0d, 0x0d, 0x01, 0x10, 0x11, 0x00, 0x40,
|
||||
0x01, 0x11, 0x11, 0x04, 0x40, 0x08, 0x42, 0x00, 0x01, 0x12, 0x11, 0x04, 0x40, 0xff, 0xff, 0x00,
|
||||
0x01, 0x13, 0x11, 0x04, 0x40, 0x10, 0x84, 0x00, 0x01, 0x14, 0x19, 0x0a, 0x01, 0x0d, 0x19, 0x18,
|
||||
0x54, 0x40, 0x99, 0xd6, 0x00, 0x0d, 0x0d, 0x01, 0x10, 0x11, 0x00, 0x40, 0x01, 0x11, 0x11, 0x04,
|
||||
0x40, 0x08, 0x42, 0x00, 0x01, 0x12, 0x11, 0x04, 0x40, 0xff, 0xff, 0x00, 0x01, 0x13, 0x11, 0x04,
|
||||
0x40, 0x10, 0x84, 0x00, 0x01, 0x14, 0x11, 0x04, 0x40, 0x00, 0x00, 0x00, 0x01, 0x1b, 0x19, 0x0a,
|
||||
0x03, 0xcc, 0x0d, 0x19, 0x18, 0xf4, 0x60, 0x99, 0xd6, 0x00, 0xcc, 0x0d, 0xcc, 0x0d, 0x0d, 0x01,
|
||||
0x10, 0x11, 0x00, 0x40, 0x01, 0x11, 0x11, 0x04, 0x40, 0x08, 0x42, 0x00, 0x01, 0x12, 0x11, 0x04,
|
||||
0x40, 0xff, 0xff, 0x00, 0x01, 0x13, 0x11, 0x04, 0x40, 0x10, 0x84, 0x00, 0x01, 0x14, 0x11, 0x00,
|
||||
0x40, 0x01, 0x1b, 0x03, 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x01, 0x08, 0x08, 0x81, 0x08, 0xaa,
|
||||
0x55, 0xaa, 0x55, 0xaa, 0x55, 0xaa, 0x55, 0x09, 0x01, 0x7f, 0x02, 0x0d, 0x00, 0x1a, 0x01, 0x0d,
|
||||
0x00, 0x0d, 0x00, 0xf0, 0xff, 0xff, 0x00, 0x99, 0xd6, 0x00, 0x81, 0x19, 0x18, 0x54, 0x40, 0x99,
|
||||
0xd6, 0x00, 0x0d, 0x0d, 0x01, 0x16, 0x11, 0x04, 0x40, 0x08, 0x42, 0x00, 0x01, 0x17, 0x11, 0x04,
|
||||
0x40, 0xff, 0xff, 0x00, 0x01, 0x18, 0x11, 0x04, 0x40, 0x10, 0x84, 0x00, 0x01, 0x19, 0x11, 0x00,
|
||||
0x40, 0x01, 0x1a, 0x11, 0x54, 0x40, 0x99, 0xd6, 0x00, 0x0d, 0x0d, 0x01, 0x15, 0x11, 0x00, 0x40,
|
||||
0x01, 0x16, 0x11, 0x04, 0x40, 0x08, 0x42, 0x00, 0x01, 0x17, 0x11, 0x04, 0x40, 0xff, 0xff, 0x00,
|
||||
0x01, 0x18, 0x11, 0x04, 0x40, 0x10, 0x84, 0x00, 0x01, 0x19, 0x11, 0x00, 0x40, 0x01, 0x1a, 0x11,
|
||||
0x54, 0x40, 0x99, 0xd6, 0x00, 0x0d, 0x0d, 0x01, 0x15, 0x11, 0x00, 0x40, 0x01, 0x16, 0x11, 0x04,
|
||||
0x40, 0x08, 0x42, 0x00, 0x01, 0x17, 0x11, 0x04, 0x40, 0xff, 0xff, 0x00, 0x01, 0x18, 0x11, 0x04,
|
||||
0x40, 0x10, 0x84, 0x00, 0x01, 0x19, 0x11, 0x00, 0x40, 0x01, 0x1a, 0x19, 0x0a, 0x31, 0x34, 0xff,
|
||||
0xff, 0x19, 0x18, 0x54, 0x40, 0x00, 0x00, 0x00, 0x0c, 0x0c, 0x1b, 0x1c, 0x02, 0x4b, 0x09, 0x09,
|
||||
0xc1, 0x80, 0xe3, 0x80, 0x77, 0x00, 0x3e, 0x00, 0x1c, 0x00, 0x3e, 0x00, 0x77, 0x00, 0xe3, 0x80,
|
||||
0xc1, 0x80, 0x00, 0x00, 0x72, 0x00, 0x19, 0x0a, 0x03, 0xcc, 0x0d, 0x1d, 0x18, 0xf0, 0x60, 0xa0,
|
||||
0x45, 0x45, 0xcc, 0x0d, 0xcc, 0x0d, 0x0d, 0x1b, 0x1d, 0x01, 0x4b, 0x0a, 0x09, 0x3f, 0xc0, 0x3f,
|
||||
0xc0, 0x20, 0x40, 0xff, 0x40, 0xff, 0x40, 0x81, 0xc0, 0x81, 0x00, 0x81, 0x00, 0xff, 0x00, 0x00,
|
||||
0x00, 0x32, 0x00, 0x19, 0x0a, 0x01, 0x0d, 0x19, 0x18, 0x50, 0x40, 0x0d, 0x0d, 0x1b, 0x1e, 0x01,
|
||||
0x4c, 0x0a, 0x0a, 0xff, 0xc0, 0xff, 0xc0, 0x80, 0x40, 0x80, 0x40, 0x80, 0x40, 0x80, 0x40, 0x80,
|
||||
0x40, 0x80, 0x40, 0x80, 0x40, 0xff, 0xc0, 0x31, 0x00, 0x19, 0x0a, 0x01, 0x0d, 0x19, 0x18, 0x50,
|
||||
0x40, 0x0d, 0x0d, 0x0b, 0x1f, 0x02, 0x44, 0x07, 0x02, 0xfe, 0xfe, 0x00, 0x00, 0x30, 0x00, 0x19,
|
||||
0x0a, 0x3d, 0x0d, 0x03, 0x03, 0x99, 0xd6, 0x19, 0x18, 0xd4, 0x60, 0xff, 0xff, 0x00, 0x0e, 0x11,
|
||||
0x03, 0x03, 0x23, 0x20, 0x00, 0x4d, 0x0d, 0x0d, 0x00, 0x00, 0x80, 0x00, 0x40, 0x00, 0x20, 0x00,
|
||||
0x10, 0x00, 0x88, 0x00, 0x44, 0x00, 0x22, 0x00, 0x11, 0x00, 0x88, 0x80, 0x44, 0x40, 0x22, 0x20,
|
||||
0x11, 0x10, 0x00, 0x00, 0x78, 0x00, 0x11, 0x04, 0x40, 0x10, 0x84, 0x00, 0x1f, 0x21, 0x00, 0x4c,
|
||||
0x0c, 0x0c, 0x00, 0x00, 0x80, 0x00, 0xc0, 0x00, 0x60, 0x00, 0x30, 0x00, 0x98, 0x00, 0xcc, 0x00,
|
||||
0x66, 0x00, 0x33, 0x00, 0x99, 0x80, 0xcc, 0xc0, 0x66, 0x60, 0x79, 0x00, 0x19, 0x0a, 0x3d, 0x10,
|
||||
0xfd, 0xfd, 0xff, 0xff, 0x19, 0x18, 0xd4, 0x60, 0x00, 0x00, 0x00, 0x0f, 0x0c, 0xfd, 0xfd, 0x13,
|
||||
0x22, 0x05, 0x4b, 0x04, 0x09, 0x00, 0x10, 0x30, 0x70, 0xf0, 0x70, 0x30, 0x10, 0x00, 0x00, 0x00,
|
||||
0x00, 0x77, 0x00, 0x02, 0xff, 0xff, 0x0d, 0x0a, 0x3f, 0x0e, 0x00, 0x00, 0xff, 0x03, 0xff, 0x02,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x03, 0x00, 0x00, 0x06, 0x02, 0x00, 0x48, 0x00, 0x37,
|
||||
0x01, 0x02, 0x02, 0x00, 0x09, 0x00, 0x0c, 0x48, 0x00, 0x37, 0x01, 0x03, 0xcf, 0x04, 0xa2, 0x0c,
|
||||
0x05, 0x40, 0x44, 0xd1, 0xff, 0xff, 0x80, 0x00, 0xff, 0xff, 0x99, 0xd6, 0x99, 0xd6, 0x10, 0x00,
|
||||
0x99, 0xd6, 0x99, 0xd6, 0x99, 0xd6, 0x99, 0xd6, 0x99, 0xd6, 0x99, 0xd6, 0x99, 0xd6, 0x10, 0x00,
|
||||
0x99, 0xd6, 0x99, 0xd6, 0x10, 0x84, 0x08, 0x42, 0xff, 0xff, 0x99, 0xd6, 0x99, 0xd6, 0x10, 0x84,
|
||||
0xff, 0xff, 0x99, 0xd6, 0x99, 0xd6, 0x99, 0xd6, 0x99, 0xd6, 0x99, 0xd6, 0x99, 0xd6, 0x10, 0x84,
|
||||
0xff, 0xff, 0x99, 0xd6, 0x10, 0x84, 0x08, 0x42, 0x1c, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x75, 0xc6, 0x66, 0x29, 0x00, 0x09, 0x68, 0x10, 0x00, 0x08, 0x68, 0x10, 0x84,
|
||||
0x00, 0x20, 0x00, 0x07, 0x6b, 0x99, 0xd6, 0x05, 0x6b, 0x99, 0xd6, 0x00, 0x03, 0x6e, 0xff, 0xff,
|
||||
0x02, 0x6e, 0xff, 0xff, 0x00, 0x10, 0xc0, 0x00, 0xf7, 0xbd, 0x01, 0xc0, 0x00, 0x08, 0x42, 0xc0,
|
||||
0x00, 0xff, 0xff, 0x81, 0x08, 0x42, 0xce, 0x66, 0x29, 0x01, 0xfd, 0xce, 0x18, 0xc6, 0x01, 0xfd,
|
||||
0x2e, 0x01, 0x81, 0x08, 0x42, 0xce, 0x66, 0x29, 0x02, 0x81, 0x10, 0x84, 0x06, 0x82, 0x00, 0x00,
|
||||
0x00, 0x00, 0x07, 0xcd, 0x89, 0x52, 0x03, 0x2d, 0x03, 0x83, 0x10, 0x84, 0x99, 0xd6, 0x99, 0xd6,
|
||||
0xc9, 0x99, 0xd6, 0x1a, 0x82, 0x10, 0x00, 0x10, 0x00, 0x0a, 0x29, 0x09, 0x27, 0x0c, 0x67, 0x99,
|
||||
0xd6, 0x15, 0x27, 0x1d, 0x82, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x67, 0x99, 0xd6, 0x00, 0x19, 0xd0,
|
||||
0x30, 0x89, 0xd6, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd8, 0x99, 0xd6, 0x05, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0xc0, 0x01, 0x83, 0x99, 0xd6, 0x00, 0x00, 0x00, 0x00, 0x0b, 0xd8, 0x89,
|
||||
0xd6, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x01, 0x83, 0x99, 0xd6, 0x10, 0x00, 0x10,
|
||||
0x00, 0x1a, 0x68, 0x00, 0x00, 0x09, 0x86, 0x99, 0xd6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x99, 0xd6, 0x18, 0x68, 0x00, 0x00, 0x1b, 0x68, 0x99, 0xd6, 0x06, 0x86, 0x99, 0xd6, 0x10,
|
||||
0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x99, 0xd6, 0x19, 0x6b, 0x99, 0xd6, 0x03, 0xcc, 0x89,
|
||||
0x52, 0x08, 0x68, 0x99, 0xd6, 0x05, 0x6b, 0x99, 0xd6, 0x04, 0x2c, 0x03, 0x6e, 0x08, 0x42, 0x02,
|
||||
0x6e, 0xff, 0xff, 0x02, 0x6e, 0xff, 0xff, 0x02, 0x6e, 0x08, 0x42, 0x10, 0x81, 0x08, 0x42, 0x70,
|
||||
0xff, 0xff, 0x60, 0x00, 0x08, 0x42, 0xfd, 0xce, 0x18, 0xc6, 0x01, 0x81, 0x08, 0x42, 0xce, 0x66,
|
||||
0x29, 0x01, 0xfd, 0xce, 0x18, 0xc6, 0x01, 0xfd, 0x2e, 0x02, 0xcd, 0x89, 0x52, 0x03, 0x89, 0x10,
|
||||
0x84, 0x99, 0xd6, 0x99, 0xd6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x07, 0x2d, 0x03, 0x2d, 0x05, 0xc6, 0x99, 0xd6, 0x0c, 0x84, 0x99, 0xd6, 0x99, 0xd6, 0x99,
|
||||
0xd6, 0x99, 0xd6, 0x0a, 0xc6, 0x89, 0xd6, 0x0e, 0x82, 0x00, 0x00, 0x00, 0x00, 0x0b, 0x84, 0x99,
|
||||
0xd6, 0x99, 0xd6, 0x99, 0xd6, 0x99, 0xd6, 0x1c, 0x40, 0x35, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0xd0, 0x4e, 0x99, 0xd6, 0x03, 0x00, 0x00, 0x60, 0x00, 0x80, 0x01, 0x78, 0x01, 0x00, 0x82,
|
||||
0x10, 0x00, 0x10, 0x00, 0x0c, 0x40, 0x2c, 0x03, 0xe0, 0x05, 0x00, 0x00, 0x00, 0xd6, 0x89, 0xd6,
|
||||
0x2f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd0, 0x4e, 0x99, 0xd6, 0x3b, 0x00, 0x00, 0x00, 0x28, 0x80,
|
||||
0x1d, 0x00, 0x78, 0x00, 0x86, 0x99, 0xd6, 0x99, 0xd6, 0x10, 0x00, 0x99, 0xd6, 0x99, 0xd6, 0x99,
|
||||
0xd6, 0x0c, 0x85, 0x00, 0x00, 0x00, 0x00, 0x99, 0xd6, 0x99, 0xd6, 0x00, 0x00, 0x40, 0x2b, 0x01,
|
||||
0xf0, 0x00, 0x00, 0x00, 0x00, 0xd6, 0x89, 0xd6, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x69, 0x99,
|
||||
0xd6, 0x16, 0x86, 0x99, 0xd6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x99, 0xd6, 0x0a,
|
||||
0x69, 0x99, 0xd6, 0x04, 0xcc, 0x89, 0x52, 0x07, 0x69, 0x99, 0xd6, 0x08, 0x68, 0x99, 0xd6, 0x03,
|
||||
0x6e, 0xff, 0xff, 0x02, 0x6e, 0x08, 0x42, 0x02, 0x6e, 0xff, 0xff, 0x02, 0x6e, 0xff, 0xff, 0x01,
|
||||
0x70, 0x08, 0x42, 0x70, 0xff, 0xff, 0x60, 0x00, 0x08, 0x42, 0xfd, 0xce, 0x18, 0xc6, 0x01, 0x81,
|
||||
0x08, 0x42, 0xce, 0x66, 0x29, 0x01, 0xfd, 0xce, 0x18, 0xc6, 0x01, 0xfd, 0x2e, 0x02, 0xcd, 0x89,
|
||||
0x52, 0x03, 0x8a, 0x10, 0x84, 0x99, 0xd6, 0x99, 0xd6, 0x99, 0xd6, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x2d, 0x03, 0x8d, 0x99, 0xd6, 0x99, 0xd6, 0x99,
|
||||
0xd6, 0x99, 0xd6, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x99,
|
||||
0xd6, 0x99, 0xd6, 0x99, 0xd6, 0x06, 0xc6, 0x99, 0xd6, 0x1a, 0xc6, 0x89, 0xd6, 0x0a, 0x66, 0x10,
|
||||
0x84, 0x1b, 0x6a, 0x99, 0xd6, 0x1b, 0x81, 0x99, 0xd6, 0x09, 0x6a, 0x99, 0xd6, 0x16, 0x6a, 0x99,
|
||||
0xd6, 0x06, 0x6a, 0x99, 0xd6, 0xf0, 0x94, 0x01, 0xcc, 0x89, 0x52, 0x00, 0x03, 0x6e, 0xff, 0xff,
|
||||
0x02, 0x6e, 0x08, 0x42, 0x02, 0x6e, 0xff, 0xff, 0x02, 0x6e, 0xff, 0xff, 0x01, 0x70, 0x08, 0x42,
|
||||
0x70, 0xff, 0xff, 0x60, 0x00, 0x08, 0x42, 0xfd, 0xce, 0x18, 0xc6, 0x01, 0x81, 0x08, 0x42, 0xce,
|
||||
0x66, 0x29, 0x01, 0xfd, 0xce, 0x18, 0xc6, 0x01, 0xfd, 0x2e, 0x02, 0xcd, 0x89, 0x52, 0x03, 0x10,
|
||||
0x2d, 0x03, 0x2d, 0x17, 0x88, 0x00, 0x00, 0x00, 0x00, 0x99, 0xd6, 0x99, 0xd6, 0x99, 0xd6, 0x99,
|
||||
0xd6, 0x00, 0x00, 0x00, 0x00, 0x18, 0x88, 0xff, 0xff, 0xff, 0xff, 0x99, 0xd6, 0x99, 0xd6, 0x99,
|
||||
0xd6, 0x99, 0xd6, 0xff, 0xff, 0xff, 0xff, 0x07, 0x88, 0x00, 0x00, 0x00, 0x00, 0x99, 0xd6, 0x99,
|
||||
0xd6, 0x99, 0xd6, 0x99, 0xd6, 0x00, 0x00, 0x00, 0x00, 0x09, 0x88, 0x99, 0xd6, 0x00, 0x00, 0x00,
|
||||
0x00, 0x99, 0xd6, 0x99, 0xd6, 0x00, 0x00, 0x00, 0x00, 0x99, 0xd6, 0x07, 0x88, 0x10, 0x00, 0x10,
|
||||
0x00, 0x99, 0xd6, 0x99, 0xd6, 0x99, 0xd6, 0x99, 0xd6, 0x10, 0x00, 0x10, 0x00, 0x08, 0x89, 0x10,
|
||||
0x84, 0x10, 0x84, 0xff, 0xff, 0xff, 0xff, 0x99, 0xd6, 0x99, 0xd6, 0x10, 0x84, 0x10, 0x84, 0x99,
|
||||
0xd6, 0x07, 0x88, 0x99, 0xd6, 0x00, 0x00, 0x00, 0x00, 0x99, 0xd6, 0x99, 0xd6, 0x00, 0x00, 0x00,
|
||||
0x00, 0x99, 0xd6, 0x0a, 0x86, 0x99, 0xd6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x99,
|
||||
0xd6, 0x08, 0x88, 0x99, 0xd6, 0x10, 0x00, 0x10, 0x00, 0x99, 0xd6, 0x99, 0xd6, 0x10, 0x00, 0x10,
|
||||
0x00, 0x99, 0xd6, 0x08, 0x88, 0x99, 0xd6, 0x10, 0x84, 0x10, 0x84, 0xff, 0xff, 0xff, 0xff, 0x10,
|
||||
0x84, 0x10, 0x84, 0x99, 0xd6, 0x09, 0x86, 0x99, 0xd6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x99, 0xd6, 0x0c, 0x84, 0x99, 0xd6, 0x00, 0x00, 0x00, 0x00, 0x99, 0xd6, 0x0a, 0x86, 0x99,
|
||||
0xd6, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x99, 0xd6, 0x0a, 0x86, 0x99, 0xd6, 0x10,
|
||||
0x84, 0x10, 0x84, 0x10, 0x84, 0x10, 0x84, 0x99, 0xd6, 0x0b, 0x84, 0x99, 0xd6, 0x00, 0x00, 0x00,
|
||||
0x00, 0x99, 0xd6, 0x0d, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, 0x84, 0x99,
|
||||
0xd6, 0x10, 0x00, 0x10, 0x00, 0x99, 0xd6, 0x0c, 0x85, 0x99, 0xd6, 0x10, 0x84, 0x10, 0x84, 0xff,
|
||||
0xff, 0xff, 0xff, 0x0b, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x86, 0x00,
|
||||
0x00, 0x00, 0x00, 0x99, 0xd6, 0x99, 0xd6, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x84, 0x10, 0x00, 0x10,
|
||||
0x00, 0x10, 0x00, 0x10, 0x00, 0x0c, 0x86, 0x10, 0x84, 0x10, 0x84, 0x10, 0x84, 0x10, 0x84, 0xff,
|
||||
0xff, 0xff, 0xff, 0x09, 0x86, 0x00, 0x00, 0x00, 0x00, 0x99, 0xd6, 0x99, 0xd6, 0x00, 0x00, 0x00,
|
||||
0x00, 0x0a, 0x88, 0x00, 0x00, 0x00, 0x00, 0x99, 0xd6, 0x99, 0xd6, 0x99, 0xd6, 0x99, 0xd6, 0x00,
|
||||
0x00, 0x00, 0x00, 0x08, 0x86, 0x10, 0x00, 0x10, 0x00, 0x99, 0xd6, 0x99, 0xd6, 0x10, 0x00, 0x10,
|
||||
0x00, 0x0a, 0x88, 0x10, 0x84, 0x10, 0x84, 0x99, 0xd6, 0x99, 0xd6, 0x10, 0x84, 0x10, 0x84, 0xff,
|
||||
0xff, 0xff, 0xff, 0x07, 0x88, 0x00, 0x00, 0x00, 0x00, 0x99, 0xd6, 0x99, 0xd6, 0x99, 0xd6, 0x99,
|
||||
0xd6, 0x00, 0x00, 0x00, 0x00, 0x09, 0x6a, 0x99, 0xd6, 0x05, 0x88, 0x10, 0x00, 0x10, 0x00, 0x99,
|
||||
0xd6, 0x99, 0xd6, 0x99, 0xd6, 0x99, 0xd6, 0x10, 0x00, 0x10, 0x00, 0x08, 0x89, 0x10, 0x84, 0x10,
|
||||
0x84, 0x99, 0xd6, 0x99, 0xd6, 0x99, 0xd6, 0x99, 0xd6, 0x10, 0x84, 0x10, 0x84, 0x99, 0xd6, 0x07,
|
||||
0x6a, 0x99, 0xd6, 0x16, 0x6a, 0x99, 0xd6, 0x06, 0x6a, 0x99, 0xd6, 0x14, 0x2c, 0x00, 0x03, 0x6e,
|
||||
0xff, 0xff, 0x02, 0x6e, 0x08, 0x42, 0x02, 0x6e, 0xff, 0xff, 0x02, 0xcb, 0x66, 0x29, 0x84, 0xff,
|
||||
0xff, 0xff, 0xff, 0xff, 0xff, 0x08, 0x42, 0x09, 0x0d, 0xdf, 0x01, 0x02, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x40, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x7f, 0x03, 0x15, 0x00, 0xa2, 0x0c,
|
||||
0x05, 0x40, 0x40, 0x17, 0xff, 0xff, 0x00, 0x1c, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0xf0, 0xbc, 0x0f, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x51, 0x0a, 0x40,
|
||||
0xc8, 0x03, 0xf4, 0x00, 0xa2, 0x0c, 0x05, 0x40, 0x40, 0xf6, 0xff, 0xff, 0xc0, 0x2c, 0x2d, 0x09,
|
||||
0x84, 0x2d, 0x09, 0x2d, 0x09, 0x2d, 0x09, 0x2d, 0x09, 0x00, 0x22, 0xc0, 0x10, 0x25, 0x4b, 0x02,
|
||||
0x30, 0x02, 0x2a, 0x02, 0xfd, 0xce, 0x18, 0xc6, 0x01, 0xfd, 0x2e, 0x03, 0xfd, 0x2e, 0x03, 0xfd,
|
||||
0x29, 0x03, 0xcd, 0x89, 0x52, 0x03, 0x2d, 0x05, 0x2d, 0x05, 0x29, 0x06, 0xc6, 0x99, 0xd6, 0x09,
|
||||
0x29, 0x1f, 0x43, 0x03, 0x00, 0x00, 0x01, 0x27, 0x0b, 0x44, 0xc3, 0x00, 0x00, 0xc0, 0x68, 0x99,
|
||||
0xd6, 0x18, 0x48, 0xa5, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0xc2, 0x5a, 0x00, 0x60,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0x00, 0xa0,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x81, 0x99, 0xd6, 0x48, 0x05, 0x80, 0x05, 0x00, 0x00, 0xfc,
|
||||
0x01, 0x50, 0x40, 0x69, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x0c, 0x80, 0x06, 0x00,
|
||||
0x00, 0x02, 0x6a, 0x99, 0xd6, 0x1c, 0x86, 0x99, 0xd6, 0x99, 0xd6, 0x99, 0xd6, 0x99, 0xd6, 0x2d,
|
||||
0x09, 0x2d, 0x09, 0x6f, 0xff, 0xff, 0x02, 0x6e, 0xff, 0xff, 0x04, 0x6e, 0xff, 0xff, 0x04, 0xc9,
|
||||
0x66, 0x29, 0x02, 0x60, 0x5e, 0x2d, 0x09, 0xc0, 0x30, 0x2d, 0x09, 0xf0, 0xc0, 0x09, 0xc0, 0x10,
|
||||
0x08, 0x42, 0x00, 0x00, 0xfd, 0xce, 0x18, 0xc6, 0x01, 0xfd, 0x2e, 0x00, 0x02, 0xcd, 0x89, 0x52,
|
||||
0x03, 0x83, 0x99, 0xd6, 0x99, 0xd6, 0x99, 0xd6, 0xc9, 0xef, 0x7b, 0x81, 0x99, 0xd6, 0x00, 0x05,
|
||||
0xc9, 0x89, 0xd6, 0x07, 0x69, 0x10, 0x84, 0x00, 0x08, 0x27, 0x09, 0x82, 0xff, 0xff, 0x99, 0xd6,
|
||||
0xd0, 0x69, 0x89, 0x52, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x51, 0x0e, 0xc0, 0x40, 0x38, 0x03, 0xa8, 0x00, 0xa2, 0x0c, 0x05, 0x40, 0x40, 0xaa,
|
||||
0xff, 0xff, 0xc8, 0x2d, 0x09, 0x00, 0x14, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x20, 0xc6, 0x25, 0x4b, 0x00, 0x1a, 0xd8, 0x18, 0xc6, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0xf7, 0xc0, 0x01, 0x89, 0x52, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf7,
|
||||
0x00, 0x01, 0x99, 0xd6, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x84, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xd0, 0x3b, 0xef,
|
||||
0x7b, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x68, 0x2d, 0x09, 0x00, 0x58, 0xf3, 0x7c,
|
||||
0x0b, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x51, 0x0a, 0x40, 0xc8,
|
||||
};
|
||||
|
||||
int init_mppc_suite(void)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
int clean_mppc_suite(void)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
int add_mppc_suite(void)
|
||||
{
|
||||
add_test_suite(mppc);
|
||||
add_test_function(mppc);
|
||||
return 0;
|
||||
}
|
||||
|
||||
void test_mppc(void)
|
||||
{
|
||||
struct rdp_mppc_dec* rmppc;
|
||||
UINT32 roff;
|
||||
UINT32 rlen;
|
||||
long int dur;
|
||||
|
||||
struct timeval start_time;
|
||||
struct timeval end_time;
|
||||
|
||||
rmppc = mppc_dec_new();
|
||||
|
||||
/* save starting time */
|
||||
gettimeofday(&start_time, NULL);
|
||||
|
||||
/* uncompress data */
|
||||
CU_ASSERT(decompress_rdp_5(rmppc, compressed_rd5, sizeof(compressed_rd5),
|
||||
PACKET_COMPRESSED, &roff, &rlen) == TRUE);
|
||||
|
||||
/* get end time */
|
||||
gettimeofday(&end_time, NULL);
|
||||
|
||||
CU_ASSERT(memcmp(decompressed_rd5, rmppc->history_buf, sizeof(decompressed_rd5)) == 0);
|
||||
mppc_dec_free(rmppc);
|
||||
|
||||
/* print time taken */
|
||||
dur = ((end_time.tv_sec - start_time.tv_sec) * 1000000) + (end_time.tv_usec - start_time.tv_usec);
|
||||
//printf("test_mppc: decompressed data in %ld micro seconds\n", dur);
|
||||
}
|
||||
|
|
@ -1,26 +0,0 @@
|
|||
/**
|
||||
* FreeRDP: A Remote Desktop Protocol Implementation
|
||||
* Microsoft Point to Point compression (MPPC) Unit Tests
|
||||
*
|
||||
* Copyright 2011 Laxmikant Rashinkar <LK.Rashinkar@gmail.com>
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
#include "test_freerdp.h"
|
||||
|
||||
int init_mppc_suite(void);
|
||||
int clean_mppc_suite(void);
|
||||
int add_mppc_suite(void);
|
||||
|
||||
void test_mppc(void);
|
|
@ -1,592 +0,0 @@
|
|||
/**
|
||||
* FreeRDP: A Remote Desktop Protocol Implementation
|
||||
* Microsoft Point to Point Compression (MPPC) Unit Tests
|
||||
*
|
||||
* Copyright 2012 Laxmikant Rashinkar <LK.Rashinkar@gmail.com>
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
#include <stdio.h>
|
||||
#include <unistd.h>
|
||||
#include <stdint.h>
|
||||
#include <string.h>
|
||||
#include <fcntl.h>
|
||||
#include <sys/time.h>
|
||||
#include <sys/types.h>
|
||||
|
||||
#include <freerdp/freerdp.h>
|
||||
#include <freerdp/utils/time.h>
|
||||
|
||||
#include <freerdp/codec/mppc_dec.h>
|
||||
#include <freerdp/codec/mppc_enc.h>
|
||||
#include "test_mppc_enc.h"
|
||||
|
||||
#define BUF_SIZE (1024 * 1)
|
||||
|
||||
#define DEBUG_MPPC_ENC_TEST 0
|
||||
|
||||
char decompressed_rd5_data[] =
|
||||
{
|
||||
0x24, 0x02, 0x03, 0x09, 0x00, 0x20, 0x0c, 0x05, 0x10, 0x01, 0x40, 0x0a, 0xff, 0xff, 0x0c, 0x84,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1d, 0x0d, 0x38, 0x01, 0xc0, 0x10, 0x01, 0x10,
|
||||
0x01, 0xcc, 0xff, 0x7f, 0x03, 0x08, 0x00, 0x20, 0x04, 0x05, 0x10, 0x01, 0x40, 0x0a, 0x00, 0x0c,
|
||||
0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x35, 0x00, 0x01, 0x00, 0x00, 0x0d, 0x0a,
|
||||
0x0c, 0x0c, 0xff, 0x03, 0xff, 0x02, 0x00, 0x04, 0x00, 0x03, 0x06, 0x00, 0x00, 0x80, 0x00, 0x80,
|
||||
0x00, 0x02, 0x00, 0x00, 0x09, 0x00, 0x0c, 0x80, 0x00, 0x80, 0x00, 0x06, 0x00, 0x00, 0x48, 0x00,
|
||||
0x37, 0x01, 0x02, 0x00, 0x00, 0x01, 0x0c, 0x48, 0x00, 0x37, 0x01, 0x06, 0x01, 0x00, 0x00, 0x04,
|
||||
0x24, 0x00, 0x02, 0x01, 0x00, 0x01, 0x0c, 0x00, 0x04, 0x24, 0x00, 0x02, 0x00, 0x00, 0x09, 0x0a,
|
||||
0x3d, 0x0f, 0x00, 0x01, 0x00, 0x0e, 0x00, 0x08, 0x42, 0x11, 0x0f, 0xf1, 0x0d, 0x0e, 0xf3, 0x11,
|
||||
0x3e, 0xf3, 0xf2, 0x0c, 0xff, 0xff, 0x11, 0x0d, 0x01, 0x0d, 0xf4, 0x11, 0x3f, 0x0d, 0x01, 0xf3,
|
||||
0x0b, 0x10, 0x84, 0x11, 0x0f, 0xf3, 0x0b, 0x0c, 0xf5, 0x11, 0x3e, 0xf5, 0xf4, 0x0a, 0x99, 0xd6,
|
||||
0x11, 0x0d, 0x01, 0x0b, 0xf6, 0x11, 0x0a, 0x01, 0x09, 0x09, 0x18, 0xfb, 0x70, 0x06, 0x00, 0x03,
|
||||
0xff, 0xff, 0x00, 0x03, 0x00, 0x02, 0x00, 0x0d, 0x00, 0x0c, 0x00, 0x00, 0x80, 0x0c, 0x00, 0x0f,
|
||||
0x00, 0x01, 0x49, 0x08, 0x07, 0xc3, 0x66, 0x3c, 0x18, 0x3c, 0x66, 0xc3, 0x00, 0x72, 0x00, 0x19,
|
||||
0x0a, 0x3f, 0x1d, 0xfe, 0xf5, 0x04, 0xff, 0xff, 0x11, 0x0f, 0xf1, 0x0d, 0x0e, 0xf3, 0x11, 0x3e,
|
||||
0xf3, 0xf2, 0x0c, 0x08, 0x42, 0x11, 0x0d, 0x01, 0x0d, 0xf4, 0x11, 0x3f, 0x0d, 0x01, 0xf3, 0x0b,
|
||||
0x99, 0xd6, 0x11, 0x0f, 0xf3, 0x0b, 0x0c, 0xf5, 0x11, 0x3e, 0xf5, 0xf4, 0x0a, 0x10, 0x84, 0x11,
|
||||
0x0d, 0x01, 0x0b, 0xf6, 0x11, 0x3a, 0x01, 0x09, 0x99, 0xd6, 0x19, 0x18, 0xf0, 0x60, 0x11, 0x01,
|
||||
0x11, 0x01, 0x01, 0x01, 0x00, 0x19, 0x0a, 0x3f, 0x1d, 0xfe, 0xf5, 0x04, 0x08, 0x42, 0x11, 0x0f,
|
||||
0xf1, 0x0d, 0x0e, 0xf3, 0x11, 0x3e, 0xf3, 0xf2, 0x0c, 0xff, 0xff, 0x11, 0x0d, 0x01, 0x0d, 0xf4,
|
||||
0x11, 0x3f, 0x0d, 0x01, 0xf3, 0x0b, 0x10, 0x84, 0x11, 0x0f, 0xf3, 0x0b, 0x0c, 0xf5, 0x11, 0x3e,
|
||||
0xf5, 0xf4, 0x0a, 0x99, 0xd6, 0x11, 0x0d, 0x01, 0x0b, 0xf6, 0x11, 0x0a, 0x01, 0x09, 0x19, 0x18,
|
||||
0xf4, 0x20, 0x10, 0x00, 0x00, 0x0f, 0xff, 0x0f, 0xff, 0xff, 0x19, 0x0a, 0x3f, 0x1d, 0xfe, 0xf5,
|
||||
0x04, 0x08, 0x42, 0x11, 0x0f, 0xf1, 0x0d, 0x0e, 0xf3, 0x11, 0x3e, 0xf3, 0xf2, 0x0c, 0xff, 0xff,
|
||||
0x11, 0x0d, 0x01, 0x0d, 0xf4, 0x11, 0x3f, 0x0d, 0x01, 0xf3, 0x0b, 0x10, 0x84, 0x11, 0x0f, 0xf3,
|
||||
0x0b, 0x0c, 0xf5, 0x11, 0x3e, 0xf5, 0xf4, 0x0a, 0x99, 0xd6, 0x11, 0x0d, 0x01, 0x0b, 0xf6, 0x11,
|
||||
0x0a, 0x01, 0x09, 0x19, 0x18, 0xf4, 0x20, 0xff, 0xff, 0x00, 0x11, 0x01, 0x11, 0x01, 0x01, 0x11,
|
||||
0xf4, 0x20, 0x10, 0x84, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0x19, 0x0a, 0x3f, 0xdd, 0x0c, 0xf5,
|
||||
0x04, 0x08, 0x42, 0x11, 0x0f, 0xf1, 0x0d, 0x0e, 0xf3, 0x11, 0x3e, 0xf3, 0xf2, 0x0c, 0xff, 0xff,
|
||||
0x11, 0x0d, 0x01, 0x0d, 0xf4, 0x11, 0x3f, 0x0d, 0x01, 0xf3, 0x0b, 0x10, 0x84, 0x11, 0x0f, 0xf3,
|
||||
0x0b, 0x0c, 0xf5, 0x11, 0x3e, 0xf5, 0xf4, 0x0a, 0x99, 0xd6, 0x11, 0x0d, 0x01, 0x0b, 0xf6, 0x11,
|
||||
0x0a, 0x01, 0x09, 0x19, 0x18, 0xf4, 0x60, 0x00, 0x00, 0x00, 0xd0, 0x0e, 0xd0, 0x0e, 0x0e, 0x0b,
|
||||
0x01, 0x01, 0x43, 0x06, 0x02, 0xfc, 0xfc, 0x00, 0x00, 0x30, 0x00, 0x19, 0x0a, 0x3f, 0x1d, 0xfe,
|
||||
0xf5, 0x04, 0xff, 0xff, 0x11, 0x0f, 0xf1, 0x0d, 0x0e, 0xf3, 0x11, 0x3e, 0xf3, 0xf2, 0x0c, 0x08,
|
||||
0x42, 0x11, 0x0d, 0x01, 0x0d, 0xf4, 0x11, 0x3f, 0x0d, 0x01, 0xf3, 0x0b, 0x99, 0xd6, 0x11, 0x0f,
|
||||
0xf3, 0x0b, 0x0c, 0xf5, 0x11, 0x3e, 0xf5, 0xf4, 0x0a, 0x10, 0x84, 0x11, 0x0d, 0x01, 0x0b, 0xf6,
|
||||
0x11, 0x3a, 0x01, 0x09, 0x99, 0xd6, 0x19, 0x18, 0xf0, 0x60, 0x11, 0x01, 0x11, 0x01, 0x01, 0x01,
|
||||
0x01, 0x19, 0x0a, 0x3f, 0x1d, 0xfe, 0xf5, 0x04, 0x08, 0x42, 0x11, 0x0f, 0xf1, 0x0d, 0x0e, 0xf3,
|
||||
0x11, 0x3e, 0xf3, 0xf2, 0x0c, 0xff, 0xff, 0x11, 0x0d, 0x01, 0x0d, 0xf4, 0x11, 0x3f, 0x0d, 0x01,
|
||||
0xf3, 0x0b, 0x10, 0x84, 0x11, 0x0f, 0xf3, 0x0b, 0x0c, 0xf5, 0x11, 0x3e, 0xf5, 0xf4, 0x0a, 0x99,
|
||||
0xd6, 0x11, 0x0d, 0x01, 0x0b, 0xf6, 0x11, 0x0a, 0x01, 0x09, 0x19, 0x18, 0xf4, 0x20, 0x10, 0x00,
|
||||
0x00, 0x0f, 0xff, 0x0f, 0xff, 0xff, 0x19, 0x0a, 0x3f, 0x1d, 0xfe, 0xf5, 0x04, 0x08, 0x42, 0x11,
|
||||
0x0f, 0xf1, 0x0d, 0x0e, 0xf3, 0x11, 0x3e, 0xf3, 0xf2, 0x0c, 0xff, 0xff, 0x11, 0x0d, 0x01, 0x0d,
|
||||
0xf4, 0x11, 0x3f, 0x0d, 0x01, 0xf3, 0x0b, 0x10, 0x84, 0x11, 0x0f, 0xf3, 0x0b, 0x0c, 0xf5, 0x11,
|
||||
0x3e, 0xf5, 0xf4, 0x0a, 0x99, 0xd6, 0x11, 0x0d, 0x01, 0x0b, 0xf6, 0x11, 0x0a, 0x01, 0x09, 0x19,
|
||||
0x18, 0xf4, 0x20, 0xff, 0xff, 0x00, 0x11, 0x01, 0x11, 0x01, 0x01, 0x11, 0xf4, 0x20, 0x10, 0x84,
|
||||
0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0x19, 0x0a, 0x3f, 0xdd, 0x0c, 0xf5, 0x04, 0x08, 0x42, 0x11,
|
||||
0x0f, 0xf1, 0x0d, 0x0e, 0xf3, 0x11, 0x3e, 0xf3, 0xf2, 0x0c, 0xff, 0xff, 0x11, 0x0d, 0x01, 0x0d,
|
||||
0xf4, 0x11, 0x3f, 0x0d, 0x01, 0xf3, 0x0b, 0x10, 0x84, 0x11, 0x0f, 0xf3, 0x0b, 0x0c, 0xf5, 0x11,
|
||||
0x3e, 0xf5, 0xf4, 0x0a, 0x99, 0xd6, 0x11, 0x0d, 0x01, 0x0b, 0xf6, 0x11, 0x0a, 0x01, 0x09, 0x19,
|
||||
0x18, 0xf4, 0x60, 0x00, 0x00, 0x00, 0xd0, 0x0e, 0xd0, 0x0e, 0x0e, 0x13, 0x02, 0x00, 0x4a, 0x08,
|
||||
0x09, 0x3f, 0x3f, 0x21, 0xfd, 0xfd, 0x87, 0x84, 0x84, 0xfc, 0x00, 0x00, 0x00, 0x32, 0x00, 0x19,
|
||||
0x0a, 0x3f, 0x1d, 0xfe, 0xf5, 0x04, 0xff, 0xff, 0x11, 0x0f, 0xf1, 0x0d, 0x0e, 0xf3, 0x11, 0x3e,
|
||||
0xf3, 0xf2, 0x0c, 0x08, 0x42, 0x11, 0x0d, 0x01, 0x0d, 0xf4, 0x11, 0x3f, 0x0d, 0x01, 0xf3, 0x0b,
|
||||
0x99, 0xd6, 0x11, 0x0f, 0xf3, 0x0b, 0x0c, 0xf5, 0x11, 0x3e, 0xf5, 0xf4, 0x0a, 0x10, 0x84, 0x11,
|
||||
0x0d, 0x01, 0x0b, 0xf6, 0x11, 0x3a, 0x01, 0x09, 0x99, 0xd6, 0x19, 0x18, 0xf0, 0x60, 0x11, 0x01,
|
||||
0x11, 0x01, 0x01, 0x01, 0x02, 0x19, 0x0a, 0x3f, 0x1d, 0xfe, 0xf5, 0x04, 0x08, 0x42, 0x11, 0x0f,
|
||||
0xf1, 0x0d, 0x0e, 0xf3, 0x11, 0x3e, 0xf3, 0xf2, 0x0c, 0xff, 0xff, 0x11, 0x0d, 0x01, 0x0d, 0xf4,
|
||||
0x11, 0x3f, 0x0d, 0x01, 0xf3, 0x0b, 0x10, 0x84, 0x11, 0x0f, 0xf3, 0x0b, 0x0c, 0xf5, 0x11, 0x3e,
|
||||
0xf5, 0xf4, 0x0a, 0x99, 0xd6, 0x11, 0x0d, 0x01, 0x0b, 0xf6, 0x11, 0x0a, 0x01, 0x09, 0x19, 0x18,
|
||||
0xf4, 0x20, 0x10, 0x00, 0x00, 0x0f, 0xff, 0x0f, 0xff, 0xff, 0x19, 0x0a, 0x3f, 0x1d, 0xfe, 0xf5,
|
||||
0x04, 0x08, 0x42, 0x11, 0x0f, 0xf1, 0x0d, 0x0e, 0xf3, 0x11, 0x3e, 0xf3, 0xf2, 0x0c, 0xff, 0xff,
|
||||
0x11, 0x0d, 0x01, 0x0d, 0xf4, 0x11, 0x3f, 0x0d, 0x01, 0xf3, 0x0b, 0x10, 0x84, 0x11, 0x0f, 0xf3,
|
||||
0x0b, 0x0c, 0xf5, 0x11, 0x3e, 0xf5, 0xf4, 0x0a, 0x99, 0xd6, 0x11, 0x0d, 0x01, 0x0b, 0xf6, 0x11,
|
||||
0x0a, 0x01, 0x09, 0x19, 0x18, 0x54, 0x40, 0x00, 0x00, 0x00, 0x10, 0x10, 0x13, 0x03, 0x02, 0x4a,
|
||||
0x06, 0x09, 0x78, 0xcc, 0xcc, 0x18, 0x30, 0x30, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x73, 0x00,
|
||||
0x19, 0x0a, 0x3f, 0xdd, 0x0c, 0xf5, 0x04, 0xff, 0xff, 0x11, 0x0f, 0xf1, 0x0d, 0x0e, 0xf3, 0x11,
|
||||
0x3e, 0xf3, 0xf2, 0x0c, 0x08, 0x42, 0x11, 0x0d, 0x01, 0x0d, 0xf4, 0x11, 0x3f, 0x0d, 0x01, 0xf3,
|
||||
0x0b, 0x99, 0xd6, 0x11, 0x0f, 0xf3, 0x0b, 0x0c, 0xf5, 0x11, 0x3e, 0xf5, 0xf4, 0x0a, 0x10, 0x84,
|
||||
0x11, 0x0d, 0x01, 0x0b, 0xf6, 0x11, 0x3a, 0x01, 0x09, 0x99, 0xd6, 0x19, 0x18, 0xf0, 0x60, 0xd1,
|
||||
0x0f, 0xd1, 0x0f, 0x0f, 0x01, 0x03, 0x19, 0x0a, 0x3f, 0x1d, 0xfe, 0xf5, 0x04, 0x08, 0x42, 0x11,
|
||||
0x0f, 0xf1, 0x0d, 0x0e, 0xf3, 0x11, 0x3e, 0xf3, 0xf2, 0x0c, 0xff, 0xff, 0x11, 0x0d, 0x01, 0x0d,
|
||||
0xf4, 0x11, 0x3f, 0x0d, 0x01, 0xf3, 0x0b, 0x10, 0x84, 0x11, 0x0f, 0xf3, 0x0b, 0x0c, 0xf5, 0x11,
|
||||
0x3e, 0xf5, 0xf4, 0x0a, 0x99, 0xd6, 0x11, 0x0d, 0x01, 0x0b, 0xf6, 0x11, 0x0a, 0x01, 0x09, 0x19,
|
||||
0x18, 0xf4, 0x20, 0x10, 0x00, 0x00, 0x0f, 0xff, 0x0f, 0xff, 0xff, 0x19, 0x0a, 0x3f, 0x1d, 0xfe,
|
||||
0xf5, 0x04, 0x08, 0x42, 0x11, 0x0f, 0xf1, 0x0d, 0x0e, 0xf3, 0x11, 0x3e, 0xf3, 0xf2, 0x0c, 0xff,
|
||||
0xff, 0x11, 0x0d, 0x01, 0x0d, 0xf4, 0x11, 0x3f, 0x0d, 0x01, 0xf3, 0x0b, 0x10, 0x84, 0x11, 0x0f,
|
||||
0xf3, 0x0b, 0x0c, 0xf5, 0x11, 0x3e, 0xf5, 0xf4, 0x0a, 0x99, 0xd6, 0x11, 0x0d, 0x01, 0x0b, 0xf6,
|
||||
0x11, 0x0a, 0x01, 0x09, 0x19, 0x18, 0x54, 0x40, 0x00, 0x00, 0x00, 0x10, 0x10, 0x1b, 0x04, 0x00,
|
||||
0x4a, 0x09, 0x09, 0xff, 0x80, 0xff, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80,
|
||||
0x80, 0x80, 0x80, 0xff, 0x80, 0x00, 0x00, 0x31, 0x00, 0x19, 0x0a, 0x3f, 0x1d, 0xfe, 0xf5, 0x04,
|
||||
0xff, 0xff, 0x11, 0x0f, 0xf1, 0x0d, 0x0e, 0xf3, 0x11, 0x3e, 0xf3, 0xf2, 0x0c, 0x08, 0x42, 0x11,
|
||||
0x0d, 0x01, 0x0d, 0xf4, 0x11, 0x3f, 0x0d, 0x01, 0xf3, 0x0b, 0x99, 0xd6, 0x11, 0x0f, 0xf3, 0x0b,
|
||||
0x0c, 0xf5, 0x11, 0x3e, 0xf5, 0xf4, 0x0a, 0x10, 0x84, 0x11, 0x0d, 0x01, 0x0b, 0xf6, 0x11, 0x3a,
|
||||
0x01, 0x09, 0x99, 0xd6, 0x19, 0x18, 0xf0, 0x60, 0x11, 0x01, 0x11, 0x01, 0x01, 0x01, 0x04, 0x19,
|
||||
0x0a, 0x3f, 0xdd, 0x0c, 0xf5, 0x04, 0x08, 0x42, 0x11, 0x0f, 0xf1, 0x0d, 0x0e, 0xf3, 0x11, 0x3e,
|
||||
0xf3, 0xf2, 0x0c, 0xff, 0xff, 0x11, 0x0d, 0x01, 0x0d, 0xf4, 0x11, 0x3f, 0x0d, 0x01, 0xf3, 0x0b,
|
||||
0x10, 0x84, 0x11, 0x0f, 0xf3, 0x0b, 0x0c, 0xf5, 0x11, 0x3e, 0xf5, 0xf4, 0x0a, 0x99, 0xd6, 0x11,
|
||||
0x0d, 0x01, 0x0b, 0xf6, 0x11, 0x0a, 0x01, 0x09, 0x19, 0x18, 0xf4, 0x20, 0x10, 0x00, 0x00, 0xcf,
|
||||
0x0d, 0xcf, 0x0d, 0x0d, 0x19, 0x0a, 0x3f, 0x1d, 0xfe, 0xf5, 0x04, 0x08, 0x42, 0x11, 0x0f, 0xf1,
|
||||
0x0d, 0x0e, 0xf3, 0x11, 0x3e, 0xf3, 0xf2, 0x0c, 0xff, 0xff, 0x11, 0x0d, 0x01, 0x0d, 0xf4, 0x11,
|
||||
0x3f, 0x0d, 0x01, 0xf3, 0x0b, 0x10, 0x84, 0x11, 0x0f, 0xf3, 0x0b, 0x0c, 0xf5, 0x11, 0x3e, 0xf5,
|
||||
0xf4, 0x0a, 0x99, 0xd6, 0x11, 0x0d, 0x01, 0x0b, 0xf6, 0x11, 0x0a, 0x01, 0x09, 0x19, 0x18, 0xf4,
|
||||
0x20, 0xff, 0xff, 0x00, 0x11, 0x01, 0x11, 0x01, 0x01, 0x11, 0xf4, 0x20, 0x10, 0x84, 0x00, 0xff,
|
||||
0xff, 0xff, 0xff, 0xff, 0x19, 0x0a, 0x3f, 0xee, 0x34, 0x3c, 0x08, 0x2d, 0x09, 0x59, 0x0d, 0x97,
|
||||
0xff, 0x00, 0x02, 0x70, 0x0d, 0x0e, 0x51, 0xc2, 0x10, 0x20, 0x1c, 0x51, 0xc2, 0x12, 0xe0, 0xd6,
|
||||
0x51, 0xc2, 0x12, 0x30, 0x1c, 0x19, 0x0a, 0x32, 0x12, 0x10, 0x84, 0x59, 0x0d, 0xc6, 0xcc, 0x12,
|
||||
0xd0, 0xf2, 0x51, 0xc2, 0x10, 0x20, 0x1c, 0x51, 0xc2, 0x12, 0xe0, 0xd6, 0x51, 0xc2, 0x12, 0x30,
|
||||
0x1c, 0x19, 0x0a, 0x3f, 0x0a, 0x12, 0xb9, 0xf9, 0x08, 0x42, 0x11, 0x0f, 0xf6, 0x0a, 0x09, 0xf6,
|
||||
0x11, 0x3e, 0xf6, 0xf7, 0x09, 0xff, 0xff, 0x11, 0x0d, 0x01, 0x08, 0xf7, 0x11, 0x3f, 0x08, 0x01,
|
||||
0xf8, 0x08, 0x10, 0x84, 0x11, 0x0f, 0xf8, 0x08, 0x07, 0xf8, 0x11, 0x3e, 0xf8, 0xf9, 0x07, 0x99,
|
||||
0xd6, 0x11, 0x0d, 0x01, 0x06, 0xf9, 0x11, 0x0a, 0x01, 0x06, 0x19, 0x18, 0xf5, 0x60, 0x05, 0x00,
|
||||
0x00, 0x00, 0xef, 0x5a, 0xec, 0x57, 0x57, 0x0f, 0x00, 0x00, 0x46, 0x06, 0x05, 0xcc, 0x78, 0x30,
|
||||
0x78, 0xcc, 0x00, 0x00, 0x00, 0x72, 0x00, 0x19, 0x0a, 0x3f, 0x13, 0xfe, 0xfa, 0x04, 0xff, 0xff,
|
||||
0x11, 0x0f, 0xf6, 0x0a, 0x09, 0xf6, 0x11, 0x3e, 0xf6, 0xf7, 0x09, 0x08, 0x42, 0x11, 0x0d, 0x01,
|
||||
0x08, 0xf7, 0x11, 0x3f, 0x08, 0x01, 0xf8, 0x08, 0x99, 0xd6, 0x11, 0x0f, 0xf8, 0x08, 0x07, 0xf8,
|
||||
0x11, 0x3e, 0xf8, 0xf9, 0x07, 0x10, 0x84, 0x11, 0x0d, 0x01, 0x06, 0xf9, 0x11, 0x3a, 0x01, 0x06,
|
||||
0x99, 0xd6, 0x19, 0x18, 0xf0, 0x60, 0x0c, 0x01, 0x0c, 0x01, 0x01, 0x01, 0x00, 0x19, 0x0a, 0x3f,
|
||||
0x13, 0xfe, 0xfa, 0x04, 0x08, 0x42, 0x11, 0x0f, 0xf6, 0x0a, 0x09, 0xf6, 0x11, 0x3e, 0xf6, 0xf7,
|
||||
0x09, 0xff, 0xff, 0x11, 0x0d, 0x01, 0x08, 0xf7, 0x11, 0x3f, 0x08, 0x01, 0xf8, 0x08, 0x10, 0x84,
|
||||
0x11, 0x0f, 0xf8, 0x08, 0x07, 0xf8, 0x11, 0x3e, 0xf8, 0xf9, 0x07, 0x99, 0xd6, 0x11, 0x0d, 0x01,
|
||||
0x06, 0xf9, 0x11, 0x0a, 0x01, 0x06, 0x19, 0x18, 0xf4, 0x20, 0x10, 0x00, 0x00, 0x0a, 0xff, 0x0a,
|
||||
0xff, 0xff, 0x19, 0x0a, 0x3f, 0x13, 0xfe, 0xfa, 0x04, 0x08, 0x42, 0x11, 0x0f, 0xf6, 0x0a, 0x09,
|
||||
0xf6, 0x11, 0x3e, 0xf6, 0xf7, 0x09, 0xff, 0xff, 0x11, 0x0d, 0x01, 0x08, 0xf7, 0x11, 0x3f, 0x08,
|
||||
0x01, 0xf8, 0x08, 0x10, 0x84, 0x11, 0x0f, 0xf8, 0x08, 0x07, 0xf8, 0x11, 0x3e, 0xf8, 0xf9, 0x07,
|
||||
0x99, 0xd6, 0x11, 0x0d, 0x01, 0x06, 0xf9, 0x11, 0x0a, 0x01, 0x06, 0x19, 0x18, 0xf4, 0x20, 0xff,
|
||||
0xff, 0x00, 0x0c, 0x01, 0x0c, 0x01, 0x01, 0x11, 0xf4, 0x20, 0x10, 0x84, 0x00, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0x19, 0x0a, 0x0f, 0x09, 0xfe, 0x09, 0x09, 0x19, 0x18, 0xf5, 0x60, 0x06, 0xff, 0xff,
|
||||
0x00, 0x09, 0xfe, 0x12, 0x07, 0x07, 0x23, 0x05, 0x03, 0x4d, 0x0d, 0x0d, 0x00, 0x00, 0x00, 0x08,
|
||||
0x00, 0x10, 0x00, 0x20, 0x00, 0x40, 0x00, 0x88, 0x01, 0x10, 0x02, 0x20, 0x04, 0x40, 0x08, 0x88,
|
||||
0x11, 0x10, 0x22, 0x20, 0x44, 0x40, 0x00, 0x00, 0x6f, 0x00, 0x11, 0x04, 0x40, 0x10, 0x84, 0x00,
|
||||
0x1f, 0x06, 0x04, 0x4c, 0x0c, 0x0c, 0x00, 0x00, 0x00, 0x10, 0x00, 0x30, 0x00, 0x60, 0x00, 0xc0,
|
||||
0x01, 0x90, 0x03, 0x30, 0x06, 0x60, 0x0c, 0xc0, 0x19, 0x90, 0x33, 0x30, 0x66, 0x60, 0x70, 0x00,
|
||||
0x19, 0x0a, 0x37, 0xe3, 0x10, 0xf1, 0x08, 0x42, 0x11, 0x0f, 0xf1, 0x0f, 0x0e, 0xf1, 0x11, 0x3e,
|
||||
0xf1, 0xf2, 0x0e, 0x99, 0xd6, 0x11, 0x0d, 0x01, 0x0d, 0xf2, 0x11, 0x3f, 0x0d, 0x01, 0xf3, 0x0d,
|
||||
0x10, 0x84, 0x11, 0x0f, 0xf3, 0x0d, 0x0c, 0xf3, 0x11, 0x3e, 0xf3, 0xf4, 0x0c, 0xff, 0xff, 0x11,
|
||||
0x0d, 0x01, 0x0b, 0xf4, 0x11, 0x3a, 0x01, 0x0b, 0x99, 0xd6, 0x19, 0x18, 0xf4, 0x60, 0x00, 0x00,
|
||||
0x00, 0xd6, 0x12, 0xd2, 0x0e, 0x0e, 0x0f, 0x07, 0x01, 0x48, 0x09, 0x04, 0x08, 0x00, 0x1c, 0x00,
|
||||
0x3e, 0x00, 0x7f, 0x00, 0x35, 0x00, 0x19, 0x0a, 0x3f, 0x1d, 0xfe, 0xf5, 0x04, 0x10, 0x84, 0x11,
|
||||
0x0f, 0xf1, 0x0f, 0x0e, 0xf1, 0x11, 0x0e, 0xf1, 0xf2, 0x0e, 0x11, 0x0d, 0x01, 0x0d, 0xf2, 0x11,
|
||||
0x3f, 0x0d, 0x01, 0xf3, 0x0d, 0x99, 0xd6, 0x11, 0x0f, 0xf3, 0x0d, 0x0c, 0xf3, 0x11, 0x0e, 0xf3,
|
||||
0xf4, 0x0c, 0x11, 0x0d, 0x01, 0x0b, 0xf4, 0x11, 0x0a, 0x01, 0x0b, 0x19, 0x18, 0xf0, 0x60, 0x11,
|
||||
0x01, 0x11, 0x01, 0x01, 0x01, 0x07, 0x19, 0x0a, 0x3f, 0x1d, 0xfe, 0xf5, 0x04, 0x08, 0x42, 0x11,
|
||||
0x0f, 0xf1, 0x0f, 0x0e, 0xf1, 0x11, 0x3e, 0xf1, 0xf2, 0x0e, 0x99, 0xd6, 0x11, 0x0d, 0x01, 0x0d,
|
||||
0xf2, 0x11, 0x3f, 0x0d, 0x01, 0xf3, 0x0d, 0x10, 0x84, 0x11, 0x0f, 0xf3, 0x0d, 0x0c, 0xf3, 0x11,
|
||||
0x3e, 0xf3, 0xf4, 0x0c, 0xff, 0xff, 0x11, 0x0d, 0x01, 0x0b, 0xf4, 0x11, 0x3a, 0x01, 0x0b, 0x99,
|
||||
0xd6, 0x19, 0x18, 0xf4, 0x20, 0x10, 0x00, 0x00, 0x0f, 0xff, 0x0f, 0xff, 0xff, 0x19, 0x0a, 0x3f,
|
||||
0x1d, 0xfe, 0xf5, 0x04, 0x08, 0x42, 0x11, 0x0f, 0xf1, 0x0f, 0x0e, 0xf1, 0x11, 0x3e, 0xf1, 0xf2,
|
||||
0x0e, 0x99, 0xd6, 0x11, 0x0d, 0x01, 0x0d, 0xf2, 0x11, 0x3f, 0x0d, 0x01, 0xf3, 0x0d, 0x10, 0x84,
|
||||
0x11, 0x0f, 0xf3, 0x0d, 0x0c, 0xf3, 0x11, 0x3e, 0xf3, 0xf4, 0x0c, 0xff, 0xff, 0x11, 0x0d, 0x01,
|
||||
0x0b, 0xf4, 0x11, 0x3a, 0x01, 0x0b, 0x99, 0xd6, 0x19, 0x18, 0xf4, 0x20, 0xff, 0xff, 0x00, 0x11,
|
||||
0x01, 0x11, 0x01, 0x01, 0x11, 0xf4, 0x20, 0x10, 0x84, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0x19,
|
||||
0x0a, 0x3f, 0xdd, 0x0e, 0xf5, 0x04, 0x08, 0x42, 0x11, 0x0f, 0xf1, 0x0f, 0x0e, 0xf1, 0x11, 0x3e,
|
||||
0xf1, 0xf2, 0x0e, 0x99, 0xd6, 0x11, 0x0d, 0x01, 0x0d, 0xf2, 0x11, 0x3f, 0x0d, 0x01, 0xf3, 0x0d,
|
||||
0x10, 0x84, 0x11, 0x0f, 0xf3, 0x0d, 0x0c, 0xf3, 0x11, 0x3e, 0xf3, 0xf4, 0x0c, 0xff, 0xff, 0x11,
|
||||
0x0d, 0x01, 0x0b, 0xf4, 0x11, 0x3a, 0x01, 0x0b, 0x99, 0xd6, 0x19, 0x18, 0xf4, 0x60, 0x00, 0x00,
|
||||
0x00, 0xd0, 0x10, 0xd0, 0x10, 0x10, 0x0f, 0x08, 0x01, 0x48, 0x09, 0x04, 0x7f, 0x00, 0x3e, 0x00,
|
||||
0x1c, 0x00, 0x08, 0x00, 0x36, 0x00, 0x19, 0x0a, 0x3f, 0x1d, 0xfe, 0xf5, 0x04, 0x10, 0x84, 0x11,
|
||||
0x0f, 0xf1, 0x0f, 0x0e, 0xf1, 0x11, 0x0e, 0xf1, 0xf2, 0x0e, 0x11, 0x0d, 0x01, 0x0d, 0xf2, 0x11,
|
||||
0x3f, 0x0d, 0x01, 0xf3, 0x0d, 0x99, 0xd6, 0x11, 0x0f, 0xf3, 0x0d, 0x0c, 0xf3, 0x11, 0x0e, 0xf3,
|
||||
0xf4, 0x0c, 0x11, 0x0d, 0x01, 0x0b, 0xf4, 0x11, 0x0a, 0x01, 0x0b, 0x19, 0x18, 0xf0, 0x60, 0x11,
|
||||
0x01, 0x11, 0x01, 0x01, 0x01, 0x08, 0x19, 0x0a, 0x3f, 0x1d, 0xfe, 0xf5, 0x04, 0x08, 0x42, 0x11,
|
||||
0x0f, 0xf1, 0x0f, 0x0e, 0xf1, 0x11, 0x3e, 0xf1, 0xf2, 0x0e, 0x99, 0xd6, 0x11, 0x0d, 0x01, 0x0d,
|
||||
0xf2, 0x11, 0x3f, 0x0d, 0x01, 0xf3, 0x0d, 0x10, 0x84, 0x11, 0x0f, 0xf3, 0x0d, 0x0c, 0xf3, 0x11,
|
||||
0x3e, 0xf3, 0xf4, 0x0c, 0xff, 0xff, 0x11, 0x0d, 0x01, 0x0b, 0xf4, 0x11, 0x3a, 0x01, 0x0b, 0x99,
|
||||
0xd6, 0x19, 0x18, 0xf4, 0x20, 0x10, 0x00, 0x00, 0x0f, 0xff, 0x0f, 0xff, 0xff, 0x19, 0x0a, 0x3f,
|
||||
0x1d, 0xfe, 0xf5, 0x04, 0x08, 0x42, 0x11, 0x0f, 0xf1, 0x0f, 0x0e, 0xf1, 0x11, 0x3e, 0xf1, 0xf2,
|
||||
0x0e, 0x99, 0xd6, 0x11, 0x0d, 0x01, 0x0d, 0xf2, 0x11, 0x3f, 0x0d, 0x01, 0xf3, 0x0d, 0x10, 0x84,
|
||||
0x11, 0x0f, 0xf3, 0x0d, 0x0c, 0xf3, 0x11, 0x3e, 0xf3, 0xf4, 0x0c, 0xff, 0xff, 0x11, 0x0d, 0x01,
|
||||
0x0b, 0xf4, 0x11, 0x3a, 0x01, 0x0b, 0x99, 0xd6, 0x19, 0x18, 0xf4, 0x20, 0xff, 0xff, 0x00, 0x11,
|
||||
0x01, 0x11, 0x01, 0x01, 0x11, 0xf4, 0x20, 0x10, 0x84, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0x19,
|
||||
0x0a, 0x3f, 0xdd, 0x0e, 0xf5, 0x04, 0x08, 0x42, 0x11, 0x0f, 0xf1, 0x0f, 0x0e, 0xf1, 0x11, 0x3e,
|
||||
0xf1, 0xf2, 0x0e, 0x99, 0xd6, 0x11, 0x0d, 0x01, 0x0d, 0xf2, 0x11, 0x3f, 0x0d, 0x01, 0xf3, 0x0d,
|
||||
0x10, 0x84, 0x11, 0x0f, 0xf3, 0x0d, 0x0c, 0xf3, 0x11, 0x3e, 0xf3, 0xf4, 0x0c, 0xff, 0xff, 0x11,
|
||||
0x0d, 0x01, 0x0b, 0xf4, 0x11, 0x3a, 0x01, 0x0b, 0x99, 0xd6, 0x19, 0x18, 0xf4, 0x60, 0x00, 0x00,
|
||||
0x00, 0xd0, 0x10, 0xd0, 0x10, 0x10, 0x13, 0x09, 0x04, 0x4b, 0x04, 0x09, 0x00, 0x80, 0xc0, 0xe0,
|
||||
0xf0, 0xe0, 0xc0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x34, 0x00, 0x19, 0x0a, 0x3f, 0x1d, 0xfe, 0xf5,
|
||||
0x04, 0x10, 0x84, 0x11, 0x0f, 0xf1, 0x0f, 0x0e, 0xf1, 0x11, 0x0e, 0xf1, 0xf2, 0x0e, 0x11, 0x0d,
|
||||
0x01, 0x0d, 0xf2, 0x11, 0x3f, 0x0d, 0x01, 0xf3, 0x0d, 0x99, 0xd6, 0x11, 0x0f, 0xf3, 0x0d, 0x0c,
|
||||
0xf3, 0x11, 0x0e, 0xf3, 0xf4, 0x0c, 0x11, 0x0d, 0x01, 0x0b, 0xf4, 0x11, 0x0a, 0x01, 0x0b, 0x19,
|
||||
0x18, 0xf0, 0x60, 0x11, 0x01, 0x11, 0x01, 0x01, 0x01, 0x09, 0x19, 0x0a, 0x3f, 0x1d, 0xfe, 0xf5,
|
||||
0x04, 0x08, 0x42, 0x11, 0x0f, 0xf1, 0x0f, 0x0e, 0xf1, 0x11, 0x3e, 0xf1, 0xf2, 0x0e, 0x99, 0xd6,
|
||||
0x11, 0x0d, 0x01, 0x0d, 0xf2, 0x11, 0x3f, 0x0d, 0x01, 0xf3, 0x0d, 0x10, 0x84, 0x11, 0x0f, 0xf3,
|
||||
0x0d, 0x0c, 0xf3, 0x11, 0x3e, 0xf3, 0xf4, 0x0c, 0xff, 0xff, 0x11, 0x0d, 0x01, 0x0b, 0xf4, 0x11,
|
||||
0x3a, 0x01, 0x0b, 0x99, 0xd6, 0x19, 0x18, 0xf4, 0x20, 0x10, 0x00, 0x00, 0x0f, 0xff, 0x0f, 0xff,
|
||||
0xff, 0x19, 0x0a, 0x3f, 0x1d, 0xfe, 0xf5, 0x04, 0x08, 0x42, 0x11, 0x0f, 0xf1, 0x0f, 0x0e, 0xf1,
|
||||
0x11, 0x3e, 0xf1, 0xf2, 0x0e, 0x99, 0xd6, 0x11, 0x0d, 0x01, 0x0d, 0xf2, 0x11, 0x3f, 0x0d, 0x01,
|
||||
0xf3, 0x0d, 0x10, 0x84, 0x11, 0x0f, 0xf3, 0x0d, 0x0c, 0xf3, 0x11, 0x3e, 0xf3, 0xf4, 0x0c, 0xff,
|
||||
0xff, 0x11, 0x0d, 0x01, 0x0b, 0xf4, 0x11, 0x3a, 0x01, 0x0b, 0x99, 0xd6, 0x19, 0x18, 0xf4, 0x20,
|
||||
0xff, 0xff, 0x00, 0x11, 0x01, 0x11, 0x01, 0x01, 0x11, 0xf4, 0x20, 0x10, 0x84, 0x00, 0xff, 0xff,
|
||||
0xff, 0xff, 0xff, 0x19, 0x0a, 0x3f, 0xdd, 0x0e, 0xf5, 0x04, 0x08, 0x42, 0x11, 0x0f, 0xf1, 0x0f,
|
||||
0x0e, 0xf1, 0x11, 0x3e, 0xf1, 0xf2, 0x0e, 0x99, 0xd6, 0x11, 0x0d, 0x01, 0x0d, 0xf2, 0x11, 0x3f,
|
||||
0x0d, 0x01, 0xf3, 0x0d, 0x10, 0x84, 0x11, 0x0f, 0xf3, 0x0d, 0x0c, 0xf3, 0x11, 0x3e, 0xf3, 0xf4,
|
||||
0x0c, 0xff, 0xff, 0x11, 0x0d, 0x01, 0x0b, 0xf4, 0x11, 0x3a, 0x01, 0x0b, 0x99, 0xd6, 0x19, 0x18,
|
||||
0xf4, 0x60, 0x00, 0x00, 0x00, 0xd0, 0x10, 0xd0, 0x10, 0x10, 0x13, 0x0a, 0x03, 0x4b, 0x04, 0x09,
|
||||
0x00, 0x10, 0x30, 0x70, 0xf0, 0x70, 0x30, 0x10, 0x00, 0x00, 0x00, 0x00, 0x33, 0x00, 0x19, 0x0a,
|
||||
0x3f, 0x1d, 0xfe, 0xf5, 0x04, 0x10, 0x84, 0x11, 0x0f, 0xf1, 0x0f, 0x0e, 0xf1, 0x11, 0x0e, 0xf1,
|
||||
0xf2, 0x0e, 0x11, 0x0d, 0x01, 0x0d, 0xf2, 0x11, 0x3f, 0x0d, 0x01, 0xf3, 0x0d, 0x99, 0xd6, 0x11,
|
||||
0x0f, 0xf3, 0x0d, 0x0c, 0xf3, 0x11, 0x0e, 0xf3, 0xf4, 0x0c, 0x11, 0x0d, 0x01, 0x0b, 0xf4, 0x11,
|
||||
0x0a, 0x01, 0x0b, 0x19, 0x18, 0xf0, 0x60, 0x11, 0x01, 0x11, 0x01, 0x01, 0x01, 0x0a, 0x19, 0x0a,
|
||||
0x3f, 0x1d, 0xfe, 0xf5, 0x04, 0x08, 0x42, 0x11, 0x0f, 0xf1, 0x0f, 0x0e, 0xf1, 0x11, 0x3e, 0xf1,
|
||||
0xf2, 0x0e, 0x99, 0xd6, 0x11, 0x0d, 0x01, 0x0d, 0xf2, 0x11, 0x3f, 0x0d, 0x01, 0xf3, 0x0d, 0x10,
|
||||
0x84, 0x11, 0x0f, 0xf3, 0x0d, 0x0c, 0xf3, 0x11, 0x3e, 0xf3, 0xf4, 0x0c, 0xff, 0xff, 0x11, 0x0d,
|
||||
0x01, 0x0b, 0xf4, 0x11, 0x3a, 0x01, 0x0b, 0x99, 0xd6, 0x19, 0x18, 0xf4, 0x20, 0x10, 0x00, 0x00,
|
||||
0x0f, 0xff, 0x0f, 0xff, 0xff, 0x19, 0x0a, 0x3f, 0x1d, 0xfe, 0xf5, 0x04, 0x08, 0x42, 0x11, 0x0f,
|
||||
0xf1, 0x0f, 0x0e, 0xf1, 0x11, 0x3e, 0xf1, 0xf2, 0x0e, 0x99, 0xd6, 0x11, 0x0d, 0x01, 0x0d, 0xf2,
|
||||
0x11, 0x3f, 0x0d, 0x01, 0xf3, 0x0d, 0x10, 0x84, 0x11, 0x0f, 0xf3, 0x0d, 0x0c, 0xf3, 0x11, 0x3e,
|
||||
0xf3, 0xf4, 0x0c, 0xff, 0xff, 0x11, 0x0d, 0x01, 0x0b, 0xf4, 0x11, 0x3a, 0x01, 0x0b, 0x99, 0xd6,
|
||||
0x19, 0x18, 0xf4, 0x20, 0xff, 0xff, 0x00, 0x11, 0x01, 0x11, 0x01, 0x01, 0x11, 0xf4, 0x20, 0x10,
|
||||
0x84, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0x19, 0x0a, 0x3f, 0xce, 0x0e, 0x01, 0x01, 0xff, 0xff,
|
||||
0x1d, 0x18, 0xf4, 0x60, 0x0e, 0xe2, 0x00, 0x0b, 0x00, 0xee, 0x00, 0x00, 0x00, 0x00, 0xcd, 0x0e,
|
||||
0xce, 0x0f, 0x0f, 0x13, 0x0b, 0x04, 0x4b, 0x04, 0x09, 0x00, 0x80, 0xc0, 0xe0, 0xf0, 0xe0, 0xc0,
|
||||
0x80, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x19, 0x0a, 0x01, 0x0d, 0x19, 0x18, 0x50, 0x40, 0x0d,
|
||||
0x0d, 0x0f, 0x0c, 0x03, 0x4a, 0x07, 0x08, 0x00, 0x02, 0x06, 0x8e, 0xdc, 0xf8, 0x70, 0x20, 0x61,
|
||||
0x00, 0x19, 0x0a, 0x01, 0x0d, 0x19, 0x18, 0x50, 0x40, 0x0d, 0x0d, 0x0f, 0x0d, 0x04, 0x4a, 0x06,
|
||||
0x06, 0x78, 0xfc, 0xfc, 0xfc, 0xfc, 0x78, 0x00, 0x00, 0x68, 0x00, 0x19, 0x0a, 0x3d, 0x0d, 0x02,
|
||||
0x02, 0x99, 0xd6, 0x19, 0x18, 0xd0, 0x60, 0x0e, 0x10, 0x02, 0x02, 0x13, 0x0e, 0x02, 0x4a, 0x0b,
|
||||
0x05, 0x04, 0x00, 0x0e, 0x00, 0x1f, 0x00, 0x3f, 0x80, 0x7f, 0xc0, 0x00, 0x00, 0x35, 0x00, 0x19,
|
||||
0x0a, 0x01, 0x0f, 0x19, 0x18, 0x54, 0x40, 0x10, 0x00, 0x00, 0x0f, 0x0f, 0x01, 0x0e, 0x19, 0x0a,
|
||||
0x03, 0xca, 0x0f, 0x19, 0x18, 0xf4, 0x20, 0xff, 0xff, 0x00, 0xcb, 0x10, 0xcb, 0x10, 0x10, 0x11,
|
||||
0xf4, 0x20, 0x10, 0x84, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0x19, 0x0a, 0x01, 0x0f, 0x19, 0x18,
|
||||
0x54, 0x40, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x13, 0x0f, 0x02, 0x4a, 0x0b, 0x05, 0x7f, 0xc0, 0x3f,
|
||||
0x80, 0x1f, 0x00, 0x0e, 0x00, 0x04, 0x00, 0x00, 0x00, 0x36, 0x00, 0x19, 0x0a, 0x01, 0x0f, 0x19,
|
||||
0x18, 0x54, 0x40, 0x10, 0x00, 0x00, 0x0f, 0x0f, 0x01, 0x0f, 0x19, 0x0a, 0x01, 0x0f, 0x19, 0x18,
|
||||
0xf4, 0x20, 0xff, 0xff, 0x00, 0x10, 0x01, 0x10, 0x01, 0x01, 0x11, 0xf4, 0x20, 0x10, 0x84, 0x00,
|
||||
0xff, 0xff, 0xff, 0xff, 0xff, 0x19, 0x0a, 0x3f, 0xd3, 0x0f, 0xfe, 0xfe, 0xff, 0xff, 0x19, 0x18,
|
||||
0xf4, 0x60, 0x00, 0x00, 0x00, 0xd3, 0x0f, 0xd1, 0x0d, 0x0d, 0x1b, 0x10, 0x02, 0x4c, 0x0a, 0x0a,
|
||||
0x1e, 0x00, 0x7f, 0x80, 0x7f, 0x80, 0xff, 0xc0, 0xff, 0xc0, 0xff, 0xc0, 0xff, 0xc0, 0x7f, 0x80,
|
||||
0x7f, 0x80, 0x1e, 0x00, 0x6e, 0x00, 0x11, 0x00, 0x40, 0x17, 0x11, 0x03, 0x4a, 0x09, 0x08, 0x01,
|
||||
0x00, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x01, 0x00, 0xc3, 0x00, 0x3c, 0x00, 0x6d,
|
||||
0x00, 0x11, 0x00, 0x40, 0x17, 0x12, 0x02, 0x4c, 0x09, 0x08, 0x1e, 0x00, 0x61, 0x80, 0x40, 0x00,
|
||||
0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x40, 0x00, 0x6c, 0x00, 0x11, 0x00, 0x40, 0x1b,
|
||||
0x13, 0x03, 0x4b, 0x0a, 0x0a, 0x00, 0x80, 0x00, 0x80, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00,
|
||||
0x40, 0x00, 0x80, 0x00, 0x80, 0xc3, 0x00, 0x3c, 0x00, 0x6b, 0x00, 0x11, 0x00, 0x40, 0x1b, 0x14,
|
||||
0x01, 0x4d, 0x0a, 0x0a, 0x0f, 0x00, 0x30, 0xc0, 0x40, 0x00, 0x40, 0x00, 0x80, 0x00, 0x80, 0x00,
|
||||
0x80, 0x00, 0x80, 0x00, 0x40, 0x00, 0x40, 0x00, 0x6a, 0x00, 0x11, 0x54, 0x40, 0xff, 0xff, 0x00,
|
||||
0x0d, 0x0d, 0x1b, 0x15, 0x02, 0x4b, 0x09, 0x09, 0xff, 0x80, 0xff, 0x80, 0xff, 0x80, 0xff, 0x80,
|
||||
0xff, 0x80, 0xff, 0x80, 0xff, 0x80, 0xff, 0x80, 0xff, 0x80, 0x00, 0x00, 0x67, 0x00, 0x11, 0x04,
|
||||
0x40, 0x99, 0xd6, 0x00, 0x1f, 0x16, 0x01, 0x4c, 0x0b, 0x0b, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20,
|
||||
0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0xff, 0xe0,
|
||||
0x00, 0x00, 0x66, 0x00, 0x11, 0x04, 0x40, 0x08, 0x42, 0x00, 0x1b, 0x17, 0x01, 0x4c, 0x0a, 0x0a,
|
||||
0xff, 0xc0, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00,
|
||||
0x80, 0x00, 0x80, 0x00, 0x65, 0x00, 0x11, 0x04, 0x40, 0xff, 0xff, 0x00, 0x23, 0x18, 0x00, 0x4d,
|
||||
0x0d, 0x0d, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08,
|
||||
0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0xff, 0xf8, 0x00, 0x00, 0x64, 0x00,
|
||||
0x11, 0x04, 0x40, 0x10, 0x84, 0x00, 0x1f, 0x19, 0x00, 0x4d, 0x0c, 0x0c, 0xff, 0xf0, 0x80, 0x00,
|
||||
0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00,
|
||||
0x80, 0x00, 0x80, 0x00, 0x63, 0x00, 0x11, 0x54, 0x40, 0xff, 0xff, 0x00, 0x0d, 0x0d, 0x01, 0x15,
|
||||
0x11, 0x04, 0x40, 0x99, 0xd6, 0x00, 0x01, 0x16, 0x11, 0x04, 0x40, 0x08, 0x42, 0x00, 0x01, 0x17,
|
||||
0x11, 0x04, 0x40, 0xff, 0xff, 0x00, 0x01, 0x18, 0x11, 0x04, 0x40, 0x10, 0x84, 0x00, 0x01, 0x19,
|
||||
0x11, 0x04, 0x40, 0x00, 0x00, 0x00, 0x0f, 0x1a, 0x03, 0x4b, 0x07, 0x08, 0x00, 0x02, 0x06, 0x8e,
|
||||
0xdc, 0xf8, 0x70, 0x20, 0x62, 0x00, 0x11, 0x54, 0x40, 0x99, 0xd6, 0x00, 0x0d, 0x0d, 0x01, 0x15,
|
||||
0x11, 0x00, 0x40, 0x01, 0x16, 0x11, 0x04, 0x40, 0x08, 0x42, 0x00, 0x01, 0x17, 0x11, 0x04, 0x40,
|
||||
0xff, 0xff, 0x00, 0x01, 0x18, 0x11, 0x04, 0x40, 0x10, 0x84, 0x00, 0x01, 0x19, 0x11, 0x54, 0x40,
|
||||
0x99, 0xd6, 0x00, 0x0d, 0x0d, 0x01, 0x15, 0x11, 0x00, 0x40, 0x01, 0x16, 0x11, 0x04, 0x40, 0x08,
|
||||
0x42, 0x00, 0x01, 0x17, 0x11, 0x04, 0x40, 0xff, 0xff, 0x00, 0x01, 0x18, 0x11, 0x04, 0x40, 0x10,
|
||||
0x84, 0x00, 0x01, 0x19, 0x11, 0x04, 0x40, 0x00, 0x00, 0x00, 0x01, 0x1a, 0x11, 0xf4, 0x60, 0x99,
|
||||
0xd6, 0x00, 0xcc, 0x0d, 0xcc, 0x0d, 0x0d, 0x01, 0x15, 0x11, 0x00, 0x40, 0x01, 0x16, 0x11, 0x04,
|
||||
0x40, 0x08, 0x42, 0x00, 0x01, 0x17, 0x11, 0x04, 0x40, 0xff, 0xff, 0x00, 0x01, 0x18, 0x11, 0x04,
|
||||
0x40, 0x10, 0x84, 0x00, 0x01, 0x19, 0x11, 0x00, 0x40, 0x01, 0x1a, 0x19, 0x0a, 0x33, 0x0d, 0x0d,
|
||||
0x00, 0x00, 0x19, 0x18, 0x54, 0x40, 0xff, 0xff, 0x00, 0x0d, 0x0d, 0x01, 0x10, 0x11, 0x04, 0x40,
|
||||
0x99, 0xd6, 0x00, 0x01, 0x11, 0x11, 0x04, 0x40, 0x08, 0x42, 0x00, 0x01, 0x12, 0x11, 0x04, 0x40,
|
||||
0xff, 0xff, 0x00, 0x01, 0x13, 0x11, 0x04, 0x40, 0x10, 0x84, 0x00, 0x01, 0x14, 0x19, 0x0a, 0x01,
|
||||
0x0d, 0x19, 0x18, 0x54, 0x40, 0xff, 0xff, 0x00, 0x0d, 0x0d, 0x01, 0x10, 0x11, 0x04, 0x40, 0x99,
|
||||
0xd6, 0x00, 0x01, 0x11, 0x11, 0x04, 0x40, 0x08, 0x42, 0x00, 0x01, 0x12, 0x11, 0x04, 0x40, 0xff,
|
||||
0xff, 0x00, 0x01, 0x13, 0x11, 0x04, 0x40, 0x10, 0x84, 0x00, 0x01, 0x14, 0x11, 0x04, 0x40, 0x00,
|
||||
0x00, 0x00, 0x0b, 0x1b, 0x05, 0x49, 0x04, 0x04, 0x60, 0xf0, 0xf0, 0x60, 0x69, 0x00, 0x19, 0x0a,
|
||||
0x01, 0x0d, 0x19, 0x18, 0x54, 0x40, 0x99, 0xd6, 0x00, 0x0d, 0x0d, 0x01, 0x10, 0x11, 0x00, 0x40,
|
||||
0x01, 0x11, 0x11, 0x04, 0x40, 0x08, 0x42, 0x00, 0x01, 0x12, 0x11, 0x04, 0x40, 0xff, 0xff, 0x00,
|
||||
0x01, 0x13, 0x11, 0x04, 0x40, 0x10, 0x84, 0x00, 0x01, 0x14, 0x19, 0x0a, 0x01, 0x0d, 0x19, 0x18,
|
||||
0x54, 0x40, 0x99, 0xd6, 0x00, 0x0d, 0x0d, 0x01, 0x10, 0x11, 0x00, 0x40, 0x01, 0x11, 0x11, 0x04,
|
||||
0x40, 0x08, 0x42, 0x00, 0x01, 0x12, 0x11, 0x04, 0x40, 0xff, 0xff, 0x00, 0x01, 0x13, 0x11, 0x04,
|
||||
0x40, 0x10, 0x84, 0x00, 0x01, 0x14, 0x11, 0x04, 0x40, 0x00, 0x00, 0x00, 0x01, 0x1b, 0x19, 0x0a,
|
||||
0x03, 0xcc, 0x0d, 0x19, 0x18, 0xf4, 0x60, 0x99, 0xd6, 0x00, 0xcc, 0x0d, 0xcc, 0x0d, 0x0d, 0x01,
|
||||
0x10, 0x11, 0x00, 0x40, 0x01, 0x11, 0x11, 0x04, 0x40, 0x08, 0x42, 0x00, 0x01, 0x12, 0x11, 0x04,
|
||||
0x40, 0xff, 0xff, 0x00, 0x01, 0x13, 0x11, 0x04, 0x40, 0x10, 0x84, 0x00, 0x01, 0x14, 0x11, 0x00,
|
||||
0x40, 0x01, 0x1b, 0x03, 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x01, 0x08, 0x08, 0x81, 0x08, 0xaa,
|
||||
0x55, 0xaa, 0x55, 0xaa, 0x55, 0xaa, 0x55, 0x09, 0x01, 0x7f, 0x02, 0x0d, 0x00, 0x1a, 0x01, 0x0d,
|
||||
0x00, 0x0d, 0x00, 0xf0, 0xff, 0xff, 0x00, 0x99, 0xd6, 0x00, 0x81, 0x19, 0x18, 0x54, 0x40, 0x99,
|
||||
0xd6, 0x00, 0x0d, 0x0d, 0x01, 0x16, 0x11, 0x04, 0x40, 0x08, 0x42, 0x00, 0x01, 0x17, 0x11, 0x04,
|
||||
0x40, 0xff, 0xff, 0x00, 0x01, 0x18, 0x11, 0x04, 0x40, 0x10, 0x84, 0x00, 0x01, 0x19, 0x11, 0x00,
|
||||
0x40, 0x01, 0x1a, 0x11, 0x54, 0x40, 0x99, 0xd6, 0x00, 0x0d, 0x0d, 0x01, 0x15, 0x11, 0x00, 0x40,
|
||||
0x01, 0x16, 0x11, 0x04, 0x40, 0x08, 0x42, 0x00, 0x01, 0x17, 0x11, 0x04, 0x40, 0xff, 0xff, 0x00,
|
||||
0x01, 0x18, 0x11, 0x04, 0x40, 0x10, 0x84, 0x00, 0x01, 0x19, 0x11, 0x00, 0x40, 0x01, 0x1a, 0x11,
|
||||
0x54, 0x40, 0x99, 0xd6, 0x00, 0x0d, 0x0d, 0x01, 0x15, 0x11, 0x00, 0x40, 0x01, 0x16, 0x11, 0x04,
|
||||
0x40, 0x08, 0x42, 0x00, 0x01, 0x17, 0x11, 0x04, 0x40, 0xff, 0xff, 0x00, 0x01, 0x18, 0x11, 0x04,
|
||||
0x40, 0x10, 0x84, 0x00, 0x01, 0x19, 0x11, 0x00, 0x40, 0x01, 0x1a, 0x19, 0x0a, 0x31, 0x34, 0xff,
|
||||
0xff, 0x19, 0x18, 0x54, 0x40, 0x00, 0x00, 0x00, 0x0c, 0x0c, 0x1b, 0x1c, 0x02, 0x4b, 0x09, 0x09,
|
||||
0xc1, 0x80, 0xe3, 0x80, 0x77, 0x00, 0x3e, 0x00, 0x1c, 0x00, 0x3e, 0x00, 0x77, 0x00, 0xe3, 0x80,
|
||||
0xc1, 0x80, 0x00, 0x00, 0x72, 0x00, 0x19, 0x0a, 0x03, 0xcc, 0x0d, 0x1d, 0x18, 0xf0, 0x60, 0xa0,
|
||||
0x45, 0x45, 0xcc, 0x0d, 0xcc, 0x0d, 0x0d, 0x1b, 0x1d, 0x01, 0x4b, 0x0a, 0x09, 0x3f, 0xc0, 0x3f,
|
||||
0xc0, 0x20, 0x40, 0xff, 0x40, 0xff, 0x40, 0x81, 0xc0, 0x81, 0x00, 0x81, 0x00, 0xff, 0x00, 0x00,
|
||||
0x00, 0x32, 0x00, 0x19, 0x0a, 0x01, 0x0d, 0x19, 0x18, 0x50, 0x40, 0x0d, 0x0d, 0x1b, 0x1e, 0x01,
|
||||
0x4c, 0x0a, 0x0a, 0xff, 0xc0, 0xff, 0xc0, 0x80, 0x40, 0x80, 0x40, 0x80, 0x40, 0x80, 0x40, 0x80,
|
||||
0x40, 0x80, 0x40, 0x80, 0x40, 0xff, 0xc0, 0x31, 0x00, 0x19, 0x0a, 0x01, 0x0d, 0x19, 0x18, 0x50,
|
||||
0x40, 0x0d, 0x0d, 0x0b, 0x1f, 0x02, 0x44, 0x07, 0x02, 0xfe, 0xfe, 0x00, 0x00, 0x30, 0x00, 0x19,
|
||||
0x0a, 0x3d, 0x0d, 0x03, 0x03, 0x99, 0xd6, 0x19, 0x18, 0xd4, 0x60, 0xff, 0xff, 0x00, 0x0e, 0x11,
|
||||
0x03, 0x03, 0x23, 0x20, 0x00, 0x4d, 0x0d, 0x0d, 0x00, 0x00, 0x80, 0x00, 0x40, 0x00, 0x20, 0x00,
|
||||
0x10, 0x00, 0x88, 0x00, 0x44, 0x00, 0x22, 0x00, 0x11, 0x00, 0x88, 0x80, 0x44, 0x40, 0x22, 0x20,
|
||||
0x11, 0x10, 0x00, 0x00, 0x78, 0x00, 0x11, 0x04, 0x40, 0x10, 0x84, 0x00, 0x1f, 0x21, 0x00, 0x4c,
|
||||
0x0c, 0x0c, 0x00, 0x00, 0x80, 0x00, 0xc0, 0x00, 0x60, 0x00, 0x30, 0x00, 0x98, 0x00, 0xcc, 0x00,
|
||||
0x66, 0x00, 0x33, 0x00, 0x99, 0x80, 0xcc, 0xc0, 0x66, 0x60, 0x79, 0x00, 0x19, 0x0a, 0x3d, 0x10,
|
||||
0xfd, 0xfd, 0xff, 0xff, 0x19, 0x18, 0xd4, 0x60, 0x00, 0x00, 0x00, 0x0f, 0x0c, 0xfd, 0xfd, 0x13,
|
||||
0x22, 0x05, 0x4b, 0x04, 0x09, 0x00, 0x10, 0x30, 0x70, 0xf0, 0x70, 0x30, 0x10, 0x00, 0x00, 0x00,
|
||||
0x00, 0x77, 0x00, 0x02, 0xff, 0xff, 0x0d, 0x0a, 0x3f, 0x0e, 0x00, 0x00, 0xff, 0x03, 0xff, 0x02,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x03, 0x00, 0x00, 0x06, 0x02, 0x00, 0x48, 0x00, 0x37,
|
||||
0x01, 0x02, 0x02, 0x00, 0x09, 0x00, 0x0c, 0x48, 0x00, 0x37, 0x01, 0x03, 0xcf, 0x04, 0xa2, 0x0c,
|
||||
0x05, 0x40, 0x44, 0xd1, 0xff, 0xff, 0x80, 0x00, 0xff, 0xff, 0x99, 0xd6, 0x99, 0xd6, 0x10, 0x00,
|
||||
0x99, 0xd6, 0x99, 0xd6, 0x99, 0xd6, 0x99, 0xd6, 0x99, 0xd6, 0x99, 0xd6, 0x99, 0xd6, 0x10, 0x00,
|
||||
0x99, 0xd6, 0x99, 0xd6, 0x10, 0x84, 0x08, 0x42, 0xff, 0xff, 0x99, 0xd6, 0x99, 0xd6, 0x10, 0x84,
|
||||
0xff, 0xff, 0x99, 0xd6, 0x99, 0xd6, 0x99, 0xd6, 0x99, 0xd6, 0x99, 0xd6, 0x99, 0xd6, 0x10, 0x84,
|
||||
0xff, 0xff, 0x99, 0xd6, 0x10, 0x84, 0x08, 0x42, 0x1c, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x75, 0xc6, 0x66, 0x29, 0x00, 0x09, 0x68, 0x10, 0x00, 0x08, 0x68, 0x10, 0x84,
|
||||
0x00, 0x20, 0x00, 0x07, 0x6b, 0x99, 0xd6, 0x05, 0x6b, 0x99, 0xd6, 0x00, 0x03, 0x6e, 0xff, 0xff,
|
||||
0x02, 0x6e, 0xff, 0xff, 0x00, 0x10, 0xc0, 0x00, 0xf7, 0xbd, 0x01, 0xc0, 0x00, 0x08, 0x42, 0xc0,
|
||||
0x00, 0xff, 0xff, 0x81, 0x08, 0x42, 0xce, 0x66, 0x29, 0x01, 0xfd, 0xce, 0x18, 0xc6, 0x01, 0xfd,
|
||||
0x2e, 0x01, 0x81, 0x08, 0x42, 0xce, 0x66, 0x29, 0x02, 0x81, 0x10, 0x84, 0x06, 0x82, 0x00, 0x00,
|
||||
0x00, 0x00, 0x07, 0xcd, 0x89, 0x52, 0x03, 0x2d, 0x03, 0x83, 0x10, 0x84, 0x99, 0xd6, 0x99, 0xd6,
|
||||
0xc9, 0x99, 0xd6, 0x1a, 0x82, 0x10, 0x00, 0x10, 0x00, 0x0a, 0x29, 0x09, 0x27, 0x0c, 0x67, 0x99,
|
||||
0xd6, 0x15, 0x27, 0x1d, 0x82, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x67, 0x99, 0xd6, 0x00, 0x19, 0xd0,
|
||||
0x30, 0x89, 0xd6, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd8, 0x99, 0xd6, 0x05, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0xc0, 0x01, 0x83, 0x99, 0xd6, 0x00, 0x00, 0x00, 0x00, 0x0b, 0xd8, 0x89,
|
||||
0xd6, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x01, 0x83, 0x99, 0xd6, 0x10, 0x00, 0x10,
|
||||
0x00, 0x1a, 0x68, 0x00, 0x00, 0x09, 0x86, 0x99, 0xd6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x99, 0xd6, 0x18, 0x68, 0x00, 0x00, 0x1b, 0x68, 0x99, 0xd6, 0x06, 0x86, 0x99, 0xd6, 0x10,
|
||||
0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x99, 0xd6, 0x19, 0x6b, 0x99, 0xd6, 0x03, 0xcc, 0x89,
|
||||
0x52, 0x08, 0x68, 0x99, 0xd6, 0x05, 0x6b, 0x99, 0xd6, 0x04, 0x2c, 0x03, 0x6e, 0x08, 0x42, 0x02,
|
||||
0x6e, 0xff, 0xff, 0x02, 0x6e, 0xff, 0xff, 0x02, 0x6e, 0x08, 0x42, 0x10, 0x81, 0x08, 0x42, 0x70,
|
||||
0xff, 0xff, 0x60, 0x00, 0x08, 0x42, 0xfd, 0xce, 0x18, 0xc6, 0x01, 0x81, 0x08, 0x42, 0xce, 0x66,
|
||||
0x29, 0x01, 0xfd, 0xce, 0x18, 0xc6, 0x01, 0xfd, 0x2e, 0x02, 0xcd, 0x89, 0x52, 0x03, 0x89, 0x10,
|
||||
0x84, 0x99, 0xd6, 0x99, 0xd6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x07, 0x2d, 0x03, 0x2d, 0x05, 0xc6, 0x99, 0xd6, 0x0c, 0x84, 0x99, 0xd6, 0x99, 0xd6, 0x99,
|
||||
0xd6, 0x99, 0xd6, 0x0a, 0xc6, 0x89, 0xd6, 0x0e, 0x82, 0x00, 0x00, 0x00, 0x00, 0x0b, 0x84, 0x99,
|
||||
0xd6, 0x99, 0xd6, 0x99, 0xd6, 0x99, 0xd6, 0x1c, 0x40, 0x35, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0xd0, 0x4e, 0x99, 0xd6, 0x03, 0x00, 0x00, 0x60, 0x00, 0x80, 0x01, 0x78, 0x01, 0x00, 0x82,
|
||||
0x10, 0x00, 0x10, 0x00, 0x0c, 0x40, 0x2c, 0x03, 0xe0, 0x05, 0x00, 0x00, 0x00, 0xd6, 0x89, 0xd6,
|
||||
0x2f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd0, 0x4e, 0x99, 0xd6, 0x3b, 0x00, 0x00, 0x00, 0x28, 0x80,
|
||||
0x1d, 0x00, 0x78, 0x00, 0x86, 0x99, 0xd6, 0x99, 0xd6, 0x10, 0x00, 0x99, 0xd6, 0x99, 0xd6, 0x99,
|
||||
0xd6, 0x0c, 0x85, 0x00, 0x00, 0x00, 0x00, 0x99, 0xd6, 0x99, 0xd6, 0x00, 0x00, 0x40, 0x2b, 0x01,
|
||||
0xf0, 0x00, 0x00, 0x00, 0x00, 0xd6, 0x89, 0xd6, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x69, 0x99,
|
||||
0xd6, 0x16, 0x86, 0x99, 0xd6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x99, 0xd6, 0x0a,
|
||||
0x69, 0x99, 0xd6, 0x04, 0xcc, 0x89, 0x52, 0x07, 0x69, 0x99, 0xd6, 0x08, 0x68, 0x99, 0xd6, 0x03,
|
||||
0x6e, 0xff, 0xff, 0x02, 0x6e, 0x08, 0x42, 0x02, 0x6e, 0xff, 0xff, 0x02, 0x6e, 0xff, 0xff, 0x01,
|
||||
0x70, 0x08, 0x42, 0x70, 0xff, 0xff, 0x60, 0x00, 0x08, 0x42, 0xfd, 0xce, 0x18, 0xc6, 0x01, 0x81,
|
||||
0x08, 0x42, 0xce, 0x66, 0x29, 0x01, 0xfd, 0xce, 0x18, 0xc6, 0x01, 0xfd, 0x2e, 0x02, 0xcd, 0x89,
|
||||
0x52, 0x03, 0x8a, 0x10, 0x84, 0x99, 0xd6, 0x99, 0xd6, 0x99, 0xd6, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x2d, 0x03, 0x8d, 0x99, 0xd6, 0x99, 0xd6, 0x99,
|
||||
0xd6, 0x99, 0xd6, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x99,
|
||||
0xd6, 0x99, 0xd6, 0x99, 0xd6, 0x06, 0xc6, 0x99, 0xd6, 0x1a, 0xc6, 0x89, 0xd6, 0x0a, 0x66, 0x10,
|
||||
0x84, 0x1b, 0x6a, 0x99, 0xd6, 0x1b, 0x81, 0x99, 0xd6, 0x09, 0x6a, 0x99, 0xd6, 0x16, 0x6a, 0x99,
|
||||
0xd6, 0x06, 0x6a, 0x99, 0xd6, 0xf0, 0x94, 0x01, 0xcc, 0x89, 0x52, 0x00, 0x03, 0x6e, 0xff, 0xff,
|
||||
0x02, 0x6e, 0x08, 0x42, 0x02, 0x6e, 0xff, 0xff, 0x02, 0x6e, 0xff, 0xff, 0x01, 0x70, 0x08, 0x42,
|
||||
0x70, 0xff, 0xff, 0x60, 0x00, 0x08, 0x42, 0xfd, 0xce, 0x18, 0xc6, 0x01, 0x81, 0x08, 0x42, 0xce,
|
||||
0x66, 0x29, 0x01, 0xfd, 0xce, 0x18, 0xc6, 0x01, 0xfd, 0x2e, 0x02, 0xcd, 0x89, 0x52, 0x03, 0x10,
|
||||
0x2d, 0x03, 0x2d, 0x17, 0x88, 0x00, 0x00, 0x00, 0x00, 0x99, 0xd6, 0x99, 0xd6, 0x99, 0xd6, 0x99,
|
||||
0xd6, 0x00, 0x00, 0x00, 0x00, 0x18, 0x88, 0xff, 0xff, 0xff, 0xff, 0x99, 0xd6, 0x99, 0xd6, 0x99,
|
||||
0xd6, 0x99, 0xd6, 0xff, 0xff, 0xff, 0xff, 0x07, 0x88, 0x00, 0x00, 0x00, 0x00, 0x99, 0xd6, 0x99,
|
||||
0xd6, 0x99, 0xd6, 0x99, 0xd6, 0x00, 0x00, 0x00, 0x00, 0x09, 0x88, 0x99, 0xd6, 0x00, 0x00, 0x00,
|
||||
0x00, 0x99, 0xd6, 0x99, 0xd6, 0x00, 0x00, 0x00, 0x00, 0x99, 0xd6, 0x07, 0x88, 0x10, 0x00, 0x10,
|
||||
0x00, 0x99, 0xd6, 0x99, 0xd6, 0x99, 0xd6, 0x99, 0xd6, 0x10, 0x00, 0x10, 0x00, 0x08, 0x89, 0x10,
|
||||
0x84, 0x10, 0x84, 0xff, 0xff, 0xff, 0xff, 0x99, 0xd6, 0x99, 0xd6, 0x10, 0x84, 0x10, 0x84, 0x99,
|
||||
0xd6, 0x07, 0x88, 0x99, 0xd6, 0x00, 0x00, 0x00, 0x00, 0x99, 0xd6, 0x99, 0xd6, 0x00, 0x00, 0x00,
|
||||
0x00, 0x99, 0xd6, 0x0a, 0x86, 0x99, 0xd6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x99,
|
||||
0xd6, 0x08, 0x88, 0x99, 0xd6, 0x10, 0x00, 0x10, 0x00, 0x99, 0xd6, 0x99, 0xd6, 0x10, 0x00, 0x10,
|
||||
0x00, 0x99, 0xd6, 0x08, 0x88, 0x99, 0xd6, 0x10, 0x84, 0x10, 0x84, 0xff, 0xff, 0xff, 0xff, 0x10,
|
||||
0x84, 0x10, 0x84, 0x99, 0xd6, 0x09, 0x86, 0x99, 0xd6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x99, 0xd6, 0x0c, 0x84, 0x99, 0xd6, 0x00, 0x00, 0x00, 0x00, 0x99, 0xd6, 0x0a, 0x86, 0x99,
|
||||
0xd6, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x99, 0xd6, 0x0a, 0x86, 0x99, 0xd6, 0x10,
|
||||
0x84, 0x10, 0x84, 0x10, 0x84, 0x10, 0x84, 0x99, 0xd6, 0x0b, 0x84, 0x99, 0xd6, 0x00, 0x00, 0x00,
|
||||
0x00, 0x99, 0xd6, 0x0d, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, 0x84, 0x99,
|
||||
0xd6, 0x10, 0x00, 0x10, 0x00, 0x99, 0xd6, 0x0c, 0x85, 0x99, 0xd6, 0x10, 0x84, 0x10, 0x84, 0xff,
|
||||
0xff, 0xff, 0xff, 0x0b, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x86, 0x00,
|
||||
0x00, 0x00, 0x00, 0x99, 0xd6, 0x99, 0xd6, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x84, 0x10, 0x00, 0x10,
|
||||
0x00, 0x10, 0x00, 0x10, 0x00, 0x0c, 0x86, 0x10, 0x84, 0x10, 0x84, 0x10, 0x84, 0x10, 0x84, 0xff,
|
||||
0xff, 0xff, 0xff, 0x09, 0x86, 0x00, 0x00, 0x00, 0x00, 0x99, 0xd6, 0x99, 0xd6, 0x00, 0x00, 0x00,
|
||||
0x00, 0x0a, 0x88, 0x00, 0x00, 0x00, 0x00, 0x99, 0xd6, 0x99, 0xd6, 0x99, 0xd6, 0x99, 0xd6, 0x00,
|
||||
0x00, 0x00, 0x00, 0x08, 0x86, 0x10, 0x00, 0x10, 0x00, 0x99, 0xd6, 0x99, 0xd6, 0x10, 0x00, 0x10,
|
||||
0x00, 0x0a, 0x88, 0x10, 0x84, 0x10, 0x84, 0x99, 0xd6, 0x99, 0xd6, 0x10, 0x84, 0x10, 0x84, 0xff,
|
||||
0xff, 0xff, 0xff, 0x07, 0x88, 0x00, 0x00, 0x00, 0x00, 0x99, 0xd6, 0x99, 0xd6, 0x99, 0xd6, 0x99,
|
||||
0xd6, 0x00, 0x00, 0x00, 0x00, 0x09, 0x6a, 0x99, 0xd6, 0x05, 0x88, 0x10, 0x00, 0x10, 0x00, 0x99,
|
||||
0xd6, 0x99, 0xd6, 0x99, 0xd6, 0x99, 0xd6, 0x10, 0x00, 0x10, 0x00, 0x08, 0x89, 0x10, 0x84, 0x10,
|
||||
0x84, 0x99, 0xd6, 0x99, 0xd6, 0x99, 0xd6, 0x99, 0xd6, 0x10, 0x84, 0x10, 0x84, 0x99, 0xd6, 0x07,
|
||||
0x6a, 0x99, 0xd6, 0x16, 0x6a, 0x99, 0xd6, 0x06, 0x6a, 0x99, 0xd6, 0x14, 0x2c, 0x00, 0x03, 0x6e,
|
||||
0xff, 0xff, 0x02, 0x6e, 0x08, 0x42, 0x02, 0x6e, 0xff, 0xff, 0x02, 0xcb, 0x66, 0x29, 0x84, 0xff,
|
||||
0xff, 0xff, 0xff, 0xff, 0xff, 0x08, 0x42, 0x09, 0x0d, 0xdf, 0x01, 0x02, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x40, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x7f, 0x03, 0x15, 0x00, 0xa2, 0x0c,
|
||||
0x05, 0x40, 0x40, 0x17, 0xff, 0xff, 0x00, 0x1c, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0xf0, 0xbc, 0x0f, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x51, 0x0a, 0x40,
|
||||
0xc8, 0x03, 0xf4, 0x00, 0xa2, 0x0c, 0x05, 0x40, 0x40, 0xf6, 0xff, 0xff, 0xc0, 0x2c, 0x2d, 0x09,
|
||||
0x84, 0x2d, 0x09, 0x2d, 0x09, 0x2d, 0x09, 0x2d, 0x09, 0x00, 0x22, 0xc0, 0x10, 0x25, 0x4b, 0x02,
|
||||
0x30, 0x02, 0x2a, 0x02, 0xfd, 0xce, 0x18, 0xc6, 0x01, 0xfd, 0x2e, 0x03, 0xfd, 0x2e, 0x03, 0xfd,
|
||||
0x29, 0x03, 0xcd, 0x89, 0x52, 0x03, 0x2d, 0x05, 0x2d, 0x05, 0x29, 0x06, 0xc6, 0x99, 0xd6, 0x09,
|
||||
0x29, 0x1f, 0x43, 0x03, 0x00, 0x00, 0x01, 0x27, 0x0b, 0x44, 0xc3, 0x00, 0x00, 0xc0, 0x68, 0x99,
|
||||
0xd6, 0x18, 0x48, 0xa5, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0xc2, 0x5a, 0x00, 0x60,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0x00, 0xa0,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x81, 0x99, 0xd6, 0x48, 0x05, 0x80, 0x05, 0x00, 0x00, 0xfc,
|
||||
0x01, 0x50, 0x40, 0x69, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x0c, 0x80, 0x06, 0x00,
|
||||
0x00, 0x02, 0x6a, 0x99, 0xd6, 0x1c, 0x86, 0x99, 0xd6, 0x99, 0xd6, 0x99, 0xd6, 0x99, 0xd6, 0x2d,
|
||||
0x09, 0x2d, 0x09, 0x6f, 0xff, 0xff, 0x02, 0x6e, 0xff, 0xff, 0x04, 0x6e, 0xff, 0xff, 0x04, 0xc9,
|
||||
0x66, 0x29, 0x02, 0x60, 0x5e, 0x2d, 0x09, 0xc0, 0x30, 0x2d, 0x09, 0xf0, 0xc0, 0x09, 0xc0, 0x10,
|
||||
0x08, 0x42, 0x00, 0x00, 0xfd, 0xce, 0x18, 0xc6, 0x01, 0xfd, 0x2e, 0x00, 0x02, 0xcd, 0x89, 0x52,
|
||||
0x03, 0x83, 0x99, 0xd6, 0x99, 0xd6, 0x99, 0xd6, 0xc9, 0xef, 0x7b, 0x81, 0x99, 0xd6, 0x00, 0x05,
|
||||
0xc9, 0x89, 0xd6, 0x07, 0x69, 0x10, 0x84, 0x00, 0x08, 0x27, 0x09, 0x82, 0xff, 0xff, 0x99, 0xd6,
|
||||
0xd0, 0x69, 0x89, 0x52, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x51, 0x0e, 0xc0, 0x40, 0x38, 0x03, 0xa8, 0x00, 0xa2, 0x0c, 0x05, 0x40, 0x40, 0xaa,
|
||||
0xff, 0xff, 0xc8, 0x2d, 0x09, 0x00, 0x14, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x20, 0xc6, 0x25, 0x4b, 0x00, 0x1a, 0xd8, 0x18, 0xc6, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0xf7, 0xc0, 0x01, 0x89, 0x52, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf7,
|
||||
0x00, 0x01, 0x99, 0xd6, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x84, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xd0, 0x3b, 0xef,
|
||||
0x7b, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x68, 0x2d, 0x09, 0x00, 0x58, 0xf3, 0x7c,
|
||||
0x0b, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x51, 0x0a, 0x40, 0xc8,
|
||||
};
|
||||
|
||||
int init_mppc_enc_suite(void)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
int clean_mppc_enc_suite(void)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
int add_mppc_enc_suite(void)
|
||||
{
|
||||
add_test_suite(mppc_enc);
|
||||
add_test_function(mppc_enc);
|
||||
return 0;
|
||||
}
|
||||
|
||||
int get_random(int in_bytes)
|
||||
{
|
||||
int rv;
|
||||
|
||||
rv = rand() % in_bytes;
|
||||
if (rv < 128)
|
||||
rv = 128;
|
||||
return rv;
|
||||
}
|
||||
|
||||
#if DEBUG_MPPC_ENC_TEST
|
||||
#define DLOG(_args) printf _args
|
||||
#else
|
||||
#define DLOG(_args) do { } while (0)
|
||||
#endif
|
||||
|
||||
void test_mppc_enc(void)
|
||||
{
|
||||
int data_len;
|
||||
int fd;
|
||||
int bytes_read;
|
||||
int total = 0;
|
||||
int clen = 0;
|
||||
int block_num = 0;
|
||||
|
||||
/* needed by encoder */
|
||||
struct rdp_mppc_enc* enc;
|
||||
char buf[BUF_SIZE];
|
||||
|
||||
/* needed by decoder */
|
||||
struct rdp_mppc_dec* rmppc;
|
||||
UINT32 roff;
|
||||
UINT32 rlen;
|
||||
|
||||
/* required for timing the test */
|
||||
struct timeval start_time;
|
||||
struct timeval end_time;
|
||||
long int dur;
|
||||
|
||||
/* setup decoder */
|
||||
rmppc = mppc_dec_new();
|
||||
|
||||
/* setup encoder for RDP 5.0 */
|
||||
CU_ASSERT((enc = mppc_enc_new(PROTO_RDP_50)) != NULL);
|
||||
|
||||
srand(time(0));
|
||||
|
||||
/* open image file with pixel data */
|
||||
fd = open("nature.bmp", O_RDONLY);
|
||||
if (fd > 0)
|
||||
{
|
||||
printf("\ntest_mppc_enc: compressing data from file nature.bmp\n");
|
||||
|
||||
/* save starting time */
|
||||
gettimeofday(&start_time, NULL);
|
||||
|
||||
/* compress block, decompress it then compare with original data */
|
||||
while ((bytes_read = read(fd, buf, get_random(BUF_SIZE))) > 0)
|
||||
{
|
||||
block_num++;
|
||||
total += bytes_read;
|
||||
DLOG(("block_num=%d\n", block_num));
|
||||
CU_ASSERT(compress_rdp(enc, (BYTE*) buf, bytes_read) != FALSE);
|
||||
if (enc->flags & PACKET_COMPRESSED)
|
||||
{
|
||||
DLOG(("%d bytes compressed to %d\n", bytes_read, enc->bytes_in_opb));
|
||||
clen += enc->bytes_in_opb;
|
||||
CU_ASSERT(decompress_rdp_5(rmppc, (BYTE *) enc->outputBuffer,
|
||||
enc->bytes_in_opb, enc->flags, &roff, &rlen) != FALSE);
|
||||
CU_ASSERT(bytes_read == rlen);
|
||||
CU_ASSERT(memcmp(buf, &rmppc->history_buf[roff], rlen) == 0);
|
||||
}
|
||||
else
|
||||
{
|
||||
clen += bytes_read;
|
||||
DLOG(("not compressed\n"));
|
||||
}
|
||||
}
|
||||
|
||||
/* get end time */
|
||||
gettimeofday(&end_time, NULL);
|
||||
|
||||
/* print compression stats */
|
||||
printf("test_mppc_enc: raw_len=%d compressed_len=%d compression_ratio=%f\n",
|
||||
total, clen, (float) total / (float) clen);
|
||||
|
||||
/* print time taken */
|
||||
dur = ((end_time.tv_sec - start_time.tv_sec) * 1000000) + (end_time.tv_usec - start_time.tv_usec);
|
||||
printf("test_mppc_enc: compressed %d bytes in %f seconds\n", total, (float) (dur) / 1000000.0F);
|
||||
}
|
||||
else
|
||||
{
|
||||
data_len = sizeof(decompressed_rd5_data);
|
||||
printf("\ntest_mppc_enc: testing with embedded data of %d bytes\n", data_len);
|
||||
|
||||
/* save starting time */
|
||||
gettimeofday(&start_time, NULL);
|
||||
|
||||
CU_ASSERT(compress_rdp(enc, (BYTE*) decompressed_rd5_data, data_len) != FALSE);
|
||||
if (enc->flags & PACKET_COMPRESSED)
|
||||
{
|
||||
CU_ASSERT(decompress_rdp_5(rmppc, (BYTE *) enc->outputBuffer,
|
||||
enc->bytes_in_opb, enc->flags, &roff, &rlen) != FALSE);
|
||||
CU_ASSERT(data_len == rlen);
|
||||
CU_ASSERT(memcmp(decompressed_rd5_data, &rmppc->history_buf[roff], rlen) == 0);
|
||||
}
|
||||
else
|
||||
{
|
||||
DLOG(("not compressed\n"));
|
||||
}
|
||||
|
||||
/* get end time */
|
||||
gettimeofday(&end_time, NULL);
|
||||
|
||||
/* print time taken */
|
||||
dur = ((end_time.tv_sec - start_time.tv_sec) * 1000000) + (end_time.tv_usec - start_time.tv_usec);
|
||||
printf("test_mppc_enc: compressed %d bytes in %f seconds\n", data_len, (float) (dur) / 1000000.0F);
|
||||
}
|
||||
|
||||
if (fd > 0)
|
||||
{
|
||||
close(fd);
|
||||
}
|
||||
|
||||
mppc_enc_free(enc);
|
||||
mppc_dec_free(rmppc);
|
||||
}
|
|
@ -1,26 +0,0 @@
|
|||
/**
|
||||
* FreeRDP: A Remote Desktop Protocol Implementation
|
||||
* Microsoft Point to Point compression (MPPC) Unit Tests
|
||||
*
|
||||
* Copyright 2012 Laxmikant Rashinkar <LK.Rashinkar@gmail.com>
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
#include "test_freerdp.h"
|
||||
|
||||
int init_mppc_enc_suite(void);
|
||||
int clean_mppc_enc_suite(void);
|
||||
int add_mppc_enc_suite(void);
|
||||
|
||||
void test_mppc_enc(void);
|
375
cunit/test_nsc.c
375
cunit/test_nsc.c
|
@ -1,375 +0,0 @@
|
|||
/**
|
||||
* FreeRDP: A Remote Desktop Protocol Implementation
|
||||
* NSCodec Library Unit Tests
|
||||
*
|
||||
* Copyright 2012 Vic Lee
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
/**
|
||||
* The sample data comes from [MS-RDPRFX] 4.2.3, which is decoded into three
|
||||
* vertical bands in red (21x64), green (23x64) and blue(20x64) color.
|
||||
*/
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <freerdp/types.h>
|
||||
#include <freerdp/constants.h>
|
||||
#include <freerdp/utils/print.h>
|
||||
#include <winpr/print.h>
|
||||
#include <freerdp/codec/nsc.h>
|
||||
|
||||
#include "test_nsc.h"
|
||||
|
||||
static const BYTE nsc_data[] =
|
||||
{
|
||||
0x71, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00,
|
||||
0x03, 0x01, 0x00, 0x00, 0x63, 0x63, 0x01, 0x64, 0x64, 0x00, 0x63, 0x63, 0x02, 0x64, 0x64, 0x00,
|
||||
0x63, 0x63, 0x00, 0x64, 0x64, 0x01, 0x63, 0x63, 0x01, 0x64, 0x64, 0x01, 0x63, 0x63, 0x01, 0x64,
|
||||
0x64, 0x00, 0x63, 0x63, 0x00, 0x64, 0x64, 0x01, 0x63, 0x63, 0x00, 0x64, 0x64, 0x0c, 0x63, 0x63,
|
||||
0x00, 0x64, 0x64, 0x0c, 0x63, 0x63, 0x00, 0x64, 0x64, 0x0c, 0x63, 0x63, 0x00, 0x64, 0x64, 0x0c,
|
||||
0x63, 0x64, 0x64, 0x04, 0x63, 0x64, 0x63, 0x63, 0x00, 0x64, 0x64, 0x03, 0x63, 0x64, 0x64, 0x03,
|
||||
0x63, 0x63, 0x00, 0x64, 0x63, 0x63, 0x00, 0x64, 0x64, 0x03, 0x65, 0x63, 0x64, 0x64, 0x01, 0x63,
|
||||
0x64, 0x64, 0x00, 0x65, 0x64, 0x64, 0x06, 0x63, 0x64, 0x64, 0x00, 0x63, 0x63, 0x00, 0x64, 0x64,
|
||||
0x04, 0x64, 0x65, 0x65, 0x65, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x37, 0x37, 0x19, 0x36,
|
||||
0x37, 0x37, 0x06, 0x37, 0x37, 0x37, 0x37, 0xff, 0xff, 0x90, 0xff, 0xff, 0xff, 0xff
|
||||
};
|
||||
|
||||
static const BYTE nsc_stress_data[] =
|
||||
{
|
||||
0xec, 0x04, 0x00, 0x00, 0xfb, 0x04, 0x00, 0x00, 0x74, 0x03, 0x00, 0x00, 0x5c, 0x00, 0x00, 0x00
|
||||
, 0x03, 0x00, 0x00, 0x00, 0x94, 0x94, 0x0f, 0xa2, 0xb2, 0x8e, 0x61, 0x62, 0x82, 0x9b, 0xa8, 0xb0
|
||||
, 0xb3, 0xb3, 0x00, 0xb0, 0xa8, 0x9b, 0x82, 0x62, 0x61, 0x8e, 0xb2, 0xa3, 0x94, 0x94, 0x1e, 0x98
|
||||
, 0xae, 0x98, 0x61, 0x73, 0x93, 0x9b, 0xa0, 0xa5, 0xaa, 0xad, 0xaf, 0xaf, 0x00, 0xad, 0xaa, 0xa5
|
||||
, 0xa0, 0x9b, 0x93, 0x73, 0x61, 0x98, 0xae, 0x98, 0x94, 0x94, 0x1b, 0x9c, 0xaf, 0x72, 0x62, 0x8b
|
||||
, 0x89, 0x8a, 0x92, 0x9c, 0xa2, 0xa8, 0xab, 0xac, 0xac, 0x00, 0xab, 0xa8, 0xa2, 0x9c, 0x92, 0x8a
|
||||
, 0x89, 0x8b, 0x63, 0x72, 0xaf, 0x9c, 0x94, 0x94, 0x19, 0x9f, 0xab, 0x63, 0x73, 0x7d, 0x79, 0x82
|
||||
, 0x89, 0x8f, 0x98, 0x9f, 0xa4, 0xa6, 0xa7, 0xa7, 0x00, 0xa6, 0xa4, 0x9f, 0x98, 0x8f, 0x89, 0x82
|
||||
, 0x79, 0x7d, 0x73, 0x63, 0xab, 0x9f, 0x94, 0x94, 0x17, 0x9c, 0xad, 0x58, 0x71, 0x6a, 0x6f, 0x7a
|
||||
, 0x81, 0x86, 0x8b, 0x92, 0x99, 0x9e, 0xa1, 0xa2, 0xa2, 0x00, 0x9f, 0x9c, 0x97, 0x91, 0x8b, 0x86
|
||||
, 0x81, 0x7a, 0x6f, 0x6a, 0x72, 0x58, 0xad, 0x9c, 0x94, 0x94, 0x15, 0x98, 0xb0, 0x61, 0x68, 0x5a
|
||||
, 0x64, 0x70, 0x78, 0x7f, 0x84, 0x87, 0x8c, 0x92, 0x97, 0x97, 0x00, 0x91, 0x8a, 0x82, 0x7e, 0x7a
|
||||
, 0x79, 0x79, 0x00, 0x7c, 0x7d, 0x78, 0x70, 0x64, 0x5a, 0x68, 0x61, 0xb0, 0x98, 0x94, 0x94, 0x14
|
||||
, 0xae, 0x71, 0x5f, 0x51, 0x5a, 0x65, 0x6f, 0x78, 0x7e, 0x83, 0x86, 0x88, 0x8a, 0x88, 0x7d, 0x76
|
||||
, 0x80, 0x8a, 0x8d, 0x8a, 0x83, 0x77, 0x6c, 0x70, 0x75, 0x6f, 0x65, 0x5a, 0x51, 0x5f, 0x71, 0xae
|
||||
, 0x94, 0x94, 0x13, 0xa3, 0x98, 0x54, 0x4d, 0x4f, 0x5a, 0x65, 0x6f, 0x77, 0x7d, 0x81, 0x83, 0x82
|
||||
, 0x7f, 0x77, 0x87, 0x9f, 0xa1, 0x9e, 0x9b, 0x97, 0x94, 0x90, 0x8b, 0x7b, 0x6e, 0x6f, 0x65, 0x5b
|
||||
, 0x4f, 0x4d, 0x54, 0x98, 0xa3, 0x94, 0x94, 0x11, 0x96, 0xb2, 0x5c, 0x51, 0x44, 0x4d, 0x50, 0x59
|
||||
, 0x66, 0x70, 0x75, 0x76, 0x73, 0x6b, 0x6e, 0x70, 0xae, 0xac, 0xab, 0xa9, 0xa6, 0xa2, 0x9c, 0x96
|
||||
, 0x8f, 0x82, 0x67, 0x6e, 0x65, 0x5b, 0x50, 0x45, 0x51, 0x5b, 0xb2, 0x96, 0x94, 0x94, 0x10, 0xa3
|
||||
, 0x90, 0x50, 0x41, 0x47, 0x4f, 0x6e, 0x59, 0x58, 0x5c, 0x5f, 0x60, 0x62, 0x71, 0x85, 0x6a, 0x99
|
||||
, 0xb9, 0xb7, 0xb4, 0xb1, 0xac, 0xa6, 0x9f, 0x98, 0x89, 0x69, 0x6b, 0x64, 0x5a, 0x50, 0x47, 0x41
|
||||
, 0x50, 0x90, 0xa3, 0x94, 0x94, 0x10, 0xaf, 0x59, 0x49, 0x3e, 0x46, 0x44, 0x72, 0x60, 0x68, 0x6c
|
||||
, 0x71, 0x76, 0x7f, 0x88, 0x93, 0x71, 0x7e, 0xc4, 0xc0, 0xbe, 0xbb, 0xb6, 0xb0, 0xa8, 0xa0, 0x91
|
||||
, 0x74, 0x65, 0x62, 0x58, 0x4f, 0x47, 0x3e, 0x49, 0x59, 0xaf, 0x94, 0x94, 0x0f, 0x9a, 0xaa, 0x49
|
||||
, 0x3d, 0x3f, 0x46, 0x47, 0x62, 0x63, 0x69, 0x71, 0x78, 0x80, 0x8a, 0x97, 0xa3, 0x8a, 0x69, 0xc9
|
||||
, 0xc9, 0x00, 0xc7, 0xc3, 0xbf, 0xb8, 0xb0, 0xa7, 0x99, 0x80, 0x5d, 0x5f, 0x56, 0x4e, 0x46, 0x3f
|
||||
, 0x3d, 0x49, 0xaa, 0x9a, 0x94, 0x94, 0x0e, 0xa2, 0x88, 0x48, 0x38, 0x3f, 0x45, 0x49, 0x51, 0x6d
|
||||
, 0x6d, 0x00, 0x75, 0x7c, 0x87, 0x97, 0xa4, 0xb0, 0xae, 0x62, 0xb5, 0xd4, 0xcf, 0xcb, 0xc6, 0xc0
|
||||
, 0xb7, 0xae, 0xa3, 0x8a, 0x5c, 0x5b, 0x55, 0x4d, 0x45, 0x3f, 0x38, 0x48, 0x88, 0xa2, 0x94, 0x94
|
||||
, 0x0e, 0xa9, 0x66, 0x40, 0x37, 0x3d, 0x44, 0x4a, 0x48, 0x70, 0x70, 0x00, 0x78, 0x81, 0x92, 0xa2
|
||||
, 0xaf, 0xbd, 0xca, 0x6b, 0x8d, 0xdd, 0xd7, 0xd2, 0xcd, 0xc6, 0xbe, 0xb4, 0xaa, 0x95, 0x6a, 0x55
|
||||
, 0x53, 0x4b, 0x44, 0x3d, 0x37, 0x40, 0x67, 0xa9, 0x94, 0x94, 0x0e, 0xae, 0x52, 0x3b, 0x36, 0x3c
|
||||
, 0x42, 0x49, 0x48, 0x66, 0x73, 0x7b, 0x87, 0x9a, 0xaa, 0xb9, 0xc8, 0xd6, 0x8b, 0x6c, 0xdf, 0xde
|
||||
, 0xb1, 0x86, 0x6e, 0x6a, 0x72, 0x7e, 0x8f, 0x7e, 0x52, 0x51, 0x49, 0x42, 0x3c, 0x36, 0x3b, 0x52
|
||||
, 0xae, 0x94, 0x94, 0x0e, 0xb2, 0x47, 0x37, 0x35, 0x3b, 0x40, 0x47, 0x49, 0x55, 0x78, 0x7d, 0x8c
|
||||
, 0x9f, 0xaf, 0xc0, 0xd0, 0xdb, 0xbc, 0x5f, 0xb2, 0x69, 0x57, 0x5e, 0x6b, 0x6e, 0x63, 0x55, 0x50
|
||||
, 0x4d, 0x4e, 0x4e, 0x00, 0x47, 0x40, 0x3b, 0x35, 0x37, 0x47, 0xb2, 0x94, 0x94, 0x0e, 0xb3, 0x42
|
||||
, 0x33, 0x32, 0x37, 0x3d, 0x45, 0x4a, 0x49, 0x78, 0x7d, 0x8e, 0xa1, 0xb2, 0xc4, 0xd2, 0xdb, 0xe2
|
||||
, 0x60, 0x57, 0x68, 0xa8, 0xc4, 0xc1, 0xb6, 0xa9, 0x99, 0x80, 0x62, 0x49, 0x4a, 0x45, 0x3d, 0x37
|
||||
, 0x32, 0x33, 0x42, 0xb3, 0x94, 0x94, 0x0e, 0xb3, 0x40, 0x4c, 0x55, 0x47, 0x41, 0x43, 0x47, 0x46
|
||||
, 0x4f, 0x64, 0x82, 0xa1, 0xb1, 0xc4, 0xcb, 0xa9, 0x62, 0x53, 0x70, 0xd0, 0xd1, 0xc5, 0xbd, 0xb2
|
||||
, 0xa7, 0x9a, 0x8d, 0x83, 0x52, 0x42, 0x43, 0x41, 0x47, 0x55, 0x4c, 0x40, 0xb3, 0x94, 0x94, 0x0e
|
||||
, 0xb2, 0x4c, 0x81, 0x70, 0x64, 0x5c, 0x58, 0x56, 0x51, 0x51, 0x00, 0x54, 0x4c, 0x51, 0x58, 0x59
|
||||
, 0x4e, 0x4f, 0x67, 0x75, 0x56, 0xca, 0xc9, 0xc2, 0xba, 0xb0, 0xa5, 0x98, 0x8a, 0x7d, 0x61, 0x4c
|
||||
, 0x57, 0x5c, 0x64, 0x70, 0x81, 0x4c, 0xb2, 0x94, 0x94, 0x0e, 0xae, 0x58, 0x90, 0x6d, 0x62, 0x5e
|
||||
, 0x5f, 0x62, 0x60, 0x59, 0x6c, 0x71, 0x6f, 0x6d, 0x6d, 0x00, 0x77, 0x95, 0xaf, 0xa1, 0x54, 0xad
|
||||
, 0xc7, 0xbe, 0xb6, 0xab, 0xa1, 0x94, 0x86, 0x79, 0x6f, 0x54, 0x5d, 0x5e, 0x62, 0x6d, 0x90, 0x59
|
||||
, 0xae, 0x94, 0x94, 0x0e, 0xa9, 0x66, 0x91, 0x71, 0x65, 0x60, 0x62, 0x64, 0x65, 0x5a, 0x67, 0x72
|
||||
, 0x83, 0x90, 0x9a, 0xa4, 0xa8, 0xa9, 0xa9, 0x00, 0x66, 0x87, 0xc1, 0xb8, 0xb0, 0xa6, 0x9b, 0x8e
|
||||
, 0x81, 0x75, 0x70, 0x59, 0x5d, 0x60, 0x65, 0x71, 0x91, 0x66, 0xa9, 0x94, 0x94, 0x0e, 0xa2, 0x87
|
||||
, 0x8a, 0x7c, 0x6b, 0x65, 0x66, 0x69, 0x6c, 0x62, 0x62, 0x00, 0x6b, 0x7b, 0x86, 0x90, 0x99, 0x9f
|
||||
, 0xa2, 0xa5, 0x7a, 0x6d, 0xb8, 0xb1, 0xa9, 0x9f, 0x95, 0x88, 0x7c, 0x70, 0x69, 0x63, 0x5c, 0x65
|
||||
, 0x6b, 0x7c, 0x8b, 0x87, 0xa2, 0x94, 0x94, 0x0e, 0x9a, 0xaa, 0x68, 0x93, 0x74, 0x6d, 0x6b, 0x6e
|
||||
, 0x71, 0x6c, 0x61, 0x65, 0x71, 0x7e, 0x88, 0x90, 0x96, 0x99, 0x9b, 0x8c, 0x64, 0xaa, 0xa8, 0xa0
|
||||
, 0x97, 0x8b, 0x7f, 0x75, 0x6c, 0x62, 0x6c, 0x5c, 0x6b, 0x74, 0x93, 0x69, 0xaa, 0x9a, 0x94, 0x94
|
||||
, 0x0f, 0xaf, 0x59, 0xab, 0x83, 0x79, 0x73, 0x74, 0x75, 0x75, 0x00, 0x64, 0x61, 0x66, 0x73, 0x7d
|
||||
, 0x85, 0x8a, 0x8d, 0x8e, 0x8d, 0x68, 0x93, 0x9c, 0x92, 0x88, 0x7d, 0x72, 0x6c, 0x63, 0x5c, 0x6e
|
||||
, 0x64, 0x75, 0x83, 0xab, 0x59, 0xaf, 0x94, 0x94, 0x10, 0xa2, 0x8e, 0x82, 0xa1, 0x87, 0x80, 0x7d
|
||||
, 0x7d, 0x01, 0x6f, 0x60, 0x5a, 0x66, 0x6f, 0x77, 0x7c, 0x80, 0x80, 0x01, 0x74, 0x80, 0x94, 0x7e
|
||||
, 0x70, 0x70, 0x01, 0x6e, 0x6a, 0x64, 0x66, 0x76, 0x82, 0xa1, 0x82, 0x8e, 0xa2, 0x94, 0x94, 0x10
|
||||
, 0x96, 0xb2, 0x5a, 0xba, 0x9a, 0x8f, 0x89, 0x87, 0x87, 0x00, 0x7c, 0x65, 0x4e, 0x59, 0x61, 0x68
|
||||
, 0x6c, 0x70, 0x71, 0x6d, 0x75, 0x74, 0x7f, 0x7c, 0x85, 0x88, 0x88, 0x00, 0x87, 0x84, 0x7f, 0x7e
|
||||
, 0x87, 0x98, 0xba, 0x5a, 0xb2, 0x96, 0x94, 0x94, 0x11, 0xa2, 0x98, 0x6e, 0xbe, 0x9f, 0x97, 0x93
|
||||
, 0x91, 0x8b, 0x76, 0x54, 0x49, 0x4f, 0x57, 0x5b, 0x5d, 0x5c, 0x62, 0x76, 0x85, 0x8f, 0x90, 0x91
|
||||
, 0x91, 0x03, 0x93, 0x97, 0x9f, 0xbe, 0x6e, 0x98, 0xa2, 0x94, 0x94, 0x13, 0xae, 0x6e, 0xa2, 0xbf
|
||||
, 0xa7, 0xa1, 0x9c, 0x9a, 0x91, 0x82, 0x78, 0x6d, 0x62, 0x5d, 0x65, 0x71, 0x7f, 0x8d, 0x97, 0x9a
|
||||
, 0x9a, 0x03, 0x9b, 0x9c, 0xa1, 0xa7, 0xbf, 0xa2, 0x6e, 0xae, 0x94, 0x94, 0x09, 0xd9, 0xd9, 0x09
|
||||
, 0xda, 0xe1, 0x66, 0xb8, 0xc6, 0xb1, 0xab, 0xa7, 0xa4, 0xa0, 0x9a, 0x93, 0x8f, 0x8e, 0x91, 0x96
|
||||
, 0x9d, 0xa1, 0xa2, 0xa2, 0x01, 0xa3, 0xa3, 0x00, 0xa5, 0xa7, 0xab, 0xb1, 0xc6, 0xb8, 0x65, 0xe1
|
||||
, 0xda, 0xd9, 0xd9, 0x09, 0x4d, 0x4d, 0x0b, 0x4b, 0x44, 0xb5, 0xd3, 0xbd, 0xb7, 0xb3, 0xb0, 0xae
|
||||
, 0xac, 0xac, 0x00, 0xab, 0xab, 0x04, 0xac, 0xac, 0x00, 0xae, 0xb0, 0xb3, 0xb7, 0xbd, 0xd3, 0xb5
|
||||
, 0x44, 0x4b, 0x4d, 0x4d, 0x0b, 0x00, 0x00, 0x0c, 0x03, 0x30, 0x92, 0xdd, 0xcf, 0xc3, 0xbf, 0xbc
|
||||
, 0xb9, 0xb8, 0xb7, 0xb6, 0xb6, 0x02, 0xb7, 0xb8, 0xb9, 0xbc, 0xbf, 0xc3, 0xcf, 0xdd, 0x92, 0x30
|
||||
, 0x02, 0x00, 0x00, 0x1c, 0x24, 0x5d, 0xca, 0xe3, 0xd6, 0xcd, 0xc9, 0xc7, 0xc5, 0xc4, 0xc4, 0x02
|
||||
, 0xc5, 0xc7, 0xc9, 0xcd, 0xd6, 0xe2, 0xc9, 0x5d, 0x24, 0x00, 0x00, 0x1f, 0x0d, 0x35, 0x75, 0xc8
|
||||
, 0xe4, 0xe5, 0xdf, 0xda, 0xd7, 0xd6, 0xd6, 0x00, 0xd7, 0xda, 0xdf, 0xe4, 0xe2, 0xc5, 0x73, 0x35
|
||||
, 0x0d, 0x00, 0x00, 0x22, 0x14, 0x30, 0x51, 0x7e, 0xad, 0xcb, 0xd3, 0xd8, 0xd8, 0x00, 0xd3, 0xcb
|
||||
, 0xac, 0x7c, 0x50, 0x30, 0x14, 0x00, 0x00, 0x26, 0x04, 0x16, 0x26, 0x33, 0x36, 0x41, 0x41, 0x00
|
||||
, 0x36, 0x33, 0x26, 0x16, 0x04, 0x00, 0x00, 0xff, 0xf7, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
||||
, 0x3a, 0x3a, 0x0f, 0x3b, 0x3c, 0x39, 0x33, 0x2d, 0x28, 0x25, 0x23, 0x21, 0x20, 0x20, 0x00, 0x21
|
||||
, 0x23, 0x25, 0x28, 0x2c, 0x32, 0x39, 0x3c, 0x3b, 0x3a, 0x3a, 0x1e, 0x3b, 0x3c, 0x3a, 0x32, 0x2b
|
||||
, 0x26, 0x25, 0x24, 0x23, 0x22, 0x21, 0x20, 0x20, 0x00, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x2b
|
||||
, 0x32, 0x3a, 0x3c, 0x3b, 0x3a, 0x3a, 0x1b, 0x3b, 0x3c, 0x36, 0x2d, 0x27, 0x27, 0x01, 0x25, 0x24
|
||||
, 0x23, 0x22, 0x22, 0x00, 0x21, 0x21, 0x00, 0x22, 0x22, 0x00, 0x23, 0x24, 0x25, 0x27, 0x27, 0x01
|
||||
, 0x2d, 0x36, 0x3c, 0x3b, 0x3a, 0x3a, 0x19, 0x3b, 0x3b, 0x00, 0x33, 0x2b, 0x29, 0x28, 0x28, 0x00
|
||||
, 0x27, 0x25, 0x24, 0x23, 0x23, 0x00, 0x22, 0x22, 0x02, 0x23, 0x23, 0x00, 0x24, 0x25, 0x27, 0x28
|
||||
, 0x28, 0x00, 0x29, 0x2b, 0x33, 0x3b, 0x3b, 0x00, 0x3a, 0x3a, 0x17, 0x3b, 0x3b, 0x00, 0x32, 0x2b
|
||||
, 0x2c, 0x2a, 0x28, 0x28, 0x00, 0x27, 0x26, 0x25, 0x24, 0x23, 0x23, 0x03, 0x24, 0x24, 0x00, 0x25
|
||||
, 0x26, 0x27, 0x28, 0x28, 0x00, 0x2a, 0x2c, 0x2a, 0x32, 0x3b, 0x3b, 0x00, 0x3a, 0x3a, 0x15, 0x3b
|
||||
, 0x3c, 0x33, 0x2b, 0x2e, 0x2c, 0x2a, 0x28, 0x28, 0x00, 0x27, 0x26, 0x25, 0x24, 0x24, 0x01, 0x25
|
||||
, 0x27, 0x29, 0x2c, 0x2b, 0x29, 0x29, 0x01, 0x28, 0x29, 0x2a, 0x2c, 0x2e, 0x2b, 0x33, 0x3c, 0x3b
|
||||
, 0x3a, 0x3a, 0x14, 0x3c, 0x36, 0x2c, 0x2f, 0x2e, 0x2c, 0x2b, 0x29, 0x28, 0x27, 0x27, 0x00, 0x26
|
||||
, 0x25, 0x26, 0x29, 0x37, 0x07, 0x11, 0x14, 0x13, 0x0f, 0x05, 0x39, 0x2c, 0x29, 0x2b, 0x2c, 0x2e
|
||||
, 0x2f, 0x2b, 0x36, 0x3c, 0x3a, 0x3a, 0x13, 0x3b, 0x3a, 0x2e, 0x2f, 0x30, 0x2e, 0x2c, 0x2b, 0x29
|
||||
, 0x28, 0x27, 0x27, 0x02, 0x2f, 0x0d, 0x19, 0x1a, 0x1a, 0x04, 0x19, 0x3e, 0x2b, 0x2b, 0x00, 0x2c
|
||||
, 0x2e, 0x2f, 0x2f, 0x00, 0x2e, 0x3a, 0x3b, 0x3a, 0x3a, 0x11, 0x3b, 0x3c, 0x32, 0x2e, 0x31, 0x30
|
||||
, 0x30, 0x00, 0x2e, 0x2c, 0x2b, 0x29, 0x29, 0x00, 0x2a, 0x2b, 0x2c, 0x32, 0x1a, 0x1a, 0x04, 0x19
|
||||
, 0x1a, 0x1a, 0x00, 0x0b, 0x2d, 0x2b, 0x2c, 0x2d, 0x2f, 0x31, 0x2e, 0x32, 0x3c, 0x3b, 0x3a, 0x3a
|
||||
, 0x10, 0x3b, 0x39, 0x2e, 0x31, 0x31, 0x00, 0x32, 0x2e, 0x2d, 0x2e, 0x2e, 0x00, 0x2d, 0x2d, 0x00
|
||||
, 0x2b, 0x29, 0x28, 0x31, 0x0e, 0x17, 0x17, 0x00, 0x18, 0x19, 0x1a, 0x1a, 0x02, 0x15, 0x31, 0x2b
|
||||
, 0x2c, 0x2d, 0x2f, 0x30, 0x31, 0x2e, 0x39, 0x3b, 0x3a, 0x3a, 0x10, 0x3c, 0x33, 0x2f, 0x32, 0x30
|
||||
, 0x31, 0x30, 0x2a, 0x2a, 0x02, 0x29, 0x28, 0x29, 0x2b, 0x31, 0x01, 0x13, 0x13, 0x00, 0x14, 0x15
|
||||
, 0x18, 0x19, 0x1a, 0x1a, 0x01, 0x39, 0x2c, 0x2c, 0x00, 0x2d, 0x2f, 0x30, 0x32, 0x2f, 0x32, 0x3c
|
||||
, 0x3a, 0x3a, 0x0f, 0x3b, 0x3b, 0x00, 0x2f, 0x32, 0x32, 0x00, 0x31, 0x31, 0x00, 0x32, 0x2a, 0x2b
|
||||
, 0x2b, 0x00, 0x2a, 0x29, 0x2a, 0x2e, 0x30, 0x31, 0x35, 0x11, 0x0f, 0x10, 0x12, 0x14, 0x17, 0x19
|
||||
, 0x1a, 0x1a, 0x00, 0x04, 0x2d, 0x2c, 0x2d, 0x2f, 0x31, 0x32, 0x32, 0x00, 0x2f, 0x3b, 0x3b, 0x00
|
||||
, 0x3a, 0x3a, 0x0e, 0x3b, 0x38, 0x30, 0x33, 0x32, 0x31, 0x30, 0x31, 0x2b, 0x2b, 0x00, 0x2a, 0x29
|
||||
, 0x2a, 0x2e, 0x31, 0x33, 0x32, 0x32, 0x00, 0x0e, 0x0b, 0x0d, 0x0f, 0x11, 0x13, 0x17, 0x1a, 0x1a
|
||||
, 0x00, 0x11, 0x30, 0x2d, 0x2e, 0x2f, 0x31, 0x32, 0x33, 0x30, 0x38, 0x3b, 0x3a, 0x3a, 0x0e, 0x3b
|
||||
, 0x35, 0x31, 0x33, 0x32, 0x31, 0x30, 0x31, 0x2e, 0x2b, 0x29, 0x29, 0x00, 0x2c, 0x30, 0x32, 0x34
|
||||
, 0x35, 0x33, 0x06, 0x09, 0x0a, 0x0c, 0x0f, 0x12, 0x15, 0x19, 0x1b, 0x1a, 0x36, 0x2e, 0x2e, 0x00
|
||||
, 0x30, 0x31, 0x32, 0x33, 0x31, 0x35, 0x3b, 0x3a, 0x3a, 0x0e, 0x3c, 0x33, 0x32, 0x34, 0x32, 0x31
|
||||
, 0x30, 0x30, 0x01, 0x2a, 0x29, 0x2a, 0x2e, 0x32, 0x34, 0x36, 0x38, 0x34, 0x3a, 0x0a, 0x0a, 0x00
|
||||
, 0x05, 0x3e, 0x39, 0x3a, 0x3f, 0x07, 0x14, 0x02, 0x2e, 0x2e, 0x00, 0x30, 0x31, 0x32, 0x34, 0x32
|
||||
, 0x33, 0x3c, 0x3a, 0x3a, 0x0e, 0x3c, 0x31, 0x33, 0x34, 0x33, 0x32, 0x30, 0x30, 0x00, 0x31, 0x2a
|
||||
, 0x29, 0x2b, 0x30, 0x32, 0x35, 0x37, 0x39, 0x35, 0x33, 0x05, 0x35, 0x32, 0x36, 0x3a, 0x3b, 0x3a
|
||||
, 0x37, 0x36, 0x34, 0x2f, 0x2f, 0x00, 0x30, 0x32, 0x33, 0x34, 0x33, 0x31, 0x3c, 0x3a, 0x3a, 0x0e
|
||||
, 0x3c, 0x31, 0x34, 0x34, 0x00, 0x33, 0x32, 0x31, 0x30, 0x31, 0x2a, 0x28, 0x2b, 0x30, 0x33, 0x36
|
||||
, 0x38, 0x39, 0x38, 0x30, 0x31, 0x39, 0x03, 0x06, 0x07, 0x08, 0x09, 0x08, 0x04, 0x3e, 0x33, 0x30
|
||||
, 0x31, 0x32, 0x33, 0x34, 0x34, 0x00, 0x31, 0x3c, 0x3a, 0x3a, 0x0e, 0x3c, 0x32, 0x35, 0x36, 0x34
|
||||
, 0x33, 0x31, 0x30, 0x30, 0x00, 0x31, 0x2e, 0x2a, 0x2d, 0x31, 0x33, 0x34, 0x34, 0x00, 0x33, 0x30
|
||||
, 0x3a, 0x06, 0x06, 0x01, 0x07, 0x08, 0x09, 0x09, 0x00, 0x08, 0x05, 0x38, 0x31, 0x31, 0x00, 0x33
|
||||
, 0x34, 0x36, 0x35, 0x32, 0x3c, 0x3a, 0x3a, 0x0e, 0x3c, 0x33, 0x38, 0x38, 0x00, 0x36, 0x35, 0x33
|
||||
, 0x32, 0x31, 0x3a, 0x3e, 0x36, 0x34, 0x33, 0x33, 0x01, 0x35, 0x09, 0x0a, 0x35, 0x05, 0x06, 0x07
|
||||
, 0x07, 0x00, 0x08, 0x09, 0x09, 0x00, 0x07, 0x04, 0x3c, 0x33, 0x33, 0x00, 0x35, 0x36, 0x38, 0x38
|
||||
, 0x00, 0x33, 0x3c, 0x3a, 0x3a, 0x0e, 0x3c, 0x34, 0x39, 0x38, 0x37, 0x36, 0x34, 0x33, 0x33, 0x00
|
||||
, 0x3e, 0x16, 0x17, 0x10, 0x0b, 0x0b, 0x00, 0x11, 0x19, 0x19, 0x00, 0x15, 0x35, 0x03, 0x06, 0x07
|
||||
, 0x07, 0x00, 0x08, 0x09, 0x09, 0x00, 0x06, 0x04, 0x00, 0x36, 0x35, 0x36, 0x37, 0x38, 0x39, 0x34
|
||||
, 0x3c, 0x3a, 0x3a, 0x0e, 0x3b, 0x36, 0x3a, 0x39, 0x37, 0x36, 0x35, 0x34, 0x34, 0x00, 0x36, 0x11
|
||||
, 0x15, 0x16, 0x17, 0x17, 0x00, 0x18, 0x18, 0x02, 0x3d, 0x3f, 0x07, 0x07, 0x00, 0x08, 0x09, 0x09
|
||||
, 0x00, 0x08, 0x05, 0x03, 0x01, 0x39, 0x36, 0x36, 0x00, 0x37, 0x39, 0x39, 0x00, 0x36, 0x3b, 0x3a
|
||||
, 0x3a, 0x0e, 0x3b, 0x38, 0x39, 0x39, 0x00, 0x38, 0x37, 0x36, 0x35, 0x35, 0x01, 0x09, 0x15, 0x16
|
||||
, 0x16, 0x01, 0x17, 0x17, 0x00, 0x18, 0x18, 0x00, 0x07, 0x3b, 0x07, 0x08, 0x08, 0x00, 0x09, 0x09
|
||||
, 0x00, 0x07, 0x04, 0x02, 0x00, 0x3c, 0x37, 0x37, 0x00, 0x38, 0x39, 0x39, 0x00, 0x38, 0x3b, 0x3a
|
||||
, 0x3a, 0x0e, 0x3b, 0x3b, 0x00, 0x36, 0x3a, 0x39, 0x38, 0x37, 0x36, 0x36, 0x01, 0x01, 0x14, 0x15
|
||||
, 0x16, 0x16, 0x01, 0x17, 0x17, 0x01, 0x11, 0x39, 0x06, 0x09, 0x09, 0x01, 0x07, 0x05, 0x02, 0x01
|
||||
, 0x3f, 0x3f, 0x00, 0x38, 0x38, 0x00, 0x39, 0x3a, 0x36, 0x3b, 0x3b, 0x00, 0x3a, 0x3a, 0x0f, 0x3c
|
||||
, 0x35, 0x3b, 0x39, 0x39, 0x00, 0x38, 0x37, 0x37, 0x00, 0x36, 0x3a, 0x13, 0x15, 0x15, 0x00, 0x16
|
||||
, 0x16, 0x02, 0x17, 0x16, 0x3b, 0x03, 0x09, 0x09, 0x00, 0x06, 0x03, 0x01, 0x00, 0x00, 0x00, 0x3e
|
||||
, 0x00, 0x3b, 0x39, 0x39, 0x00, 0x3b, 0x35, 0x3c, 0x3a, 0x3a, 0x10, 0x3b, 0x39, 0x38, 0x3b, 0x3a
|
||||
, 0x39, 0x38, 0x38, 0x00, 0x37, 0x38, 0x0d, 0x14, 0x15, 0x15, 0x00, 0x16, 0x16, 0x03, 0x03, 0x3f
|
||||
, 0x07, 0x3f, 0x3a, 0x38, 0x38, 0x01, 0x39, 0x3c, 0x3f, 0x3d, 0x3a, 0x3b, 0x38, 0x39, 0x3b, 0x3a
|
||||
, 0x3a, 0x10, 0x3b, 0x3c, 0x35, 0x3c, 0x3a, 0x39, 0x39, 0x00, 0x38, 0x38, 0x01, 0x06, 0x13, 0x14
|
||||
, 0x15, 0x15, 0x03, 0x16, 0x0e, 0x3a, 0x3a, 0x00, 0x38, 0x38, 0x04, 0x39, 0x39, 0x00, 0x3a, 0x3b
|
||||
, 0x3c, 0x35, 0x3c, 0x3b, 0x3a, 0x3a, 0x11, 0x3b, 0x3a, 0x36, 0x3c, 0x3a, 0x3a, 0x00, 0x39, 0x39
|
||||
, 0x01, 0x3e, 0x10, 0x14, 0x14, 0x01, 0x15, 0x15, 0x01, 0x11, 0x04, 0x39, 0x38, 0x38, 0x03, 0x39
|
||||
, 0x39, 0x01, 0x3a, 0x3a, 0x00, 0x3c, 0x36, 0x3a, 0x3b, 0x3a, 0x3a, 0x13, 0x3c, 0x36, 0x3a, 0x3c
|
||||
, 0x3b, 0x3a, 0x3a, 0x00, 0x39, 0x3a, 0x3b, 0x02, 0x08, 0x0c, 0x0c, 0x00, 0x0a, 0x04, 0x3c, 0x3a
|
||||
, 0x39, 0x39, 0x05, 0x3a, 0x3a, 0x00, 0x3b, 0x3c, 0x3a, 0x36, 0x3c, 0x3a, 0x3a, 0x09, 0x3c, 0x3c
|
||||
, 0x0a, 0x3d, 0x35, 0x3b, 0x3d, 0x3b, 0x3a, 0x3a, 0x09, 0x39, 0x39, 0x01, 0x3a, 0x3a, 0x04, 0x3b
|
||||
, 0x3d, 0x3b, 0x35, 0x3d, 0x3c, 0x3c, 0x0a, 0x3d, 0x3d, 0x0b, 0x3c, 0x34, 0x3b, 0x3d, 0x3c, 0x3b
|
||||
, 0x3b, 0x00, 0x3a, 0x3a, 0x0c, 0x3b, 0x3b, 0x00, 0x3c, 0x3d, 0x3b, 0x34, 0x3c, 0x3d, 0x3d, 0x0b
|
||||
, 0x00, 0x00, 0x0c, 0x3f, 0x35, 0x38, 0x3d, 0x3d, 0x00, 0x3c, 0x3b, 0x3b, 0x0c, 0x3c, 0x3d, 0x3d
|
||||
, 0x00, 0x38, 0x35, 0x3f, 0x00, 0x00, 0x1b, 0x3f, 0x38, 0x35, 0x3b, 0x3e, 0x3d, 0x3c, 0x3c, 0x0a
|
||||
, 0x3d, 0x3e, 0x3b, 0x35, 0x38, 0x3f, 0x00, 0x00, 0x1e, 0x3d, 0x35, 0x35, 0x00, 0x3b, 0x3d, 0x3e
|
||||
, 0x3e, 0x00, 0x3d, 0x3d, 0x04, 0x3e, 0x3e, 0x00, 0x3d, 0x3a, 0x35, 0x35, 0x00, 0x3d, 0x00, 0x00
|
||||
, 0x22, 0x3b, 0x35, 0x33, 0x35, 0x38, 0x3b, 0x3b, 0x04, 0x38, 0x35, 0x33, 0x35, 0x3b, 0x00, 0x00
|
||||
, 0x26, 0x3f, 0x3b, 0x37, 0x34, 0x34, 0x00, 0x32, 0x32, 0x00, 0x34, 0x34, 0x00, 0x37, 0x3b, 0x3f
|
||||
, 0x00, 0x00, 0xff, 0xf7, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x3f, 0x11, 0x00, 0x01
|
||||
, 0x03, 0x06, 0x09, 0x0a, 0x0c, 0x0c, 0x02, 0x0a, 0x09, 0x06, 0x03, 0x01, 0x00, 0x3f, 0x3f, 0x22
|
||||
, 0x00, 0x01, 0x04, 0x07, 0x07, 0x00, 0x08, 0x09, 0x0a, 0x0b, 0x0b, 0x02, 0x0a, 0x09, 0x08, 0x07
|
||||
, 0x07, 0x00, 0x04, 0x01, 0x00, 0x3f, 0x3f, 0x1f, 0x00, 0x03, 0x06, 0x05, 0x05, 0x00, 0x06, 0x08
|
||||
, 0x09, 0x0a, 0x0a, 0x00, 0x0b, 0x0b, 0x00, 0x0a, 0x0a, 0x00, 0x09, 0x08, 0x06, 0x05, 0x05, 0x00
|
||||
, 0x06, 0x03, 0x00, 0x3f, 0x3f, 0x1c, 0x00, 0x01, 0x04, 0x05, 0x04, 0x04, 0x00, 0x05, 0x06, 0x07
|
||||
, 0x08, 0x09, 0x09, 0x00, 0x0a, 0x0a, 0x00, 0x09, 0x09, 0x00, 0x08, 0x07, 0x06, 0x05, 0x04, 0x04
|
||||
, 0x00, 0x05, 0x04, 0x00, 0x00, 0x00, 0x3f, 0x3f, 0x19, 0x00, 0x01, 0x03, 0x03, 0x01, 0x04, 0x04
|
||||
, 0x01, 0x05, 0x06, 0x07, 0x08, 0x09, 0x09, 0x01, 0x08, 0x08, 0x00, 0x07, 0x06, 0x05, 0x04, 0x04
|
||||
, 0x01, 0x03, 0x03, 0x00, 0x04, 0x01, 0x00, 0x3f, 0x3f, 0x18, 0x01, 0x03, 0x02, 0x02, 0x00, 0x03
|
||||
, 0x04, 0x04, 0x01, 0x05, 0x06, 0x07, 0x07, 0x03, 0x06, 0x06, 0x00, 0x05, 0x05, 0x00, 0x04, 0x04
|
||||
, 0x02, 0x03, 0x02, 0x02, 0x00, 0x03, 0x00, 0x3f, 0x3f, 0x17, 0x00, 0x02, 0x02, 0x02, 0x03, 0x04
|
||||
, 0x04, 0x02, 0x05, 0x06, 0x06, 0x00, 0x05, 0x04, 0x03, 0x03, 0x02, 0x02, 0x02, 0x01, 0x03, 0x03
|
||||
, 0x01, 0x02, 0x02, 0x02, 0x00, 0x3f, 0x3f, 0x15, 0x00, 0x02, 0x02, 0x03, 0x03, 0x03, 0x00, 0x04
|
||||
, 0x04, 0x02, 0x05, 0x04, 0x03, 0x04, 0x04, 0x01, 0x03, 0x03, 0x00, 0x02, 0x02, 0x01, 0x03, 0x03
|
||||
, 0x01, 0x02, 0x02, 0x03, 0x00, 0x3f, 0x3f, 0x14, 0x01, 0x02, 0x01, 0x01, 0x00, 0x02, 0x02, 0x01
|
||||
, 0x03, 0x03, 0x00, 0x04, 0x04, 0x00, 0x03, 0x03, 0x00, 0x04, 0x06, 0x06, 0x02, 0x05, 0x04, 0x04
|
||||
, 0x00, 0x03, 0x02, 0x03, 0x02, 0x02, 0x03, 0x01, 0x02, 0x01, 0x3f, 0x3f, 0x13, 0x00, 0x01, 0x01
|
||||
, 0x02, 0x02, 0x02, 0x04, 0x03, 0x03, 0x02, 0x05, 0x06, 0x06, 0x03, 0x05, 0x04, 0x03, 0x03, 0x00
|
||||
, 0x02, 0x02, 0x03, 0x01, 0x01, 0x01, 0x00, 0x3f, 0x3f, 0x12, 0x01, 0x01, 0x04, 0x02, 0x02, 0x01
|
||||
, 0x03, 0x03, 0x00, 0x04, 0x04, 0x00, 0x03, 0x02, 0x04, 0x04, 0x00, 0x05, 0x05, 0x01, 0x06, 0x06
|
||||
, 0x00, 0x05, 0x04, 0x03, 0x02, 0x02, 0x03, 0x01, 0x01, 0x02, 0x3f, 0x3f, 0x11, 0x00, 0x01, 0x01
|
||||
, 0x04, 0x02, 0x02, 0x01, 0x03, 0x04, 0x04, 0x00, 0x02, 0x01, 0x01, 0x00, 0x03, 0x04, 0x03, 0x04
|
||||
, 0x04, 0x00, 0x05, 0x06, 0x06, 0x00, 0x05, 0x04, 0x02, 0x02, 0x03, 0x01, 0x01, 0x02, 0x00, 0x3f
|
||||
, 0x3f, 0x10, 0x00, 0x01, 0x01, 0x04, 0x02, 0x02, 0x00, 0x03, 0x04, 0x04, 0x00, 0x02, 0x01, 0x01
|
||||
, 0x00, 0x00, 0x02, 0x04, 0x03, 0x03, 0x01, 0x04, 0x05, 0x06, 0x06, 0x00, 0x05, 0x03, 0x02, 0x02
|
||||
, 0x02, 0x01, 0x01, 0x02, 0x00, 0x3f, 0x3f, 0x10, 0x00, 0x01, 0x01, 0x03, 0x02, 0x02, 0x01, 0x03
|
||||
, 0x04, 0x03, 0x01, 0x01, 0x01, 0x00, 0x02, 0x03, 0x02, 0x02, 0x00, 0x03, 0x03, 0x00, 0x04, 0x05
|
||||
, 0x06, 0x06, 0x00, 0x04, 0x02, 0x02, 0x01, 0x01, 0x01, 0x03, 0x00, 0x3f, 0x3f, 0x10, 0x00, 0x01
|
||||
, 0x01, 0x05, 0x03, 0x04, 0x04, 0x00, 0x02, 0x01, 0x01, 0x01, 0x00, 0x01, 0x03, 0x02, 0x02, 0x0a
|
||||
, 0x01, 0x01, 0x03, 0x00, 0x3f, 0x3f, 0x10, 0x01, 0x01, 0x06, 0x03, 0x04, 0x03, 0x02, 0x01, 0x01
|
||||
, 0x01, 0x00, 0x01, 0x02, 0x02, 0x02, 0x03, 0x04, 0x05, 0x05, 0x00, 0x03, 0x02, 0x02, 0x02, 0x01
|
||||
, 0x01, 0x04, 0x3f, 0x3f, 0x10, 0x01, 0x01, 0x06, 0x03, 0x04, 0x03, 0x01, 0x01, 0x01, 0x00, 0x00
|
||||
, 0x00, 0x01, 0x02, 0x02, 0x00, 0x04, 0x06, 0x05, 0x06, 0x07, 0x08, 0x09, 0x09, 0x00, 0x06, 0x02
|
||||
, 0x01, 0x01, 0x05, 0x3f, 0x3f, 0x10, 0x00, 0x01, 0x00, 0x01, 0x01, 0x04, 0x02, 0x03, 0x02, 0x01
|
||||
, 0x01, 0x03, 0x02, 0x04, 0x05, 0x05, 0x01, 0x06, 0x07, 0x08, 0x09, 0x09, 0x01, 0x03, 0x01, 0x01
|
||||
, 0x02, 0x00, 0x01, 0x00, 0x3f, 0x3f, 0x10, 0x01, 0x00, 0x00, 0x01, 0x01, 0x01, 0x02, 0x00, 0x3f
|
||||
, 0x00, 0x01, 0x01, 0x02, 0x00, 0x00, 0x01, 0x02, 0x05, 0x05, 0x01, 0x06, 0x07, 0x08, 0x09, 0x09
|
||||
, 0x01, 0x05, 0x01, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x3f, 0x3f, 0x10, 0x00, 0x00, 0x03, 0x01
|
||||
, 0x01, 0x01, 0x3f, 0x3b, 0x3c, 0x3e, 0x3e, 0x00, 0x3f, 0x00, 0x03, 0x08, 0x05, 0x01, 0x05, 0x05
|
||||
, 0x00, 0x06, 0x06, 0x00, 0x07, 0x09, 0x09, 0x02, 0x07, 0x01, 0x01, 0x00, 0x00, 0x00, 0x03, 0x3f
|
||||
, 0x3f, 0x10, 0x00, 0x00, 0x03, 0x01, 0x01, 0x01, 0x00, 0x3b, 0x3c, 0x3f, 0x01, 0x03, 0x05, 0x06
|
||||
, 0x07, 0x06, 0x00, 0x03, 0x06, 0x06, 0x00, 0x07, 0x08, 0x09, 0x09, 0x02, 0x08, 0x02, 0x01, 0x00
|
||||
, 0x00, 0x03, 0x3f, 0x3f, 0x10, 0x00, 0x00, 0x04, 0x01, 0x01, 0x01, 0x3d, 0x3c, 0x3e, 0x00, 0x01
|
||||
, 0x03, 0x04, 0x05, 0x06, 0x00, 0x02, 0x06, 0x07, 0x08, 0x09, 0x09, 0x04, 0x04, 0x00, 0x00, 0x04
|
||||
, 0x3f, 0x3f, 0x10, 0x00, 0x00, 0x05, 0x01, 0x01, 0x00, 0x3e, 0x3b, 0x3c, 0x3e, 0x00, 0x01, 0x02
|
||||
, 0x03, 0x04, 0x00, 0x01, 0x07, 0x08, 0x09, 0x09, 0x05, 0x06, 0x00, 0x00, 0x04, 0x3f, 0x3f, 0x11
|
||||
, 0x00, 0x00, 0x07, 0x3a, 0x3b, 0x3c, 0x3e, 0x3f, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x05
|
||||
, 0x09, 0x09, 0x00, 0x08, 0x06, 0x05, 0x06, 0x07, 0x09, 0x09, 0x00, 0x01, 0x00, 0x00, 0x02, 0x3f
|
||||
, 0x3f, 0x12, 0x00, 0x00, 0x07, 0x3b, 0x39, 0x3b, 0x3c, 0x3d, 0x3e, 0x3e, 0x00, 0x3f, 0x3e, 0x3f
|
||||
, 0x03, 0x08, 0x03, 0x01, 0x00, 0x00, 0x01, 0x01, 0x02, 0x04, 0x02, 0x00, 0x00, 0x02, 0x3f, 0x3f
|
||||
, 0x13, 0x00, 0x00, 0x06, 0x3d, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3c, 0x03, 0x00, 0x01, 0x00, 0x00
|
||||
, 0x0a, 0x3f, 0x3f, 0x14, 0x00, 0x00, 0x06, 0x3f, 0x38, 0x37, 0x38, 0x39, 0x3a, 0x3a, 0x01, 0x3b
|
||||
, 0x3e, 0x00, 0x00, 0x0c, 0x3f, 0x3f, 0x15, 0x00, 0x00, 0x07, 0x3e, 0x3d, 0x3c, 0x3b, 0x3c, 0x3e
|
||||
, 0x00, 0x00, 0x0d, 0x3f, 0x3f, 0x17, 0x00, 0x00, 0x1a, 0x3f, 0x3f, 0x0b, 0x00, 0x00, 0x0b, 0x3f
|
||||
, 0x00, 0x00, 0x18, 0x3f, 0x00, 0x00, 0xff, 0xfd, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff
|
||||
, 0xff, 0xff, 0x54, 0x06, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x0f, 0xc5, 0xff, 0xff, 0x14, 0xc5, 0x0c
|
||||
, 0x00, 0x00, 0x1b, 0x03, 0x97, 0xff, 0xff, 0x12, 0x97, 0x03, 0x00, 0x00, 0x03, 0x01, 0x00, 0x00
|
||||
, 0x18, 0x36, 0xd4, 0xff, 0xff, 0x0e, 0xd3, 0x36, 0x00, 0x00, 0x04, 0x01, 0x01, 0x00, 0x00, 0x00
|
||||
, 0x1a, 0x51, 0xc8, 0xff, 0xff, 0x0a, 0xc6, 0x51, 0x00, 0x00, 0x05, 0x01, 0x00, 0x00, 0x15, 0x01
|
||||
, 0x00, 0x00, 0x06, 0x12, 0x5a, 0x9f, 0xd3, 0xd9, 0xfd, 0xfd, 0x00, 0xd9, 0xd3, 0x9f, 0x5a, 0x12
|
||||
, 0x00, 0x00, 0xff, 0xf7, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
||||
};
|
||||
|
||||
static const BYTE rgb_scanline_data[] =
|
||||
{
|
||||
0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00,
|
||||
0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00,
|
||||
0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00,
|
||||
0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00,
|
||||
0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00,
|
||||
0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00,
|
||||
0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00,
|
||||
0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00,
|
||||
0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00,
|
||||
0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00,
|
||||
0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00,
|
||||
0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF,
|
||||
0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF,
|
||||
0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF,
|
||||
0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF,
|
||||
0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF,
|
||||
|
||||
0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00,
|
||||
0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00,
|
||||
0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00,
|
||||
0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00,
|
||||
0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00,
|
||||
0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00,
|
||||
0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00,
|
||||
0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00,
|
||||
0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00,
|
||||
0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00,
|
||||
0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00,
|
||||
0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF,
|
||||
0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF,
|
||||
0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF,
|
||||
0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF,
|
||||
0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF
|
||||
};
|
||||
|
||||
int init_nsc_suite(void)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
int clean_nsc_suite(void)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
int add_nsc_suite(void)
|
||||
{
|
||||
add_test_suite(nsc);
|
||||
|
||||
add_test_function(nsc_decode);
|
||||
add_test_function(nsc_encode);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
void test_nsc_decode(void)
|
||||
{
|
||||
int i;
|
||||
NSC_CONTEXT* context;
|
||||
|
||||
context = nsc_context_new();
|
||||
nsc_process_message(context, 32, 15, 10, (BYTE*) nsc_data, sizeof(nsc_data));
|
||||
/*winpr_HexDump(context->bmpdata, 15 * 10 * 4);*/
|
||||
for (i = 0; i < 30000; i++)
|
||||
{
|
||||
nsc_process_message(context, 32, 54, 44, (BYTE*) nsc_stress_data, sizeof(nsc_stress_data));
|
||||
}
|
||||
nsc_context_free(context);
|
||||
}
|
||||
|
||||
void test_nsc_encode(void)
|
||||
{
|
||||
int i;
|
||||
BYTE* rgb_data;
|
||||
wStream* enc_stream;
|
||||
NSC_CONTEXT* context;
|
||||
|
||||
rgb_data = (BYTE *) malloc(64 * 64 * 3);
|
||||
for (i = 0; i < 64; i++)
|
||||
memcpy(rgb_data + i * 64 * 3, rgb_scanline_data, 64 * 3);
|
||||
|
||||
context = nsc_context_new();
|
||||
nsc_context_set_pixel_format(context, RDP_PIXEL_FORMAT_R8G8B8);
|
||||
|
||||
enc_stream = stream_new(65536);
|
||||
stream_clear(enc_stream);
|
||||
|
||||
for (i = 0; i < 30000; i++)
|
||||
{
|
||||
Stream_SetPosition(enc_stream, 0);
|
||||
nsc_compose_message(context, enc_stream, rgb_data, 64, 64, 64 * 3);
|
||||
}
|
||||
/*winpr_HexDump(Stream_Buffer(enc_stream), Stream_GetPosition(enc_stream));*/
|
||||
nsc_process_message(context, 32, 64, 64, Stream_Buffer(enc_stream), Stream_GetPosition(enc_stream));
|
||||
/*winpr_HexDump(context->bmpdata, 64 * 64 * 4);*/
|
||||
stream_free(enc_stream);
|
||||
|
||||
nsc_context_free(context);
|
||||
}
|
|
@ -1,27 +0,0 @@
|
|||
/**
|
||||
* FreeRDP: A Remote Desktop Protocol Implementation
|
||||
* NSCodec Library Unit Tests
|
||||
*
|
||||
* Copyright 2012 Vic Lee
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
#include "test_freerdp.h"
|
||||
|
||||
int init_nsc_suite(void);
|
||||
int clean_nsc_suite(void);
|
||||
int add_nsc_suite(void);
|
||||
|
||||
void test_nsc_decode(void);
|
||||
void test_nsc_encode(void);
|
|
@ -1,693 +0,0 @@
|
|||
/**
|
||||
* FreeRDP: A Remote Desktop Protocol Implementation
|
||||
* NTLM Security Package Unit Tests
|
||||
*
|
||||
* Copyright 2011-2012 Marc-Andre Moreau <marcandre.moreau@gmail.com>
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
#include <winpr/sspi.h>
|
||||
#include <freerdp/freerdp.h>
|
||||
|
||||
#include "winpr/libwinpr/sspi/NTLM/ntlm.h"
|
||||
#include "winpr/libwinpr/sspi/NTLM/ntlm_compute.h"
|
||||
#include "winpr/libwinpr/sspi/NTLM/ntlm_message.h"
|
||||
|
||||
#include "test_ntlm.h"
|
||||
|
||||
int init_ntlm_suite(void)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
int clean_ntlm_suite(void)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
int add_ntlm_suite(void)
|
||||
{
|
||||
add_test_suite(ntlm);
|
||||
|
||||
#if 0
|
||||
add_test_function(ntlm_compute_ntlm_hash);
|
||||
add_test_function(ntlm_compute_ntlm_v2_hash);
|
||||
add_test_function(ntlm_compute_lm_response);
|
||||
add_test_function(ntlm_compute_lm_v2_response);
|
||||
add_test_function(ntlm_compute_ntlm_v2_response);
|
||||
add_test_function(ntlm_generate_client_signing_key);
|
||||
add_test_function(ntlm_generate_server_signing_key);
|
||||
add_test_function(ntlm_generate_client_sealing_key);
|
||||
add_test_function(ntlm_generate_server_sealing_key);
|
||||
add_test_function(ntlm_encrypt_random_session_key);
|
||||
add_test_function(ntlm_compute_message_integrity_check);
|
||||
add_test_function(ntlm_encrypt_message);
|
||||
add_test_function(ntlm_decrypt_message);
|
||||
#endif
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
#if 0
|
||||
void test_ntlm_compute_ntlm_hash(void)
|
||||
{
|
||||
int i;
|
||||
NTLM_CONTEXT* context;
|
||||
int ntlm_hash_good;
|
||||
char ntlm_hash[16];
|
||||
char password[] = "Password";
|
||||
char expected_ntlm_hash[16] = "\xa4\xf4\x9c\x40\x65\x10\xbd\xca\xb6\x82\x4e\xe7\xc3\x0f\xd8\x52";
|
||||
|
||||
context = ntlm_ContextNew();
|
||||
ntlm_set_password(context, password);
|
||||
|
||||
ntlm_compute_ntlm_hash((UINT16*) &password, ntlm_hash);
|
||||
|
||||
ntlm_hash_good = 1;
|
||||
|
||||
for (i = 0; i < 16; i++)
|
||||
{
|
||||
if (ntlm_hash[i] != expected_ntlm_hash[i])
|
||||
ntlm_hash_good = 0;
|
||||
}
|
||||
|
||||
CU_ASSERT(ntlm_hash_good == 1);
|
||||
}
|
||||
|
||||
void test_ntlm_compute_ntlm_v2_hash(void)
|
||||
{
|
||||
int i;
|
||||
NTLM_CONTEXT* ntlm;
|
||||
int ntlm_v2_hash_good;
|
||||
char ntlm_v2_hash[16];
|
||||
|
||||
char username[] = "User";
|
||||
char password[] = "Password";
|
||||
char domain[] = "Domain";
|
||||
char expected_ntlm_v2_hash[16] = "\x0c\x86\x8a\x40\x3b\xfd\x7a\x93\xa3\x00\x1e\xf2\x2e\xf0\x2e\x3f";
|
||||
|
||||
ntlm = ntlm_client_new();
|
||||
ntlm_set_password(ntlm, password);
|
||||
ntlm_set_username(ntlm, username);
|
||||
ntlm_set_domain(ntlm, domain);
|
||||
|
||||
ntlm_compute_ntlm_v2_hash(ntlm, ntlm_v2_hash);
|
||||
|
||||
ntlm_v2_hash_good = 1;
|
||||
|
||||
for (i = 0; i < 16; i++)
|
||||
{
|
||||
if (ntlm_v2_hash[i] != expected_ntlm_v2_hash[i])
|
||||
ntlm_v2_hash_good = 0;
|
||||
}
|
||||
|
||||
CU_ASSERT(ntlm_v2_hash_good == 1);
|
||||
}
|
||||
|
||||
void test_ntlm_compute_lm_response(void)
|
||||
{
|
||||
int i;
|
||||
int lm_response_good;
|
||||
char lm_response[24];
|
||||
char password[] = "SecREt01";
|
||||
char challenge[] = "\x01\x23\x45\x67\x89\xAB\xCD\xEF";
|
||||
char expected_lm_response[24] = "\xC3\x37\xCD\x5C\xBD\x44\xFC\x97\x82\xA6\x67\xAF\x6D\x42\x7C\x6D\xE6\x7C\x20\xC2\xD3\xE7\x7C\x56";
|
||||
|
||||
ntlm_compute_lm_response(password, challenge, lm_response);
|
||||
|
||||
lm_response_good = 1;
|
||||
|
||||
for (i = 0; i < 24; i++)
|
||||
{
|
||||
if (lm_response[i] != expected_lm_response[i])
|
||||
lm_response_good = 0;
|
||||
}
|
||||
|
||||
CU_ASSERT(lm_response_good == 1);
|
||||
}
|
||||
|
||||
void test_ntlm_compute_lm_v2_response(void)
|
||||
{
|
||||
int i;
|
||||
char *p;
|
||||
NTLM_CONTEXT* ntlm;
|
||||
int lm_v2_response_good;
|
||||
char password[] = "password";
|
||||
char username[] = "username";
|
||||
char domain[] = "win7";
|
||||
char server_challenge[8] = "\x26\x6e\xcd\x75\xaa\x41\xe7\x6f";
|
||||
char lm_client_challenge[8] = "\x47\xa2\xe5\xcf\x27\xf7\x3c\x43";
|
||||
char expected_lm_v2_response[24] = "\xa0\x98\x01\x10\x19\xbb\x5d\x00\xf6\xbe\x00\x33\x90\x20\x34\xb3\x47\xa2\xe5\xcf\x27\xf7\x3c\x43";
|
||||
|
||||
ntlm = ntlm_client_new();
|
||||
ntlm_set_password(ntlm, password);
|
||||
ntlm_set_username(ntlm, username);
|
||||
ntlm_set_domain(ntlm, domain);
|
||||
|
||||
memcpy(ntlm->server_challenge, server_challenge, 8);
|
||||
memcpy(ntlm->client_challenge, lm_client_challenge, 8);
|
||||
|
||||
ntlm_compute_lm_v2_response(ntlm);
|
||||
|
||||
p = (char*) ntlm->lm_challenge_response.data;
|
||||
|
||||
lm_v2_response_good = 1;
|
||||
|
||||
for (i = 0; i < 24; i++)
|
||||
{
|
||||
if (p[i] != expected_lm_v2_response[i])
|
||||
lm_v2_response_good = 0;
|
||||
}
|
||||
|
||||
CU_ASSERT(lm_v2_response_good == 1);
|
||||
}
|
||||
|
||||
void test_ntlm_compute_ntlm_v2_response(void)
|
||||
{
|
||||
int i;
|
||||
char* p;
|
||||
NTLM_CONTEXT* ntlm;
|
||||
int session_base_key_good;
|
||||
int lm_challenge_response_good;
|
||||
int nt_challenge_response_good;
|
||||
char password[] = "password";
|
||||
char username[] = "username";
|
||||
char domain[] = "win7";
|
||||
char timestamp[8] = "\xc3\x83\xa2\x1c\x6c\xb0\xcb\x01";
|
||||
char client_challenge[8] = "\x47\xa2\xe5\xcf\x27\xf7\x3c\x43";
|
||||
char server_challenge[8] = "\x26\x6e\xcd\x75\xaa\x41\xe7\x6f";
|
||||
|
||||
char target_info_data[68] =
|
||||
"\x02\x00\x08\x00\x57\x00\x49\x00\x4e\x00\x37\x00"
|
||||
"\x01\x00\x08\x00\x57\x00\x49\x00\x4e\x00\x37\x00"
|
||||
"\x04\x00\x08\x00\x77\x00\x69\x00\x6e\x00\x37\x00"
|
||||
"\x03\x00\x08\x00\x77\x00\x69\x00\x6e\x00\x37\x00"
|
||||
"\x07\x00\x08\x00\xa9\x8d\x9b\x1a\x6c\xb0\xcb\x01"
|
||||
"\x00\x00\x00\x00\x00\x00\x00\x00";
|
||||
|
||||
char expected_nt_challenge_response[112] =
|
||||
"\x01\x4a\xd0\x8c\x24\xb4\x90\x74\x39\x68\xe8\xbd\x0d\x2b\x70\x10"
|
||||
"\x01\x01\x00\x00\x00\x00\x00\x00\xc3\x83\xa2\x1c\x6c\xb0\xcb\x01"
|
||||
"\x47\xa2\xe5\xcf\x27\xf7\x3c\x43\x00\x00\x00\x00\x02\x00\x08\x00"
|
||||
"\x57\x00\x49\x00\x4e\x00\x37\x00\x01\x00\x08\x00\x57\x00\x49\x00"
|
||||
"\x4e\x00\x37\x00\x04\x00\x08\x00\x77\x00\x69\x00\x6e\x00\x37\x00"
|
||||
"\x03\x00\x08\x00\x77\x00\x69\x00\x6e\x00\x37\x00\x07\x00\x08\x00"
|
||||
"\xa9\x8d\x9b\x1a\x6c\xb0\xcb\x01\x00\x00\x00\x00\x00\x00\x00\x00";
|
||||
|
||||
char expected_lm_challenge_response[24] =
|
||||
"\xa0\x98\x01\x10\x19\xbb\x5d\x00\xf6\xbe\x00\x33\x90\x20\x34\xb3"
|
||||
"\x47\xa2\xe5\xcf\x27\xf7\x3c\x43";
|
||||
|
||||
char expected_session_base_key[16] =
|
||||
"\x6e\xf1\x6b\x79\x88\xf2\x3d\x7e\x54\x2a\x1a\x38\x4e\xa0\x6b\x52";
|
||||
|
||||
ntlm = ntlm_client_new();
|
||||
ntlm_set_password(ntlm, password);
|
||||
ntlm_set_username(ntlm, username);
|
||||
ntlm_set_domain(ntlm, domain);
|
||||
|
||||
ntlm->av_pairs->Timestamp.value = malloc(8);
|
||||
memset(ntlm->av_pairs->Timestamp.value, 0, 8);
|
||||
ntlm->av_pairs->Timestamp.length = 8;
|
||||
|
||||
memcpy(ntlm->timestamp, timestamp, 8);
|
||||
memcpy(ntlm->server_challenge, server_challenge, 8);
|
||||
memcpy(ntlm->client_challenge, client_challenge, 8);
|
||||
|
||||
ntlm->target_info.data = target_info_data;
|
||||
ntlm->target_info.length = sizeof(target_info_data);
|
||||
|
||||
ntlm_compute_lm_v2_response(ntlm);
|
||||
ntlm_compute_ntlm_v2_response(ntlm);
|
||||
|
||||
session_base_key_good = 1;
|
||||
p = (char*) ntlm->session_base_key;
|
||||
|
||||
for (i = 0; i < 16; i++)
|
||||
{
|
||||
if (p[i] != expected_session_base_key[i])
|
||||
session_base_key_good = 0;
|
||||
}
|
||||
|
||||
CU_ASSERT(session_base_key_good == 1);
|
||||
|
||||
lm_challenge_response_good = 1;
|
||||
p = (char*) ntlm->lm_challenge_response.data;
|
||||
|
||||
for (i = 0; i < 24; i++)
|
||||
{
|
||||
if (p[i] != expected_lm_challenge_response[i])
|
||||
lm_challenge_response_good = 0;
|
||||
}
|
||||
|
||||
CU_ASSERT(lm_challenge_response_good == 1);
|
||||
|
||||
nt_challenge_response_good = 1;
|
||||
p = (char*) ntlm->nt_challenge_response.data;
|
||||
|
||||
for (i = 0; i < 84; i++)
|
||||
{
|
||||
if (p[i] != expected_nt_challenge_response[i])
|
||||
nt_challenge_response_good = 0;
|
||||
}
|
||||
|
||||
CU_ASSERT(nt_challenge_response_good == 1);
|
||||
}
|
||||
|
||||
void test_ntlm_generate_client_signing_key(void)
|
||||
{
|
||||
int i;
|
||||
NTLM_CONTEXT* ntlm;
|
||||
int client_signing_key_good;
|
||||
BYTE exported_session_key[16] = "\x89\x90\x0d\x5d\x2c\x53\x2b\x36\x31\xcc\x1a\x46\xce\xa9\x34\xf1";
|
||||
BYTE expected_client_signing_key[16] = "\xbf\x5e\x42\x76\x55\x68\x38\x97\x45\xd3\xb4\x9f\x5e\x2f\xbc\x89";
|
||||
|
||||
ntlm = ntlm_client_new();
|
||||
memcpy(ntlm->exported_session_key, exported_session_key, sizeof(exported_session_key));
|
||||
|
||||
ntlm_generate_client_signing_key(ntlm);
|
||||
|
||||
client_signing_key_good = 1;
|
||||
|
||||
for (i = 0; i < 16; i++)
|
||||
{
|
||||
if (ntlm->client_signing_key[i] != expected_client_signing_key[i])
|
||||
client_signing_key_good = 0;
|
||||
}
|
||||
|
||||
CU_ASSERT(client_signing_key_good == 1);
|
||||
}
|
||||
|
||||
void test_ntlm_generate_server_signing_key(void)
|
||||
{
|
||||
int i;
|
||||
NTLM_CONTEXT* ntlm;
|
||||
int server_signing_key_good;
|
||||
BYTE exported_session_key[16] = "\x89\x90\x0d\x5d\x2c\x53\x2b\x36\x31\xcc\x1a\x46\xce\xa9\x34\xf1";
|
||||
BYTE expected_server_signing_key[16] = "\x9b\x3b\x64\x89\xda\x84\x52\x17\xd5\xc2\x6e\x90\x16\x3b\x42\x11";
|
||||
|
||||
ntlm = ntlm_client_new();
|
||||
memcpy(ntlm->exported_session_key, exported_session_key, sizeof(exported_session_key));
|
||||
|
||||
ntlm_generate_server_signing_key(ntlm);
|
||||
|
||||
server_signing_key_good = 1;
|
||||
|
||||
for (i = 0; i < 16; i++)
|
||||
{
|
||||
if (ntlm->server_signing_key[i] != expected_server_signing_key[i])
|
||||
server_signing_key_good = 0;
|
||||
}
|
||||
|
||||
CU_ASSERT(server_signing_key_good == 1);
|
||||
}
|
||||
|
||||
void test_ntlm_generate_client_sealing_key(void)
|
||||
{
|
||||
int i;
|
||||
NTLM_CONTEXT* ntlm;
|
||||
int client_sealing_key_good;
|
||||
BYTE exported_session_key[16] = "\x89\x90\x0d\x5d\x2c\x53\x2b\x36\x31\xcc\x1a\x46\xce\xa9\x34\xf1";
|
||||
BYTE expected_client_sealing_key[16] = "\xca\x41\xcd\x08\x48\x07\x22\x6e\x0d\x84\xc3\x88\xa5\x07\xa9\x73";
|
||||
|
||||
ntlm = ntlm_client_new();
|
||||
memcpy(ntlm->exported_session_key, exported_session_key, sizeof(exported_session_key));
|
||||
|
||||
ntlm_generate_client_sealing_key(ntlm);
|
||||
|
||||
client_sealing_key_good = 1;
|
||||
|
||||
for (i = 0; i < 16; i++)
|
||||
{
|
||||
if (ntlm->client_sealing_key[i] != expected_client_sealing_key[i])
|
||||
client_sealing_key_good = 0;
|
||||
}
|
||||
|
||||
CU_ASSERT(client_sealing_key_good == 1);
|
||||
}
|
||||
|
||||
void test_ntlm_generate_server_sealing_key(void)
|
||||
{
|
||||
int i;
|
||||
NTLM_CONTEXT* ntlm;
|
||||
int server_sealing_key_good;
|
||||
BYTE exported_session_key[16] = "\x89\x90\x0d\x5d\x2c\x53\x2b\x36\x31\xcc\x1a\x46\xce\xa9\x34\xf1";
|
||||
BYTE expected_server_sealing_key[16] = "\x14\xb7\x1d\x06\x2c\x68\x2e\xad\x4b\x0e\x95\x23\x70\x91\x98\x90";
|
||||
|
||||
ntlm = ntlm_client_new();
|
||||
memcpy(ntlm->exported_session_key, exported_session_key, sizeof(exported_session_key));
|
||||
|
||||
ntlm_generate_server_sealing_key(ntlm);
|
||||
|
||||
server_sealing_key_good = 1;
|
||||
|
||||
for (i = 0; i < 16; i++)
|
||||
{
|
||||
if (ntlm->server_sealing_key[i] != expected_server_sealing_key[i])
|
||||
server_sealing_key_good = 0;
|
||||
}
|
||||
|
||||
CU_ASSERT(server_sealing_key_good == 1);
|
||||
}
|
||||
|
||||
void test_ntlm_encrypt_random_session_key(void)
|
||||
{
|
||||
int i;
|
||||
NTLM_CONTEXT* ntlm;
|
||||
int encrypted_random_session_key_good;
|
||||
BYTE key_exchange_key[16] = "\x6e\xf1\x6b\x79\x88\xf2\x3d\x7e\x54\x2a\x1a\x38\x4e\xa0\x6b\x52";
|
||||
BYTE exported_session_key[16] = "\x89\x90\x0d\x5d\x2c\x53\x2b\x36\x31\xcc\x1a\x46\xce\xa9\x34\xf1";
|
||||
BYTE expected_encrypted_random_session_key[16] = "\xb1\xd2\x45\x42\x0f\x37\x9a\x0e\xe0\xce\x77\x40\x10\x8a\xda\xba";
|
||||
|
||||
ntlm = ntlm_client_new();
|
||||
memcpy(ntlm->key_exchange_key, key_exchange_key, 16);
|
||||
memcpy(ntlm->exported_session_key, exported_session_key, 16);
|
||||
memcpy(ntlm->random_session_key, exported_session_key, 16);
|
||||
|
||||
ntlm_encrypt_random_session_key(ntlm);
|
||||
|
||||
encrypted_random_session_key_good = 1;
|
||||
|
||||
for (i = 0; i < 16; i++)
|
||||
{
|
||||
if (ntlm->encrypted_random_session_key[i] != expected_encrypted_random_session_key[i])
|
||||
encrypted_random_session_key_good = 0;
|
||||
}
|
||||
|
||||
CU_ASSERT(encrypted_random_session_key_good == 1);
|
||||
}
|
||||
|
||||
void test_ntlm_compute_message_integrity_check(void)
|
||||
{
|
||||
int i;
|
||||
NTLM_CONTEXT* ntlm;
|
||||
int message_integrity_check_good;
|
||||
BYTE exported_session_key[16] = "\xfd\x35\x59\x39\x23\x81\x29\xcd\xb8\x1c\x11\x04\xd7\x54\x4f\xd4";
|
||||
BYTE expected_message_integrity_check[16] = "\x81\x37\x56\xcf\x19\x76\x71\xf2\xc0\x3f\x95\x87\xe3\x30\xe6\x9b";
|
||||
|
||||
BYTE negotiate_message_data[40] =
|
||||
"\x4e\x54\x4c\x4d\x53\x53\x50\x00\x01\x00\x00\x00\xb7\x82\x08\xe2"
|
||||
"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
|
||||
"\x06\x01\xb0\x1d\x00\x00\x00\x0f";
|
||||
|
||||
BYTE challenge_message_data[278] =
|
||||
"\x4e\x54\x4c\x4d\x53\x53\x50\x00\x02\x00\x00\x00\x16\x00\x16\x00"
|
||||
"\x38\x00\x00\x00\x35\x82\x89\xe2\xed\x75\x9b\x8d\x1c\x2e\x3e\xc8"
|
||||
"\x00\x00\x00\x00\x00\x00\x00\x00\xc8\x00\xc8\x00\x4e\x00\x00\x00"
|
||||
"\x06\x01\xb0\x1d\x00\x00\x00\x0f\x41\x00\x57\x00\x41\x00\x4b\x00"
|
||||
"\x45\x00\x43\x00\x4f\x00\x44\x00\x49\x00\x4e\x00\x47\x00\x02\x00"
|
||||
"\x16\x00\x41\x00\x57\x00\x41\x00\x4b\x00\x45\x00\x43\x00\x4f\x00"
|
||||
"\x44\x00\x49\x00\x4e\x00\x47\x00\x01\x00\x10\x00\x57\x00\x49\x00"
|
||||
"\x4e\x00\x32\x00\x4b\x00\x38\x00\x52\x00\x32\x00\x04\x00\x24\x00"
|
||||
"\x61\x00\x77\x00\x61\x00\x6b\x00\x65\x00\x63\x00\x6f\x00\x64\x00"
|
||||
"\x69\x00\x6e\x00\x67\x00\x2e\x00\x61\x00\x74\x00\x68\x00\x2e\x00"
|
||||
"\x63\x00\x78\x00\x03\x00\x36\x00\x57\x00\x49\x00\x4e\x00\x32\x00"
|
||||
"\x4b\x00\x38\x00\x52\x00\x32\x00\x2e\x00\x61\x00\x77\x00\x61\x00"
|
||||
"\x6b\x00\x65\x00\x63\x00\x6f\x00\x64\x00\x69\x00\x6e\x00\x67\x00"
|
||||
"\x2e\x00\x61\x00\x74\x00\x68\x00\x2e\x00\x63\x00\x78\x00\x05\x00"
|
||||
"\x24\x00\x61\x00\x77\x00\x61\x00\x6b\x00\x65\x00\x63\x00\x6f\x00"
|
||||
"\x64\x00\x69\x00\x6e\x00\x67\x00\x2e\x00\x61\x00\x74\x00\x68\x00"
|
||||
"\x2e\x00\x63\x00\x78\x00\x07\x00\x08\x00\xd1\x12\x78\x10\xde\xd2"
|
||||
"\xcb\x01\x00\x00\x00\x00";
|
||||
|
||||
BYTE authenticate_message_data[504] =
|
||||
"\x4e\x54\x4c\x4d\x53\x53\x50\x00\x03\x00\x00\x00\x18\x00\x18\x00"
|
||||
"\x98\x00\x00\x00\x38\x01\x38\x01\xb0\x00\x00\x00\x16\x00\x16\x00"
|
||||
"\x58\x00\x00\x00\x1a\x00\x1a\x00\x6e\x00\x00\x00\x10\x00\x10\x00"
|
||||
"\x88\x00\x00\x00\x10\x00\x10\x00\xe8\x01\x00\x00\x35\x82\x88\xe2"
|
||||
"\x06\x01\xb0\x1d\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x00\x00\x00"
|
||||
"\x00\x00\x00\x00\x00\x00\x00\x00\x41\x00\x57\x00\x41\x00\x4b\x00"
|
||||
"\x45\x00\x43\x00\x4f\x00\x44\x00\x49\x00\x4e\x00\x47\x00\x41\x00"
|
||||
"\x64\x00\x6d\x00\x69\x00\x6e\x00\x69\x00\x73\x00\x74\x00\x72\x00"
|
||||
"\x61\x00\x74\x00\x6f\x00\x72\x00\x57\x00\x49\x00\x4e\x00\x44\x00"
|
||||
"\x4f\x00\x57\x00\x53\x00\x37\x00\x00\x00\x00\x00\x00\x00\x00\x00"
|
||||
"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
|
||||
"\xff\xd9\x76\x1a\x97\xa6\xe8\x47\x4c\x99\xd0\xe4\x68\xd1\x02\x36"
|
||||
"\x01\x01\x00\x00\x00\x00\x00\x00\xd1\x12\x78\x10\xde\xd2\xcb\x01"
|
||||
"\x53\xca\xac\xf2\x3f\xcb\xcf\x09\x00\x00\x00\x00\x02\x00\x16\x00"
|
||||
"\x41\x00\x57\x00\x41\x00\x4b\x00\x45\x00\x43\x00\x4f\x00\x44\x00"
|
||||
"\x49\x00\x4e\x00\x47\x00\x01\x00\x10\x00\x57\x00\x49\x00\x4e\x00"
|
||||
"\x32\x00\x4b\x00\x38\x00\x52\x00\x32\x00\x04\x00\x24\x00\x61\x00"
|
||||
"\x77\x00\x61\x00\x6b\x00\x65\x00\x63\x00\x6f\x00\x64\x00\x69\x00"
|
||||
"\x6e\x00\x67\x00\x2e\x00\x61\x00\x74\x00\x68\x00\x2e\x00\x63\x00"
|
||||
"\x78\x00\x03\x00\x36\x00\x57\x00\x49\x00\x4e\x00\x32\x00\x4b\x00"
|
||||
"\x38\x00\x52\x00\x32\x00\x2e\x00\x61\x00\x77\x00\x61\x00\x6b\x00"
|
||||
"\x65\x00\x63\x00\x6f\x00\x64\x00\x69\x00\x6e\x00\x67\x00\x2e\x00"
|
||||
"\x61\x00\x74\x00\x68\x00\x2e\x00\x63\x00\x78\x00\x05\x00\x24\x00"
|
||||
"\x61\x00\x77\x00\x61\x00\x6b\x00\x65\x00\x63\x00\x6f\x00\x64\x00"
|
||||
"\x69\x00\x6e\x00\x67\x00\x2e\x00\x61\x00\x74\x00\x68\x00\x2e\x00"
|
||||
"\x63\x00\x78\x00\x07\x00\x08\x00\xd1\x12\x78\x10\xde\xd2\xcb\x01"
|
||||
"\x06\x00\x04\x00\x02\x00\x00\x00\x08\x00\x30\x00\x30\x00\x00\x00"
|
||||
"\x00\x00\x00\x00\x01\x00\x00\x00\x00\x20\x00\x00\x61\x53\xad\x3f"
|
||||
"\x58\xf3\x5d\x83\xa2\x00\xbe\x43\x11\x77\xc9\xcf\x96\x31\xe1\xc3"
|
||||
"\x3f\x76\x2f\x38\x81\xb4\x45\xf9\xb4\xbb\x32\xcf\x00\x00\x00\x00"
|
||||
"\x00\x00\x00\x00\x00\x00\x00\x00\xd5\x82\xff\x1e\xb6\xf8\x4a\x1c"
|
||||
"\x08\x78\x69\x9f\xa8\x84\x32\xaa";
|
||||
|
||||
ntlm = ntlm_client_new();
|
||||
memcpy(ntlm->exported_session_key, exported_session_key, 16);
|
||||
|
||||
ntlm->negotiate_message.data = (void*) negotiate_message_data;
|
||||
ntlm->negotiate_message.length = sizeof(negotiate_message_data);
|
||||
|
||||
ntlm->challenge_message.data = (void*) challenge_message_data;
|
||||
ntlm->challenge_message.length = sizeof(challenge_message_data);
|
||||
|
||||
ntlm->authenticate_message.data = (void*) authenticate_message_data;
|
||||
ntlm->authenticate_message.length = sizeof(authenticate_message_data);
|
||||
|
||||
ntlm_compute_message_integrity_check(ntlm);
|
||||
|
||||
message_integrity_check_good = 1;
|
||||
|
||||
for (i = 0; i < 16; i++)
|
||||
{
|
||||
if (ntlm->message_integrity_check[i] != expected_message_integrity_check[i])
|
||||
message_integrity_check_good = 0;
|
||||
}
|
||||
|
||||
CU_ASSERT(message_integrity_check_good == 1);
|
||||
}
|
||||
|
||||
void test_ntlm_encrypt_message(void)
|
||||
{
|
||||
int i;
|
||||
BYTE* p;
|
||||
NTLM_CONTEXT* ntlm;
|
||||
rdpBlob public_key;
|
||||
rdpBlob ts_credentials;
|
||||
rdpBlob encrypted_public_key;
|
||||
rdpBlob encrypted_ts_credentials;
|
||||
BYTE public_key_signature[16];
|
||||
BYTE ts_credentials_signature[16];
|
||||
int encrypted_public_key_good;
|
||||
int public_key_signature_good;
|
||||
int encrypted_ts_credentials_good;
|
||||
int ts_credentials_signature_good;
|
||||
BYTE client_signing_key[16] = "\xbf\x5e\x42\x76\x55\x68\x38\x97\x45\xd3\xb4\x9f\x5e\x2f\xbc\x89";
|
||||
BYTE client_sealing_key[16] = "\xca\x41\xcd\x08\x48\x07\x22\x6e\x0d\x84\xc3\x88\xa5\x07\xa9\x73";
|
||||
|
||||
BYTE public_key_data[270] =
|
||||
"\x30\x82\x01\x0a\x02\x82\x01\x01\x00\xc2\x1c\x54\xaf\x07\xf1\x16"
|
||||
"\x97\xc3\x0f\x6b\xa6\x33\x2e\xdd\x1e\xe4\xb2\x9c\xe4\x12\x7f\xda"
|
||||
"\x58\x21\xc0\x68\xe6\xd3\xf5\x20\x1c\xba\x06\x64\x7d\x7f\x44\xb5"
|
||||
"\xbf\xe3\xd5\xc7\xa4\x86\x8b\xbc\x6f\xca\x25\x78\xdf\xeb\xcf\x5a"
|
||||
"\x96\xf6\xc7\x00\xbe\x7d\x6d\x06\x1f\x1d\x7f\x30\xaf\xc4\x59\x4f"
|
||||
"\x91\x6d\x97\xe8\x55\x8b\x39\x01\x68\x50\x59\xbb\xe4\x65\x71\x32"
|
||||
"\x76\x9e\x1b\xcf\x58\xfc\x52\xd9\x43\x01\x8e\x33\xc1\x74\x14\xbc"
|
||||
"\x1f\x5c\x1d\xdb\x0e\xbd\xbb\x37\x50\x13\x78\x57\x93\x34\x3b\x73"
|
||||
"\xc9\x5c\x44\x1f\x16\xe6\x2e\x00\x57\xa3\xe6\x5c\x6a\x2c\x90\xdc"
|
||||
"\xa3\x6d\x7f\x92\xdf\x2f\xe5\x97\xae\x3b\x07\x23\x03\x91\x71\xd4"
|
||||
"\xf2\x50\x3a\x3a\xb9\xde\x1f\xb1\xd5\xa1\x38\x7c\xf7\x07\x49\x83"
|
||||
"\x68\xaa\xdf\xad\xfd\x1a\xe9\xb5\x0a\x1e\x8b\xf3\x88\xae\x3f\x32"
|
||||
"\xd0\x3b\xd8\xc7\x50\x11\xf7\xad\x3b\x11\xe6\x92\xbb\x2a\x73\x8b"
|
||||
"\xed\xfd\x45\x29\x50\xbf\x0d\x1e\x47\xfd\x61\x1d\x18\x27\x58\xa2"
|
||||
"\xb2\x1f\xb5\x2d\x84\x18\x2f\x88\x8e\x7f\x70\xed\x4e\xbf\x14\x5d"
|
||||
"\x1b\xbc\x0b\x47\x66\x16\x3a\x7b\x6d\x8e\xcf\x55\xe8\x8c\x8a\xfe"
|
||||
"\x24\xce\x19\x99\xc3\x5a\xe5\xc2\xf3\x02\x03\x01\x00\x01";
|
||||
|
||||
BYTE expected_encrypted_public_key[270] =
|
||||
"\x27\x29\x73\xa9\xfa\x46\x17\x3c\x74\x14\x45\x2a\xd1\xe2\x92\xa1"
|
||||
"\xc6\x0a\x30\xd4\xcc\xe0\x92\xf6\xb3\x20\xb3\xa0\xf1\x38\xb1\xf4"
|
||||
"\xe5\x96\xdf\xa1\x65\x5b\xd6\x0c\x2a\x86\x99\xcc\x72\x80\xbd\xe9"
|
||||
"\x19\x1f\x42\x53\xf6\x84\xa3\xda\x0e\xec\x10\x29\x15\x52\x5c\x77"
|
||||
"\x40\xc8\x3d\x44\x01\x34\xb6\x0a\x75\x33\xc0\x25\x71\xd3\x25\x38"
|
||||
"\x3b\xfc\x3b\xa8\xcf\xba\x2b\xf6\x99\x0e\x5f\x4e\xa9\x16\x2b\x52"
|
||||
"\x9f\xbb\x76\xf8\x03\xfc\x11\x5e\x36\x83\xd8\x4c\x9a\xdc\x9d\x35"
|
||||
"\xe2\xc8\x63\xa9\x3d\x07\x97\x52\x64\x54\x72\x9e\x9a\x8c\x56\x79"
|
||||
"\x4a\x78\x91\x0a\x4c\x52\x84\x5a\x4a\xb8\x28\x0b\x2f\xe6\x89\x7d"
|
||||
"\x07\x3b\x7b\x6e\x22\xcc\x4c\xff\xf4\x10\x96\xf2\x27\x29\xa0\x76"
|
||||
"\x0d\x4c\x7e\x7a\x42\xe4\x1e\x6a\x95\x7d\x4c\xaf\xdb\x86\x49\x5c"
|
||||
"\xbf\xc2\x65\xb6\xf2\xed\xae\x8d\x57\xed\xf0\xd4\xcb\x7a\xbb\x23"
|
||||
"\xde\xe3\x43\xea\xb1\x02\xe3\xb4\x96\xe9\xe7\x48\x69\xb0\xaa\xec"
|
||||
"\x89\x38\x8b\xc2\xbd\xdd\xf7\xdf\xa1\x37\xe7\x34\x72\x7f\x91\x10"
|
||||
"\x14\x73\xfe\x32\xdc\xfe\x68\x2b\xc0\x08\xdf\x05\xf7\xbd\x46\x33"
|
||||
"\xfb\xc9\xfc\x89\xaa\x5d\x25\x49\xc8\x6e\x86\xee\xc2\xce\xc4\x8e"
|
||||
"\x85\x9f\xe8\x30\xb3\x86\x11\xd5\xb8\x34\x4a\xe0\x03\xe5";
|
||||
|
||||
BYTE expected_public_key_signature[16] =
|
||||
"\x01\x00\x00\x00\x91\x5e\xb0\x6e\x72\x82\x53\xae\x00\x00\x00\x00";
|
||||
|
||||
BYTE ts_credentials_data[65] =
|
||||
"\x30\x3f\xa0\x03\x02\x01\x01\xa1\x38\x04\x36\x30\x34\xa0\x0a\x04"
|
||||
"\x08\x77\x00\x69\x00\x6e\x00\x37\x00\xa1\x12\x04\x10\x75\x00\x73"
|
||||
"\x00\x65\x00\x72\x00\x6e\x00\x61\x00\x6d\x00\x65\x00\xa2\x12\x04"
|
||||
"\x10\x70\x00\x61\x00\x73\x00\x73\x00\x77\x00\x6f\x00\x72\x00\x64"
|
||||
"\x00";
|
||||
|
||||
BYTE expected_encrypted_ts_credentials[65] =
|
||||
"\xa8\x85\x7d\x11\xef\x92\xa0\xd6\xff\xee\xa1\xae\x6d\xc5\x2e\x4e"
|
||||
"\x65\x50\x28\x93\x75\x30\xe1\xc3\x37\xeb\xac\x1f\xdd\xf3\xe0\x92"
|
||||
"\xf6\x21\xbc\x8f\xa8\xd4\xe0\x5a\xa6\xff\xda\x09\x50\x24\x0d\x8f"
|
||||
"\x8f\xf4\x92\xfe\x49\x2a\x13\x52\xa6\x52\x75\x50\x8d\x3e\xe9\x6b"
|
||||
"\x57";
|
||||
|
||||
BYTE expected_ts_credentials_signature[16] =
|
||||
"\x01\x00\x00\x00\xb3\x2c\x3b\xa1\x36\xf6\x55\x71\x01\x00\x00\x00";
|
||||
|
||||
public_key.data = public_key_data;
|
||||
public_key.length = sizeof(public_key_data);
|
||||
|
||||
ntlm = ntlm_client_new();
|
||||
memcpy(ntlm->client_signing_key, client_signing_key, 16);
|
||||
memcpy(ntlm->client_sealing_key, client_sealing_key, 16);
|
||||
ntlm_init_rc4_seal_states(ntlm);
|
||||
|
||||
ntlm_encrypt_message(ntlm, &public_key, &encrypted_public_key, public_key_signature);
|
||||
|
||||
p = (BYTE*) encrypted_public_key.data;
|
||||
encrypted_public_key_good = 1;
|
||||
|
||||
for (i = 0; i < encrypted_public_key.length; i++)
|
||||
{
|
||||
if (p[i] != expected_encrypted_public_key[i])
|
||||
encrypted_public_key_good = 0;
|
||||
}
|
||||
|
||||
CU_ASSERT(encrypted_public_key_good == 1);
|
||||
|
||||
public_key_signature_good = 1;
|
||||
|
||||
for (i = 0; i < 16; i++)
|
||||
{
|
||||
if (public_key_signature[i] != expected_public_key_signature[i])
|
||||
public_key_signature_good = 0;
|
||||
}
|
||||
|
||||
CU_ASSERT(public_key_signature_good == 1);
|
||||
|
||||
ts_credentials.data = ts_credentials_data;
|
||||
ts_credentials.length = sizeof(ts_credentials_data);
|
||||
|
||||
ntlm_encrypt_message(ntlm, &ts_credentials, &encrypted_ts_credentials, ts_credentials_signature);
|
||||
|
||||
p = (BYTE*) encrypted_ts_credentials.data;
|
||||
encrypted_ts_credentials_good = 1;
|
||||
|
||||
for (i = 0; i < encrypted_ts_credentials.length; i++)
|
||||
{
|
||||
if (p[i] != expected_encrypted_ts_credentials[i])
|
||||
encrypted_ts_credentials_good = 0;
|
||||
}
|
||||
|
||||
CU_ASSERT(encrypted_ts_credentials_good == 1);
|
||||
|
||||
ts_credentials_signature_good = 1;
|
||||
|
||||
for (i = 0; i < 16; i++)
|
||||
{
|
||||
if (ts_credentials_signature[i] != expected_ts_credentials_signature[i])
|
||||
ts_credentials_signature_good = 0;
|
||||
}
|
||||
|
||||
CU_ASSERT(ts_credentials_signature_good == 1);
|
||||
}
|
||||
|
||||
void test_ntlm_decrypt_message(void)
|
||||
{
|
||||
int i;
|
||||
BYTE* p;
|
||||
NTLM_CONTEXT* ntlm;
|
||||
rdpBlob public_key;
|
||||
rdpBlob encrypted_public_key;
|
||||
int public_key_good;
|
||||
BYTE server_signing_key[16] = "\x9b\x3b\x64\x89\xda\x84\x52\x17\xd5\xc2\x6e\x90\x16\x3b\x42\x11";
|
||||
BYTE server_sealing_key[16] = "\x14\xb7\x1d\x06\x2c\x68\x2e\xad\x4b\x0e\x95\x23\x70\x91\x98\x90";
|
||||
|
||||
BYTE encrypted_public_key_data[270] =
|
||||
"\xc7\x51\xf4\x71\xd3\x9f\xb6\x50\xbe\xa8\xf6\x20\x77\xa1\xfc\xdd"
|
||||
"\x8e\x02\xf0\xa4\x6b\xba\x3f\x9d\x65\x9d\xab\x4a\x95\xc9\xb4\x38"
|
||||
"\x03\x87\x04\xb1\xfe\x42\xec\xfa\xfc\xaa\x85\xf1\x31\x2d\x26\xcf"
|
||||
"\x63\xfd\x62\x36\xcf\x56\xc3\xfb\xf6\x36\x9b\xe5\xb2\xe7\xce\xcb"
|
||||
"\xe1\x82\xb2\x89\xff\xdd\x87\x5e\xd3\xd8\xff\x2e\x16\x35\xad\xdb"
|
||||
"\xda\xc9\xc5\x81\xad\x48\xf1\x8b\x76\x3d\x74\x34\xdf\x80\x6b\xf3"
|
||||
"\x68\x6d\xf6\xec\x5f\xbe\xea\xb7\x6c\xea\xe4\xeb\xe9\x17\xf9\x4e"
|
||||
"\x0d\x79\xd5\x82\xdd\xb7\xdc\xcd\xfc\xbb\xf1\x0b\x9b\xe9\x18\xe7"
|
||||
"\xb3\xb3\x8b\x40\x82\xa0\x9d\x58\x73\xda\x54\xa2\x2b\xd2\xb6\x41"
|
||||
"\x60\x8a\x64\xf2\xa2\x59\x64\xcf\x27\x1a\xe6\xb5\x1a\x0e\x0e\xe1"
|
||||
"\x14\xef\x26\x68\xeb\xc8\x49\xe2\x66\xbb\x11\x71\x49\xad\x7e\xae"
|
||||
"\xde\xa8\x78\xfd\x64\x51\xd8\x18\x01\x11\xc0\x8d\x3b\xec\x40\x2b"
|
||||
"\x1f\xc5\xa4\x45\x1e\x07\xae\x5a\xd8\x1c\xab\xdf\x89\x96\xdc\xdc"
|
||||
"\x29\xd8\x30\xdb\xbf\x48\x2a\x42\x27\xc2\x50\xac\xf9\x02\xd1\x20"
|
||||
"\x12\xdd\x50\x22\x09\x44\xac\xe0\x22\x1f\x66\x64\xec\xfa\x2b\xb8"
|
||||
"\xcd\x43\x3a\xce\x40\x74\xe1\x34\x81\xe3\x94\x47\x6f\x49\x01\xf8"
|
||||
"\xb5\xfc\xd0\x75\x80\xc6\x35\xac\xc0\xfd\x1b\xb5\xa2\xd3";
|
||||
|
||||
BYTE expected_public_key[270] =
|
||||
"\x31\x82\x01\x0a\x02\x82\x01\x01\x00\xc2\x1c\x54\xaf\x07\xf1\x16"
|
||||
"\x97\xc3\x0f\x6b\xa6\x33\x2e\xdd\x1e\xe4\xb2\x9c\xe4\x12\x7f\xda"
|
||||
"\x58\x21\xc0\x68\xe6\xd3\xf5\x20\x1c\xba\x06\x64\x7d\x7f\x44\xb5"
|
||||
"\xbf\xe3\xd5\xc7\xa4\x86\x8b\xbc\x6f\xca\x25\x78\xdf\xeb\xcf\x5a"
|
||||
"\x96\xf6\xc7\x00\xbe\x7d\x6d\x06\x1f\x1d\x7f\x30\xaf\xc4\x59\x4f"
|
||||
"\x91\x6d\x97\xe8\x55\x8b\x39\x01\x68\x50\x59\xbb\xe4\x65\x71\x32"
|
||||
"\x76\x9e\x1b\xcf\x58\xfc\x52\xd9\x43\x01\x8e\x33\xc1\x74\x14\xbc"
|
||||
"\x1f\x5c\x1d\xdb\x0e\xbd\xbb\x37\x50\x13\x78\x57\x93\x34\x3b\x73"
|
||||
"\xc9\x5c\x44\x1f\x16\xe6\x2e\x00\x57\xa3\xe6\x5c\x6a\x2c\x90\xdc"
|
||||
"\xa3\x6d\x7f\x92\xdf\x2f\xe5\x97\xae\x3b\x07\x23\x03\x91\x71\xd4"
|
||||
"\xf2\x50\x3a\x3a\xb9\xde\x1f\xb1\xd5\xa1\x38\x7c\xf7\x07\x49\x83"
|
||||
"\x68\xaa\xdf\xad\xfd\x1a\xe9\xb5\x0a\x1e\x8b\xf3\x88\xae\x3f\x32"
|
||||
"\xd0\x3b\xd8\xc7\x50\x11\xf7\xad\x3b\x11\xe6\x92\xbb\x2a\x73\x8b"
|
||||
"\xed\xfd\x45\x29\x50\xbf\x0d\x1e\x47\xfd\x61\x1d\x18\x27\x58\xa2"
|
||||
"\xb2\x1f\xb5\x2d\x84\x18\x2f\x88\x8e\x7f\x70\xed\x4e\xbf\x14\x5d"
|
||||
"\x1b\xbc\x0b\x47\x66\x16\x3a\x7b\x6d\x8e\xcf\x55\xe8\x8c\x8a\xfe"
|
||||
"\x24\xce\x19\x99\xc3\x5a\xe5\xc2\xf3\x02\x03\x01\x00\x01";
|
||||
|
||||
BYTE public_key_signature[16] =
|
||||
"\x01\x00\x00\x00\xc9\x88\xfc\xf1\x11\x68\x2c\x72\x00\x00\x00\x00";
|
||||
|
||||
encrypted_public_key.data = encrypted_public_key_data;
|
||||
encrypted_public_key.length = sizeof(encrypted_public_key_data);
|
||||
|
||||
ntlm = ntlm_client_new();
|
||||
memcpy(ntlm->server_signing_key, server_signing_key, 16);
|
||||
memcpy(ntlm->server_sealing_key, server_sealing_key, 16);
|
||||
ntlm_init_rc4_seal_states(ntlm);
|
||||
|
||||
ntlm_decrypt_message(ntlm, &encrypted_public_key, &public_key, public_key_signature);
|
||||
|
||||
p = (BYTE*) public_key.data;
|
||||
public_key_good = 1;
|
||||
|
||||
for (i = 0; i < public_key.length; i++)
|
||||
{
|
||||
if (p[i] != expected_public_key[i])
|
||||
public_key_good = 0;
|
||||
}
|
||||
|
||||
CU_ASSERT(public_key_good == 1);
|
||||
}
|
||||
#endif
|
|
@ -1,39 +0,0 @@
|
|||
/**
|
||||
* FreeRDP: A Remote Desktop Protocol Implementation
|
||||
* NTLM Security Package Unit Tests
|
||||
*
|
||||
* Copyright 2011-2012 Marc-Andre Moreau <marcandre.moreau@gmail.com>
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
#include "test_freerdp.h"
|
||||
|
||||
int init_ntlm_suite(void);
|
||||
int clean_ntlm_suite(void);
|
||||
int add_ntlm_suite(void);
|
||||
|
||||
void test_ntlm_compute_lm_hash(void);
|
||||
void test_ntlm_compute_ntlm_hash(void);
|
||||
void test_ntlm_compute_ntlm_v2_hash(void);
|
||||
void test_ntlm_compute_lm_response(void);
|
||||
void test_ntlm_compute_lm_v2_response(void);
|
||||
void test_ntlm_compute_ntlm_v2_response(void);
|
||||
void test_ntlm_generate_client_signing_key(void);
|
||||
void test_ntlm_generate_server_signing_key(void);
|
||||
void test_ntlm_generate_client_sealing_key(void);
|
||||
void test_ntlm_generate_server_sealing_key(void);
|
||||
void test_ntlm_encrypt_random_session_key(void);
|
||||
void test_ntlm_compute_message_integrity_check(void);
|
||||
void test_ntlm_encrypt_message(void);
|
||||
void test_ntlm_decrypt_message(void);
|
|
@ -1,772 +0,0 @@
|
|||
/**
|
||||
* FreeRDP: A Remote Desktop Protocol Implementation
|
||||
* Drawing Orders Unit Tests
|
||||
*
|
||||
* Copyright 2011 Marc-Andre Moreau <marcandre.moreau@gmail.com>
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
#include <freerdp/freerdp.h>
|
||||
#include <winpr/print.h>
|
||||
#include <winpr/stream.h>
|
||||
|
||||
#include "test_orders.h"
|
||||
#include "libfreerdp/core/orders.h"
|
||||
#include "libfreerdp/core/update.h"
|
||||
|
||||
ORDER_INFO* orderInfo;
|
||||
|
||||
int init_orders_suite(void)
|
||||
{
|
||||
orderInfo = (ORDER_INFO*) malloc(sizeof(ORDER_INFO));
|
||||
return 0;
|
||||
}
|
||||
|
||||
int clean_orders_suite(void)
|
||||
{
|
||||
free(orderInfo);
|
||||
return 0;
|
||||
}
|
||||
|
||||
int add_orders_suite(void)
|
||||
{
|
||||
add_test_suite(orders);
|
||||
|
||||
add_test_function(read_dstblt_order);
|
||||
add_test_function(read_patblt_order);
|
||||
add_test_function(read_scrblt_order);
|
||||
add_test_function(read_opaque_rect_order);
|
||||
add_test_function(read_draw_nine_grid_order);
|
||||
add_test_function(read_multi_opaque_rect_order);
|
||||
add_test_function(read_line_to_order);
|
||||
add_test_function(read_polyline_order);
|
||||
add_test_function(read_glyph_index_order);
|
||||
add_test_function(read_fast_index_order);
|
||||
add_test_function(read_fast_glyph_order);
|
||||
add_test_function(read_polygon_cb_order);
|
||||
|
||||
add_test_function(read_cache_bitmap_order);
|
||||
add_test_function(read_cache_bitmap_v2_order);
|
||||
add_test_function(read_cache_bitmap_v3_order);
|
||||
add_test_function(read_cache_brush_order);
|
||||
|
||||
add_test_function(read_create_offscreen_bitmap_order);
|
||||
add_test_function(read_switch_surface_order);
|
||||
|
||||
add_test_function(update_recv_orders);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
BYTE dstblt_order[] = "\x48\x00\x37\x01";
|
||||
|
||||
void test_read_dstblt_order(void)
|
||||
{
|
||||
wStream _s, *s;
|
||||
DSTBLT_ORDER dstblt;
|
||||
|
||||
s = &_s;
|
||||
s->pointer = s->buffer = dstblt_order;
|
||||
|
||||
memset(orderInfo, 0, sizeof(ORDER_INFO));
|
||||
orderInfo->fieldFlags = 0x0C;
|
||||
memset(&dstblt, 0, sizeof(DSTBLT_ORDER));
|
||||
|
||||
CU_ASSERT(update_read_dstblt_order(s, orderInfo, &dstblt));
|
||||
|
||||
CU_ASSERT(dstblt.nLeftRect == 0);
|
||||
CU_ASSERT(dstblt.nTopRect == 0);
|
||||
CU_ASSERT(dstblt.nWidth == 72);
|
||||
CU_ASSERT(dstblt.nHeight == 311);
|
||||
CU_ASSERT(dstblt.bRop == 0);
|
||||
|
||||
CU_ASSERT(Stream_GetPosition(s) == (sizeof(dstblt_order) - 1));
|
||||
}
|
||||
|
||||
BYTE patblt_order[] = "\x1a\x00\xc3\x01\x0d\x00\x0d\x00\xf0\xff\xff\x00\x5b\xef\x00\x81";
|
||||
|
||||
void test_read_patblt_order(void)
|
||||
{
|
||||
wStream _s, *s;
|
||||
PATBLT_ORDER patblt;
|
||||
|
||||
s = &_s;
|
||||
s->pointer = s->buffer = patblt_order;
|
||||
|
||||
memset(orderInfo, 0, sizeof(ORDER_INFO));
|
||||
orderInfo->fieldFlags = 0x027F;
|
||||
memset(&patblt, 0, sizeof(PATBLT_ORDER));
|
||||
|
||||
CU_ASSERT(update_read_patblt_order(s, orderInfo, &patblt));
|
||||
|
||||
CU_ASSERT(patblt.nLeftRect == 26);
|
||||
CU_ASSERT(patblt.nTopRect == 451);
|
||||
CU_ASSERT(patblt.nWidth == 13);
|
||||
CU_ASSERT(patblt.nHeight == 13);
|
||||
CU_ASSERT(patblt.bRop == 240);
|
||||
CU_ASSERT(patblt.backColor == 0x00FFFF);
|
||||
CU_ASSERT(patblt.foreColor == 0x00EF5B);
|
||||
CU_ASSERT(patblt.brush.x == 0);
|
||||
CU_ASSERT(patblt.brush.y == 0);
|
||||
CU_ASSERT(patblt.brush.style == (BMF_1BPP | CACHED_BRUSH));
|
||||
|
||||
CU_ASSERT(Stream_GetPosition(s) == (sizeof(patblt_order) - 1));
|
||||
}
|
||||
|
||||
BYTE scrblt_order[] = "\x07\x00\xa1\x01\xf1\x00\xcc\x2f\x01\x8e\x00";
|
||||
|
||||
void test_read_scrblt_order(void)
|
||||
{
|
||||
wStream _s, *s;
|
||||
SCRBLT_ORDER scrblt;
|
||||
|
||||
s = &_s;
|
||||
s->pointer = s->buffer = scrblt_order;
|
||||
|
||||
memset(orderInfo, 0, sizeof(ORDER_INFO));
|
||||
orderInfo->fieldFlags = 0x7D;
|
||||
memset(&scrblt, 0, sizeof(SCRBLT_ORDER));
|
||||
|
||||
CU_ASSERT(update_read_scrblt_order(s, orderInfo, &scrblt));
|
||||
|
||||
CU_ASSERT(scrblt.nLeftRect == 7);
|
||||
CU_ASSERT(scrblt.nTopRect == 0);
|
||||
CU_ASSERT(scrblt.nWidth == 417);
|
||||
CU_ASSERT(scrblt.nHeight == 241);
|
||||
CU_ASSERT(scrblt.bRop == 204);
|
||||
CU_ASSERT(scrblt.nXSrc == 303);
|
||||
CU_ASSERT(scrblt.nYSrc == 142);
|
||||
|
||||
CU_ASSERT(Stream_GetPosition(s) == (sizeof(scrblt_order) - 1));
|
||||
}
|
||||
|
||||
BYTE opaque_rect_order[] = "\x00\x04\x00\x03\x73\x02\x06";
|
||||
|
||||
void test_read_opaque_rect_order(void)
|
||||
{
|
||||
wStream _s, *s;
|
||||
OPAQUE_RECT_ORDER opaque_rect;
|
||||
|
||||
s = &_s;
|
||||
s->pointer = s->buffer = opaque_rect_order;
|
||||
|
||||
memset(orderInfo, 0, sizeof(ORDER_INFO));
|
||||
orderInfo->fieldFlags = 0x7C;
|
||||
memset(&opaque_rect, 0, sizeof(OPAQUE_RECT_ORDER));
|
||||
|
||||
CU_ASSERT(update_read_opaque_rect_order(s, orderInfo, &opaque_rect));
|
||||
|
||||
CU_ASSERT(opaque_rect.nLeftRect == 0);
|
||||
CU_ASSERT(opaque_rect.nTopRect == 0);
|
||||
CU_ASSERT(opaque_rect.nWidth == 1024);
|
||||
CU_ASSERT(opaque_rect.nHeight == 768);
|
||||
CU_ASSERT(opaque_rect.color == 0x00060273);
|
||||
|
||||
CU_ASSERT(Stream_GetPosition(s) == (sizeof(opaque_rect_order) - 1));
|
||||
}
|
||||
|
||||
BYTE draw_nine_grid_order[] = "\xfb\xf9\x0d\x00";
|
||||
|
||||
void test_read_draw_nine_grid_order(void)
|
||||
{
|
||||
wStream _s, *s;
|
||||
DRAW_NINE_GRID_ORDER draw_nine_grid;
|
||||
|
||||
s = &_s;
|
||||
s->pointer = s->buffer = draw_nine_grid_order;
|
||||
|
||||
memset(orderInfo, 0, sizeof(ORDER_INFO));
|
||||
orderInfo->fieldFlags = 0x1C;
|
||||
orderInfo->deltaCoordinates = TRUE;
|
||||
|
||||
memset(&draw_nine_grid, 0, sizeof(DRAW_NINE_GRID_ORDER));
|
||||
draw_nine_grid.srcRight = 38;
|
||||
draw_nine_grid.srcBottom = 40;
|
||||
|
||||
CU_ASSERT(update_read_draw_nine_grid_order(s, orderInfo, &draw_nine_grid));
|
||||
|
||||
CU_ASSERT(draw_nine_grid.srcLeft == 0);
|
||||
CU_ASSERT(draw_nine_grid.srcTop == 0);
|
||||
CU_ASSERT(draw_nine_grid.srcRight == 33);
|
||||
CU_ASSERT(draw_nine_grid.srcBottom == 33);
|
||||
CU_ASSERT(draw_nine_grid.bitmapId == 13);
|
||||
|
||||
CU_ASSERT(Stream_GetPosition(s) == (sizeof(draw_nine_grid_order) - 1));
|
||||
}
|
||||
|
||||
|
||||
BYTE multi_opaque_rect_order[] =
|
||||
"\x87\x01\x1c\x01\xf1\x00\x12\x00\x5c\xef\x04\x16\x00\x08\x40\x81"
|
||||
"\x87\x81\x1c\x80\xf1\x01\x01\x01\x10\x80\xf0\x01\x10\xff\x10\x10"
|
||||
"\x80\xf1\x01";
|
||||
|
||||
void test_read_multi_opaque_rect_order(void)
|
||||
{
|
||||
wStream _s, *s;
|
||||
MULTI_OPAQUE_RECT_ORDER multi_opaque_rect;
|
||||
|
||||
s = &_s;
|
||||
s->pointer = s->buffer = multi_opaque_rect_order;
|
||||
|
||||
memset(orderInfo, 0, sizeof(ORDER_INFO));
|
||||
orderInfo->fieldFlags = 0x01BF;
|
||||
memset(&multi_opaque_rect, 0, sizeof(MULTI_OPAQUE_RECT_ORDER));
|
||||
|
||||
CU_ASSERT(update_read_multi_opaque_rect_order(s, orderInfo, &multi_opaque_rect));
|
||||
|
||||
CU_ASSERT(multi_opaque_rect.nLeftRect == 391);
|
||||
CU_ASSERT(multi_opaque_rect.nTopRect == 284);
|
||||
CU_ASSERT(multi_opaque_rect.nWidth == 241);
|
||||
CU_ASSERT(multi_opaque_rect.nHeight == 18);
|
||||
CU_ASSERT(multi_opaque_rect.color == 0x0000EF5C);
|
||||
CU_ASSERT(multi_opaque_rect.cbData == 22);
|
||||
CU_ASSERT(multi_opaque_rect.numRectangles == 4);
|
||||
|
||||
CU_ASSERT(multi_opaque_rect.rectangles[1].left == 391);
|
||||
CU_ASSERT(multi_opaque_rect.rectangles[1].top == 284);
|
||||
CU_ASSERT(multi_opaque_rect.rectangles[1].width == 241);
|
||||
CU_ASSERT(multi_opaque_rect.rectangles[1].height == 1);
|
||||
|
||||
CU_ASSERT(multi_opaque_rect.rectangles[2].left == 391);
|
||||
CU_ASSERT(multi_opaque_rect.rectangles[2].top == 285);
|
||||
CU_ASSERT(multi_opaque_rect.rectangles[2].width == 1);
|
||||
CU_ASSERT(multi_opaque_rect.rectangles[2].height == 16);
|
||||
|
||||
CU_ASSERT(multi_opaque_rect.rectangles[3].left == 631);
|
||||
CU_ASSERT(multi_opaque_rect.rectangles[3].top == 285);
|
||||
CU_ASSERT(multi_opaque_rect.rectangles[3].width == 1);
|
||||
CU_ASSERT(multi_opaque_rect.rectangles[3].height == 16);
|
||||
|
||||
CU_ASSERT(multi_opaque_rect.rectangles[4].left == 391);
|
||||
CU_ASSERT(multi_opaque_rect.rectangles[4].top == 301);
|
||||
CU_ASSERT(multi_opaque_rect.rectangles[4].width == 241);
|
||||
CU_ASSERT(multi_opaque_rect.rectangles[4].height == 1);
|
||||
|
||||
CU_ASSERT(Stream_GetPosition(s) == (sizeof(multi_opaque_rect_order) - 1));
|
||||
}
|
||||
|
||||
BYTE line_to_order[] = "\x03\xb1\x0e\xa6\x5b\xef\x00";
|
||||
|
||||
void test_read_line_to_order(void)
|
||||
{
|
||||
wStream _s, *s;
|
||||
LINE_TO_ORDER line_to;
|
||||
|
||||
s = &_s;
|
||||
s->pointer = s->buffer = line_to_order;
|
||||
|
||||
memset(orderInfo, 0, sizeof(ORDER_INFO));
|
||||
orderInfo->fieldFlags = 0x021E;
|
||||
orderInfo->deltaCoordinates = TRUE;
|
||||
|
||||
memset(&line_to, 0, sizeof(LINE_TO_ORDER));
|
||||
line_to.nXStart = 826;
|
||||
line_to.nYStart = 350;
|
||||
line_to.nXEnd = 829;
|
||||
line_to.nYEnd = 347;
|
||||
|
||||
CU_ASSERT(update_read_line_to_order(s, orderInfo, &line_to));
|
||||
|
||||
CU_ASSERT(line_to.nXStart == 829);
|
||||
CU_ASSERT(line_to.nYStart == 271);
|
||||
CU_ASSERT(line_to.nXEnd == 843);
|
||||
CU_ASSERT(line_to.nYEnd == 257);
|
||||
CU_ASSERT(line_to.backColor == 0);
|
||||
CU_ASSERT(line_to.bRop2 == 0);
|
||||
CU_ASSERT(line_to.penStyle == 0);
|
||||
CU_ASSERT(line_to.penWidth == 0);
|
||||
CU_ASSERT(line_to.penColor == 0x00EF5B);
|
||||
|
||||
CU_ASSERT(Stream_GetPosition(s) == (sizeof(line_to_order) - 1));
|
||||
}
|
||||
|
||||
BYTE polyline_order[] =
|
||||
"\xf8\x01\xb8\x02\x00\xc0\x00\x20\x6c\x00\x00\x00\x00\x00\x04\x00"
|
||||
"\x00\xff\x7e\x76\xff\x41\x6c\xff\x24\x62\xff\x2b\x59\xff\x55\x51"
|
||||
"\xff\x9c\x49\x73\x43\x80\x4d\xff\xbe\x80\x99\xff\xba\x80\xcd\xff"
|
||||
"\xb7\x80\xde\xff\xb6\x80\xca\xff\xb6\x80\x96\xff\xb7\x80\x48\xff"
|
||||
"\xba\x6f\xff\xbe\xff\x97\x43\xff\x52\x4a\xff\x2b\x51\xff\x24\x59"
|
||||
"\xff\x44\x63\xff\x81\x6c\x56\x76\x2f\x80\x82\x0a\x80\xbf\x14\x80"
|
||||
"\xdd\x1e\x80\xd4\x27\x80\xab\x2f\x80\x64\x37\x0d\x3d\xff\xb3\x80"
|
||||
"\x42\xff\x67\x80\x46";
|
||||
|
||||
void test_read_polyline_order(void)
|
||||
{
|
||||
wStream _s, *s;
|
||||
POLYLINE_ORDER polyline;
|
||||
|
||||
s = &_s;
|
||||
s->pointer = s->buffer = polyline_order;
|
||||
|
||||
memset(orderInfo, 0, sizeof(ORDER_INFO));
|
||||
orderInfo->fieldFlags = 0x73;
|
||||
|
||||
memset(&polyline, 0, sizeof(POLYLINE_ORDER));
|
||||
|
||||
CU_ASSERT(update_read_polyline_order(s, orderInfo, &polyline));
|
||||
|
||||
CU_ASSERT(polyline.xStart == 504);
|
||||
CU_ASSERT(polyline.yStart == 696);
|
||||
CU_ASSERT(polyline.bRop2 == 0);
|
||||
CU_ASSERT(polyline.penColor == 0x0000C000);
|
||||
CU_ASSERT(polyline.numPoints == 32);
|
||||
CU_ASSERT(polyline.cbData == 108);
|
||||
|
||||
CU_ASSERT(polyline.points[0].x == -130);
|
||||
CU_ASSERT(polyline.points[1].x == -191);
|
||||
CU_ASSERT(polyline.points[2].x == -220);
|
||||
CU_ASSERT(polyline.points[3].x == -213);
|
||||
CU_ASSERT(polyline.points[4].x == -171);
|
||||
CU_ASSERT(polyline.points[5].x == -100);
|
||||
CU_ASSERT(polyline.points[6].x == -13);
|
||||
CU_ASSERT(polyline.points[7].x == 77);
|
||||
CU_ASSERT(polyline.points[8].x == 153);
|
||||
CU_ASSERT(polyline.points[9].x == 205);
|
||||
CU_ASSERT(polyline.points[10].x == 222);
|
||||
CU_ASSERT(polyline.points[11].x == 202);
|
||||
CU_ASSERT(polyline.points[12].x == 150);
|
||||
CU_ASSERT(polyline.points[13].x == 72);
|
||||
CU_ASSERT(polyline.points[14].x == -17);
|
||||
CU_ASSERT(polyline.points[15].x == -105);
|
||||
CU_ASSERT(polyline.points[16].x == -174);
|
||||
CU_ASSERT(polyline.points[17].x == -213);
|
||||
CU_ASSERT(polyline.points[18].x == -220);
|
||||
CU_ASSERT(polyline.points[19].x == -188);
|
||||
CU_ASSERT(polyline.points[20].x == -127);
|
||||
CU_ASSERT(polyline.points[21].x == -42);
|
||||
CU_ASSERT(polyline.points[22].x == 47);
|
||||
CU_ASSERT(polyline.points[23].x == 130);
|
||||
CU_ASSERT(polyline.points[24].x == 191);
|
||||
CU_ASSERT(polyline.points[25].x == 221);
|
||||
CU_ASSERT(polyline.points[26].x == 212);
|
||||
CU_ASSERT(polyline.points[27].x == 171);
|
||||
CU_ASSERT(polyline.points[28].x == 100);
|
||||
CU_ASSERT(polyline.points[29].x == 13);
|
||||
CU_ASSERT(polyline.points[30].x == -77);
|
||||
CU_ASSERT(polyline.points[31].x == -153);
|
||||
CU_ASSERT(polyline.points[32].x == 0);
|
||||
|
||||
CU_ASSERT(Stream_GetPosition(s) == (sizeof(polyline_order) - 1));
|
||||
}
|
||||
|
||||
BYTE glyph_index_order_1[] =
|
||||
"\x6a\x02\x27\x38\x00\x39\x07\x3a\x06\x3b\x07\x3c\x06\x3d\x06\x18"
|
||||
"\x04\x1f\x06\x17\x02\x14\x04\x1b\x06\x19\x06\x45\x05\x18\x06\x1f"
|
||||
"\x06\x1f\x02\x14\x02\x46\x06\xff\x15\x24";
|
||||
|
||||
BYTE glyph_index_order_2[] =
|
||||
"\x00\xff\xff\xff\x0c\x02\x6e\x01\x4d\x02\x7b\x01\x09\x02\x6e\x01"
|
||||
"\xf6\x02\x7b\x01\x0c\x02\x79\x01\x03\xfe\x04\x00";
|
||||
|
||||
void test_read_glyph_index_order(void)
|
||||
{
|
||||
wStream _s, *s;
|
||||
GLYPH_INDEX_ORDER glyph_index;
|
||||
|
||||
s = &_s;
|
||||
s->pointer = s->buffer = glyph_index_order_1;
|
||||
|
||||
memset(orderInfo, 0, sizeof(ORDER_INFO));
|
||||
orderInfo->fieldFlags = 0x200100;
|
||||
orderInfo->deltaCoordinates = TRUE;
|
||||
|
||||
memset(&glyph_index, 0, sizeof(GLYPH_INDEX_ORDER));
|
||||
|
||||
CU_ASSERT(update_read_glyph_index_order(s, orderInfo, &glyph_index));
|
||||
|
||||
CU_ASSERT(glyph_index.bkRight == 618);
|
||||
|
||||
CU_ASSERT(Stream_GetPosition(s) == (sizeof(glyph_index_order_1) - 1));
|
||||
|
||||
s->pointer = s->buffer = glyph_index_order_2;
|
||||
|
||||
memset(orderInfo, 0, sizeof(ORDER_INFO));
|
||||
orderInfo->fieldFlags = 0x383FE8;
|
||||
orderInfo->deltaCoordinates = TRUE;
|
||||
|
||||
memset(&glyph_index, 0, sizeof(GLYPH_INDEX_ORDER));
|
||||
|
||||
CU_ASSERT(update_read_glyph_index_order(s, orderInfo, &glyph_index));
|
||||
|
||||
CU_ASSERT(glyph_index.fOpRedundant == 0);
|
||||
CU_ASSERT(glyph_index.foreColor == 0x00FFFFFF);
|
||||
CU_ASSERT(glyph_index.bkLeft == 524);
|
||||
CU_ASSERT(glyph_index.bkTop == 366);
|
||||
CU_ASSERT(glyph_index.bkRight == 589);
|
||||
CU_ASSERT(glyph_index.bkBottom == 379);
|
||||
CU_ASSERT(glyph_index.opLeft == 521);
|
||||
CU_ASSERT(glyph_index.opTop == 366);
|
||||
CU_ASSERT(glyph_index.opRight == 758);
|
||||
CU_ASSERT(glyph_index.opBottom == 379);
|
||||
CU_ASSERT(glyph_index.x == 524);
|
||||
CU_ASSERT(glyph_index.y == 377);
|
||||
|
||||
CU_ASSERT(Stream_GetPosition(s) == (sizeof(glyph_index_order_2) - 1));
|
||||
}
|
||||
|
||||
BYTE fast_index_order[] =
|
||||
"\x07\x00\x03\xff\xff\x00\x74\x3b\x00\x0e\x00\x71\x00\x42\x00\x7e"
|
||||
"\x00\x00\x80\x7c\x00\x15\x00\x00\x01\x06\x02\x04\x03\x08\x05\x09"
|
||||
"\x06\x06\x06\x06\x07\x06\x08\x02\xff\x00\x12";
|
||||
|
||||
void test_read_fast_index_order(void)
|
||||
{
|
||||
wStream _s, *s;
|
||||
FAST_INDEX_ORDER fast_index;
|
||||
|
||||
s = &_s;
|
||||
s->pointer = s->buffer = fast_index_order;
|
||||
|
||||
memset(orderInfo, 0, sizeof(ORDER_INFO));
|
||||
orderInfo->fieldFlags = 0x70FF;
|
||||
|
||||
memset(&fast_index, 0, sizeof(FAST_INDEX_ORDER));
|
||||
CU_ASSERT(update_read_fast_index_order(s, orderInfo, &fast_index));
|
||||
|
||||
CU_ASSERT(fast_index.cacheId == 7);
|
||||
CU_ASSERT(fast_index.flAccel == 3);
|
||||
CU_ASSERT(fast_index.ulCharInc == 0);
|
||||
CU_ASSERT(fast_index.backColor == 0x0000FFFF);
|
||||
CU_ASSERT(fast_index.foreColor == 0x00003B74);
|
||||
CU_ASSERT(fast_index.bkLeft == 14);
|
||||
CU_ASSERT(fast_index.bkTop == 113);
|
||||
CU_ASSERT(fast_index.bkRight == 66);
|
||||
CU_ASSERT(fast_index.bkBottom == 126);
|
||||
CU_ASSERT(fast_index.opLeft == 0);
|
||||
CU_ASSERT(fast_index.opTop == 0);
|
||||
CU_ASSERT(fast_index.opRight == 0);
|
||||
CU_ASSERT(fast_index.opBottom == 0);
|
||||
CU_ASSERT(fast_index.x == -32768);
|
||||
CU_ASSERT(fast_index.y == 124);
|
||||
|
||||
CU_ASSERT(Stream_GetPosition(s) == (sizeof(fast_index_order) - 1));
|
||||
}
|
||||
|
||||
BYTE fast_glyph_order[] =
|
||||
"\x06\x00\x03\xff\xff\x00\x8b\x00\xb1\x00\x93\x00\xbe\x00\x0d\x00"
|
||||
"\xfe\x7f\x00\x80\x00\x80\xbb\x00\x13\x00\x01\x4a\x06\x0a\x80\x80"
|
||||
"\x80\xb8\xc4\x84\x84\x84\x84\x84\x00\x00\x68\x00";
|
||||
|
||||
void test_read_fast_glyph_order(void)
|
||||
{
|
||||
wStream _s, *s;
|
||||
FAST_GLYPH_ORDER fast_glyph;
|
||||
|
||||
s = &_s;
|
||||
s->pointer = s->buffer = fast_glyph_order;
|
||||
|
||||
memset(orderInfo, 0, sizeof(ORDER_INFO));
|
||||
orderInfo->fieldFlags = 0x7EFB;
|
||||
|
||||
memset(&fast_glyph, 0, sizeof(FAST_GLYPH_ORDER));
|
||||
|
||||
CU_ASSERT(update_read_fast_glyph_order(s, orderInfo, &fast_glyph));
|
||||
|
||||
CU_ASSERT(fast_glyph.backColor == 0);
|
||||
CU_ASSERT(fast_glyph.foreColor == 0x0000FFFF);
|
||||
CU_ASSERT(fast_glyph.bkLeft == 139);
|
||||
CU_ASSERT(fast_glyph.bkTop == 177);
|
||||
CU_ASSERT(fast_glyph.bkRight == 147);
|
||||
CU_ASSERT(fast_glyph.bkBottom == 190);
|
||||
CU_ASSERT(fast_glyph.opLeft == 0);
|
||||
CU_ASSERT(fast_glyph.opTop == 13);
|
||||
CU_ASSERT(fast_glyph.opRight == 32766);
|
||||
CU_ASSERT(fast_glyph.opBottom == -32768);
|
||||
CU_ASSERT(fast_glyph.x == -32768);
|
||||
CU_ASSERT(fast_glyph.y == 187);
|
||||
|
||||
CU_ASSERT(Stream_GetPosition(s) == (sizeof(fast_glyph_order) - 1));
|
||||
}
|
||||
|
||||
BYTE polygon_cb_order[] =
|
||||
"\xea\x00\x46\x01\x0d\x01\x08\x00\x00\x04\x03\x81\x08\x03\x05\x88"
|
||||
"\x09\x26\x09\x77";
|
||||
|
||||
void test_read_polygon_cb_order(void)
|
||||
{
|
||||
wStream _s, *s;
|
||||
POLYGON_CB_ORDER polygon_cb;
|
||||
|
||||
s = &_s;
|
||||
s->pointer = s->buffer = polygon_cb_order;
|
||||
|
||||
memset(orderInfo, 0, sizeof(ORDER_INFO));
|
||||
orderInfo->fieldFlags = 0x1BEF;
|
||||
|
||||
memset(&polygon_cb, 0, sizeof(POLYGON_CB_ORDER));
|
||||
|
||||
CU_ASSERT(update_read_polygon_cb_order(s, orderInfo, &polygon_cb));
|
||||
|
||||
CU_ASSERT(polygon_cb.xStart == 234);
|
||||
CU_ASSERT(polygon_cb.yStart == 326);
|
||||
CU_ASSERT(polygon_cb.bRop2 == 0x0D);
|
||||
CU_ASSERT(polygon_cb.fillMode == 1);
|
||||
CU_ASSERT(polygon_cb.backColor == 0);
|
||||
CU_ASSERT(polygon_cb.foreColor == 0x00000008);
|
||||
CU_ASSERT(polygon_cb.brush.x == 4);
|
||||
CU_ASSERT(polygon_cb.brush.y == 3);
|
||||
CU_ASSERT(polygon_cb.brush.style == 0x81);
|
||||
CU_ASSERT(polygon_cb.numPoints == 3);
|
||||
CU_ASSERT(polygon_cb.cbData == 5);
|
||||
|
||||
CU_ASSERT(Stream_GetPosition(s) == (sizeof(polygon_cb_order) - 1));
|
||||
}
|
||||
|
||||
BYTE cache_bitmap_order[] = "\x00\x00\x10\x01\x08\x01\x00\x00\x00\x10";
|
||||
|
||||
void test_read_cache_bitmap_order(void)
|
||||
{
|
||||
wStream _s, *s;
|
||||
UINT16 extraFlags;
|
||||
CACHE_BITMAP_ORDER cache_bitmap;
|
||||
|
||||
s = &_s;
|
||||
extraFlags = 0x0400;
|
||||
s->pointer = s->buffer = cache_bitmap_order;
|
||||
|
||||
memset(&cache_bitmap, 0, sizeof(CACHE_BITMAP_ORDER));
|
||||
|
||||
CU_ASSERT(update_read_cache_bitmap_order(s, &cache_bitmap, TRUE, extraFlags));
|
||||
|
||||
CU_ASSERT(cache_bitmap.cacheId == 0);
|
||||
CU_ASSERT(cache_bitmap.bitmapWidth == 16);
|
||||
CU_ASSERT(cache_bitmap.bitmapHeight == 1);
|
||||
CU_ASSERT(cache_bitmap.bitmapBpp == 8);
|
||||
CU_ASSERT(cache_bitmap.bitmapLength == 1);
|
||||
CU_ASSERT(cache_bitmap.cacheIndex == 0);
|
||||
|
||||
CU_ASSERT(Stream_GetPosition(s) == (sizeof(cache_bitmap_order) - 1));
|
||||
}
|
||||
|
||||
BYTE cache_bitmap_v2_order[] =
|
||||
"\x20\x40\xdc\xff\xff\x85\xff\xff\x99\xd6\x99\xd6\x99\xd6\x99\xd6"
|
||||
"\x06\x8b\x99\xd6\x99\xd6\x99\xd6\x10\x84\x08\x42\x08\x42\x10\x84"
|
||||
"\x99\xd6\x99\xd6\x99\xd6\x99\xd6\x06\x84\x99\xd6\x99\xd6\x99\xd6"
|
||||
"\xff\xff\x16\x69\x99\xd6\x06\x69\x99\xd6\x04\xcc\x89\x52\x03\x6e"
|
||||
"\xff\xff\x02\x6e\x08\x42\x01\x70\x08\x42\x71\xff\xff\xce\x18\xc6"
|
||||
"\x01\x81\x08\x42\xce\x66\x29\x02\xcd\x89\x52\x03\x88\x10\x84\x99"
|
||||
"\xd6\x99\xd6\x99\xd6\x00\x00\x00\x00\x00\x00\x00\x00\xd8\x99\xd6"
|
||||
"\x03\xf8\x01\x00\x00\x00\x00\xf0\x66\x99\xd6\x05\x6a\x99\xd6\x00"
|
||||
"\xc4\xcc\x89\x52\x03\x6e\xff\xff\x02\x6e\x08\x42\x01\x70\x08\x42"
|
||||
"\x71\xff\xff\xce\x18\xc6\x01\x81\x08\x42\xce\x66\x29\x02\xcd\x89"
|
||||
"\x52\x03\x00\x04\xd6\x99\xd6\xc3\x80\x61\x00\xa5\x80\x40\xec\x52"
|
||||
"\x00\x5a\x00\x2d\x00\x24\x00\x12\x00\x24\x00\x12\x00\x5a\x00\x2d"
|
||||
"\x00\xa5\x80\x52\x00\xc3\x80\x61\x00\x00\x00\x00\x00\xcc\x89\x52"
|
||||
"\x03\x6e\xff\xff\x02\xcb\x18\xc6\x84\x08\x42\x08\x42\x08\x42\xff"
|
||||
"\xff";
|
||||
|
||||
void test_read_cache_bitmap_v2_order(void)
|
||||
{
|
||||
wStream _s, *s;
|
||||
UINT16 extraFlags;
|
||||
CACHE_BITMAP_V2_ORDER cache_bitmap_v2;
|
||||
|
||||
s = &_s;
|
||||
extraFlags = 0x0CA1;
|
||||
s->pointer = s->buffer = cache_bitmap_v2_order;
|
||||
|
||||
memset(&cache_bitmap_v2, 0, sizeof(CACHE_BITMAP_V2_ORDER));
|
||||
|
||||
CB_ASSERT(update_read_cache_bitmap_v2_order(s, &cache_bitmap_v2, TRUE, extraFlags));
|
||||
|
||||
CU_ASSERT(cache_bitmap_v2.cacheId == 1);
|
||||
CU_ASSERT(cache_bitmap_v2.bitmapBpp == 16);
|
||||
CU_ASSERT(cache_bitmap_v2.flags == 0x19);
|
||||
CU_ASSERT(cache_bitmap_v2.bitmapWidth == 32);
|
||||
CU_ASSERT(cache_bitmap_v2.bitmapHeight == 32);
|
||||
CU_ASSERT(cache_bitmap_v2.bitmapLength == 220);
|
||||
CU_ASSERT(cache_bitmap_v2.cacheIndex == 32767);
|
||||
|
||||
CU_ASSERT(Stream_GetPosition(s) == (sizeof(cache_bitmap_v2_order) - 1));
|
||||
}
|
||||
|
||||
BYTE cache_bitmap_v3_order[] =
|
||||
"\xff\x7f\x35\x50\xec\xbc\x74\x52\x65\xb7\x20\x00\x00\x00\x05\x00"
|
||||
"\x02\x00\x28\x00\x00\x00\x5b\x4f\x45\xff\x5b\x4f\x45\xff\x5b\x4f"
|
||||
"\x45\xff\x5b\x4f\x45\xff\x5b\x4f\x45\xff\x5b\x50\x45\xff\x5b\x50"
|
||||
"\x45\xff\x5b\x50\x45\xff\x5b\x50\x45\xff\x5b\x50\x45\xff";
|
||||
|
||||
void test_read_cache_bitmap_v3_order(void)
|
||||
{
|
||||
wStream _s, *s;
|
||||
UINT16 extraFlags;
|
||||
CACHE_BITMAP_V3_ORDER cache_bitmap_v3;
|
||||
|
||||
s = &_s;
|
||||
extraFlags = 0x0C30;
|
||||
s->pointer = s->buffer = cache_bitmap_v3_order;
|
||||
|
||||
memset(&cache_bitmap_v3, 0, sizeof(CACHE_BITMAP_V3_ORDER));
|
||||
|
||||
CU_ASSERT(update_read_cache_bitmap_v3_order(s, &cache_bitmap_v3, TRUE, extraFlags));
|
||||
|
||||
CU_ASSERT(cache_bitmap_v3.cacheIndex == 32767);
|
||||
CU_ASSERT(cache_bitmap_v3.key1 == 0xBCEC5035);
|
||||
CU_ASSERT(cache_bitmap_v3.key2 == 0xB7655274);
|
||||
CU_ASSERT(cache_bitmap_v3.bpp == 32);
|
||||
|
||||
CU_ASSERT(cache_bitmap_v3.bitmapData.bpp == 32);
|
||||
CU_ASSERT(cache_bitmap_v3.bitmapData.codecID == 0);
|
||||
CU_ASSERT(cache_bitmap_v3.bitmapData.width == 5);
|
||||
CU_ASSERT(cache_bitmap_v3.bitmapData.height == 2);
|
||||
CU_ASSERT(cache_bitmap_v3.bitmapData.length == 40);
|
||||
|
||||
CU_ASSERT(Stream_GetPosition(s) == (sizeof(cache_bitmap_v3_order) - 1));
|
||||
}
|
||||
|
||||
BYTE cache_brush_order[] = "\x00\x01\x08\x08\x81\x08\xaa\x55\xaa\x55\xaa\x55\xaa\x55";
|
||||
|
||||
void test_read_cache_brush_order(void)
|
||||
{
|
||||
wStream _s, *s;
|
||||
CACHE_BRUSH_ORDER cache_brush;
|
||||
|
||||
s = &_s;
|
||||
s->pointer = s->buffer = cache_brush_order;
|
||||
|
||||
memset(&cache_brush, 0, sizeof(CACHE_BRUSH_ORDER));
|
||||
|
||||
CU_ASSERT(update_read_cache_brush_order(s, &cache_brush, 0));
|
||||
|
||||
CU_ASSERT(cache_brush.index == 0);
|
||||
CU_ASSERT(cache_brush.bpp == 1);
|
||||
CU_ASSERT(cache_brush.cx == 8);
|
||||
CU_ASSERT(cache_brush.cy == 8);
|
||||
CU_ASSERT(cache_brush.style == 0x81);
|
||||
CU_ASSERT(cache_brush.length == 8);
|
||||
|
||||
CU_ASSERT(Stream_GetPosition(s) == (sizeof(cache_brush_order) - 1));
|
||||
}
|
||||
|
||||
BYTE create_offscreen_bitmap_order[] = "\x00\x80\x60\x01\x10\x00\x01\x00\x02\x00";
|
||||
|
||||
void test_read_create_offscreen_bitmap_order(void)
|
||||
{
|
||||
wStream _s, *s;
|
||||
OFFSCREEN_DELETE_LIST* deleteList;
|
||||
CREATE_OFFSCREEN_BITMAP_ORDER create_offscreen_bitmap;
|
||||
|
||||
s = &_s;
|
||||
s->pointer = s->buffer = create_offscreen_bitmap_order;
|
||||
|
||||
memset(&create_offscreen_bitmap, 0, sizeof(CREATE_OFFSCREEN_BITMAP_ORDER));
|
||||
|
||||
deleteList = &(create_offscreen_bitmap.deleteList);
|
||||
deleteList->cIndices = 0;
|
||||
deleteList->sIndices = 16;
|
||||
deleteList->indices = malloc(sizeof(UINT16) * deleteList->sIndices);
|
||||
|
||||
CU_ASSERT(update_read_create_offscreen_bitmap_order(s, &create_offscreen_bitmap));
|
||||
|
||||
CU_ASSERT(create_offscreen_bitmap.id == 0);
|
||||
CU_ASSERT(create_offscreen_bitmap.cx == 352);
|
||||
CU_ASSERT(create_offscreen_bitmap.cy == 16);
|
||||
CU_ASSERT(create_offscreen_bitmap.deleteList.cIndices == 1);
|
||||
|
||||
CU_ASSERT(Stream_GetPosition(s) == (sizeof(create_offscreen_bitmap_order) - 1));
|
||||
}
|
||||
|
||||
BYTE switch_surface_order[] = "\xff\xff";
|
||||
|
||||
void test_read_switch_surface_order(void)
|
||||
{
|
||||
wStream _s, *s;
|
||||
SWITCH_SURFACE_ORDER switch_surface;
|
||||
|
||||
s = &_s;
|
||||
s->pointer = s->buffer = switch_surface_order;
|
||||
|
||||
memset(&switch_surface, 0, sizeof(SWITCH_SURFACE_ORDER));
|
||||
|
||||
CU_ASSERT(update_read_switch_surface_order(s, &switch_surface));
|
||||
|
||||
CU_ASSERT(switch_surface.bitmapId == 0xFFFF);
|
||||
|
||||
CU_ASSERT(Stream_GetPosition(s) == (sizeof(switch_surface_order) - 1));
|
||||
}
|
||||
|
||||
int opaque_rect_count;
|
||||
int polyline_count;
|
||||
int patblt_count;
|
||||
|
||||
BYTE orders_update_1[] =
|
||||
"\x00\x00\x33\xd0\x07\x00\x80\xba\x0d\x0a\x7f\x1e\x2c\x4d\x00\x36"
|
||||
"\x02\xd3\x00\x47\x00\x4d\x00\xf0\x01\x87\x00\xc2\xdc\xff\x05\x7f"
|
||||
"\x0f\x67\x01\x90\x01\x8e\x01\xa5\x01\x67\x01\x90\x01\x28\x00\x16"
|
||||
"\x00\xf0\xf0\xf0\x15\x0f\xf0\x2d\x01\x19\xfe\x2d\x01\xec\xfd\x0d"
|
||||
"\x16\x77\xf0\xff\xff\x01\x01\xa8\x01\x90\x01\x0d\xf0\xf0\xf0\x04"
|
||||
"\x05\x66\x6b\x14\x15\x6c\x1d\x0a\x0f\xd0\x16\x64\x01\x15\xff\x50"
|
||||
"\x03\x15\x0f\xf0\x65\x01\x15\xfe\x65\x01\xb0\xfd\x1d\x16\x01\xf0"
|
||||
"\xff\xff\x01\x01\x7a";
|
||||
|
||||
BYTE orders_update_2[] =
|
||||
"\x00\x00\x45\x62\x03\x00\x93\x14\x55\x01\x50\xff\xff\xff\x55\x01"
|
||||
"\x50\x01\x01\x01\x55\x01\x50\xff\xff\xff\x16\x00\x17\x00\xea\x03"
|
||||
"\xea\x03\x02\x00\x85\x02\x16\x00\x02\x00\x00\x00\x03\x00\x14\xb2";
|
||||
|
||||
void test_opaque_rect(rdpContext* context, OPAQUE_RECT_ORDER* opaque_rect)
|
||||
{
|
||||
opaque_rect_count++;
|
||||
}
|
||||
|
||||
void test_polyline(rdpContext* context, POLYLINE_ORDER* polyline)
|
||||
{
|
||||
polyline_count++;
|
||||
}
|
||||
|
||||
void test_patblt(rdpContext* context, PATBLT_ORDER* patblt)
|
||||
{
|
||||
patblt_count++;
|
||||
}
|
||||
|
||||
void test_update_recv_orders(void)
|
||||
{
|
||||
rdpRdp* rdp;
|
||||
wStream _s, *s;
|
||||
rdpUpdate* update;
|
||||
|
||||
s = &_s;
|
||||
rdp = rdp_new(NULL);
|
||||
update = update_new(rdp);
|
||||
|
||||
update->context = malloc(sizeof(rdpContext));
|
||||
update->context->rdp = rdp;
|
||||
|
||||
opaque_rect_count = 0;
|
||||
polyline_count = 0;
|
||||
patblt_count = 0;
|
||||
|
||||
update->primary->OpaqueRect = test_opaque_rect;
|
||||
update->primary->Polyline = test_polyline;
|
||||
update->primary->PatBlt = test_patblt;
|
||||
|
||||
s->pointer = s->buffer = orders_update_1;
|
||||
s->capacity = sizeof(orders_update_1);
|
||||
|
||||
CU_ASSERT(update_recv(update, s));
|
||||
|
||||
CU_ASSERT(opaque_rect_count == 5);
|
||||
CU_ASSERT(polyline_count == 2);
|
||||
|
||||
update->primary->order_info.orderType = ORDER_TYPE_PATBLT;
|
||||
s->pointer = s->buffer = orders_update_2;
|
||||
s->capacity = sizeof(orders_update_2);
|
||||
|
||||
CU_ASSERT(update_recv(update, s));
|
||||
|
||||
CU_ASSERT(patblt_count == 3);
|
||||
|
||||
free(update->context);
|
||||
}
|
||||
|
|
@ -1,48 +0,0 @@
|
|||
/**
|
||||
* FreeRDP: A Remote Desktop Protocol Implementation
|
||||
* Drawing Orders Unit Tests
|
||||
*
|
||||
* Copyright 2011 Marc-Andre Moreau <marcandre.moreau@gmail.com>
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
#include "test_freerdp.h"
|
||||
|
||||
int init_orders_suite(void);
|
||||
int clean_orders_suite(void);
|
||||
int add_orders_suite(void);
|
||||
|
||||
void test_read_dstblt_order(void);
|
||||
void test_read_patblt_order(void);
|
||||
void test_read_scrblt_order(void);
|
||||
void test_read_opaque_rect_order(void);
|
||||
void test_read_draw_nine_grid_order(void);
|
||||
void test_read_multi_opaque_rect_order(void);
|
||||
void test_read_line_to_order(void);
|
||||
void test_read_polyline_order(void);
|
||||
void test_read_glyph_index_order(void);
|
||||
void test_read_fast_index_order(void);
|
||||
void test_read_fast_glyph_order(void);
|
||||
void test_read_polygon_cb_order(void);
|
||||
|
||||
void test_read_cache_bitmap_order(void);
|
||||
void test_read_cache_bitmap_v2_order(void);
|
||||
void test_read_cache_bitmap_v3_order(void);
|
||||
void test_read_cache_brush_order(void);
|
||||
|
||||
void test_read_create_offscreen_bitmap_order(void);
|
||||
void test_read_switch_surface_order(void);
|
||||
|
||||
void test_update_recv_orders(void);
|
||||
|
|
@ -1,99 +0,0 @@
|
|||
/**
|
||||
* FreeRDP: A Remote Desktop Protocol Implementation
|
||||
* pcap File Format Unit Tests
|
||||
*
|
||||
* Copyright 2011 Marc-Andre Moreau <marcandre.moreau@gmail.com>
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
#include <freerdp/freerdp.h>
|
||||
#include <winpr/print.h>
|
||||
#include <freerdp/utils/pcap.h>
|
||||
|
||||
#include "test_pcap.h"
|
||||
|
||||
int init_pcap_suite(void)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
int clean_pcap_suite(void)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
int add_pcap_suite(void)
|
||||
{
|
||||
add_test_suite(pcap);
|
||||
|
||||
add_test_function(pcap);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
BYTE test_packet_1[16] =
|
||||
"\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA";
|
||||
|
||||
BYTE test_packet_2[32] =
|
||||
"\xBB\xBB\xBB\xBB\xBB\xBB\xBB\xBB\xBB\xBB\xBB\xBB\xBB\xBB\xBB\xBB"
|
||||
"\xBB\xBB\xBB\xBB\xBB\xBB\xBB\xBB\xBB\xBB\xBB\xBB\xBB\xBB\xBB\xBB";
|
||||
|
||||
BYTE test_packet_3[64] =
|
||||
"\xCC\xCC\xCC\xCC\xCC\xCC\xCC\xCC\xCC\xCC\xCC\xCC\xCC\xCC\xCC\xCC"
|
||||
"\xCC\xCC\xCC\xCC\xCC\xCC\xCC\xCC\xCC\xCC\xCC\xCC\xCC\xCC\xCC\xCC"
|
||||
"\xCC\xCC\xCC\xCC\xCC\xCC\xCC\xCC\xCC\xCC\xCC\xCC\xCC\xCC\xCC\xCC"
|
||||
"\xCC\xCC\xCC\xCC\xCC\xCC\xCC\xCC\xCC\xCC\xCC\xCC\xCC\xCC\xCC\xCC";
|
||||
|
||||
typedef struct
|
||||
{
|
||||
void* data;
|
||||
UINT32 length;
|
||||
} test_packet;
|
||||
|
||||
void test_pcap(void)
|
||||
{
|
||||
rdpPcap* pcap;
|
||||
pcap_record record;
|
||||
test_packet packets[3];
|
||||
|
||||
packets[0].data = test_packet_1;
|
||||
packets[0].length = sizeof(test_packet_1);
|
||||
packets[1].data = test_packet_2;
|
||||
packets[1].length = sizeof(test_packet_2);
|
||||
packets[2].data = test_packet_3;
|
||||
packets[2].length = sizeof(test_packet_3);
|
||||
|
||||
pcap = pcap_open("/tmp/test.pcap", TRUE);
|
||||
pcap_add_record(pcap, test_packet_1, sizeof(test_packet_1));
|
||||
pcap_flush(pcap);
|
||||
pcap_add_record(pcap, test_packet_2, sizeof(test_packet_2));
|
||||
pcap_flush(pcap);
|
||||
pcap_add_record(pcap, test_packet_3, sizeof(test_packet_3));
|
||||
pcap_close(pcap);
|
||||
|
||||
pcap = pcap_open("/tmp/test.pcap", FALSE);
|
||||
|
||||
int i = 0;
|
||||
while (pcap_has_next_record(pcap))
|
||||
{
|
||||
pcap_get_next_record(pcap, &record);
|
||||
CU_ASSERT(record.length == packets[i].length)
|
||||
i++;
|
||||
}
|
||||
|
||||
CU_ASSERT(i == 3);
|
||||
|
||||
pcap_close(pcap);
|
||||
}
|
||||
|
|
@ -1,26 +0,0 @@
|
|||
/**
|
||||
* FreeRDP: A Remote Desktop Protocol Implementation
|
||||
* pcap File Format Unit Tests
|
||||
*
|
||||
* Copyright 2011 Marc-Andre Moreau <marcandre.moreau@gmail.com>
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
#include "test_freerdp.h"
|
||||
|
||||
int init_pcap_suite(void);
|
||||
int clean_pcap_suite(void);
|
||||
int add_pcap_suite(void);
|
||||
|
||||
void test_pcap(void);
|
|
@ -1,888 +0,0 @@
|
|||
/*
|
||||
FreeRDP: A Remote Desktop Protocol Implementation
|
||||
RAIL(TS RemoteApp) Virtual Channel Unit Tests
|
||||
|
||||
Copyright 2011 Vic Lee
|
||||
Copyright 2011 Roman Barabanov <romanbarabanov@gmail.com>
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
*/
|
||||
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
#include <stdlib.h>
|
||||
#include <unistd.h>
|
||||
#include <pthread.h>
|
||||
|
||||
#include <freerdp/freerdp.h>
|
||||
#include <freerdp/constants.h>
|
||||
#include <freerdp/channels/channels.h>
|
||||
#include <freerdp/utils/event.h>
|
||||
#include <winpr/print.h>
|
||||
#include <freerdp/utils/rail.h>
|
||||
#include <freerdp/rail.h>
|
||||
|
||||
|
||||
#include "test_rail.h"
|
||||
|
||||
#define HCF_HIGHCONTRASTON 0x00000001
|
||||
#define HCF_AVAILABLE 0x00000002
|
||||
#define HCF_HOTKEYACTIVE 0x00000004
|
||||
#define HCF_CONFIRMHOTKEY 0x00000008
|
||||
#define HCF_HOTKEYSOUND 0x00000010
|
||||
#define HCF_INDICATOR 0x00000020
|
||||
#define HCF_HOTKEYAVAILABLE 0x00000040
|
||||
|
||||
|
||||
int init_rail_suite(void)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
int clean_rail_suite(void)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
int add_rail_suite(void)
|
||||
{
|
||||
add_test_suite(rail);
|
||||
|
||||
add_test_function(rail_plugin);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
static BYTE client_handshake[] =
|
||||
{
|
||||
0x05, 0x00, 0x08, 0x00, 0xb0, 0x1d, 0x00, 0x00
|
||||
};
|
||||
|
||||
static BYTE client_info_pdu[] =
|
||||
{
|
||||
0x0b, 0x00, 0x08, 0x00, 0x01, 0x00, 0x00, 0x00
|
||||
};
|
||||
|
||||
// Flags: TS_RAIL_EXEC_FLAG_EXPAND_ARGUMENTS
|
||||
// ExeOrFile : ||iexplore
|
||||
// WorkingDir: f:\windows\system32
|
||||
// Arguments: www.bing.com
|
||||
|
||||
static BYTE client_execute_pdu[] =
|
||||
{
|
||||
0x01,0x00,0x5e,0x00,0x08,0x00,0x14,0x00,0x26,0x00,0x18,0x00,0x7c,0x00,
|
||||
0x7c,0x00,0x69,0x00,0x65,0x00,0x78,0x00,0x70,0x00,0x6c,0x00,0x6f,0x00,
|
||||
0x72,0x00,0x65,0x00,0x66,0x00,0x3a,0x00,0x5c,0x00,0x77,0x00,0x69,0x00,
|
||||
0x6e,0x00,0x64,0x00,0x6f,0x00,0x77,0x00,0x73,0x00,0x5c,0x00,0x73,0x00,
|
||||
0x79,0x00,0x73,0x00,0x74,0x00,0x65,0x00,0x6d,0x00,0x33,0x00,0x32,0x00,
|
||||
0x77,0x00,0x77,0x00,0x77,0x00,0x2e,0x00,0x62,0x00,0x69,0x00,0x6e,0x00,
|
||||
0x67,0x00,0x2e,0x00,0x63,0x00,0x6f,0x00,0x6d,0x00
|
||||
};
|
||||
|
||||
static BYTE client_activate_pdu[] =
|
||||
{
|
||||
0x02,0x00,
|
||||
0x09,0x00,
|
||||
0x8e,0x00,0x07,0x00,
|
||||
0x01
|
||||
};
|
||||
|
||||
|
||||
|
||||
static BYTE client_sysparam_highcontrast_pdu[] =
|
||||
{
|
||||
0x03,0x00,
|
||||
0x12,0x00,
|
||||
0x43,0x00,0x00,0x00, // SPI_SETHIGHCONTRAST
|
||||
0x7e,0x00,0x00,0x00, // HCF_AVAILABLE | HCF_HOTKEYACTIVE | HCF_CONFIRMHOTKEY
|
||||
// HCF_HOTKEYSOUND | HCF_INDICATOR | HCF_HOTKEYAVAILABLE
|
||||
0x02,0x00,0x00,0x00, // Minimum length 2
|
||||
0x00,0x00 // Unicode String
|
||||
};
|
||||
|
||||
|
||||
static BYTE client_sysparam_taskbarpos_pdu[] =
|
||||
{
|
||||
0x03,0x00,
|
||||
0x10,0x00,
|
||||
0x00,0xf0,0x00,0x00, // RAIL_SPI_TASKBARPOS
|
||||
0x00,0x00, // 0
|
||||
0x9a,0x03, // 0x039a
|
||||
0x90,0x06, // 0x0690
|
||||
0xc2,0x03 // 0x03c2
|
||||
};
|
||||
|
||||
static BYTE client_sysparam_mousebuttonswap_pdu[] =
|
||||
{
|
||||
0x03,0x00,
|
||||
0x09,0x00,
|
||||
0x21,0x00,0x00,0x00, // SPI_SETMOUSEBUTTONSWAP
|
||||
0x00 // FALSE
|
||||
};
|
||||
|
||||
|
||||
static BYTE client_sysparam_keyboardpref_pdu[] =
|
||||
{
|
||||
0x03,0x00,
|
||||
0x09,0x00,
|
||||
0x45,0x00,0x00,0x00, // SPI_SETKEYBOARDPREF
|
||||
0x00 // FALSE
|
||||
};
|
||||
|
||||
|
||||
static BYTE client_sysparam_dragfullwindow_pdu[] =
|
||||
{
|
||||
0x03,0x00,
|
||||
0x09,0x00,
|
||||
0x25,0x00,0x00,0x00, // SPI_SETDRAGFULLWINDOWS
|
||||
0x01 // TRUE
|
||||
};
|
||||
|
||||
|
||||
static BYTE client_sysparam_keyboardcues_pdu[] =
|
||||
{
|
||||
0x03,0x00,
|
||||
0x09,0x00,
|
||||
0x0b,0x10,0x00,0x00, //SPI_SETKEYBOARDCUES
|
||||
0x00 // FALSE
|
||||
};
|
||||
|
||||
static BYTE client_sysparam_setworkarea_pdu[] =
|
||||
{
|
||||
0x03,0x00,
|
||||
0x10,0x00,
|
||||
0x2f,0x00,0x00,0x00, //SPI_SETWORKAREA
|
||||
0x00,0x00, // 0
|
||||
0x00,0x00, // 0
|
||||
0x90,0x06, // 0x0690
|
||||
0x9a,0x03 // 0x039a
|
||||
};
|
||||
|
||||
static BYTE client_syscommand_pdu[] =
|
||||
{
|
||||
0x04,0x00,
|
||||
0x0a,0x00,
|
||||
0x52,0x00,0x02,0x00,
|
||||
0x20,0xf0
|
||||
};
|
||||
|
||||
static BYTE client_notify_pdu[] =
|
||||
{
|
||||
0x06,0x00,
|
||||
0x10,0x00,
|
||||
0xaa,0x01,0x02,0x00,
|
||||
0x02,0x00,0x00,0x00,
|
||||
0x04,0x02,0x00,0x00
|
||||
};
|
||||
|
||||
static BYTE client_windowmove_pdu[] =
|
||||
{
|
||||
0x08,0x00,
|
||||
0x10,0x00,
|
||||
0x20,0x00,0x02,0x00,
|
||||
0x09,0x03,
|
||||
0x00,0x01,
|
||||
0xdb,0x05,
|
||||
0x88,0x01
|
||||
};
|
||||
|
||||
static BYTE client_system_menu_pdu[] =
|
||||
{
|
||||
0x0c,0x00,
|
||||
0x0c,0x00,
|
||||
0x22,0x01,0x09,0x00,
|
||||
0xa4,0xff,
|
||||
0x4a,0x02
|
||||
};
|
||||
|
||||
static BYTE client_langbar_pdu[] =
|
||||
{
|
||||
0x0D,0x00,0x08,0x00,0x01,0x00,0x00,0x00
|
||||
};
|
||||
|
||||
static BYTE client_get_app_id_req_pdu[] =
|
||||
{
|
||||
0x0E,0x00,0x08,0x00,0x52,0x00,0x02,0x00
|
||||
};
|
||||
|
||||
static BYTE server_handshake[] =
|
||||
{
|
||||
0x05, 0x00, 0x08, 0x00, 0xb0, 0x1d, 0x00, 0x00
|
||||
};
|
||||
|
||||
static BYTE server_exec_result_pdu[] =
|
||||
{
|
||||
0x80,0x00,0x24,0x00,0x08,0x00,0x03,0x00,0x15,0x00,0x00,0x00,0x00,0x00,
|
||||
0x14,0x00,0x7c,0x00,0x7c,0x00,0x57,0x00,0x72,0x00,0x6f,0x00,0x6e,0x00,
|
||||
0x67,0x00,0x41,0x00,0x70,0x00,0x70,0x00
|
||||
};
|
||||
|
||||
static BYTE server_exec_result_exe_or_file[] =
|
||||
{
|
||||
0x7c,0x00,0x7c,0x00,0x57,0x00,0x72,0x00,0x6f,0x00,0x6e,0x00,
|
||||
0x67,0x00,0x41,0x00,0x70,0x00,0x70,0x00
|
||||
};
|
||||
|
||||
static BYTE server_sysparam1_pdu[] =
|
||||
{
|
||||
0x03,0x00,
|
||||
0x09,0x00,
|
||||
0x77,0x00,0x00,0x00,
|
||||
0x00
|
||||
};
|
||||
|
||||
static BYTE server_sysparam2_pdu[] =
|
||||
{
|
||||
0x03,0x00,
|
||||
0x09,0x00,
|
||||
0x11,0x00,0x00,0x00,
|
||||
0x00
|
||||
};
|
||||
|
||||
static BYTE server_localmovesize_start_pdu[] =
|
||||
{
|
||||
0x09,0x00,0x10,0x00,0x8e,0x00,0x07,0x00,0x01,0x00,0x09,0x00,0x7e,0x01,
|
||||
0x0a,0x00
|
||||
};
|
||||
|
||||
static BYTE server_localmovesize_stop_pdu[] =
|
||||
{
|
||||
0x09,0x00,0x10,0x00,0x8e,0x00,0x07,0x00,0x00,0x00,0x09,0x00,0xa6,0x00,
|
||||
0x44,0x00
|
||||
};
|
||||
|
||||
static BYTE server_minmaxinfo_pdu[] =
|
||||
{
|
||||
0x0a,0x00,0x18,0x00,0x8e,0x00,0x07,0x00,0x08,0x04,0xd6,0x02,0x00,0x00,
|
||||
0x00,0x00,0x70,0x00,0x1b,0x00,0x0c,0x04,0x0c,0x03
|
||||
};
|
||||
|
||||
static BYTE server_langbar_pdu[] =
|
||||
{
|
||||
0x0D,0x00,0x08,0x00,0x01,0x00,0x00,0x00
|
||||
};
|
||||
|
||||
|
||||
static BYTE server_app_get_resp_pdu[] =
|
||||
{
|
||||
0x0F,0x00,0x08,0x02,0x52,0x00,0x02,0x00,0x6d,0x00,0x69,0x00,0x63,0x00,
|
||||
0x72,0x00,0x6f,0x00,0x73,0x00,0x6f,0x00,0x66,0x00,0x74,0x00,0x2e,0x00,
|
||||
0x77,0x00,0x69,0x00,0x6e,0x6f,0x00,0x77,0x00,0x73,0x00,0x2e,0x00,0x6e,
|
||||
0x00,0x6f,0x00,0x74,0x00,0x65,0x00,0x70,0x00,0x61,0x00,0x64,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,
|
||||
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,
|
||||
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,
|
||||
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,
|
||||
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,
|
||||
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00
|
||||
};
|
||||
|
||||
static BYTE server_app_get_resp_app_id[] =
|
||||
{
|
||||
0x6d,0x00,0x69,0x00,0x63,0x00,0x72,0x00,0x6f,0x00,0x73,0x00,0x6f,0x00,
|
||||
0x66,0x00,0x74,0x00,0x2e,0x00,0x77,0x00,0x69,0x00,0x6e,0x6f,0x00,0x77,
|
||||
0x00,0x73,0x00,0x2e,0x00,0x6e,0x00,0x6f,0x00,0x74,0x00,0x65,0x00,0x70,
|
||||
0x00,0x61,0x00,0x64,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,
|
||||
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,
|
||||
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,
|
||||
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,
|
||||
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00
|
||||
};
|
||||
|
||||
|
||||
#define EMULATE_SERVER_SEND_CHANNEL_DATA(inst, byte_array) \
|
||||
emulate_server_send_channel_data(inst, byte_array, ARRAYSIZE(byte_array))
|
||||
|
||||
#define STREAM_EQUAL_TO_DUMP(stream, dump) \
|
||||
(stream_equal_dump((stream)->data, (stream)->size, dump, ARRAYSIZE(dump)))
|
||||
|
||||
#define UNICODE_STRING_EQUAL_TO_DUMP(ustring, dump) \
|
||||
(stream_equal_dump((ustring)->string, (ustring)->length, dump, ARRAYSIZE(dump)))
|
||||
|
||||
typedef struct
|
||||
{
|
||||
RAIL_HANDSHAKE_ORDER handshake;
|
||||
RAIL_CLIENT_STATUS_ORDER client_status;
|
||||
RAIL_EXEC_ORDER exec;
|
||||
RAIL_EXEC_RESULT_ORDER exec_result;
|
||||
RAIL_SYSPARAM_ORDER sysparam;
|
||||
RAIL_ACTIVATE_ORDER activate;
|
||||
RAIL_SYSMENU_ORDER sysmenu;
|
||||
RAIL_SYSCOMMAND_ORDER syscommand;
|
||||
RAIL_NOTIFY_EVENT_ORDER notify_event;
|
||||
RAIL_MINMAXINFO_ORDER minmaxinfo;
|
||||
RAIL_LOCALMOVESIZE_ORDER localmovesize;
|
||||
RAIL_WINDOW_MOVE_ORDER window_move;
|
||||
RAIL_LANGBAR_INFO_ORDER langbar_info;
|
||||
RAIL_GET_APPID_REQ_ORDER get_appid_req;
|
||||
RAIL_GET_APPID_RESP_ORDER get_appid_resp;
|
||||
|
||||
} RAIL_ORDERS;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
RAIL_ORDERS order_info;
|
||||
UINT32 event_type;
|
||||
}
|
||||
RAIL_EVENT;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
rdpChannels* chan_man;
|
||||
freerdp* instance;
|
||||
int th_count;
|
||||
int th_to_finish;
|
||||
|
||||
RAIL_ORDERS out_rail_orders;
|
||||
|
||||
RAIL_EVENT in_events[20];
|
||||
size_t in_events_number;
|
||||
|
||||
wStream in_streams[20];
|
||||
size_t in_streams_number;
|
||||
|
||||
RDP_PLUGIN_DATA plugin_data;
|
||||
|
||||
|
||||
} thread_param;
|
||||
|
||||
static thread_param* global_thread_params = NULL;
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
int stream_equal_dump(void * dataS, size_t sizeS, void * data, size_t size)
|
||||
{
|
||||
size_t i;
|
||||
if (sizeS != size)
|
||||
{
|
||||
printf("----------------- stream_equal_dump -----------------\n");
|
||||
printf("Stream and dump have different length (%d != %d)\n",
|
||||
(int) sizeS, (int) size);
|
||||
printf("Stream hexdump:\n");
|
||||
winpr_HexDump(dataS, sizeS);
|
||||
|
||||
printf("Dump hexdump:\n");
|
||||
winpr_HexDump(data, size);
|
||||
|
||||
printf("----------------- stream_equal_dump -----------------\n");
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
for (i=0; i < size; i++)
|
||||
{
|
||||
if (((BYTE*)dataS)[i] != ((BYTE*)data)[i])
|
||||
{
|
||||
printf("----------------- stream_equal_dump -----------------\n");
|
||||
printf("Stream and dump have different content from %d offset.\n", (int) i);
|
||||
printf("Stream hexdump:\n");
|
||||
winpr_HexDump(dataS, sizeS);
|
||||
|
||||
printf("Dump hexdump:\n");
|
||||
winpr_HexDump(data, size);
|
||||
printf("----------------- stream_equal_dump -----------------\n");
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
//-----------------------------------------------------------------------------
|
||||
static void test_on_free_rail_client_event(wMessage* event)
|
||||
{
|
||||
if (event->event_class == RDP_EVENT_CLASS_RAIL)
|
||||
{
|
||||
rail_free_cloned_order(event->event_type, event->user_data);
|
||||
}
|
||||
}
|
||||
//-----------------------------------------------------------------------------
|
||||
static void send_ui_event2plugin(
|
||||
rdpChannels* chan_man,
|
||||
UINT16 event_type,
|
||||
void * data
|
||||
)
|
||||
{
|
||||
wMessage* out_event = NULL;
|
||||
void * payload = NULL;
|
||||
|
||||
payload = rail_clone_order(event_type, data);
|
||||
if (payload != NULL)
|
||||
{
|
||||
out_event = freerdp_event_new(RDP_EVENT_CLASS_RAIL, event_type,
|
||||
test_on_free_rail_client_event, payload);
|
||||
freerdp_channels_send_event(chan_man, out_event);
|
||||
}
|
||||
}
|
||||
//-----------------------------------------------------------------------------
|
||||
static void emulate_server_send_channel_data(
|
||||
freerdp* instance,
|
||||
void* data,
|
||||
size_t size
|
||||
)
|
||||
{
|
||||
static int counter = 0;
|
||||
counter++;
|
||||
|
||||
printf("Emulate server packet (%d packet):\n", counter);
|
||||
winpr_HexDump(data, size);
|
||||
|
||||
freerdp_channels_data(instance, 0, (char*)data, size,
|
||||
CHANNEL_FLAG_FIRST | CHANNEL_FLAG_LAST, size);
|
||||
usleep(10*1000);
|
||||
}
|
||||
static void save_dump(void* data, size_t size)
|
||||
{
|
||||
thread_param * p = global_thread_params;
|
||||
if (p->in_streams_number < ARRAYSIZE(p->in_streams))
|
||||
{
|
||||
wStream* s = &p->in_streams[p->in_streams_number];
|
||||
s->buffer = malloc(size);
|
||||
s->capacity = size;
|
||||
|
||||
memcpy(s->buffer, data, size);
|
||||
p->in_streams_number++;
|
||||
}
|
||||
}
|
||||
//-----------------------------------------------------------------------------
|
||||
static int emulate_client_send_channel_data(
|
||||
freerdp* freerdp, int channelId, BYTE* data, int size
|
||||
)
|
||||
{
|
||||
static int counter = 0;
|
||||
counter++;
|
||||
|
||||
printf("Client send to server (%d packet):\n", counter);
|
||||
winpr_HexDump(data, size);
|
||||
|
||||
// add to global dumps list
|
||||
save_dump(data, size);
|
||||
|
||||
return 0;
|
||||
}
|
||||
//-----------------------------------------------------------------------------
|
||||
void save_event(wMessage* event, RAIL_EVENT* rail_event)
|
||||
{
|
||||
rail_event->event_type = event->event_type;
|
||||
|
||||
switch (event->event_type)
|
||||
{
|
||||
case RDP_EVENT_TYPE_RAIL_CHANNEL_GET_SYSPARAMS:
|
||||
printf("UI receive Get Sysparams Event\n");
|
||||
break;
|
||||
|
||||
case RDP_EVENT_TYPE_RAIL_CHANNEL_EXEC_RESULTS:
|
||||
{
|
||||
RAIL_EXEC_RESULT_ORDER* exec_result = (RAIL_EXEC_RESULT_ORDER*)event->user_data;
|
||||
printf("UI receive Exec Results Event\n");
|
||||
memcpy(&rail_event->order_info.exec_result, event->user_data,
|
||||
sizeof(RAIL_EXEC_RESULT_ORDER));
|
||||
|
||||
rail_unicode_string_alloc(&rail_event->order_info.exec_result.exeOrFile,
|
||||
exec_result->exeOrFile.length);
|
||||
|
||||
memcpy(rail_event->order_info.exec_result.exeOrFile.string,
|
||||
exec_result->exeOrFile.string,
|
||||
exec_result->exeOrFile.length);
|
||||
}
|
||||
break;
|
||||
|
||||
case RDP_EVENT_TYPE_RAIL_CHANNEL_SERVER_SYSPARAM:
|
||||
printf("UI receive Server Sysparam Event\n");
|
||||
memcpy(&rail_event->order_info.sysparam, event->user_data,
|
||||
sizeof(RAIL_SYSPARAM_ORDER));
|
||||
break;
|
||||
|
||||
case RDP_EVENT_TYPE_RAIL_CHANNEL_SERVER_MINMAXINFO:
|
||||
printf("UI receive Server Minmax Info Event\n");
|
||||
memcpy(&rail_event->order_info.minmaxinfo, event->user_data,
|
||||
sizeof(RAIL_MINMAXINFO_ORDER));
|
||||
break;
|
||||
|
||||
case RDP_EVENT_TYPE_RAIL_CHANNEL_SERVER_LOCALMOVESIZE:
|
||||
printf("UI receive Server Local Movesize Event\n");
|
||||
memcpy(&rail_event->order_info.localmovesize, event->user_data,
|
||||
sizeof(RAIL_LOCALMOVESIZE_ORDER));
|
||||
break;
|
||||
|
||||
case RDP_EVENT_TYPE_RAIL_CHANNEL_APPID_RESP:
|
||||
printf("UI receive AppId Response Event\n");
|
||||
memcpy(&rail_event->order_info.get_appid_resp, event->user_data,
|
||||
sizeof(RAIL_GET_APPID_RESP_ORDER));
|
||||
|
||||
rail_event->order_info.get_appid_resp.applicationId.string =
|
||||
&rail_event->order_info.get_appid_resp.applicationIdBuffer[0];
|
||||
break;
|
||||
|
||||
case RDP_EVENT_TYPE_RAIL_CHANNEL_LANGBARINFO:
|
||||
printf("UI receive Language Info Event\n");
|
||||
memcpy(&rail_event->order_info.langbar_info, event->user_data,
|
||||
sizeof(RAIL_LANGBAR_INFO_ORDER));
|
||||
break;
|
||||
}
|
||||
}
|
||||
//-----------------------------------------------------------------------------
|
||||
static void process_events_and_channel_data_from_plugin(thread_param* param)
|
||||
{
|
||||
wMessage* event;
|
||||
|
||||
param->th_count++;
|
||||
while (param->th_to_finish == 0)
|
||||
{
|
||||
freerdp_channels_check_fds(param->chan_man, param->instance);
|
||||
|
||||
while (1)
|
||||
{
|
||||
event = freerdp_channels_pop_event(param->chan_man);
|
||||
if (event == NULL) break;
|
||||
|
||||
static int counter = 0;
|
||||
counter++;
|
||||
|
||||
printf("UI receive event. (type=%d counter=%d).\n",
|
||||
event->event_type,
|
||||
counter);
|
||||
|
||||
// add to global event list
|
||||
if (param->in_events_number < ARRAYSIZE(param->in_events))
|
||||
{
|
||||
save_event(event, ¶m->in_events[param->in_events_number]);
|
||||
param->in_events_number++;
|
||||
}
|
||||
freerdp_event_free(event);
|
||||
}
|
||||
|
||||
usleep(1000);
|
||||
}
|
||||
param->th_count--;
|
||||
}
|
||||
//-----------------------------------------------------------------------------
|
||||
void* thread_func(void* param)
|
||||
{
|
||||
thread_param* th_param = (thread_param*)param;
|
||||
process_events_and_channel_data_from_plugin(th_param);
|
||||
pthread_detach(pthread_self());
|
||||
|
||||
return NULL;
|
||||
}
|
||||
//-----------------------------------------------------------------------------
|
||||
void test_rail_plugin(void)
|
||||
{
|
||||
thread_param param;
|
||||
pthread_t thread;
|
||||
|
||||
rdpChannels* chan_man;
|
||||
rdpSettings settings = { 0 };
|
||||
freerdp s_inst = { 0 };
|
||||
freerdp* inst = &s_inst;
|
||||
size_t sn = 0;
|
||||
size_t en = 0;
|
||||
wStream* ss = NULL;
|
||||
RAIL_EVENT* ee = NULL;
|
||||
|
||||
printf("\n");
|
||||
|
||||
settings.Hostname = "testhost";
|
||||
inst->settings = &settings;
|
||||
inst->SendChannelData = emulate_client_send_channel_data;
|
||||
|
||||
chan_man = freerdp_channels_new();
|
||||
|
||||
freerdp_channels_load_plugin(chan_man, &settings, "../channels/rail/rail.so", NULL);
|
||||
freerdp_channels_pre_connect(chan_man, inst);
|
||||
freerdp_channels_post_connect(chan_man, inst);
|
||||
|
||||
memset(¶m, 0, sizeof(param));
|
||||
|
||||
param.chan_man = chan_man;
|
||||
param.instance = inst;
|
||||
param.th_count = 0;
|
||||
param.th_to_finish = 0;
|
||||
|
||||
global_thread_params = ¶m;
|
||||
|
||||
pthread_create(&thread, 0, thread_func, ¶m);
|
||||
|
||||
// 1. Emulate server handshake binary
|
||||
EMULATE_SERVER_SEND_CHANNEL_DATA(inst, server_handshake);
|
||||
EMULATE_SERVER_SEND_CHANNEL_DATA(inst, server_exec_result_pdu);
|
||||
EMULATE_SERVER_SEND_CHANNEL_DATA(inst, server_sysparam1_pdu);
|
||||
EMULATE_SERVER_SEND_CHANNEL_DATA(inst, server_sysparam2_pdu);
|
||||
EMULATE_SERVER_SEND_CHANNEL_DATA(inst, server_localmovesize_start_pdu);
|
||||
EMULATE_SERVER_SEND_CHANNEL_DATA(inst, server_localmovesize_stop_pdu);
|
||||
EMULATE_SERVER_SEND_CHANNEL_DATA(inst, server_minmaxinfo_pdu);
|
||||
EMULATE_SERVER_SEND_CHANNEL_DATA(inst, server_langbar_pdu);
|
||||
EMULATE_SERVER_SEND_CHANNEL_DATA(inst, server_app_get_resp_pdu);
|
||||
|
||||
// 2. Send UI events
|
||||
|
||||
param.out_rail_orders.sysparam.params = 0;
|
||||
|
||||
param.out_rail_orders.sysparam.params |= SPI_MASK_SET_HIGH_CONTRAST;
|
||||
param.out_rail_orders.sysparam.highContrast.flags = 0x7e;
|
||||
param.out_rail_orders.sysparam.highContrast.colorScheme.length = 0;
|
||||
param.out_rail_orders.sysparam.highContrast.colorScheme.string = NULL;
|
||||
|
||||
param.out_rail_orders.sysparam.params |= SPI_MASK_TASKBAR_POS;
|
||||
param.out_rail_orders.sysparam.taskbarPos.left = 0;
|
||||
param.out_rail_orders.sysparam.taskbarPos.top = 0x039a;
|
||||
param.out_rail_orders.sysparam.taskbarPos.right = 0x0690;
|
||||
param.out_rail_orders.sysparam.taskbarPos.bottom = 0x03c2;
|
||||
|
||||
param.out_rail_orders.sysparam.params |= SPI_MASK_SET_MOUSE_BUTTON_SWAP;
|
||||
param.out_rail_orders.sysparam.mouseButtonSwap = FALSE;
|
||||
|
||||
param.out_rail_orders.sysparam.params |= SPI_MASK_SET_KEYBOARD_PREF;
|
||||
param.out_rail_orders.sysparam.keyboardPref = FALSE;
|
||||
|
||||
param.out_rail_orders.sysparam.params |= SPI_MASK_SET_DRAG_FULL_WINDOWS;
|
||||
param.out_rail_orders.sysparam.dragFullWindows = TRUE;
|
||||
|
||||
param.out_rail_orders.sysparam.params |= SPI_MASK_SET_KEYBOARD_CUES;
|
||||
param.out_rail_orders.sysparam.keyboardCues = FALSE;
|
||||
|
||||
param.out_rail_orders.sysparam.params |= SPI_MASK_SET_WORK_AREA;
|
||||
param.out_rail_orders.sysparam.workArea.left = 0;
|
||||
param.out_rail_orders.sysparam.workArea.top = 0;
|
||||
param.out_rail_orders.sysparam.workArea.right = 0x0690;
|
||||
param.out_rail_orders.sysparam.workArea.bottom = 0x039a;
|
||||
|
||||
send_ui_event2plugin(chan_man, RDP_EVENT_TYPE_RAIL_CLIENT_SET_SYSPARAMS,
|
||||
¶m.out_rail_orders.sysparam);
|
||||
|
||||
param.plugin_data.size = sizeof(RDP_PLUGIN_DATA);
|
||||
param.plugin_data.data[0] = "||iexplore";
|
||||
param.plugin_data.data[1] = "f:\\windows\\system32";
|
||||
param.plugin_data.data[2] = "www.bing.com";
|
||||
send_ui_event2plugin(chan_man, RDP_EVENT_TYPE_RAIL_CLIENT_EXEC_REMOTE_APP,
|
||||
¶m.plugin_data);
|
||||
|
||||
param.out_rail_orders.activate.enabled = TRUE;
|
||||
param.out_rail_orders.activate.windowId = 0x0007008e;
|
||||
send_ui_event2plugin(chan_man, RDP_EVENT_TYPE_RAIL_CLIENT_ACTIVATE,
|
||||
¶m.out_rail_orders.activate);
|
||||
|
||||
param.out_rail_orders.syscommand.windowId = 0x00020052;
|
||||
param.out_rail_orders.syscommand.command = 0xf020;
|
||||
send_ui_event2plugin(chan_man, RDP_EVENT_TYPE_RAIL_CLIENT_SYSCOMMAND,
|
||||
¶m.out_rail_orders.syscommand);
|
||||
|
||||
param.out_rail_orders.notify_event.windowId = 0x000201aa;
|
||||
param.out_rail_orders.notify_event.notifyIconId = 0x02;
|
||||
param.out_rail_orders.notify_event.message = 0x0204;
|
||||
send_ui_event2plugin(chan_man, RDP_EVENT_TYPE_RAIL_CLIENT_NOTIFY_EVENT,
|
||||
¶m.out_rail_orders.notify_event);
|
||||
|
||||
|
||||
param.out_rail_orders.window_move.windowId = 0x00020020;
|
||||
param.out_rail_orders.window_move.left = 0x0309;
|
||||
param.out_rail_orders.window_move.top = 0x0100;
|
||||
param.out_rail_orders.window_move.right = 0x05db;
|
||||
param.out_rail_orders.window_move.bottom = 0x0188;
|
||||
send_ui_event2plugin(chan_man, RDP_EVENT_TYPE_RAIL_CLIENT_WINDOW_MOVE,
|
||||
¶m.out_rail_orders.window_move);
|
||||
|
||||
param.out_rail_orders.sysmenu.windowId = 0x00090122;
|
||||
param.out_rail_orders.sysmenu.left = 0xffa4; // TODO: possible negative values?
|
||||
param.out_rail_orders.sysmenu.top = 0x024a;
|
||||
send_ui_event2plugin(chan_man, RDP_EVENT_TYPE_RAIL_CLIENT_SYSMENU,
|
||||
¶m.out_rail_orders.sysmenu);
|
||||
|
||||
param.out_rail_orders.langbar_info.languageBarStatus = 0x00000001;
|
||||
send_ui_event2plugin(chan_man, RDP_EVENT_TYPE_RAIL_CLIENT_LANGBARINFO,
|
||||
¶m.out_rail_orders.langbar_info);
|
||||
|
||||
param.out_rail_orders.get_appid_req.windowId = 0x00020052;
|
||||
send_ui_event2plugin(chan_man, RDP_EVENT_TYPE_RAIL_CLIENT_APPID_REQ,
|
||||
¶m.out_rail_orders.get_appid_req);
|
||||
|
||||
// Waiting for possible events or data
|
||||
sleep(1);
|
||||
|
||||
// Finishing thread and wait for it
|
||||
param.th_to_finish = 1;
|
||||
while (param.th_count > 0)
|
||||
{
|
||||
usleep(1000);
|
||||
}
|
||||
|
||||
// We need to collected all events and data dumps and then to.
|
||||
// create CU_ASSERT series here!
|
||||
sn = param.in_streams_number;
|
||||
en = param.in_events_number;
|
||||
ss = ¶m.in_streams[0];
|
||||
ee = ¶m.in_events[0];
|
||||
|
||||
CU_ASSERT(sn > 0 && STREAM_EQUAL_TO_DUMP(&ss[ 0], client_handshake));
|
||||
CU_ASSERT(sn > 1 && STREAM_EQUAL_TO_DUMP(&ss[ 1], client_info_pdu));
|
||||
CU_ASSERT(sn > 2 && STREAM_EQUAL_TO_DUMP(&ss[ 2], client_sysparam_highcontrast_pdu));
|
||||
CU_ASSERT(sn > 3 && STREAM_EQUAL_TO_DUMP(&ss[ 3], client_sysparam_taskbarpos_pdu));
|
||||
CU_ASSERT(sn > 4 && STREAM_EQUAL_TO_DUMP(&ss[ 4], client_sysparam_mousebuttonswap_pdu));
|
||||
CU_ASSERT(sn > 5 && STREAM_EQUAL_TO_DUMP(&ss[ 5], client_sysparam_keyboardpref_pdu));
|
||||
CU_ASSERT(sn > 6 && STREAM_EQUAL_TO_DUMP(&ss[ 6], client_sysparam_dragfullwindow_pdu));
|
||||
CU_ASSERT(sn > 7 && STREAM_EQUAL_TO_DUMP(&ss[ 7], client_sysparam_keyboardcues_pdu));
|
||||
CU_ASSERT(sn > 8 && STREAM_EQUAL_TO_DUMP(&ss[ 8], client_sysparam_setworkarea_pdu));
|
||||
CU_ASSERT(sn > 9 && STREAM_EQUAL_TO_DUMP(&ss[ 9], client_execute_pdu));
|
||||
CU_ASSERT(sn >10 && STREAM_EQUAL_TO_DUMP(&ss[10], client_activate_pdu));
|
||||
CU_ASSERT(sn >11 && STREAM_EQUAL_TO_DUMP(&ss[11], client_syscommand_pdu));
|
||||
CU_ASSERT(sn >12 && STREAM_EQUAL_TO_DUMP(&ss[12], client_notify_pdu));
|
||||
CU_ASSERT(sn >13 && STREAM_EQUAL_TO_DUMP(&ss[13], client_windowmove_pdu));
|
||||
CU_ASSERT(sn >14 && STREAM_EQUAL_TO_DUMP(&ss[14], client_system_menu_pdu));
|
||||
CU_ASSERT(sn >15 && STREAM_EQUAL_TO_DUMP(&ss[15], client_langbar_pdu));
|
||||
CU_ASSERT(sn >16 && STREAM_EQUAL_TO_DUMP(&ss[16], client_get_app_id_req_pdu));
|
||||
|
||||
CU_ASSERT(en > 0 && ee[ 0].event_type == RDP_EVENT_TYPE_RAIL_CHANNEL_GET_SYSPARAMS);
|
||||
CU_ASSERT(en > 1 &&
|
||||
ee[ 1].event_type == RDP_EVENT_TYPE_RAIL_CHANNEL_EXEC_RESULTS &&
|
||||
ee[ 1].order_info.exec_result.flags == 0x08 &&
|
||||
ee[ 1].order_info.exec_result.execResult == 0x03 &&
|
||||
UNICODE_STRING_EQUAL_TO_DUMP(
|
||||
&ee[ 1].order_info.exec_result.exeOrFile,
|
||||
server_exec_result_exe_or_file)
|
||||
);
|
||||
CU_ASSERT(en > 2 &&
|
||||
ee[ 2].event_type == RDP_EVENT_TYPE_RAIL_CHANNEL_SERVER_SYSPARAM &&
|
||||
ee[ 2].order_info.sysparam.setScreenSaveSecure == FALSE
|
||||
);
|
||||
|
||||
CU_ASSERT(en > 3 &&
|
||||
ee[ 3].event_type == RDP_EVENT_TYPE_RAIL_CHANNEL_SERVER_SYSPARAM &&
|
||||
ee[ 3].order_info.sysparam.setScreenSaveActive == FALSE
|
||||
);
|
||||
|
||||
CU_ASSERT(en > 4 &&
|
||||
ee[ 4].event_type == RDP_EVENT_TYPE_RAIL_CHANNEL_SERVER_LOCALMOVESIZE &&
|
||||
ee[ 4].order_info.localmovesize.windowId == 0x0007008e &&
|
||||
ee[ 4].order_info.localmovesize.isMoveSizeStart == TRUE &&
|
||||
ee[ 4].order_info.localmovesize.moveSizeType == RAIL_WMSZ_MOVE &&
|
||||
ee[ 4].order_info.localmovesize.posX == 0x017e &&
|
||||
ee[ 4].order_info.localmovesize.posY == 0x000a
|
||||
);
|
||||
|
||||
CU_ASSERT(en > 5 &&
|
||||
ee[ 5].event_type == RDP_EVENT_TYPE_RAIL_CHANNEL_SERVER_LOCALMOVESIZE &&
|
||||
ee[ 5].order_info.localmovesize.windowId == 0x0007008e &&
|
||||
ee[ 5].order_info.localmovesize.isMoveSizeStart == FALSE &&
|
||||
ee[ 5].order_info.localmovesize.moveSizeType == RAIL_WMSZ_MOVE &&
|
||||
ee[ 5].order_info.localmovesize.posX == 0x00a6 &&
|
||||
ee[ 5].order_info.localmovesize.posY == 0x0044
|
||||
);
|
||||
|
||||
CU_ASSERT(en > 6 &&
|
||||
ee[ 6].event_type == RDP_EVENT_TYPE_RAIL_CHANNEL_SERVER_MINMAXINFO &&
|
||||
ee[ 6].order_info.minmaxinfo.windowId == 0x0007008e &&
|
||||
ee[ 6].order_info.minmaxinfo.maxWidth == 0x0408 &&
|
||||
ee[ 6].order_info.minmaxinfo.maxHeight == 0x02d6 &&
|
||||
ee[ 6].order_info.minmaxinfo.maxPosX == 0x0000 &&
|
||||
ee[ 6].order_info.minmaxinfo.maxPosY == 0x0000 &&
|
||||
ee[ 6].order_info.minmaxinfo.minTrackWidth == 0x0070 &&
|
||||
ee[ 6].order_info.minmaxinfo.minTrackHeight == 0x001b &&
|
||||
ee[ 6].order_info.minmaxinfo.maxTrackWidth == 0x040c &&
|
||||
ee[ 6].order_info.minmaxinfo.maxTrackHeight == 0x030c
|
||||
);
|
||||
|
||||
CU_ASSERT(en > 7 &&
|
||||
ee[ 7].event_type == RDP_EVENT_TYPE_RAIL_CHANNEL_LANGBARINFO &&
|
||||
ee[ 7].order_info.langbar_info.languageBarStatus == TF_SFT_SHOWNORMAL
|
||||
);
|
||||
|
||||
CU_ASSERT(en > 8 &&
|
||||
ee[ 8].event_type == RDP_EVENT_TYPE_RAIL_CHANNEL_APPID_RESP &&
|
||||
ee[ 8].order_info.get_appid_resp.windowId == 0x00020052 &&
|
||||
UNICODE_STRING_EQUAL_TO_DUMP(
|
||||
&ee[ 8].order_info.get_appid_resp.applicationId,
|
||||
server_app_get_resp_app_id
|
||||
)
|
||||
);
|
||||
|
||||
freerdp_channels_close(chan_man, inst);
|
||||
freerdp_channels_free(chan_man);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
|
@ -1,26 +0,0 @@
|
|||
/*
|
||||
FreeRDP: A Remote Desktop Protocol Implementation
|
||||
RAIL(TS RemoteApp) Virtual Channel Unit Tests
|
||||
|
||||
Copyright 2011 Roman Barabanov <romanbarabanov@gmail.com>
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
*/
|
||||
|
||||
#include "test_freerdp.h"
|
||||
|
||||
int init_rail_suite(void);
|
||||
int clean_rail_suite(void);
|
||||
int add_rail_suite(void);
|
||||
|
||||
void test_rail_plugin(void);
|
418
cunit/test_rfx.c
418
cunit/test_rfx.c
|
@ -1,418 +0,0 @@
|
|||
/**
|
||||
* FreeRDP: A Remote Desktop Protocol Implementation
|
||||
* RemoteFX Codec Library Unit Tests
|
||||
*
|
||||
* Copyright 2011 Vic Lee
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
/**
|
||||
* The sample data comes from [MS-RDPRFX] 4.2.3, which is decoded into three
|
||||
* vertical bands in red (21x64), green (23x64) and blue(20x64) color.
|
||||
*/
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
|
||||
#include <winpr/crt.h>
|
||||
|
||||
#include <freerdp/types.h>
|
||||
#include <freerdp/utils/print.h>
|
||||
#include <winpr/print.h>
|
||||
#include <freerdp/codec/rfx.h>
|
||||
|
||||
#include "rfx_types.h"
|
||||
#include "rfx_bitstream.h"
|
||||
#include "rfx_rlgr.h"
|
||||
#include "rfx_differential.h"
|
||||
#include "rfx_quantization.h"
|
||||
#include "rfx_dwt.h"
|
||||
#include "rfx_decode.h"
|
||||
#include "rfx_encode.h"
|
||||
|
||||
#include "test_rfx.h"
|
||||
|
||||
static const BYTE y_data[] =
|
||||
{
|
||||
0x19, 0x82, 0x1d, 0x10, 0x62, 0x9d, 0x28, 0x85, 0x2c, 0xa2, 0x14, 0xb2, 0x88,
|
||||
0x52, 0xca, 0x21, 0x4b, 0x28, 0x85, 0x2c, 0xa2, 0x14, 0xb2, 0x88, 0x52, 0xca, 0x21, 0x4b, 0x28,
|
||||
0x85, 0x2c, 0xa2, 0x14, 0xb2, 0x88, 0x52, 0xca, 0x21, 0x4b, 0x28, 0x85, 0x2c, 0xa2, 0x14, 0xb2,
|
||||
0x88, 0x52, 0xca, 0x21, 0x4b, 0x28, 0x85, 0x2c, 0xa2, 0x14, 0xb2, 0x88, 0x52, 0xca, 0x21, 0x4b,
|
||||
0x28, 0x85, 0x2c, 0xa2, 0x14, 0xb2, 0x88, 0x52, 0xca, 0x21, 0x4b, 0x28, 0x85, 0x2c, 0xa2, 0x14,
|
||||
0xb2, 0x88, 0x52, 0xca, 0x21, 0x4b, 0x28, 0x85, 0x2c, 0xa2, 0x14, 0xb0, 0x00, 0x20, 0xf4, 0x40,
|
||||
0x0c, 0xc1, 0x1e, 0x20, 0x26, 0x22, 0x20, 0x33, 0x23, 0xc4, 0x23, 0x88, 0x86, 0x50, 0xf1, 0x22,
|
||||
0x68, 0x4c, 0x91, 0x85, 0x10, 0x34, 0x4c, 0x84, 0x78, 0xa2, 0x0d, 0x13, 0x21, 0x1e, 0x29, 0x06,
|
||||
0x89, 0x90, 0x8f, 0x14, 0x83, 0x44, 0xf4, 0x23, 0xc5, 0x20, 0xd1, 0x3d, 0x08, 0xf1, 0x48, 0x34,
|
||||
0x4f, 0x42, 0x3c, 0x52, 0x0d, 0x13, 0xd0, 0x8f, 0x14, 0x83, 0x44, 0xf4, 0x23, 0xc5, 0x20, 0xd1,
|
||||
0x3d, 0x08, 0xf1, 0x48, 0x34, 0x4f, 0x42, 0x3c, 0x52, 0x0d, 0x13, 0xd0, 0x8f, 0x14, 0x83, 0x44,
|
||||
0xf4, 0x23, 0xc5, 0x20, 0x00, 0x08, 0x47, 0x70, 0x15, 0x02, 0xe0, 0x7f, 0xe4, 0x9d, 0xc2, 0x51,
|
||||
0x71, 0xf4, 0x99, 0xc9, 0x57, 0xff, 0x32, 0x87, 0x9d, 0x17, 0xd6, 0x50, 0x6e, 0x06, 0x2f, 0xac,
|
||||
0xa0, 0x9c, 0x0c, 0x5f, 0x59, 0x41, 0x38, 0x18, 0xbe, 0xb2, 0x82, 0x70, 0x31, 0x7d, 0x65, 0x00,
|
||||
0x00, 0x10, 0xff, 0x9c, 0x33, 0x41, 0xf1, 0xc4, 0xb0, 0x3c, 0xff, 0xa2, 0x15, 0xbd, 0x7b, 0xea,
|
||||
0x86, 0x9b, 0x5f, 0xfc, 0x78, 0x8c, 0xf5, 0xed, 0xa8, 0x68, 0xda, 0xfd, 0x3c, 0x45, 0x7a, 0xf4,
|
||||
0xd4, 0x34, 0x6d, 0x7e, 0x9e, 0x22, 0xbd, 0x7a, 0x6a, 0x1a, 0x36, 0xbf, 0x4f, 0x11, 0x5e, 0xbd,
|
||||
0x35, 0x0d, 0x1b, 0x5f, 0xa7, 0x88, 0xaf, 0x5e, 0x9a, 0x86, 0x8d, 0xaf, 0xd3, 0xc4, 0x57, 0xaf,
|
||||
0x4d, 0x43, 0x46, 0xd7, 0xe9, 0xe2, 0x20, 0x30, 0x00
|
||||
};
|
||||
|
||||
static const BYTE cb_data[] =
|
||||
{
|
||||
0x1b, 0x04, 0x7f, 0x04, 0x31, 0x5f, 0xc2,
|
||||
0x94, 0xaf, 0x05, 0x29, 0x5e, 0x0a, 0x52, 0xbc, 0x14, 0xa5, 0x78, 0x29, 0x25, 0x78, 0x29, 0x25,
|
||||
0x78, 0x29, 0x25, 0x68, 0x52, 0x4a, 0xf0, 0x52, 0x4a, 0xf0, 0x52, 0x4a, 0xd0, 0xa4, 0x95, 0xe0,
|
||||
0xa4, 0x95, 0xe0, 0xa4, 0x95, 0xa1, 0x49, 0x2b, 0xc1, 0x49, 0x2b, 0xc1, 0x49, 0x2b, 0x42, 0x92,
|
||||
0x57, 0x82, 0x92, 0x57, 0x82, 0x92, 0x56, 0x85, 0x24, 0xaf, 0x05, 0x24, 0xaf, 0x05, 0x24, 0xad,
|
||||
0x0a, 0x49, 0x5e, 0x0a, 0x49, 0x5e, 0x0a, 0x49, 0x5a, 0x14, 0x92, 0xbc, 0x14, 0x92, 0xbc, 0x14,
|
||||
0x92, 0xb4, 0x29, 0x25, 0x78, 0x29, 0x25, 0x78, 0x00, 0x02, 0x0f, 0x02, 0x00, 0xac, 0x13, 0xfc,
|
||||
0xc0, 0x0a, 0x20, 0x10, 0x2b, 0x27, 0xf9, 0x80, 0xb0, 0x08, 0xaa, 0x3d, 0x60, 0x8c, 0x0b, 0x24,
|
||||
0xff, 0x30, 0x80, 0xc0, 0xaa, 0x13, 0xfc, 0xc2, 0x03, 0x05, 0x90, 0x9f, 0xe6, 0x10, 0x18, 0x2c,
|
||||
0x84, 0xff, 0x30, 0x81, 0x82, 0xc8, 0x4f, 0xf3, 0x08, 0x18, 0x2c, 0x84, 0xff, 0x31, 0x03, 0x05,
|
||||
0x90, 0x9f, 0xff, 0xd8, 0x40, 0x60, 0x59, 0x09, 0xfe, 0x61, 0x01, 0x81, 0x64, 0x27, 0xf9, 0x84,
|
||||
0x06, 0x0b, 0x21, 0x3f, 0xcc, 0x20, 0x30, 0x59, 0x09, 0xfe, 0x61, 0x03, 0x05, 0x90, 0x9f, 0xe6,
|
||||
0x10, 0x30, 0x59, 0x09, 0xfe, 0x62, 0x00, 0x00, 0x42, 0x15, 0x00, 0x10, 0x15, 0x01, 0xfe, 0x20,
|
||||
0x84, 0xd5, 0x01, 0x0a, 0x8f, 0xf1, 0x40, 0x33, 0x78, 0x17, 0xf9, 0xc2, 0x03, 0x83, 0x01, 0x78,
|
||||
0xe1, 0x01, 0xc1, 0x00, 0xbc, 0x70, 0x80, 0xe0, 0x80, 0x5e, 0x38, 0x40, 0x70, 0x40, 0x2f, 0x1c,
|
||||
0x20, 0x38, 0x20, 0x17, 0x8e, 0x10, 0x00, 0x00, 0x87, 0xd5, 0x08, 0x70, 0xef, 0x81, 0xa2, 0xd8,
|
||||
0xff, 0xff, 0xff, 0xfb, 0xd1, 0x2d, 0x4e, 0xa6, 0xce, 0x20, 0xa4, 0xef, 0x05, 0x78, 0x35, 0x3a,
|
||||
0x9b, 0x38, 0x82, 0x93, 0xbc, 0x15, 0xe0, 0xd4, 0xea, 0x66, 0x71, 0x05, 0x27, 0x78, 0x2b, 0xc1,
|
||||
0x29, 0xd4, 0xcc, 0xe2, 0x0a, 0x4e, 0xf0, 0x57, 0x82, 0x53, 0xa9, 0x99, 0xc4, 0x14, 0x9d, 0xe0,
|
||||
0xaf, 0x04, 0xa7, 0x53, 0x33, 0x88, 0x29, 0x3b, 0xc1, 0x5e, 0x09, 0x4e, 0xa6, 0x67, 0x10, 0x52,
|
||||
0x77, 0x82, 0xbc, 0x00, 0x18, 0x00
|
||||
};
|
||||
|
||||
static const BYTE cr_data[] =
|
||||
{
|
||||
0x1b, 0xfc, 0x11, 0xc1, 0x0f, 0x4a, 0xc1, 0x4f, 0x4a, 0xc1,
|
||||
0x4f, 0x4a, 0xa1, 0x4d, 0x95, 0x42, 0x9e, 0x95, 0x42, 0x9e, 0x95, 0x42, 0x9b, 0x2a, 0x85, 0x3d,
|
||||
0x2a, 0x85, 0x3d, 0x2a, 0x85, 0x36, 0x55, 0x0a, 0x7a, 0x55, 0x0a, 0x7a, 0x55, 0x0a, 0x6c, 0xaa,
|
||||
0x14, 0xf4, 0xaa, 0x14, 0xf4, 0xaa, 0x14, 0xd9, 0x54, 0x29, 0xe9, 0x54, 0x29, 0xe9, 0x54, 0x29,
|
||||
0xb2, 0xa8, 0x53, 0xd2, 0xa8, 0x53, 0xd2, 0xa8, 0x53, 0x65, 0x50, 0xa7, 0xa5, 0x50, 0xa7, 0xa5,
|
||||
0x50, 0xa6, 0xca, 0xa1, 0x4f, 0x4a, 0xa1, 0x4f, 0x4a, 0xa1, 0x4d, 0x95, 0x42, 0x9e, 0x95, 0x42,
|
||||
0x9e, 0x95, 0x42, 0x9b, 0x2a, 0x80, 0x00, 0x41, 0xe3, 0x80, 0x3f, 0xe2, 0x09, 0x9c, 0x00, 0x22,
|
||||
0x07, 0x03, 0xe1, 0x26, 0x70, 0x06, 0x07, 0x1f, 0x04, 0x67, 0x00, 0x61, 0xdf, 0x02, 0x67, 0x00,
|
||||
0x0c, 0x3b, 0xfe, 0x01, 0x33, 0x80, 0x06, 0x1d, 0xff, 0x00, 0x99, 0xc0, 0x03, 0x0e, 0xff, 0x80,
|
||||
0x4c, 0xe0, 0x01, 0x87, 0x7f, 0xc0, 0x26, 0x70, 0x00, 0xc3, 0xbf, 0xe0, 0x13, 0x38, 0x00, 0x61,
|
||||
0xdf, 0xf0, 0x09, 0x9c, 0x00, 0x30, 0xef, 0xf8, 0x04, 0xce, 0x00, 0x18, 0x77, 0xfc, 0x02, 0x67,
|
||||
0x00, 0x0c, 0x3b, 0xfe, 0x01, 0x33, 0x80, 0x06, 0x1d, 0xff, 0x00, 0x99, 0xc0, 0x03, 0x0e, 0xff,
|
||||
0x80, 0x4c, 0xe0, 0x01, 0x87, 0x7f, 0xc0, 0x26, 0x70, 0x00, 0x00, 0x08, 0x3c, 0x20, 0x1f, 0xf1,
|
||||
0x00, 0xf0, 0x05, 0x02, 0x93, 0x84, 0x3d, 0x20, 0xf0, 0x52, 0x81, 0xc7, 0xff, 0xff, 0xea, 0x54,
|
||||
0x01, 0x80, 0x05, 0xf5, 0x4a, 0x80, 0x30, 0x00, 0xb6, 0xa5, 0x40, 0x18, 0x00, 0x5f, 0x54, 0xa8,
|
||||
0x03, 0x00, 0x0b, 0xea, 0x95, 0x00, 0x60, 0x01, 0x6d, 0x4a, 0x80, 0x30, 0x00, 0x00, 0x22, 0x3f,
|
||||
0xba, 0x08, 0x10, 0x2b, 0x1f, 0xf2, 0x20, 0x3e, 0x49, 0x9c, 0x1f, 0x6e, 0x0f, 0x5a, 0x0f, 0xfb,
|
||||
0x18, 0x46, 0xae, 0x27, 0x9b, 0x83, 0xcb, 0x41, 0xf3, 0x18, 0x46, 0xae, 0x27, 0x9b, 0x83, 0xc5,
|
||||
0xa0, 0xf9, 0x8c, 0x22, 0xd7, 0x13, 0x8d, 0xc1, 0xe2, 0xd0, 0x7c, 0xc6, 0x11, 0x6b, 0x89, 0xc6,
|
||||
0xe0, 0xf1, 0x68, 0x3e, 0x63, 0x08, 0xb5, 0xc4, 0xe3, 0x70, 0x78, 0xb4, 0x1f, 0x31, 0x84, 0x5a,
|
||||
0xe2, 0x71, 0xb8, 0x3c, 0x5a, 0x0f, 0x98, 0xc2, 0x2d, 0x71, 0x30, 0x83, 0xc0, 0x00
|
||||
};
|
||||
|
||||
/* HL1, LH1, HH1, HL2, LH2, HH2, HL3, LH3, HH3, LL3 */
|
||||
static const unsigned int test_quantization_values[] =
|
||||
{
|
||||
6, 6, 6, 6, 7, 7, 8, 8, 8, 9
|
||||
};
|
||||
|
||||
static const BYTE rgb_scanline_data[] =
|
||||
{
|
||||
0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00,
|
||||
0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00,
|
||||
0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00,
|
||||
0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00,
|
||||
0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00,
|
||||
0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00,
|
||||
0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00,
|
||||
0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00,
|
||||
0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00,
|
||||
0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00,
|
||||
0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00,
|
||||
0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF,
|
||||
0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF,
|
||||
0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF,
|
||||
0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF,
|
||||
0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF,
|
||||
|
||||
0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00,
|
||||
0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00,
|
||||
0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00,
|
||||
0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00,
|
||||
0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00,
|
||||
0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00,
|
||||
0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00,
|
||||
0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00,
|
||||
0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00,
|
||||
0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00,
|
||||
0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00,
|
||||
0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF,
|
||||
0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF,
|
||||
0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF,
|
||||
0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF,
|
||||
0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF
|
||||
};
|
||||
|
||||
static BYTE* rgb_data;
|
||||
|
||||
int init_rfx_suite(void)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
int clean_rfx_suite(void)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
int add_rfx_suite(void)
|
||||
{
|
||||
add_test_suite(rfx);
|
||||
|
||||
add_test_function(bitstream);
|
||||
add_test_function(bitstream_enc);
|
||||
add_test_function(rlgr);
|
||||
add_test_function(differential);
|
||||
add_test_function(quantization);
|
||||
add_test_function(dwt);
|
||||
add_test_function(decode);
|
||||
add_test_function(encode);
|
||||
add_test_function(message);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
void test_bitstream(void)
|
||||
{
|
||||
UINT16 b;
|
||||
RFX_BITSTREAM* bs;
|
||||
|
||||
bs = (RFX_BITSTREAM*) malloc(sizeof(RFX_BITSTREAM));
|
||||
ZeroMemory(bs, sizeof(RFX_BITSTREAM));
|
||||
|
||||
rfx_bitstream_attach(bs, (BYTE*) y_data, sizeof(y_data));
|
||||
|
||||
while (!rfx_bitstream_eos(bs))
|
||||
{
|
||||
rfx_bitstream_get_bits(bs, 3, b);
|
||||
(void) b;
|
||||
//printf("%u ", b);
|
||||
}
|
||||
free(bs);
|
||||
|
||||
//printf("\n");
|
||||
}
|
||||
|
||||
void test_bitstream_enc(void)
|
||||
{
|
||||
BYTE buffer[10];
|
||||
RFX_BITSTREAM* bs;
|
||||
int i;
|
||||
|
||||
bs = (RFX_BITSTREAM*) malloc(sizeof(RFX_BITSTREAM));
|
||||
ZeroMemory(bs, sizeof(RFX_BITSTREAM));
|
||||
|
||||
memset(buffer, 0, sizeof(buffer));
|
||||
rfx_bitstream_attach(bs, buffer, sizeof(buffer));
|
||||
for (i = 0; i < 16; i++)
|
||||
{
|
||||
rfx_bitstream_put_bits(bs, i, 5);
|
||||
}
|
||||
/*for (i = 0; i < sizeof(buffer); i++)
|
||||
{
|
||||
printf("%X ", buffer[i]);
|
||||
}*/
|
||||
free(bs);
|
||||
|
||||
//printf("\n");
|
||||
}
|
||||
|
||||
static INT16 buffer[4096];
|
||||
|
||||
void dump_buffer(INT16* buf, int n)
|
||||
{
|
||||
int i;
|
||||
|
||||
for (i = 0; i < n; i++)
|
||||
{
|
||||
if (i % 16 == 0)
|
||||
printf("\n%04d ", i);
|
||||
printf("% 4d ", buf[i]);
|
||||
}
|
||||
printf("\n");
|
||||
}
|
||||
|
||||
void test_rlgr(void)
|
||||
{
|
||||
int n;
|
||||
|
||||
n = rfx_rlgr_decode(RLGR3, y_data, sizeof(y_data), buffer, ARRAYSIZE(buffer));
|
||||
|
||||
//printf("RLGR decode %d bytes to %d values.", sizeof(y_data), n);
|
||||
//dump_buffer(buffer, n);
|
||||
}
|
||||
|
||||
void test_differential(void)
|
||||
{
|
||||
rfx_differential_decode(buffer + 4032, 64);
|
||||
//dump_buffer(buffer + 4032, 64);
|
||||
}
|
||||
|
||||
void test_quantization(void)
|
||||
{
|
||||
rfx_quantization_decode(buffer, test_quantization_values);
|
||||
//dump_buffer(buffer, 4096);
|
||||
}
|
||||
|
||||
void test_dwt(void)
|
||||
{
|
||||
RFX_CONTEXT* context;
|
||||
|
||||
context = rfx_context_new();
|
||||
rfx_dwt_2d_decode(buffer, context->priv->dwt_buffer);
|
||||
//dump_buffer(buffer, 4096);
|
||||
rfx_context_free(context);
|
||||
}
|
||||
|
||||
/* Dump a .ppm image. */
|
||||
static void dump_ppm_image(BYTE* image_buf)
|
||||
{
|
||||
static int frame_id = 0;
|
||||
char buf[100];
|
||||
FILE* fp;
|
||||
|
||||
snprintf(buf, sizeof(buf), "/tmp/FreeRDP_Frame_%d.ppm", frame_id);
|
||||
fp = fopen(buf, "wb");
|
||||
fwrite("P6\n", 1, 3, fp);
|
||||
fwrite("# Created by FreeRDP\n", 1, 21, fp);
|
||||
fwrite("64 64\n", 1, 6, fp);
|
||||
fwrite("255\n", 1, 4, fp);
|
||||
fwrite(image_buf, 1, 4096 * 3, fp);
|
||||
fflush(fp);
|
||||
fclose(fp);
|
||||
frame_id++;
|
||||
}
|
||||
|
||||
void test_decode(void)
|
||||
{
|
||||
RFX_CONTEXT* context;
|
||||
BYTE decode_buffer[4096 * 3];
|
||||
wStream* s;
|
||||
|
||||
s = stream_new(sizeof(y_data) + sizeof(cb_data) + sizeof(cr_data));
|
||||
Stream_Write(s, y_data, sizeof(y_data));
|
||||
Stream_Write(s, cb_data, sizeof(cb_data));
|
||||
Stream_Write(s, cr_data, sizeof(cr_data));
|
||||
Stream_SetPosition(s, 0);
|
||||
|
||||
context = rfx_context_new();
|
||||
context->mode = RLGR3;
|
||||
rfx_context_set_pixel_format(context, RDP_PIXEL_FORMAT_R8G8B8);
|
||||
rfx_decode_rgb(context, s,
|
||||
sizeof(y_data), test_quantization_values,
|
||||
sizeof(cb_data), test_quantization_values,
|
||||
sizeof(cr_data), test_quantization_values,
|
||||
decode_buffer);
|
||||
rfx_context_free(context);
|
||||
Stream_Free(s, TRUE);
|
||||
|
||||
dump_ppm_image(decode_buffer);
|
||||
}
|
||||
|
||||
void test_encode(void)
|
||||
{
|
||||
RFX_CONTEXT* context;
|
||||
wStream* enc_stream;
|
||||
int y_size, cb_size, cr_size;
|
||||
int i;
|
||||
BYTE decode_buffer[4096 * 3];
|
||||
|
||||
rgb_data = (BYTE *) malloc(64 * 64 * 3);
|
||||
for (i = 0; i < 64; i++)
|
||||
memcpy(rgb_data + i * 64 * 3, rgb_scanline_data, 64 * 3);
|
||||
//winpr_HexDump(rgb_data, 64 * 64 * 3);
|
||||
|
||||
enc_stream = stream_new(65536);
|
||||
stream_clear(enc_stream);
|
||||
|
||||
context = rfx_context_new();
|
||||
context->mode = RLGR3;
|
||||
rfx_context_set_pixel_format(context, RDP_PIXEL_FORMAT_R8G8B8);
|
||||
|
||||
rfx_encode_rgb(context, rgb_data, 64, 64, 64 * 3,
|
||||
test_quantization_values, test_quantization_values, test_quantization_values,
|
||||
enc_stream, &y_size, &cb_size, &cr_size);
|
||||
//dump_buffer(context->priv->cb_g_buffer, 4096);
|
||||
|
||||
/*printf("*** Y ***\n");
|
||||
winpr_HexDump(Stream_Buffer(enc_stream), y_size);
|
||||
printf("*** Cb ***\n");
|
||||
winpr_HexDump(Stream_Buffer(enc_stream) + y_size, cb_size);
|
||||
printf("*** Cr ***\n");
|
||||
winpr_HexDump(Stream_Buffer(enc_stream) + y_size + cb_size, cr_size);*/
|
||||
|
||||
Stream_SetPosition(enc_stream, 0);
|
||||
rfx_decode_rgb(context, enc_stream,
|
||||
y_size, test_quantization_values,
|
||||
cb_size, test_quantization_values,
|
||||
cr_size, test_quantization_values,
|
||||
decode_buffer);
|
||||
dump_ppm_image(decode_buffer);
|
||||
|
||||
rfx_context_free(context);
|
||||
stream_free(enc_stream);
|
||||
free(rgb_data);
|
||||
}
|
||||
|
||||
void test_message(void)
|
||||
{
|
||||
RFX_CONTEXT* context;
|
||||
wStream* s;
|
||||
int i, j;
|
||||
RFX_RECT rect = {0, 0, 100, 80};
|
||||
RFX_MESSAGE * message;
|
||||
|
||||
rgb_data = (BYTE *) malloc(100 * 80 * 3);
|
||||
for (i = 0; i < 80; i++)
|
||||
memcpy(rgb_data + i * 100 * 3, rgb_scanline_data, 100 * 3);
|
||||
|
||||
s = stream_new(65536);
|
||||
stream_clear(s);
|
||||
|
||||
context = rfx_context_new();
|
||||
context->mode = RLGR3;
|
||||
context->width = 800;
|
||||
context->height = 600;
|
||||
rfx_context_set_pixel_format(context, RDP_PIXEL_FORMAT_R8G8B8);
|
||||
|
||||
for (i = 0; i < 1000; i++)
|
||||
{
|
||||
s = stream_new(65536);
|
||||
stream_clear(s);
|
||||
rfx_compose_message(context, s,
|
||||
&rect, 1, rgb_data, 100, 80, 100 * 3);
|
||||
Stream_SealLength(s);
|
||||
/*hexdump(buffer, size);*/
|
||||
Stream_SetPosition(s, 0);
|
||||
message = rfx_process_message(context, s->pointer, s->capacity);
|
||||
if (i == 0)
|
||||
{
|
||||
for (j = 0; j < message->numTiles; j++)
|
||||
{
|
||||
dump_ppm_image(message->tiles[j]->data);
|
||||
}
|
||||
}
|
||||
rfx_message_free(context, message);
|
||||
Stream_Free(s, TRUE);
|
||||
}
|
||||
|
||||
rfx_context_free(context);
|
||||
free(rgb_data);
|
||||
}
|
|
@ -1,34 +0,0 @@
|
|||
/**
|
||||
* FreeRDP: A Remote Desktop Protocol Implementation
|
||||
* RemoteFX Codec Library Unit Tests
|
||||
*
|
||||
* Copyright 2011 Vic Lee
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
#include "test_freerdp.h"
|
||||
|
||||
int init_rfx_suite(void);
|
||||
int clean_rfx_suite(void);
|
||||
int add_rfx_suite(void);
|
||||
|
||||
void test_bitstream(void);
|
||||
void test_bitstream_enc(void);
|
||||
void test_rlgr(void);
|
||||
void test_differential(void);
|
||||
void test_quantization(void);
|
||||
void test_dwt(void);
|
||||
void test_decode(void);
|
||||
void test_encode(void);
|
||||
void test_message(void);
|
Loading…
Reference in New Issue