diff --git a/Kconfig b/Kconfig index 6fefb5fc3..e430e9e7d 100644 --- a/Kconfig +++ b/Kconfig @@ -346,26 +346,36 @@ menu "LVGL configuration" depends on LV_USE_DRAW_VGLITE default n - config LV_USE_VGLITE_DRAW_ASYNC - bool "Enable VGLite draw async" + config LV_USE_VGLITE_DRAW_THREAD + bool "Use additional draw thread for VG-Lite processing" depends on LV_USE_DRAW_VGLITE && LV_USE_OS > 0 default y + + config LV_USE_VGLITE_DRAW_ASYNC + bool "Enable VGLite draw async" + depends on LV_USE_VGLITE_DRAW_THREAD + default y help - Queue multiple tasks and flash them once to the GPU. + Queue multiple tasks and flash them once to the GPU. The task ready state will be send asynchronous to dispatcher. config LV_USE_VGLITE_ASSERT bool "Enable VGLite asserts" - default n depends on LV_USE_DRAW_VGLITE + default n config LV_USE_DRAW_PXP bool "Use NXP's PXP on iMX RTxxx platforms" default n + config LV_USE_PXP_DRAW_THREAD + bool "Use additional draw thread for PXP processing" + depends on LV_USE_DRAW_PXP && LV_USE_OS > 0 + default y + config LV_USE_PXP_ASSERT bool "Enable PXP asserts" - default n depends on LV_USE_DRAW_PXP + default n config LV_USE_DRAW_DAVE2D bool "Use Renesas Dave2D on RA platforms" diff --git a/demos/widgets/assets/img_lvgl_logo.c b/demos/widgets/assets/img_lvgl_logo.c index 5a1e39edd..1a7aa0fc3 100644 --- a/demos/widgets/assets/img_lvgl_logo.c +++ b/demos/widgets/assets/img_lvgl_logo.c @@ -25,48 +25,48 @@ static const LV_ATTRIBUTE_MEM_ALIGN LV_ATTRIBUTE_LARGE_CONST LV_ATTRIBUTE_IMAGE_IMG_LVGL_LOGO uint8_t img_lvgl_logo_map[] = { - 0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xda,0xda,0xd9,0x27,0x90,0x8f,0x8d,0x7d,0x74,0x74,0x71,0xa0,0x77,0x76,0x73,0x9f,0x77,0x76,0x73,0x9e,0x77,0x76,0x73,0x9e,0x77,0x76,0x73,0x9e,0x77,0x76,0x73,0x9e,0x77,0x76,0x73,0x9e,0x77,0x76,0x73,0x9e,0x77,0x76,0x73,0x9e,0x77,0x76,0x73,0x9e,0x77,0x76,0x73,0x9e,0x77,0x76,0x73,0x9e,0x77,0x76,0x73,0x9e,0x77,0x76,0x73,0x9e,0x77,0x76,0x73,0x9e,0x77,0x76,0x73,0x9e,0x77,0x76,0x73,0x9e,0x77,0x76,0x73,0x9e,0x77,0x76,0x73,0x9e,0x77,0x76,0x73,0x9e,0x77,0x76,0x73,0x9e,0x77,0x76,0x73,0x9e,0x77,0x76,0x73,0x9e,0x77,0x76,0x73,0x9e,0x77,0x76,0x73,0x9e,0x77,0x76,0x73,0x9e,0x77,0x76,0x73,0x9e,0x77,0x76,0x73,0x9e,0x77,0x76,0x73,0x9e,0x77,0x76,0x73,0x9e,0x77,0x76,0x73,0x9e,0x76,0x76,0x73,0xa0,0x77,0x76,0x73,0x9b,0xa4,0xa4,0xa2,0x64,0xef,0xef,0xee,0x0f,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00, - 0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0x9d,0x9c,0x9a,0x72,0x44,0x43,0x3f,0xe2,0x37,0x36,0x32,0xfe,0x38,0x37,0x33,0xff,0x38,0x37,0x33,0xff,0x38,0x37,0x33,0xff,0x38,0x37,0x33,0xff,0x38,0x37,0x33,0xff,0x38,0x37,0x33,0xff,0x38,0x37,0x33,0xff,0x38,0x37,0x33,0xff,0x38,0x37,0x33,0xff,0x38,0x37,0x33,0xff,0x38,0x37,0x33,0xff,0x38,0x37,0x33,0xff,0x38,0x37,0x33,0xff,0x38,0x37,0x33,0xff,0x38,0x37,0x33,0xff,0x38,0x37,0x33,0xff,0x38,0x37,0x33,0xff,0x38,0x37,0x33,0xff,0x38,0x37,0x33,0xff,0x38,0x37,0x33,0xff,0x38,0x37,0x33,0xff,0x38,0x37,0x33,0xff,0x38,0x37,0x33,0xff,0x38,0x37,0x33,0xff,0x38,0x37,0x33,0xff,0x38,0x37,0x33,0xff,0x38,0x37,0x33,0xff,0x38,0x37,0x33,0xff,0x38,0x37,0x33,0xff,0x38,0x37,0x33,0xff,0x38,0x37,0x33,0xff,0x38,0x37,0x33,0xff,0x38,0x37,0x33,0xff,0x38,0x37,0x33,0xf8,0x55,0x54,0x50,0xc9,0xc5,0xc5,0xc3,0x3f,0xff,0xff,0xff,0x00, - 0xff,0xff,0xff,0x00,0x9e,0x9d,0x9b,0x6f,0x29,0x27,0x23,0xff,0x35,0x33,0x2f,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x35,0x34,0x30,0xff,0x30,0x2f,0x2a,0xff,0x34,0x33,0x2f,0xff,0x39,0x38,0x34,0xff,0x30,0x2f,0x2a,0xff,0x38,0x37,0x33,0xf1,0xcf,0xce,0xcd,0x33, - 0xdc,0xdb,0xdb,0x25,0x44,0x43,0x40,0xe5,0x35,0x34,0x30,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x30,0x2f,0x2b,0xff,0x48,0x47,0x43,0xff,0x6b,0x6a,0x67,0xff,0x4e,0x4d,0x49,0xff,0x31,0x30,0x2c,0xff,0x3a,0x39,0x35,0xff,0x2d,0x2c,0x28,0xff,0x6b,0x6b,0x67,0xb1, - 0x8f,0x8f,0x8d,0x7d,0x37,0x36,0x32,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x32,0x31,0x2c,0xff,0x67,0x66,0x63,0xff,0xe6,0xe5,0xe5,0xff,0xff,0xff,0xff,0xff,0xed,0xed,0xed,0xff,0x70,0x6f,0x6d,0xff,0x30,0x2f,0x2b,0xff,0x37,0x36,0x32,0xff,0x44,0x43,0x3f,0xe7, - 0x75,0x74,0x71,0x9f,0x38,0x37,0x33,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x37,0x36,0x32,0xff,0x34,0x33,0x2e,0xff,0xcf,0xcf,0xce,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xdb,0xdb,0xdb,0xff,0x39,0x38,0x34,0xff,0x36,0x35,0x31,0xff,0x40,0x3f,0x3b,0xef, - 0x77,0x76,0x73,0x9e,0x38,0x37,0x33,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x37,0x36,0x32,0xff,0x36,0x35,0x31,0xff,0xd9,0xd8,0xd7,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe7,0xe7,0xe6,0xff,0x3e,0x3d,0x39,0xff,0x35,0x34,0x30,0xff,0x41,0x40,0x3c,0xee, - 0x77,0x76,0x73,0x9e,0x38,0x37,0x33,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x2f,0x2e,0x2a,0xff,0x88,0x88,0x85,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x95,0x95,0x92,0xff,0x30,0x2f,0x2b,0xff,0x38,0x36,0x33,0xff,0x41,0x40,0x3c,0xee, - 0x77,0x76,0x73,0x9e,0x38,0x37,0x33,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x38,0x37,0x33,0xff,0x33,0x32,0x2e,0xff,0x75,0x75,0x72,0xff,0xa0,0x9f,0x9d,0xff,0x7d,0x7d,0x7a,0xff,0x36,0x35,0x31,0xff,0x37,0x36,0x32,0xff,0x37,0x36,0x32,0xff,0x41,0x40,0x3c,0xee, - 0x77,0x76,0x73,0x9e,0x38,0x37,0x33,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x38,0x37,0x33,0xff,0x2f,0x2e,0x2a,0xff,0x2c,0x2b,0x27,0xff,0x2e,0x2d,0x29,0xff,0x38,0x37,0x33,0xff,0x39,0x38,0x34,0xff,0x37,0x36,0x32,0xff,0x41,0x40,0x3c,0xee, - 0x77,0x76,0x73,0x9f,0x38,0x37,0x33,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x37,0x36,0x32,0xff,0x41,0x40,0x3c,0xee, - 0x72,0x72,0x6f,0xa2,0x35,0x34,0x30,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x37,0x36,0x32,0xff,0x41,0x40,0x3c,0xee, - 0xb8,0xb8,0xb6,0x4d,0x40,0x3f,0x3c,0xea,0x2e,0x2d,0x28,0xff,0x30,0x2f,0x2b,0xff,0x30,0x2f,0x2b,0xff,0x30,0x2f,0x2b,0xff,0x30,0x2f,0x2b,0xff,0x30,0x2f,0x2b,0xff,0x30,0x2f,0x2b,0xff,0x30,0x2f,0x2b,0xff,0x30,0x2f,0x2b,0xff,0x31,0x2f,0x2b,0xff,0x2e,0x2d,0x29,0xff,0x32,0x31,0x2d,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x37,0x36,0x32,0xff,0x41,0x40,0x3c,0xee, - 0xff,0xff,0xff,0x00,0xdd,0xdc,0xd9,0x25,0xbf,0xbc,0xb7,0x4b,0xc1,0xbf,0xba,0x49,0xc1,0xbf,0xba,0x49,0xc1,0xbf,0xba,0x49,0xc1,0xbf,0xba,0x49,0xc1,0xbf,0xba,0x49,0xc1,0xbf,0xba,0x49,0xc1,0xbf,0xba,0x49,0xc1,0xbf,0xba,0x49,0xc3,0xc1,0xbc,0x47,0xaa,0xa9,0xa5,0x63,0x58,0x57,0x53,0xcc,0x30,0x2f,0x2b,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x37,0x36,0x32,0xff,0x41,0x40,0x3c,0xee, - 0xff,0xff,0xff,0x00,0xfd,0xff,0xff,0x02,0xee,0xf6,0xff,0x13,0xef,0xf6,0xff,0x12,0xef,0xf6,0xff,0x12,0xef,0xf6,0xff,0x12,0xef,0xf6,0xff,0x12,0xef,0xf6,0xff,0x12,0xef,0xf6,0xff,0x12,0xef,0xf6,0xff,0x12,0xef,0xf6,0xff,0x12,0xee,0xf6,0xff,0x13,0xff,0xff,0xff,0x00,0xf3,0xf2,0xf0,0x0a,0x64,0x63,0x61,0xb9,0x31,0x30,0x2c,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x37,0x36,0x32,0xff,0x41,0x40,0x3c,0xee, - 0xd1,0xde,0xfd,0x30,0x49,0x7d,0xf6,0xc8,0x24,0x63,0xf4,0xf7,0x28,0x65,0xf4,0xf4,0x28,0x65,0xf4,0xf4,0x28,0x65,0xf4,0xf4,0x28,0x65,0xf4,0xf4,0x28,0x65,0xf4,0xf4,0x28,0x65,0xf4,0xf4,0x28,0x65,0xf4,0xf4,0x28,0x65,0xf4,0xf4,0x23,0x62,0xf4,0xf6,0x50,0x81,0xf6,0xbf,0xf3,0xf9,0xff,0x0c,0xd3,0xd2,0xce,0x2f,0x35,0x34,0x30,0xfa,0x38,0x37,0x33,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x37,0x36,0x32,0xff,0x41,0x40,0x3c,0xee, - 0x68,0x93,0xf7,0x9f,0x18,0x59,0xf3,0xff,0x1d,0x5d,0xf3,0xff,0x1d,0x5d,0xf3,0xff,0x1d,0x5d,0xf3,0xff,0x1d,0x5d,0xf3,0xff,0x1d,0x5d,0xf3,0xff,0x1d,0x5d,0xf3,0xff,0x1d,0x5d,0xf3,0xff,0x1d,0x5d,0xf3,0xff,0x1d,0x5d,0xf3,0xff,0x1d,0x5d,0xf3,0xff,0x0f,0x53,0xf3,0xff,0xba,0xcf,0xff,0x4a,0xf5,0xf1,0xea,0x0a,0x41,0x40,0x3c,0xed,0x36,0x35,0x31,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x37,0x36,0x32,0xff,0x41,0x40,0x3c,0xee, - 0x64,0x90,0xf7,0xa4,0x1f,0x5e,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x16,0x58,0xf3,0xff,0xb7,0xcc,0xff,0x4f,0xf3,0xf0,0xe9,0x0e,0x41,0x40,0x3c,0xee,0x36,0x35,0x31,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x37,0x36,0x32,0xff,0x41,0x40,0x3c,0xee, - 0x66,0x91,0xf7,0xa2,0x1f,0x5e,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x16,0x58,0xf3,0xff,0xb8,0xcd,0xff,0x4e,0xf3,0xf0,0xe9,0x0e,0x41,0x40,0x3c,0xee,0x36,0x35,0x31,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x37,0x36,0x32,0xff,0x41,0x40,0x3c,0xee, - 0x66,0x91,0xf7,0xa2,0x1f,0x5e,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x16,0x58,0xf3,0xff,0xb8,0xcd,0xff,0x4e,0xf3,0xf0,0xe9,0x0e,0x41,0x40,0x3c,0xee,0x36,0x35,0x31,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x37,0x36,0x32,0xff,0x41,0x40,0x3c,0xee, - 0x66,0x91,0xf7,0xa2,0x1f,0x5e,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x16,0x58,0xf3,0xff,0xb8,0xcd,0xff,0x4e,0xf3,0xf0,0xe9,0x0e,0x41,0x40,0x3c,0xee,0x36,0x35,0x31,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x37,0x36,0x32,0xff,0x41,0x40,0x3c,0xee, - 0x66,0x91,0xf7,0xa2,0x1f,0x5e,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x16,0x58,0xf3,0xff,0xb8,0xcd,0xff,0x4e,0xf3,0xf0,0xe9,0x0e,0x41,0x40,0x3c,0xee,0x36,0x35,0x31,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x37,0x36,0x32,0xff,0x41,0x40,0x3c,0xee, - 0x66,0x91,0xf7,0xa2,0x1f,0x5e,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x16,0x58,0xf3,0xff,0xb8,0xcd,0xff,0x4e,0xf3,0xf0,0xe9,0x0e,0x41,0x40,0x3c,0xee,0x36,0x35,0x31,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x37,0x36,0x32,0xff,0x41,0x40,0x3c,0xee, - 0x66,0x91,0xf7,0xa2,0x1f,0x5e,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x16,0x58,0xf3,0xff,0xb8,0xcd,0xff,0x4e,0xf3,0xf0,0xe9,0x0e,0x41,0x40,0x3c,0xee,0x36,0x35,0x31,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x37,0x36,0x32,0xff,0x41,0x40,0x3c,0xee, - 0x66,0x91,0xf7,0xa2,0x1f,0x5e,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x16,0x58,0xf3,0xff,0xb8,0xcd,0xff,0x4e,0xf3,0xf0,0xe9,0x0e,0x41,0x40,0x3c,0xee,0x36,0x35,0x31,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x37,0x36,0x32,0xff,0x41,0x40,0x3c,0xee, - 0x62,0x8e,0xf7,0xa7,0x1f,0x5e,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x15,0x57,0xf3,0xff,0xb6,0xcc,0xff,0x50,0xf2,0xef,0xe8,0x0f,0x3f,0x3e,0x3a,0xf1,0x36,0x35,0x31,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x37,0x36,0x32,0xff,0x41,0x40,0x3c,0xee, - 0x7f,0xa3,0xf8,0x87,0x15,0x57,0xf3,0xff,0x14,0x56,0xf2,0xff,0x15,0x57,0xf2,0xff,0x15,0x57,0xf2,0xff,0x15,0x57,0xf2,0xff,0x15,0x57,0xf2,0xff,0x15,0x57,0xf2,0xff,0x15,0x57,0xf2,0xff,0x15,0x57,0xf2,0xff,0x15,0x57,0xf2,0xff,0x13,0x56,0xf2,0xff,0x10,0x53,0xf3,0xff,0xc5,0xd7,0xff,0x3e,0xf8,0xf5,0xef,0x08,0x42,0x41,0x3d,0xe8,0x2a,0x29,0x24,0xff,0x2f,0x2e,0x2a,0xff,0x2f,0x2e,0x2a,0xff,0x2f,0x2e,0x2a,0xff,0x2f,0x2e,0x2a,0xff,0x2f,0x2e,0x2a,0xff,0x2f,0x2e,0x2a,0xff,0x2f,0x2e,0x2a,0xff,0x2f,0x2e,0x2a,0xff,0x2f,0x2e,0x2a,0xff,0x30,0x2f,0x2a,0xff,0x35,0x34,0x30,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x37,0x36,0x32,0xff,0x41,0x40,0x3c,0xee, - 0xef,0xf4,0xfe,0x0f,0x81,0xa5,0xf8,0x88,0x52,0x83,0xf6,0xbc,0x57,0x87,0xf6,0xba,0x57,0x87,0xf6,0xba,0x57,0x87,0xf6,0xba,0x57,0x87,0xf6,0xba,0x57,0x87,0xf6,0xba,0x57,0x87,0xf6,0xba,0x57,0x87,0xf6,0xba,0x57,0x87,0xf6,0xba,0x52,0x83,0xf6,0xbb,0x8a,0xab,0xf9,0x7e,0xfb,0xfd,0xff,0x04,0xff,0xff,0xff,0x00,0xb7,0xb6,0xb5,0x50,0x67,0x67,0x63,0xb1,0x69,0x68,0x66,0xb4,0x6a,0x69,0x66,0xb4,0x6a,0x69,0x66,0xb4,0x6a,0x69,0x66,0xb4,0x6a,0x69,0x66,0xb4,0x6a,0x69,0x66,0xb4,0x6a,0x69,0x66,0xb4,0x6a,0x69,0x66,0xb4,0x6b,0x6a,0x67,0xb3,0x67,0x66,0x63,0xb6,0x46,0x45,0x41,0xe5,0x30,0x2f,0x2a,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x37,0x36,0x32,0xff,0x41,0x40,0x3c,0xee, - 0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xe5,0xe8,0xe8,0x17,0x69,0x68,0x65,0xb3,0x30,0x2f,0x2b,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x37,0x36,0x32,0xff,0x41,0x40,0x3c,0xee, - 0xfa,0xfd,0xfa,0x02,0xbb,0xec,0xb8,0x54,0x9d,0xe3,0x99,0x8c,0xa0,0xe4,0x9c,0x8b,0xa0,0xe4,0x9c,0x8b,0xa0,0xe4,0x9c,0x8b,0xa0,0xe4,0x9c,0x8b,0xa0,0xe4,0x9c,0x8b,0xa0,0xe4,0x9c,0x8b,0xa0,0xe4,0x9c,0x8b,0xa0,0xe4,0x9c,0x8b,0x9d,0xe3,0x98,0x8b,0xc1,0xed,0xbe,0x49,0xfe,0xff,0xfe,0x00,0xff,0xff,0xff,0x00,0xfe,0xd6,0xca,0x38,0xfc,0x9d,0x83,0x8e,0xfc,0x9f,0x84,0x95,0xfc,0x9f,0x85,0x93,0xfc,0x9f,0x85,0x93,0xfc,0x9f,0x85,0x93,0xfc,0x9f,0x85,0x93,0xfc,0x9f,0x85,0x93,0xfc,0x9f,0x85,0x93,0xfc,0x9f,0x85,0x93,0xfc,0x9d,0x82,0x96,0xfd,0xa7,0x8f,0x81,0xff,0xf4,0xf0,0x0f,0xeb,0xec,0xeb,0x14,0x47,0x46,0x43,0xe0,0x35,0x34,0x30,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x37,0x36,0x32,0xff,0x41,0x40,0x3c,0xee, - 0xae,0xe7,0xab,0x61,0x61,0xd1,0x5b,0xfc,0x5e,0xd0,0x58,0xff,0x5f,0xd1,0x59,0xff,0x5f,0xd1,0x59,0xff,0x5f,0xd1,0x59,0xff,0x5f,0xd1,0x59,0xff,0x5f,0xd1,0x59,0xff,0x5f,0xd1,0x59,0xff,0x5f,0xd1,0x59,0xff,0x5f,0xd1,0x59,0xff,0x5d,0xd0,0x58,0xff,0x5e,0xd1,0x59,0xf5,0xd8,0xf7,0xdb,0x28,0xff,0xf6,0xf7,0x07,0xf9,0x70,0x4a,0xdd,0xf8,0x58,0x2b,0xff,0xf8,0x5c,0x31,0xff,0xf8,0x5c,0x31,0xff,0xf8,0x5c,0x31,0xff,0xf8,0x5c,0x31,0xff,0xf8,0x5c,0x31,0xff,0xf8,0x5c,0x31,0xff,0xf8,0x5c,0x31,0xff,0xf8,0x5c,0x31,0xff,0xf8,0x5c,0x31,0xff,0xf8,0x53,0x26,0xff,0xfb,0x98,0x7c,0x9b,0xff,0xff,0xff,0x00,0x7c,0x7c,0x7a,0x9d,0x2e,0x2d,0x29,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x37,0x36,0x32,0xff,0x41,0x40,0x3c,0xee, - 0x93,0xe0,0x90,0x9a,0x66,0xd3,0x61,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x5f,0xd1,0x5a,0xff,0xc9,0xf4,0xcc,0x42,0xff,0xef,0xef,0x0e,0xf8,0x69,0x41,0xf0,0xf8,0x63,0x3a,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x5d,0x32,0xff,0xfa,0x89,0x69,0xb6,0xff,0xff,0xff,0x00,0x83,0x83,0x81,0x93,0x2e,0x2d,0x28,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x37,0x36,0x32,0xff,0x41,0x40,0x3c,0xee, - 0x96,0xe1,0x93,0x95,0x66,0xd3,0x61,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x60,0xd1,0x5b,0xff,0xcb,0xf4,0xce,0x3f,0xff,0xf0,0xf0,0x0d,0xf8,0x6b,0x43,0xec,0xf8,0x63,0x39,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x5d,0x32,0xff,0xfa,0x8b,0x6c,0xb1,0xff,0xff,0xff,0x00,0x82,0x82,0x80,0x95,0x2e,0x2d,0x28,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x37,0x36,0x32,0xff,0x41,0x40,0x3c,0xee, - 0x96,0xe1,0x93,0x95,0x66,0xd3,0x61,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x60,0xd1,0x5b,0xff,0xcb,0xf4,0xce,0x3f,0xff,0xf0,0xf0,0x0d,0xf8,0x6b,0x43,0xec,0xf8,0x63,0x39,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x5d,0x32,0xff,0xfa,0x8b,0x6c,0xb1,0xff,0xff,0xff,0x00,0x82,0x82,0x80,0x95,0x2e,0x2d,0x28,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x37,0x36,0x32,0xff,0x41,0x40,0x3c,0xee, - 0x96,0xe1,0x93,0x95,0x66,0xd3,0x61,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x60,0xd1,0x5b,0xff,0xcb,0xf4,0xce,0x3f,0xff,0xf0,0xf0,0x0d,0xf8,0x6b,0x43,0xec,0xf8,0x63,0x39,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x5d,0x32,0xff,0xfa,0x8b,0x6c,0xb1,0xff,0xff,0xff,0x00,0x82,0x82,0x80,0x95,0x2e,0x2d,0x28,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x37,0x36,0x32,0xff,0x41,0x40,0x3c,0xee, - 0x96,0xe1,0x93,0x95,0x66,0xd3,0x61,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x60,0xd1,0x5b,0xff,0xcb,0xf4,0xce,0x3f,0xff,0xf0,0xf0,0x0d,0xf8,0x6b,0x43,0xec,0xf8,0x63,0x39,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x5d,0x32,0xff,0xfa,0x8b,0x6c,0xb1,0xff,0xff,0xff,0x00,0x82,0x82,0x80,0x95,0x2e,0x2d,0x28,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x37,0x36,0x32,0xff,0x41,0x40,0x3c,0xee, - 0x95,0xe1,0x93,0x97,0x66,0xd3,0x61,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x60,0xd1,0x5b,0xff,0xcb,0xf4,0xce,0x3f,0xff,0xf0,0xf0,0x0d,0xf8,0x6b,0x43,0xec,0xf8,0x63,0x39,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x5d,0x32,0xff,0xfa,0x8b,0x6c,0xb1,0xff,0xff,0xff,0x00,0x82,0x82,0x80,0x95,0x2e,0x2d,0x28,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x37,0x36,0x32,0xff,0x41,0x40,0x3c,0xee, - 0x97,0xe1,0x93,0x8d,0x66,0xd3,0x61,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x60,0xd1,0x5b,0xff,0xcb,0xf4,0xce,0x3f,0xff,0xf0,0xf0,0x0d,0xf8,0x6b,0x43,0xec,0xf8,0x63,0x39,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x5d,0x32,0xff,0xfa,0x8b,0x6c,0xb1,0xff,0xff,0xff,0x00,0x82,0x82,0x80,0x95,0x2e,0x2d,0x28,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x37,0x36,0x32,0xff,0x40,0x3f,0x3b,0xee, - 0xba,0xeb,0xb8,0x51,0x66,0xd3,0x61,0xf8,0x66,0xd3,0x61,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x60,0xd1,0x5b,0xff,0xcb,0xf4,0xce,0x3f,0xff,0xf0,0xf0,0x0d,0xf8,0x6b,0x43,0xec,0xf8,0x63,0x39,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x5d,0x32,0xff,0xfa,0x8b,0x6c,0xb1,0xff,0xff,0xff,0x00,0x82,0x82,0x80,0x95,0x2e,0x2d,0x28,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x35,0x34,0x30,0xff,0x4b,0x49,0x46,0xde, - 0xf2,0xfc,0xf2,0x0a,0x7c,0xd9,0x78,0xbf,0x60,0xd1,0x5b,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x60,0xd1,0x5b,0xff,0xcb,0xf4,0xce,0x40,0xff,0xf0,0xf0,0x0d,0xf8,0x6b,0x43,0xed,0xf8,0x63,0x39,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x5d,0x32,0xff,0xfa,0x8b,0x6b,0xb2,0xff,0xff,0xff,0x00,0x81,0x81,0x7f,0x96,0x2e,0x2d,0x28,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x3a,0x39,0x35,0xff,0x29,0x28,0x24,0xff,0x85,0x85,0x82,0x8e, - 0xff,0xff,0xff,0x00,0xd3,0xf2,0xd1,0x30,0x66,0xd2,0x61,0xe2,0x5e,0xd0,0x59,0xff,0x65,0xd3,0x60,0xff,0x66,0xd3,0x61,0xff,0x66,0xd3,0x61,0xff,0x66,0xd3,0x61,0xff,0x66,0xd3,0x61,0xff,0x66,0xd3,0x61,0xff,0x66,0xd3,0x61,0xff,0x66,0xd3,0x61,0xff,0x5c,0xd0,0x57,0xff,0xcb,0xf4,0xce,0x3b,0xff,0xf1,0xf1,0x0c,0xf8,0x68,0x3f,0xf1,0xf8,0x61,0x37,0xff,0xf8,0x64,0x3a,0xff,0xf8,0x64,0x3a,0xff,0xf8,0x64,0x3a,0xff,0xf8,0x64,0x3a,0xff,0xf8,0x64,0x3a,0xff,0xf8,0x64,0x3a,0xff,0xf8,0x64,0x3a,0xff,0xf8,0x64,0x3a,0xff,0xf8,0x64,0x3b,0xff,0xf8,0x5a,0x2f,0xff,0xfa,0x89,0x69,0xb5,0xff,0xff,0xff,0x00,0x7f,0x7f,0x7d,0x97,0x2a,0x29,0x24,0xff,0x38,0x37,0x33,0xff,0x37,0x36,0x32,0xff,0x37,0x36,0x32,0xff,0x37,0x36,0x32,0xff,0x37,0x36,0x32,0xff,0x37,0x36,0x32,0xff,0x38,0x37,0x33,0xff,0x35,0x34,0x30,0xff,0x29,0x28,0x24,0xff,0x57,0x56,0x53,0xc8,0xeb,0xeb,0xea,0x14, - 0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xda,0xf4,0xd9,0x26,0x8d,0xdf,0x8a,0x9f,0x6f,0xd6,0x6b,0xdd,0x6c,0xd4,0x67,0xed,0x6d,0xd5,0x68,0xed,0x6d,0xd5,0x68,0xec,0x6d,0xd5,0x68,0xec,0x6d,0xd5,0x68,0xec,0x6d,0xd5,0x68,0xed,0x69,0xd4,0x64,0xec,0x82,0xdb,0x7e,0xb0,0xee,0xfb,0xef,0x0c,0xff,0xfd,0xfd,0x01,0xfb,0x9b,0x81,0x92,0xf9,0x66,0x3e,0xeb,0xf9,0x6b,0x44,0xef,0xf9,0x6b,0x44,0xee,0xf9,0x6b,0x44,0xee,0xf9,0x6b,0x44,0xee,0xf9,0x6b,0x44,0xee,0xf9,0x6b,0x44,0xee,0xf9,0x6b,0x44,0xee,0xf9,0x6b,0x44,0xee,0xf9,0x6a,0x42,0xef,0xf9,0x6a,0x42,0xe3,0xfc,0xc2,0xb1,0x57,0xff,0xff,0xff,0x00,0xc3,0xc3,0xc2,0x42,0x44,0x43,0x3f,0xe0,0x3e,0x3e,0x3a,0xf0,0x41,0x40,0x3c,0xee,0x41,0x40,0x3c,0xee,0x41,0x40,0x3c,0xee,0x41,0x40,0x3c,0xee,0x41,0x40,0x3c,0xee,0x40,0x3f,0x3b,0xee,0x4a,0x49,0x46,0xdb,0x85,0x84,0x82,0x8f,0xec,0xec,0xec,0x13,0xff,0xff,0xff,0x00, + 0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xda,0xda,0xd9,0x27,0x90,0x8f,0x8d,0x7d,0x74,0x74,0x71,0xa0,0x77,0x76,0x73,0x9f,0x77,0x76,0x73,0x9e,0x77,0x76,0x73,0x9e,0x77,0x76,0x73,0x9e,0x77,0x76,0x73,0x9e,0x77,0x76,0x73,0x9e,0x77,0x76,0x73,0x9e,0x77,0x76,0x73,0x9e,0x77,0x76,0x73,0x9e,0x77,0x76,0x73,0x9e,0x77,0x76,0x73,0x9e,0x77,0x76,0x73,0x9e,0x77,0x76,0x73,0x9e,0x77,0x76,0x73,0x9e,0x77,0x76,0x73,0x9e,0x77,0x76,0x73,0x9e,0x77,0x76,0x73,0x9e,0x77,0x76,0x73,0x9e,0x77,0x76,0x73,0x9e,0x77,0x76,0x73,0x9e,0x77,0x76,0x73,0x9e,0x77,0x76,0x73,0x9e,0x77,0x76,0x73,0x9e,0x77,0x76,0x73,0x9e,0x77,0x76,0x73,0x9e,0x77,0x76,0x73,0x9e,0x77,0x76,0x73,0x9e,0x77,0x76,0x73,0x9e,0x77,0x76,0x73,0x9e,0x77,0x76,0x73,0x9e,0x76,0x76,0x73,0xa0,0x77,0x76,0x73,0x9b,0xa4,0xa4,0xa2,0x64,0xef,0xef,0xee,0x0f,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0x9d,0x9c,0x9a,0x72,0x44,0x43,0x3f,0xe2,0x37,0x36,0x32,0xfe,0x38,0x37,0x33,0xff,0x38,0x37,0x33,0xff,0x38,0x37,0x33,0xff,0x38,0x37,0x33,0xff,0x38,0x37,0x33,0xff,0x38,0x37,0x33,0xff,0x38,0x37,0x33,0xff,0x38,0x37,0x33,0xff,0x38,0x37,0x33,0xff,0x38,0x37,0x33,0xff,0x38,0x37,0x33,0xff,0x38,0x37,0x33,0xff,0x38,0x37,0x33,0xff,0x38,0x37,0x33,0xff,0x38,0x37,0x33,0xff,0x38,0x37,0x33,0xff,0x38,0x37,0x33,0xff,0x38,0x37,0x33,0xff,0x38,0x37,0x33,0xff,0x38,0x37,0x33,0xff,0x38,0x37,0x33,0xff,0x38,0x37,0x33,0xff,0x38,0x37,0x33,0xff,0x38,0x37,0x33,0xff,0x38,0x37,0x33,0xff,0x38,0x37,0x33,0xff,0x38,0x37,0x33,0xff,0x38,0x37,0x33,0xff,0x38,0x37,0x33,0xff,0x38,0x37,0x33,0xff,0x38,0x37,0x33,0xff,0x38,0x37,0x33,0xff,0x38,0x37,0x33,0xff,0x38,0x37,0x33,0xf8,0x55,0x54,0x50,0xc9,0xc5,0xc5,0xc3,0x3f,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0xff,0xff,0xff,0x00,0x9e,0x9d,0x9b,0x6f,0x29,0x27,0x23,0xff,0x35,0x33,0x2f,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x35,0x34,0x30,0xff,0x30,0x2f,0x2a,0xff,0x34,0x33,0x2f,0xff,0x39,0x38,0x34,0xff,0x30,0x2f,0x2a,0xff,0x38,0x37,0x33,0xf1,0xcf,0xce,0xcd,0x33,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0xdc,0xdb,0xdb,0x25,0x44,0x43,0x40,0xe5,0x35,0x34,0x30,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x30,0x2f,0x2b,0xff,0x48,0x47,0x43,0xff,0x6b,0x6a,0x67,0xff,0x4e,0x4d,0x49,0xff,0x31,0x30,0x2c,0xff,0x3a,0x39,0x35,0xff,0x2d,0x2c,0x28,0xff,0x6b,0x6b,0x67,0xb1,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x8f,0x8f,0x8d,0x7d,0x37,0x36,0x32,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x32,0x31,0x2c,0xff,0x67,0x66,0x63,0xff,0xe6,0xe5,0xe5,0xff,0xff,0xff,0xff,0xff,0xed,0xed,0xed,0xff,0x70,0x6f,0x6d,0xff,0x30,0x2f,0x2b,0xff,0x37,0x36,0x32,0xff,0x44,0x43,0x3f,0xe7,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x75,0x74,0x71,0x9f,0x38,0x37,0x33,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x37,0x36,0x32,0xff,0x34,0x33,0x2e,0xff,0xcf,0xcf,0xce,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xdb,0xdb,0xdb,0xff,0x39,0x38,0x34,0xff,0x36,0x35,0x31,0xff,0x40,0x3f,0x3b,0xef,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x77,0x76,0x73,0x9e,0x38,0x37,0x33,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x37,0x36,0x32,0xff,0x36,0x35,0x31,0xff,0xd9,0xd8,0xd7,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe7,0xe7,0xe6,0xff,0x3e,0x3d,0x39,0xff,0x35,0x34,0x30,0xff,0x41,0x40,0x3c,0xee,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x77,0x76,0x73,0x9e,0x38,0x37,0x33,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x2f,0x2e,0x2a,0xff,0x88,0x88,0x85,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x95,0x95,0x92,0xff,0x30,0x2f,0x2b,0xff,0x38,0x36,0x33,0xff,0x41,0x40,0x3c,0xee,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x77,0x76,0x73,0x9e,0x38,0x37,0x33,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x38,0x37,0x33,0xff,0x33,0x32,0x2e,0xff,0x75,0x75,0x72,0xff,0xa0,0x9f,0x9d,0xff,0x7d,0x7d,0x7a,0xff,0x36,0x35,0x31,0xff,0x37,0x36,0x32,0xff,0x37,0x36,0x32,0xff,0x41,0x40,0x3c,0xee,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x77,0x76,0x73,0x9e,0x38,0x37,0x33,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x38,0x37,0x33,0xff,0x2f,0x2e,0x2a,0xff,0x2c,0x2b,0x27,0xff,0x2e,0x2d,0x29,0xff,0x38,0x37,0x33,0xff,0x39,0x38,0x34,0xff,0x37,0x36,0x32,0xff,0x41,0x40,0x3c,0xee,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x77,0x76,0x73,0x9f,0x38,0x37,0x33,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x37,0x36,0x32,0xff,0x41,0x40,0x3c,0xee,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x72,0x72,0x6f,0xa2,0x35,0x34,0x30,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x37,0x36,0x32,0xff,0x41,0x40,0x3c,0xee,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0xb8,0xb8,0xb6,0x4d,0x40,0x3f,0x3c,0xea,0x2e,0x2d,0x28,0xff,0x30,0x2f,0x2b,0xff,0x30,0x2f,0x2b,0xff,0x30,0x2f,0x2b,0xff,0x30,0x2f,0x2b,0xff,0x30,0x2f,0x2b,0xff,0x30,0x2f,0x2b,0xff,0x30,0x2f,0x2b,0xff,0x30,0x2f,0x2b,0xff,0x31,0x2f,0x2b,0xff,0x2e,0x2d,0x29,0xff,0x32,0x31,0x2d,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x37,0x36,0x32,0xff,0x41,0x40,0x3c,0xee,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0xff,0xff,0xff,0x00,0xdd,0xdc,0xd9,0x25,0xbf,0xbc,0xb7,0x4b,0xc1,0xbf,0xba,0x49,0xc1,0xbf,0xba,0x49,0xc1,0xbf,0xba,0x49,0xc1,0xbf,0xba,0x49,0xc1,0xbf,0xba,0x49,0xc1,0xbf,0xba,0x49,0xc1,0xbf,0xba,0x49,0xc1,0xbf,0xba,0x49,0xc3,0xc1,0xbc,0x47,0xaa,0xa9,0xa5,0x63,0x58,0x57,0x53,0xcc,0x30,0x2f,0x2b,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x37,0x36,0x32,0xff,0x41,0x40,0x3c,0xee,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0xff,0xff,0xff,0x00,0xfd,0xff,0xff,0x02,0xee,0xf6,0xff,0x13,0xef,0xf6,0xff,0x12,0xef,0xf6,0xff,0x12,0xef,0xf6,0xff,0x12,0xef,0xf6,0xff,0x12,0xef,0xf6,0xff,0x12,0xef,0xf6,0xff,0x12,0xef,0xf6,0xff,0x12,0xef,0xf6,0xff,0x12,0xee,0xf6,0xff,0x13,0xff,0xff,0xff,0x00,0xf3,0xf2,0xf0,0x0a,0x64,0x63,0x61,0xb9,0x31,0x30,0x2c,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x37,0x36,0x32,0xff,0x41,0x40,0x3c,0xee,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0xd1,0xde,0xfd,0x30,0x49,0x7d,0xf6,0xc8,0x24,0x63,0xf4,0xf7,0x28,0x65,0xf4,0xf4,0x28,0x65,0xf4,0xf4,0x28,0x65,0xf4,0xf4,0x28,0x65,0xf4,0xf4,0x28,0x65,0xf4,0xf4,0x28,0x65,0xf4,0xf4,0x28,0x65,0xf4,0xf4,0x28,0x65,0xf4,0xf4,0x23,0x62,0xf4,0xf6,0x50,0x81,0xf6,0xbf,0xf3,0xf9,0xff,0x0c,0xd3,0xd2,0xce,0x2f,0x35,0x34,0x30,0xfa,0x38,0x37,0x33,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x37,0x36,0x32,0xff,0x41,0x40,0x3c,0xee,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x68,0x93,0xf7,0x9f,0x18,0x59,0xf3,0xff,0x1d,0x5d,0xf3,0xff,0x1d,0x5d,0xf3,0xff,0x1d,0x5d,0xf3,0xff,0x1d,0x5d,0xf3,0xff,0x1d,0x5d,0xf3,0xff,0x1d,0x5d,0xf3,0xff,0x1d,0x5d,0xf3,0xff,0x1d,0x5d,0xf3,0xff,0x1d,0x5d,0xf3,0xff,0x1d,0x5d,0xf3,0xff,0x0f,0x53,0xf3,0xff,0xba,0xcf,0xff,0x4a,0xf5,0xf1,0xea,0x0a,0x41,0x40,0x3c,0xed,0x36,0x35,0x31,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x37,0x36,0x32,0xff,0x41,0x40,0x3c,0xee,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x64,0x90,0xf7,0xa4,0x1f,0x5e,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x16,0x58,0xf3,0xff,0xb7,0xcc,0xff,0x4f,0xf3,0xf0,0xe9,0x0e,0x41,0x40,0x3c,0xee,0x36,0x35,0x31,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x37,0x36,0x32,0xff,0x41,0x40,0x3c,0xee,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x66,0x91,0xf7,0xa2,0x1f,0x5e,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x16,0x58,0xf3,0xff,0xb8,0xcd,0xff,0x4e,0xf3,0xf0,0xe9,0x0e,0x41,0x40,0x3c,0xee,0x36,0x35,0x31,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x37,0x36,0x32,0xff,0x41,0x40,0x3c,0xee,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x66,0x91,0xf7,0xa2,0x1f,0x5e,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x16,0x58,0xf3,0xff,0xb8,0xcd,0xff,0x4e,0xf3,0xf0,0xe9,0x0e,0x41,0x40,0x3c,0xee,0x36,0x35,0x31,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x37,0x36,0x32,0xff,0x41,0x40,0x3c,0xee,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x66,0x91,0xf7,0xa2,0x1f,0x5e,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x16,0x58,0xf3,0xff,0xb8,0xcd,0xff,0x4e,0xf3,0xf0,0xe9,0x0e,0x41,0x40,0x3c,0xee,0x36,0x35,0x31,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x37,0x36,0x32,0xff,0x41,0x40,0x3c,0xee,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x66,0x91,0xf7,0xa2,0x1f,0x5e,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x16,0x58,0xf3,0xff,0xb8,0xcd,0xff,0x4e,0xf3,0xf0,0xe9,0x0e,0x41,0x40,0x3c,0xee,0x36,0x35,0x31,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x37,0x36,0x32,0xff,0x41,0x40,0x3c,0xee,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x66,0x91,0xf7,0xa2,0x1f,0x5e,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x16,0x58,0xf3,0xff,0xb8,0xcd,0xff,0x4e,0xf3,0xf0,0xe9,0x0e,0x41,0x40,0x3c,0xee,0x36,0x35,0x31,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x37,0x36,0x32,0xff,0x41,0x40,0x3c,0xee,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x66,0x91,0xf7,0xa2,0x1f,0x5e,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x16,0x58,0xf3,0xff,0xb8,0xcd,0xff,0x4e,0xf3,0xf0,0xe9,0x0e,0x41,0x40,0x3c,0xee,0x36,0x35,0x31,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x37,0x36,0x32,0xff,0x41,0x40,0x3c,0xee,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x66,0x91,0xf7,0xa2,0x1f,0x5e,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x16,0x58,0xf3,0xff,0xb8,0xcd,0xff,0x4e,0xf3,0xf0,0xe9,0x0e,0x41,0x40,0x3c,0xee,0x36,0x35,0x31,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x37,0x36,0x32,0xff,0x41,0x40,0x3c,0xee,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x62,0x8e,0xf7,0xa7,0x1f,0x5e,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x15,0x57,0xf3,0xff,0xb6,0xcc,0xff,0x50,0xf2,0xef,0xe8,0x0f,0x3f,0x3e,0x3a,0xf1,0x36,0x35,0x31,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x37,0x36,0x32,0xff,0x41,0x40,0x3c,0xee,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x7f,0xa3,0xf8,0x87,0x15,0x57,0xf3,0xff,0x14,0x56,0xf2,0xff,0x15,0x57,0xf2,0xff,0x15,0x57,0xf2,0xff,0x15,0x57,0xf2,0xff,0x15,0x57,0xf2,0xff,0x15,0x57,0xf2,0xff,0x15,0x57,0xf2,0xff,0x15,0x57,0xf2,0xff,0x15,0x57,0xf2,0xff,0x13,0x56,0xf2,0xff,0x10,0x53,0xf3,0xff,0xc5,0xd7,0xff,0x3e,0xf8,0xf5,0xef,0x08,0x42,0x41,0x3d,0xe8,0x2a,0x29,0x24,0xff,0x2f,0x2e,0x2a,0xff,0x2f,0x2e,0x2a,0xff,0x2f,0x2e,0x2a,0xff,0x2f,0x2e,0x2a,0xff,0x2f,0x2e,0x2a,0xff,0x2f,0x2e,0x2a,0xff,0x2f,0x2e,0x2a,0xff,0x2f,0x2e,0x2a,0xff,0x2f,0x2e,0x2a,0xff,0x30,0x2f,0x2a,0xff,0x35,0x34,0x30,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x37,0x36,0x32,0xff,0x41,0x40,0x3c,0xee,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0xef,0xf4,0xfe,0x0f,0x81,0xa5,0xf8,0x88,0x52,0x83,0xf6,0xbc,0x57,0x87,0xf6,0xba,0x57,0x87,0xf6,0xba,0x57,0x87,0xf6,0xba,0x57,0x87,0xf6,0xba,0x57,0x87,0xf6,0xba,0x57,0x87,0xf6,0xba,0x57,0x87,0xf6,0xba,0x57,0x87,0xf6,0xba,0x52,0x83,0xf6,0xbb,0x8a,0xab,0xf9,0x7e,0xfb,0xfd,0xff,0x04,0xff,0xff,0xff,0x00,0xb7,0xb6,0xb5,0x50,0x67,0x67,0x63,0xb1,0x69,0x68,0x66,0xb4,0x6a,0x69,0x66,0xb4,0x6a,0x69,0x66,0xb4,0x6a,0x69,0x66,0xb4,0x6a,0x69,0x66,0xb4,0x6a,0x69,0x66,0xb4,0x6a,0x69,0x66,0xb4,0x6a,0x69,0x66,0xb4,0x6b,0x6a,0x67,0xb3,0x67,0x66,0x63,0xb6,0x46,0x45,0x41,0xe5,0x30,0x2f,0x2a,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x37,0x36,0x32,0xff,0x41,0x40,0x3c,0xee,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xe5,0xe8,0xe8,0x17,0x69,0x68,0x65,0xb3,0x30,0x2f,0x2b,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x37,0x36,0x32,0xff,0x41,0x40,0x3c,0xee,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0xfa,0xfd,0xfa,0x02,0xbb,0xec,0xb8,0x54,0x9d,0xe3,0x99,0x8c,0xa0,0xe4,0x9c,0x8b,0xa0,0xe4,0x9c,0x8b,0xa0,0xe4,0x9c,0x8b,0xa0,0xe4,0x9c,0x8b,0xa0,0xe4,0x9c,0x8b,0xa0,0xe4,0x9c,0x8b,0xa0,0xe4,0x9c,0x8b,0xa0,0xe4,0x9c,0x8b,0x9d,0xe3,0x98,0x8b,0xc1,0xed,0xbe,0x49,0xfe,0xff,0xfe,0x00,0xff,0xff,0xff,0x00,0xfe,0xd6,0xca,0x38,0xfc,0x9d,0x83,0x8e,0xfc,0x9f,0x84,0x95,0xfc,0x9f,0x85,0x93,0xfc,0x9f,0x85,0x93,0xfc,0x9f,0x85,0x93,0xfc,0x9f,0x85,0x93,0xfc,0x9f,0x85,0x93,0xfc,0x9f,0x85,0x93,0xfc,0x9f,0x85,0x93,0xfc,0x9d,0x82,0x96,0xfd,0xa7,0x8f,0x81,0xff,0xf4,0xf0,0x0f,0xeb,0xec,0xeb,0x14,0x47,0x46,0x43,0xe0,0x35,0x34,0x30,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x37,0x36,0x32,0xff,0x41,0x40,0x3c,0xee,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0xae,0xe7,0xab,0x61,0x61,0xd1,0x5b,0xfc,0x5e,0xd0,0x58,0xff,0x5f,0xd1,0x59,0xff,0x5f,0xd1,0x59,0xff,0x5f,0xd1,0x59,0xff,0x5f,0xd1,0x59,0xff,0x5f,0xd1,0x59,0xff,0x5f,0xd1,0x59,0xff,0x5f,0xd1,0x59,0xff,0x5f,0xd1,0x59,0xff,0x5d,0xd0,0x58,0xff,0x5e,0xd1,0x59,0xf5,0xd8,0xf7,0xdb,0x28,0xff,0xf6,0xf7,0x07,0xf9,0x70,0x4a,0xdd,0xf8,0x58,0x2b,0xff,0xf8,0x5c,0x31,0xff,0xf8,0x5c,0x31,0xff,0xf8,0x5c,0x31,0xff,0xf8,0x5c,0x31,0xff,0xf8,0x5c,0x31,0xff,0xf8,0x5c,0x31,0xff,0xf8,0x5c,0x31,0xff,0xf8,0x5c,0x31,0xff,0xf8,0x5c,0x31,0xff,0xf8,0x53,0x26,0xff,0xfb,0x98,0x7c,0x9b,0xff,0xff,0xff,0x00,0x7c,0x7c,0x7a,0x9d,0x2e,0x2d,0x29,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x37,0x36,0x32,0xff,0x41,0x40,0x3c,0xee,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x93,0xe0,0x90,0x9a,0x66,0xd3,0x61,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x5f,0xd1,0x5a,0xff,0xc9,0xf4,0xcc,0x42,0xff,0xef,0xef,0x0e,0xf8,0x69,0x41,0xf0,0xf8,0x63,0x3a,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x5d,0x32,0xff,0xfa,0x89,0x69,0xb6,0xff,0xff,0xff,0x00,0x83,0x83,0x81,0x93,0x2e,0x2d,0x28,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x37,0x36,0x32,0xff,0x41,0x40,0x3c,0xee,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x96,0xe1,0x93,0x95,0x66,0xd3,0x61,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x60,0xd1,0x5b,0xff,0xcb,0xf4,0xce,0x3f,0xff,0xf0,0xf0,0x0d,0xf8,0x6b,0x43,0xec,0xf8,0x63,0x39,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x5d,0x32,0xff,0xfa,0x8b,0x6c,0xb1,0xff,0xff,0xff,0x00,0x82,0x82,0x80,0x95,0x2e,0x2d,0x28,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x37,0x36,0x32,0xff,0x41,0x40,0x3c,0xee,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x96,0xe1,0x93,0x95,0x66,0xd3,0x61,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x60,0xd1,0x5b,0xff,0xcb,0xf4,0xce,0x3f,0xff,0xf0,0xf0,0x0d,0xf8,0x6b,0x43,0xec,0xf8,0x63,0x39,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x5d,0x32,0xff,0xfa,0x8b,0x6c,0xb1,0xff,0xff,0xff,0x00,0x82,0x82,0x80,0x95,0x2e,0x2d,0x28,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x37,0x36,0x32,0xff,0x41,0x40,0x3c,0xee,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x96,0xe1,0x93,0x95,0x66,0xd3,0x61,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x60,0xd1,0x5b,0xff,0xcb,0xf4,0xce,0x3f,0xff,0xf0,0xf0,0x0d,0xf8,0x6b,0x43,0xec,0xf8,0x63,0x39,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x5d,0x32,0xff,0xfa,0x8b,0x6c,0xb1,0xff,0xff,0xff,0x00,0x82,0x82,0x80,0x95,0x2e,0x2d,0x28,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x37,0x36,0x32,0xff,0x41,0x40,0x3c,0xee,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x96,0xe1,0x93,0x95,0x66,0xd3,0x61,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x60,0xd1,0x5b,0xff,0xcb,0xf4,0xce,0x3f,0xff,0xf0,0xf0,0x0d,0xf8,0x6b,0x43,0xec,0xf8,0x63,0x39,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x5d,0x32,0xff,0xfa,0x8b,0x6c,0xb1,0xff,0xff,0xff,0x00,0x82,0x82,0x80,0x95,0x2e,0x2d,0x28,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x37,0x36,0x32,0xff,0x41,0x40,0x3c,0xee,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x95,0xe1,0x93,0x97,0x66,0xd3,0x61,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x60,0xd1,0x5b,0xff,0xcb,0xf4,0xce,0x3f,0xff,0xf0,0xf0,0x0d,0xf8,0x6b,0x43,0xec,0xf8,0x63,0x39,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x5d,0x32,0xff,0xfa,0x8b,0x6c,0xb1,0xff,0xff,0xff,0x00,0x82,0x82,0x80,0x95,0x2e,0x2d,0x28,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x37,0x36,0x32,0xff,0x41,0x40,0x3c,0xee,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x97,0xe1,0x93,0x8d,0x66,0xd3,0x61,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x60,0xd1,0x5b,0xff,0xcb,0xf4,0xce,0x3f,0xff,0xf0,0xf0,0x0d,0xf8,0x6b,0x43,0xec,0xf8,0x63,0x39,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x5d,0x32,0xff,0xfa,0x8b,0x6c,0xb1,0xff,0xff,0xff,0x00,0x82,0x82,0x80,0x95,0x2e,0x2d,0x28,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x37,0x36,0x32,0xff,0x40,0x3f,0x3b,0xee,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0xba,0xeb,0xb8,0x51,0x66,0xd3,0x61,0xf8,0x66,0xd3,0x61,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x60,0xd1,0x5b,0xff,0xcb,0xf4,0xce,0x3f,0xff,0xf0,0xf0,0x0d,0xf8,0x6b,0x43,0xec,0xf8,0x63,0x39,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x5d,0x32,0xff,0xfa,0x8b,0x6c,0xb1,0xff,0xff,0xff,0x00,0x82,0x82,0x80,0x95,0x2e,0x2d,0x28,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x35,0x34,0x30,0xff,0x4b,0x49,0x46,0xde,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0xf2,0xfc,0xf2,0x0a,0x7c,0xd9,0x78,0xbf,0x60,0xd1,0x5b,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x60,0xd1,0x5b,0xff,0xcb,0xf4,0xce,0x40,0xff,0xf0,0xf0,0x0d,0xf8,0x6b,0x43,0xed,0xf8,0x63,0x39,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x5d,0x32,0xff,0xfa,0x8b,0x6b,0xb2,0xff,0xff,0xff,0x00,0x81,0x81,0x7f,0x96,0x2e,0x2d,0x28,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x3a,0x39,0x35,0xff,0x29,0x28,0x24,0xff,0x85,0x85,0x82,0x8e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0xff,0xff,0xff,0x00,0xd3,0xf2,0xd1,0x30,0x66,0xd2,0x61,0xe2,0x5e,0xd0,0x59,0xff,0x65,0xd3,0x60,0xff,0x66,0xd3,0x61,0xff,0x66,0xd3,0x61,0xff,0x66,0xd3,0x61,0xff,0x66,0xd3,0x61,0xff,0x66,0xd3,0x61,0xff,0x66,0xd3,0x61,0xff,0x66,0xd3,0x61,0xff,0x5c,0xd0,0x57,0xff,0xcb,0xf4,0xce,0x3b,0xff,0xf1,0xf1,0x0c,0xf8,0x68,0x3f,0xf1,0xf8,0x61,0x37,0xff,0xf8,0x64,0x3a,0xff,0xf8,0x64,0x3a,0xff,0xf8,0x64,0x3a,0xff,0xf8,0x64,0x3a,0xff,0xf8,0x64,0x3a,0xff,0xf8,0x64,0x3a,0xff,0xf8,0x64,0x3a,0xff,0xf8,0x64,0x3a,0xff,0xf8,0x64,0x3b,0xff,0xf8,0x5a,0x2f,0xff,0xfa,0x89,0x69,0xb5,0xff,0xff,0xff,0x00,0x7f,0x7f,0x7d,0x97,0x2a,0x29,0x24,0xff,0x38,0x37,0x33,0xff,0x37,0x36,0x32,0xff,0x37,0x36,0x32,0xff,0x37,0x36,0x32,0xff,0x37,0x36,0x32,0xff,0x37,0x36,0x32,0xff,0x38,0x37,0x33,0xff,0x35,0x34,0x30,0xff,0x29,0x28,0x24,0xff,0x57,0x56,0x53,0xc8,0xeb,0xeb,0xea,0x14,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xda,0xf4,0xd9,0x26,0x8d,0xdf,0x8a,0x9f,0x6f,0xd6,0x6b,0xdd,0x6c,0xd4,0x67,0xed,0x6d,0xd5,0x68,0xed,0x6d,0xd5,0x68,0xec,0x6d,0xd5,0x68,0xec,0x6d,0xd5,0x68,0xec,0x6d,0xd5,0x68,0xed,0x69,0xd4,0x64,0xec,0x82,0xdb,0x7e,0xb0,0xee,0xfb,0xef,0x0c,0xff,0xfd,0xfd,0x01,0xfb,0x9b,0x81,0x92,0xf9,0x66,0x3e,0xeb,0xf9,0x6b,0x44,0xef,0xf9,0x6b,0x44,0xee,0xf9,0x6b,0x44,0xee,0xf9,0x6b,0x44,0xee,0xf9,0x6b,0x44,0xee,0xf9,0x6b,0x44,0xee,0xf9,0x6b,0x44,0xee,0xf9,0x6b,0x44,0xee,0xf9,0x6a,0x42,0xef,0xf9,0x6a,0x42,0xe3,0xfc,0xc2,0xb1,0x57,0xff,0xff,0xff,0x00,0xc3,0xc3,0xc2,0x42,0x44,0x43,0x3f,0xe0,0x3e,0x3e,0x3a,0xf0,0x41,0x40,0x3c,0xee,0x41,0x40,0x3c,0xee,0x41,0x40,0x3c,0xee,0x41,0x40,0x3c,0xee,0x41,0x40,0x3c,0xee,0x40,0x3f,0x3b,0xee,0x4a,0x49,0x46,0xdb,0x85,0x84,0x82,0x8f,0xec,0xec,0xec,0x13,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, }; @@ -76,7 +76,7 @@ const lv_img_dsc_t img_lvgl_logo = { .header.flags = 0, .header.w = 42, .header.h = 42, - .header.stride = 168, + .header.stride = 192, .data_size = sizeof(img_lvgl_logo_map), .data = img_lvgl_logo_map, }; diff --git a/docs/integration/chip/nxp.rst b/docs/integration/chip/nxp.rst index a6a1425cf..988506d22 100644 --- a/docs/integration/chip/nxp.rst +++ b/docs/integration/chip/nxp.rst @@ -71,11 +71,11 @@ handle the supported draw tasks. .. code:: c - #if LV_USE_OS + #if LV_USE_PXP_DRAW_THREAD lv_thread_init(&draw_pxp_unit->thread, LV_THREAD_PRIO_HIGH, _pxp_render_thread_cb, 2 * 1024, draw_pxp_unit); #endif -If `LV_USE_OS` is not defined, then no additional draw thread will be created +If `LV_USE_PXP_DRAW_THREAD` is not defined, then no additional draw thread will be created and the PXP drawing task will get executed on the same LVGL main thread. `_pxp_evaluate()` will get called after each task is being created and will @@ -218,7 +218,7 @@ and height, and command buffer size are in the SDK file "vglite_support.h". .. code:: c - #if LV_USE_GPU_NXP_VG_LITE + #if LV_USE_DRAW_VGLITE #include "vg_lite.h" #include "vglite_support.h" #endif @@ -265,11 +265,11 @@ handle the supported draw tasks. .. code:: c - #if LV_USE_OS + #if LV_USE_VGLITE_DRAW_THREAD lv_thread_init(&draw_vglite_unit->thread, LV_THREAD_PRIO_HIGH, _vglite_render_thread_cb, 2 * 1024, draw_vglite_unit); #endif -If `LV_USE_OS` is not defined, then no additional draw thread will be created +If `LV_USE_VGLITE_DRAW_THREAD` is not defined, then no additional draw thread will be created and the VGLite drawing task will get executed on the same LVGL main thread. `_vglite_evaluate()` will get called after each task is being created and will diff --git a/lv_conf_template.h b/lv_conf_template.h index 66462c031..1dd4df14d 100644 --- a/lv_conf_template.h +++ b/lv_conf_template.h @@ -191,8 +191,13 @@ #define LV_USE_VGLITE_BLIT_SPLIT 0 #if LV_USE_OS - /* Enable VGLite draw async. Queue multiple tasks and flash them once to the GPU. */ - #define LV_USE_VGLITE_DRAW_ASYNC 1 + /* Use additional draw thread for VG-Lite processing.*/ + #define LV_USE_VGLITE_DRAW_THREAD 1 + + #if LV_USE_VGLITE_DRAW_THREAD + /* Enable VGLite draw async. Queue multiple tasks and flash them once to the GPU. */ + #define LV_USE_VGLITE_DRAW_ASYNC 1 + #endif #endif /* Enable VGLite asserts. */ @@ -203,6 +208,11 @@ #define LV_USE_DRAW_PXP 0 #if LV_USE_DRAW_PXP + #if LV_USE_OS + /* Use additional draw thread for PXP processing.*/ + #define LV_USE_PXP_DRAW_THREAD 1 + #endif + /* Enable PXP asserts. */ #define LV_USE_PXP_ASSERT 0 #endif diff --git a/src/draw/lv_draw.c b/src/draw/lv_draw.c index 13da92009..8de27efad 100644 --- a/src/draw/lv_draw.c +++ b/src/draw/lv_draw.c @@ -3,6 +3,10 @@ * */ +/** + * Modified by NXP in 2024 + */ + /********************* * INCLUDES *********************/ @@ -78,6 +82,7 @@ void * lv_draw_create_unit(size_t size) new_unit->next = _draw_info.unit_head; _draw_info.unit_head = new_unit; + _draw_info.unit_cnt++; return new_unit; } @@ -154,20 +159,33 @@ void lv_draw_finalize_task_creation(lv_layer_t * layer, lv_draw_task_t * t) LV_PROFILER_END; } +void lv_draw_wait_for_finish(void) +{ +#if LV_USE_OS + lv_draw_unit_t * u = _draw_info.unit_head; + while(u) { + if(u->wait_for_finish_cb) + u->wait_for_finish_cb(u); + u = u->next; + } +#endif +} + void lv_draw_dispatch(void) { LV_PROFILER_BEGIN; - bool render_running = false; + bool task_dispatched = false; lv_display_t * disp = lv_display_get_next(NULL); while(disp) { lv_layer_t * layer = disp->layer_head; while(layer) { /* If there are no tasks in the layer, skip it */ if(layer->draw_task_head && lv_draw_dispatch_layer(disp, layer)) - render_running = true; + task_dispatched = true; layer = layer->next; } - if(!render_running) { + if(!task_dispatched) { + lv_draw_wait_for_finish(); lv_draw_dispatch_request(); } disp = lv_display_get_next(disp); @@ -232,7 +250,7 @@ bool lv_draw_dispatch_layer(lv_display_t * disp, lv_layer_t * layer) t = t_next; } - bool render_running = false; + bool task_dispatched = false; /*This layer is ready, enable blending its buffer*/ if(layer->parent && layer->all_tasks_added && layer->draw_task_head == NULL) { @@ -257,13 +275,13 @@ bool lv_draw_dispatch_layer(lv_display_t * disp, lv_layer_t * layer) lv_draw_unit_t * u = _draw_info.unit_head; while(u) { int32_t taken_cnt = u->dispatch_cb(u, layer); - if(taken_cnt != LV_DRAW_UNIT_IDLE) render_running = true; + if(taken_cnt != LV_DRAW_UNIT_IDLE) task_dispatched = true; u = u->next; } } LV_PROFILER_END; - return render_running; + return task_dispatched; } void lv_draw_dispatch_wait_for_request(void) @@ -285,6 +303,11 @@ void lv_draw_dispatch_request(void) #endif } +uint32_t lv_draw_get_unit_count(void) +{ + return _draw_info.unit_cnt; +} + lv_draw_task_t * lv_draw_get_next_available_task(lv_layer_t * layer, lv_draw_task_t * t_prev, uint8_t draw_unit_id) { LV_PROFILER_BEGIN; diff --git a/src/draw/lv_draw.h b/src/draw/lv_draw.h index 5dd6dd283..298526776 100644 --- a/src/draw/lv_draw.h +++ b/src/draw/lv_draw.h @@ -3,6 +3,10 @@ * */ +/** + * Modified by NXP in 2024 + */ + #ifndef LV_DRAW_H #define LV_DRAW_H @@ -171,12 +175,23 @@ bool lv_draw_dispatch_layer(lv_display_t * disp, lv_layer_t * layer); */ void lv_draw_dispatch_wait_for_request(void); +/** + * Wait for draw finish in case of asynchronous task execution. + * If `LV_USE_OS == 0` it just return. + */ +void lv_draw_wait_for_finish(void); + /** * When a draw unit finished a draw task it needs to request dispatching * to let LVGL assign a new draw task to it */ void lv_draw_dispatch_request(void); +/** + * Get the total number of draw units. + */ +uint32_t lv_draw_get_unit_count(void); + /** * Find and available draw task * @param layer the draw ctx to search in diff --git a/src/draw/lv_draw_private.h b/src/draw/lv_draw_private.h index 6978d6ad4..d8244f799 100644 --- a/src/draw/lv_draw_private.h +++ b/src/draw/lv_draw_private.h @@ -3,6 +3,10 @@ * */ +/** + * Modified by NXP in 2024 + */ + #ifndef LV_DRAW_PRIVATE_H #define LV_DRAW_PRIVATE_H @@ -111,6 +115,51 @@ struct lv_draw_unit_t { */ int32_t (*evaluate_cb)(lv_draw_unit_t * draw_unit, lv_draw_task_t * task); + /** + * Called to signal the unit to complete all tasks in order to return their ready status. + * This callback can be implemented in case of asynchronous task processing. + * Below is an example to show the difference between synchronous and asynchronous: + * + * Synchronous: + * LVGL thread DRAW thread HW + * + * task1 --> submit --> Receive task1 + * wait_for_finish() + * <-- task1->state = READY <-- Complete task1 + * task2 --> submit --> Receive task2 + * wait_for_finish() + * task2->state = READY <-- Complete task2 + * task3 --> submit --> Receive task3 + * wait_for_finish() + * <-- task3->state = READY <-- Complete task3 + * task4 --> submit --> Receive task4 + * wait_for_finish() + * <-- task4->state = READY <-- Complete task4 + * NO MORE TASKS + * + * + * Asynchronous: + * LVGL thread DRAW thread HW + * is IDLE + * task1 --> queue task1 + * submit --> Receive task1 + * task2 --> queue task2 is BUSY (with task1) + * task3 --> queue task3 still BUSY (with task1) + * task4 --> queue task4 becomes IDLE + * <-- task1->state = READY <-- Complete task1 + * submit --> Receive task2, task3, task4 + * NO MORE TASKS + * wait_for_finish_cb() wait_for_finish() + * <-- Complete task2, task3, task4 + * <-- task2->state = READY <-- + * <-- task3->state = READY <-- + * <-- task4->state = READY <-- + * + * @param draw_unit + * @return + */ + int32_t (*wait_for_finish_cb)(lv_draw_unit_t * draw_unit); + /** * Called to delete draw unit. * @param draw_unit @@ -121,6 +170,7 @@ struct lv_draw_unit_t { typedef struct { lv_draw_unit_t * unit_head; + uint32_t unit_cnt; uint32_t used_memory_for_layers_kb; #if LV_USE_OS lv_thread_sync_t sync; diff --git a/src/draw/nxp/pxp/lv_draw_pxp.c b/src/draw/nxp/pxp/lv_draw_pxp.c index f5b390f8a..e606e6798 100644 --- a/src/draw/nxp/pxp/lv_draw_pxp.c +++ b/src/draw/nxp/pxp/lv_draw_pxp.c @@ -54,7 +54,7 @@ static int32_t _pxp_dispatch(lv_draw_unit_t * draw_unit, lv_layer_t * layer); */ static int32_t _pxp_delete(lv_draw_unit_t * draw_unit); -#if LV_USE_OS +#if LV_USE_PXP_DRAW_THREAD static void _pxp_render_thread_cb(void * ptr); #endif @@ -91,7 +91,7 @@ void lv_draw_pxp_init(void) lv_pxp_init(); -#if LV_USE_OS +#if LV_USE_PXP_DRAW_THREAD lv_thread_init(&draw_pxp_unit->thread, LV_THREAD_PRIO_HIGH, _pxp_render_thread_cb, 2 * 1024, draw_pxp_unit); #endif } @@ -330,7 +330,7 @@ static int32_t _pxp_dispatch(lv_draw_unit_t * draw_unit, lv_layer_t * layer) draw_pxp_unit->base_unit.clip_area = &t->clip_area; draw_pxp_unit->task_act = t; -#if LV_USE_OS +#if LV_USE_PXP_DRAW_THREAD /* Let the render thread work. */ if(draw_pxp_unit->inited) lv_thread_sync_signal(&draw_pxp_unit->sync); @@ -349,7 +349,7 @@ static int32_t _pxp_dispatch(lv_draw_unit_t * draw_unit, lv_layer_t * layer) static int32_t _pxp_delete(lv_draw_unit_t * draw_unit) { -#if LV_USE_OS +#if LV_USE_PXP_DRAW_THREAD lv_draw_pxp_unit_t * draw_pxp_unit = (lv_draw_pxp_unit_t *) draw_unit; LV_LOG_INFO("Cancel PXP draw thread."); @@ -445,7 +445,7 @@ static void _pxp_execute_drawing(lv_draw_pxp_unit_t * u) #endif } -#if LV_USE_OS +#if LV_USE_PXP_DRAW_THREAD static void _pxp_render_thread_cb(void * ptr) { lv_draw_pxp_unit_t * u = ptr; diff --git a/src/draw/nxp/vglite/lv_draw_vglite.c b/src/draw/nxp/vglite/lv_draw_vglite.c index e9d4114b5..bf9dce96e 100644 --- a/src/draw/nxp/vglite/lv_draw_vglite.c +++ b/src/draw/nxp/vglite/lv_draw_vglite.c @@ -19,9 +19,7 @@ #include "lv_vglite_buf.h" #include "lv_vglite_utils.h" -#if LV_USE_PARALLEL_DRAW_DEBUG - #include "../../../core/lv_global.h" -#endif +#include "../../../core/lv_global.h" /********************* * DEFINES @@ -30,7 +28,7 @@ #define DRAW_UNIT_ID_VGLITE 2 #if LV_USE_VGLITE_DRAW_ASYNC - #define VGLITE_TASK_BUF_SIZE 10 + #define VGLITE_TASK_BUF_SIZE 100 #endif /********************** @@ -63,12 +61,19 @@ static int32_t _vglite_evaluate(lv_draw_unit_t * draw_unit, lv_draw_task_t * tas */ static int32_t _vglite_dispatch(lv_draw_unit_t * draw_unit, lv_layer_t * layer); +/* + * Wait for VG-Lite draw unit to finish. + */ +#if LV_USE_VGLITE_DRAW_ASYNC + static int32_t _vglite_wait_for_finish(lv_draw_unit_t * draw_unit); +#endif + /* * Delete the VGLite draw unit. */ static int32_t _vglite_delete(lv_draw_unit_t * draw_unit); -#if LV_USE_OS +#if LV_USE_VGLITE_DRAW_THREAD static void _vglite_render_thread_cb(void * ptr); #endif @@ -78,9 +83,7 @@ static void _vglite_execute_drawing(lv_draw_vglite_unit_t * u); * STATIC VARIABLES **********************/ -#if LV_USE_PARALLEL_DRAW_DEBUG - #define _draw_info LV_GLOBAL_DEFAULT()->draw_info -#endif +#define _draw_info LV_GLOBAL_DEFAULT()->draw_info #if LV_USE_VGLITE_DRAW_ASYNC /* @@ -108,9 +111,12 @@ void lv_draw_vglite_init(void) lv_draw_vglite_unit_t * draw_vglite_unit = lv_draw_create_unit(sizeof(lv_draw_vglite_unit_t)); draw_vglite_unit->base_unit.evaluate_cb = _vglite_evaluate; draw_vglite_unit->base_unit.dispatch_cb = _vglite_dispatch; +#if LV_USE_VGLITE_DRAW_ASYNC + draw_vglite_unit->base_unit.wait_for_finish_cb = _vglite_wait_for_finish; +#endif draw_vglite_unit->base_unit.delete_cb = _vglite_delete; -#if LV_USE_OS +#if LV_USE_VGLITE_DRAW_THREAD lv_thread_init(&draw_vglite_unit->thread, LV_THREAD_PRIO_HIGH, _vglite_render_thread_cb, 2 * 1024, draw_vglite_unit); #endif } @@ -282,9 +288,26 @@ static int32_t _vglite_dispatch(lv_draw_unit_t * draw_unit, lv_layer_t * layer) /* Try to get an ready to draw. */ lv_draw_task_t * t = lv_draw_get_next_available_task(layer, NULL, DRAW_UNIT_ID_VGLITE); - if(t == NULL || t->preferred_draw_unit_id != DRAW_UNIT_ID_VGLITE) + if(t == NULL) return LV_DRAW_UNIT_IDLE; + if(lv_draw_get_unit_count() > 1) { + /* Let the SW unit to draw this task. */ + if(t->preferred_draw_unit_id != DRAW_UNIT_ID_VGLITE) + return LV_DRAW_UNIT_IDLE; + } + else { + /* Fake unsupported tasks as ready. */ + if(t->preferred_draw_unit_id != DRAW_UNIT_ID_VGLITE) { + t->state = LV_DRAW_TASK_STATE_READY; + + /* Request a new dispatching as it can get a new task. */ + lv_draw_dispatch_request(); + + return 1; + } + } + void * buf = lv_draw_layer_alloc_buf(layer); if(buf == NULL) return LV_DRAW_UNIT_IDLE; @@ -294,7 +317,7 @@ static int32_t _vglite_dispatch(lv_draw_unit_t * draw_unit, lv_layer_t * layer) draw_vglite_unit->base_unit.clip_area = &t->clip_area; draw_vglite_unit->task_act = t; -#if LV_USE_OS +#if LV_USE_VGLITE_DRAW_THREAD /* Let the render thread work. */ if(draw_vglite_unit->inited) lv_thread_sync_signal(&draw_vglite_unit->sync); @@ -311,9 +334,22 @@ static int32_t _vglite_dispatch(lv_draw_unit_t * draw_unit, lv_layer_t * layer) return 1; } +#if LV_USE_VGLITE_DRAW_ASYNC +static int32_t _vglite_wait_for_finish(lv_draw_unit_t * draw_unit) +{ + lv_draw_vglite_unit_t * draw_vglite_unit = (lv_draw_vglite_unit_t *) draw_unit; + draw_vglite_unit->wait_for_finish = true; + + if(draw_vglite_unit->inited) + lv_thread_sync_signal(&draw_vglite_unit->sync); + + return 1; +} +#endif + static int32_t _vglite_delete(lv_draw_unit_t * draw_unit) { -#if LV_USE_OS +#if LV_USE_VGLITE_DRAW_THREAD lv_draw_vglite_unit_t * draw_vglite_unit = (lv_draw_vglite_unit_t *) draw_unit; LV_LOG_INFO("Cancel VGLite draw thread."); @@ -328,7 +364,7 @@ static int32_t _vglite_delete(lv_draw_unit_t * draw_unit) #else LV_UNUSED(draw_unit); - return 0; + return 1; #endif } @@ -354,8 +390,8 @@ static void _vglite_execute_drawing(lv_draw_vglite_unit_t * u) if(!lv_area_intersect(&draw_area, &draw_area, &clip_area)) return; /*Fully clipped, nothing to do*/ - /* Invalidate the drawing area */ - lv_draw_buf_invalidate_cache(draw_buf, &draw_area); + if(_draw_info.unit_cnt > 1) + lv_draw_buf_invalidate_cache(draw_buf, &draw_area); /* Set scissor area, excluding the split blit case */ #if LV_USE_VGLITE_BLIT_SPLIT @@ -442,27 +478,46 @@ static void _vglite_execute_drawing(lv_draw_vglite_unit_t * u) } #if LV_USE_VGLITE_DRAW_ASYNC -static inline void _vglite_queue_task(lv_draw_task_t * task_act) +static inline void _vglite_queue_task(lv_draw_task_t * task) { - _draw_task_buf[_tail].task = task_act; + VGLITE_ASSERT_MSG(((_tail + 1) % VGLITE_TASK_BUF_SIZE) != _head, "VGLite task buffer full."); + + _draw_task_buf[_tail].task = task; _draw_task_buf[_tail].flushed = false; _tail = (_tail + 1) % VGLITE_TASK_BUF_SIZE; } -static inline void _vglite_signal_task_ready(lv_draw_task_t * task_act) +static inline void _vglite_signal_task_ready(lv_draw_task_t * task) +{ + /* Signal the ready state to dispatcher. */ + task->state = LV_DRAW_TASK_STATE_READY; + _head = (_head + 1) % VGLITE_TASK_BUF_SIZE; + + /* No need to cleanup the tasks in buffer as we advance with the _head. */ +} + +static inline void _vglite_signal_all_task_ready(void) +{ + int end = (_head <= _tail) ? _tail : _tail + VGLITE_TASK_BUF_SIZE; + + for(int i = _head; i < end; i++) { + lv_draw_task_t * task = _draw_task_buf[i % VGLITE_TASK_BUF_SIZE].task; + + _vglite_signal_task_ready(task); + } +} + +static inline void _vglite_signal_flushed_task_ready(void) { if(vglite_cmd_buf_is_flushed()) { - int end = (_head < _tail) ? _tail : _tail + VGLITE_TASK_BUF_SIZE; + int end = (_head <= _tail) ? _tail : _tail + VGLITE_TASK_BUF_SIZE; for(int i = _head; i < end; i++) { - /* Previous flushed tasks are ready now. */ if(_draw_task_buf[i % VGLITE_TASK_BUF_SIZE].flushed) { lv_draw_task_t * task = _draw_task_buf[i % VGLITE_TASK_BUF_SIZE].task; - /* Signal the ready state to dispatcher. */ - task->state = LV_DRAW_TASK_STATE_READY; - _head = (_head + 1) % VGLITE_TASK_BUF_SIZE; - /* No need to cleanup the tasks in buffer as we advance with the _head. */ + _vglite_signal_task_ready(task); + } else { /* Those tasks have been flushed now. */ @@ -470,13 +525,10 @@ static inline void _vglite_signal_task_ready(lv_draw_task_t * task_act) } } } - - if(task_act) - VGLITE_ASSERT_MSG(_tail != _head, "VGLite task buffer full."); } #endif -#if LV_USE_OS +#if LV_USE_VGLITE_DRAW_THREAD static void _vglite_render_thread_cb(void * ptr) { lv_draw_vglite_unit_t * u = ptr; @@ -490,9 +542,9 @@ static void _vglite_render_thread_cb(void * ptr) #if LV_USE_VGLITE_DRAW_ASYNC /* * Wait for sync if _draw_task_buf is empty. - * The thread will have to run as much as there are pending tasks. + * The thread will have to run to complete any pending tasks. */ - && _head == _tail + && !u->wait_for_finish #endif ) { if(u->exit_status) @@ -513,16 +565,14 @@ static void _vglite_render_thread_cb(void * ptr) _vglite_execute_drawing(u); } #if LV_USE_VGLITE_DRAW_ASYNC - else { - /* - * Update the flush status for last pending tasks. - * vg_lite_flush() will early return if there is nothing to submit. - */ - vglite_run(); + if(u->wait_for_finish) { + u->wait_for_finish = false; + vglite_wait_for_finish(); + _vglite_signal_all_task_ready(); + } + else { /* u->task_act */ + _vglite_signal_flushed_task_ready(); } -#endif -#if LV_USE_VGLITE_DRAW_ASYNC - _vglite_signal_task_ready((void *)u->task_act); #else /* Signal the ready state to dispatcher. */ u->task_act->state = LV_DRAW_TASK_STATE_READY; diff --git a/src/draw/nxp/vglite/lv_draw_vglite.h b/src/draw/nxp/vglite/lv_draw_vglite.h index fe3cdfbc2..93b18cd7e 100644 --- a/src/draw/nxp/vglite/lv_draw_vglite.h +++ b/src/draw/nxp/vglite/lv_draw_vglite.h @@ -23,7 +23,9 @@ extern "C" { #include "../../../lv_conf_internal.h" #if LV_USE_DRAW_VGLITE -#include "../../sw/lv_draw_sw.h" +#include "../../lv_draw_private.h" +#include "../../sw/lv_draw_sw_private.h" +#include "../../../misc/lv_area_private.h" /********************* * DEFINES @@ -33,7 +35,12 @@ extern "C" { * TYPEDEFS **********************/ -typedef lv_draw_sw_unit_t lv_draw_vglite_unit_t; +typedef struct lv_draw_vglite_unit { + lv_draw_sw_unit_t; +#if LV_USE_VGLITE_DRAW_ASYNC + volatile bool wait_for_finish; +#endif +} lv_draw_vglite_unit_t; /********************** * GLOBAL PROTOTYPES diff --git a/src/draw/nxp/vglite/lv_draw_vglite_label.c b/src/draw/nxp/vglite/lv_draw_vglite_label.c index 102077fe7..9af7c6837 100644 --- a/src/draw/nxp/vglite/lv_draw_vglite_label.c +++ b/src/draw/nxp/vglite/lv_draw_vglite_label.c @@ -20,6 +20,7 @@ #include "lv_vglite_matrix.h" #include "lv_vglite_utils.h" +#include "../../lv_draw_label_private.h" #include "../../../stdlib/lv_string.h" /********************* @@ -118,26 +119,15 @@ static void _draw_vglite_letter(lv_draw_unit_t * draw_unit, lv_draw_glyph_dsc_t mask_area.x2 = mask_width - 1; mask_area.y2 = mask_height - 1; - if(!vglite_src_buf_aligned(mask_buf, mask_stride, LV_COLOR_FORMAT_A8)) { - /* Draw a placeholder rectangle*/ - lv_draw_border_dsc_t border_draw_dsc; - lv_draw_border_dsc_init(&border_draw_dsc); - border_draw_dsc.opa = glyph_draw_dsc->opa; - border_draw_dsc.color = glyph_draw_dsc->color; - border_draw_dsc.width = 1; - lv_draw_vglite_border(draw_unit, &border_draw_dsc, glyph_draw_dsc->bg_coords); - } - else { - /* Set src_vgbuf structure. */ - vglite_set_src_buf(mask_buf, mask_width, mask_height, mask_stride, LV_COLOR_FORMAT_A8); + /* Set src_vgbuf structure. */ + vglite_set_src_buf(mask_buf, mask_width, mask_height, mask_stride, LV_COLOR_FORMAT_A8); - /* Set vgmatrix. */ - vglite_set_translation_matrix(&blend_area); + /* Set vgmatrix. */ + vglite_set_translation_matrix(&blend_area); - lv_draw_buf_invalidate_cache(draw_buf, &mask_area); + lv_draw_buf_invalidate_cache(draw_buf, &mask_area); - _vglite_draw_letter(&mask_area, glyph_draw_dsc->color, glyph_draw_dsc->opa); - } + _vglite_draw_letter(&mask_area, glyph_draw_dsc->color, glyph_draw_dsc->opa); } break; case LV_FONT_GLYPH_FORMAT_IMAGE: { diff --git a/src/draw/nxp/vglite/lv_draw_vglite_layer.c b/src/draw/nxp/vglite/lv_draw_vglite_layer.c index 42e85ee26..ce3f59ea5 100644 --- a/src/draw/nxp/vglite/lv_draw_vglite_layer.c +++ b/src/draw/nxp/vglite/lv_draw_vglite_layer.c @@ -18,9 +18,7 @@ #if LV_USE_DRAW_VGLITE #include "../../../stdlib/lv_string.h" -#if LV_USE_PARALLEL_DRAW_DEBUG - #include "../../../core/lv_global.h" -#endif +#include "../../../core/lv_global.h" /********************* * DEFINES @@ -38,9 +36,7 @@ * STATIC VARIABLES **********************/ -#if LV_USE_PARALLEL_DRAW_DEBUG - #define _draw_info LV_GLOBAL_DEFAULT()->draw_info -#endif +#define _draw_info LV_GLOBAL_DEFAULT()->draw_info /********************** * MACROS @@ -62,13 +58,15 @@ void lv_draw_vglite_layer(lv_draw_unit_t * draw_unit, const lv_draw_image_dsc_t if(draw_buf == NULL) return; - const lv_area_t area_to_draw = { - .x1 = 0, - .y1 = 0, - .x2 = draw_buf->header.w - 1, - .y2 = draw_buf->header.h - 1 - }; - lv_draw_buf_invalidate_cache(draw_buf, &area_to_draw); + if(_draw_info.unit_cnt > 1) { + const lv_area_t area_to_draw = { + .x1 = 0, + .y1 = 0, + .x2 = draw_buf->header.w - 1, + .y2 = draw_buf->header.h - 1 + }; + lv_draw_buf_invalidate_cache(draw_buf, &area_to_draw); + } lv_draw_image_dsc_t new_draw_dsc = *draw_dsc; new_draw_dsc.src = draw_buf; diff --git a/src/draw/nxp/vglite/lv_vglite_utils.c b/src/draw/nxp/vglite/lv_vglite_utils.c index 1ef4cb551..b3afa5a40 100644 --- a/src/draw/nxp/vglite/lv_vglite_utils.c +++ b/src/draw/nxp/vglite/lv_vglite_utils.c @@ -104,6 +104,13 @@ void vglite_run(void) #endif } +#if LV_USE_VGLITE_DRAW_ASYNC +void vglite_wait_for_finish(void) +{ + VGLITE_CHECK_ERROR(vg_lite_finish()); +} +#endif + vg_lite_color_t vglite_get_color(lv_color32_t lv_col32, bool gradient) { vg_lite_color_t vg_col32; diff --git a/src/draw/nxp/vglite/lv_vglite_utils.h b/src/draw/nxp/vglite/lv_vglite_utils.h index 5fab0bddb..6615c4c79 100644 --- a/src/draw/nxp/vglite/lv_vglite_utils.h +++ b/src/draw/nxp/vglite/lv_vglite_utils.h @@ -95,6 +95,14 @@ bool vglite_cmd_buf_is_flushed(void); */ void vglite_run(void); +/** + * Wait for VG-Lite finish. + * + */ +#if LV_USE_VGLITE_DRAW_ASYNC +void vglite_wait_for_finish(void); +#endif + /** * Get vglite color. Premultiplies (if not hw already) and swizzles the given * LVGL 32bit color to obtain vglite color. diff --git a/src/lv_conf_internal.h b/src/lv_conf_internal.h index b147f9a3b..5cebb73f1 100644 --- a/src/lv_conf_internal.h +++ b/src/lv_conf_internal.h @@ -570,16 +570,31 @@ #endif #if LV_USE_OS - /* Enable VGLite draw async. Queue multiple tasks and flash them once to the GPU. */ - #ifndef LV_USE_VGLITE_DRAW_ASYNC + /* Use additional draw thread for VG-Lite processing.*/ + #ifndef LV_USE_VGLITE_DRAW_THREAD #ifdef LV_KCONFIG_PRESENT - #ifdef CONFIG_LV_USE_VGLITE_DRAW_ASYNC - #define LV_USE_VGLITE_DRAW_ASYNC CONFIG_LV_USE_VGLITE_DRAW_ASYNC + #ifdef CONFIG_LV_USE_VGLITE_DRAW_THREAD + #define LV_USE_VGLITE_DRAW_THREAD CONFIG_LV_USE_VGLITE_DRAW_THREAD #else - #define LV_USE_VGLITE_DRAW_ASYNC 0 + #define LV_USE_VGLITE_DRAW_THREAD 0 #endif #else - #define LV_USE_VGLITE_DRAW_ASYNC 1 + #define LV_USE_VGLITE_DRAW_THREAD 1 + #endif + #endif + + #if LV_USE_VGLITE_DRAW_THREAD + /* Enable VGLite draw async. Queue multiple tasks and flash them once to the GPU. */ + #ifndef LV_USE_VGLITE_DRAW_ASYNC + #ifdef LV_KCONFIG_PRESENT + #ifdef CONFIG_LV_USE_VGLITE_DRAW_ASYNC + #define LV_USE_VGLITE_DRAW_ASYNC CONFIG_LV_USE_VGLITE_DRAW_ASYNC + #else + #define LV_USE_VGLITE_DRAW_ASYNC 0 + #endif + #else + #define LV_USE_VGLITE_DRAW_ASYNC 1 + #endif #endif #endif #endif @@ -604,6 +619,21 @@ #endif #if LV_USE_DRAW_PXP + #if LV_USE_OS + /* Use additional draw thread for PXP processing.*/ + #ifndef LV_USE_PXP_DRAW_THREAD + #ifdef LV_KCONFIG_PRESENT + #ifdef CONFIG_LV_USE_PXP_DRAW_THREAD + #define LV_USE_PXP_DRAW_THREAD CONFIG_LV_USE_PXP_DRAW_THREAD + #else + #define LV_USE_PXP_DRAW_THREAD 0 + #endif + #else + #define LV_USE_PXP_DRAW_THREAD 1 + #endif + #endif + #endif + /* Enable PXP asserts. */ #ifndef LV_USE_PXP_ASSERT #ifdef CONFIG_LV_USE_PXP_ASSERT diff --git a/src/widgets/canvas/lv_canvas.c b/src/widgets/canvas/lv_canvas.c index d2a65f074..4aa46f33b 100644 --- a/src/widgets/canvas/lv_canvas.c +++ b/src/widgets/canvas/lv_canvas.c @@ -3,6 +3,10 @@ * */ +/** + * Modified by NXP in 2024 + */ + /********************* * INCLUDES *********************/ @@ -387,9 +391,17 @@ void lv_canvas_init_layer(lv_obj_t * obj, lv_layer_t * layer) void lv_canvas_finish_layer(lv_obj_t * canvas, lv_layer_t * layer) { if(layer->draw_task_head == NULL) return; + + bool task_dispatched; + while(layer->draw_task_head) { lv_draw_dispatch_wait_for_request(); - lv_draw_dispatch_layer(lv_obj_get_display(canvas), layer); + task_dispatched = lv_draw_dispatch_layer(lv_obj_get_display(canvas), layer); + + if(!task_dispatched) { + lv_draw_wait_for_finish(); + lv_draw_dispatch_request(); + } } lv_obj_invalidate(canvas); }