add some code
This commit is contained in:
@@ -0,0 +1 @@
|
||||
c95160503ccd2ce4c3cf4194888005ca14f0f47a4cd0bb3f6d5f003733a2c3de
|
||||
104
managed_components/espressif2022__esp_emote_gfx/.gitignore
vendored
Normal file
104
managed_components/espressif2022__esp_emote_gfx/.gitignore
vendored
Normal file
@@ -0,0 +1,104 @@
|
||||
# Object files
|
||||
*.o
|
||||
*.ko
|
||||
*.obj
|
||||
*.elf
|
||||
|
||||
# Precompiled Headers
|
||||
*.gch
|
||||
*.pch
|
||||
|
||||
# Libraries
|
||||
*.lib
|
||||
*.a
|
||||
*.la
|
||||
*.lo
|
||||
|
||||
# Shared objects (inc. Windows DLLs)
|
||||
*.so
|
||||
*.so.*
|
||||
*.dylib
|
||||
|
||||
# Executables
|
||||
*.out
|
||||
*.app
|
||||
*.i*86
|
||||
*.x86_64
|
||||
*.hex
|
||||
|
||||
# Debug files
|
||||
*.dSYM/
|
||||
|
||||
# =========================
|
||||
# Operating System Files
|
||||
# =========================
|
||||
|
||||
# Linux
|
||||
# =========================
|
||||
|
||||
# Vim temporary files
|
||||
*~
|
||||
*.swp
|
||||
*.swo
|
||||
|
||||
# OSX
|
||||
# =========================
|
||||
|
||||
.DS_Store
|
||||
.AppleDouble
|
||||
.LSOverride
|
||||
|
||||
# Thumbnails
|
||||
._*
|
||||
|
||||
# Files that might appear in the root of a volume
|
||||
.DocumentRevisions-V100
|
||||
.fseventsd
|
||||
.Spotlight-V100
|
||||
.TemporaryItems
|
||||
.Trashes
|
||||
.VolumeIcon.icns
|
||||
|
||||
# Directories potentially created on remote AFP share
|
||||
.AppleDB
|
||||
.AppleDesktop
|
||||
Network Trash Folder
|
||||
Temporary Items
|
||||
.apdisk
|
||||
|
||||
# Windows
|
||||
# =========================
|
||||
|
||||
# Windows image file caches
|
||||
Thumbs.db
|
||||
ehthumbs.db
|
||||
|
||||
# Folder config file
|
||||
Desktop.ini
|
||||
|
||||
# Recycle Bin used on file shares
|
||||
$RECYCLE.BIN/
|
||||
|
||||
# Windows Installer files
|
||||
*.cab
|
||||
*.msi
|
||||
*.msm
|
||||
*.msp
|
||||
|
||||
# Windows shortcuts
|
||||
*.lnk
|
||||
|
||||
# ESP32
|
||||
build/
|
||||
sdkconfig
|
||||
managed_components/
|
||||
*.lock
|
||||
dist/
|
||||
|
||||
#Vscoe
|
||||
.vscode/
|
||||
.sdkconfig
|
||||
.sbmp
|
||||
.bmp
|
||||
.gif
|
||||
sdkconfig.old
|
||||
20
managed_components/espressif2022__esp_emote_gfx/CHANGELOG.md
Normal file
20
managed_components/espressif2022__esp_emote_gfx/CHANGELOG.md
Normal file
@@ -0,0 +1,20 @@
|
||||
# Changelog
|
||||
|
||||
All notable changes to the ESP Emote GFX component will be documented in this file.
|
||||
|
||||
## [1.0.0] - 2025-08-01
|
||||
|
||||
### Added
|
||||
- Initial release of ESP Emote GFX framework
|
||||
- Core graphics rendering engine
|
||||
- Object system for images and labels
|
||||
- Basic drawing functions and color utilities
|
||||
- Software blending capabilities
|
||||
- Timer system for animations
|
||||
- Support for ESP-IDF 5.0+
|
||||
- FreeType font rendering integration
|
||||
- JPEG image decoding support
|
||||
|
||||
### Features
|
||||
- Lightweight graphics framework optimized for embedded systems
|
||||
- Memory-efficient design for resource-constrained environments
|
||||
File diff suppressed because one or more lines are too long
@@ -0,0 +1,10 @@
|
||||
# Get all source files recursively from src directory
|
||||
file(GLOB_RECURSE SRC_FILES "src/*.c")
|
||||
|
||||
idf_component_register(
|
||||
SRCS ${SRC_FILES}
|
||||
INCLUDE_DIRS
|
||||
"include"
|
||||
"include_priv"
|
||||
REQUIRES esp_timer
|
||||
)
|
||||
202
managed_components/espressif2022__esp_emote_gfx/LICENSE
Normal file
202
managed_components/espressif2022__esp_emote_gfx/LICENSE
Normal file
@@ -0,0 +1,202 @@
|
||||
|
||||
Apache License
|
||||
Version 2.0, January 2004
|
||||
http://www.apache.org/licenses/
|
||||
|
||||
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
||||
|
||||
1. Definitions.
|
||||
|
||||
"License" shall mean the terms and conditions for use, reproduction,
|
||||
and distribution as defined by Sections 1 through 9 of this document.
|
||||
|
||||
"Licensor" shall mean the copyright owner or entity authorized by
|
||||
the copyright owner that is granting the License.
|
||||
|
||||
"Legal Entity" shall mean the union of the acting entity and all
|
||||
other entities that control, are controlled by, or are under common
|
||||
control with that entity. For the purposes of this definition,
|
||||
"control" means (i) the power, direct or indirect, to cause the
|
||||
direction or management of such entity, whether by contract or
|
||||
otherwise, or (ii) ownership of fifty percent (50%) or more of the
|
||||
outstanding shares, or (iii) beneficial ownership of such entity.
|
||||
|
||||
"You" (or "Your") shall mean an individual or Legal Entity
|
||||
exercising permissions granted by this License.
|
||||
|
||||
"Source" form shall mean the preferred form for making modifications,
|
||||
including but not limited to software source code, documentation
|
||||
source, and configuration files.
|
||||
|
||||
"Object" form shall mean any form resulting from mechanical
|
||||
transformation or translation of a Source form, including but
|
||||
not limited to compiled object code, generated documentation,
|
||||
and conversions to other media types.
|
||||
|
||||
"Work" shall mean the work of authorship, whether in Source or
|
||||
Object form, made available under the License, as indicated by a
|
||||
copyright notice that is included in or attached to the work
|
||||
(an example is provided in the Appendix below).
|
||||
|
||||
"Derivative Works" shall mean any work, whether in Source or Object
|
||||
form, that is based on (or derived from) the Work and for which the
|
||||
editorial revisions, annotations, elaborations, or other modifications
|
||||
represent, as a whole, an original work of authorship. For the purposes
|
||||
of this License, Derivative Works shall not include works that remain
|
||||
separable from, or merely link (or bind by name) to the interfaces of,
|
||||
the Work and Derivative Works thereof.
|
||||
|
||||
"Contribution" shall mean any work of authorship, including
|
||||
the original version of the Work and any modifications or additions
|
||||
to that Work or Derivative Works thereof, that is intentionally
|
||||
submitted to Licensor for inclusion in the Work by the copyright owner
|
||||
or by an individual or Legal Entity authorized to submit on behalf of
|
||||
the copyright owner. For the purposes of this definition, "submitted"
|
||||
means any form of electronic, verbal, or written communication sent
|
||||
to the Licensor or its representatives, including but not limited to
|
||||
communication on electronic mailing lists, source code control systems,
|
||||
and issue tracking systems that are managed by, or on behalf of, the
|
||||
Licensor for the purpose of discussing and improving the Work, but
|
||||
excluding communication that is conspicuously marked or otherwise
|
||||
designated in writing by the copyright owner as "Not a Contribution."
|
||||
|
||||
"Contributor" shall mean Licensor and any individual or Legal Entity
|
||||
on behalf of whom a Contribution has been received by Licensor and
|
||||
subsequently incorporated within the Work.
|
||||
|
||||
2. Grant of Copyright License. Subject to the terms and conditions of
|
||||
this License, each Contributor hereby grants to You a perpetual,
|
||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||
copyright license to reproduce, prepare Derivative Works of,
|
||||
publicly display, publicly perform, sublicense, and distribute the
|
||||
Work and such Derivative Works in Source or Object form.
|
||||
|
||||
3. Grant of Patent License. Subject to the terms and conditions of
|
||||
this License, each Contributor hereby grants to You a perpetual,
|
||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||
(except as stated in this section) patent license to make, have made,
|
||||
use, offer to sell, sell, import, and otherwise transfer the Work,
|
||||
where such license applies only to those patent claims licensable
|
||||
by such Contributor that are necessarily infringed by their
|
||||
Contribution(s) alone or by combination of their Contribution(s)
|
||||
with the Work to which such Contribution(s) was submitted. If You
|
||||
institute patent litigation against any entity (including a
|
||||
cross-claim or counterclaim in a lawsuit) alleging that the Work
|
||||
or a Contribution incorporated within the Work constitutes direct
|
||||
or contributory patent infringement, then any patent licenses
|
||||
granted to You under this License for that Work shall terminate
|
||||
as of the date such litigation is filed.
|
||||
|
||||
4. Redistribution. You may reproduce and distribute copies of the
|
||||
Work or Derivative Works thereof in any medium, with or without
|
||||
modifications, and in Source or Object form, provided that You
|
||||
meet the following conditions:
|
||||
|
||||
(a) You must give any other recipients of the Work or
|
||||
Derivative Works a copy of this License; and
|
||||
|
||||
(b) You must cause any modified files to carry prominent notices
|
||||
stating that You changed the files; and
|
||||
|
||||
(c) You must retain, in the Source form of any Derivative Works
|
||||
that You distribute, all copyright, patent, trademark, and
|
||||
attribution notices from the Source form of the Work,
|
||||
excluding those notices that do not pertain to any part of
|
||||
the Derivative Works; and
|
||||
|
||||
(d) If the Work includes a "NOTICE" text file as part of its
|
||||
distribution, then any Derivative Works that You distribute must
|
||||
include a readable copy of the attribution notices contained
|
||||
within such NOTICE file, excluding those notices that do not
|
||||
pertain to any part of the Derivative Works, in at least one
|
||||
of the following places: within a NOTICE text file distributed
|
||||
as part of the Derivative Works; within the Source form or
|
||||
documentation, if provided along with the Derivative Works; or,
|
||||
within a display generated by the Derivative Works, if and
|
||||
wherever such third-party notices normally appear. The contents
|
||||
of the NOTICE file are for informational purposes only and
|
||||
do not modify the License. You may add Your own attribution
|
||||
notices within Derivative Works that You distribute, alongside
|
||||
or as an addendum to the NOTICE text from the Work, provided
|
||||
that such additional attribution notices cannot be construed
|
||||
as modifying the License.
|
||||
|
||||
You may add Your own copyright statement to Your modifications and
|
||||
may provide additional or different license terms and conditions
|
||||
for use, reproduction, or distribution of Your modifications, or
|
||||
for any such Derivative Works as a whole, provided Your use,
|
||||
reproduction, and distribution of the Work otherwise complies with
|
||||
the conditions stated in this License.
|
||||
|
||||
5. Submission of Contributions. Unless You explicitly state otherwise,
|
||||
any Contribution intentionally submitted for inclusion in the Work
|
||||
by You to the Licensor shall be under the terms and conditions of
|
||||
this License, without any additional terms or conditions.
|
||||
Notwithstanding the above, nothing herein shall supersede or modify
|
||||
the terms of any separate license agreement you may have executed
|
||||
with Licensor regarding such Contributions.
|
||||
|
||||
6. Trademarks. This License does not grant permission to use the trade
|
||||
names, trademarks, service marks, or product names of the Licensor,
|
||||
except as required for reasonable and customary use in describing the
|
||||
origin of the Work and reproducing the content of the NOTICE file.
|
||||
|
||||
7. Disclaimer of Warranty. Unless required by applicable law or
|
||||
agreed to in writing, Licensor provides the Work (and each
|
||||
Contributor provides its Contributions) on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
||||
implied, including, without limitation, any warranties or conditions
|
||||
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
|
||||
PARTICULAR PURPOSE. You are solely responsible for determining the
|
||||
appropriateness of using or redistributing the Work and assume any
|
||||
risks associated with Your exercise of permissions under this License.
|
||||
|
||||
8. Limitation of Liability. In no event and under no legal theory,
|
||||
whether in tort (including negligence), contract, or otherwise,
|
||||
unless required by applicable law (such as deliberate and grossly
|
||||
negligent acts) or agreed to in writing, shall any Contributor be
|
||||
liable to You for damages, including any direct, indirect, special,
|
||||
incidental, or consequential damages of any character arising as a
|
||||
result of this License or out of the use or inability to use the
|
||||
Work (including but not limited to damages for loss of goodwill,
|
||||
work stoppage, computer failure or malfunction, or any and all
|
||||
other commercial damages or losses), even if such Contributor
|
||||
has been advised of the possibility of such damages.
|
||||
|
||||
9. Accepting Warranty or Additional Liability. While redistributing
|
||||
the Work or Derivative Works thereof, You may choose to offer,
|
||||
and charge a fee for, acceptance of support, warranty, indemnity,
|
||||
or other liability obligations and/or rights consistent with this
|
||||
License. However, in accepting such obligations, You may act only
|
||||
on Your own behalf and on Your sole responsibility, not on behalf
|
||||
of any other Contributor, and only if You agree to indemnify,
|
||||
defend, and hold each Contributor harmless for any liability
|
||||
incurred by, or claims asserted against, such Contributor by reason
|
||||
of your accepting any such warranty or additional liability.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
APPENDIX: How to apply the Apache License to your work.
|
||||
|
||||
To apply the Apache License to your work, attach the following
|
||||
boilerplate notice, with the fields enclosed by brackets "[]"
|
||||
replaced with your own identifying information. (Don't include
|
||||
the brackets!) The text should be enclosed in the appropriate
|
||||
comment syntax for the file format. We also recommend that a
|
||||
file or class name and description of purpose be included on the
|
||||
same "printed page" as the copyright notice for easier
|
||||
identification within third-party archives.
|
||||
|
||||
Copyright [yyyy] [name of copyright owner]
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
80
managed_components/espressif2022__esp_emote_gfx/README.md
Normal file
80
managed_components/espressif2022__esp_emote_gfx/README.md
Normal file
@@ -0,0 +1,80 @@
|
||||
# ESP Emote GFX
|
||||
|
||||
## Introduction
|
||||
`esp_emote_gfx` is a lightweight and efficient graphics framework component designed for ESP-IDF embedded systems. It provides a comprehensive graphics API with object system, drawing functions, color utilities, and animation capabilities. This module ensures high performance and flexibility for modern embedded applications that require efficient graphics rendering.
|
||||
|
||||
[](https://components.espressif.com/components/espressif2022/esp_emote_gfx)
|
||||
|
||||
## Features
|
||||
|
||||
- **Object System**: Support for images, labels, and other graphics objects
|
||||
- **Drawing Functions**: Efficient rendering to frame buffers
|
||||
- **Color Utilities**: Comprehensive color management and type definitions
|
||||
- **Software Blending**: Advanced blending capabilities for smooth graphics
|
||||
- **Animation Support**: Built-in animation framework for dynamic graphics
|
||||
- **Timer System**: Integrated timing functions for smooth animations
|
||||
- **Memory Efficient**: Optimized for embedded systems with limited resources
|
||||
|
||||
## Dependencies
|
||||
|
||||
1. **ESP-IDF**
|
||||
Ensure your project includes ESP-IDF 5.0 or higher. Refer to the [ESP-IDF Documentation](https://docs.espressif.com/projects/esp-idf/en/latest/) for setup instructions.
|
||||
|
||||
2. **FreeType**
|
||||
This component depends on the FreeType library for font rendering.
|
||||
|
||||
3. **ESP New JPEG**
|
||||
JPEG decoding support through the ESP New JPEG component.
|
||||
|
||||
## Usage
|
||||
|
||||
### Basic Setup
|
||||
|
||||
```c
|
||||
#include "gfx.h"
|
||||
|
||||
// Initialize the GFX framework
|
||||
// Your initialization code here
|
||||
```
|
||||
|
||||
### Creating Graphics Objects
|
||||
|
||||
```c
|
||||
// Create an image object
|
||||
gfx_img_t *img = gfx_img_create();
|
||||
|
||||
// Create a label object
|
||||
gfx_label_t *label = gfx_label_create();
|
||||
```
|
||||
|
||||
### Animation
|
||||
|
||||
```c
|
||||
// Create and configure animations
|
||||
gfx_anim_t *anim = gfx_anim_create();
|
||||
// Configure your animation parameters
|
||||
```
|
||||
|
||||
## API Reference
|
||||
|
||||
The main API is exposed through the `gfx.h` header file, which includes:
|
||||
|
||||
- `core/gfx_types.h` - Type definitions and constants
|
||||
- `core/gfx_core.h` - Core graphics functions
|
||||
- `core/gfx_timer.h` - Timer and timing utilities
|
||||
- `core/gfx_obj.h` - Graphics object system
|
||||
- `widget/gfx_img.h` - Image widget functionality
|
||||
- `widget/gfx_label.h` - Label widget functionality
|
||||
- `widget/gfx_anim.h` - Animation framework
|
||||
|
||||
## Font Support
|
||||
|
||||
This component includes support for LVGL fonts. For detailed information about font integration and usage, please refer to [LVGL_FONT_SUPPORT.md](docs/LVGL_FONT_SUPPORT.md).
|
||||
|
||||
## License
|
||||
|
||||
This project is licensed under the Apache License 2.0. See the [LICENSE](LICENSE) file for details.
|
||||
|
||||
## Contributing
|
||||
|
||||
Contributions are welcome! Please feel free to submit issues and enhancement requests.
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,6 @@
|
||||
# The following lines of boilerplate have to be in your project's CMakeLists
|
||||
# in this exact order for cmake to work correctly
|
||||
cmake_minimum_required(VERSION 3.5)
|
||||
set(EXTRA_COMPONENT_DIRS "$ENV{IDF_PATH}/tools/unit-test-app/components")
|
||||
include($ENV{IDF_PATH}/tools/cmake/project.cmake)
|
||||
project(test_anim_player)
|
||||
@@ -0,0 +1,12 @@
|
||||
|
||||
idf_component_register(
|
||||
SRC_DIRS "." "./assets"
|
||||
INCLUDE_DIRS "."
|
||||
)
|
||||
|
||||
spiffs_create_partition_assets(
|
||||
assets_8bit
|
||||
"../test_assets"
|
||||
FLASH_IN_PROJECT
|
||||
MMAP_FILE_SUPPORT_FORMAT ".aaf,.ttf,.bin"
|
||||
)
|
||||
@@ -0,0 +1,602 @@
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
#include "freertos/FreeRTOS.h"
|
||||
#include "freertos/task.h"
|
||||
#include "freertos/semphr.h"
|
||||
#include "esp_log.h"
|
||||
#include "unity.h"
|
||||
#include "unity_test_utils.h"
|
||||
#include "esp_heap_caps.h"
|
||||
#include "esp_lcd_panel_io.h"
|
||||
#include "esp_lcd_panel_vendor.h"
|
||||
#include "esp_lcd_panel_ops.h"
|
||||
#include "bsp/esp-bsp.h"
|
||||
#include "esp_timer.h"
|
||||
#include "esp_err.h"
|
||||
#include "esp_check.h"
|
||||
#include "driver/gpio.h"
|
||||
|
||||
#if CONFIG_IDF_TARGET_ESP32S3 && ESP_IDF_VERSION >= ESP_IDF_VERSION_VAL(5, 0, 0)
|
||||
#include "esp_lcd_panel_rgb.h"
|
||||
#endif
|
||||
|
||||
#include "gfx.h"
|
||||
#include "mmap_generate_test_assets.h"
|
||||
|
||||
static const char *TAG = "player";
|
||||
|
||||
#define TEST_MEMORY_LEAK_THRESHOLD (500)
|
||||
|
||||
extern const gfx_image_dsc_t icon1;
|
||||
extern const gfx_image_dsc_t icon5;
|
||||
|
||||
static size_t before_free_8bit;
|
||||
static size_t before_free_32bit;
|
||||
|
||||
static gfx_handle_t emote_handle = NULL;
|
||||
static esp_lcd_panel_io_handle_t io_handle = NULL;
|
||||
static esp_lcd_panel_handle_t panel_handle = NULL;
|
||||
|
||||
static gfx_obj_t *label_tips = NULL;
|
||||
|
||||
void setUp(void)
|
||||
{
|
||||
before_free_8bit = heap_caps_get_free_size(MALLOC_CAP_8BIT);
|
||||
before_free_32bit = heap_caps_get_free_size(MALLOC_CAP_32BIT);
|
||||
}
|
||||
|
||||
void tearDown(void)
|
||||
{
|
||||
size_t after_free_8bit = heap_caps_get_free_size(MALLOC_CAP_8BIT);
|
||||
size_t after_free_32bit = heap_caps_get_free_size(MALLOC_CAP_32BIT);
|
||||
unity_utils_check_leak(before_free_8bit, after_free_8bit, "8BIT", TEST_MEMORY_LEAK_THRESHOLD);
|
||||
unity_utils_check_leak(before_free_32bit, after_free_32bit, "32BIT", TEST_MEMORY_LEAK_THRESHOLD);
|
||||
}
|
||||
|
||||
static bool flush_io_ready(esp_lcd_panel_io_handle_t panel_io, esp_lcd_panel_io_event_data_t *edata, void *user_ctx)
|
||||
{
|
||||
gfx_handle_t emote_handle = (gfx_handle_t)user_ctx;
|
||||
if (emote_handle) {
|
||||
gfx_emote_flush_ready(emote_handle, true);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
static void flush_callback(gfx_handle_t emote_handle, int x1, int y1, int x2, int y2, const void *data)
|
||||
{
|
||||
esp_lcd_panel_handle_t panel = (esp_lcd_panel_handle_t)gfx_emote_get_user_data(emote_handle);
|
||||
esp_lcd_panel_draw_bitmap(panel, x1, y1, x2, y2, data);
|
||||
gfx_emote_flush_ready(emote_handle, true);
|
||||
}
|
||||
|
||||
void clock_tm_callback(void *user_data)
|
||||
{
|
||||
gfx_obj_t *label_obj = (gfx_obj_t *)user_data;
|
||||
if (label_obj) {
|
||||
gfx_label_set_text_fmt(label_obj, "%d*%d: %d", BSP_LCD_H_RES, BSP_LCD_V_RES, gfx_timer_get_actual_fps(emote_handle));
|
||||
}
|
||||
ESP_LOGI("FPS", "%d*%d: %" PRIu32 "", BSP_LCD_H_RES, BSP_LCD_V_RES, gfx_timer_get_actual_fps(emote_handle));
|
||||
}
|
||||
|
||||
// Test timer functionality
|
||||
static void test_timer_functionality(void)
|
||||
{
|
||||
ESP_LOGI(TAG, "=== Testing Timer Functionality ===");
|
||||
|
||||
ESP_LOGI(TAG, "Timer created\r\n");
|
||||
gfx_emote_lock(emote_handle);
|
||||
gfx_timer_handle_t timer = gfx_timer_create(emote_handle, clock_tm_callback, 1000, label_tips);
|
||||
TEST_ASSERT_NOT_NULL(timer);
|
||||
gfx_emote_unlock(emote_handle);
|
||||
|
||||
vTaskDelay(pdMS_TO_TICKS(3000));
|
||||
|
||||
ESP_LOGI(TAG, "Timer period set to 500ms\r\n");
|
||||
gfx_emote_lock(emote_handle);
|
||||
gfx_timer_set_period(timer, 500);
|
||||
gfx_emote_unlock(emote_handle);
|
||||
|
||||
vTaskDelay(pdMS_TO_TICKS(3000));
|
||||
|
||||
ESP_LOGI(TAG, "Timer repeat count set to 5\r\n");
|
||||
gfx_emote_lock(emote_handle);
|
||||
gfx_timer_set_repeat_count(timer, 5);
|
||||
gfx_emote_unlock(emote_handle);
|
||||
|
||||
vTaskDelay(pdMS_TO_TICKS(3000));
|
||||
|
||||
ESP_LOGI(TAG, "Timer paused\r\n");
|
||||
gfx_emote_lock(emote_handle);
|
||||
gfx_timer_pause(timer);
|
||||
gfx_emote_unlock(emote_handle);
|
||||
|
||||
vTaskDelay(pdMS_TO_TICKS(3000));
|
||||
|
||||
ESP_LOGI(TAG, "Timer resumed\r\n");
|
||||
gfx_emote_lock(emote_handle);
|
||||
gfx_timer_resume(timer);
|
||||
gfx_emote_unlock(emote_handle);
|
||||
|
||||
vTaskDelay(pdMS_TO_TICKS(3000));
|
||||
|
||||
ESP_LOGI(TAG, "Timer reset\r\n");
|
||||
gfx_emote_lock(emote_handle);
|
||||
gfx_timer_reset(timer);
|
||||
gfx_emote_unlock(emote_handle);
|
||||
|
||||
vTaskDelay(pdMS_TO_TICKS(3000));
|
||||
|
||||
ESP_LOGI(TAG, "Timer deleted\r\n");
|
||||
gfx_emote_lock(emote_handle);
|
||||
gfx_timer_delete(emote_handle, timer);
|
||||
gfx_emote_unlock(emote_handle);
|
||||
}
|
||||
|
||||
// Test animation functionality
|
||||
static void test_animation_functionality(mmap_assets_handle_t assets_handle)
|
||||
{
|
||||
ESP_LOGI(TAG, "=== Testing Animation Functionality ===");
|
||||
|
||||
// Define test cases for different bit depths and animation files
|
||||
struct {
|
||||
int asset_id;
|
||||
const char *name;
|
||||
int mirror_offset;
|
||||
} test_cases[] = {
|
||||
{MMAP_TEST_ASSETS_MI_1_EYE_4BIT_AAF, "MI_1_EYE 4-bit animation", 10},
|
||||
{MMAP_TEST_ASSETS_MI_1_EYE_8BIT_AAF, "MI_1_EYE 8-bit animation", 10},
|
||||
{MMAP_TEST_ASSETS_MI_1_EYE_24BIT_AAF, "MI_1_EYE 24-bit animation", 10},
|
||||
{MMAP_TEST_ASSETS_MI_2_EYE_4BIT_AAF, "MI_2_EYE 4-bit animation", 100},
|
||||
{MMAP_TEST_ASSETS_MI_2_EYE_8BIT_AAF, "MI_2_EYE 8-bit animation", 100},
|
||||
{MMAP_TEST_ASSETS_MI_2_EYE_24BIT_AAF, "MI_2_EYE 24-bit animation", 100}
|
||||
};
|
||||
|
||||
for (int i = 0; i < sizeof(test_cases) / sizeof(test_cases[0]); i++) {
|
||||
ESP_LOGI(TAG, "\n--- Testing %s ---", test_cases[i].name);
|
||||
|
||||
gfx_emote_lock(emote_handle);
|
||||
|
||||
// Create animation object
|
||||
gfx_obj_t *anim_obj = gfx_anim_create(emote_handle);
|
||||
TEST_ASSERT_NOT_NULL(anim_obj);
|
||||
ESP_LOGI(TAG, "Animation object created successfully");
|
||||
|
||||
// Set animation source
|
||||
const void *anim_data = mmap_assets_get_mem(assets_handle, test_cases[i].asset_id);
|
||||
size_t anim_size = mmap_assets_get_size(assets_handle, test_cases[i].asset_id);
|
||||
esp_err_t ret = gfx_anim_set_src(anim_obj, anim_data, anim_size);
|
||||
TEST_ASSERT_EQUAL(ESP_OK, ret);
|
||||
ESP_LOGI(TAG, "%s source set successfully", test_cases[i].name);
|
||||
|
||||
// Test animation configuration functions
|
||||
if (i < 3) {
|
||||
gfx_obj_set_pos(anim_obj, 20, 10);
|
||||
} else {
|
||||
gfx_obj_align(anim_obj, GFX_ALIGN_CENTER, 0, 0);
|
||||
}
|
||||
gfx_anim_set_mirror(anim_obj, false, 0);
|
||||
|
||||
gfx_obj_set_size(anim_obj, 200, 150);
|
||||
ESP_LOGI(TAG, "Animation size set to 200x150");
|
||||
|
||||
gfx_anim_set_segment(anim_obj, 0, 90, 30, true);
|
||||
ESP_LOGI(TAG, "Animation segment set: frames 0-90, 30fps, repeat=true");
|
||||
|
||||
// Start animation
|
||||
ret = gfx_anim_start(anim_obj);
|
||||
TEST_ASSERT_EQUAL(ESP_OK, ret);
|
||||
ESP_LOGI(TAG, "%s started successfully", test_cases[i].name);
|
||||
|
||||
gfx_emote_unlock(emote_handle);
|
||||
|
||||
// Wait for animation to run
|
||||
vTaskDelay(pdMS_TO_TICKS(3000));
|
||||
|
||||
// Test with mirror enabled
|
||||
gfx_emote_lock(emote_handle);
|
||||
gfx_anim_set_mirror(anim_obj, true, test_cases[i].mirror_offset);
|
||||
ESP_LOGI(TAG, "Animation mirror enabled with offset %d", test_cases[i].mirror_offset);
|
||||
gfx_emote_unlock(emote_handle);
|
||||
|
||||
// Wait for mirror animation to run
|
||||
vTaskDelay(pdMS_TO_TICKS(3000));
|
||||
|
||||
// Stop animation
|
||||
gfx_emote_lock(emote_handle);
|
||||
|
||||
ret = gfx_anim_stop(anim_obj);
|
||||
TEST_ASSERT_EQUAL(ESP_OK, ret);
|
||||
ESP_LOGI(TAG, "%s stopped successfully", test_cases[i].name);
|
||||
|
||||
gfx_emote_unlock(emote_handle);
|
||||
|
||||
vTaskDelay(pdMS_TO_TICKS(3000));
|
||||
|
||||
// Delete animation object
|
||||
gfx_emote_lock(emote_handle);
|
||||
|
||||
gfx_obj_delete(anim_obj);
|
||||
ESP_LOGI(TAG, "%s object deleted successfully", test_cases[i].name);
|
||||
|
||||
gfx_emote_unlock(emote_handle);
|
||||
|
||||
// Wait before next test
|
||||
vTaskDelay(pdMS_TO_TICKS(1000));
|
||||
}
|
||||
|
||||
ESP_LOGI(TAG, "\n=== Animation Functionality Testing Completed ===");
|
||||
}
|
||||
|
||||
// Test label functionality
|
||||
static void test_label_functionality(mmap_assets_handle_t assets_handle)
|
||||
{
|
||||
ESP_LOGI(TAG, "=== Testing Label Functionality ===");
|
||||
|
||||
gfx_emote_lock(emote_handle);
|
||||
|
||||
// Create label object
|
||||
gfx_obj_t *label_obj = gfx_label_create(emote_handle);
|
||||
TEST_ASSERT_NOT_NULL(label_obj);
|
||||
ESP_LOGI(TAG, "Label object created successfully");
|
||||
|
||||
// Set font
|
||||
gfx_label_cfg_t font_cfg = {
|
||||
.name = "DejaVuSans.ttf",
|
||||
.mem = mmap_assets_get_mem(assets_handle, MMAP_TEST_ASSETS_DEJAVUSANS_TTF),
|
||||
.mem_size = (size_t)mmap_assets_get_size(assets_handle, MMAP_TEST_ASSETS_DEJAVUSANS_TTF),
|
||||
};
|
||||
|
||||
gfx_font_t font_DejaVuSans;
|
||||
esp_err_t ret = gfx_label_new_font(emote_handle, &font_cfg, &font_DejaVuSans);
|
||||
TEST_ASSERT_EQUAL(ESP_OK, ret);
|
||||
ESP_LOGI(TAG, "Font loaded successfully");
|
||||
|
||||
// Test label configuration functions
|
||||
gfx_label_set_font(label_obj, font_DejaVuSans);
|
||||
ESP_LOGI(TAG, "Font set for label");
|
||||
|
||||
gfx_label_set_text(label_obj, "Hello World!");
|
||||
ESP_LOGI(TAG, "Label text set to 'Hello World!'");
|
||||
|
||||
gfx_label_set_font_size(label_obj, 24);
|
||||
ESP_LOGI(TAG, "Label font size set to 24");
|
||||
|
||||
gfx_label_set_color(label_obj, GFX_COLOR_HEX(0x00FF00));
|
||||
ESP_LOGI(TAG, "Label color set to green");
|
||||
|
||||
gfx_obj_set_pos(label_obj, 100, 200);
|
||||
ESP_LOGI(TAG, "Label position set to (100, 200)");
|
||||
|
||||
gfx_obj_align(label_obj, GFX_ALIGN_TOP_MID, 0, 20);
|
||||
ESP_LOGI(TAG, "Label aligned to top center with 20px offset");
|
||||
|
||||
gfx_obj_set_size(label_obj, 300, 50);
|
||||
ESP_LOGI(TAG, "Label size set to 300x50");
|
||||
|
||||
// Test formatted text
|
||||
gfx_label_set_text_fmt(label_obj, "Count: %d, Float: %.2f", 42, 3.14);
|
||||
ESP_LOGI(TAG, "Label formatted text set");
|
||||
|
||||
gfx_emote_unlock(emote_handle);
|
||||
|
||||
// Wait for display
|
||||
vTaskDelay(pdMS_TO_TICKS(2000));
|
||||
|
||||
gfx_emote_lock(emote_handle);
|
||||
gfx_label_set_color(label_obj, GFX_COLOR_HEX(0x0000FF));
|
||||
ESP_LOGI(TAG, "Label color set to blue");
|
||||
gfx_emote_unlock(emote_handle);
|
||||
|
||||
// Wait for display
|
||||
vTaskDelay(pdMS_TO_TICKS(2000));
|
||||
|
||||
gfx_emote_lock(emote_handle);
|
||||
// Delete label object
|
||||
gfx_obj_delete(label_obj);
|
||||
ESP_LOGI(TAG, "Label object deleted successfully");
|
||||
gfx_emote_unlock(emote_handle);
|
||||
}
|
||||
|
||||
// Test unified image functionality (both C_ARRAY and BIN formats)
|
||||
static void test_unified_image_functionality(mmap_assets_handle_t assets_handle)
|
||||
{
|
||||
gfx_image_dsc_t img_dsc;
|
||||
|
||||
ESP_LOGI(TAG, "=== Testing Unified Image Functionality ===");
|
||||
|
||||
gfx_emote_lock(emote_handle);
|
||||
|
||||
// Test 1: C_ARRAY format image
|
||||
ESP_LOGI(TAG, "--- Testing C_ARRAY format image ---");
|
||||
gfx_obj_t *img_obj_c_array = gfx_img_create(emote_handle);
|
||||
TEST_ASSERT_NOT_NULL(img_obj_c_array);
|
||||
|
||||
gfx_img_set_src(img_obj_c_array, (void*)&icon1);
|
||||
|
||||
gfx_obj_set_pos(img_obj_c_array, 100, 100);
|
||||
|
||||
uint16_t width, height;
|
||||
gfx_obj_get_size(img_obj_c_array, &width, &height);
|
||||
ESP_LOGI(TAG, "C_ARRAY image size: %dx%d", width, height);
|
||||
|
||||
gfx_emote_unlock(emote_handle);
|
||||
vTaskDelay(pdMS_TO_TICKS(2000));
|
||||
|
||||
gfx_emote_lock(emote_handle);
|
||||
gfx_obj_delete(img_obj_c_array);
|
||||
|
||||
// Test 2: BIN format image
|
||||
ESP_LOGI(TAG, "--- Testing BIN format image ---");
|
||||
gfx_obj_t *img_obj_bin = gfx_img_create(emote_handle);
|
||||
TEST_ASSERT_NOT_NULL(img_obj_bin);
|
||||
|
||||
img_dsc.data_size = mmap_assets_get_size(assets_handle, MMAP_TEST_ASSETS_ICON5_BIN);
|
||||
img_dsc.data = mmap_assets_get_mem(assets_handle, MMAP_TEST_ASSETS_ICON5_BIN);
|
||||
|
||||
memcpy(&img_dsc.header, mmap_assets_get_mem(assets_handle, MMAP_TEST_ASSETS_ICON5_BIN), sizeof(gfx_image_header_t));
|
||||
img_dsc.data += sizeof(gfx_image_header_t);
|
||||
img_dsc.data_size -= sizeof(gfx_image_header_t);
|
||||
gfx_img_set_src(img_obj_bin, (void*)&img_dsc);
|
||||
|
||||
gfx_obj_set_pos(img_obj_bin, 100, 180);
|
||||
|
||||
gfx_obj_get_size(img_obj_bin, &width, &height);
|
||||
ESP_LOGI(TAG, "BIN image size: %dx%d", width, height);
|
||||
|
||||
gfx_emote_unlock(emote_handle);
|
||||
vTaskDelay(pdMS_TO_TICKS(2000));
|
||||
|
||||
gfx_emote_lock(emote_handle);
|
||||
gfx_obj_delete(img_obj_bin);
|
||||
|
||||
// Test 3: Multiple images with different formats
|
||||
ESP_LOGI(TAG, "--- Testing multiple images with different formats ---");
|
||||
gfx_obj_t *img_obj1 = gfx_img_create(emote_handle);
|
||||
gfx_obj_t *img_obj2 = gfx_img_create(emote_handle);
|
||||
TEST_ASSERT_NOT_NULL(img_obj1);
|
||||
TEST_ASSERT_NOT_NULL(img_obj2);
|
||||
|
||||
gfx_img_set_src(img_obj1, (void*)&icon5); // C_ARRAY format
|
||||
|
||||
img_dsc.data_size = mmap_assets_get_size(assets_handle, MMAP_TEST_ASSETS_ICON1_BIN);
|
||||
img_dsc.data = mmap_assets_get_mem(assets_handle, MMAP_TEST_ASSETS_ICON1_BIN);
|
||||
|
||||
memcpy(&img_dsc.header, mmap_assets_get_mem(assets_handle, MMAP_TEST_ASSETS_ICON1_BIN), sizeof(gfx_image_header_t));
|
||||
img_dsc.data += sizeof(gfx_image_header_t);
|
||||
img_dsc.data_size -= sizeof(gfx_image_header_t);
|
||||
gfx_img_set_src(img_obj2, (void*)&img_dsc); // BIN format
|
||||
|
||||
gfx_obj_set_pos(img_obj1, 150, 100);
|
||||
gfx_obj_set_pos(img_obj2, 150, 180);
|
||||
|
||||
gfx_emote_unlock(emote_handle);
|
||||
|
||||
// vTaskDelay(pdMS_TO_TICKS(30));
|
||||
// gfx_emote_lock(emote_handle);
|
||||
|
||||
vTaskDelay(pdMS_TO_TICKS(3000));
|
||||
|
||||
gfx_emote_lock(emote_handle);
|
||||
gfx_obj_delete(img_obj1);
|
||||
gfx_obj_delete(img_obj2);
|
||||
gfx_emote_unlock(emote_handle);
|
||||
}
|
||||
|
||||
// Comprehensive test: Create multiple objects and test interaction
|
||||
static void test_multiple_objects_interaction(mmap_assets_handle_t assets_handle)
|
||||
{
|
||||
ESP_LOGI(TAG, "=== Testing Multiple Objects Interaction ===");
|
||||
|
||||
gfx_emote_lock(emote_handle);
|
||||
|
||||
// Create multiple objects
|
||||
gfx_obj_t *anim_obj = gfx_anim_create(emote_handle);
|
||||
gfx_obj_t *label_obj = gfx_label_create(emote_handle);
|
||||
gfx_obj_t *img_obj = gfx_img_create(emote_handle);
|
||||
gfx_timer_handle_t timer = gfx_timer_create(emote_handle, clock_tm_callback, 2000, label_obj);
|
||||
|
||||
TEST_ASSERT_NOT_NULL(anim_obj);
|
||||
TEST_ASSERT_NOT_NULL(label_obj);
|
||||
TEST_ASSERT_NOT_NULL(img_obj);
|
||||
TEST_ASSERT_NOT_NULL(timer);
|
||||
ESP_LOGI(TAG, "Multiple objects created successfully");
|
||||
|
||||
// Configure animation
|
||||
const void *anim_data = mmap_assets_get_mem(assets_handle, MMAP_TEST_ASSETS_MI_2_EYE_8BIT_AAF);
|
||||
size_t anim_size = mmap_assets_get_size(assets_handle, MMAP_TEST_ASSETS_MI_2_EYE_8BIT_AAF);
|
||||
gfx_anim_set_src(anim_obj, anim_data, anim_size);
|
||||
gfx_obj_align(anim_obj, GFX_ALIGN_CENTER, 0, 0);
|
||||
gfx_anim_set_segment(anim_obj, 0, 30, 15, true);
|
||||
gfx_anim_start(anim_obj);
|
||||
|
||||
// Configure label
|
||||
// Set font
|
||||
gfx_label_cfg_t font_cfg = {
|
||||
.name = "DejaVuSans.ttf",
|
||||
.mem = mmap_assets_get_mem(assets_handle, MMAP_TEST_ASSETS_DEJAVUSANS_TTF),
|
||||
.mem_size = (size_t)mmap_assets_get_size(assets_handle, MMAP_TEST_ASSETS_DEJAVUSANS_TTF),
|
||||
};
|
||||
|
||||
gfx_font_t font_DejaVuSans;
|
||||
esp_err_t ret = gfx_label_new_font(emote_handle, &font_cfg, &font_DejaVuSans);
|
||||
TEST_ASSERT_EQUAL(ESP_OK, ret);
|
||||
|
||||
gfx_obj_set_size(label_obj, 150, 50);
|
||||
gfx_label_set_font(label_obj, font_DejaVuSans);
|
||||
gfx_label_set_text(label_obj, "Multi-Object Test");
|
||||
gfx_label_set_font_size(label_obj, 20);
|
||||
gfx_label_set_color(label_obj, GFX_COLOR_HEX(0xFF0000));
|
||||
gfx_obj_align(label_obj, GFX_ALIGN_CENTER, 0, 0); // Position above center
|
||||
|
||||
// Configure image
|
||||
gfx_image_dsc_t img_dsc;
|
||||
const void *img_data = mmap_assets_get_mem(assets_handle, MMAP_TEST_ASSETS_ICON1_BIN);
|
||||
img_dsc.data_size = mmap_assets_get_size(assets_handle, MMAP_TEST_ASSETS_ICON1_BIN);
|
||||
img_dsc.data = img_data;
|
||||
|
||||
memcpy(&img_dsc.header, img_data, sizeof(gfx_image_header_t));
|
||||
img_dsc.data += sizeof(gfx_image_header_t);
|
||||
img_dsc.data_size -= sizeof(gfx_image_header_t);
|
||||
|
||||
gfx_img_set_src(img_obj, (void*)&img_dsc); // Use BIN format image
|
||||
gfx_obj_align(img_obj, GFX_ALIGN_TOP_MID, 0, 0);
|
||||
|
||||
ESP_LOGI(TAG, "All objects configured and started");
|
||||
|
||||
gfx_emote_unlock(emote_handle);
|
||||
|
||||
// Run for a while to observe interaction
|
||||
vTaskDelay(pdMS_TO_TICKS(1000 * 10));
|
||||
|
||||
gfx_emote_lock(emote_handle);
|
||||
// Clean up all objects
|
||||
gfx_timer_delete(emote_handle, timer);
|
||||
gfx_obj_delete(anim_obj);
|
||||
gfx_obj_delete(label_obj);
|
||||
gfx_obj_delete(img_obj);
|
||||
ESP_LOGI(TAG, "All objects deleted successfully");
|
||||
gfx_emote_unlock(emote_handle);
|
||||
}
|
||||
|
||||
// Initialize display and graphics system
|
||||
static esp_err_t init_display_and_graphics(const char *partition_label, uint32_t max_files, uint32_t checksum, mmap_assets_handle_t *assets_handle)
|
||||
{
|
||||
// Initialize assets
|
||||
const mmap_assets_config_t asset_config = {
|
||||
.partition_label = partition_label,
|
||||
.max_files = max_files,
|
||||
.checksum = checksum,
|
||||
.flags = {.mmap_enable = true, .full_check = true}
|
||||
};
|
||||
|
||||
esp_err_t ret = mmap_assets_new(&asset_config, assets_handle);
|
||||
if (ret != ESP_OK) {
|
||||
ESP_LOGE(TAG, "Failed to initialize assets");
|
||||
return ret;
|
||||
}
|
||||
|
||||
// Initialize display
|
||||
const bsp_display_config_t bsp_disp_cfg = {
|
||||
.max_transfer_sz = (BSP_LCD_H_RES * 100) * sizeof(uint16_t),
|
||||
};
|
||||
bsp_display_new(&bsp_disp_cfg, &panel_handle, &io_handle);
|
||||
esp_lcd_panel_disp_on_off(panel_handle, true);
|
||||
bsp_display_brightness_init();
|
||||
bsp_display_backlight_on();
|
||||
|
||||
gfx_core_config_t gfx_cfg = {
|
||||
.flush_cb = flush_callback,
|
||||
.update_cb = NULL,
|
||||
.user_data = panel_handle,
|
||||
.flags = {.swap = true, .double_buffer = true},
|
||||
.h_res = BSP_LCD_H_RES,
|
||||
.v_res = BSP_LCD_V_RES,
|
||||
.fps = 50,
|
||||
.buffers = {.buf1 = NULL, .buf2 = NULL, .buf_pixels = BSP_LCD_H_RES * 16},
|
||||
.task = GFX_EMOTE_INIT_CONFIG()
|
||||
};
|
||||
gfx_cfg.task.task_stack_caps = MALLOC_CAP_DEFAULT;
|
||||
gfx_cfg.task.task_affinity = 0;
|
||||
gfx_cfg.task.task_priority = 7;
|
||||
gfx_cfg.task.task_stack = 20 * 1024;
|
||||
|
||||
const esp_lcd_panel_io_callbacks_t cbs = {
|
||||
.on_color_trans_done = flush_io_ready,
|
||||
};
|
||||
esp_lcd_panel_io_register_event_callbacks(io_handle, &cbs, emote_handle);
|
||||
|
||||
emote_handle = gfx_emote_init(&gfx_cfg);
|
||||
if (emote_handle == NULL) {
|
||||
ESP_LOGE(TAG, "Failed to initialize graphics system");
|
||||
mmap_assets_del(*assets_handle);
|
||||
return ESP_FAIL;
|
||||
}
|
||||
|
||||
return ESP_OK;
|
||||
}
|
||||
|
||||
// Clean up display and graphics system
|
||||
static void cleanup_display_and_graphics(mmap_assets_handle_t assets_handle)
|
||||
{
|
||||
if (emote_handle != NULL) {
|
||||
gfx_emote_deinit(emote_handle);
|
||||
emote_handle = NULL;
|
||||
}
|
||||
if (assets_handle != NULL) {
|
||||
mmap_assets_del(assets_handle);
|
||||
}
|
||||
|
||||
if (panel_handle) {
|
||||
esp_lcd_panel_del(panel_handle);
|
||||
}
|
||||
if (io_handle) {
|
||||
esp_lcd_panel_io_del(io_handle);
|
||||
}
|
||||
spi_bus_free(BSP_LCD_SPI_NUM);
|
||||
}
|
||||
|
||||
TEST_CASE("test timer functionality", "[timer]")
|
||||
{
|
||||
// Initialize display and graphics system
|
||||
mmap_assets_handle_t assets_handle = NULL;
|
||||
esp_err_t ret = init_display_and_graphics("assets_8bit", MMAP_TEST_ASSETS_FILES, MMAP_TEST_ASSETS_CHECKSUM, &assets_handle);
|
||||
TEST_ASSERT_EQUAL(ESP_OK, ret);
|
||||
|
||||
test_timer_functionality();
|
||||
|
||||
cleanup_display_and_graphics(assets_handle);
|
||||
}
|
||||
|
||||
TEST_CASE("test animation functionality", "[animation]")
|
||||
{
|
||||
// Initialize display and graphics system
|
||||
mmap_assets_handle_t assets_handle = NULL;
|
||||
esp_err_t ret = init_display_and_graphics("assets_8bit", MMAP_TEST_ASSETS_FILES, MMAP_TEST_ASSETS_CHECKSUM, &assets_handle);
|
||||
TEST_ASSERT_EQUAL(ESP_OK, ret);
|
||||
|
||||
test_animation_functionality(assets_handle);
|
||||
|
||||
cleanup_display_and_graphics(assets_handle);
|
||||
}
|
||||
|
||||
TEST_CASE("test label functionality", "[label]")
|
||||
{
|
||||
// Initialize display and graphics system
|
||||
mmap_assets_handle_t assets_handle = NULL;
|
||||
esp_err_t ret = init_display_and_graphics("assets_8bit", MMAP_TEST_ASSETS_FILES, MMAP_TEST_ASSETS_CHECKSUM, &assets_handle);
|
||||
TEST_ASSERT_EQUAL(ESP_OK, ret);
|
||||
|
||||
test_label_functionality(assets_handle);
|
||||
|
||||
cleanup_display_and_graphics(assets_handle);
|
||||
}
|
||||
|
||||
TEST_CASE("test unified image functionality", "[unified_image]")
|
||||
{
|
||||
// Initialize display and graphics system
|
||||
mmap_assets_handle_t assets_handle = NULL;
|
||||
esp_err_t ret = init_display_and_graphics("assets_8bit", MMAP_TEST_ASSETS_FILES, MMAP_TEST_ASSETS_CHECKSUM, &assets_handle);
|
||||
TEST_ASSERT_EQUAL(ESP_OK, ret);
|
||||
|
||||
test_unified_image_functionality(assets_handle);
|
||||
|
||||
cleanup_display_and_graphics(assets_handle);
|
||||
}
|
||||
|
||||
TEST_CASE("test multiple objects interaction", "[interaction]")
|
||||
{
|
||||
// Initialize display and graphics system
|
||||
mmap_assets_handle_t assets_handle = NULL;
|
||||
esp_err_t ret = init_display_and_graphics("assets_8bit", MMAP_TEST_ASSETS_FILES, MMAP_TEST_ASSETS_CHECKSUM, &assets_handle);
|
||||
TEST_ASSERT_EQUAL(ESP_OK, ret);
|
||||
|
||||
test_multiple_objects_interaction(assets_handle);
|
||||
|
||||
cleanup_display_and_graphics(assets_handle);
|
||||
}
|
||||
|
||||
void app_main(void)
|
||||
{
|
||||
printf("Animation player test\n");
|
||||
unity_run_menu();
|
||||
}
|
||||
@@ -0,0 +1,111 @@
|
||||
#include "gfx.h"
|
||||
|
||||
const uint8_t icon1_map[] = {
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0xdf, 0xff, 0xef, 0xff, 0xef, 0xbe, 0xf7, 0xbe, 0xef, 0xbe, 0xef, 0xbe, 0xef, 0x9e, 0xef, 0xbe, 0xef, 0x9e, 0xef, 0xbe, 0xef, 0xbe, 0xef, 0x9e, 0xef, 0x9e, 0xef, 0x9e, 0xef, 0xbe, 0xef, 0x9e, 0xef, 0xbe, 0xef, 0x7d, 0xff, 0xff, 0x07, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0xef, 0x9f, 0xef, 0xbe, 0xef, 0x9e, 0xef, 0xbe, 0xf7, 0xbf, 0xf7, 0xdf, 0xf7, 0xdf, 0xf7, 0xdf, 0xf7, 0xdf, 0xff, 0xdf, 0xff, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xdf, 0xf7, 0xdf, 0xf7, 0xdf, 0xf7, 0xdf, 0xf7, 0xbf, 0xf7, 0xbf, 0xf7, 0xbe, 0xef, 0x9e, 0xef, 0x9e, 0xef, 0x9f, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x9e, 0xef, 0x9e, 0xef, 0x9e, 0xf7, 0xbf, 0xff, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xdf, 0xf7, 0xbf, 0xef, 0x9e, 0xef, 0x9e, 0xef, 0x9e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0xef, 0x9e, 0xef, 0xbe, 0xef, 0xbe, 0xf7, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf7, 0xdf, 0xef, 0x9e, 0xef, 0xbe, 0xf7, 0xbe, 0xe7, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xbf, 0xff, 0xef, 0xbe, 0xef, 0x9e, 0xf7, 0xbe, 0xf7, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf7, 0xdf, 0xf7, 0xbe, 0xef, 0x9e, 0xef, 0xbf, 0xad, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 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, 0xff, 0xef, 0xbe, 0xef, 0x9e, 0xf7, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf7, 0xdf, 0xef, 0x9e, 0xef, 0x9e, 0xdf, 0x7d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0xf7, 0x9e, 0xef, 0x9e, 0xf7, 0xbe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xef, 0xbe, 0xef, 0x9e, 0xe7, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd7, 0xff, 0xef, 0xbe, 0xef, 0xbe, 0xf7, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf7, 0xbf, 0xef, 0x9e, 0xef, 0x9e, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xef, 0x9e, 0xef, 0xbe, 0xff, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xdf, 0xef, 0xbe, 0xef, 0x9e, 0xad, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0xef, 0x9e, 0xef, 0xbe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xef, 0x9e, 0xef, 0x9e, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd7, 0xff, 0xef, 0x9e, 0xef, 0xbe, 0xff, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xdf, 0xef, 0x9e, 0xef, 0x9e, 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, 0x00, 0xff, 0xff, 0xef, 0xbe, 0xef, 0xbe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xef, 0xbe, 0xef, 0x7e, 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, 0xf7, 0x9e, 0xef, 0xbe, 0xff, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xdf, 0xef, 0x9e, 0xf7, 0x9e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xef, 0xff, 0xef, 0x9e, 0xf7, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xdf, 0xef, 0x7d, 0xde, 0xdb, 0xce, 0x7a, 0xce, 0x7a, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf7, 0xdf, 0xef, 0xbe, 0xef, 0x5d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xbf, 0xff, 0xef, 0xbe, 0xf7, 0xbe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xdf, 0xb5, 0x96, 0x5a, 0xec, 0x4a, 0x49, 0x39, 0xe8, 0x31, 0xa7, 0x42, 0x29, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf7, 0xbe, 0xef, 0x9f, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xef, 0xbe, 0xef, 0x9e, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xde, 0xfb, 0x31, 0x86, 0x10, 0xa3, 0x10, 0xa3, 0x10, 0xa3, 0x10, 0xa3, 0x10, 0xa3, 0x21, 0x45, 0xff, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xef, 0x9e, 0xef, 0xbe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xef, 0x9e, 0xf7, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xdf, 0xa5, 0x14, 0x18, 0xe4, 0x10, 0xa3, 0x10, 0xa3, 0x21, 0x25, 0x42, 0x29, 0x21, 0x45, 0x10, 0xa3, 0x21, 0x45, 0xff, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf7, 0xdf, 0xef, 0x9e, 0xef, 0x5d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xef, 0x9e, 0xf7, 0xbe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xb5, 0xb6, 0x29, 0x45, 0x10, 0xa3, 0x10, 0xc3, 0x63, 0x0c, 0xb5, 0x96, 0xe7, 0x3c, 0x4a, 0x8a, 0x10, 0xa3, 0x21, 0x45, 0xff, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf7, 0xbe, 0xef, 0x9e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xef, 0xbe, 0xf7, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xef, 0x7d, 0x18, 0xc4, 0x10, 0xa3, 0x10, 0xa3, 0xa5, 0x55, 0xff, 0xdf, 0xff, 0xff, 0xf7, 0x9e, 0x4a, 0x8a, 0x10, 0xa3, 0x21, 0x45, 0xff, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf7, 0xdf, 0xef, 0x9e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0xef, 0x9e, 0xef, 0xbe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xdf, 0x42, 0x29, 0x10, 0xa3, 0x18, 0xc3, 0xa5, 0x14, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf7, 0x9e, 0x4a, 0x8a, 0x10, 0xa3, 0x21, 0x45, 0xff, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xef, 0x9e, 0xef, 0x7e, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0xff, 0xff, 0xef, 0x9e, 0xf7, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xb5, 0xb6, 0x19, 0x04, 0x10, 0xa3, 0x52, 0xab, 0xf7, 0x9e, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xdf, 0x5b, 0x0c, 0x10, 0xa3, 0x21, 0x45, 0xff, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf7, 0xdf, 0xef, 0x9e, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0xef, 0x9f, 0xef, 0x9e, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x63, 0x2d, 0x10, 0xa3, 0x18, 0xe4, 0x9c, 0xd3, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x84, 0x30, 0x10, 0xc3, 0x21, 0x45, 0xff, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xef, 0x9e, 0xef, 0xbe, 0x00, 0x00,
|
||||
0xff, 0xff, 0xef, 0xbe, 0xf7, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf7, 0xbe, 0x5a, 0xcb, 0x10, 0xa3, 0x31, 0x86, 0xf7, 0x9e, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc6, 0x38, 0x94, 0x92, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xdf, 0xef, 0x5d, 0xde, 0xfb, 0xe7, 0x3d, 0xf7, 0xbe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf7, 0xbf, 0xef, 0xbf, 0x00, 0x00,
|
||||
0xdf, 0xff, 0xef, 0x9e, 0xff, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe7, 0x3c, 0x4a, 0x4a, 0x10, 0xa3, 0x31, 0xc7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xdf, 0xce, 0x59, 0x6b, 0x4d, 0x5a, 0xec, 0x4a, 0x6a, 0x42, 0x29, 0x4a, 0x6a, 0x5a, 0xcb, 0x63, 0x2c, 0xb5, 0xb7, 0xff, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf7, 0xdf, 0xef, 0x9e, 0xff, 0xff,
|
||||
0xef, 0xff, 0xef, 0xbe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xde, 0xfc, 0x42, 0x29, 0x10, 0xa3, 0x39, 0xc7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf7, 0x9e, 0x63, 0x2d, 0x21, 0x05, 0x10, 0xa3, 0x10, 0xa3, 0x10, 0xa3, 0x10, 0xa3, 0x10, 0xa3, 0x10, 0xa3, 0x10, 0xa3, 0x19, 0x04, 0x52, 0xab, 0xf7, 0xbe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xef, 0x9e, 0xf7, 0x9e,
|
||||
0xef, 0xbe, 0xf7, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xef, 0x5d, 0x4a, 0x6a, 0x10, 0xa3, 0x31, 0xc7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xce, 0x79, 0x21, 0x04, 0x10, 0xa3, 0x10, 0xa3, 0x10, 0xa3, 0x29, 0x66, 0x31, 0xc7, 0x39, 0xc7, 0x31, 0xc7, 0x29, 0x86, 0x18, 0xc4, 0x10, 0xa3, 0x10, 0xa3, 0x10, 0xa3, 0xbd, 0xf7, 0xff, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xef, 0xbe, 0xef, 0xbe,
|
||||
0xf7, 0xbe, 0xf7, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xdf, 0x5a, 0xec, 0x10, 0xa3, 0x29, 0x66, 0xde, 0xdb, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xdf, 0xb5, 0x96, 0x21, 0x25, 0x10, 0xa3, 0x10, 0xa3, 0x4a, 0x6a, 0x84, 0x10, 0xde, 0xfb, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xef, 0x5d, 0x94, 0x92, 0x52, 0xab, 0x10, 0xc3, 0x10, 0xa3, 0x21, 0x45, 0xad, 0x55, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf7, 0xbf, 0xf7, 0xbf,
|
||||
0xef, 0xbe, 0xf7, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x6b, 0x6e, 0x10, 0xa3, 0x10, 0xa3, 0x84, 0x10, 0xff, 0xff, 0xff, 0xff, 0xff, 0xdf, 0x73, 0x8e, 0x21, 0x45, 0x18, 0xe4, 0x10, 0xa3, 0x10, 0xa3, 0x63, 0x2d, 0xef, 0x9e, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf7, 0x9e, 0x8c, 0x51, 0x10, 0xa3, 0x10, 0xa3, 0x19, 0x04, 0xde, 0xfb, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf7, 0xdf, 0xef, 0xbe,
|
||||
0xef, 0x9e, 0xf7, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xd6, 0xba, 0x21, 0x25, 0x10, 0xa3, 0x42, 0x49, 0xef, 0x7e, 0xce, 0x59, 0x39, 0xe8, 0x10, 0xa3, 0x10, 0xa3, 0x10, 0xa3, 0x10, 0xa3, 0x10, 0xa3, 0x42, 0x08, 0xd6, 0xba, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x8c, 0x51, 0x10, 0xa3, 0x10, 0xa3, 0x52, 0x8b, 0xff, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf7, 0xdf, 0xef, 0xbe,
|
||||
0xef, 0x9e, 0xf7, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x6b, 0x6e, 0x10, 0xa3, 0x10, 0xa3, 0x63, 0x4d, 0x39, 0xe8, 0x10, 0xa3, 0x10, 0xa3, 0x39, 0xe8, 0x6b, 0x4d, 0x31, 0xa7, 0x10, 0xa3, 0x10, 0xa3, 0x42, 0x49, 0xf7, 0xbe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x5a, 0xec, 0x10, 0xa3, 0x10, 0xa3, 0xbd, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xdf, 0xef, 0xbe,
|
||||
0xef, 0xbe, 0xff, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xd6, 0xbb, 0x52, 0x8a, 0x31, 0xa7, 0x31, 0xa7, 0x31, 0xa7, 0x31, 0xa7, 0x31, 0xa7, 0x31, 0xa7, 0x31, 0xa7, 0x9c, 0xd3, 0xff, 0xff, 0xf7, 0x9e, 0x29, 0x66, 0x10, 0xa3, 0x10, 0xa3, 0x10, 0xa3, 0x10, 0xa3, 0x94, 0x92, 0xde, 0xfb, 0xff, 0xdf, 0xde, 0xdb, 0x84, 0x10, 0x10, 0xa3, 0x10, 0xa3, 0x9c, 0xd3, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xad, 0x96, 0x19, 0x04, 0x10, 0xa3, 0x5b, 0x0c, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xdf, 0xef, 0xbe,
|
||||
0xef, 0x9e, 0xff, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xce, 0x7a, 0x31, 0xa7, 0x10, 0xa3, 0x10, 0xa3, 0x10, 0xa3, 0x10, 0xa3, 0x10, 0xa3, 0x10, 0xa3, 0x10, 0xc3, 0xce, 0x79, 0xff, 0xff, 0xff, 0xff, 0xce, 0x79, 0x21, 0x25, 0x10, 0xa3, 0x10, 0xa3, 0x39, 0xe8, 0xde, 0xfb, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xde, 0xfb, 0x21, 0x45, 0x10, 0xa3, 0x18, 0xe4, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf7, 0xbe, 0xf7, 0x9e, 0xf7, 0x9e, 0xd6, 0x9a, 0x39, 0xe8, 0x10, 0xa3, 0x42, 0x29, 0xef, 0x7d, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf7, 0xbe,
|
||||
0xef, 0xbe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xde, 0xfb, 0x39, 0xe8, 0x10, 0xa3, 0x29, 0x86, 0x6b, 0x6e, 0x6b, 0x6e, 0x6b, 0x6e, 0x6b, 0x6e, 0x94, 0x92, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xb5, 0xb7, 0x18, 0xe4, 0x10, 0xa3, 0x6b, 0x4d, 0xff, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xef, 0x7e, 0x4a, 0x8a, 0x10, 0xa3, 0x10, 0xc3, 0xb5, 0x96, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x84, 0x10, 0x5a, 0xec, 0x4a, 0x8a, 0x4a, 0x8a, 0x4a, 0x8a, 0x21, 0x45, 0x10, 0xa3, 0x39, 0xe8, 0xde, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xef, 0xbe,
|
||||
0xef, 0xbe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xef, 0x5d, 0x4a, 0x49, 0x10, 0xa3, 0x42, 0x29, 0xef, 0x5d, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x21, 0x45, 0x10, 0xa3, 0x31, 0xa7, 0xde, 0xdb, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xde, 0xfb, 0x21, 0x25, 0x10, 0xa3, 0x10, 0xa3, 0x29, 0x46, 0xc6, 0x38, 0xff, 0xff, 0xff, 0xff, 0xa5, 0x34, 0x10, 0xa3, 0x10, 0xa3, 0x10, 0xa3, 0x10, 0xa3, 0x10, 0xa3, 0x10, 0xa3, 0x10, 0xa3, 0x39, 0xc7, 0xde, 0xdb, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xef, 0xbe,
|
||||
0xef, 0x9e, 0xff, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xdf, 0x5a, 0xec, 0x10, 0xa3, 0x19, 0x04, 0xad, 0x75, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7b, 0xcf, 0x10, 0xa3, 0x10, 0xa3, 0x84, 0x10, 0xde, 0xfb, 0xef, 0x7e, 0xde, 0xfb, 0x63, 0x0d, 0x10, 0xa3, 0x10, 0xa3, 0x10, 0xa3, 0x10, 0xa3, 0x39, 0xc7, 0xff, 0xdf, 0xff, 0xff, 0x73, 0xcf, 0x21, 0x45, 0x21, 0x45, 0x21, 0x45, 0x21, 0x45, 0x21, 0x45, 0x21, 0x45, 0x21, 0x45, 0x4a, 0x6a, 0xde, 0xfb, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xdf, 0xef, 0x9e,
|
||||
0xef, 0x9e, 0xf7, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xad, 0x76, 0x10, 0xa3, 0x10, 0xa3, 0x63, 0x0c, 0xff, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf7, 0xbe, 0x42, 0x09, 0x10, 0xa3, 0x10, 0xa3, 0x21, 0x45, 0x4a, 0x8a, 0x21, 0x25, 0x10, 0xa3, 0x10, 0xa3, 0x42, 0x29, 0x63, 0x0d, 0x10, 0xa3, 0x10, 0xa3, 0x73, 0xaf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xdf, 0xff, 0xdf, 0xff, 0xdf, 0xff, 0xdf, 0xff, 0xdf, 0xff, 0xdf, 0xff, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xdf, 0xef, 0xbe,
|
||||
0xef, 0x9e, 0xf7, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf7, 0xbe, 0x42, 0x29, 0x10, 0xa3, 0x10, 0xc3, 0x8c, 0x51, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xd6, 0xba, 0x42, 0x29, 0x10, 0xa3, 0x10, 0xa3, 0x10, 0xa3, 0x10, 0xa3, 0x10, 0xa3, 0x42, 0x29, 0xde, 0xdb, 0xf7, 0x9e, 0x39, 0xe8, 0x10, 0xa3, 0x18, 0xe4, 0xde, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf7, 0xdf, 0xef, 0x9e,
|
||||
0xef, 0xbe, 0xf7, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe7, 0x3c, 0x18, 0xe4, 0x10, 0xa3, 0x10, 0xa3, 0x84, 0x51, 0xf7, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xef, 0x7d, 0x63, 0x2d, 0x10, 0xa3, 0x10, 0xa3, 0x18, 0xc4, 0x21, 0x25, 0xad, 0x55, 0xff, 0xdf, 0xff, 0xff, 0xff, 0xff, 0x8c, 0x51, 0x10, 0xa3, 0x10, 0xa3, 0x7b, 0xcf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf7, 0xdf, 0xef, 0x9e,
|
||||
0xef, 0x9e, 0xf7, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xad, 0x76, 0x29, 0x45, 0x10, 0xa3, 0x10, 0xa3, 0x52, 0x8a, 0x94, 0x92, 0xd6, 0xbb, 0xff, 0xff, 0xff, 0xff, 0xff, 0xdf, 0xc6, 0x18, 0x8c, 0x51, 0x31, 0xc7, 0x10, 0xa3, 0x10, 0xa3, 0x31, 0x86, 0xbd, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc6, 0x38, 0x29, 0x66, 0x10, 0xa3, 0x52, 0x8a, 0xf7, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf7, 0xbf, 0xf7, 0xbe,
|
||||
0xef, 0xbe, 0xf7, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xdf, 0xb5, 0xb7, 0x18, 0xe4, 0x10, 0xa3, 0x10, 0xa3, 0x10, 0xc3, 0x31, 0x87, 0x42, 0x08, 0x42, 0x29, 0x39, 0xe8, 0x29, 0x46, 0x10, 0xa3, 0x10, 0xa3, 0x10, 0xa3, 0x4a, 0x4a, 0xce, 0x59, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xdf, 0x3a, 0x08, 0x10, 0xa3, 0x4a, 0x6a, 0xf7, 0x9e, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf7, 0xbf, 0xef, 0xbe,
|
||||
0xef, 0x7d, 0xf7, 0xbe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf7, 0xbe, 0x63, 0x2d, 0x18, 0xc4, 0x10, 0xa3, 0x10, 0xa3, 0x10, 0xa3, 0x10, 0xa3, 0x10, 0xa3, 0x10, 0xa3, 0x10, 0xa3, 0x18, 0xe4, 0x7b, 0xcf, 0xff, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x42, 0x29, 0x10, 0xa3, 0x4a, 0x49, 0xef, 0x5d, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xef, 0x9e, 0xf7, 0x9e,
|
||||
0xff, 0xff, 0xef, 0x9e, 0xff, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xdf, 0xc6, 0x39, 0x63, 0x2d, 0x52, 0x8a, 0x4a, 0x6a, 0x4a, 0x49, 0x4a, 0x6a, 0x52, 0xab, 0x84, 0x10, 0xe7, 0x3c, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x42, 0x08, 0x10, 0xa3, 0x4a, 0x6a, 0xef, 0x7e, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf7, 0xdf, 0xef, 0xbe, 0xd6, 0xba,
|
||||
0x07, 0xff, 0xef, 0x9e, 0xf7, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf7, 0xbe, 0xef, 0x7e, 0xef, 0x5d, 0xf7, 0x9e, 0xff, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x84, 0x10, 0xa5, 0x34, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xd6, 0x9a, 0x29, 0x86, 0x10, 0xa3, 0x52, 0x8a, 0xf7, 0xbe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf7, 0xbe, 0xef, 0xbf, 0x00, 0x00,
|
||||
0x00, 0x00, 0xef, 0x9f, 0xef, 0x9e, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x31, 0xa7, 0x10, 0xa3, 0x84, 0x51, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x8c, 0x92, 0x10, 0xc3, 0x10, 0xa3, 0x63, 0x2d, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xef, 0x9e, 0xef, 0x7e, 0x00, 0x00,
|
||||
0x00, 0x00, 0xff, 0xff, 0xef, 0x9e, 0xf7, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x31, 0xa7, 0x10, 0xa3, 0x6b, 0x6e, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf7, 0xbe, 0x4a, 0x6a, 0x10, 0xa3, 0x18, 0xc4, 0xce, 0x79, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf7, 0xdf, 0xef, 0x9e, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0xef, 0x9e, 0xef, 0x9e, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x31, 0xa7, 0x10, 0xa3, 0x6b, 0x6e, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7b, 0xcf, 0x10, 0xa3, 0x10, 0xa3, 0x6b, 0x8e, 0xff, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xef, 0xbe, 0xef, 0x9f, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xef, 0xbe, 0xf7, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x31, 0xa7, 0x10, 0xa3, 0x6b, 0x6e, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7b, 0xcf, 0x10, 0xa3, 0x10, 0xa3, 0x19, 0x04, 0xff, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf7, 0xdf, 0xef, 0x9e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf7, 0xbe, 0xf7, 0xbe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x31, 0xa7, 0x10, 0xa3, 0x6b, 0x6e, 0xde, 0xdb, 0xad, 0x76, 0x5a, 0xcb, 0x10, 0xa3, 0x10, 0xa3, 0x21, 0x45, 0xbd, 0xd7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf7, 0xbe, 0xef, 0xbe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe7, 0x1c, 0xef, 0x9e, 0xf7, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x31, 0xa7, 0x10, 0xa3, 0x31, 0x86, 0x39, 0xe8, 0x18, 0xe4, 0x10, 0xa3, 0x10, 0xa3, 0x21, 0x25, 0xad, 0x76, 0xff, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf7, 0xdf, 0xef, 0x9e, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xef, 0x7e, 0xef, 0x9e, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x31, 0xa7, 0x10, 0xa3, 0x10, 0xa3, 0x10, 0xa3, 0x10, 0xa3, 0x10, 0xa3, 0x5a, 0xec, 0xe7, 0x3c, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xef, 0x9e, 0xf7, 0x9f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xad, 0x55, 0xef, 0x9e, 0xef, 0xbe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x52, 0xab, 0x39, 0xc7, 0x39, 0xe8, 0x42, 0x29, 0x63, 0x0c, 0xc6, 0x38, 0xff, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xef, 0xbe, 0xef, 0x9e, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xdf, 0x7d, 0xef, 0x9e, 0xf7, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xde, 0xfc, 0xde, 0xdb, 0xe7, 0x1c, 0xef, 0x7e, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf7, 0xdf, 0xef, 0x9e, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe7, 0x1e, 0xef, 0x9e, 0xff, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xef, 0x9e, 0xf7, 0x9f, 0x00, 0x00, 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, 0x9e, 0xef, 0xbe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xef, 0x9e, 0xf7, 0xbe, 0x00, 0x00, 0x00, 0x00, 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, 0xef, 0x9e, 0xef, 0x9e, 0xff, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xdf, 0xef, 0xbe, 0xf7, 0x9e, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0xad, 0x55, 0xef, 0x9e, 0xef, 0x9e, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xef, 0xbe, 0xef, 0x9e, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xef, 0x9e, 0xef, 0xbe, 0xff, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xef, 0x9e, 0xf7, 0x9e, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xef, 0x7e, 0xef, 0x9e, 0xf7, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf7, 0xdf, 0xef, 0x9e, 0xf7, 0xbe, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xf7, 0x9e, 0xef, 0xbe, 0xf7, 0xbe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xef, 0xbe, 0xef, 0x9e, 0xf7, 0x9f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 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, 0x5d, 0xef, 0x9f, 0xef, 0x9e, 0xf7, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf7, 0xdf, 0xef, 0x9e, 0xef, 0x9e, 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, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 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, 0xef, 0xbe, 0xef, 0x9e, 0xf7, 0xbe, 0xf7, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf7, 0xdf, 0xf7, 0xbe, 0xef, 0x9e, 0xf7, 0x9f, 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, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe7, 0xff, 0xef, 0x9e, 0xef, 0x9e, 0xef, 0x9e, 0xf7, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf7, 0xdf, 0xef, 0xbe, 0xef, 0x9e, 0xef, 0xbe, 0xe7, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x7e, 0xef, 0x9e, 0xef, 0x9e, 0xf7, 0xbf, 0xf7, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf7, 0xdf, 0xf7, 0xbe, 0xef, 0x9e, 0xef, 0x9e, 0xef, 0x9f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0xbe, 0xef, 0x9e, 0xef, 0x9e, 0xef, 0x9e, 0xef, 0xbe, 0xf7, 0xbf, 0xf7, 0xdf, 0xf7, 0xdf, 0xff, 0xdf, 0xff, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xdf, 0xff, 0xdf, 0xf7, 0xdf, 0xf7, 0xdf, 0xf7, 0xbf, 0xf7, 0xbf, 0xef, 0x9e, 0xef, 0xbe, 0xef, 0xbf, 0xef, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0xf7, 0x9e, 0xef, 0xbe, 0xf7, 0xbf, 0xef, 0xbe, 0xef, 0xbe, 0xef, 0xbe, 0xef, 0xbe, 0xf7, 0xbe, 0xef, 0xbe, 0xef, 0xbe, 0xef, 0x9e, 0xef, 0xbe, 0xef, 0x9e, 0xef, 0x9e, 0xf7, 0xbe, 0xef, 0xbe, 0xf7, 0x9e, 0xd6, 0xbf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x07, 0x0f, 0x1d, 0x42, 0x5f, 0x87, 0xa6, 0xb2, 0xbd, 0xc3, 0xbc, 0xb1, 0xa4, 0x85, 0x5e, 0x40, 0x1d, 0x0f, 0x06, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x24, 0x52, 0x79, 0x9c, 0xbd, 0xbf, 0xbd, 0xbb, 0xba, 0xb9, 0xb8, 0xb7, 0xb8, 0xb9, 0xba, 0xbc, 0xbe, 0xc0, 0xbb, 0x99, 0x77, 0x50, 0x22, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3d, 0x89, 0xaa, 0xbb, 0xba, 0xb7, 0xb5, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb5, 0xb7, 0xba, 0xba, 0xa9, 0x86, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x3b, 0xa3, 0xc4, 0xbc, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xbd, 0xc5, 0x9c, 0x36, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x35, 0x84, 0xbb, 0xbc, 0xb5, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb5, 0xbc, 0xba, 0x81, 0x30, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x70, 0xb4, 0xbc, 0xb5, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb5, 0xbc, 0xb0, 0x6c, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x11, 0x92, 0xc2, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xc3, 0x8b, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x43, 0xb3, 0xbd, 0xb4, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb4, 0xbe, 0xa8, 0x3e, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x4f, 0xb4, 0xb8, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb9, 0xb2, 0x4a, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x52, 0xc5, 0xb7, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb6, 0xc3, 0x48, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x4f, 0xc5, 0xb8, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb8, 0xc2, 0x47, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x43, 0xb4, 0xb7, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb7, 0xb2, 0x40, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0xb3, 0xb8, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb8, 0xa6, 0x13, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x92, 0xbd, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb4, 0xb7, 0xbb, 0xbe, 0xbe, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xbe, 0x86, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x04, 0x70, 0xc2, 0xb4, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb4, 0xc6, 0xe0, 0xe7, 0xec, 0xf0, 0xea, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb5, 0xc3, 0x66, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x35, 0xb4, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xba, 0xf1, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf5, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb4, 0xb4, 0x2f, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x0a, 0x86, 0xbb, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb4, 0xca, 0xfa, 0xff, 0xfe, 0xf7, 0xe9, 0xf5, 0xff, 0xf5, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xbc, 0x80, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3b, 0xbb, 0xb5, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xc5, 0xf5, 0xff, 0xfb, 0xdf, 0xc6, 0xb8, 0xe5, 0xff, 0xf5, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb5, 0xb7, 0x35, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0xa3, 0xbc, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb6, 0xfb, 0xff, 0xfe, 0xc8, 0xb4, 0xb3, 0xb6, 0xe5, 0xff, 0xf5, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xbc, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3d, 0xc4, 0xb5, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb4, 0xe9, 0xff, 0xfb, 0xca, 0xb3, 0xb3, 0xb3, 0xb6, 0xe5, 0xff, 0xf5, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb6, 0xc5, 0x2c, 0x00, 0x00,
|
||||
0x00, 0x05, 0x89, 0xbc, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xc5, 0xf9, 0xfe, 0xe3, 0xb5, 0xb3, 0xb3, 0xb3, 0xb4, 0xdf, 0xfe, 0xf5, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xbe, 0x82, 0x00, 0x00, 0x00, 0x24, 0xaa, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xdd, 0xfe, 0xfa, 0xcd, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xd3, 0xfb, 0xf5, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb5, 0xad, 0x1f, 0x00,
|
||||
0x01, 0x52, 0xbb, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb5, 0xe1, 0xff, 0xf1, 0xb6, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xc0, 0xcf, 0xb3, 0xb3, 0xb3, 0xb4, 0xb7, 0xba, 0xb8, 0xb4, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb9, 0x4d, 0x00, 0x07, 0x79, 0xba, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb8, 0xe7, 0xff, 0xee, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xbf, 0xdb, 0xe0, 0xe5, 0xea, 0xe6, 0xe1, 0xde, 0xc4, 0xb4, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xba, 0x75, 0x06,
|
||||
0x0f, 0x9c, 0xb7, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xba, 0xea, 0xff, 0xee, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb5, 0xdd, 0xf8, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf9, 0xe3, 0xb4, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb6, 0x94, 0x12, 0x1d, 0xbd, 0xb5, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb7, 0xe5, 0xff, 0xee, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xbe, 0xf7, 0xff, 0xfe, 0xfd, 0xf3, 0xee, 0xed, 0xee, 0xf1, 0xfb, 0xfe, 0xff, 0xfd, 0xc2, 0xb4, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb5, 0xb3, 0x1f,
|
||||
0x42, 0xbf, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb4, 0xe0, 0xff, 0xf3, 0xbb, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xc5, 0xf6, 0xff, 0xfe, 0xe6, 0xd4, 0xba, 0xb3, 0xb3, 0xb3, 0xb7, 0xcf, 0xe3, 0xfc, 0xff, 0xf5, 0xc8, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb4, 0xc0, 0x34, 0x5f, 0xbd, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xdb, 0xfe, 0xfd, 0xd4, 0xb3, 0xb3, 0xb4, 0xd9, 0xf5, 0xfa, 0xfe, 0xfd, 0xdc, 0xb6, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb5, 0xd1, 0xfe, 0xff, 0xf8, 0xba, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xbd, 0x59,
|
||||
0x88, 0xbb, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xbc, 0xf7, 0xff, 0xe8, 0xb6, 0xbf, 0xec, 0xff, 0xff, 0xff, 0xff, 0xff, 0xea, 0xbc, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xd1, 0xfc, 0xff, 0xe3, 0xb4, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xbc, 0x76, 0xa6, 0xba, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xdb, 0xff, 0xfe, 0xdc, 0xed, 0xff, 0xff, 0xed, 0xdc, 0xef, 0xff, 0xff, 0xe8, 0xb4, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xe0, 0xfe, 0xff, 0xc2, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xba, 0x8f,
|
||||
0xb2, 0xb9, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xbc, 0xe4, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xcc, 0xb3, 0xb5, 0xf2, 0xff, 0xfe, 0xff, 0xff, 0xce, 0xba, 0xb4, 0xbb, 0xd3, 0xfe, 0xff, 0xcc, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xc6, 0xf9, 0xff, 0xdf, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb9, 0x9c, 0xbd, 0xb8, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xbe, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, 0xbe, 0xb3, 0xb3, 0xbe, 0xf6, 0xfe, 0xff, 0xed, 0xba, 0xb3, 0xb3, 0xb3, 0xba, 0xf5, 0xff, 0xf8, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb4, 0xb6, 0xb6, 0xbd, 0xec, 0xfe, 0xea, 0xb7, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb8, 0xa6,
|
||||
0xc3, 0xb7, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xbb, 0xec, 0xff, 0xf2, 0xdb, 0xdb, 0xdb, 0xda, 0xcf, 0xb3, 0xb3, 0xb3, 0xb3, 0xc4, 0xf9, 0xff, 0xdc, 0xb4, 0xb3, 0xb3, 0xb3, 0xb6, 0xe5, 0xff, 0xfc, 0xc5, 0xb3, 0xb3, 0xb3, 0xb3, 0xd4, 0xe0, 0xe5, 0xe5, 0xe5, 0xf5, 0xfe, 0xed, 0xba, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb8, 0xac, 0xbc, 0xb8, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb7, 0xe7, 0xff, 0xe9, 0xb7, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xf5, 0xff, 0xef, 0xbb, 0xb3, 0xb3, 0xb3, 0xba, 0xf6, 0xff, 0xfe, 0xf4, 0xc1, 0xb3, 0xb3, 0xc9, 0xfd, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xee, 0xbb, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb8, 0xa5,
|
||||
0xb2, 0xb9, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xe1, 0xff, 0xf8, 0xc7, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xd5, 0xff, 0xff, 0xd3, 0xba, 0xb6, 0xba, 0xdd, 0xfe, 0xff, 0xfe, 0xff, 0xed, 0xb4, 0xb3, 0xd7, 0xf5, 0xf5, 0xf5, 0xf5, 0xf5, 0xf5, 0xf5, 0xe7, 0xba, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb9, 0x9b, 0xa4, 0xba, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xc6, 0xff, 0xfe, 0xdf, 0xb4, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb4, 0xea, 0xff, 0xfe, 0xf5, 0xe5, 0xf6, 0xfe, 0xff, 0xe9, 0xdd, 0xfe, 0xff, 0xd6, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xba, 0x8d,
|
||||
0x85, 0xbc, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb4, 0xe9, 0xff, 0xfb, 0xd2, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xbc, 0xe8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe9, 0xbb, 0xb6, 0xec, 0xff, 0xf9, 0xb9, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xbc, 0x75, 0x5e, 0xbe, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb8, 0xfa, 0xff, 0xfe, 0xd2, 0xb4, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb6, 0xdc, 0xfe, 0xfe, 0xfb, 0xf6, 0xc7, 0xb4, 0xb3, 0xb3, 0xd1, 0xfd, 0xfd, 0xd6, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xbe, 0x58,
|
||||
0x40, 0xc0, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xc6, 0xf5, 0xff, 0xfc, 0xe4, 0xcf, 0xbc, 0xb3, 0xb3, 0xb4, 0xc1, 0xd1, 0xee, 0xfe, 0xff, 0xf1, 0xc2, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xc0, 0xf3, 0xfe, 0xe4, 0xb4, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb4, 0xbf, 0x33, 0x1d, 0xbb, 0xb5, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb4, 0xc4, 0xf9, 0xff, 0xfe, 0xfc, 0xf1, 0xea, 0xe9, 0xec, 0xf4, 0xfd, 0xff, 0xff, 0xe6, 0xbf, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xeb, 0xff, 0xe6, 0xb6, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb5, 0xb1, 0x1e,
|
||||
0x0f, 0x99, 0xb7, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb4, 0xdd, 0xfb, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xfd, 0xf9, 0xd6, 0xb4, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xe9, 0xff, 0xe7, 0xb7, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb6, 0x92, 0x11, 0x06, 0x77, 0xba, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xc0, 0xdd, 0xe5, 0xe6, 0xe7, 0xe6, 0xe4, 0xd4, 0xb8, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xea, 0xff, 0xe6, 0xb6, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xba, 0x73, 0x06,
|
||||
0x01, 0x50, 0xba, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb5, 0xb6, 0xb7, 0xb6, 0xb4, 0xb3, 0xb3, 0xb3, 0xd4, 0xc9, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xbd, 0xf1, 0xff, 0xe4, 0xb5, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb9, 0x4a, 0x00, 0x00, 0x22, 0xa9, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xf0, 0xfd, 0xd2, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xcf, 0xfc, 0xfe, 0xdd, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb5, 0xae, 0x1d, 0x00,
|
||||
0x00, 0x03, 0x86, 0xbd, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xf0, 0xff, 0xda, 0xb3, 0xb3, 0xb3, 0xb3, 0xb4, 0xe5, 0xfe, 0xfb, 0xbe, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xbe, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x38, 0xc5, 0xb5, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xf0, 0xff, 0xdb, 0xb3, 0xb3, 0xb3, 0xb3, 0xd6, 0xfc, 0xff, 0xd9, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb6, 0xc3, 0x27, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x9d, 0xbc, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xf0, 0xff, 0xdb, 0xb3, 0xb3, 0xb3, 0xd7, 0xfe, 0xff, 0xf7, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xbc, 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0xba, 0xb5, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xf0, 0xff, 0xdb, 0xbb, 0xc7, 0xe1, 0xfc, 0xfe, 0xf5, 0xc3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb5, 0xb6, 0x2f, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x09, 0x80, 0xbc, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xf0, 0xff, 0xf1, 0xec, 0xf9, 0xfe, 0xff, 0xf6, 0xc6, 0xb4, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xbc, 0x7a, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x31, 0xb0, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xf0, 0xff, 0xfe, 0xfe, 0xff, 0xfe, 0xe0, 0xb8, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb6, 0xb2, 0x2b, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x03, 0x6c, 0xc3, 0xb4, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xe3, 0xee, 0xed, 0xea, 0xde, 0xc0, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb5, 0xc2, 0x61, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x8b, 0xbe, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xba, 0xbb, 0xb9, 0xb6, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb4, 0xbe, 0x81, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0xa8, 0xb9, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb9, 0x9e, 0x13, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0xb2, 0xb6, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb7, 0xae, 0x3a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x4a, 0xc3, 0xb8, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb8, 0xbd, 0x42, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x48, 0xc2, 0xb7, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb7, 0xbd, 0x40, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x47, 0xb2, 0xb8, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb4, 0xb9, 0xae, 0x42, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x40, 0xa6, 0xbe, 0xb5, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb5, 0xbe, 0x9e, 0x3a, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x13, 0x86, 0xc3, 0xb4, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb6, 0xc2, 0x81, 0x13, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, 0x66, 0xb4, 0xbc, 0xb5, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb5, 0xbb, 0xb2, 0x61, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x2f, 0x7f, 0xb7, 0xbc, 0xb6, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb6, 0xbc, 0xb6, 0x7b, 0x2b, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x35, 0x8e, 0xc5, 0xbe, 0xb5, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb5, 0xbe, 0xc3, 0x89, 0x2f, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2c, 0x82, 0xad, 0xb9, 0xba, 0xb6, 0xb5, 0xb4, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb4, 0xb5, 0xb6, 0xba, 0xb9, 0xae, 0x7e, 0x27, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x4e, 0x75, 0x94, 0xb3, 0xc0, 0xbd, 0xbc, 0xba, 0xb9, 0xb8, 0xb8, 0xb8, 0xb9, 0xba, 0xbc, 0xbe, 0xbf, 0xb1, 0x92, 0x73, 0x4a, 0x1d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x12, 0x1f, 0x34, 0x59, 0x76, 0x8f, 0x9c, 0xa6, 0xac, 0xa5, 0x9b, 0x8d, 0x75, 0x58, 0x33, 0x1e, 0x11, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
};
|
||||
|
||||
const gfx_image_dsc_t icon1 = {
|
||||
.header.cf = GFX_COLOR_FORMAT_RGB565A8,
|
||||
.header.magic = C_ARRAY_HEADER_MAGIC,
|
||||
.header.w = 65,
|
||||
.header.h = 65,
|
||||
.data_size = 12675,
|
||||
.data = icon1_map,
|
||||
};
|
||||
@@ -0,0 +1,111 @@
|
||||
#include "gfx.h"
|
||||
|
||||
const uint8_t icon5_map[] = {
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xe0, 0x26, 0xfb, 0x36, 0xba, 0x36, 0xdb, 0x3e, 0xdb, 0x36, 0xba, 0x3e, 0xdb, 0x36, 0xdb, 0x3e, 0xdb, 0x3e, 0xbb, 0x3e, 0xbb, 0x36, 0xbb, 0x3e, 0xbb, 0x36, 0xbb, 0x36, 0xbb, 0x36, 0xbb, 0x36, 0x9b, 0x36, 0x9b, 0x2e, 0xba, 0x25, 0xfb, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x79, 0x36, 0xba, 0x3e, 0xda, 0x3e, 0xdb, 0x3e, 0xdb, 0x3e, 0xdb, 0x3e, 0xdb, 0x3e, 0xdb, 0x3e, 0xbb, 0x3e, 0xbb, 0x3e, 0xbb, 0x36, 0xbb, 0x36, 0xbb, 0x36, 0xbb, 0x36, 0xbb, 0x36, 0xbb, 0x36, 0xbb, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x7b, 0x07, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0xfb, 0x3e, 0xdb, 0x36, 0xdb, 0x3e, 0xdb, 0x3e, 0xdb, 0x3e, 0xdb, 0x3e, 0xdb, 0x3e, 0xdb, 0x3e, 0xdb, 0x3e, 0xbb, 0x3e, 0xbb, 0x3e, 0xbb, 0x36, 0xbb, 0x36, 0xbb, 0x36, 0xbb, 0x36, 0xbb, 0x36, 0xbb, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0xbc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2e, 0xba, 0x36, 0xfa, 0x3e, 0xda, 0x3e, 0xda, 0x3e, 0xda, 0x3e, 0xdb, 0x3e, 0xdb, 0x3e, 0xdb, 0x3e, 0xdb, 0x3e, 0xbb, 0x3e, 0xbb, 0x3e, 0xbb, 0x36, 0xbb, 0x36, 0xbb, 0x3e, 0xbb, 0x3e, 0xbb, 0x36, 0xbb, 0x36, 0xbb, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7c, 0x2e, 0x9a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0xf7, 0x3e, 0xfa, 0x3e, 0xda, 0x3e, 0xda, 0x3e, 0xda, 0x3e, 0xda, 0x3e, 0xdb, 0x3e, 0xdb, 0x3e, 0xdb, 0x3e, 0xdb, 0x3e, 0xdb, 0x3e, 0xbb, 0x3e, 0xbb, 0x3e, 0xbb, 0x36, 0xbb, 0x36, 0xbb, 0x36, 0xbb, 0x36, 0xbb, 0x36, 0xbb, 0x36, 0xbb, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x5c, 0x05, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2e, 0xba, 0x36, 0xfa, 0x3e, 0xfa, 0x3e, 0xda, 0x3e, 0xda, 0x3e, 0xda, 0x3e, 0xdb, 0x3e, 0xdb, 0x3e, 0xdb, 0x3e, 0xdb, 0x3e, 0xbb, 0x3e, 0xbb, 0x3e, 0xbb, 0x3e, 0xbb, 0x3e, 0xbb, 0x36, 0xbb, 0x3e, 0xbb, 0x36, 0xbb, 0x36, 0xbb, 0x36, 0xbb, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x5c, 0x35, 0xfb, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xff, 0x26, 0xdb, 0x3e, 0xfb, 0x3e, 0xda, 0x3e, 0xda, 0x3e, 0xda, 0x3e, 0xda, 0x3e, 0xdb, 0x3e, 0xdb, 0x3e, 0xdb, 0x3e, 0xdb, 0x3e, 0xbb, 0x3e, 0xbb, 0x3e, 0xbb, 0x36, 0xbb, 0x36, 0xbb, 0x36, 0xbb, 0x36, 0xbb, 0x36, 0xbb, 0x36, 0xbb, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x5b, 0x36, 0x5b, 0x36, 0x5c, 0x36, 0x5c, 0x26, 0x7b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x26, 0xdb, 0x3e, 0xfa, 0x3e, 0xfa, 0x3e, 0xda, 0x3e, 0xda, 0x3e, 0xda, 0x3e, 0xda, 0x3e, 0xdb, 0x3e, 0xdb, 0x3e, 0xdb, 0x3e, 0xdb, 0x3e, 0xdb, 0x3e, 0xbb, 0x3e, 0xbb, 0x3e, 0xbb, 0x36, 0xbb, 0x36, 0xbb, 0x36, 0xbb, 0x36, 0xbb, 0x36, 0xbb, 0x36, 0xbb, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x5b, 0x36, 0x5b, 0x36, 0x5b, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x7c, 0x36, 0x79, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xff, 0x3e, 0xfa, 0x36, 0xfa, 0x3e, 0xfa, 0x3e, 0xda, 0x3e, 0xda, 0x3e, 0xdb, 0x3e, 0xdb, 0x3e, 0xdb, 0x3e, 0xdb, 0x3e, 0xdb, 0x3e, 0xdb, 0x3e, 0xdb, 0x3e, 0xbb, 0x3e, 0xbb, 0x3e, 0xbb, 0x36, 0xbb, 0x36, 0xbb, 0x36, 0xbb, 0x36, 0xbb, 0x36, 0xbb, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x5b, 0x36, 0x5b, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x5c, 0x05, 0x5f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xff, 0x36, 0xfb, 0x3e, 0xfa, 0x3e, 0xda, 0x3e, 0xda, 0x3e, 0xda, 0x3e, 0xda, 0x3e, 0xdb, 0x3e, 0xdb, 0x3e, 0xdb, 0x3e, 0xdb, 0x3e, 0xbb, 0x3e, 0xbb, 0x3e, 0xbb, 0x36, 0xbb, 0x36, 0xbb, 0x36, 0xbb, 0x36, 0xbb, 0x36, 0xbb, 0x36, 0xbb, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x5b, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x3c, 0x07, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x26, 0xdb, 0x3e, 0xfa, 0x3e, 0xda, 0x3e, 0xda, 0x3e, 0xda, 0x3e, 0xda, 0x3e, 0xda, 0x3e, 0xdb, 0x3e, 0xdb, 0x3e, 0xdb, 0x3e, 0xdb, 0x3e, 0xdb, 0x3e, 0xbb, 0x3e, 0xbb, 0x3e, 0xbb, 0x36, 0xbb, 0x36, 0xbb, 0x36, 0xbb, 0x36, 0xbb, 0x36, 0xbb, 0x36, 0xbb, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x5b, 0x36, 0x5b, 0x36, 0x5b, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x05, 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, 0x00, 0x07, 0xff, 0x3f, 0x1a, 0x36, 0xfa, 0x3e, 0xda, 0x3e, 0xda, 0x3e, 0xda, 0x3e, 0xda, 0x3e, 0xdb, 0x3e, 0xdb, 0x3e, 0xdb, 0x3e, 0xdb, 0x3e, 0xbb, 0x3e, 0xbb, 0x3e, 0xbb, 0x3e, 0xbb, 0x3e, 0xbb, 0x36, 0xbb, 0x36, 0xbb, 0x36, 0xbb, 0x36, 0xbb, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x5b, 0x36, 0x5b, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x07, 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, 0x26, 0xdb, 0x3e, 0xfa, 0x3e, 0xfa, 0x3e, 0xda, 0x3e, 0xda, 0x3e, 0xda, 0x3e, 0xdb, 0x3e, 0xdb, 0x3e, 0xdb, 0x3e, 0xdb, 0x3e, 0xdb, 0x3e, 0xbb, 0x3e, 0xbb, 0x3e, 0xbb, 0x3e, 0xbb, 0x36, 0xbb, 0x36, 0xbb, 0x36, 0xbb, 0x36, 0xbb, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x5b, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x2e, 0x5d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2e, 0xba, 0x3e, 0xfb, 0x3e, 0xda, 0x3e, 0xda, 0x3e, 0xda, 0x3e, 0xda, 0x3e, 0xdb, 0x3e, 0xdb, 0x3e, 0xdb, 0x3e, 0xdb, 0x3e, 0xdb, 0x3e, 0xbb, 0x3e, 0xbb, 0x3e, 0xbb, 0x36, 0xbb, 0x36, 0xbb, 0x36, 0xbb, 0x36, 0xbb, 0x36, 0xbb, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x46, 0x9b, 0x46, 0x9b, 0x3e, 0x9b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x5b, 0x36, 0x5b, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x2d, 0xfd, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0xf7, 0x36, 0xfa, 0x3e, 0xda, 0x3e, 0xda, 0x3e, 0xda, 0x3e, 0xdb, 0x3e, 0xdb, 0x3e, 0xdb, 0x3e, 0xdb, 0x3e, 0xdb, 0x3e, 0xdb, 0x3e, 0xdb, 0x3e, 0xbb, 0x3e, 0xbb, 0x3e, 0xbb, 0x36, 0xbb, 0x36, 0xbb, 0x36, 0xbb, 0x36, 0xbb, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0xc7, 0x9e, 0xc7, 0x9e, 0x9f, 0x3d, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x5b, 0x36, 0x5b, 0x36, 0x5b, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x1c, 0x36, 0x3c, 0x36, 0x1c, 0x07, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0xfa, 0x3e, 0xfa, 0x3e, 0xda, 0x3e, 0xda, 0x3e, 0xda, 0x3e, 0xdb, 0x3e, 0xdb, 0x3e, 0xdb, 0x3e, 0xdb, 0x3e, 0xdb, 0x3e, 0xbb, 0x3e, 0xbb, 0x3e, 0xbb, 0x3e, 0xbb, 0x3e, 0xbb, 0x36, 0xbb, 0x36, 0xbb, 0x36, 0xbb, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x97, 0x3d, 0x5e, 0xdc, 0x36, 0x9b, 0x36, 0x9b, 0xff, 0xff, 0xff, 0xff, 0xcf, 0x9e, 0x36, 0x7b, 0x36, 0x7b, 0x66, 0xbc, 0x6e, 0xdc, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2f, 0x5d, 0x3e, 0xfa, 0x3e, 0xda, 0x3e, 0xda, 0x3e, 0xda, 0x3e, 0xdb, 0x3e, 0xdb, 0x3e, 0xdb, 0x3e, 0xdb, 0x3e, 0xdb, 0x3e, 0xbb, 0x3e, 0xbb, 0x3e, 0xbb, 0x36, 0xbb, 0x36, 0xbb, 0x36, 0xbb, 0x36, 0xbb, 0x36, 0xbb, 0x36, 0xbb, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x3e, 0x9b, 0xe7, 0xdf, 0xf7, 0xdf, 0x9f, 0x3d, 0x46, 0x9b, 0xff, 0xff, 0xff, 0xff, 0xcf, 0x9e, 0x46, 0x9c, 0xa7, 0x3d, 0xf7, 0xff, 0xdf, 0xbf, 0x36, 0x5b, 0x36, 0x5b, 0x36, 0x5b, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x2d, 0xfd, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0xfa, 0x3e, 0xda, 0x3e, 0xda, 0x3e, 0xda, 0x3e, 0xdb, 0x3e, 0xdb, 0x3e, 0xdb, 0x3e, 0xdb, 0x3e, 0xbb, 0x3e, 0xbb, 0x3e, 0xbb, 0x3e, 0xbb, 0x3e, 0xbb, 0x36, 0xbb, 0x36, 0xbb, 0x36, 0xbb, 0x36, 0xbb, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x97, 0x3d, 0xff, 0xff, 0xff, 0xff, 0xc7, 0x9e, 0xff, 0xff, 0xff, 0xff, 0xe7, 0xbf, 0xc7, 0x9e, 0xff, 0xff, 0xff, 0xff, 0x86, 0xfd, 0x36, 0x5b, 0x36, 0x5b, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0xfa, 0x3e, 0xda, 0x3e, 0xda, 0x3e, 0xdb, 0x3e, 0xdb, 0x3e, 0xdb, 0x3e, 0xdb, 0x3e, 0xdb, 0x3e, 0xbb, 0x3e, 0xbb, 0x3e, 0xbb, 0x3e, 0xbb, 0x36, 0xbb, 0x36, 0xbb, 0x36, 0xbb, 0x36, 0xbb, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x3e, 0x9b, 0x87, 0x1d, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf7, 0xff, 0x7e, 0xfd, 0x36, 0x5b, 0x36, 0x5b, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x3e, 0xfb, 0x3e, 0xda, 0x3e, 0xda, 0x3e, 0xdb, 0x3e, 0xdb, 0x3e, 0xdb, 0x3e, 0xdb, 0x3e, 0xbb, 0x3e, 0xbb, 0x3e, 0xbb, 0x3e, 0xbb, 0x36, 0xbb, 0x36, 0xbb, 0x36, 0xbb, 0x36, 0xbb, 0x36, 0xbb, 0x36, 0x9b, 0x46, 0xbb, 0x66, 0xdc, 0x46, 0xbb, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x7b, 0x36, 0x7b, 0x76, 0xfc, 0xdf, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xd7, 0x9e, 0x76, 0xdd, 0x36, 0x5b, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x5c, 0x46, 0x7c, 0x5e, 0x9c, 0x3e, 0x5c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x35, 0xfc, 0x36, 0x1d, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x36, 0x79, 0x3e, 0xfb, 0x3e, 0xdb, 0x3e, 0xdb, 0x3e, 0xdb, 0x3e, 0xdb, 0x3e, 0xdb, 0x3e, 0xdb, 0x3e, 0xbb, 0x3e, 0xbb, 0x3e, 0xbb, 0x3e, 0xbb, 0x36, 0xbb, 0x36, 0xbb, 0x36, 0xbb, 0x36, 0xbb, 0x36, 0x9b, 0x36, 0x9b, 0x56, 0xdc, 0xdf, 0xbe, 0xbf, 0x7e, 0x3e, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x56, 0xbc, 0xff, 0xff, 0xff, 0xff, 0xe7, 0xbf, 0x4e, 0x9c, 0x36, 0x5b, 0x36, 0x5b, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x5c, 0x46, 0x5c, 0xc7, 0x7e, 0xcf, 0x9e, 0x4e, 0x7c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x36, 0xba, 0x36, 0xdb, 0x3e, 0xdb, 0x3e, 0xdb, 0x3e, 0xdb, 0x3e, 0xdb, 0x3e, 0xdb, 0x3e, 0xbb, 0x3e, 0xbb, 0x3e, 0xbb, 0x3e, 0xbb, 0x3e, 0xbb, 0x36, 0xbb, 0x36, 0xbb, 0x36, 0xbb, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x4e, 0xbb, 0xcf, 0x9e, 0xff, 0xff, 0x76, 0xfc, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0xff, 0xff, 0xff, 0xff, 0xcf, 0x9e, 0x36, 0x5b, 0x36, 0x5b, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x5c, 0x8f, 0x1d, 0xff, 0xff, 0xc7, 0x7e, 0x46, 0x5c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x00, 0x00,
|
||||
0x07, 0xe0, 0x3e, 0xda, 0x3e, 0xdb, 0x3e, 0xdb, 0x3e, 0xdb, 0x3e, 0xdb, 0x3e, 0xbb, 0x3e, 0xbb, 0x3e, 0xbb, 0x3e, 0xbb, 0x36, 0xbb, 0x36, 0xbb, 0x36, 0xbb, 0x36, 0xbb, 0x36, 0xbb, 0x36, 0xbb, 0x4e, 0xbb, 0x77, 0x1c, 0x5e, 0xdc, 0x46, 0xbb, 0xbf, 0x7e, 0xff, 0xff, 0x9f, 0x5d, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0xff, 0xff, 0xff, 0xff, 0xcf, 0x9e, 0x36, 0x5b, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x3c, 0x36, 0x3c, 0xaf, 0x3e, 0xff, 0xff, 0xbf, 0x7e, 0x46, 0x5c, 0x5e, 0x9d, 0x7e, 0xdd, 0x46, 0x5c, 0x36, 0x3c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x00, 0x00,
|
||||
0x26, 0xfb, 0x3e, 0xdb, 0x3e, 0xdb, 0x3e, 0xdb, 0x3e, 0xdb, 0x3e, 0xbb, 0x3e, 0xbb, 0x3e, 0xbb, 0x3e, 0xbb, 0x36, 0xbb, 0x36, 0xbb, 0x36, 0xbb, 0x36, 0xbb, 0x36, 0xbb, 0x36, 0x9b, 0x36, 0x9b, 0x87, 0x1d, 0xff, 0xff, 0xe7, 0xdf, 0xa7, 0x5d, 0xcf, 0x9e, 0xff, 0xff, 0xb7, 0x7e, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0xff, 0xff, 0xff, 0xff, 0xcf, 0x9e, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x3c, 0x36, 0x3c, 0xb7, 0x5e, 0xff, 0xff, 0xd7, 0x9f, 0xa7, 0x3e, 0xef, 0xdf, 0xf7, 0xdf, 0x86, 0xdd, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfd, 0x25, 0xbb,
|
||||
0x36, 0xba, 0x3e, 0xdb, 0x3e, 0xdb, 0x3e, 0xdb, 0x3e, 0xdb, 0x3e, 0xbb, 0x3e, 0xbb, 0x3e, 0xbb, 0x3e, 0xbb, 0x36, 0xbb, 0x36, 0xbb, 0x36, 0xbb, 0x36, 0xbb, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0xb7, 0x7e, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xbf, 0x7e, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0xff, 0xff, 0xff, 0xff, 0xcf, 0x9e, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0xb7, 0x5e, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xaf, 0x3e, 0x3e, 0x3c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x2d, 0xdd,
|
||||
0x36, 0xdb, 0x36, 0xda, 0x3e, 0xdb, 0x3e, 0xbb, 0x3e, 0xbb, 0x3e, 0xbb, 0x3e, 0xbb, 0x36, 0xbb, 0x36, 0xbb, 0x36, 0xbb, 0x36, 0xbb, 0x36, 0xbb, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x3e, 0x9b, 0x87, 0x1d, 0xdf, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xd7, 0xbe, 0x5e, 0xbc, 0x3e, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x5b, 0x36, 0x5b, 0xff, 0xff, 0xff, 0xff, 0xcf, 0x9e, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x3e, 0x3c, 0x5e, 0x9c, 0xcf, 0x9e, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xdf, 0xbf, 0x7e, 0xbd, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xdd, 0x2d, 0xfd,
|
||||
0x3e, 0xdb, 0x3e, 0xdb, 0x3e, 0xdb, 0x3e, 0xbb, 0x3e, 0xbb, 0x3e, 0xbb, 0x36, 0xbb, 0x36, 0xbb, 0x36, 0xbb, 0x36, 0xbb, 0x36, 0xbb, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x3e, 0x9b, 0x66, 0xdc, 0xa7, 0x5d, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xef, 0xdf, 0xa7, 0x5d, 0x56, 0xbc, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x5b, 0x36, 0x5b, 0x36, 0x5b, 0xff, 0xff, 0xff, 0xff, 0xcf, 0x9e, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x3c, 0x36, 0x3c, 0x5e, 0x9c, 0xa7, 0x3e, 0xf7, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xa7, 0x3e, 0x5e, 0x7d, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xdc, 0x35, 0xdd, 0x35, 0xfd,
|
||||
0x36, 0xba, 0x3e, 0xdb, 0x3e, 0xbb, 0x3e, 0xbb, 0x3e, 0xbb, 0x3e, 0xbb, 0x36, 0xbb, 0x36, 0xbb, 0x36, 0xbb, 0x36, 0xbb, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x4e, 0xbb, 0xcf, 0x9e, 0xf7, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xf7, 0xdf, 0xb7, 0x7e, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xef, 0xdf, 0x9f, 0x3d, 0x3e, 0x7b, 0x36, 0x5b, 0x36, 0x5b, 0x36, 0x5c, 0xff, 0xff, 0xff, 0xff, 0xcf, 0x9e, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x3c, 0x3e, 0x5c, 0x9f, 0x1e, 0xef, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xaf, 0x3e, 0xf7, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xef, 0xdf, 0xcf, 0x7e, 0x4e, 0x5c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xfd,
|
||||
0x3e, 0xdb, 0x3e, 0xbb, 0x3e, 0xbb, 0x3e, 0xbb, 0x36, 0xbb, 0x36, 0xbb, 0x36, 0xbb, 0x36, 0xbb, 0x36, 0xbb, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x97, 0x3d, 0xef, 0xdf, 0xf7, 0xff, 0xd7, 0xbf, 0x97, 0x3d, 0x3e, 0x7b, 0x36, 0x7b, 0x5e, 0xbc, 0xcf, 0x9e, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xef, 0xdf, 0x5e, 0xbc, 0x46, 0x7c, 0x36, 0x5c, 0xff, 0xff, 0xff, 0xff, 0xcf, 0x9e, 0x36, 0x5c, 0x46, 0x5c, 0x66, 0xbd, 0xf7, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc7, 0x7e, 0x5e, 0x7c, 0x36, 0x3c, 0x3e, 0x3c, 0x9f, 0x1e, 0xdf, 0x9f, 0xf7, 0xdf, 0xef, 0xdf, 0x7e, 0xbd, 0x36, 0x1c, 0x36, 0x1c, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd,
|
||||
0x36, 0xdb, 0x3e, 0xbb, 0x3e, 0xbb, 0x3e, 0xbb, 0x3e, 0xbb, 0x3e, 0xbb, 0x36, 0xbb, 0x36, 0xbb, 0x3e, 0xbb, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x6e, 0xfc, 0x7e, 0xfd, 0x3e, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x3e, 0x7c, 0x8f, 0x1d, 0xcf, 0x9e, 0xff, 0xff, 0xff, 0xff, 0xf7, 0xff, 0xbf, 0x7e, 0x66, 0xbc, 0xff, 0xff, 0xff, 0xff, 0xcf, 0x9e, 0x6e, 0xbd, 0xbf, 0x7e, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc7, 0x7e, 0x8e, 0xfd, 0x3e, 0x3c, 0x36, 0x3c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x3e, 0x1c, 0x7e, 0xbd, 0x66, 0x9d, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd,
|
||||
0x3e, 0xbb, 0x3e, 0xbb, 0x3e, 0xbb, 0x3e, 0xbb, 0x36, 0xbb, 0x36, 0xbb, 0x36, 0xbb, 0x36, 0xbb, 0x3e, 0xbb, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x46, 0x7c, 0x97, 0x1d, 0xf7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xef, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xf7, 0xff, 0xef, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x8e, 0xfd, 0x46, 0x5c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd,
|
||||
0x3e, 0xbb, 0x36, 0xbb, 0x36, 0xbb, 0x3e, 0xbb, 0x3e, 0xbb, 0x36, 0xbb, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x5b, 0x36, 0x5b, 0x36, 0x5c, 0x36, 0x5c, 0x3e, 0x5c, 0xd7, 0x9f, 0xf7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf7, 0xdf, 0xc7, 0x7e, 0x3e, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd,
|
||||
0x3e, 0xbb, 0x36, 0xbb, 0x36, 0xbb, 0x36, 0xbb, 0x36, 0xbb, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x5b, 0x36, 0x5b, 0x36, 0x5b, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x5c, 0x3e, 0x5c, 0xb7, 0x5e, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xaf, 0x3e, 0x3e, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd,
|
||||
0x3e, 0xbb, 0x36, 0xbb, 0x36, 0xbb, 0x36, 0xbb, 0x36, 0xbb, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x5b, 0x36, 0x5b, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x5c, 0x4e, 0x7c, 0xd7, 0x9f, 0xf7, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf7, 0xdf, 0xd7, 0x9e, 0x46, 0x3c, 0x36, 0x3c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd,
|
||||
0x3e, 0xbb, 0x36, 0xbb, 0x36, 0xbb, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x5b, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x5c, 0x4e, 0x7c, 0x9f, 0x3d, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xef, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xef, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x9f, 0x1e, 0x46, 0x3c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xbd, 0x35, 0xdd,
|
||||
0x36, 0xbb, 0x36, 0xbb, 0x36, 0xbb, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x7e, 0xfd, 0x87, 0x1d, 0x46, 0x9c, 0x36, 0x5b, 0x36, 0x5b, 0x36, 0x5b, 0x36, 0x5c, 0x4e, 0x7c, 0x86, 0xfd, 0xdf, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xf7, 0xdf, 0xb7, 0x5e, 0x56, 0x7c, 0xff, 0xff, 0xff, 0xff, 0xcf, 0x7e, 0x5e, 0x7c, 0xbf, 0x5e, 0xf7, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xd7, 0x9f, 0x86, 0xdd, 0x46, 0x3c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x35, 0xfc, 0x4e, 0x3c, 0x86, 0xbd, 0x76, 0x9d, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd,
|
||||
0x36, 0xbb, 0x36, 0xbb, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0xa7, 0x3d, 0xf7, 0xdf, 0xff, 0xff, 0xd7, 0x9e, 0xa7, 0x3d, 0x46, 0x7c, 0x36, 0x5c, 0x66, 0xbc, 0xd7, 0x9e, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xcf, 0x9e, 0x66, 0xbd, 0x3e, 0x5c, 0x36, 0x3c, 0xff, 0xff, 0xff, 0xff, 0xcf, 0x7e, 0x36, 0x3c, 0x46, 0x3c, 0x6e, 0x9d, 0xdf, 0x9f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xcf, 0x7e, 0x66, 0x7d, 0x36, 0x1c, 0x4e, 0x3c, 0xa7, 0x1e, 0xd7, 0x9f, 0xff, 0xff, 0xf7, 0xdf, 0x8e, 0xde, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xdc, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd,
|
||||
0x36, 0xbb, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x46, 0x9c, 0xbf, 0x7e, 0xf7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf7, 0xdf, 0xd7, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xef, 0xdf, 0x8e, 0xfd, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0xff, 0xff, 0xff, 0xff, 0xcf, 0x7e, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x8e, 0xfd, 0xf7, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xcf, 0x7f, 0xf7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf7, 0xdf, 0xb7, 0x3e, 0x46, 0x1d, 0x35, 0xfc, 0x35, 0xdc, 0x35, 0xdc, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd,
|
||||
0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x56, 0x9c, 0xbf, 0x7e, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe7, 0xbf, 0xaf, 0x3e, 0x46, 0x7c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0xff, 0xff, 0xff, 0xff, 0xcf, 0x7e, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x4e, 0x5d, 0xaf, 0x3e, 0xe7, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xb7, 0x3e, 0x4e, 0x3d, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd,
|
||||
0x36, 0x9b, 0x36, 0xbb, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x3e, 0x7b, 0x8f, 0x1d, 0xdf, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xd7, 0x9f, 0x5e, 0x9c, 0x3e, 0x5c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0xff, 0xff, 0xff, 0xff, 0xcf, 0x7e, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x3e, 0x1c, 0x5e, 0x5d, 0xd7, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xd7, 0x9f, 0x8e, 0xde, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0x9e,
|
||||
0x3e, 0xba, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x5b, 0xc7, 0x7e, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xbf, 0x7e, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0xff, 0xff, 0xff, 0xff, 0xcf, 0x7e, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x35, 0xfc, 0x35, 0xfc, 0xb7, 0x3e, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xb7, 0x3e, 0x3d, 0xfd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbe,
|
||||
0x25, 0xfb, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x5b, 0x36, 0x5b, 0x36, 0x5b, 0x7e, 0xfd, 0xf7, 0xff, 0xdf, 0xbf, 0xa7, 0x3e, 0xc7, 0x7e, 0xff, 0xff, 0xb7, 0x5e, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0xff, 0xff, 0xff, 0xff, 0xcf, 0x7e, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0xaf, 0x3e, 0xff, 0xff, 0xcf, 0x7f, 0xa7, 0x1e, 0xe7, 0xbf, 0xf7, 0xdf, 0x7e, 0xbe, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x2d, 0x5f,
|
||||
0x00, 0x00, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x5b, 0x36, 0x5b, 0x36, 0x5c, 0x46, 0x7c, 0x76, 0xdd, 0x56, 0x9c, 0x46, 0x5c, 0xbf, 0x7e, 0xff, 0xff, 0x9f, 0x1d, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0xff, 0xff, 0xff, 0xff, 0xcf, 0x7e, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0xa7, 0x1e, 0xff, 0xff, 0xbf, 0x5e, 0x46, 0x1d, 0x5e, 0x5d, 0x76, 0x9d, 0x45, 0xfd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x00, 0x00,
|
||||
0x00, 0x00, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x5b, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x5c, 0x4e, 0x7c, 0xcf, 0x9e, 0xff, 0xff, 0x6e, 0xbd, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x1c, 0xff, 0xff, 0xff, 0xff, 0xcf, 0x7e, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x8e, 0xde, 0xff, 0xff, 0xc7, 0x5f, 0x46, 0x1d, 0x35, 0xfd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0x9d, 0x35, 0xbd, 0x00, 0x00,
|
||||
0x00, 0x00, 0x07, 0xff, 0x36, 0x9b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x5b, 0x36, 0x5b, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x5c, 0x56, 0x7c, 0xcf, 0x9e, 0xbf, 0x5e, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x1c, 0x36, 0x1c, 0x5e, 0x7d, 0xff, 0xff, 0xff, 0xff, 0xdf, 0xbf, 0x56, 0x5d, 0x36, 0x1c, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x3d, 0xfc, 0xbf, 0x5e, 0xc7, 0x5e, 0x4e, 0x1d, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0x9d, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x36, 0xbc, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x5b, 0x36, 0x5b, 0x36, 0x5b, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x5c, 0x3e, 0x5c, 0x5e, 0x9c, 0x46, 0x5c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x1c, 0x36, 0x1c, 0x76, 0xbd, 0xdf, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xd7, 0x9f, 0x76, 0x9d, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x46, 0x1d, 0x5e, 0x5d, 0x3d, 0xfd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x5b, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x1c, 0x36, 0x1c, 0xa7, 0x1e, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x96, 0xde, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0x9d, 0x35, 0xbd, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x7c, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x5b, 0x36, 0x5b, 0x36, 0x5b, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x1c, 0x36, 0x1c, 0xa7, 0x1e, 0xff, 0xff, 0xf7, 0xff, 0xcf, 0x7e, 0xff, 0xff, 0xff, 0xff, 0xdf, 0x9f, 0xcf, 0x7f, 0xff, 0xff, 0xff, 0xff, 0x8e, 0xde, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0x9d, 0x35, 0x9d, 0x35, 0x7d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x7c, 0x36, 0x7b, 0x36, 0x7c, 0x36, 0x5b, 0x36, 0x5b, 0x36, 0x5b, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0xe7, 0xbf, 0xef, 0xdf, 0x8e, 0xde, 0x46, 0x3c, 0xff, 0xff, 0xff, 0xff, 0xcf, 0x7e, 0x46, 0x1c, 0x96, 0xfe, 0xef, 0xdf, 0xdf, 0x9f, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xdc, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0x9d, 0x35, 0x9d, 0x35, 0xbd, 0x2d, 0xdd, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x5c, 0x36, 0x7b, 0x36, 0x5b, 0x36, 0x5b, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x7e, 0xbd, 0x56, 0x5d, 0x36, 0x1c, 0x36, 0x1c, 0xff, 0xff, 0xff, 0xff, 0xcf, 0x7f, 0x35, 0xfc, 0x35, 0xfc, 0x5e, 0x5d, 0x66, 0x5d, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xdc, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0x9d, 0x35, 0x9d, 0x35, 0x9d, 0x35, 0xbe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x55, 0x36, 0x7c, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0xc7, 0x7f, 0xc7, 0x7e, 0xa7, 0x1e, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0x9d, 0x35, 0x9d, 0x35, 0x9d, 0x35, 0x9d, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x35, 0xfb, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x35, 0xfc, 0x35, 0xfc, 0x3e, 0x1c, 0x3e, 0x1c, 0x3d, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0x9d, 0x35, 0x9d, 0x35, 0x9d, 0x1d, 0x9c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x26, 0x7b, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0x9d, 0x35, 0x9d, 0x35, 0x9d, 0x35, 0x9d, 0x2d, 0x9e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x7c, 0x36, 0x5c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0x9d, 0x35, 0x9d, 0x35, 0x9d, 0x35, 0x9d, 0x35, 0x9d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x79, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xdc, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0x9d, 0x35, 0x9d, 0x35, 0x9d, 0x35, 0x9d, 0x35, 0x9d, 0x05, 0x5f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x5f, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xdc, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0x9d, 0x35, 0x9d, 0x35, 0x9d, 0x35, 0x9d, 0x35, 0x9d, 0x04, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xff, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0x9d, 0x35, 0x9d, 0x35, 0x9d, 0x35, 0x9d, 0x35, 0x9d, 0x04, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0xff, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0x9d, 0x35, 0x9d, 0x35, 0x9d, 0x35, 0xbd, 0x05, 0x5f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xff, 0x2e, 0x5d, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0x9d, 0x35, 0x9d, 0x35, 0x9d, 0x35, 0x9d, 0x2d, 0x9e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2d, 0xfd, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0x9d, 0x35, 0x9d, 0x35, 0x9d, 0x35, 0x9d, 0x1d, 0x9c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xff, 0x36, 0x3c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0x9d, 0x35, 0x9d, 0x35, 0x9d, 0x35, 0x9d, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2d, 0xfd, 0x36, 0x1c, 0x36, 0x1c, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xdc, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0x9d, 0x35, 0xbd, 0x35, 0x7d, 0x2d, 0xdf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x1d, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xdc, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0x9d, 0x35, 0x9d, 0x35, 0xbd, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x35, 0xfc, 0x35, 0xfd, 0x35, 0xfd, 0x35, 0xfc, 0x35, 0xdc, 0x35, 0xfd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x25, 0xbb, 0x2d, 0xdd, 0x2d, 0xfd, 0x35, 0xfd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xdd, 0x35, 0xbc, 0x2d, 0x5f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x08, 0x13, 0x23, 0x4e, 0x78, 0xa6, 0xcb, 0xdd, 0xee, 0xf8, 0xed, 0xdc, 0xc9, 0xa3, 0x75, 0x4c, 0x23, 0x12, 0x08, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x2c, 0x65, 0x96, 0xc5, 0xf5, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf1, 0xc2, 0x94, 0x62, 0x29, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0xaa, 0xd8, 0xf6, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf4, 0xd7, 0xa7, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x47, 0xc8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 0x41, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x40, 0xa5, 0xf3, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf1, 0xa1, 0x3b, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x8a, 0xe4, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xe0, 0x84, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x14, 0xb5, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xac, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x52, 0xe0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xd3, 0x4b, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x60, 0xe7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe3, 0x5a, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x61, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfa, 0x56, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x60, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf9, 0x56, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x52, 0xe7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe2, 0x4d, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0xe0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xd0, 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0xb5, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xa6, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x04, 0x8a, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x7c, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0xe4, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe4, 0x39, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x0c, 0xa7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xa0, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0xf3, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xed, 0x3f, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0xc8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xb0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x32, 0x00, 0x00,
|
||||
0x00, 0x05, 0xaa, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xa1, 0x00, 0x00, 0x00, 0x2c, 0xd8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xdb, 0x24, 0x00,
|
||||
0x01, 0x65, 0xf6, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf2, 0x5f, 0x00, 0x08, 0x96, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x91, 0x07,
|
||||
0x13, 0xc5, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xbc, 0x16, 0x23, 0xf5, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe6, 0x26,
|
||||
0x4e, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x3f, 0x78, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x6a,
|
||||
0xa6, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x93, 0xcc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xb2,
|
||||
0xde, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 0xee, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xce,
|
||||
0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xd7, 0xed, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xcd,
|
||||
0xdc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xbf, 0xc9, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xb0,
|
||||
0xa3, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x91, 0x75, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x68,
|
||||
0x4c, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfd, 0x3e, 0x23, 0xf1, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe4, 0x25,
|
||||
0x12, 0xc2, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xb9, 0x15, 0x08, 0x94, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x8f, 0x06,
|
||||
0x01, 0x62, 0xf4, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf1, 0x5c, 0x00, 0x00, 0x29, 0xd7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xdb, 0x20, 0x00,
|
||||
0x00, 0x03, 0xa7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x9b, 0x00, 0x00, 0x00, 0x00, 0x41, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, 0x2e, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0xc0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xa9, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0xf1, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xec, 0x39, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x0a, 0xa0, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, 0x98, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3b, 0xe0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe2, 0x33, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x03, 0x84, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, 0x75, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0xac, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x9f, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0xd3, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc6, 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4b, 0xe3, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xdd, 0x47, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x5a, 0xfa, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0x51, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x56, 0xf9, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf1, 0x4e, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x56, 0xe2, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xdd, 0x51, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x4d, 0xd0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc6, 0x47, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x17, 0xa6, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, 0x9f, 0x17, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x7c, 0xe4, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfd, 0xe2, 0x75, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x39, 0x9e, 0xed, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xec, 0x9a, 0x34, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x3f, 0xb0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, 0xa9, 0x39, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x32, 0xa1, 0xdb, 0xf2, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xf1, 0xdb, 0x9b, 0x2e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0x5f, 0x91, 0xbc, 0xe6, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfd, 0xe4, 0xb9, 0x8f, 0x5c, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x16, 0x26, 0x3f, 0x6a, 0x93, 0xb2, 0xc0, 0xce, 0xd7, 0xcd, 0xbf, 0xb0, 0x91, 0x68, 0x3e, 0x25, 0x15, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
};
|
||||
|
||||
const gfx_image_dsc_t icon5 = {
|
||||
.header.cf = GFX_COLOR_FORMAT_RGB565A8,
|
||||
.header.magic = C_ARRAY_HEADER_MAGIC,
|
||||
.header.w = 65,
|
||||
.header.h = 65,
|
||||
.data_size = 12675,
|
||||
.data = icon5_map,
|
||||
};
|
||||
@@ -0,0 +1,18 @@
|
||||
dependencies:
|
||||
esp_emote_gfx:
|
||||
version: '*'
|
||||
esp_mmap_assets:
|
||||
version: 1.*
|
||||
espressif/esp-box-3:
|
||||
rules:
|
||||
- if: ${IDF_TARGET} == esp32s3
|
||||
version: '*'
|
||||
espressif/esp32_c3_lcdkit:
|
||||
rules:
|
||||
- if: ${IDF_TARGET} == esp32c3
|
||||
version: ^1.1.*
|
||||
espressif/esp_wrover_kit:
|
||||
rules:
|
||||
- if: ${IDF_TARGET} == esp32
|
||||
version: ^1.6.*
|
||||
idf: '>=5.0'
|
||||
@@ -0,0 +1,29 @@
|
||||
/*
|
||||
* SPDX-FileCopyrightText: 2022-2025 Espressif Systems (Shanghai) CO LTD
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
/**
|
||||
* @file
|
||||
* @brief This file was generated by esp_mmap_assets, don't modify it
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "esp_mmap_assets.h"
|
||||
|
||||
#define MMAP_TEST_ASSETS_FILES 9
|
||||
#define MMAP_TEST_ASSETS_CHECKSUM 0x4FDF
|
||||
|
||||
enum MMAP_TEST_ASSETS_LISTS {
|
||||
MMAP_TEST_ASSETS_MI_1_EYE_24BIT_AAF = 0, /*!< mi_1_eye_24bit.aaf */
|
||||
MMAP_TEST_ASSETS_MI_1_EYE_4BIT_AAF = 1, /*!< mi_1_eye_4bit.aaf */
|
||||
MMAP_TEST_ASSETS_MI_1_EYE_8BIT_AAF = 2, /*!< mi_1_eye_8bit.aaf */
|
||||
MMAP_TEST_ASSETS_MI_2_EYE_24BIT_AAF = 3, /*!< mi_2_eye_24bit.aaf */
|
||||
MMAP_TEST_ASSETS_MI_2_EYE_4BIT_AAF = 4, /*!< mi_2_eye_4bit.aaf */
|
||||
MMAP_TEST_ASSETS_MI_2_EYE_8BIT_AAF = 5, /*!< mi_2_eye_8bit.aaf */
|
||||
MMAP_TEST_ASSETS_ICON1_BIN = 6, /*!< icon1.bin */
|
||||
MMAP_TEST_ASSETS_ICON5_BIN = 7, /*!< icon5.bin */
|
||||
MMAP_TEST_ASSETS_DEJAVUSANS_TTF = 8, /*!< DejaVuSans.ttf */
|
||||
};
|
||||
@@ -0,0 +1,6 @@
|
||||
# Name, Type, SubType, Offset, Size, Flags
|
||||
# Note: if you change the phy_init or app partition offset, make sure to change the offset in Kconfig.projbuild
|
||||
nvs, data, nvs, , 0x6000,
|
||||
phy_init, data, phy, , 0x1000,
|
||||
factory, app, factory, , 1500K,
|
||||
assets_8bit, data, spiffs, , 2000K,
|
||||
|
@@ -0,0 +1,15 @@
|
||||
# This file was generated using idf.py save-defconfig. It can be edited manually.
|
||||
# Espressif IoT Development Framework (ESP-IDF) 5.4.0 Project Minimal Configuration
|
||||
#
|
||||
CONFIG_IDF_TARGET="esp32s3"
|
||||
CONFIG_ESPTOOLPY_FLASHSIZE_4MB=y
|
||||
CONFIG_PARTITION_TABLE_CUSTOM=y
|
||||
CONFIG_SPIRAM=y
|
||||
CONFIG_SPIRAM_MODE_OCT=y
|
||||
CONFIG_SPIRAM_SPEED_80M=y
|
||||
CONFIG_SPIRAM_MALLOC_ALWAYSINTERNAL=128
|
||||
CONFIG_ESP_DEFAULT_CPU_FREQ_MHZ_240=y
|
||||
CONFIG_ESP_MAIN_TASK_STACK_SIZE=4096
|
||||
CONFIG_ESP_CONSOLE_USB_SERIAL_JTAG=y
|
||||
CONFIG_ESP_TASK_WDT_EN=n
|
||||
CONFIG_MMAP_FILE_NAME_LENGTH=32
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,18 @@
|
||||
dependencies:
|
||||
cmake_utilities:
|
||||
version: 0.*
|
||||
espressif/esp_new_jpeg:
|
||||
version: 0.5.*
|
||||
espressif/freetype: 2.*
|
||||
idf:
|
||||
version: '>=5.0'
|
||||
description: ESP Emote GFX - A lightweight graphics framework component for ESP-IDF,
|
||||
optimized for efficient graphics rendering.
|
||||
documentation: https://github.com/espressif/esp_emote_gfx
|
||||
issues: https://github.com/espressif/esp_emote_gfx/issues
|
||||
repository: git://github.com/espressif2022/esp_emote_gfx.git
|
||||
repository_info:
|
||||
commit_sha: 9c66fbd1bce1f1cc588a1d3e60c74faaba164ceb
|
||||
path: .
|
||||
url: https://github.com/espressif/esp_emote_gfx
|
||||
version: 1.0.0~2
|
||||
@@ -0,0 +1,199 @@
|
||||
/*
|
||||
* SPDX-FileCopyrightText: 2024 Espressif Systems (Shanghai) CO LTD
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <stdbool.h>
|
||||
#include "esp_err.h"
|
||||
#include "gfx_types.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/*********************
|
||||
* DEFINES
|
||||
*********************/
|
||||
|
||||
/**
|
||||
* @brief LVGL port configuration structure
|
||||
*/
|
||||
#define GFX_EMOTE_INIT_CONFIG() \
|
||||
{ \
|
||||
.task_priority = 4, \
|
||||
.task_stack = 7168, \
|
||||
.task_affinity = -1, \
|
||||
.task_stack_caps = MALLOC_CAP_DEFAULT, \
|
||||
}
|
||||
|
||||
typedef void *gfx_handle_t;
|
||||
|
||||
typedef enum {
|
||||
GFX_PLAYER_EVENT_IDLE = 0,
|
||||
GFX_PLAYER_EVENT_ONE_FRAME_DONE,
|
||||
GFX_PLAYER_EVENT_ALL_FRAME_DONE,
|
||||
} gfx_player_event_t;
|
||||
|
||||
typedef void (*gfx_player_flush_cb_t)(gfx_handle_t handle, int x1, int y1, int x2, int y2, const void *data);
|
||||
|
||||
typedef void (*gfx_player_update_cb_t)(gfx_handle_t handle, gfx_player_event_t event);
|
||||
|
||||
typedef struct {
|
||||
gfx_player_flush_cb_t flush_cb; ///< Callback function for flushing decoded data
|
||||
gfx_player_update_cb_t update_cb; ///< Callback function for updating player
|
||||
void *user_data; ///< User data
|
||||
struct {
|
||||
unsigned char swap:1;
|
||||
unsigned char double_buffer:1;
|
||||
unsigned char buff_dma:1;
|
||||
unsigned char buff_spiram:1;
|
||||
} flags;
|
||||
|
||||
uint32_t h_res; ///< Screen width in pixels
|
||||
uint32_t v_res; ///< Screen height in pixels
|
||||
uint32_t fps; ///< Target frame rate (frames per second)
|
||||
|
||||
/* Buffer configuration */
|
||||
struct {
|
||||
void *buf1; ///< Frame buffer 1 (NULL for internal allocation)
|
||||
void *buf2; ///< Frame buffer 2 (NULL for internal allocation)
|
||||
size_t buf_pixels; ///< Size of each buffer in pixels (0 for auto-calculation)
|
||||
} buffers;
|
||||
|
||||
struct {
|
||||
int task_priority; ///< Task priority (1-20)
|
||||
int task_stack; ///< Task stack size in bytes
|
||||
int task_affinity; ///< CPU core ID (-1: no affinity, 0: core 0, 1: core 1)
|
||||
unsigned task_stack_caps; /*!< LVGL task stack memory capabilities (see esp_heap_caps.h) */
|
||||
} task;
|
||||
} gfx_core_config_t;
|
||||
|
||||
/**********************
|
||||
* GLOBAL PROTOTYPES
|
||||
**********************/
|
||||
|
||||
/*=====================
|
||||
* Core initialization
|
||||
*====================*/
|
||||
|
||||
/**
|
||||
* @brief Initialize graphics context
|
||||
*
|
||||
* @param cfg Graphics configuration (includes buffer configuration)
|
||||
* @return gfx_handle_t Graphics handle, NULL on error
|
||||
*
|
||||
* @note Buffer configuration:
|
||||
* - If cfg.buffers.buf1 and cfg.buffers.buf2 are NULL, internal buffers will be allocated
|
||||
* - If buffers are provided, external buffers will be used (user must manage memory)
|
||||
* - cfg.buffers.buf_pixels can be 0 for auto-calculation based on resolution
|
||||
*
|
||||
* @example Using internal buffers:
|
||||
* @code
|
||||
* gfx_core_config_t cfg = {
|
||||
* .h_res = 320,
|
||||
* .v_res = 240,
|
||||
* .fps = 30,
|
||||
* .buffers = {
|
||||
* .buf1 = NULL,
|
||||
* .buf2 = NULL,
|
||||
* .buf_pixels = 0, // Auto-calculate
|
||||
* },
|
||||
* .task = GFX_EMOTE_INIT_CONFIG(),
|
||||
* };
|
||||
* gfx_handle_t handle = gfx_emote_init(&cfg);
|
||||
* @endcode
|
||||
*
|
||||
* @example Using external buffers:
|
||||
* @code
|
||||
* uint16_t my_buf1[320 * 40]; // 320x40 pixels
|
||||
* uint16_t my_buf2[320 * 40];
|
||||
*
|
||||
* gfx_core_config_t cfg = {
|
||||
* .h_res = 320,
|
||||
* .v_res = 240,
|
||||
* .fps = 30,
|
||||
* .buffers = {
|
||||
* .buf1 = my_buf1,
|
||||
* .buf2 = my_buf2,
|
||||
* .buf_pixels = 320 * 40,
|
||||
* },
|
||||
* .task = GFX_EMOTE_INIT_CONFIG(),
|
||||
* };
|
||||
* gfx_handle_t handle = gfx_emote_init(&cfg);
|
||||
* @endcode
|
||||
*/
|
||||
gfx_handle_t gfx_emote_init(const gfx_core_config_t *cfg);
|
||||
|
||||
/**
|
||||
* @brief Deinitialize graphics context
|
||||
*
|
||||
* @param handle Graphics handle
|
||||
*/
|
||||
void gfx_emote_deinit(gfx_handle_t handle);
|
||||
|
||||
/**
|
||||
* @brief Check if flush is ready
|
||||
*
|
||||
* @param handle Graphics handle
|
||||
* @param swap_act_buf Whether to swap the active buffer
|
||||
* @return bool True if the flush is ready, false otherwise
|
||||
*/
|
||||
bool gfx_emote_flush_ready(gfx_handle_t handle, bool swap_act_buf);
|
||||
|
||||
/**
|
||||
* @brief Get the user data of the graphics context
|
||||
*
|
||||
* @param handle Graphics handle
|
||||
* @return void* User data
|
||||
*/
|
||||
void *gfx_emote_get_user_data(gfx_handle_t handle);
|
||||
|
||||
/**
|
||||
* @brief Get screen dimensions from graphics handle
|
||||
*
|
||||
* @param handle Graphics handle
|
||||
* @param width Pointer to store screen width
|
||||
* @param height Pointer to store screen height
|
||||
* @return esp_err_t ESP_OK on success, otherwise an error code
|
||||
*/
|
||||
esp_err_t gfx_emote_get_screen_size(gfx_handle_t handle, uint32_t *width, uint32_t *height);
|
||||
|
||||
/**
|
||||
* @brief Lock the recursive render mutex to prevent rendering during external operations
|
||||
*
|
||||
* @param handle Graphics handle
|
||||
* @return esp_err_t ESP_OK on success, otherwise an error code
|
||||
*/
|
||||
esp_err_t gfx_emote_lock(gfx_handle_t handle);
|
||||
|
||||
/**
|
||||
* @brief Unlock the recursive render mutex after external operations
|
||||
*
|
||||
* @param handle Graphics handle
|
||||
* @return esp_err_t ESP_OK on success, otherwise an error code
|
||||
*/
|
||||
esp_err_t gfx_emote_unlock(gfx_handle_t handle);
|
||||
|
||||
/**
|
||||
* @brief Set the default background color for frame buffers
|
||||
*
|
||||
* @param handle Graphics handle
|
||||
* @param color Default background color in RGB565 format
|
||||
* @return esp_err_t ESP_OK on success, otherwise an error code
|
||||
*/
|
||||
esp_err_t gfx_emote_set_bg_color(gfx_handle_t handle, gfx_color_t color);
|
||||
|
||||
/**
|
||||
* @brief Check if the system is currently flushing the last block
|
||||
*
|
||||
* @param handle Graphics handle
|
||||
* @return bool True if flushing the last block, false otherwise
|
||||
*/
|
||||
bool gfx_emote_is_flushing_last(gfx_handle_t handle);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
@@ -0,0 +1,149 @@
|
||||
/*
|
||||
* SPDX-FileCopyrightText: 2024 Espressif Systems (Shanghai) CO LTD
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "gfx_types.h"
|
||||
#include "gfx_core.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/*********************
|
||||
* DEFINES
|
||||
*********************/
|
||||
|
||||
/* Object types */
|
||||
#define GFX_OBJ_TYPE_IMAGE 0x01
|
||||
#define GFX_OBJ_TYPE_LABEL 0x02
|
||||
#define GFX_OBJ_TYPE_ANIMATION 0x03
|
||||
|
||||
/* Alignment constants (similar to LVGL) */
|
||||
#define GFX_ALIGN_DEFAULT 0x00
|
||||
#define GFX_ALIGN_TOP_LEFT 0x00
|
||||
#define GFX_ALIGN_TOP_MID 0x01
|
||||
#define GFX_ALIGN_TOP_RIGHT 0x02
|
||||
#define GFX_ALIGN_LEFT_MID 0x03
|
||||
#define GFX_ALIGN_CENTER 0x04
|
||||
#define GFX_ALIGN_RIGHT_MID 0x05
|
||||
#define GFX_ALIGN_BOTTOM_LEFT 0x06
|
||||
#define GFX_ALIGN_BOTTOM_MID 0x07
|
||||
#define GFX_ALIGN_BOTTOM_RIGHT 0x08
|
||||
#define GFX_ALIGN_OUT_TOP_LEFT 0x09
|
||||
#define GFX_ALIGN_OUT_TOP_MID 0x0A
|
||||
#define GFX_ALIGN_OUT_TOP_RIGHT 0x0B
|
||||
#define GFX_ALIGN_OUT_LEFT_TOP 0x0C
|
||||
#define GFX_ALIGN_OUT_LEFT_MID 0x0D
|
||||
#define GFX_ALIGN_OUT_LEFT_BOTTOM 0x0E
|
||||
#define GFX_ALIGN_OUT_RIGHT_TOP 0x0F
|
||||
#define GFX_ALIGN_OUT_RIGHT_MID 0x10
|
||||
#define GFX_ALIGN_OUT_RIGHT_BOTTOM 0x11
|
||||
#define GFX_ALIGN_OUT_BOTTOM_LEFT 0x12
|
||||
#define GFX_ALIGN_OUT_BOTTOM_MID 0x13
|
||||
#define GFX_ALIGN_OUT_BOTTOM_RIGHT 0x14
|
||||
|
||||
/**********************
|
||||
* TYPEDEFS
|
||||
**********************/
|
||||
|
||||
/* Graphics object structure */
|
||||
typedef struct gfx_obj {
|
||||
void *src; /**< Source data (image, label, etc.) */
|
||||
int type; /**< Object type */
|
||||
gfx_coord_t x; /**< X position */
|
||||
gfx_coord_t y; /**< Y position */
|
||||
uint16_t width; /**< Object width */
|
||||
uint16_t height; /**< Object height */
|
||||
bool is_visible; /**< Object visibility */
|
||||
bool is_dirty; /**< Object dirty flag */
|
||||
uint8_t align_type; /**< Alignment type (see GFX_ALIGN_* constants) */
|
||||
gfx_coord_t align_x_ofs; /**< X offset for alignment */
|
||||
gfx_coord_t align_y_ofs; /**< Y offset for alignment */
|
||||
bool use_align; /**< Whether to use alignment instead of absolute position */
|
||||
gfx_handle_t parent_handle; /**< Parent graphics handle */
|
||||
} gfx_obj_t;
|
||||
|
||||
/**********************
|
||||
* GLOBAL PROTOTYPES
|
||||
**********************/
|
||||
|
||||
/*=====================
|
||||
* Object setter functions
|
||||
*====================*/
|
||||
|
||||
/**
|
||||
* @brief Set the position of an object
|
||||
* @param obj Pointer to the object
|
||||
* @param x X coordinate
|
||||
* @param y Y coordinate
|
||||
*/
|
||||
void gfx_obj_set_pos(gfx_obj_t *obj, gfx_coord_t x, gfx_coord_t y);
|
||||
|
||||
/**
|
||||
* @brief Set the size of an object
|
||||
* @param obj Pointer to the object
|
||||
* @param w Width
|
||||
* @param h Height
|
||||
*/
|
||||
void gfx_obj_set_size(gfx_obj_t *obj, uint16_t w, uint16_t h);
|
||||
|
||||
/**
|
||||
* @brief Align an object relative to the screen or another object
|
||||
* @param obj Pointer to the object to align
|
||||
* @param align Alignment type (see GFX_ALIGN_* constants)
|
||||
* @param x_ofs X offset from the alignment position
|
||||
* @param y_ofs Y offset from the alignment position
|
||||
*/
|
||||
void gfx_obj_align(gfx_obj_t *obj, uint8_t align, gfx_coord_t x_ofs, gfx_coord_t y_ofs);
|
||||
|
||||
/**
|
||||
* @brief Set object visibility
|
||||
* @param obj Object to set visibility for
|
||||
* @param visible True to make object visible, false to hide
|
||||
*/
|
||||
void gfx_obj_set_visible(gfx_obj_t *obj, bool visible);
|
||||
|
||||
/**
|
||||
* @brief Get object visibility
|
||||
* @param obj Object to check visibility for
|
||||
* @return True if object is visible, false if hidden
|
||||
*/
|
||||
bool gfx_obj_get_visible(gfx_obj_t *obj);
|
||||
|
||||
/*=====================
|
||||
* Object getter functions
|
||||
*====================*/
|
||||
|
||||
/**
|
||||
* @brief Get the position of an object
|
||||
* @param obj Pointer to the object
|
||||
* @param x Pointer to store X coordinate
|
||||
* @param y Pointer to store Y coordinate
|
||||
*/
|
||||
void gfx_obj_get_pos(gfx_obj_t *obj, gfx_coord_t *x, gfx_coord_t *y);
|
||||
|
||||
/**
|
||||
* @brief Get the size of an object
|
||||
* @param obj Pointer to the object
|
||||
* @param w Pointer to store width
|
||||
* @param h Pointer to store height
|
||||
*/
|
||||
void gfx_obj_get_size(gfx_obj_t *obj, uint16_t *w, uint16_t *h);
|
||||
|
||||
/*=====================
|
||||
* Object management functions
|
||||
*====================*/
|
||||
|
||||
/**
|
||||
* @brief Delete an object
|
||||
* @param obj Pointer to the object to delete
|
||||
*/
|
||||
void gfx_obj_delete(gfx_obj_t *obj);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
@@ -0,0 +1,108 @@
|
||||
/*
|
||||
* SPDX-FileCopyrightText: 2024 Espressif Systems (Shanghai) CO LTD
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "gfx_types.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/*********************
|
||||
* DEFINES
|
||||
*********************/
|
||||
|
||||
/**********************
|
||||
* TYPEDEFS
|
||||
**********************/
|
||||
|
||||
/* Timer callback function type */
|
||||
typedef void (*gfx_timer_cb_t)(void *);
|
||||
|
||||
/* Timer handle type for external use */
|
||||
typedef void* gfx_timer_handle_t;
|
||||
|
||||
/**********************
|
||||
* GLOBAL PROTOTYPES
|
||||
**********************/
|
||||
|
||||
/*=====================
|
||||
* Timer functions
|
||||
*====================*/
|
||||
|
||||
/**
|
||||
* @brief Create a new timer
|
||||
* @param handle Player handle
|
||||
* @param timer_cb Timer callback function
|
||||
* @param period Timer period in milliseconds
|
||||
* @param user_data User data passed to callback
|
||||
* @return Timer handle, NULL on error
|
||||
*/
|
||||
gfx_timer_handle_t gfx_timer_create(void *handle, gfx_timer_cb_t timer_cb, uint32_t period, void *user_data);
|
||||
|
||||
/**
|
||||
* @brief Delete a timer
|
||||
* @param handle Player handle
|
||||
* @param timer Timer handle to delete
|
||||
*/
|
||||
void gfx_timer_delete(void *handle, gfx_timer_handle_t timer);
|
||||
|
||||
/**
|
||||
* @brief Pause a timer
|
||||
* @param timer Timer handle to pause
|
||||
*/
|
||||
void gfx_timer_pause(gfx_timer_handle_t timer);
|
||||
|
||||
/**
|
||||
* @brief Resume a timer
|
||||
* @param timer Timer handle to resume
|
||||
*/
|
||||
void gfx_timer_resume(gfx_timer_handle_t timer);
|
||||
|
||||
/**
|
||||
* @brief Set timer repeat count
|
||||
* @param timer Timer handle to modify
|
||||
* @param repeat_count Number of times to repeat (-1 for infinite)
|
||||
*/
|
||||
void gfx_timer_set_repeat_count(gfx_timer_handle_t timer, int32_t repeat_count);
|
||||
|
||||
/**
|
||||
* @brief Set timer period
|
||||
* @param timer Timer handle to modify
|
||||
* @param period New period in milliseconds
|
||||
*/
|
||||
void gfx_timer_set_period(gfx_timer_handle_t timer, uint32_t period);
|
||||
|
||||
/**
|
||||
* @brief Reset a timer
|
||||
* @param timer Timer handle to reset
|
||||
*/
|
||||
void gfx_timer_reset(gfx_timer_handle_t timer);
|
||||
|
||||
/**
|
||||
* @brief Get current system tick
|
||||
* @return Current tick value in milliseconds
|
||||
*/
|
||||
uint32_t gfx_timer_tick_get(void);
|
||||
|
||||
/**
|
||||
* @brief Calculate elapsed time since previous tick
|
||||
* @param prev_tick Previous tick value
|
||||
* @return Elapsed time in milliseconds
|
||||
*/
|
||||
uint32_t gfx_timer_tick_elaps(uint32_t prev_tick);
|
||||
|
||||
/**
|
||||
* @brief Get actual FPS from timer manager
|
||||
* @param handle Player handle
|
||||
* @return Actual FPS value, 0 if handle is invalid
|
||||
*/
|
||||
uint32_t gfx_timer_get_actual_fps(void *handle);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
@@ -0,0 +1,61 @@
|
||||
/*
|
||||
* SPDX-FileCopyrightText: 2024 Espressif Systems (Shanghai) CO LTD
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "esp_err.h"
|
||||
#include "stdbool.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/*********************
|
||||
* DEFINES
|
||||
*********************/
|
||||
|
||||
/**********************
|
||||
* TYPEDEFS
|
||||
**********************/
|
||||
|
||||
/* Basic types */
|
||||
typedef uint8_t gfx_opa_t; /**< Opacity (0-255) */
|
||||
typedef int16_t gfx_coord_t; /**< Coordinate type */
|
||||
|
||||
/* Color type with full member for compatibility */
|
||||
typedef union {
|
||||
uint16_t full; /**< Full 16-bit color value */
|
||||
} gfx_color_t;
|
||||
|
||||
/* Area structure */
|
||||
typedef struct {
|
||||
gfx_coord_t x1;
|
||||
gfx_coord_t y1;
|
||||
gfx_coord_t x2;
|
||||
gfx_coord_t y2;
|
||||
} gfx_area_t;
|
||||
|
||||
/**********************
|
||||
* GLOBAL PROTOTYPES
|
||||
**********************/
|
||||
|
||||
/**
|
||||
* @brief Convert a 32-bit hexadecimal color to gfx_color_t
|
||||
* @param c The 32-bit hexadecimal color to convert
|
||||
* @return Converted color in gfx_color_t type
|
||||
*/
|
||||
gfx_color_t gfx_color_hex(uint32_t c);
|
||||
|
||||
|
||||
/**********************
|
||||
* MACROS
|
||||
**********************/
|
||||
|
||||
#define GFX_COLOR_HEX(color) ((gfx_color_t)gfx_color_hex(color))
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
@@ -0,0 +1,51 @@
|
||||
/*
|
||||
* SPDX-FileCopyrightText: 2024 Espressif Systems (Shanghai) CO LTD
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
/**
|
||||
* @file gfx.h
|
||||
* @brief Graphics Framework (GFX) - Main header file
|
||||
*
|
||||
* This header file includes all the public APIs for the GFX framework.
|
||||
* The framework provides:
|
||||
* - Object system for images and labels
|
||||
* - Drawing functions for rendering to buffers
|
||||
* - Color utilities and type definitions
|
||||
* - Software blending capabilities
|
||||
*/
|
||||
|
||||
#include "core/gfx_types.h"
|
||||
#include "core/gfx_core.h"
|
||||
#include "core/gfx_timer.h"
|
||||
#include "core/gfx_obj.h"
|
||||
#include "widget/gfx_img.h"
|
||||
#include "widget/gfx_label.h"
|
||||
#include "widget/gfx_anim.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/*********************
|
||||
* DEFINES
|
||||
*********************/
|
||||
|
||||
/**********************
|
||||
* TYPEDEFS
|
||||
**********************/
|
||||
|
||||
/**********************
|
||||
* GLOBAL PROTOTYPES
|
||||
**********************/
|
||||
|
||||
/*=====================
|
||||
* Main API
|
||||
*====================*/
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
@@ -0,0 +1,85 @@
|
||||
/*
|
||||
* SPDX-FileCopyrightText: 2024 Espressif Systems (Shanghai) CO LTD
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "core/gfx_types.h"
|
||||
#include "core/gfx_core.h"
|
||||
#include "core/gfx_obj.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/*********************
|
||||
* DEFINES
|
||||
*********************/
|
||||
|
||||
/**********************
|
||||
* GLOBAL PROTOTYPES
|
||||
**********************/
|
||||
|
||||
/*=====================
|
||||
* Animation object creation
|
||||
*====================*/
|
||||
|
||||
/**
|
||||
* @brief Create an animation object
|
||||
* @param handle Animation player handle
|
||||
* @return Pointer to the created animation object
|
||||
*/
|
||||
gfx_obj_t * gfx_anim_create(gfx_handle_t handle);
|
||||
|
||||
/*=====================
|
||||
* Animation setter functions
|
||||
*====================*/
|
||||
|
||||
/**
|
||||
* @brief Set the source data for an animation object
|
||||
* @param obj Pointer to the animation object
|
||||
* @param src_data Source data
|
||||
* @param src_len Source data length
|
||||
* @return ESP_OK on success, error code otherwise
|
||||
*/
|
||||
esp_err_t gfx_anim_set_src(gfx_obj_t *obj, const void *src_data, size_t src_len);
|
||||
|
||||
/**
|
||||
* @brief Set the segment for an animation object
|
||||
* @param obj Pointer to the animation object
|
||||
* @param start Start frame index
|
||||
* @param end End frame index
|
||||
* @param fps Frames per second
|
||||
* @param repeat Whether to repeat the animation
|
||||
* @return ESP_OK on success, error code otherwise
|
||||
*/
|
||||
esp_err_t gfx_anim_set_segment(gfx_obj_t *obj, uint32_t start, uint32_t end, uint32_t fps, bool repeat);
|
||||
|
||||
/**
|
||||
* @brief Start the animation
|
||||
* @param obj Pointer to the animation object
|
||||
* @return ESP_OK on success, error code otherwise
|
||||
*/
|
||||
esp_err_t gfx_anim_start(gfx_obj_t *obj);
|
||||
|
||||
/**
|
||||
* @brief Stop the animation
|
||||
* @param obj Pointer to the animation object
|
||||
* @return ESP_OK on success, error code otherwise
|
||||
*/
|
||||
esp_err_t gfx_anim_stop(gfx_obj_t *obj);
|
||||
|
||||
/**
|
||||
* @brief Set mirror display for an animation object
|
||||
* @param obj Pointer to the animation object
|
||||
* @param enabled Whether to enable mirror display
|
||||
* @param offset Mirror offset in pixels
|
||||
* @return ESP_OK on success, error code otherwise
|
||||
*/
|
||||
esp_err_t gfx_anim_set_mirror(gfx_obj_t *obj, bool enabled, int16_t offset);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
@@ -0,0 +1,80 @@
|
||||
/*
|
||||
* SPDX-FileCopyrightText: 2024 Espressif Systems (Shanghai) CO LTD
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "core/gfx_types.h"
|
||||
#include "core/gfx_obj.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/*********************
|
||||
* DEFINES
|
||||
*********************/
|
||||
|
||||
/* Magic numbers for image headers */
|
||||
#define C_ARRAY_HEADER_MAGIC 0x19
|
||||
|
||||
/**********************
|
||||
* TYPEDEFS
|
||||
**********************/
|
||||
|
||||
/* Color format enumeration - simplified for public use */
|
||||
typedef enum {
|
||||
GFX_COLOR_FORMAT_RGB565A8 = 0x0A,
|
||||
} gfx_color_format_t;
|
||||
|
||||
typedef struct {
|
||||
uint32_t magic: 8; /**< Magic number. Must be GFX_IMAGE_HEADER_MAGIC */
|
||||
uint32_t cf : 8; /**< Color format: See `gfx_color_format_t` */
|
||||
uint32_t flags: 16; /**< Image flags */
|
||||
uint32_t w: 16; /**< Width of the image */
|
||||
uint32_t h: 16; /**< Height of the image */
|
||||
uint32_t stride: 16; /**< Number of bytes in a row */
|
||||
uint32_t reserved: 16; /**< Reserved for future use */
|
||||
} gfx_image_header_t;
|
||||
|
||||
/* Image descriptor structure - compatible with LVGL */
|
||||
typedef struct {
|
||||
gfx_image_header_t header; /**< A header describing the basics of the image */
|
||||
uint32_t data_size; /**< Size of the image in bytes */
|
||||
const uint8_t * data; /**< Pointer to the data of the image */
|
||||
const void * reserved; /**< Reserved field for future use */
|
||||
const void * reserved_2; /**< Reserved field for future use */
|
||||
} gfx_image_dsc_t;
|
||||
|
||||
/**********************
|
||||
* GLOBAL PROTOTYPES
|
||||
**********************/
|
||||
|
||||
/*=====================
|
||||
* Image object creation
|
||||
*====================*/
|
||||
|
||||
/**
|
||||
* @brief Create an image object
|
||||
* @param handle Animation player handle
|
||||
* @return Pointer to the created image object
|
||||
*/
|
||||
gfx_obj_t * gfx_img_create(gfx_handle_t handle);
|
||||
|
||||
/*=====================
|
||||
* Image setter functions
|
||||
*====================*/
|
||||
|
||||
/**
|
||||
* @brief Set the source data for an image object
|
||||
* @param obj Pointer to the image object
|
||||
* @param src Pointer to the image source data
|
||||
* @return Pointer to the object
|
||||
*/
|
||||
gfx_obj_t * gfx_img_set_src(gfx_obj_t *obj, void *src);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
@@ -0,0 +1,190 @@
|
||||
/*
|
||||
* SPDX-FileCopyrightText: 2024 Espressif Systems (Shanghai) CO LTD
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "core/gfx_types.h"
|
||||
#include "core/gfx_core.h"
|
||||
#include "core/gfx_obj.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/*********************
|
||||
* DEFINES
|
||||
*********************/
|
||||
|
||||
/* Font handle type - hides internal FreeType implementation */
|
||||
typedef void *gfx_font_t;
|
||||
|
||||
/* Label configuration structure */
|
||||
typedef struct {
|
||||
const char * name; /**< The name of the font file */
|
||||
const void * mem; /**< The pointer to the font file */
|
||||
size_t mem_size; /**< The size of the memory */
|
||||
} gfx_label_cfg_t;
|
||||
|
||||
/**********************
|
||||
* TYPEDEFS
|
||||
**********************/
|
||||
|
||||
/**
|
||||
* Text alignment enumeration (similar to LVGL)
|
||||
*/
|
||||
typedef enum {
|
||||
GFX_TEXT_ALIGN_AUTO, /**< Align text auto */
|
||||
GFX_TEXT_ALIGN_LEFT, /**< Align text to left */
|
||||
GFX_TEXT_ALIGN_CENTER, /**< Align text to center */
|
||||
GFX_TEXT_ALIGN_RIGHT, /**< Align text to right */
|
||||
} gfx_text_align_t;
|
||||
|
||||
/**
|
||||
* Long text mode enumeration (similar to LVGL)
|
||||
*/
|
||||
typedef enum {
|
||||
GFX_LABEL_LONG_WRAP, /**< Break the long lines (word wrap) */
|
||||
GFX_LABEL_LONG_SCROLL, /**< Make the text scrolling horizontally */
|
||||
GFX_LABEL_LONG_CLIP, /**< Simply clip the parts which don't fit */
|
||||
} gfx_label_long_mode_t;
|
||||
|
||||
/**********************
|
||||
* GLOBAL PROTOTYPES
|
||||
**********************/
|
||||
|
||||
/*=====================
|
||||
* Label object creation
|
||||
*====================*/
|
||||
|
||||
/**
|
||||
* @brief Create a label object
|
||||
* @param handle Animation player handle
|
||||
* @param cfg Font configuration
|
||||
* @return Pointer to the created label object
|
||||
*/
|
||||
gfx_obj_t * gfx_label_create(gfx_handle_t handle);
|
||||
|
||||
/**
|
||||
* @brief Create a new font
|
||||
* @param handle Animation player handle
|
||||
* @param cfg Font configuration
|
||||
* @param ret_font Pointer to store the font handle
|
||||
* @return ESP_OK on success, error code otherwise
|
||||
*/
|
||||
esp_err_t gfx_label_new_font(gfx_handle_t handle, const gfx_label_cfg_t *cfg, gfx_font_t *ret_font);
|
||||
|
||||
/*=====================
|
||||
* Label setter functions
|
||||
*====================*/
|
||||
|
||||
/**
|
||||
* @brief Set the text for a label object
|
||||
* @param obj Pointer to the label object
|
||||
* @param text Text string to display
|
||||
* @return ESP_OK on success, error code otherwise
|
||||
*/
|
||||
esp_err_t gfx_label_set_text(gfx_obj_t *obj, const char *text);
|
||||
|
||||
/**
|
||||
* @brief Set the text for a label object with format
|
||||
* @param obj Pointer to the label object
|
||||
* @param fmt Format string
|
||||
* @return ESP_OK on success, error code otherwise
|
||||
*/
|
||||
esp_err_t gfx_label_set_text_fmt(gfx_obj_t * obj, const char * fmt, ...);
|
||||
|
||||
/**
|
||||
* @brief Set the color for a label object
|
||||
* @param obj Pointer to the label object
|
||||
* @param color Color value
|
||||
* @return ESP_OK on success, error code otherwise
|
||||
*/
|
||||
esp_err_t gfx_label_set_color(gfx_obj_t *obj, gfx_color_t color);
|
||||
|
||||
/**
|
||||
* @brief Set the background color for a label object
|
||||
* @param obj Pointer to the label object
|
||||
* @param bg_color Background color value
|
||||
* @return ESP_OK on success, error code otherwise
|
||||
*/
|
||||
esp_err_t gfx_label_set_bg_color(gfx_obj_t *obj, gfx_color_t bg_color);
|
||||
|
||||
/**
|
||||
* @brief Enable or disable background for a label object
|
||||
* @param obj Pointer to the label object
|
||||
* @param enable True to enable background, false to disable
|
||||
* @return ESP_OK on success, error code otherwise
|
||||
*/
|
||||
esp_err_t gfx_label_set_bg_enable(gfx_obj_t *obj, bool enable);
|
||||
|
||||
/**
|
||||
* @brief Set the opacity for a label object
|
||||
* @param obj Pointer to the label object
|
||||
* @param opa Opacity value (0-255)
|
||||
* @return ESP_OK on success, error code otherwise
|
||||
*/
|
||||
esp_err_t gfx_label_set_opa(gfx_obj_t *obj, gfx_opa_t opa);
|
||||
|
||||
/**
|
||||
* @brief Set the font size for a label object
|
||||
* @param obj Pointer to the label object
|
||||
* @param font_size Font size in points
|
||||
* @return ESP_OK on success, error code otherwise
|
||||
*/
|
||||
esp_err_t gfx_label_set_font_size(gfx_obj_t *obj, uint8_t font_size);
|
||||
|
||||
/**
|
||||
* @brief Set the font for a label object
|
||||
* @param obj Pointer to the label object
|
||||
* @param font Font handle
|
||||
*/
|
||||
esp_err_t gfx_label_set_font(gfx_obj_t *obj, gfx_font_t font);
|
||||
|
||||
/**
|
||||
* @brief Set the text alignment for a label object
|
||||
* @param obj Pointer to the label object
|
||||
* @param align Text alignment value
|
||||
* @return ESP_OK on success, error code otherwise
|
||||
*/
|
||||
esp_err_t gfx_label_set_text_align(gfx_obj_t *obj, gfx_text_align_t align);
|
||||
|
||||
/**
|
||||
* @brief Set the long text mode for a label object
|
||||
* @param obj Pointer to the label object
|
||||
* @param long_mode Long text handling mode (wrap, scroll, or clip)
|
||||
* @return ESP_OK on success, error code otherwise
|
||||
*/
|
||||
esp_err_t gfx_label_set_long_mode(gfx_obj_t *obj, gfx_label_long_mode_t long_mode);
|
||||
|
||||
/**
|
||||
* @brief Set the line spacing for a label object
|
||||
* @param obj Pointer to the label object
|
||||
* @param spacing Line spacing in pixels
|
||||
* @return ESP_OK on success, error code otherwise
|
||||
*/
|
||||
esp_err_t gfx_label_set_line_spacing(gfx_obj_t *obj, uint16_t spacing);
|
||||
|
||||
/**
|
||||
* @brief Set the horizontal scrolling speed for a label object
|
||||
* @param obj Pointer to the label object
|
||||
* @param speed_ms Scrolling speed in milliseconds per pixel
|
||||
* @note Only effective when long_mode is GFX_LABEL_LONG_SCROLL
|
||||
* @return ESP_OK on success, error code otherwise
|
||||
*/
|
||||
esp_err_t gfx_label_set_scroll_speed(gfx_obj_t *obj, uint32_t speed_ms);
|
||||
|
||||
/**
|
||||
* @brief Set whether scrolling should loop continuously
|
||||
* @param obj Pointer to the label object
|
||||
* @param loop True to enable continuous looping, false for one-time scroll
|
||||
* @note Only effective when long_mode is GFX_LABEL_LONG_SCROLL
|
||||
* @return ESP_OK on success, error code otherwise
|
||||
*/
|
||||
esp_err_t gfx_label_set_scroll_loop(gfx_obj_t *obj, bool loop);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
@@ -0,0 +1,60 @@
|
||||
/*
|
||||
* SPDX-FileCopyrightText: 2024 Espressif Systems (Shanghai) CO LTD
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "core/gfx_types.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/*********************
|
||||
* DEFINES
|
||||
*********************/
|
||||
gfx_color_t gfx_blend_color_mix(gfx_color_t c1, gfx_color_t c2, uint8_t mix);
|
||||
|
||||
/**********************
|
||||
* GLOBAL PROTOTYPES
|
||||
**********************/
|
||||
|
||||
/*=====================
|
||||
* Software blending functions
|
||||
*====================*/
|
||||
|
||||
/**
|
||||
* @brief Draw a blended color onto a destination buffer
|
||||
* @param dest_buf Pointer to the destination buffer where the color will be drawn
|
||||
* @param dest_stride Stride (width) of the destination buffer
|
||||
* @param color The color to draw in gfx_color_t type
|
||||
* @param opa The opacity of the color to draw (0-255)
|
||||
* @param mask Pointer to the mask buffer, if any
|
||||
* @param clip_area Pointer to the clipping area, which limits the area to draw
|
||||
* @param mask_stride Stride (width) of the mask buffer
|
||||
*/
|
||||
void gfx_sw_blend_draw(gfx_color_t *dest_buf, gfx_coord_t dest_stride, gfx_color_t color, gfx_opa_t opa,
|
||||
const gfx_opa_t *mask, gfx_area_t *clip_area, gfx_coord_t mask_stride, bool swap);
|
||||
|
||||
/**
|
||||
* @brief Draw a blended image onto a destination buffer
|
||||
* @param dest_buf Pointer to the destination buffer where the image will be drawn
|
||||
* @param dest_stride Stride (width) of the destination buffer
|
||||
* @param src_buf Pointer to the source image buffer
|
||||
* @param src_stride Stride (width) of the source image buffer
|
||||
* @param mask Pointer to the mask buffer, if any
|
||||
* @param mask_stride Stride (width) of the mask buffer
|
||||
* @param clip_area Pointer to the clipping area, which limits the area to draw
|
||||
* @param opa The opacity of the image to draw (0-255)
|
||||
* @param swap Whether to swap the color format
|
||||
*/
|
||||
void gfx_sw_blend_img_draw(gfx_color_t *dest_buf, gfx_coord_t dest_stride,
|
||||
const gfx_color_t *src_buf, gfx_coord_t src_stride,
|
||||
const gfx_opa_t *mask, gfx_coord_t mask_stride,
|
||||
gfx_area_t *clip_area, gfx_opa_t opa, bool swap);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
@@ -0,0 +1,131 @@
|
||||
/*
|
||||
* SPDX-FileCopyrightText: 2024 Espressif Systems (Shanghai) CO LTD
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "freertos/FreeRTOS.h"
|
||||
#include "freertos/semphr.h"
|
||||
#include "freertos/event_groups.h"
|
||||
|
||||
#include "core/gfx_types.h"
|
||||
#include "core/gfx_core.h"
|
||||
#include "core/gfx_timer_internal.h"
|
||||
#include "core/gfx_obj_internal.h"
|
||||
#include "widget/gfx_font_internal.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/*********************
|
||||
* DEFINES
|
||||
*********************/
|
||||
|
||||
/* Event bits for synchronization */
|
||||
#define NEED_DELETE BIT0
|
||||
#define DELETE_DONE BIT1
|
||||
#define WAIT_FLUSH_DONE BIT2
|
||||
|
||||
/* Animation timer constants */
|
||||
#define ANIM_NO_TIMER_READY 0xFFFFFFFF
|
||||
|
||||
/**********************
|
||||
* TYPEDEFS
|
||||
**********************/
|
||||
|
||||
/* Core context structure */
|
||||
typedef struct {
|
||||
/* Display configuration */
|
||||
struct {
|
||||
uint32_t h_res; /**< Horizontal resolution */
|
||||
uint32_t v_res; /**< Vertical resolution */
|
||||
uint32_t fb_v_res; /**< Frame buffer vertical resolution */
|
||||
struct {
|
||||
unsigned char swap:1; /**< Color swap flag */
|
||||
} flags; /**< Display flags */
|
||||
} display; /**< Display configuration */
|
||||
|
||||
/* Callback functions */
|
||||
struct {
|
||||
gfx_player_flush_cb_t flush_cb; /**< Flush callback function */
|
||||
gfx_player_update_cb_t update_cb; /**< Update callback function */
|
||||
void *user_data; /**< User data pointer */
|
||||
} callbacks; /**< Callback functions */
|
||||
|
||||
/* Timer management */
|
||||
struct {
|
||||
gfx_timer_manager_t timer_mgr; /**< Timer manager */
|
||||
} timer; /**< Timer management */
|
||||
|
||||
/* Graphics rendering */
|
||||
struct {
|
||||
gfx_ft_lib_handle_t font_lib; /**< Font library handle */
|
||||
gfx_core_child_t *child_list; /**< Child object list */
|
||||
uint16_t *buf1; /**< Frame buffer 1 */
|
||||
uint16_t *buf2; /**< Frame buffer 2 */
|
||||
uint16_t *buf_act; /**< Active frame buffer */
|
||||
size_t buf_pixels; /**< Buffer size in pixels */
|
||||
gfx_color_t bg_color; /**< Default background color */
|
||||
bool ext_bufs; /**< Whether using external buffers */
|
||||
bool flushing_last; /**< Whether flushing the last block */
|
||||
bool swap_act_buf; /**< Whether swap the active buffer */
|
||||
} disp;
|
||||
|
||||
/* Synchronization primitives */
|
||||
struct {
|
||||
SemaphoreHandle_t lock_mutex; /**< Render mutex for thread safety */
|
||||
EventGroupHandle_t event_group; /**< Event group for synchronization */
|
||||
} sync; /**< Synchronization primitives */
|
||||
} gfx_core_context_t;
|
||||
|
||||
/**********************
|
||||
* GLOBAL PROTOTYPES
|
||||
**********************/
|
||||
|
||||
/*=====================
|
||||
* Internal core functions
|
||||
*====================*/
|
||||
|
||||
/**
|
||||
* @brief Add a child element to the graphics context
|
||||
*
|
||||
* @param handle Graphics handle
|
||||
* @param type Type of the child element
|
||||
* @param src Source data pointer
|
||||
* @return esp_err_t ESP_OK on success, otherwise an error code
|
||||
*/
|
||||
esp_err_t gfx_emote_add_chlid(gfx_handle_t handle, int type, void *src);
|
||||
|
||||
/**
|
||||
* @brief Remove a child element from the graphics context
|
||||
*
|
||||
* @param handle Graphics handle
|
||||
* @param src Source data pointer to remove
|
||||
* @return esp_err_t ESP_OK on success, otherwise an error code
|
||||
*/
|
||||
esp_err_t gfx_emote_remove_child(gfx_handle_t handle, void *src);
|
||||
|
||||
/**
|
||||
* @brief Blend child objects to destination buffer
|
||||
* @param ctx Graphics context
|
||||
* @param x1 Left coordinate
|
||||
* @param y1 Top coordinate
|
||||
* @param x2 Right coordinate
|
||||
* @param y2 Bottom coordinate
|
||||
* @param dest_buf Destination buffer
|
||||
*/
|
||||
void gfx_draw_child(gfx_core_context_t *ctx, int x1, int y1, int x2, int y2, const void *dest_buf);
|
||||
|
||||
/**
|
||||
* @brief Get the font library handle from graphics context
|
||||
* @param handle Graphics handle
|
||||
* @return gfx_ft_lib_handle_t Font library handle, NULL on error
|
||||
*/
|
||||
gfx_ft_lib_handle_t gfx_get_font_lib(gfx_handle_t handle);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
@@ -0,0 +1,56 @@
|
||||
/*
|
||||
* SPDX-FileCopyrightText: 2024 Espressif Systems (Shanghai) CO LTD
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <stdint.h>
|
||||
#include "core/gfx_types.h"
|
||||
#include "core/gfx_core.h"
|
||||
#include "core/gfx_obj.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/*********************
|
||||
* DEFINES
|
||||
*********************/
|
||||
|
||||
// Default screen dimensions for alignment calculation
|
||||
#define DEFAULT_SCREEN_WIDTH 320
|
||||
#define DEFAULT_SCREEN_HEIGHT 240
|
||||
|
||||
/**********************
|
||||
* TYPEDEFS
|
||||
**********************/
|
||||
|
||||
typedef struct gfx_core_child_t {
|
||||
int type;
|
||||
void *src;
|
||||
struct gfx_core_child_t *next; // Pointer to next child in the list
|
||||
} gfx_core_child_t;
|
||||
|
||||
/**********************
|
||||
* GLOBAL PROTOTYPES
|
||||
**********************/
|
||||
|
||||
/*=====================
|
||||
* Internal alignment functions
|
||||
*====================*/
|
||||
|
||||
/**
|
||||
* @brief Calculate aligned position for an object (internal use)
|
||||
* @param obj Pointer to the object
|
||||
* @param parent_width Parent container width in pixels
|
||||
* @param parent_height Parent container height in pixels
|
||||
* @param x Pointer to store calculated X coordinate
|
||||
* @param y Pointer to store calculated Y coordinate
|
||||
*/
|
||||
void gfx_obj_calculate_aligned_position(gfx_obj_t *obj, uint32_t parent_width, uint32_t parent_height, gfx_coord_t *x, gfx_coord_t *y);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
@@ -0,0 +1,87 @@
|
||||
/*
|
||||
* SPDX-FileCopyrightText: 2024 Espressif Systems (Shanghai) CO LTD
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "core/gfx_types.h"
|
||||
#include "core/gfx_timer.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/*********************
|
||||
* DEFINES
|
||||
*********************/
|
||||
|
||||
/**********************
|
||||
* TYPEDEFS
|
||||
**********************/
|
||||
|
||||
/* Timer handle type for external use */
|
||||
typedef void* gfx_timer_handle_t;
|
||||
|
||||
/* Timer structure (internal use) */
|
||||
typedef struct gfx_timer_s {
|
||||
uint32_t period;
|
||||
uint32_t last_run;
|
||||
gfx_timer_cb_t timer_cb;
|
||||
void *user_data;
|
||||
int32_t repeat_count;
|
||||
bool paused;
|
||||
struct gfx_timer_s *next;
|
||||
} gfx_timer_t;
|
||||
|
||||
/* Timer manager structure (internal use) */
|
||||
typedef struct {
|
||||
gfx_timer_t *timer_list;
|
||||
uint32_t time_until_next;
|
||||
uint32_t last_tick;
|
||||
uint32_t fps; ///< Target FPS for timer scheduling
|
||||
uint32_t actual_fps; ///< Actual measured FPS
|
||||
/* FPS statistics */
|
||||
uint32_t fps_last_report_tick; ///< Last time FPS was reported
|
||||
uint32_t fps_report_interval_ms; ///< FPS report interval in milliseconds (default 500 ms)
|
||||
} gfx_timer_manager_t;
|
||||
|
||||
/**********************
|
||||
* GLOBAL PROTOTYPES
|
||||
**********************/
|
||||
|
||||
/*=====================
|
||||
* Internal timer functions
|
||||
*====================*/
|
||||
|
||||
/**
|
||||
* @brief Execute a timer
|
||||
* @param timer Timer to execute
|
||||
* @return true if timer was executed, false otherwise
|
||||
*/
|
||||
bool gfx_timer_exec(gfx_timer_t *timer);
|
||||
|
||||
/**
|
||||
* @brief Handle timer manager operations
|
||||
* @param timer_mgr Timer manager
|
||||
* @return Time until next timer execution
|
||||
*/
|
||||
uint32_t gfx_timer_handler(gfx_timer_manager_t *timer_mgr);
|
||||
|
||||
/**
|
||||
* @brief Initialize timer manager
|
||||
* @param timer_mgr Timer manager to initialize
|
||||
* @param fps Target FPS for timer scheduling
|
||||
*/
|
||||
void gfx_timer_manager_init(gfx_timer_manager_t *timer_mgr, uint32_t fps);
|
||||
|
||||
/**
|
||||
* @brief Deinitialize timer manager
|
||||
* @param timer_mgr Timer manager to deinitialize
|
||||
*/
|
||||
void gfx_timer_manager_deinit(gfx_timer_manager_t *timer_mgr);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
@@ -0,0 +1,75 @@
|
||||
/*
|
||||
* SPDX-FileCopyrightText: 2022-2024 Espressif Systems (Shanghai) CO LTD
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <stdint.h>
|
||||
#include "esp_err.h"
|
||||
#include "core/gfx_types.h"
|
||||
#include "decoder/gfx_aaf_format.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
typedef enum {
|
||||
GFX_AAF_FORMAT_SBMP = 0, // Split BMP format
|
||||
GFX_AAF_FORMAT_REDIRECT = 1, // Redirect format
|
||||
GFX_AAF_FORMAT_INVALID = 2
|
||||
} gfx_aaf_format_t;
|
||||
|
||||
typedef enum {
|
||||
GFX_AAF_ENCODING_RLE = 0,
|
||||
GFX_AAF_ENCODING_HUFFMAN = 1,
|
||||
GFX_AAF_ENCODING_JPEG = 2,
|
||||
GFX_AAF_ENCODING_HUFFMAN_DIRECT = 3
|
||||
} gfx_aaf_encoding_t;
|
||||
|
||||
// Image header structure
|
||||
typedef struct {
|
||||
char format[3]; // Format identifier (e.g., "_S")
|
||||
char version[6]; // Version string
|
||||
uint8_t bit_depth; // Bit depth (4 or 8)
|
||||
uint16_t width; // Image width
|
||||
uint16_t height; // Image height
|
||||
uint16_t blocks; // Number of blocks
|
||||
uint16_t block_height; // Height of each block
|
||||
uint32_t *block_len; // Data length of each block (changed from uint16_t to uint32_t)
|
||||
uint16_t data_offset; // Offset to data segment
|
||||
uint8_t *palette; // Color palette (dynamically allocated)
|
||||
int num_colors; // Number of colors in palette
|
||||
} gfx_aaf_header_t;
|
||||
|
||||
// Huffman tree node structure
|
||||
typedef struct Node {
|
||||
uint8_t is_leaf;
|
||||
uint8_t value;
|
||||
struct Node* left;
|
||||
struct Node* right;
|
||||
} Node;
|
||||
|
||||
/**
|
||||
* @brief Parse the header of an image file
|
||||
* @param data Pointer to the image data
|
||||
* @param data_len Length of the image data
|
||||
* @param header Pointer to store the parsed header information
|
||||
* @return Image format type (SBMP, REDIRECT, or INVALID)
|
||||
*/
|
||||
gfx_aaf_format_t gfx_aaf_parse_header(const uint8_t *data, size_t data_len, gfx_aaf_header_t *header);
|
||||
|
||||
gfx_color_t gfx_aaf_parse_palette(const gfx_aaf_header_t *header, uint8_t index, bool swap);
|
||||
|
||||
void gfx_aaf_calculate_offsets(const gfx_aaf_header_t *header, uint32_t *offsets);
|
||||
|
||||
void gfx_aaf_free_header(gfx_aaf_header_t *header);
|
||||
|
||||
esp_err_t gfx_aaf_huffman_decode(const uint8_t* buffer, size_t buflen, uint8_t* output, size_t* output_len);
|
||||
|
||||
esp_err_t gfx_aaf_rle_decode(const uint8_t *input, size_t input_len, uint8_t *output, size_t output_len);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
@@ -0,0 +1,30 @@
|
||||
/*
|
||||
* SPDX-FileCopyrightText: 2022-2024 Espressif Systems (Shanghai) CO LTD
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <stdint.h>
|
||||
#include "esp_err.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
typedef struct gfx_aaf_format_ctx_t *gfx_aaf_format_handle_t;
|
||||
|
||||
esp_err_t gfx_aaf_format_init(const uint8_t *data, size_t data_len, gfx_aaf_format_handle_t *ret_parser);
|
||||
|
||||
esp_err_t gfx_aaf_format_deinit(gfx_aaf_format_handle_t handle);
|
||||
|
||||
int gfx_aaf_format_get_total_frames(gfx_aaf_format_handle_t handle);
|
||||
|
||||
int gfx_aaf_format_get_frame_size(gfx_aaf_format_handle_t handle, int index);
|
||||
|
||||
const uint8_t *gfx_aaf_format_get_frame_data(gfx_aaf_format_handle_t handle, int index);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
@@ -0,0 +1,132 @@
|
||||
/*
|
||||
* SPDX-FileCopyrightText: 2024 Espressif Systems (Shanghai) CO LTD
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <stdint.h>
|
||||
#include "esp_err.h"
|
||||
#include "widget/gfx_img.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/*********************
|
||||
* DEFINES
|
||||
*********************/
|
||||
|
||||
/**
|
||||
* @brief Image format types
|
||||
*/
|
||||
typedef enum {
|
||||
GFX_IMAGE_FORMAT_UNKNOWN = 0, /**< Unknown format */
|
||||
GFX_IMAGE_FORMAT_C_ARRAY = 1, /**< C array format */
|
||||
GFX_IMAGE_FORMAT_AAF = 3, /**< AAF animation format */
|
||||
} gfx_image_format_t;
|
||||
|
||||
/* Image decoder descriptor - for internal use */
|
||||
typedef struct {
|
||||
const void * src; /**< Image source: file name or variable */
|
||||
gfx_image_header_t header; /**< Image header information */
|
||||
const uint8_t * data; /**< Decoded image data */
|
||||
uint32_t data_size; /**< Size of decoded data */
|
||||
void * user_data; /**< User data for decoder */
|
||||
} gfx_image_decoder_dsc_t;
|
||||
|
||||
/* Forward declaration for image decoder structure */
|
||||
typedef struct gfx_image_decoder_t gfx_image_decoder_t;
|
||||
|
||||
/* Image decoder structure - for internal use */
|
||||
struct gfx_image_decoder_t {
|
||||
const char * name; /**< Decoder name */
|
||||
|
||||
/**
|
||||
* Get image information from source
|
||||
* @param decoder pointer to the decoder
|
||||
* @param dsc pointer to decoder descriptor
|
||||
* @param header store the info here
|
||||
* @return ESP_OK: no error; ESP_ERR_INVALID: can't get the info
|
||||
*/
|
||||
esp_err_t (*info_cb)(gfx_image_decoder_t * decoder, gfx_image_decoder_dsc_t * dsc, gfx_image_header_t * header);
|
||||
|
||||
/**
|
||||
* Open and decode image
|
||||
* @param decoder pointer to the decoder
|
||||
* @param dsc pointer to decoder descriptor
|
||||
* @return ESP_OK: no error; ESP_ERR_INVALID: can't open the image
|
||||
*/
|
||||
esp_err_t (*open_cb)(gfx_image_decoder_t * decoder, gfx_image_decoder_dsc_t * dsc);
|
||||
|
||||
/**
|
||||
* Close image and free resources
|
||||
* @param decoder pointer to the decoder
|
||||
* @param dsc pointer to decoder descriptor
|
||||
*/
|
||||
void (*close_cb)(gfx_image_decoder_t * decoder, gfx_image_decoder_dsc_t * dsc);
|
||||
};
|
||||
|
||||
/**********************
|
||||
* GLOBAL PROTOTYPES
|
||||
**********************/
|
||||
|
||||
/*=====================
|
||||
* Image format detection (internal)
|
||||
*====================*/
|
||||
|
||||
/**
|
||||
* @brief Detect image format from source data (internal)
|
||||
* @param src Source data pointer
|
||||
* @return Format type: GFX_IMAGE_FORMAT_UNKNOWN, GFX_IMAGE_FORMAT_C_ARRAY, or GFX_IMAGE_FORMAT_AAF
|
||||
*/
|
||||
gfx_image_format_t gfx_image_detect_format(const void *src);
|
||||
|
||||
/*=====================
|
||||
* Image decoder functions (internal)
|
||||
*====================*/
|
||||
|
||||
/**
|
||||
* @brief Register an image decoder (internal)
|
||||
* @param decoder Pointer to decoder structure
|
||||
* @return ESP_OK on success, otherwise error code
|
||||
*/
|
||||
esp_err_t gfx_image_decoder_register(gfx_image_decoder_t *decoder);
|
||||
|
||||
/**
|
||||
* @brief Get image information using registered decoders (internal)
|
||||
* @param dsc Decoder descriptor
|
||||
* @param header Output header structure
|
||||
* @return ESP_OK on success, otherwise error code
|
||||
*/
|
||||
esp_err_t gfx_image_decoder_info(gfx_image_decoder_dsc_t *dsc, gfx_image_header_t *header);
|
||||
|
||||
/**
|
||||
* @brief Open and decode image using registered decoders (internal)
|
||||
* @param dsc Decoder descriptor
|
||||
* @return ESP_OK on success, otherwise error code
|
||||
*/
|
||||
esp_err_t gfx_image_decoder_open(gfx_image_decoder_dsc_t *dsc);
|
||||
|
||||
/**
|
||||
* @brief Close image decoder and free resources (internal)
|
||||
* @param dsc Decoder descriptor
|
||||
*/
|
||||
void gfx_image_decoder_close(gfx_image_decoder_dsc_t *dsc);
|
||||
|
||||
/**
|
||||
* @brief Initialize image decoder system (internal)
|
||||
* @return ESP_OK on success, otherwise error code
|
||||
*/
|
||||
esp_err_t gfx_image_decoder_init(void);
|
||||
|
||||
/**
|
||||
* @brief Deinitialize image decoder system (internal)
|
||||
* @return ESP_OK on success, otherwise error code
|
||||
*/
|
||||
esp_err_t gfx_image_decoder_deinit(void);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
@@ -0,0 +1,31 @@
|
||||
/*
|
||||
* SPDX-FileCopyrightText: 2022-2024 Espressif Systems (Shanghai) CO LTD
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "esp_err.h"
|
||||
#include "esp_jpeg_dec.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Decode JPEG data to specified output buffer
|
||||
* @param in Input JPEG data
|
||||
* @param insize Input data length
|
||||
* @param out Output buffer pointer
|
||||
* @param out_size Output buffer size
|
||||
* @param w Output image width
|
||||
* @param h Output image height
|
||||
* @param swap Whether to swap byte order (true: RGB565LE, false: RGB565BE)
|
||||
* @return ESP_OK on success, ESP_FAIL on failure
|
||||
*/
|
||||
esp_err_t gfx_jpeg_decode(const uint8_t *in, uint32_t insize, uint8_t *out, size_t out_size, uint32_t *w, uint32_t *h, bool swap);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
@@ -0,0 +1,99 @@
|
||||
/*
|
||||
* SPDX-FileCopyrightText: 2024 Espressif Systems (Shanghai) CO LTD
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "core/gfx_types.h"
|
||||
#include "core/gfx_obj.h"
|
||||
#include "core/gfx_timer.h"
|
||||
#include "widget/gfx_anim.h"
|
||||
#include "decoder/gfx_aaf_dec.h"
|
||||
#include "decoder/gfx_aaf_format.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/*********************
|
||||
* DEFINES
|
||||
*********************/
|
||||
|
||||
/**********************
|
||||
* TYPEDEFS
|
||||
**********************/
|
||||
|
||||
/* Frame processing information structure */
|
||||
typedef struct {
|
||||
/*!< Pre-parsed header information to avoid repeated parsing */
|
||||
gfx_aaf_header_t header; /*!< Pre-parsed header for current frame */
|
||||
|
||||
/*!< Pre-fetched frame data to avoid repeated fetching */
|
||||
const void *frame_data; /*!< Pre-fetched frame data for current frame */
|
||||
size_t frame_size; /*!< Size of pre-fetched frame data */
|
||||
|
||||
/*!< Pre-allocated parsing resources to avoid repeated allocation */
|
||||
uint32_t *block_offsets; /*!< Pre-allocated block offsets array */
|
||||
uint8_t *pixel_buffer; /*!< Pre-allocated pixel decode buffer */
|
||||
uint32_t *color_palette; /*!< Pre-allocated color palette cache */
|
||||
|
||||
/*!< Decoding state tracking */
|
||||
int last_block; /*!< Last decoded block index to avoid repeated decoding */
|
||||
} gfx_anim_frame_info_t;
|
||||
|
||||
typedef struct {
|
||||
uint32_t start_frame; /*!< Start frame index */
|
||||
uint32_t end_frame; /*!< End frame index */
|
||||
uint32_t current_frame; /*!< Current frame index */
|
||||
uint32_t fps; /*!< Frames per second */
|
||||
bool is_playing; /*!< Whether animation is currently playing */
|
||||
bool repeat; /*!< Whether animation should repeat */
|
||||
gfx_timer_handle_t timer; /*!< Timer handle for frame updates */
|
||||
|
||||
/*!< Frame processing information */
|
||||
gfx_aaf_format_handle_t file_desc; /*!< Animation file descriptor */
|
||||
gfx_anim_frame_info_t frame; /*!< Frame processing info */
|
||||
|
||||
/*!< Widget-specific display properties */
|
||||
bool mirror_enabled; /*!< Whether mirror display is enabled */
|
||||
int16_t mirror_offset; /*!< Mirror buffer offset for positioning */
|
||||
} gfx_anim_property_t;
|
||||
|
||||
/**********************
|
||||
* GLOBAL PROTOTYPES
|
||||
**********************/
|
||||
|
||||
/*=====================
|
||||
* Internal drawing functions
|
||||
*====================*/
|
||||
|
||||
/**
|
||||
* @brief Free frame processing information and allocated resources
|
||||
* @param frame Frame processing information structure
|
||||
*/
|
||||
void gfx_anim_free_frame_info(gfx_anim_frame_info_t *frame);
|
||||
|
||||
/**
|
||||
* @brief Preprocess animation frame data and allocate parsing resources
|
||||
* @param anim Animation property structure
|
||||
* @return true if preprocessing was successful, false otherwise
|
||||
*/
|
||||
bool gfx_anim_preprocess_frame(gfx_anim_property_t *anim);
|
||||
|
||||
/**
|
||||
* @brief Draw an animation object
|
||||
* @param obj Animation object
|
||||
* @param x1 Left coordinate
|
||||
* @param y1 Top coordinate
|
||||
* @param x2 Right coordinate
|
||||
* @param y2 Bottom coordinate
|
||||
* @param dest_buf Destination buffer
|
||||
* @param swap_color Whether to swap color format
|
||||
*/
|
||||
void gfx_draw_animation(gfx_obj_t *obj, int x1, int y1, int x2, int y2, const void *dest_buf, bool swap_color);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
@@ -0,0 +1,24 @@
|
||||
/*
|
||||
* SPDX-FileCopyrightText: 2024 Espressif Systems (Shanghai) CO LTD
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
// Common macro definitions for renderer modules
|
||||
#ifndef MAX
|
||||
#define MAX(a,b) ((a) > (b) ? (a) : (b))
|
||||
#endif
|
||||
|
||||
#ifndef MIN
|
||||
#define MIN(a,b) ((a) < (b) ? (a) : (b))
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
@@ -0,0 +1,71 @@
|
||||
/*
|
||||
* SPDX-FileCopyrightText: 2024 Espressif Systems (Shanghai) CO LTD
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
#pragma once
|
||||
|
||||
#include "esp_err.h"
|
||||
#include "core/gfx_types.h"
|
||||
#include "core/gfx_core.h"
|
||||
#include "core/gfx_obj.h"
|
||||
#include "widget/gfx_label.h"
|
||||
#include "ft2build.h"
|
||||
|
||||
#include FT_FREETYPE_H
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
// Forward declarations
|
||||
typedef void *gfx_ft_handle_t;
|
||||
typedef void *gfx_ft_lib_handle_t;
|
||||
|
||||
typedef struct face_entry {
|
||||
void *face;
|
||||
const void *mem;
|
||||
struct face_entry *next;
|
||||
} gfx_ft_face_entry_t;
|
||||
|
||||
typedef struct {
|
||||
gfx_ft_face_entry_t *ft_face_head;
|
||||
void *ft_library;
|
||||
} gfx_ft_lib_t;
|
||||
|
||||
/* Default font configuration */
|
||||
typedef struct {
|
||||
const char *name; /*!< Font name */
|
||||
const void *mem; /*!< Font data pointer */
|
||||
size_t mem_size; /*!< Font data size */
|
||||
uint16_t default_size; /*!< Default font size */
|
||||
gfx_color_t bg_color; /*!< Default font color */
|
||||
gfx_opa_t default_opa; /*!< Default opacity */
|
||||
} gfx_default_font_cfg_t;
|
||||
|
||||
// Internal function declarations
|
||||
esp_err_t gfx_ft_lib_create(gfx_ft_lib_handle_t *ret_lib);
|
||||
esp_err_t gfx_ft_lib_cleanup(gfx_ft_lib_handle_t lib_handle);
|
||||
|
||||
esp_err_t gfx_get_glphy_dsc(gfx_obj_t * obj);
|
||||
|
||||
/**
|
||||
* @brief Get default font handle (internal use)
|
||||
* @param handle Animation player handle
|
||||
* @param ret_font Pointer to store the default font handle
|
||||
* @return ESP_OK on success, error code otherwise
|
||||
*/
|
||||
esp_err_t gfx_get_default_font(gfx_handle_t handle, gfx_font_t *ret_font);
|
||||
|
||||
/**
|
||||
* @brief Get default font configuration (internal use)
|
||||
* @param font Pointer to store default font handle
|
||||
* @param size Pointer to store default font size
|
||||
* @param color Pointer to store default font color
|
||||
* @param opa Pointer to store default font opacity
|
||||
*/
|
||||
void gfx_get_default_font_config(gfx_font_t *font, uint16_t *size, gfx_color_t *color, gfx_opa_t *opa);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
@@ -0,0 +1,155 @@
|
||||
/*
|
||||
* SPDX-FileCopyrightText: 2024 Espressif Systems (Shanghai) CO LTD
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <stdint.h>
|
||||
#include <stdbool.h>
|
||||
#include "esp_err.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/*********************
|
||||
* DEFINES
|
||||
*********************/
|
||||
|
||||
#define GFX_FONT_SUBPX_NONE 0
|
||||
|
||||
/**********************
|
||||
* TYPEDEFS
|
||||
**********************/
|
||||
|
||||
/**
|
||||
* Font type enumeration
|
||||
*/
|
||||
typedef enum {
|
||||
GFX_FONT_TYPE_FREETYPE, /**< FreeType font (TTF/OTF) */
|
||||
GFX_FONT_TYPE_LVGL_C, /**< LVGL C format font */
|
||||
} gfx_font_type_t;
|
||||
|
||||
/**
|
||||
* LVGL character mapping types (from LVGL)
|
||||
*/
|
||||
typedef enum {
|
||||
GFX_FONT_FMT_TXT_CMAP_FORMAT0_TINY,
|
||||
GFX_FONT_FMT_TXT_CMAP_FORMAT0_FULL,
|
||||
GFX_FONT_FMT_TXT_CMAP_SPARSE_TINY,
|
||||
GFX_FONT_FMT_TXT_CMAP_SPARSE_FULL,
|
||||
} gfx_font_fmt_txt_cmap_type_t;
|
||||
|
||||
/**
|
||||
* LVGL glyph description structure (mirrors lv_font_fmt_txt_glyph_dsc_t)
|
||||
*/
|
||||
typedef struct {
|
||||
uint32_t bitmap_index; /**< Start index in the bitmap array */
|
||||
uint32_t adv_w; /**< Advance width */
|
||||
uint16_t box_w; /**< Width of the glyph's bounding box */
|
||||
uint16_t box_h; /**< Height of the glyph's bounding box */
|
||||
int16_t ofs_x; /**< X offset of the bounding box */
|
||||
int16_t ofs_y; /**< Y offset of the bounding box */
|
||||
} gfx_font_glyph_dsc_t;
|
||||
|
||||
/**
|
||||
* LVGL character mapping structure (mirrors lv_font_fmt_txt_cmap_t)
|
||||
*/
|
||||
typedef struct {
|
||||
uint32_t range_start; /**< First character code in this range */
|
||||
uint32_t range_length; /**< Number of characters in this range */
|
||||
uint32_t glyph_id_start; /**< First glyph ID for this range */
|
||||
const uint32_t *unicode_list; /**< List of unicode values (if sparse) */
|
||||
const void *glyph_id_ofs_list; /**< List of glyph ID offsets (if sparse) */
|
||||
uint32_t list_length; /**< Length of unicode_list and glyph_id_ofs_list */
|
||||
gfx_font_fmt_txt_cmap_type_t type; /**< Type of this character map */
|
||||
} gfx_font_cmap_t;
|
||||
|
||||
/**
|
||||
* LVGL font descriptor structure (mirrors lv_font_fmt_txt_dsc_t)
|
||||
*/
|
||||
typedef struct {
|
||||
const uint8_t *glyph_bitmap; /**< Bitmap data of all glyphs */
|
||||
const gfx_font_glyph_dsc_t *glyph_dsc; /**< Array of glyph descriptions */
|
||||
const gfx_font_cmap_t *cmaps; /**< Array of character maps */
|
||||
const void *kern_dsc; /**< Kerning data (not used yet) */
|
||||
uint16_t kern_scale; /**< Kerning scaling */
|
||||
uint16_t cmap_num; /**< Number of character maps */
|
||||
uint16_t bpp; /**< Bits per pixel */
|
||||
uint16_t kern_classes; /**< Number of kerning classes */
|
||||
uint16_t bitmap_format; /**< Bitmap format */
|
||||
} gfx_font_fmt_txt_dsc_t;
|
||||
|
||||
/**
|
||||
* LVGL font structure (mirrors lv_font_t)
|
||||
*/
|
||||
typedef struct {
|
||||
const void *get_glyph_dsc; /**< Function pointer to get glyph's data */
|
||||
const void *get_glyph_bitmap; /**< Function pointer to get glyph's bitmap */
|
||||
uint16_t line_height; /**< The maximum line height required by the font */
|
||||
uint16_t base_line; /**< Baseline measured from the bottom of the line */
|
||||
uint8_t subpx; /**< Subpixel configuration */
|
||||
int8_t underline_position; /**< Underline position */
|
||||
uint8_t underline_thickness; /**< Underline thickness */
|
||||
const gfx_font_fmt_txt_dsc_t *dsc; /**< The custom font data */
|
||||
bool static_bitmap; /**< Static bitmap flag */
|
||||
const void *fallback; /**< Fallback font */
|
||||
const void *user_data; /**< User data */
|
||||
} gfx_lvgl_font_t;
|
||||
|
||||
/**
|
||||
* Unified font handle structure
|
||||
*/
|
||||
typedef struct {
|
||||
gfx_font_type_t type; /**< Font type */
|
||||
union {
|
||||
void *freetype_face; /**< FreeType face handle */
|
||||
const gfx_lvgl_font_t *lvgl_font; /**< LVGL font structure */
|
||||
} font;
|
||||
const char *name; /**< Font name */
|
||||
} gfx_font_handle_t;
|
||||
|
||||
/**********************
|
||||
* GLOBAL PROTOTYPES
|
||||
**********************/
|
||||
|
||||
/**
|
||||
* @brief Parse LVGL C format font data
|
||||
* @param font_data Pointer to the font structure (e.g., &font_16)
|
||||
* @param font_name Name for the font
|
||||
* @param ret_handle Pointer to store the created font handle
|
||||
* @return ESP_OK on success, error code otherwise
|
||||
*/
|
||||
esp_err_t gfx_parse_lvgl_font(const gfx_lvgl_font_t *font_data, const char *font_name, gfx_font_handle_t **ret_handle);
|
||||
|
||||
/**
|
||||
* @brief Get glyph information from LVGL font
|
||||
* @param font LVGL font structure
|
||||
* @param unicode Unicode character
|
||||
* @param glyph_dsc Output glyph descriptor
|
||||
* @return true if glyph found, false otherwise
|
||||
*/
|
||||
bool gfx_lvgl_font_get_glyph_dsc(const gfx_lvgl_font_t *font, uint32_t unicode, gfx_font_glyph_dsc_t *glyph_dsc);
|
||||
|
||||
/**
|
||||
* @brief Get glyph bitmap from LVGL font
|
||||
* @param font LVGL font structure
|
||||
* @param glyph_dsc Glyph descriptor
|
||||
* @return Pointer to glyph bitmap data
|
||||
*/
|
||||
const uint8_t *gfx_lvgl_font_get_glyph_bitmap(const gfx_lvgl_font_t *font, const gfx_font_glyph_dsc_t *glyph_dsc);
|
||||
|
||||
/**
|
||||
* @brief Convert external LVGL font (like your font_16) to internal format
|
||||
* @param external_font Pointer to external font structure
|
||||
* @param font_name Name for the font
|
||||
* @param ret_handle Pointer to store the created font handle
|
||||
* @return ESP_OK on success, error code otherwise
|
||||
*/
|
||||
esp_err_t gfx_convert_external_lvgl_font(const void *external_font, const char *font_name, gfx_font_handle_t **ret_handle);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
@@ -0,0 +1,40 @@
|
||||
/*
|
||||
* SPDX-FileCopyrightText: 2024 Espressif Systems (Shanghai) CO LTD
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "core/gfx_types.h"
|
||||
#include "core/gfx_obj.h"
|
||||
#include "widget/gfx_img.h"
|
||||
#include "decoder/gfx_img_decoder.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/**********************
|
||||
* GLOBAL PROTOTYPES
|
||||
**********************/
|
||||
|
||||
/*=====================
|
||||
* Internal drawing functions
|
||||
*====================*/
|
||||
|
||||
/**
|
||||
* @brief Draw an image object (internal)
|
||||
* @param obj Image object
|
||||
* @param x1 Left coordinate
|
||||
* @param y1 Top coordinate
|
||||
* @param x2 Right coordinate
|
||||
* @param y2 Bottom coordinate
|
||||
* @param dest_buf Destination buffer
|
||||
* @param swap Whether to swap byte order
|
||||
*/
|
||||
void gfx_draw_img(gfx_obj_t *obj, int x1, int y1, int x2, int y2, const void *dest_buf, bool swap);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
@@ -0,0 +1,94 @@
|
||||
/*
|
||||
* SPDX-FileCopyrightText: 2024 Espressif Systems (Shanghai) CO LTD
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "core/gfx_types.h"
|
||||
#include "core/gfx_obj.h"
|
||||
#include "core/gfx_timer.h"
|
||||
#include "widget/gfx_label.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/*********************
|
||||
* DEFINES
|
||||
*********************/
|
||||
|
||||
/**********************
|
||||
* TYPEDEFS
|
||||
**********************/
|
||||
|
||||
/* Label property structure */
|
||||
typedef struct {
|
||||
void *face; /**< Font face handle */
|
||||
char *text; /**< Text string */
|
||||
uint8_t font_size; /**< Font size */
|
||||
gfx_color_t color; /**< Text color */
|
||||
gfx_opa_t opa; /**< Text opacity */
|
||||
gfx_color_t bg_color; /**< Background color */
|
||||
bool bg_enable; /**< Enable background */
|
||||
bool bg_dirty; /**< Background needs redraw (but not text reparse) */
|
||||
gfx_opa_t *mask; /**< Text mask buffer */
|
||||
gfx_text_align_t text_align; /**< Text alignment */
|
||||
gfx_label_long_mode_t long_mode; /**< Long text handling mode */
|
||||
uint16_t line_spacing; /**< Spacing between lines in pixels */
|
||||
|
||||
/* Cached line data for scroll optimization */
|
||||
char **cached_lines; /**< Cached parsed lines */
|
||||
int cached_line_count; /**< Number of cached lines */
|
||||
int *cached_line_widths; /**< Cached width of each line for alignment */
|
||||
|
||||
/* Horizontal scroll properties (only used when long_mode is SCROLL) */
|
||||
int32_t scroll_offset; /**< Current horizontal scroll offset */
|
||||
uint32_t scroll_speed_ms; /**< Scrolling speed in milliseconds per pixel */
|
||||
bool scroll_loop; /**< Enable continuous looping */
|
||||
bool scroll_active; /**< Is scrolling currently active */
|
||||
bool scroll_dirty; /**< Scroll position changed (needs redraw but not reparse) */
|
||||
void *scroll_timer; /**< Timer handle for scrolling animation */
|
||||
int32_t text_width; /**< Actual text width for scroll calculation */
|
||||
} gfx_label_property_t;
|
||||
|
||||
/**********************
|
||||
* GLOBAL PROTOTYPES
|
||||
**********************/
|
||||
|
||||
/*=====================
|
||||
* Internal drawing functions
|
||||
*====================*/
|
||||
|
||||
/**
|
||||
* @brief Draw a label object
|
||||
* @param obj Label object
|
||||
* @param x1 Left coordinate
|
||||
* @param y1 Top coordinate
|
||||
* @param x2 Right coordinate
|
||||
* @param y2 Bottom coordinate
|
||||
* @param dest_buf Destination buffer
|
||||
* @param swap Whether to swap the color format
|
||||
*/
|
||||
esp_err_t gfx_draw_label(gfx_obj_t *obj, int x1, int y1, int x2, int y2, const void *dest_buf, bool swap);
|
||||
|
||||
/**
|
||||
* @brief Get glyph descriptor for label rendering
|
||||
* @param obj Label object
|
||||
* @return ESP_OK on success, error code otherwise
|
||||
*/
|
||||
esp_err_t gfx_get_glphy_dsc(gfx_obj_t * obj);
|
||||
|
||||
/**
|
||||
* @brief Get default font configuration
|
||||
* @param font Font handle pointer
|
||||
* @param size Font size pointer
|
||||
* @param color Font color pointer
|
||||
* @param opa Font opacity pointer
|
||||
*/
|
||||
void gfx_get_default_font_config(gfx_font_t *font, uint16_t *size, gfx_color_t *color, gfx_opa_t *opa);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
@@ -0,0 +1,178 @@
|
||||
/*
|
||||
* SPDX-FileCopyrightText: 2024 Espressif Systems (Shanghai) CO LTD
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
#include "esp_log.h"
|
||||
#include "esp_err.h"
|
||||
|
||||
#include "core/gfx_types.h"
|
||||
#include "core/gfx_obj.h"
|
||||
|
||||
#define OPA_MAX 253 /*Opacities above this will fully cover*/
|
||||
#define OPA_TRANSP 0
|
||||
#define OPA_COVER 0xFF
|
||||
|
||||
#define FILL_NORMAL_MASK_PX(color, swap) \
|
||||
if(*mask == OPA_COVER) *dest_buf = color; \
|
||||
else *dest_buf = gfx_blend_color_mix(color, *dest_buf, *mask, swap); \
|
||||
mask++; \
|
||||
dest_buf++;
|
||||
|
||||
gfx_color_t gfx_blend_color_mix(gfx_color_t c1, gfx_color_t c2, uint8_t mix, bool swap)
|
||||
{
|
||||
gfx_color_t ret;
|
||||
|
||||
if (swap) {
|
||||
c1.full = c1.full << 8 | c1.full >> 8;
|
||||
c2.full = c2.full << 8 | c2.full >> 8;
|
||||
}
|
||||
/*Source: https://stackoverflow.com/a/50012418/1999969*/
|
||||
mix = (uint32_t)((uint32_t)mix + 4) >> 3;
|
||||
uint32_t bg = (uint32_t)((uint32_t)c2.full | ((uint32_t)c2.full << 16)) &
|
||||
0x7E0F81F; /*0b00000111111000001111100000011111*/
|
||||
uint32_t fg = (uint32_t)((uint32_t)c1.full | ((uint32_t)c1.full << 16)) & 0x7E0F81F;
|
||||
uint32_t result = ((((fg - bg) * mix) >> 5) + bg) & 0x7E0F81F;
|
||||
ret.full = (uint16_t)((result >> 16) | result);
|
||||
if (swap) {
|
||||
ret.full = ret.full << 8 | ret.full >> 8;
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
void gfx_sw_blend_draw(gfx_color_t *dest_buf, gfx_coord_t dest_stride,
|
||||
gfx_color_t color, gfx_opa_t opa,
|
||||
const gfx_opa_t *mask, gfx_area_t *clip_area, gfx_coord_t mask_stride, bool swap)
|
||||
{
|
||||
int32_t w = clip_area->x2 - clip_area->x1;
|
||||
int32_t h = clip_area->y2 - clip_area->y1;
|
||||
|
||||
int32_t x, y;
|
||||
uint32_t c32 = color.full + ((uint32_t)color.full << 16);
|
||||
|
||||
/*Only the mask matters*/
|
||||
if (opa >= OPA_MAX) {
|
||||
int32_t x_end4 = w - 4;
|
||||
|
||||
for (y = 0; y < h; y++) {
|
||||
for (x = 0; x < w && ((unsigned int)(mask) & 0x3); x++) {
|
||||
FILL_NORMAL_MASK_PX(color, swap)
|
||||
}
|
||||
|
||||
for (; x <= x_end4; x += 4) {
|
||||
uint32_t mask32 = *((uint32_t *)mask);
|
||||
if (mask32 == 0xFFFFFFFF) {
|
||||
if ((unsigned int)dest_buf & 0x3) {/*dest_buf is not 4-byte aligned*/
|
||||
*(dest_buf + 0) = color;
|
||||
uint32_t * d = (uint32_t *)(dest_buf + 1);
|
||||
*d = c32;
|
||||
*(dest_buf + 3) = color;
|
||||
} else {
|
||||
uint32_t * d = (uint32_t *)dest_buf;
|
||||
*d = c32;
|
||||
*(d + 1) = c32;
|
||||
}
|
||||
dest_buf += 4;
|
||||
mask += 4;
|
||||
} else if (mask32) {
|
||||
FILL_NORMAL_MASK_PX(color, swap)
|
||||
FILL_NORMAL_MASK_PX(color, swap)
|
||||
FILL_NORMAL_MASK_PX(color, swap)
|
||||
FILL_NORMAL_MASK_PX(color, swap)
|
||||
} else {
|
||||
mask += 4;
|
||||
dest_buf += 4;
|
||||
}
|
||||
}
|
||||
|
||||
for (; x < w ; x++) {
|
||||
FILL_NORMAL_MASK_PX(color, swap)
|
||||
}
|
||||
dest_buf += (dest_stride - w);
|
||||
mask += (mask_stride - w);
|
||||
}
|
||||
} else { /*With opacity*/
|
||||
/*Buffer the result color to avoid recalculating the same color*/
|
||||
gfx_color_t last_dest_color;
|
||||
gfx_color_t last_res_color;
|
||||
gfx_opa_t last_mask = OPA_TRANSP;
|
||||
last_dest_color.full = dest_buf[0].full;
|
||||
last_res_color.full = dest_buf[0].full;
|
||||
gfx_opa_t opa_tmp = OPA_TRANSP;
|
||||
|
||||
for (y = 0; y < h; y++) {
|
||||
for (x = 0; x < w; x++) {
|
||||
if (*mask) {
|
||||
if (*mask != last_mask) opa_tmp = *mask == OPA_COVER ? opa :
|
||||
(uint32_t)((uint32_t)(*mask) * opa) >> 8;
|
||||
if (*mask != last_mask || last_dest_color.full != dest_buf[x].full) {
|
||||
if (opa_tmp == OPA_COVER) {
|
||||
last_res_color = color;
|
||||
} else {
|
||||
last_res_color = gfx_blend_color_mix(color, dest_buf[x], opa_tmp, swap);
|
||||
}
|
||||
last_mask = *mask;
|
||||
last_dest_color.full = dest_buf[x].full;
|
||||
}
|
||||
dest_buf[x] = last_res_color;
|
||||
}
|
||||
mask++;
|
||||
}
|
||||
dest_buf += dest_stride;
|
||||
mask += (mask_stride - w);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void gfx_sw_blend_img_draw(gfx_color_t *dest_buf, gfx_coord_t dest_stride,
|
||||
const gfx_color_t *src_buf, gfx_coord_t src_stride,
|
||||
const gfx_opa_t *mask, gfx_coord_t mask_stride,
|
||||
gfx_area_t *clip_area, gfx_opa_t opa, bool swap)
|
||||
{
|
||||
int32_t w = clip_area->x2 - clip_area->x1;
|
||||
int32_t h = clip_area->y2 - clip_area->y1;
|
||||
|
||||
int32_t x, y;
|
||||
gfx_color_t last_dest_color;
|
||||
gfx_color_t last_res_color;
|
||||
gfx_color_t last_src_color;
|
||||
gfx_opa_t last_mask = OPA_TRANSP;
|
||||
last_dest_color.full = dest_buf[0].full;
|
||||
last_res_color.full = dest_buf[0].full;
|
||||
last_src_color.full = src_buf[0].full;
|
||||
gfx_opa_t opa_tmp = OPA_TRANSP;
|
||||
|
||||
for (y = 0; y < h; y++) {
|
||||
for (x = 0; x < w; x++) {
|
||||
if (mask == NULL || *mask) {
|
||||
if (mask && *mask != last_mask) {
|
||||
opa_tmp = (*mask == OPA_COVER) ? opa : (uint32_t)((uint32_t)(*mask) * opa) >> 8;
|
||||
}
|
||||
|
||||
if (mask == NULL || *mask != last_mask || last_dest_color.full != dest_buf[x].full || last_src_color.full != src_buf[x].full) {
|
||||
if (opa_tmp == OPA_COVER) {
|
||||
last_res_color = src_buf[x];
|
||||
} else {
|
||||
last_res_color = gfx_blend_color_mix(src_buf[x], dest_buf[x], opa_tmp, swap);
|
||||
}
|
||||
if (mask) {
|
||||
last_mask = *mask;
|
||||
}
|
||||
last_dest_color.full = dest_buf[x].full;
|
||||
last_src_color.full = src_buf[x].full;
|
||||
}
|
||||
dest_buf[x] = last_res_color;
|
||||
}
|
||||
if (mask) {
|
||||
mask++;
|
||||
}
|
||||
}
|
||||
dest_buf += dest_stride;
|
||||
src_buf += src_stride;
|
||||
if (mask) {
|
||||
mask += (mask_stride - w);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,30 @@
|
||||
/*
|
||||
* SPDX-FileCopyrightText: 2024 Espressif Systems (Shanghai) CO LTD
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
#include "core/gfx_types.h"
|
||||
|
||||
/*********************
|
||||
* DEFINES
|
||||
*********************/
|
||||
|
||||
/**********************
|
||||
* TYPEDEFS
|
||||
**********************/
|
||||
|
||||
/**********************
|
||||
* STATIC PROTOTYPES
|
||||
**********************/
|
||||
|
||||
/**********************
|
||||
* GLOBAL FUNCTIONS
|
||||
**********************/
|
||||
|
||||
gfx_color_t gfx_color_hex(uint32_t c)
|
||||
{
|
||||
gfx_color_t r;
|
||||
r.full = (uint16_t)(((c & 0xF80000) >> 8) | ((c & 0xFC00) >> 5) | ((c & 0xFF) >> 3));
|
||||
return r;
|
||||
}
|
||||
@@ -0,0 +1,645 @@
|
||||
#include "freertos/FreeRTOS.h"
|
||||
#include "freertos/task.h"
|
||||
#include "freertos/semphr.h"
|
||||
#include <string.h>
|
||||
#include "esp_timer.h"
|
||||
#include "esp_err.h"
|
||||
#include "esp_log.h"
|
||||
#include "esp_check.h"
|
||||
#include "core/gfx_core.h"
|
||||
#include "core/gfx_core_internal.h"
|
||||
#include "core/gfx_timer.h"
|
||||
#include "core/gfx_timer_internal.h"
|
||||
#include "core/gfx_obj.h"
|
||||
#include "widget/gfx_img.h"
|
||||
#include "widget/gfx_img_internal.h"
|
||||
#include "widget/gfx_label.h"
|
||||
#include "widget/gfx_anim.h"
|
||||
#include "decoder/gfx_img_decoder.h"
|
||||
#include "core/gfx_types.h"
|
||||
#include "widget/gfx_font_internal.h"
|
||||
#include "widget/gfx_label_internal.h"
|
||||
#include "widget/gfx_anim_internal.h"
|
||||
|
||||
static const char *TAG = "gfx_core";
|
||||
|
||||
// Forward declarations
|
||||
static bool gfx_refr_handler(gfx_core_context_t *ctx);
|
||||
static bool gfx_event_handler(gfx_core_context_t *ctx);
|
||||
static bool gfx_object_handler(gfx_core_context_t *ctx);
|
||||
static esp_err_t gfx_buf_init_frame(gfx_core_context_t *ctx, const gfx_core_config_t *cfg);
|
||||
static void gfx_buf_free_frame(gfx_core_context_t *ctx);
|
||||
static uint32_t gfx_calculate_task_delay(uint32_t timer_delay);
|
||||
|
||||
/**
|
||||
* @brief Calculate task delay based on timer delay and system tick rate
|
||||
* @param timer_delay Timer delay in milliseconds
|
||||
* @return Calculated task delay in milliseconds
|
||||
*/
|
||||
static uint32_t gfx_calculate_task_delay(uint32_t timer_delay)
|
||||
{
|
||||
// Dynamic delay calculation based on tick rate
|
||||
// Ensure minimum delay to prevent busy waiting
|
||||
uint32_t min_delay_ms = (1000 / configTICK_RATE_HZ) + 1; // At least one tick + 1ms
|
||||
|
||||
if (timer_delay == ANIM_NO_TIMER_READY) {
|
||||
return (min_delay_ms > 5) ? min_delay_ms : 5;
|
||||
} else {
|
||||
return (timer_delay < min_delay_ms) ? min_delay_ms : timer_delay;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Handle system events and user requests
|
||||
* @param ctx Player context
|
||||
* @return true if event was handled, false otherwise
|
||||
*/
|
||||
static bool gfx_event_handler(gfx_core_context_t *ctx)
|
||||
{
|
||||
EventBits_t event_bits = xEventGroupWaitBits(ctx->sync.event_group,
|
||||
NEED_DELETE, pdTRUE, pdFALSE, pdMS_TO_TICKS(0));
|
||||
|
||||
if (event_bits & NEED_DELETE) {
|
||||
ESP_LOGW(TAG, "Player deletion requested");
|
||||
xEventGroupSetBits(ctx->sync.event_group, DELETE_DONE);
|
||||
vTaskDeleteWithCaps(NULL);
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Handle object updates and preprocessing
|
||||
* @param ctx Player context
|
||||
* @return true if objects need rendering, false otherwise
|
||||
*/
|
||||
static bool gfx_object_handler(gfx_core_context_t *ctx)
|
||||
{
|
||||
if (ctx->disp.child_list == NULL) {
|
||||
return false;
|
||||
}
|
||||
|
||||
bool needs_rendering = false;
|
||||
gfx_core_child_t *child_node = ctx->disp.child_list;
|
||||
|
||||
while (child_node != NULL) {
|
||||
gfx_obj_t *obj = (gfx_obj_t *)child_node->src;
|
||||
if (obj->type == GFX_OBJ_TYPE_ANIMATION) {
|
||||
gfx_anim_property_t *anim = (gfx_anim_property_t *)obj->src;
|
||||
if (anim && anim->file_desc && anim->is_playing) {
|
||||
needs_rendering = true;
|
||||
|
||||
if (!gfx_anim_preprocess_frame(anim)) {
|
||||
continue;
|
||||
}
|
||||
}
|
||||
}
|
||||
child_node = child_node->next;
|
||||
}
|
||||
|
||||
return needs_rendering;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Calculate frame buffer height from buffer size
|
||||
* @param ctx Player context
|
||||
* @return Frame buffer height in pixels, or 0 if invalid
|
||||
*/
|
||||
static int gfx_buf_get_height(gfx_core_context_t *ctx)
|
||||
{
|
||||
if (ctx->disp.buf_pixels == 0 || ctx->display.h_res == 0) {
|
||||
return 0;
|
||||
}
|
||||
return ctx->disp.buf_pixels / (ctx->display.h_res);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Initialize frame buffers (internal or external)
|
||||
* @param ctx Player context
|
||||
* @param cfg Graphics configuration (includes buffer configuration)
|
||||
* @return esp_err_t ESP_OK on success, otherwise error code
|
||||
*/
|
||||
static esp_err_t gfx_buf_init_frame(gfx_core_context_t *ctx, const gfx_core_config_t *cfg)
|
||||
{
|
||||
ESP_LOGD(TAG, "cfg.buffers.buf1=%p, cfg.buffers.buf2=%p", cfg->buffers.buf1, cfg->buffers.buf2);
|
||||
if (cfg->buffers.buf1 != NULL) {
|
||||
ctx->disp.buf1 = (uint16_t *)cfg->buffers.buf1;
|
||||
ctx->disp.buf2 = (uint16_t *)cfg->buffers.buf2;
|
||||
|
||||
if (cfg->buffers.buf_pixels > 0) {
|
||||
ctx->disp.buf_pixels = cfg->buffers.buf_pixels;
|
||||
} else {
|
||||
ESP_LOGW(TAG, "cfg.buffers.buf_pixels is 0, use default size");
|
||||
ctx->disp.buf_pixels = ctx->display.h_res * ctx->display.v_res;
|
||||
}
|
||||
|
||||
ctx->disp.ext_bufs = true;
|
||||
} else {
|
||||
// Allocate internal buffers
|
||||
uint32_t buff_caps = 0;
|
||||
#if SOC_PSRAM_DMA_CAPABLE == 0
|
||||
if (cfg->flags.buff_dma && cfg->flags.buff_spiram) {
|
||||
ESP_LOGW(TAG, "Alloc DMA capable buffer in SPIRAM is not supported!");
|
||||
return ESP_ERR_NOT_SUPPORTED;
|
||||
}
|
||||
#endif
|
||||
if (cfg->flags.buff_dma) {
|
||||
buff_caps |= MALLOC_CAP_DMA;
|
||||
}
|
||||
if (cfg->flags.buff_spiram) {
|
||||
buff_caps |= MALLOC_CAP_SPIRAM;
|
||||
}
|
||||
if (buff_caps == 0) {
|
||||
buff_caps |= MALLOC_CAP_DEFAULT;
|
||||
}
|
||||
|
||||
size_t buf_pixels = cfg->buffers.buf_pixels > 0 ? cfg->buffers.buf_pixels : ctx->display.h_res * ctx->display.v_res;
|
||||
|
||||
ctx->disp.buf1 = (uint16_t *)heap_caps_malloc(buf_pixels * sizeof(uint16_t), buff_caps);
|
||||
if (!ctx->disp.buf1) {
|
||||
ESP_LOGE(TAG, "Failed to allocate frame buffer 1");
|
||||
return ESP_ERR_NO_MEM;
|
||||
}
|
||||
|
||||
if (cfg->flags.double_buffer) {
|
||||
ctx->disp.buf2 = (uint16_t *)heap_caps_malloc(buf_pixels * sizeof(uint16_t), buff_caps);
|
||||
if (!ctx->disp.buf2) {
|
||||
ESP_LOGE(TAG, "Failed to allocate frame buffer 2");
|
||||
free(ctx->disp.buf1);
|
||||
ctx->disp.buf1 = NULL;
|
||||
return ESP_ERR_NO_MEM;
|
||||
}
|
||||
}
|
||||
|
||||
ctx->disp.buf_pixels = buf_pixels;
|
||||
ctx->disp.ext_bufs = false;
|
||||
}
|
||||
ESP_LOGD(TAG, "Use frame buffers: buf1=%p, buf2=%p, size=%zu, ext_bufs=%d",
|
||||
ctx->disp.buf1, ctx->disp.buf2, ctx->disp.buf_pixels, ctx->disp.ext_bufs);
|
||||
|
||||
ctx->disp.buf_act = ctx->disp.buf1;
|
||||
ctx->disp.bg_color.full = 0x0000;
|
||||
return ESP_OK;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Free frame buffers (only internal buffers)
|
||||
* @param ctx Player context
|
||||
*/
|
||||
static void gfx_buf_free_frame(gfx_core_context_t *ctx)
|
||||
{
|
||||
// Only free buffers if they were internally allocated
|
||||
if (!ctx->disp.ext_bufs) {
|
||||
if (ctx->disp.buf1) {
|
||||
free(ctx->disp.buf1);
|
||||
ctx->disp.buf1 = NULL;
|
||||
}
|
||||
if (ctx->disp.buf2) {
|
||||
free(ctx->disp.buf2);
|
||||
ctx->disp.buf2 = NULL;
|
||||
}
|
||||
ESP_LOGI(TAG, "Freed internal frame buffers");
|
||||
} else {
|
||||
ESP_LOGI(TAG, "External buffers provided by user, not freeing");
|
||||
}
|
||||
ctx->disp.buf_pixels = 0;
|
||||
ctx->disp.ext_bufs = false;
|
||||
}
|
||||
|
||||
gfx_ft_lib_handle_t gfx_get_font_lib(gfx_handle_t handle)
|
||||
{
|
||||
gfx_core_context_t *ctx = (gfx_core_context_t *)handle;
|
||||
if (ctx == NULL) {
|
||||
ESP_LOGE(TAG, "gfx_get_font_lib: ctx is NULL");
|
||||
return NULL;
|
||||
}
|
||||
return ctx->disp.font_lib;
|
||||
}
|
||||
|
||||
void gfx_draw_child(gfx_core_context_t *ctx, int x1, int y1, int x2, int y2, const void *dest_buf)
|
||||
{
|
||||
if (ctx->disp.child_list == NULL) {
|
||||
ESP_LOGD(TAG, "no child objects");
|
||||
return;
|
||||
}
|
||||
|
||||
gfx_core_child_t *child_node = ctx->disp.child_list;
|
||||
bool swap = ctx->display.flags.swap;
|
||||
|
||||
while (child_node != NULL) {
|
||||
gfx_obj_t *obj = (gfx_obj_t *)child_node->src;
|
||||
|
||||
// Skip rendering if object is not visible
|
||||
if (!obj->is_visible) {
|
||||
child_node = child_node->next;
|
||||
continue;
|
||||
}
|
||||
|
||||
if (obj->type == GFX_OBJ_TYPE_LABEL) {
|
||||
gfx_draw_label(obj, x1, y1, x2, y2, dest_buf, swap);
|
||||
} else if (obj->type == GFX_OBJ_TYPE_IMAGE) {
|
||||
gfx_draw_img(obj, x1, y1, x2, y2, dest_buf, swap);
|
||||
} else if (obj->type == GFX_OBJ_TYPE_ANIMATION) {
|
||||
gfx_draw_animation(obj, x1, y1, x2, y2, dest_buf, swap);
|
||||
}
|
||||
|
||||
child_node = child_node->next;
|
||||
}
|
||||
}
|
||||
|
||||
static void gfx_core_task(void *arg)
|
||||
{
|
||||
gfx_core_context_t *ctx = (gfx_core_context_t *)arg;
|
||||
uint32_t timer_delay = 1; // Default delay
|
||||
|
||||
while (1) {
|
||||
if (ctx->sync.lock_mutex && xSemaphoreTakeRecursive(ctx->sync.lock_mutex, portMAX_DELAY) == pdTRUE) {
|
||||
if (gfx_event_handler(ctx)) {
|
||||
// Event was handled (e.g., deletion request), task will be deleted
|
||||
xSemaphoreGiveRecursive(ctx->sync.lock_mutex);
|
||||
break;
|
||||
}
|
||||
|
||||
timer_delay = gfx_timer_handler(&ctx->timer.timer_mgr);
|
||||
|
||||
if (ctx->disp.child_list != NULL) {
|
||||
gfx_refr_handler(ctx);
|
||||
}
|
||||
|
||||
uint32_t task_delay = gfx_calculate_task_delay(timer_delay);
|
||||
|
||||
xSemaphoreGiveRecursive(ctx->sync.lock_mutex);
|
||||
vTaskDelay(pdMS_TO_TICKS(task_delay));
|
||||
} else {
|
||||
ESP_LOGW(TAG, "Failed to acquire mutex, retrying...");
|
||||
vTaskDelay(pdMS_TO_TICKS(1));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
bool gfx_emote_flush_ready(gfx_handle_t handle, bool swap_act_buf)
|
||||
{
|
||||
gfx_core_context_t *ctx = (gfx_core_context_t *)handle;
|
||||
if (ctx == NULL) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (xPortInIsrContext()) {
|
||||
BaseType_t pxHigherPriorityTaskWoken = pdFALSE;
|
||||
ctx->disp.swap_act_buf = swap_act_buf;
|
||||
bool result = xEventGroupSetBitsFromISR(ctx->sync.event_group, WAIT_FLUSH_DONE, &pxHigherPriorityTaskWoken);
|
||||
if (pxHigherPriorityTaskWoken == pdTRUE) {
|
||||
portYIELD_FROM_ISR();
|
||||
}
|
||||
return result;
|
||||
} else {
|
||||
ctx->disp.swap_act_buf = swap_act_buf;
|
||||
return xEventGroupSetBits(ctx->sync.event_group, WAIT_FLUSH_DONE);
|
||||
}
|
||||
}
|
||||
|
||||
void *gfx_emote_get_user_data(gfx_handle_t handle)
|
||||
{
|
||||
gfx_core_context_t *ctx = (gfx_core_context_t *)handle;
|
||||
if (ctx == NULL) {
|
||||
ESP_LOGE(TAG, "Invalid graphics context");
|
||||
return NULL;
|
||||
}
|
||||
|
||||
return ctx->callbacks.user_data;
|
||||
}
|
||||
|
||||
esp_err_t gfx_emote_get_screen_size(gfx_handle_t handle, uint32_t *width, uint32_t *height)
|
||||
{
|
||||
gfx_core_context_t *ctx = (gfx_core_context_t *)handle;
|
||||
if (ctx == NULL) {
|
||||
ESP_LOGE(TAG, "Invalid graphics context");
|
||||
return ESP_ERR_INVALID_ARG;
|
||||
}
|
||||
|
||||
if (width == NULL || height == NULL) {
|
||||
ESP_LOGE(TAG, "Invalid parameters");
|
||||
return ESP_ERR_INVALID_ARG;
|
||||
}
|
||||
|
||||
*width = ctx->display.h_res;
|
||||
*height = ctx->display.v_res;
|
||||
|
||||
return ESP_OK;
|
||||
}
|
||||
|
||||
gfx_handle_t gfx_emote_init(const gfx_core_config_t *cfg)
|
||||
{
|
||||
if (!cfg) {
|
||||
ESP_LOGE(TAG, "Invalid configuration");
|
||||
return NULL;
|
||||
}
|
||||
|
||||
gfx_core_context_t *disp_ctx = malloc(sizeof(gfx_core_context_t));
|
||||
if (!disp_ctx) {
|
||||
ESP_LOGE(TAG, "Failed to allocate player context");
|
||||
return NULL;
|
||||
}
|
||||
|
||||
// Initialize all fields to zero/NULL
|
||||
memset(disp_ctx, 0, sizeof(gfx_core_context_t));
|
||||
|
||||
disp_ctx->display.v_res = cfg->v_res;
|
||||
disp_ctx->display.h_res = cfg->h_res;
|
||||
disp_ctx->display.flags.swap = cfg->flags.swap;
|
||||
|
||||
disp_ctx->callbacks.flush_cb = cfg->flush_cb;
|
||||
disp_ctx->callbacks.update_cb = cfg->update_cb;
|
||||
disp_ctx->callbacks.user_data = cfg->user_data;
|
||||
|
||||
disp_ctx->sync.event_group = xEventGroupCreate();
|
||||
|
||||
disp_ctx->disp.child_list = NULL;
|
||||
|
||||
// Initialize frame buffers (internal or external)
|
||||
esp_err_t buffer_ret = gfx_buf_init_frame(disp_ctx, cfg);
|
||||
if (buffer_ret != ESP_OK) {
|
||||
ESP_LOGE(TAG, "Failed to initialize frame buffers");
|
||||
vEventGroupDelete(disp_ctx->sync.event_group);
|
||||
free(disp_ctx);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
// Initialize timer manager
|
||||
gfx_timer_manager_init(&disp_ctx->timer.timer_mgr, cfg->fps);
|
||||
|
||||
// Create recursive render mutex for protecting rendering operations
|
||||
disp_ctx->sync.lock_mutex = xSemaphoreCreateRecursiveMutex();
|
||||
if (disp_ctx->sync.lock_mutex == NULL) {
|
||||
ESP_LOGE(TAG, "Failed to create recursive render mutex");
|
||||
gfx_buf_free_frame(disp_ctx);
|
||||
vEventGroupDelete(disp_ctx->sync.event_group);
|
||||
free(disp_ctx);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
esp_err_t font_ret = gfx_ft_lib_create(&disp_ctx->disp.font_lib);
|
||||
if (font_ret != ESP_OK) {
|
||||
ESP_LOGE(TAG, "Failed to create font library");
|
||||
gfx_buf_free_frame(disp_ctx);
|
||||
vSemaphoreDelete(disp_ctx->sync.lock_mutex);
|
||||
vEventGroupDelete(disp_ctx->sync.event_group);
|
||||
free(disp_ctx);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
// Initialize image decoder system
|
||||
esp_err_t decoder_ret = gfx_image_decoder_init();
|
||||
if (decoder_ret != ESP_OK) {
|
||||
ESP_LOGE(TAG, "Failed to initialize image decoder system");
|
||||
gfx_ft_lib_cleanup(disp_ctx->disp.font_lib);
|
||||
gfx_buf_free_frame(disp_ctx);
|
||||
vSemaphoreDelete(disp_ctx->sync.lock_mutex);
|
||||
vEventGroupDelete(disp_ctx->sync.event_group);
|
||||
free(disp_ctx);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
const uint32_t stack_caps = cfg->task.task_stack_caps ? cfg->task.task_stack_caps : MALLOC_CAP_DEFAULT; // caps cannot be zero
|
||||
if (cfg->task.task_affinity < 0) {
|
||||
xTaskCreateWithCaps(gfx_core_task, "gfx_core", cfg->task.task_stack, disp_ctx, cfg->task.task_priority, NULL, stack_caps);
|
||||
} else {
|
||||
xTaskCreatePinnedToCoreWithCaps(gfx_core_task, "gfx_core", cfg->task.task_stack, disp_ctx, cfg->task.task_priority, NULL, cfg->task.task_affinity, stack_caps);
|
||||
}
|
||||
|
||||
return (gfx_handle_t)disp_ctx;
|
||||
}
|
||||
|
||||
void gfx_emote_deinit(gfx_handle_t handle)
|
||||
{
|
||||
gfx_core_context_t *ctx = (gfx_core_context_t *)handle;
|
||||
if (ctx == NULL) {
|
||||
ESP_LOGE(TAG, "Invalid graphics context");
|
||||
return;
|
||||
}
|
||||
|
||||
xEventGroupSetBits(ctx->sync.event_group, NEED_DELETE);
|
||||
xEventGroupWaitBits(ctx->sync.event_group, DELETE_DONE, pdTRUE, pdFALSE, portMAX_DELAY);
|
||||
|
||||
// Free all child nodes
|
||||
gfx_core_child_t *child_node = ctx->disp.child_list;
|
||||
while (child_node != NULL) {
|
||||
gfx_core_child_t *next_child = child_node->next;
|
||||
free(child_node);
|
||||
child_node = next_child;
|
||||
}
|
||||
ctx->disp.child_list = NULL;
|
||||
|
||||
// Clean up timers
|
||||
gfx_timer_manager_deinit(&ctx->timer.timer_mgr);
|
||||
|
||||
// Free frame buffers
|
||||
gfx_buf_free_frame(ctx);
|
||||
|
||||
// Delete font library
|
||||
if (ctx->disp.font_lib) {
|
||||
gfx_ft_lib_cleanup(ctx->disp.font_lib);
|
||||
ctx->disp.font_lib = NULL;
|
||||
}
|
||||
|
||||
// Delete mutex
|
||||
if (ctx->sync.lock_mutex) {
|
||||
vSemaphoreDelete(ctx->sync.lock_mutex);
|
||||
ctx->sync.lock_mutex = NULL;
|
||||
}
|
||||
|
||||
// Delete event group
|
||||
if (ctx->sync.event_group) {
|
||||
vEventGroupDelete(ctx->sync.event_group);
|
||||
ctx->sync.event_group = NULL;
|
||||
}
|
||||
|
||||
// Deinitialize image decoder system
|
||||
gfx_image_decoder_deinit();
|
||||
|
||||
// Free context
|
||||
free(ctx);
|
||||
}
|
||||
|
||||
esp_err_t gfx_emote_add_chlid(gfx_handle_t handle, int type, void *src)
|
||||
{
|
||||
gfx_core_context_t *ctx = (gfx_core_context_t *)handle;
|
||||
if (ctx == NULL || src == NULL) {
|
||||
ESP_LOGE(TAG, "Invalid parameters");
|
||||
return ESP_ERR_INVALID_ARG;
|
||||
}
|
||||
|
||||
gfx_core_child_t *new_child = (gfx_core_child_t *)malloc(sizeof(gfx_core_child_t));
|
||||
if (new_child == NULL) {
|
||||
ESP_LOGE(TAG, "Failed to allocate child node");
|
||||
return ESP_ERR_NO_MEM;
|
||||
}
|
||||
|
||||
new_child->type = type;
|
||||
new_child->src = src;
|
||||
new_child->next = NULL;
|
||||
|
||||
// Add to child list
|
||||
if (ctx->disp.child_list == NULL) {
|
||||
ctx->disp.child_list = new_child;
|
||||
} else {
|
||||
gfx_core_child_t *current = ctx->disp.child_list;
|
||||
while (current->next != NULL) {
|
||||
current = current->next;
|
||||
}
|
||||
current->next = new_child;
|
||||
}
|
||||
|
||||
ESP_LOGD(TAG, "Added child object of type %d", type);
|
||||
return ESP_OK;
|
||||
}
|
||||
|
||||
esp_err_t gfx_emote_remove_child(gfx_handle_t handle, void *src)
|
||||
{
|
||||
gfx_core_context_t *ctx = (gfx_core_context_t *)handle;
|
||||
if (ctx == NULL || src == NULL) {
|
||||
ESP_LOGE(TAG, "Invalid parameters");
|
||||
return ESP_ERR_INVALID_ARG;
|
||||
}
|
||||
|
||||
gfx_core_child_t *current = ctx->disp.child_list;
|
||||
gfx_core_child_t *prev = NULL;
|
||||
|
||||
while (current != NULL) {
|
||||
if (current->src == src) {
|
||||
if (prev == NULL) {
|
||||
ctx->disp.child_list = current->next;
|
||||
} else {
|
||||
prev->next = current->next;
|
||||
}
|
||||
|
||||
free(current);
|
||||
ESP_LOGD(TAG, "Removed child object from list");
|
||||
return ESP_OK;
|
||||
}
|
||||
prev = current;
|
||||
current = current->next;
|
||||
}
|
||||
|
||||
ESP_LOGW(TAG, "Child object not found in list");
|
||||
return ESP_ERR_NOT_FOUND;
|
||||
}
|
||||
|
||||
esp_err_t gfx_emote_lock(gfx_handle_t handle)
|
||||
{
|
||||
gfx_core_context_t *ctx = (gfx_core_context_t *)handle;
|
||||
if (ctx == NULL || ctx->sync.lock_mutex == NULL) {
|
||||
ESP_LOGE(TAG, "Invalid graphics context or mutex");
|
||||
return ESP_ERR_INVALID_ARG;
|
||||
}
|
||||
|
||||
if (xSemaphoreTakeRecursive(ctx->sync.lock_mutex, portMAX_DELAY) != pdTRUE) {
|
||||
ESP_LOGE(TAG, "Failed to acquire graphics lock");
|
||||
return ESP_ERR_TIMEOUT;
|
||||
}
|
||||
|
||||
return ESP_OK;
|
||||
}
|
||||
|
||||
esp_err_t gfx_emote_unlock(gfx_handle_t handle)
|
||||
{
|
||||
gfx_core_context_t *ctx = (gfx_core_context_t *)handle;
|
||||
if (ctx == NULL || ctx->sync.lock_mutex == NULL) {
|
||||
ESP_LOGE(TAG, "Invalid graphics context or mutex");
|
||||
return ESP_ERR_INVALID_ARG;
|
||||
}
|
||||
|
||||
if (xSemaphoreGiveRecursive(ctx->sync.lock_mutex) != pdTRUE) {
|
||||
ESP_LOGE(TAG, "Failed to release graphics lock");
|
||||
return ESP_ERR_INVALID_STATE;
|
||||
}
|
||||
|
||||
return ESP_OK;
|
||||
}
|
||||
|
||||
esp_err_t gfx_emote_set_bg_color(gfx_handle_t handle, gfx_color_t color)
|
||||
{
|
||||
gfx_core_context_t *ctx = (gfx_core_context_t *)handle;
|
||||
if (ctx == NULL) {
|
||||
ESP_LOGE(TAG, "Invalid graphics context");
|
||||
return ESP_ERR_INVALID_ARG;
|
||||
}
|
||||
|
||||
ctx->disp.bg_color = color;
|
||||
ESP_LOGD(TAG, "Set background color to 0x%04X", color.full);
|
||||
return ESP_OK;
|
||||
}
|
||||
|
||||
bool gfx_emote_is_flushing_last(gfx_handle_t handle)
|
||||
{
|
||||
gfx_core_context_t *ctx = (gfx_core_context_t *)handle;
|
||||
if (ctx == NULL) {
|
||||
ESP_LOGE(TAG, "Invalid graphics context");
|
||||
return false;
|
||||
}
|
||||
|
||||
return ctx->disp.flushing_last;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Handle rendering of all objects in the scene
|
||||
* @param ctx Player context
|
||||
* @return true if rendering was performed, false otherwise
|
||||
*/
|
||||
static bool gfx_refr_handler(gfx_core_context_t *ctx)
|
||||
{
|
||||
bool needs_rendering = gfx_object_handler(ctx);
|
||||
|
||||
if (!needs_rendering) {
|
||||
// return false;
|
||||
}
|
||||
|
||||
int block_height = gfx_buf_get_height(ctx);
|
||||
if (block_height == 0) {
|
||||
ESP_LOGE(TAG, "Invalid frame buffer size");
|
||||
return false;
|
||||
}
|
||||
|
||||
int v_res = ctx->display.v_res;
|
||||
int h_res = ctx->display.h_res;
|
||||
int total_blocks = (v_res + block_height - 1) / block_height;
|
||||
|
||||
for (int block_idx = 0; block_idx < total_blocks; block_idx++) {
|
||||
int x1 = 0;
|
||||
int x2 = h_res;
|
||||
|
||||
int y1 = block_idx * block_height;
|
||||
int y2 = ((block_idx + 1) * block_height > v_res) ? v_res : (block_idx + 1) * block_height;
|
||||
|
||||
// Set flag for last block
|
||||
ctx->disp.flushing_last = (block_idx == total_blocks - 1);
|
||||
|
||||
uint16_t *buf_act = ctx->disp.buf_act;
|
||||
|
||||
uint16_t bg_color = ctx->disp.bg_color.full;
|
||||
size_t pixels = ctx->disp.buf_pixels;
|
||||
for (size_t i = 0; i < pixels; i++) {//影响帧率
|
||||
buf_act[i] = bg_color;
|
||||
}
|
||||
|
||||
gfx_draw_child(ctx, x1, y1, x2, y2, buf_act);
|
||||
|
||||
if (ctx->callbacks.flush_cb) {
|
||||
xEventGroupClearBits(ctx->sync.event_group, WAIT_FLUSH_DONE);
|
||||
ctx->callbacks.flush_cb(ctx, x1, y1, x2, y2, buf_act);
|
||||
xEventGroupWaitBits(ctx->sync.event_group, WAIT_FLUSH_DONE, pdTRUE, pdFALSE, pdMS_TO_TICKS(20));
|
||||
}
|
||||
|
||||
if ((ctx->disp.flushing_last || ctx->disp.swap_act_buf) && ctx->disp.buf2 != NULL) {
|
||||
if (ctx->disp.buf_act == ctx->disp.buf1) {
|
||||
ctx->disp.buf_act = ctx->disp.buf2;
|
||||
} else {
|
||||
ctx->disp.buf_act = ctx->disp.buf1;
|
||||
}
|
||||
ctx->disp.swap_act_buf = false;
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
@@ -0,0 +1,762 @@
|
||||
/*
|
||||
* SPDX-FileCopyrightText: 2024 Espressif Systems (Shanghai) CO LTD
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
#include "freertos/FreeRTOS.h"
|
||||
#include "freertos/task.h"
|
||||
#include "freertos/semphr.h"
|
||||
#include <string.h>
|
||||
#include "esp_err.h"
|
||||
#include "esp_log.h"
|
||||
#include "esp_check.h"
|
||||
#include "core/gfx_core.h"
|
||||
#include "core/gfx_core_internal.h"
|
||||
#include "core/gfx_timer.h"
|
||||
#include "core/gfx_obj.h"
|
||||
#include "widget/gfx_img.h"
|
||||
#include "widget/gfx_img_internal.h"
|
||||
#include "widget/gfx_label.h"
|
||||
#include "widget/gfx_label_internal.h"
|
||||
#include "widget/gfx_anim.h"
|
||||
#include "core/gfx_types.h"
|
||||
#include "decoder/gfx_aaf_dec.h"
|
||||
#include "widget/gfx_anim_internal.h"
|
||||
#include "widget/gfx_font_internal.h"
|
||||
#include "decoder/gfx_aaf_format.h"
|
||||
#include "decoder/gfx_img_decoder.h"
|
||||
|
||||
static const char *TAG = "gfx_obj";
|
||||
|
||||
/*********************
|
||||
* DEFINES
|
||||
*********************/
|
||||
|
||||
/**********************
|
||||
* TYPEDEFS
|
||||
**********************/
|
||||
|
||||
/**********************
|
||||
* STATIC PROTOTYPES
|
||||
**********************/
|
||||
|
||||
/**********************
|
||||
* GLOBAL FUNCTIONS
|
||||
**********************/
|
||||
|
||||
/*=====================
|
||||
* Object creation
|
||||
*====================*/
|
||||
|
||||
gfx_obj_t * gfx_img_create(gfx_handle_t handle)
|
||||
{
|
||||
gfx_obj_t *obj = (gfx_obj_t *)malloc(sizeof(gfx_obj_t));
|
||||
if (obj == NULL) {
|
||||
ESP_LOGE(TAG, "Failed to allocate memory for image object");
|
||||
return NULL;
|
||||
}
|
||||
|
||||
memset(obj, 0, sizeof(gfx_obj_t));
|
||||
obj->type = GFX_OBJ_TYPE_IMAGE;
|
||||
obj->parent_handle = handle;
|
||||
obj->is_visible = true; // Default to hidden
|
||||
gfx_emote_add_chlid(handle, GFX_OBJ_TYPE_IMAGE, obj);
|
||||
ESP_LOGD(TAG, "Created image object");
|
||||
return obj;
|
||||
}
|
||||
|
||||
gfx_obj_t * gfx_label_create(gfx_handle_t handle)
|
||||
{
|
||||
gfx_obj_t *obj = (gfx_obj_t *)malloc(sizeof(gfx_obj_t));
|
||||
if (obj == NULL) {
|
||||
ESP_LOGE(TAG, "Failed to allocate memory for label object");
|
||||
return NULL;
|
||||
}
|
||||
|
||||
memset(obj, 0, sizeof(gfx_obj_t));
|
||||
obj->type = GFX_OBJ_TYPE_LABEL;
|
||||
obj->parent_handle = handle;
|
||||
obj->is_visible = true; // Default to hidden
|
||||
|
||||
gfx_label_property_t *label = (gfx_label_property_t *)malloc(sizeof(gfx_label_property_t));
|
||||
if (label == NULL) {
|
||||
ESP_LOGE(TAG, "Failed to allocate memory for label object");
|
||||
free(obj);
|
||||
return NULL;
|
||||
}
|
||||
memset(label, 0, sizeof(gfx_label_property_t));
|
||||
|
||||
// Apply default font configuration
|
||||
gfx_font_t default_font;
|
||||
uint16_t default_size;
|
||||
gfx_color_t bg_color;
|
||||
gfx_opa_t default_opa;
|
||||
|
||||
// Get default font configuration from internal function
|
||||
gfx_get_default_font_config(&default_font, &default_size, &bg_color, &default_opa);
|
||||
|
||||
label->font_size = default_size;
|
||||
label->color = bg_color;
|
||||
label->opa = default_opa;
|
||||
label->mask = NULL;
|
||||
label->bg_color = (gfx_color_t) {
|
||||
.full = 0x0000
|
||||
}; // Default: black background
|
||||
label->bg_enable = false; // Default: background disabled
|
||||
label->bg_dirty = false; // Default: background not dirty
|
||||
label->text_align = GFX_TEXT_ALIGN_LEFT; // Initialize with default left alignment
|
||||
label->long_mode = GFX_LABEL_LONG_CLIP; // Default to clipping
|
||||
label->line_spacing = 2;
|
||||
|
||||
// Initialize horizontal scroll properties
|
||||
label->scroll_offset = 0;
|
||||
label->scroll_speed_ms = 50; // Default: 50ms per pixel
|
||||
label->scroll_loop = true;
|
||||
label->scroll_active = false;
|
||||
label->scroll_dirty = false; // Default: scroll position not dirty
|
||||
label->scroll_timer = NULL;
|
||||
label->text_width = 0;
|
||||
|
||||
// Initialize cached line data
|
||||
label->cached_lines = NULL;
|
||||
label->cached_line_count = 0;
|
||||
label->cached_line_widths = NULL;
|
||||
|
||||
// Set default font automatically
|
||||
if (default_font) {
|
||||
label->face = (void *)default_font;
|
||||
}
|
||||
|
||||
obj->src = label;
|
||||
|
||||
gfx_emote_add_chlid(handle, GFX_OBJ_TYPE_LABEL, obj);
|
||||
ESP_LOGD(TAG, "Created label object with default font config");
|
||||
return obj;
|
||||
}
|
||||
|
||||
/*=====================
|
||||
* Setter functions
|
||||
*====================*/
|
||||
|
||||
gfx_obj_t * gfx_img_set_src(gfx_obj_t *obj, void *src)
|
||||
{
|
||||
if (obj == NULL) {
|
||||
ESP_LOGE(TAG, "Object is NULL");
|
||||
return NULL;
|
||||
}
|
||||
|
||||
if (obj->type != GFX_OBJ_TYPE_IMAGE) {
|
||||
ESP_LOGE(TAG, "Object is not an image type");
|
||||
return NULL;
|
||||
}
|
||||
|
||||
obj->src = src;
|
||||
|
||||
// Update object size based on image data using unified decoder
|
||||
if (src != NULL) {
|
||||
gfx_image_header_t header;
|
||||
gfx_image_decoder_dsc_t dsc = {
|
||||
.src = src,
|
||||
};
|
||||
esp_err_t ret = gfx_image_decoder_info(&dsc, &header);
|
||||
if (ret == ESP_OK) {
|
||||
obj->width = header.w;
|
||||
obj->height = header.h;
|
||||
} else {
|
||||
ESP_LOGE(TAG, "Failed to get image info from source");
|
||||
}
|
||||
}
|
||||
|
||||
ESP_LOGD(TAG, "Set image source, size: %dx%d", obj->width, obj->height);
|
||||
return obj;
|
||||
}
|
||||
|
||||
void gfx_obj_set_pos(gfx_obj_t *obj, gfx_coord_t x, gfx_coord_t y)
|
||||
{
|
||||
if (obj == NULL) {
|
||||
ESP_LOGE(TAG, "Object is NULL");
|
||||
return;
|
||||
}
|
||||
|
||||
obj->x = x;
|
||||
obj->y = y;
|
||||
obj->use_align = false;
|
||||
|
||||
ESP_LOGD(TAG, "Set object position: (%d, %d)", x, y);
|
||||
}
|
||||
|
||||
void gfx_obj_set_size(gfx_obj_t *obj, uint16_t w, uint16_t h)
|
||||
{
|
||||
if (obj == NULL) {
|
||||
ESP_LOGE(TAG, "Object is NULL");
|
||||
return;
|
||||
}
|
||||
|
||||
if (obj->type == GFX_OBJ_TYPE_ANIMATION || obj->type == GFX_OBJ_TYPE_IMAGE) {
|
||||
ESP_LOGW(TAG, "Set size for animation or image is not allowed");
|
||||
} else {
|
||||
obj->width = w;
|
||||
obj->height = h;
|
||||
}
|
||||
|
||||
ESP_LOGD(TAG, "Set object size: %dx%d", w, h);
|
||||
}
|
||||
|
||||
void gfx_obj_align(gfx_obj_t *obj, uint8_t align, gfx_coord_t x_ofs, gfx_coord_t y_ofs)
|
||||
{
|
||||
if (obj == NULL) {
|
||||
ESP_LOGE(TAG, "Object is NULL");
|
||||
return;
|
||||
}
|
||||
|
||||
if (obj->parent_handle == NULL) {
|
||||
ESP_LOGE(TAG, "Object has no parent handle");
|
||||
return;
|
||||
}
|
||||
|
||||
// Validate alignment type
|
||||
if (align > GFX_ALIGN_OUT_BOTTOM_RIGHT) {
|
||||
ESP_LOGW(TAG, "Unknown alignment type: %d", align);
|
||||
return;
|
||||
}
|
||||
|
||||
// Set alignment properties instead of directly setting position
|
||||
obj->align_type = align;
|
||||
obj->align_x_ofs = x_ofs;
|
||||
obj->align_y_ofs = y_ofs;
|
||||
obj->use_align = true;
|
||||
|
||||
ESP_LOGD(TAG, "Set object alignment: type=%d, offset=(%d, %d)", align, x_ofs, y_ofs);
|
||||
}
|
||||
|
||||
void gfx_obj_set_visible(gfx_obj_t *obj, bool visible)
|
||||
{
|
||||
if (obj == NULL) {
|
||||
ESP_LOGE(TAG, "Object is NULL");
|
||||
return;
|
||||
}
|
||||
|
||||
obj->is_visible = visible;
|
||||
ESP_LOGD(TAG, "Set object visibility: %s", visible ? "visible" : "hidden");
|
||||
}
|
||||
|
||||
bool gfx_obj_get_visible(gfx_obj_t *obj)
|
||||
{
|
||||
if (obj == NULL) {
|
||||
ESP_LOGE(TAG, "Object is NULL");
|
||||
return false;
|
||||
}
|
||||
|
||||
return obj->is_visible;
|
||||
}
|
||||
|
||||
/*=====================
|
||||
* Static helper functions
|
||||
*====================*/
|
||||
|
||||
void gfx_obj_calculate_aligned_position(gfx_obj_t *obj, uint32_t parent_width, uint32_t parent_height, gfx_coord_t *x, gfx_coord_t *y)
|
||||
{
|
||||
if (obj == NULL || x == NULL || y == NULL) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (!obj->use_align) {
|
||||
// Use absolute position if alignment is not enabled
|
||||
*x = obj->x;
|
||||
*y = obj->y;
|
||||
return;
|
||||
}
|
||||
|
||||
gfx_coord_t calculated_x = 0;
|
||||
gfx_coord_t calculated_y = 0;
|
||||
|
||||
// Calculate position based on alignment
|
||||
switch (obj->align_type) {
|
||||
case GFX_ALIGN_TOP_LEFT:
|
||||
calculated_x = obj->align_x_ofs;
|
||||
calculated_y = obj->align_y_ofs;
|
||||
break;
|
||||
case GFX_ALIGN_TOP_MID:
|
||||
calculated_x = ((gfx_coord_t)parent_width - obj->width) / 2 + obj->align_x_ofs;
|
||||
calculated_y = obj->align_y_ofs;
|
||||
break;
|
||||
case GFX_ALIGN_TOP_RIGHT:
|
||||
calculated_x = (gfx_coord_t)parent_width - obj->width + obj->align_x_ofs;
|
||||
calculated_y = obj->align_y_ofs;
|
||||
break;
|
||||
case GFX_ALIGN_LEFT_MID:
|
||||
calculated_x = obj->align_x_ofs;
|
||||
calculated_y = ((gfx_coord_t)parent_height - obj->height) / 2 + obj->align_y_ofs;
|
||||
break;
|
||||
case GFX_ALIGN_CENTER:
|
||||
calculated_x = ((gfx_coord_t)parent_width - obj->width) / 2 + obj->align_x_ofs;
|
||||
calculated_y = ((gfx_coord_t)parent_height - obj->height) / 2 + obj->align_y_ofs;
|
||||
break;
|
||||
case GFX_ALIGN_RIGHT_MID:
|
||||
calculated_x = (gfx_coord_t)parent_width - obj->width + obj->align_x_ofs;
|
||||
calculated_y = ((gfx_coord_t)parent_height - obj->height) / 2 + obj->align_y_ofs;
|
||||
break;
|
||||
case GFX_ALIGN_BOTTOM_LEFT:
|
||||
calculated_x = obj->align_x_ofs;
|
||||
calculated_y = (gfx_coord_t)parent_height - obj->height + obj->align_y_ofs;
|
||||
break;
|
||||
case GFX_ALIGN_BOTTOM_MID:
|
||||
calculated_x = ((gfx_coord_t)parent_width - obj->width) / 2 + obj->align_x_ofs;
|
||||
calculated_y = (gfx_coord_t)parent_height - obj->height + obj->align_y_ofs;
|
||||
break;
|
||||
case GFX_ALIGN_BOTTOM_RIGHT:
|
||||
calculated_x = (gfx_coord_t)parent_width - obj->width + obj->align_x_ofs;
|
||||
calculated_y = (gfx_coord_t)parent_height - obj->height + obj->align_y_ofs;
|
||||
break;
|
||||
case GFX_ALIGN_OUT_TOP_LEFT:
|
||||
calculated_x = obj->align_x_ofs;
|
||||
calculated_y = -obj->height + obj->align_y_ofs;
|
||||
break;
|
||||
case GFX_ALIGN_OUT_TOP_MID:
|
||||
calculated_x = ((gfx_coord_t)parent_width - obj->width) / 2 + obj->align_x_ofs;
|
||||
calculated_y = -obj->height + obj->align_y_ofs;
|
||||
break;
|
||||
case GFX_ALIGN_OUT_TOP_RIGHT:
|
||||
calculated_x = (gfx_coord_t)parent_width + obj->align_x_ofs;
|
||||
calculated_y = -obj->height + obj->align_y_ofs;
|
||||
break;
|
||||
case GFX_ALIGN_OUT_LEFT_TOP:
|
||||
calculated_x = -obj->width + obj->align_x_ofs;
|
||||
calculated_y = obj->align_y_ofs;
|
||||
break;
|
||||
case GFX_ALIGN_OUT_LEFT_MID:
|
||||
calculated_x = -obj->width + obj->align_x_ofs;
|
||||
calculated_y = ((gfx_coord_t)parent_height - obj->height) / 2 + obj->align_y_ofs;
|
||||
break;
|
||||
case GFX_ALIGN_OUT_LEFT_BOTTOM:
|
||||
calculated_x = -obj->width + obj->align_x_ofs;
|
||||
calculated_y = (gfx_coord_t)parent_height + obj->align_y_ofs;
|
||||
break;
|
||||
case GFX_ALIGN_OUT_RIGHT_TOP:
|
||||
calculated_x = (gfx_coord_t)parent_width + obj->align_x_ofs;
|
||||
calculated_y = obj->align_y_ofs;
|
||||
break;
|
||||
case GFX_ALIGN_OUT_RIGHT_MID:
|
||||
calculated_x = (gfx_coord_t)parent_width + obj->align_x_ofs;
|
||||
calculated_y = ((gfx_coord_t)parent_height - obj->height) / 2 + obj->align_y_ofs;
|
||||
break;
|
||||
case GFX_ALIGN_OUT_RIGHT_BOTTOM:
|
||||
calculated_x = (gfx_coord_t)parent_width + obj->align_x_ofs;
|
||||
calculated_y = (gfx_coord_t)parent_height + obj->align_y_ofs;
|
||||
break;
|
||||
case GFX_ALIGN_OUT_BOTTOM_LEFT:
|
||||
calculated_x = obj->align_x_ofs;
|
||||
calculated_y = (gfx_coord_t)parent_height + obj->align_y_ofs;
|
||||
break;
|
||||
case GFX_ALIGN_OUT_BOTTOM_MID:
|
||||
calculated_x = ((gfx_coord_t)parent_width - obj->width) / 2 + obj->align_x_ofs;
|
||||
calculated_y = (gfx_coord_t)parent_height + obj->align_y_ofs;
|
||||
break;
|
||||
case GFX_ALIGN_OUT_BOTTOM_RIGHT:
|
||||
calculated_x = (gfx_coord_t)parent_width + obj->align_x_ofs;
|
||||
calculated_y = (gfx_coord_t)parent_height + obj->align_y_ofs;
|
||||
break;
|
||||
default:
|
||||
ESP_LOGW(TAG, "Unknown alignment type: %d", obj->align_type);
|
||||
// Fall back to absolute position
|
||||
calculated_x = obj->x;
|
||||
calculated_y = obj->y;
|
||||
break;
|
||||
}
|
||||
|
||||
*x = calculated_x;
|
||||
*y = calculated_y;
|
||||
}
|
||||
|
||||
/*=====================
|
||||
* Getter functions
|
||||
*====================*/
|
||||
|
||||
void gfx_obj_get_pos(gfx_obj_t *obj, gfx_coord_t *x, gfx_coord_t *y)
|
||||
{
|
||||
if (obj == NULL || x == NULL || y == NULL) {
|
||||
ESP_LOGE(TAG, "Invalid parameters");
|
||||
return;
|
||||
}
|
||||
|
||||
*x = obj->x;
|
||||
*y = obj->y;
|
||||
}
|
||||
|
||||
void gfx_obj_get_size(gfx_obj_t *obj, uint16_t *w, uint16_t *h)
|
||||
{
|
||||
if (obj == NULL || w == NULL || h == NULL) {
|
||||
ESP_LOGE(TAG, "Invalid parameters");
|
||||
return;
|
||||
}
|
||||
|
||||
*w = obj->width;
|
||||
*h = obj->height;
|
||||
}
|
||||
|
||||
/*=====================
|
||||
* Other functions
|
||||
*====================*/
|
||||
|
||||
void gfx_obj_delete(gfx_obj_t *obj)
|
||||
{
|
||||
if (obj == NULL) {
|
||||
ESP_LOGE(TAG, "Object is NULL");
|
||||
return;
|
||||
}
|
||||
|
||||
ESP_LOGD(TAG, "Deleting object type: %d", obj->type);
|
||||
|
||||
// Remove object from parent's child list first
|
||||
if (obj->parent_handle != NULL) {
|
||||
gfx_emote_remove_child(obj->parent_handle, obj);
|
||||
}
|
||||
|
||||
if (obj->type == GFX_OBJ_TYPE_LABEL) {
|
||||
gfx_label_property_t *label = (gfx_label_property_t *)obj->src;
|
||||
if (label) {
|
||||
// Clean up scroll timer
|
||||
if (label->scroll_timer) {
|
||||
gfx_timer_delete(obj->parent_handle, label->scroll_timer);
|
||||
label->scroll_timer = NULL;
|
||||
}
|
||||
|
||||
// Clean up cached line data
|
||||
if (label->cached_lines) {
|
||||
for (int i = 0; i < label->cached_line_count; i++) {
|
||||
if (label->cached_lines[i]) {
|
||||
free(label->cached_lines[i]);
|
||||
}
|
||||
}
|
||||
free(label->cached_lines);
|
||||
label->cached_lines = NULL;
|
||||
label->cached_line_count = 0;
|
||||
}
|
||||
|
||||
// Clean up cached line widths
|
||||
if (label->cached_line_widths) {
|
||||
free(label->cached_line_widths);
|
||||
label->cached_line_widths = NULL;
|
||||
}
|
||||
|
||||
if (label->text) {
|
||||
free(label->text);
|
||||
}
|
||||
if (label->mask) {
|
||||
free(label->mask);
|
||||
}
|
||||
free(label);
|
||||
}
|
||||
} else if (obj->type == GFX_OBJ_TYPE_ANIMATION) {
|
||||
gfx_anim_property_t *anim = (gfx_anim_property_t *)obj->src;
|
||||
if (anim) {
|
||||
// Stop animation if playing
|
||||
if (anim->is_playing) {
|
||||
gfx_anim_stop(obj);
|
||||
}
|
||||
|
||||
// Delete timer
|
||||
if (anim->timer != NULL) {
|
||||
gfx_timer_delete((void *)obj->parent_handle, anim->timer);
|
||||
anim->timer = NULL;
|
||||
}
|
||||
|
||||
// Free frame processing information
|
||||
gfx_anim_free_frame_info(&anim->frame);
|
||||
|
||||
// Free file descriptor
|
||||
if (anim->file_desc) {
|
||||
gfx_aaf_format_deinit(anim->file_desc);
|
||||
}
|
||||
|
||||
free(anim);
|
||||
}
|
||||
}
|
||||
free(obj);
|
||||
}
|
||||
|
||||
/*=====================
|
||||
* Animation object functions
|
||||
*====================*/
|
||||
|
||||
static void gfx_anim_timer_callback(void *arg)
|
||||
{
|
||||
gfx_obj_t *obj = (gfx_obj_t *)arg;
|
||||
gfx_anim_property_t *anim = (gfx_anim_property_t *)obj->src;
|
||||
|
||||
if (!anim || !anim->is_playing) {
|
||||
ESP_LOGD(TAG, "anim is NULL or not playing");
|
||||
return;
|
||||
}
|
||||
|
||||
anim->current_frame++;
|
||||
ESP_LOGD("anim cb", " %lu (%lu / %lu)", anim->current_frame, anim->start_frame, anim->end_frame);
|
||||
|
||||
// Check if we've reached the end
|
||||
if (anim->current_frame > anim->end_frame) {
|
||||
if (anim->repeat) {
|
||||
ESP_LOGD(TAG, "REPEAT");
|
||||
anim->current_frame = anim->start_frame;
|
||||
} else {
|
||||
ESP_LOGD(TAG, "STOP");
|
||||
anim->is_playing = false;
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
// Mark object as dirty to trigger redraw
|
||||
obj->is_dirty = true;
|
||||
}
|
||||
|
||||
gfx_obj_t * gfx_anim_create(gfx_handle_t handle)
|
||||
{
|
||||
gfx_obj_t *obj = (gfx_obj_t *)malloc(sizeof(gfx_obj_t));
|
||||
if (obj == NULL) {
|
||||
ESP_LOGE(TAG, "Failed to allocate memory for animation object");
|
||||
return NULL;
|
||||
}
|
||||
|
||||
memset(obj, 0, sizeof(gfx_obj_t));
|
||||
obj->parent_handle = handle;
|
||||
obj->is_visible = true; // Default to hidden
|
||||
|
||||
gfx_anim_property_t *anim = (gfx_anim_property_t *)malloc(sizeof(gfx_anim_property_t));
|
||||
if (anim == NULL) {
|
||||
ESP_LOGE(TAG, "Failed to allocate memory for animation property");
|
||||
free(obj);
|
||||
return NULL;
|
||||
}
|
||||
memset(anim, 0, sizeof(gfx_anim_property_t));
|
||||
|
||||
// Initialize animation properties
|
||||
anim->file_desc = NULL;
|
||||
anim->start_frame = 0;
|
||||
anim->end_frame = 0;
|
||||
anim->current_frame = 0;
|
||||
anim->fps = 30; // Default FPS
|
||||
anim->repeat = true;
|
||||
anim->is_playing = false;
|
||||
|
||||
// Create timer during object creation
|
||||
uint32_t period_ms = 1000 / anim->fps; // Convert FPS to period in milliseconds
|
||||
anim->timer = gfx_timer_create((void *)obj->parent_handle, gfx_anim_timer_callback, period_ms, obj);
|
||||
if (anim->timer == NULL) {
|
||||
ESP_LOGE(TAG, "Failed to create animation timer");
|
||||
free(anim);
|
||||
free(obj);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
// Initialize pre-parsed header fields
|
||||
memset(&anim->frame.header, 0, sizeof(gfx_aaf_header_t));
|
||||
|
||||
// Initialize pre-fetched frame data fields
|
||||
anim->frame.frame_data = NULL;
|
||||
anim->frame.frame_size = 0;
|
||||
|
||||
// Initialize pre-allocated parsing resources fields
|
||||
anim->frame.block_offsets = NULL;
|
||||
anim->frame.pixel_buffer = NULL;
|
||||
anim->frame.color_palette = NULL;
|
||||
|
||||
// Initialize decoding state
|
||||
anim->frame.last_block = -1;
|
||||
|
||||
// Initialize widget-specific display properties
|
||||
anim->mirror_enabled = false;
|
||||
anim->mirror_offset = 0;
|
||||
|
||||
obj->src = anim;
|
||||
obj->type = GFX_OBJ_TYPE_ANIMATION;
|
||||
|
||||
gfx_emote_add_chlid(handle, GFX_OBJ_TYPE_ANIMATION, obj);
|
||||
return obj;
|
||||
}
|
||||
|
||||
esp_err_t gfx_anim_set_src(gfx_obj_t *obj, const void *src_data, size_t src_len)
|
||||
{
|
||||
if (obj == NULL || src_data == NULL) {
|
||||
ESP_LOGE(TAG, "Invalid parameters");
|
||||
return ESP_ERR_INVALID_ARG;
|
||||
}
|
||||
|
||||
if (obj->type != GFX_OBJ_TYPE_ANIMATION) {
|
||||
ESP_LOGE(TAG, "Object is not an animation type");
|
||||
return ESP_ERR_INVALID_ARG;
|
||||
}
|
||||
|
||||
gfx_anim_property_t *anim = (gfx_anim_property_t *)obj->src;
|
||||
if (anim == NULL) {
|
||||
ESP_LOGE(TAG, "Animation property is NULL");
|
||||
return ESP_ERR_INVALID_STATE;
|
||||
}
|
||||
|
||||
// Stop current animation if playing
|
||||
if (anim->is_playing) {
|
||||
ESP_LOGD(TAG, "stop current animation");
|
||||
gfx_anim_stop(obj);
|
||||
}
|
||||
|
||||
// Free previously parsed header if exists
|
||||
if (anim->frame.header.width > 0) { // Check if header data exists instead of header_valid flag
|
||||
gfx_aaf_free_header(&anim->frame.header);
|
||||
memset(&anim->frame.header, 0, sizeof(gfx_aaf_header_t)); // Clear header data
|
||||
}
|
||||
|
||||
// Clear pre-fetched frame data
|
||||
anim->frame.frame_data = NULL;
|
||||
anim->frame.frame_size = 0;
|
||||
|
||||
gfx_aaf_format_handle_t new_desc;
|
||||
gfx_aaf_format_init(src_data, src_len, &new_desc);
|
||||
if (new_desc == NULL) {
|
||||
ESP_LOGE(TAG, "Failed to initialize asset parser");
|
||||
return ESP_FAIL;
|
||||
}
|
||||
|
||||
//delete old file_desc
|
||||
if (anim->file_desc) {
|
||||
gfx_aaf_format_deinit(anim->file_desc);
|
||||
anim->file_desc = NULL;
|
||||
}
|
||||
|
||||
anim->file_desc = new_desc;
|
||||
anim->start_frame = 0;
|
||||
anim->current_frame = 0;
|
||||
anim->end_frame = gfx_aaf_format_get_total_frames(new_desc) - 1;
|
||||
|
||||
ESP_LOGD(TAG, "set src, start: %lu, end: %lu, file_desc: %p", anim->start_frame, anim->end_frame, anim->file_desc);
|
||||
return ESP_OK;
|
||||
}
|
||||
|
||||
esp_err_t gfx_anim_set_segment(gfx_obj_t *obj, uint32_t start, uint32_t end, uint32_t fps, bool repeat)
|
||||
{
|
||||
if (obj == NULL) {
|
||||
ESP_LOGE(TAG, "Object is NULL");
|
||||
return ESP_ERR_INVALID_ARG;
|
||||
}
|
||||
|
||||
if (obj->type != GFX_OBJ_TYPE_ANIMATION) {
|
||||
ESP_LOGE(TAG, "Object is not an animation type");
|
||||
return ESP_ERR_INVALID_ARG;
|
||||
}
|
||||
|
||||
gfx_anim_property_t *anim = (gfx_anim_property_t *)obj->src;
|
||||
if (anim == NULL) {
|
||||
ESP_LOGE(TAG, "Animation property is NULL");
|
||||
return ESP_ERR_INVALID_STATE;
|
||||
}
|
||||
|
||||
int total_frames = gfx_aaf_format_get_total_frames(anim->file_desc);
|
||||
|
||||
anim->start_frame = start;
|
||||
anim->end_frame = (end > total_frames - 1) ? (total_frames - 1) : end;
|
||||
anim->current_frame = start;
|
||||
|
||||
if (anim->fps != fps) {
|
||||
ESP_LOGI(TAG, "FPS changed from %lu to %lu, updating timer period", anim->fps, fps);
|
||||
anim->fps = fps;
|
||||
|
||||
if (anim->timer != NULL) {
|
||||
uint32_t new_period_ms = 1000 / fps;
|
||||
gfx_timer_set_period(anim->timer, new_period_ms);
|
||||
ESP_LOGI(TAG, "Animation timer period updated to %lu ms for %lu FPS", new_period_ms, fps);
|
||||
}
|
||||
}
|
||||
|
||||
anim->repeat = repeat;
|
||||
|
||||
ESP_LOGD(TAG, "Set animation segment: %lu -> %lu, fps: %lu, repeat: %d", start, end, fps, repeat);
|
||||
return ESP_OK;
|
||||
}
|
||||
|
||||
esp_err_t gfx_anim_start(gfx_obj_t *obj)
|
||||
{
|
||||
if (obj == NULL) {
|
||||
ESP_LOGE(TAG, "Object is NULL");
|
||||
return ESP_ERR_INVALID_ARG;
|
||||
}
|
||||
|
||||
if (obj->type != GFX_OBJ_TYPE_ANIMATION) {
|
||||
ESP_LOGE(TAG, "Object is not an animation type");
|
||||
return ESP_ERR_INVALID_ARG;
|
||||
}
|
||||
|
||||
gfx_anim_property_t *anim = (gfx_anim_property_t *)obj->src;
|
||||
if (anim == NULL) {
|
||||
ESP_LOGE(TAG, "Animation property is NULL");
|
||||
return ESP_ERR_INVALID_STATE;
|
||||
}
|
||||
|
||||
if (anim->file_desc == NULL) {
|
||||
ESP_LOGE(TAG, "Animation source not set");
|
||||
return ESP_ERR_INVALID_STATE;
|
||||
}
|
||||
|
||||
if (anim->is_playing) {
|
||||
ESP_LOGD(TAG, "Animation is already playing");
|
||||
return ESP_OK;
|
||||
}
|
||||
|
||||
anim->is_playing = true;
|
||||
anim->current_frame = anim->start_frame;
|
||||
|
||||
ESP_LOGD(TAG, "Started animation");
|
||||
return ESP_OK;
|
||||
}
|
||||
|
||||
esp_err_t gfx_anim_stop(gfx_obj_t *obj)
|
||||
{
|
||||
if (obj == NULL) {
|
||||
ESP_LOGE(TAG, "Object is NULL");
|
||||
return ESP_ERR_INVALID_ARG;
|
||||
}
|
||||
|
||||
if (obj->type != GFX_OBJ_TYPE_ANIMATION) {
|
||||
ESP_LOGE(TAG, "Object is not an animation type");
|
||||
return ESP_ERR_INVALID_ARG;
|
||||
}
|
||||
|
||||
gfx_anim_property_t *anim = (gfx_anim_property_t *)obj->src;
|
||||
if (anim == NULL) {
|
||||
ESP_LOGE(TAG, "Animation property is NULL");
|
||||
return ESP_ERR_INVALID_STATE;
|
||||
}
|
||||
|
||||
if (!anim->is_playing) {
|
||||
ESP_LOGD(TAG, "Animation is not playing");
|
||||
return ESP_OK;
|
||||
}
|
||||
|
||||
anim->is_playing = false;
|
||||
|
||||
ESP_LOGD(TAG, "Stopped animation");
|
||||
return ESP_OK;
|
||||
}
|
||||
|
||||
esp_err_t gfx_anim_set_mirror(gfx_obj_t *obj, bool enabled, int16_t offset)
|
||||
{
|
||||
if (obj == NULL) {
|
||||
ESP_LOGE(TAG, "Object is NULL");
|
||||
return ESP_ERR_INVALID_ARG;
|
||||
}
|
||||
|
||||
if (obj->type != GFX_OBJ_TYPE_ANIMATION) {
|
||||
ESP_LOGE(TAG, "Object is not an animation type");
|
||||
return ESP_ERR_INVALID_ARG;
|
||||
}
|
||||
|
||||
gfx_anim_property_t *anim = (gfx_anim_property_t *)obj->src;
|
||||
if (anim == NULL) {
|
||||
ESP_LOGE(TAG, "Animation property is NULL");
|
||||
return ESP_ERR_INVALID_STATE;
|
||||
}
|
||||
|
||||
// Set mirror properties
|
||||
anim->mirror_enabled = enabled;
|
||||
anim->mirror_offset = offset;
|
||||
|
||||
ESP_LOGD(TAG, "Set animation mirror: enabled=%s, offset=%d", enabled ? "true" : "false", offset);
|
||||
return ESP_OK;
|
||||
}
|
||||
@@ -0,0 +1,278 @@
|
||||
#include "freertos/FreeRTOS.h"
|
||||
#include "esp_timer.h"
|
||||
#include "esp_err.h"
|
||||
#include "esp_log.h"
|
||||
#include "core/gfx_core.h"
|
||||
#include "core/gfx_core_internal.h"
|
||||
#include "core/gfx_timer.h"
|
||||
#include "core/gfx_timer_internal.h"
|
||||
|
||||
static const char *TAG = "gfx_timer";
|
||||
|
||||
#define GFX_NO_TIMER_READY 0xFFFFFFFF
|
||||
|
||||
uint32_t gfx_timer_tick_get(void)
|
||||
{
|
||||
return (uint32_t)(esp_timer_get_time() / 1000); // Convert microseconds to milliseconds
|
||||
}
|
||||
|
||||
uint32_t gfx_timer_tick_elaps(uint32_t prev_tick)
|
||||
{
|
||||
uint32_t act_time = gfx_timer_tick_get();
|
||||
|
||||
/*If there is no overflow in sys_time simple subtract*/
|
||||
if (act_time >= prev_tick) {
|
||||
prev_tick = act_time - prev_tick;
|
||||
} else {
|
||||
prev_tick = UINT32_MAX - prev_tick + 1;
|
||||
prev_tick += act_time;
|
||||
}
|
||||
|
||||
return prev_tick;
|
||||
}
|
||||
|
||||
bool gfx_timer_exec(gfx_timer_t *timer)
|
||||
{
|
||||
if (timer == NULL || timer->paused) {
|
||||
ESP_LOGD(TAG, "timer is NULL or paused");
|
||||
return false;
|
||||
}
|
||||
|
||||
// Don't execute if repeat_count is 0 (timer completed)
|
||||
if (timer->repeat_count == 0) {
|
||||
return false;
|
||||
}
|
||||
|
||||
uint32_t time_elapsed = gfx_timer_tick_elaps(timer->last_run);
|
||||
|
||||
if (time_elapsed >= timer->period) {
|
||||
timer->last_run = gfx_timer_tick_get() - (time_elapsed % timer->period);
|
||||
|
||||
if (timer->timer_cb) {
|
||||
timer->timer_cb(timer->user_data);
|
||||
}
|
||||
|
||||
if (timer->repeat_count > 0) {
|
||||
timer->repeat_count--;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
uint32_t gfx_timer_handler(gfx_timer_manager_t *timer_mgr)
|
||||
{
|
||||
static uint32_t fps_sample_count = 0;
|
||||
static uint32_t fps_total_time = 0;
|
||||
|
||||
uint32_t next_timer_delay = GFX_NO_TIMER_READY;
|
||||
gfx_timer_t *timer_node = timer_mgr->timer_list;
|
||||
gfx_timer_t *next_timer = NULL;
|
||||
|
||||
while (timer_node != NULL) {
|
||||
next_timer = timer_node->next;
|
||||
|
||||
// Execute timer (will return false if repeat_count is 0)
|
||||
gfx_timer_exec(timer_node);
|
||||
|
||||
// Calculate time until next execution for this timer
|
||||
if (!timer_node->paused && timer_node->repeat_count != 0) {
|
||||
uint32_t elapsed_time = gfx_timer_tick_elaps(timer_node->last_run);
|
||||
uint32_t remaining_time = (elapsed_time >= timer_node->period) ? 0 : (timer_node->period - elapsed_time);
|
||||
|
||||
if (remaining_time < next_timer_delay) {
|
||||
next_timer_delay = remaining_time;
|
||||
}
|
||||
}
|
||||
|
||||
timer_node = next_timer;
|
||||
}
|
||||
|
||||
uint32_t schedule_elapsed = gfx_timer_tick_elaps(timer_mgr->last_tick);
|
||||
timer_mgr->last_tick = gfx_timer_tick_get();
|
||||
|
||||
uint32_t schedule_period_ms = (timer_mgr->fps > 0) ? (1000 / timer_mgr->fps) : 30;
|
||||
uint32_t schedule_remaining = (schedule_elapsed >= schedule_period_ms) ? 0 : (schedule_period_ms - schedule_elapsed);
|
||||
|
||||
uint32_t final_delay;
|
||||
if (next_timer_delay == GFX_NO_TIMER_READY) {
|
||||
final_delay = schedule_remaining;
|
||||
} else {
|
||||
final_delay = (next_timer_delay < schedule_remaining) ? next_timer_delay : schedule_remaining;
|
||||
}
|
||||
|
||||
fps_sample_count++;
|
||||
fps_total_time += (schedule_elapsed > schedule_period_ms) ? schedule_elapsed : schedule_period_ms;
|
||||
if (fps_sample_count >= 100) {
|
||||
timer_mgr->actual_fps = 1000 / (fps_total_time / fps_sample_count);
|
||||
// ESP_LOGI(TAG, "average fps: %lu(%lu)", timer_mgr->actual_fps, timer_mgr->fps);
|
||||
fps_sample_count = 0;
|
||||
fps_total_time = 0;
|
||||
}
|
||||
|
||||
if (final_delay == 0) {
|
||||
final_delay = 1;
|
||||
}
|
||||
|
||||
timer_mgr->time_until_next = final_delay;
|
||||
return final_delay;
|
||||
}
|
||||
|
||||
gfx_timer_handle_t gfx_timer_create(void *handle, gfx_timer_cb_t timer_cb, uint32_t period, void *user_data)
|
||||
{
|
||||
if (handle == NULL || timer_cb == NULL) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
gfx_core_context_t *ctx = (gfx_core_context_t *)handle;
|
||||
gfx_timer_manager_t *timer_mgr = &ctx->timer.timer_mgr;
|
||||
|
||||
gfx_timer_t *new_timer = (gfx_timer_t *)malloc(sizeof(gfx_timer_t));
|
||||
if (new_timer == NULL) {
|
||||
ESP_LOGE(TAG, "Failed to allocate timer");
|
||||
return NULL;
|
||||
}
|
||||
|
||||
new_timer->period = period;
|
||||
new_timer->timer_cb = timer_cb;
|
||||
new_timer->user_data = user_data;
|
||||
new_timer->repeat_count = -1; // Infinite repeat
|
||||
new_timer->paused = false;
|
||||
new_timer->last_run = gfx_timer_tick_get();
|
||||
new_timer->next = NULL;
|
||||
|
||||
// Add to timer list
|
||||
if (timer_mgr->timer_list == NULL) {
|
||||
timer_mgr->timer_list = new_timer;
|
||||
} else {
|
||||
// Add to end of list
|
||||
gfx_timer_t *current_timer = timer_mgr->timer_list;
|
||||
while (current_timer->next != NULL) {
|
||||
current_timer = current_timer->next;
|
||||
}
|
||||
current_timer->next = new_timer;
|
||||
}
|
||||
|
||||
return (gfx_timer_handle_t)new_timer;
|
||||
}
|
||||
|
||||
void gfx_timer_delete(void *handle, gfx_timer_handle_t timer_handle)
|
||||
{
|
||||
if (handle == NULL || timer_handle == NULL) {
|
||||
return;
|
||||
}
|
||||
|
||||
gfx_timer_t *timer = (gfx_timer_t *)timer_handle;
|
||||
gfx_core_context_t *ctx = (gfx_core_context_t *)handle;
|
||||
gfx_timer_manager_t *timer_mgr = &ctx->timer.timer_mgr;
|
||||
|
||||
// Remove from timer list
|
||||
gfx_timer_t *current_timer = timer_mgr->timer_list;
|
||||
gfx_timer_t *prev_timer = NULL;
|
||||
|
||||
while (current_timer != NULL && current_timer != timer) {
|
||||
prev_timer = current_timer;
|
||||
current_timer = current_timer->next;
|
||||
}
|
||||
|
||||
if (current_timer == timer) {
|
||||
if (prev_timer == NULL) {
|
||||
timer_mgr->timer_list = timer->next;
|
||||
} else {
|
||||
prev_timer->next = timer->next;
|
||||
}
|
||||
|
||||
free(timer);
|
||||
ESP_LOGD(TAG, "Deleted timer");
|
||||
}
|
||||
}
|
||||
|
||||
void gfx_timer_pause(gfx_timer_handle_t timer_handle)
|
||||
{
|
||||
if (timer_handle != NULL) {
|
||||
gfx_timer_t *timer = (gfx_timer_t *)timer_handle;
|
||||
timer->paused = true;
|
||||
}
|
||||
}
|
||||
|
||||
void gfx_timer_resume(gfx_timer_handle_t timer_handle)
|
||||
{
|
||||
if (timer_handle != NULL) {
|
||||
gfx_timer_t *timer = (gfx_timer_t *)timer_handle;
|
||||
timer->paused = false;
|
||||
timer->last_run = gfx_timer_tick_get();
|
||||
|
||||
// If timer was completed (repeat_count = 0), restore infinite repeat
|
||||
if (timer->repeat_count == 0) {
|
||||
timer->repeat_count = -1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void gfx_timer_set_repeat_count(gfx_timer_handle_t timer_handle, int32_t repeat_count)
|
||||
{
|
||||
if (timer_handle != NULL) {
|
||||
gfx_timer_t *timer = (gfx_timer_t *)timer_handle;
|
||||
timer->repeat_count = repeat_count;
|
||||
}
|
||||
}
|
||||
|
||||
void gfx_timer_set_period(gfx_timer_handle_t timer_handle, uint32_t period)
|
||||
{
|
||||
if (timer_handle != NULL) {
|
||||
gfx_timer_t *timer = (gfx_timer_t *)timer_handle;
|
||||
timer->period = period;
|
||||
}
|
||||
}
|
||||
|
||||
void gfx_timer_reset(gfx_timer_handle_t timer_handle)
|
||||
{
|
||||
if (timer_handle != NULL) {
|
||||
gfx_timer_t *timer = (gfx_timer_t *)timer_handle;
|
||||
timer->last_run = gfx_timer_tick_get();
|
||||
}
|
||||
}
|
||||
|
||||
void gfx_timer_manager_init(gfx_timer_manager_t *timer_mgr, uint32_t fps)
|
||||
{
|
||||
if (timer_mgr != NULL) {
|
||||
timer_mgr->timer_list = NULL;
|
||||
timer_mgr->time_until_next = GFX_NO_TIMER_READY;
|
||||
timer_mgr->last_tick = gfx_timer_tick_get();
|
||||
timer_mgr->fps = fps; // Store FPS directly
|
||||
timer_mgr->actual_fps = 0; // Initialize actual FPS
|
||||
ESP_LOGI(TAG, "Timer manager initialized with FPS: %lu (period: %lu ms)", fps, (fps > 0) ? (1000 / fps) : 30);
|
||||
esp_cpu_set_watchpoint(0, timer_mgr->timer_list, 4, ESP_CPU_WATCHPOINT_STORE);
|
||||
}
|
||||
}
|
||||
|
||||
void gfx_timer_manager_deinit(gfx_timer_manager_t *timer_mgr)
|
||||
{
|
||||
if (timer_mgr == NULL) {
|
||||
return;
|
||||
}
|
||||
|
||||
// Free all timers
|
||||
gfx_timer_t *timer_node = timer_mgr->timer_list;
|
||||
while (timer_node != NULL) {
|
||||
gfx_timer_t *next_timer = timer_node->next;
|
||||
free(timer_node);
|
||||
timer_node = next_timer;
|
||||
}
|
||||
|
||||
timer_mgr->timer_list = NULL;
|
||||
}
|
||||
|
||||
uint32_t gfx_timer_get_actual_fps(void *handle)
|
||||
{
|
||||
if (handle == NULL) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
gfx_core_context_t *ctx = (gfx_core_context_t *)handle;
|
||||
gfx_timer_manager_t *timer_mgr = &ctx->timer.timer_mgr;
|
||||
|
||||
return timer_mgr->actual_fps;
|
||||
}
|
||||
@@ -0,0 +1,297 @@
|
||||
/*
|
||||
* SPDX-FileCopyrightText: 2022-2025 Espressif Systems (Shanghai) CO LTD
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
#include <string.h>
|
||||
#include "esp_err.h"
|
||||
#include "esp_log.h"
|
||||
#include "esp_check.h"
|
||||
#include "decoder/gfx_aaf_dec.h"
|
||||
#include "decoder/gfx_aaf_format.h"
|
||||
|
||||
static const char *TAG = "anim_decoder";
|
||||
|
||||
/**********************
|
||||
* STATIC HELPER FUNCTIONS
|
||||
**********************/
|
||||
|
||||
static Node* create_node()
|
||||
{
|
||||
Node* node = (Node*)calloc(1, sizeof(Node));
|
||||
return node;
|
||||
}
|
||||
|
||||
static void free_tree(Node* node)
|
||||
{
|
||||
if (!node) {
|
||||
return;
|
||||
}
|
||||
free_tree(node->left);
|
||||
free_tree(node->right);
|
||||
free(node);
|
||||
}
|
||||
|
||||
static esp_err_t decode_huffman_data(const uint8_t* data, size_t data_len,
|
||||
const uint8_t* dict_bytes, size_t dict_len,
|
||||
uint8_t* output, size_t* output_len)
|
||||
{
|
||||
if (!data || !dict_bytes || data_len == 0 || dict_len == 0) {
|
||||
*output_len = 0;
|
||||
return ESP_OK;
|
||||
}
|
||||
|
||||
// Get padding
|
||||
uint8_t padding = dict_bytes[0];
|
||||
// printf("Padding bits: %u\n", padding);
|
||||
size_t dict_pos = 1;
|
||||
|
||||
// Reconstruct Huffman Tree
|
||||
Node* root = create_node();
|
||||
Node* current = NULL;
|
||||
|
||||
while (dict_pos < dict_len) {
|
||||
uint8_t byte_val = dict_bytes[dict_pos++];
|
||||
uint8_t code_len = dict_bytes[dict_pos++];
|
||||
|
||||
size_t code_byte_len = (code_len + 7) / 8;
|
||||
uint64_t code = 0;
|
||||
for (size_t i = 0; i < code_byte_len; ++i) {
|
||||
code = (code << 8) | dict_bytes[dict_pos++];
|
||||
}
|
||||
|
||||
// Insert into tree
|
||||
current = root;
|
||||
for (int bit = code_len - 1; bit >= 0; --bit) {
|
||||
int bit_val = (code >> bit) & 1;
|
||||
if (bit_val == 0) {
|
||||
if (!current->left) {
|
||||
current->left = create_node();
|
||||
}
|
||||
current = current->left;
|
||||
} else {
|
||||
if (!current->right) {
|
||||
current->right = create_node();
|
||||
}
|
||||
current = current->right;
|
||||
}
|
||||
}
|
||||
current->is_leaf = 1;
|
||||
current->value = byte_val;
|
||||
}
|
||||
|
||||
// Convert bitstream
|
||||
size_t total_bits = data_len * 8;
|
||||
if (padding > 0) {
|
||||
total_bits -= padding;
|
||||
}
|
||||
|
||||
current = root;
|
||||
size_t out_pos = 0;
|
||||
|
||||
// Process each bit
|
||||
for (size_t bit_index = 0; bit_index < total_bits; bit_index++) {
|
||||
size_t byte_idx = bit_index / 8;
|
||||
int bit_offset = 7 - (bit_index % 8); // Most significant bit first
|
||||
int bit = (data[byte_idx] >> bit_offset) & 1;
|
||||
|
||||
if (bit == 0) {
|
||||
current = current->left;
|
||||
} else {
|
||||
current = current->right;
|
||||
}
|
||||
|
||||
if (current == NULL) {
|
||||
ESP_LOGE(TAG, "Invalid path in Huffman tree at bit %d", (int)bit_index);
|
||||
break;
|
||||
}
|
||||
|
||||
if (current->is_leaf) {
|
||||
output[out_pos++] = current->value;
|
||||
current = root;
|
||||
}
|
||||
}
|
||||
|
||||
*output_len = out_pos;
|
||||
free_tree(root);
|
||||
return ESP_OK;
|
||||
}
|
||||
|
||||
/**********************
|
||||
* HEADER FUNCTIONS
|
||||
**********************/
|
||||
|
||||
gfx_aaf_format_t gfx_aaf_parse_header(const uint8_t *data, size_t data_len, gfx_aaf_header_t *header)
|
||||
{
|
||||
memset(header, 0, sizeof(gfx_aaf_header_t));
|
||||
|
||||
memcpy(header->format, data, 2);
|
||||
header->format[2] = '\0';
|
||||
|
||||
if (strncmp(header->format, "_S", 2) == 0) {
|
||||
memcpy(header->version, data + 3, 6);
|
||||
|
||||
header->bit_depth = data[9];
|
||||
|
||||
if (header->bit_depth != 4 && header->bit_depth != 8 && header->bit_depth != 24) {
|
||||
ESP_LOGE(TAG, "Invalid bit depth: %d", header->bit_depth);
|
||||
return GFX_AAF_FORMAT_INVALID;
|
||||
}
|
||||
|
||||
header->width = *(uint16_t *)(data + 10);
|
||||
header->height = *(uint16_t *)(data + 12);
|
||||
header->blocks = *(uint16_t *)(data + 14);
|
||||
header->block_height = *(uint16_t *)(data + 16);
|
||||
|
||||
header->block_len = (uint32_t *)malloc(header->blocks * sizeof(uint32_t));
|
||||
if (header->block_len == NULL) {
|
||||
ESP_LOGE(TAG, "Failed to allocate memory for split lengths");
|
||||
return GFX_AAF_FORMAT_INVALID;
|
||||
}
|
||||
|
||||
for (int i = 0; i < header->blocks; i++) {
|
||||
header->block_len[i] = *(uint32_t *)(data + 18 + i * 4);
|
||||
}
|
||||
|
||||
header->num_colors = 1 << header->bit_depth;
|
||||
|
||||
if (header->bit_depth == 24) {
|
||||
header->num_colors = 0;
|
||||
header->palette = NULL;
|
||||
} else {
|
||||
header->palette = (uint8_t *)malloc(header->num_colors * 4);
|
||||
if (header->palette == NULL) {
|
||||
ESP_LOGE(TAG, "Failed to allocate memory for palette");
|
||||
free(header->block_len);
|
||||
header->block_len = NULL;
|
||||
return GFX_AAF_FORMAT_INVALID;
|
||||
}
|
||||
|
||||
memcpy(header->palette, data + 18 + header->blocks * 4, header->num_colors * 4);
|
||||
}
|
||||
header->data_offset = 18 + header->blocks * 4 + header->num_colors * 4;
|
||||
return GFX_AAF_FORMAT_SBMP;
|
||||
|
||||
} else if (strncmp(header->format, "_R", 2) == 0) {
|
||||
uint8_t file_length = *(uint8_t *)(data + 2);
|
||||
|
||||
header->palette = (uint8_t *)malloc(file_length + 1);
|
||||
if (header->palette == NULL) {
|
||||
ESP_LOGE(TAG, "Failed to allocate memory for redirect filename");
|
||||
return GFX_AAF_FORMAT_INVALID;
|
||||
}
|
||||
|
||||
memcpy(header->palette, data + 3, file_length);
|
||||
header->palette[file_length] = '\0';
|
||||
header->num_colors = file_length + 1;
|
||||
|
||||
return GFX_AAF_FORMAT_REDIRECT;
|
||||
|
||||
} else {
|
||||
ESP_LOGE(TAG, "Invalid format: %s", header->format);
|
||||
printf("%02X %02X %02X\r\n", header->format[0], header->format[1], header->format[2]);
|
||||
return GFX_AAF_FORMAT_INVALID;
|
||||
}
|
||||
}
|
||||
|
||||
void gfx_aaf_free_header(gfx_aaf_header_t *header)
|
||||
{
|
||||
if (header->block_len != NULL) {
|
||||
free(header->block_len);
|
||||
header->block_len = NULL;
|
||||
}
|
||||
if (header->palette != NULL) {
|
||||
free(header->palette);
|
||||
header->palette = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
void gfx_aaf_calculate_offsets(const gfx_aaf_header_t *header, uint32_t *offsets)
|
||||
{
|
||||
offsets[0] = header->data_offset;
|
||||
for (int i = 1; i < header->blocks; i++) {
|
||||
offsets[i] = offsets[i - 1] + header->block_len[i - 1];
|
||||
}
|
||||
}
|
||||
|
||||
/**********************
|
||||
* PALETTE FUNCTIONS
|
||||
**********************/
|
||||
|
||||
gfx_color_t gfx_aaf_parse_palette(const gfx_aaf_header_t *header, uint8_t index, bool swap)
|
||||
{
|
||||
const uint8_t *color = &header->palette[index * 4];
|
||||
// RGB888: R=color[2], G=color[1], B=color[0]
|
||||
// RGB565:
|
||||
// - R: (color[2] & 0xF8) << 8
|
||||
// - G: (color[1] & 0xFC) << 3
|
||||
// - B: (color[0] & 0xF8) >> 3
|
||||
gfx_color_t result;
|
||||
uint16_t color_value = swap ? __builtin_bswap16(((color[2] & 0xF8) << 8) | ((color[1] & 0xFC) << 3) | ((color[0] & 0xF8) >> 3)) : \
|
||||
((color[2] & 0xF8) << 8) | ((color[1] & 0xFC) << 3) | ((color[0] & 0xF8) >> 3);
|
||||
result.full = color_value;
|
||||
return result;
|
||||
}
|
||||
|
||||
/**********************
|
||||
* DECODING FUNCTIONS
|
||||
**********************/
|
||||
|
||||
esp_err_t gfx_aaf_rle_decode(const uint8_t *input, size_t input_len, uint8_t *output, size_t output_len)
|
||||
{
|
||||
size_t in_pos = 0;
|
||||
size_t out_pos = 0;
|
||||
|
||||
while (in_pos + 1 <= input_len) {
|
||||
uint8_t count = input[in_pos++];
|
||||
uint8_t value = input[in_pos++];
|
||||
|
||||
if (out_pos + count > output_len) {
|
||||
ESP_LOGE(TAG, "Output buffer overflow, %d > %d", out_pos + count, output_len);
|
||||
return ESP_FAIL;
|
||||
}
|
||||
|
||||
for (uint8_t i = 0; i < count; i++) {
|
||||
output[out_pos++] = value;
|
||||
}
|
||||
}
|
||||
|
||||
return ESP_OK;
|
||||
}
|
||||
|
||||
esp_err_t gfx_aaf_huffman_decode(const uint8_t* buffer, size_t buflen, uint8_t* output, size_t* output_len)
|
||||
{
|
||||
if (!buffer || buflen < 1 || !output || !output_len) {
|
||||
ESP_LOGE(TAG, "Invalid parameters: buffer=%p, buflen=%d, output=%p, output_len=%p",
|
||||
buffer, buflen, output, output_len);
|
||||
return ESP_FAIL;
|
||||
}
|
||||
|
||||
// First byte indicates encoding type (already checked in caller)
|
||||
// Next two bytes contain dictionary length (big endian)
|
||||
uint16_t dict_len = (buffer[2] << 8) | buffer[1];
|
||||
if (buflen < 3 + dict_len) {
|
||||
ESP_LOGE(TAG, "Buffer too short for dictionary");
|
||||
return ESP_FAIL;
|
||||
}
|
||||
|
||||
// Calculate data length
|
||||
size_t data_len = buflen - 3 - dict_len;
|
||||
if (data_len == 0) {
|
||||
ESP_LOGE(TAG, "No data to decode");
|
||||
return ESP_FAIL;
|
||||
}
|
||||
|
||||
// Decode data
|
||||
esp_err_t ret = decode_huffman_data(buffer + 3 + dict_len, data_len,
|
||||
buffer + 3, dict_len,
|
||||
output, output_len);
|
||||
|
||||
if (ret != ESP_OK) {
|
||||
ESP_LOGE(TAG, "Huffman decoding failed: %d", ret);
|
||||
return ESP_FAIL;
|
||||
}
|
||||
|
||||
return ESP_OK;
|
||||
}
|
||||
@@ -0,0 +1,167 @@
|
||||
/*
|
||||
* SPDX-FileCopyrightText: 2022-2025 Espressif Systems (Shanghai) CO LTD
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
#include <string.h>
|
||||
#include "esp_err.h"
|
||||
#include "esp_log.h"
|
||||
#include "esp_check.h"
|
||||
#include "decoder/gfx_aaf_format.h"
|
||||
|
||||
static const char *TAG = "gfx_aaf_format";
|
||||
|
||||
/*
|
||||
* AAF File Format Structure:
|
||||
*
|
||||
* Offset Size Description
|
||||
* 0 1 Magic number (0x89)
|
||||
* 1 3 Format string ("AAF")
|
||||
* 4 4 Total number of frames
|
||||
* 8 4 Checksum of table + data
|
||||
* 12 4 Length of table + data
|
||||
* 16 N Asset table (N = total_frames * 8)
|
||||
* 16+N M Frame data (M = sum of all frame sizes)
|
||||
*/
|
||||
|
||||
#define GFX_AAF_MAGIC_HEAD 0x5A5A
|
||||
#define GFX_AAF_MAGIC_LEN 2
|
||||
|
||||
/* File format magic number: 0x89 "AAF" */
|
||||
#define GFX_AAF_FORMAT_MAGIC 0x89
|
||||
#define GFX_AAF_FORMAT_STR "AAF"
|
||||
|
||||
#define GFX_AAF_FORMAT_OFFSET 0
|
||||
#define GFX_AAF_STR_OFFSET 1
|
||||
#define GFX_AAF_NUM_OFFSET 4
|
||||
#define GFX_AAF_CHECKSUM_OFFSET 8
|
||||
#define GFX_AAF_TABLE_LEN 12
|
||||
#define GFX_AAF_TABLE_OFFSET 16
|
||||
|
||||
/**
|
||||
* @brief Asset table structure, contains detailed information for each asset.
|
||||
*/
|
||||
#pragma pack(1)
|
||||
|
||||
typedef struct {
|
||||
uint32_t asset_size; /*!< Size of the asset */
|
||||
uint32_t asset_offset; /*!< Offset of the asset */
|
||||
} asset_table_entry_t;
|
||||
#pragma pack()
|
||||
|
||||
typedef struct {
|
||||
const char *asset_mem;
|
||||
const asset_table_entry_t *table;
|
||||
} asset_entry_t;
|
||||
|
||||
typedef struct {
|
||||
asset_entry_t *entries;
|
||||
int total_frames;
|
||||
} gfx_aaf_format_ctx_t;
|
||||
|
||||
static uint32_t gfx_aaf_format_calc_checksum(const uint8_t *data, uint32_t length)
|
||||
{
|
||||
uint32_t checksum = 0;
|
||||
for (uint32_t i = 0; i < length; i++) {
|
||||
checksum += data[i];
|
||||
}
|
||||
return checksum;
|
||||
}
|
||||
|
||||
esp_err_t gfx_aaf_format_init(const uint8_t *data, size_t data_len, gfx_aaf_format_handle_t *ret_parser)
|
||||
{
|
||||
esp_err_t ret = ESP_OK;
|
||||
asset_entry_t *entries = NULL;
|
||||
|
||||
gfx_aaf_format_ctx_t *parser = (gfx_aaf_format_ctx_t *)calloc(1, sizeof(gfx_aaf_format_ctx_t));
|
||||
ESP_GOTO_ON_FALSE(parser, ESP_ERR_NO_MEM, err, TAG, "no mem for parser handle");
|
||||
|
||||
// Check file format magic number: 0x89 "AAF"
|
||||
ESP_GOTO_ON_FALSE(data[GFX_AAF_FORMAT_OFFSET] == GFX_AAF_FORMAT_MAGIC, ESP_ERR_INVALID_CRC, err, TAG, "bad file format magic");
|
||||
ESP_GOTO_ON_FALSE(memcmp(data + GFX_AAF_STR_OFFSET, GFX_AAF_FORMAT_STR, 3) == 0, ESP_ERR_INVALID_CRC, err, TAG, "bad file format string");
|
||||
|
||||
int total_frames = *(int *)(data + GFX_AAF_NUM_OFFSET);
|
||||
uint32_t stored_chk = *(uint32_t *)(data + GFX_AAF_CHECKSUM_OFFSET);
|
||||
uint32_t stored_len = *(uint32_t *)(data + GFX_AAF_TABLE_LEN);
|
||||
|
||||
uint32_t calculated_chk = gfx_aaf_format_calc_checksum((uint8_t *)(data + GFX_AAF_TABLE_OFFSET), stored_len);
|
||||
ESP_GOTO_ON_FALSE(calculated_chk == stored_chk, ESP_ERR_INVALID_CRC, err, TAG, "bad full checksum");
|
||||
|
||||
entries = (asset_entry_t *)malloc(sizeof(asset_entry_t) * total_frames);
|
||||
|
||||
asset_table_entry_t *table = (asset_table_entry_t *)(data + GFX_AAF_TABLE_OFFSET);
|
||||
for (int i = 0; i < total_frames; i++) {
|
||||
(entries + i)->table = (table + i);
|
||||
(entries + i)->asset_mem = (void *)(data + GFX_AAF_TABLE_OFFSET + total_frames * sizeof(asset_table_entry_t) + table[i].asset_offset);
|
||||
|
||||
uint16_t *magic_ptr = (uint16_t *)(entries + i)->asset_mem;
|
||||
ESP_GOTO_ON_FALSE(*magic_ptr == GFX_AAF_MAGIC_HEAD, ESP_ERR_INVALID_CRC, err, TAG, "bad file magic header");
|
||||
}
|
||||
|
||||
parser->entries = entries;
|
||||
parser->total_frames = total_frames;
|
||||
|
||||
*ret_parser = (gfx_aaf_format_handle_t)parser;
|
||||
|
||||
return ESP_OK;
|
||||
|
||||
err:
|
||||
if (entries) {
|
||||
free(entries);
|
||||
}
|
||||
if (parser) {
|
||||
free(parser);
|
||||
}
|
||||
*ret_parser = NULL;
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
esp_err_t gfx_aaf_format_deinit(gfx_aaf_format_handle_t handle)
|
||||
{
|
||||
assert(handle && "handle is invalid");
|
||||
gfx_aaf_format_ctx_t *parser = (gfx_aaf_format_ctx_t *)(handle);
|
||||
if (parser) {
|
||||
if (parser->entries) {
|
||||
free(parser->entries);
|
||||
}
|
||||
free(parser);
|
||||
}
|
||||
return ESP_OK;
|
||||
}
|
||||
|
||||
int gfx_aaf_format_get_total_frames(gfx_aaf_format_handle_t handle)
|
||||
{
|
||||
assert(handle && "handle is invalid");
|
||||
gfx_aaf_format_ctx_t *parser = (gfx_aaf_format_ctx_t *)(handle);
|
||||
|
||||
return parser->total_frames;
|
||||
}
|
||||
|
||||
const uint8_t *gfx_aaf_format_get_frame_data(gfx_aaf_format_handle_t handle, int index)
|
||||
{
|
||||
assert(handle && "handle is invalid");
|
||||
|
||||
gfx_aaf_format_ctx_t *parser = (gfx_aaf_format_ctx_t *)(handle);
|
||||
|
||||
if (parser->total_frames > index) {
|
||||
return (const uint8_t *)((parser->entries + index)->asset_mem + GFX_AAF_MAGIC_LEN);
|
||||
} else {
|
||||
ESP_LOGE(TAG, "Invalid index: %d. Maximum index is %d.", index, parser->total_frames);
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
|
||||
int gfx_aaf_format_get_frame_size(gfx_aaf_format_handle_t handle, int index)
|
||||
{
|
||||
assert(handle && "handle is invalid");
|
||||
gfx_aaf_format_ctx_t *parser = (gfx_aaf_format_ctx_t *)(handle);
|
||||
|
||||
if (parser->total_frames > index) {
|
||||
return ((parser->entries + index)->table->asset_size - GFX_AAF_MAGIC_LEN);
|
||||
} else {
|
||||
ESP_LOGE(TAG, "Invalid index: %d. Maximum index is %d.", index, parser->total_frames);
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,308 @@
|
||||
/*
|
||||
* SPDX-FileCopyrightText: 2024 Espressif Systems (Shanghai) CO LTD
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
#include <string.h>
|
||||
#include "esp_err.h"
|
||||
#include "esp_log.h"
|
||||
#include "esp_check.h"
|
||||
#include "core/gfx_core.h"
|
||||
#include "core/gfx_obj.h"
|
||||
#include "widget/gfx_img.h"
|
||||
#include "decoder/gfx_img_decoder.h"
|
||||
#include "decoder/gfx_aaf_dec.h"
|
||||
#include "decoder/gfx_jpeg_dec.h"
|
||||
|
||||
static const char *TAG = "gfx_img_decoder";
|
||||
|
||||
/*********************
|
||||
* DEFINES
|
||||
*********************/
|
||||
|
||||
#define MAX_DECODERS 8
|
||||
|
||||
/**********************
|
||||
* TYPEDEFS
|
||||
**********************/
|
||||
|
||||
/**********************
|
||||
* STATIC PROTOTYPES
|
||||
**********************/
|
||||
|
||||
static esp_err_t image_format_info_cb(gfx_image_decoder_t *decoder, gfx_image_decoder_dsc_t *dsc, gfx_image_header_t *header);
|
||||
static esp_err_t image_format_open_cb(gfx_image_decoder_t *decoder, gfx_image_decoder_dsc_t *dsc);
|
||||
static void image_format_close_cb(gfx_image_decoder_t *decoder, gfx_image_decoder_dsc_t *dsc);
|
||||
|
||||
static esp_err_t aaf_format_info_cb(gfx_image_decoder_t *decoder, gfx_image_decoder_dsc_t *dsc, gfx_image_header_t *header);
|
||||
static esp_err_t aaf_format_open_cb(gfx_image_decoder_t *decoder, gfx_image_decoder_dsc_t *dsc);
|
||||
static void aaf_format_close_cb(gfx_image_decoder_t *decoder, gfx_image_decoder_dsc_t *dsc);
|
||||
|
||||
/**********************
|
||||
* STATIC VARIABLES
|
||||
**********************/
|
||||
|
||||
static gfx_image_decoder_t *registered_decoders[MAX_DECODERS] = {NULL};
|
||||
static uint8_t decoder_count = 0;
|
||||
|
||||
// Built-in decoders
|
||||
static gfx_image_decoder_t image_decoder = {
|
||||
.name = "IMAGE",
|
||||
.info_cb = image_format_info_cb,
|
||||
.open_cb = image_format_open_cb,
|
||||
.close_cb = image_format_close_cb,
|
||||
};
|
||||
|
||||
static gfx_image_decoder_t aaf_decoder = {
|
||||
.name = "AAF",
|
||||
.info_cb = aaf_format_info_cb,
|
||||
.open_cb = aaf_format_open_cb,
|
||||
.close_cb = aaf_format_close_cb,
|
||||
};
|
||||
|
||||
/**********************
|
||||
* GLOBAL FUNCTIONS
|
||||
**********************/
|
||||
|
||||
/*=====================
|
||||
* Image format detection
|
||||
*====================*/
|
||||
|
||||
gfx_image_format_t gfx_image_detect_format(const void *src)
|
||||
{
|
||||
if (src == NULL) {
|
||||
return GFX_IMAGE_FORMAT_UNKNOWN;
|
||||
}
|
||||
|
||||
uint8_t *byte_ptr = (uint8_t *)src;
|
||||
|
||||
// Check for C_ARRAY format
|
||||
if (byte_ptr[0] == C_ARRAY_HEADER_MAGIC) {
|
||||
return GFX_IMAGE_FORMAT_C_ARRAY;
|
||||
}
|
||||
|
||||
// Check for AAF format (0x89 "AAF" magic)
|
||||
if (byte_ptr[0] == 0x89 && byte_ptr[1] == 'A' && byte_ptr[2] == 'A' && byte_ptr[3] == 'F') {
|
||||
return GFX_IMAGE_FORMAT_AAF;
|
||||
}
|
||||
|
||||
return GFX_IMAGE_FORMAT_UNKNOWN;
|
||||
}
|
||||
|
||||
/*=====================
|
||||
* Image decoder functions
|
||||
*====================*/
|
||||
|
||||
esp_err_t gfx_image_decoder_register(gfx_image_decoder_t *decoder)
|
||||
{
|
||||
if (decoder == NULL) {
|
||||
return ESP_ERR_INVALID_ARG;
|
||||
}
|
||||
|
||||
if (decoder_count >= MAX_DECODERS) {
|
||||
ESP_LOGE(TAG, "Too many decoders registered");
|
||||
return ESP_ERR_NO_MEM;
|
||||
}
|
||||
|
||||
registered_decoders[decoder_count] = decoder;
|
||||
decoder_count++;
|
||||
|
||||
ESP_LOGD(TAG, "Registered decoder: %s", decoder->name);
|
||||
return ESP_OK;
|
||||
}
|
||||
|
||||
esp_err_t gfx_image_decoder_info(gfx_image_decoder_dsc_t *dsc, gfx_image_header_t *header)
|
||||
{
|
||||
if (dsc == NULL || header == NULL) {
|
||||
return ESP_ERR_INVALID_ARG;
|
||||
}
|
||||
|
||||
// Try each registered decoder
|
||||
for (int i = 0; i < decoder_count; i++) {
|
||||
gfx_image_decoder_t *decoder = registered_decoders[i];
|
||||
if (decoder && decoder->info_cb) {
|
||||
esp_err_t ret = decoder->info_cb(decoder, dsc, header);
|
||||
if (ret == ESP_OK) {
|
||||
ESP_LOGD(TAG, "Decoder %s found format", decoder->name);
|
||||
return ESP_OK;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
ESP_LOGW(TAG, "No decoder found for image format");
|
||||
return ESP_ERR_INVALID_ARG;
|
||||
}
|
||||
|
||||
esp_err_t gfx_image_decoder_open(gfx_image_decoder_dsc_t *dsc)
|
||||
{
|
||||
if (dsc == NULL) {
|
||||
return ESP_ERR_INVALID_ARG;
|
||||
}
|
||||
|
||||
// Try each registered decoder
|
||||
for (int i = 0; i < decoder_count; i++) {
|
||||
gfx_image_decoder_t *decoder = registered_decoders[i];
|
||||
if (decoder && decoder->open_cb) {
|
||||
esp_err_t ret = decoder->open_cb(decoder, dsc);
|
||||
if (ret == ESP_OK) {
|
||||
ESP_LOGD(TAG, "Decoder %s opened image", decoder->name);
|
||||
return ESP_OK;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
ESP_LOGW(TAG, "No decoder could open image");
|
||||
return ESP_ERR_INVALID_ARG;
|
||||
}
|
||||
|
||||
void gfx_image_decoder_close(gfx_image_decoder_dsc_t *dsc)
|
||||
{
|
||||
if (dsc == NULL) {
|
||||
return;
|
||||
}
|
||||
|
||||
// Try each registered decoder
|
||||
for (int i = 0; i < decoder_count; i++) {
|
||||
gfx_image_decoder_t *decoder = registered_decoders[i];
|
||||
if (decoder && decoder->close_cb) {
|
||||
decoder->close_cb(decoder, dsc);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/*=====================
|
||||
* Built-in decoder implementations
|
||||
*====================*/
|
||||
|
||||
// C_ARRAY format decoder
|
||||
static esp_err_t image_format_info_cb(gfx_image_decoder_t *decoder, gfx_image_decoder_dsc_t *dsc, gfx_image_header_t *header)
|
||||
{
|
||||
if (dsc->src == NULL) {
|
||||
return ESP_ERR_INVALID_ARG;
|
||||
}
|
||||
|
||||
gfx_image_format_t format = gfx_image_detect_format(dsc->src);
|
||||
if (format != GFX_IMAGE_FORMAT_C_ARRAY) {
|
||||
return ESP_ERR_INVALID_ARG;
|
||||
}
|
||||
|
||||
gfx_image_dsc_t *image_desc = (gfx_image_dsc_t *)dsc->src;
|
||||
memcpy(header, &image_desc->header, sizeof(gfx_image_header_t));
|
||||
|
||||
return ESP_OK;
|
||||
}
|
||||
|
||||
static esp_err_t image_format_open_cb(gfx_image_decoder_t *decoder, gfx_image_decoder_dsc_t *dsc)
|
||||
{
|
||||
if (dsc->src == NULL) {
|
||||
return ESP_ERR_INVALID_ARG;
|
||||
}
|
||||
|
||||
gfx_image_format_t format = gfx_image_detect_format(dsc->src);
|
||||
if (format != GFX_IMAGE_FORMAT_C_ARRAY) {
|
||||
return ESP_ERR_INVALID_ARG;
|
||||
}
|
||||
|
||||
gfx_image_dsc_t *image_desc = (gfx_image_dsc_t *)dsc->src;
|
||||
dsc->data = image_desc->data;
|
||||
dsc->data_size = image_desc->data_size;
|
||||
|
||||
return ESP_OK;
|
||||
}
|
||||
|
||||
static void image_format_close_cb(gfx_image_decoder_t *decoder, gfx_image_decoder_dsc_t *dsc)
|
||||
{
|
||||
// Nothing to do for C_ARRAY format
|
||||
}
|
||||
|
||||
// AAF format decoder
|
||||
static esp_err_t aaf_format_info_cb(gfx_image_decoder_t *decoder, gfx_image_decoder_dsc_t *dsc, gfx_image_header_t *header)
|
||||
{
|
||||
if (dsc->src == NULL) {
|
||||
return ESP_ERR_INVALID_ARG;
|
||||
}
|
||||
|
||||
gfx_image_format_t format = gfx_image_detect_format(dsc->src);
|
||||
if (format != GFX_IMAGE_FORMAT_AAF) {
|
||||
return ESP_ERR_INVALID_ARG;
|
||||
}
|
||||
|
||||
// // Parse AAF header to get basic info
|
||||
// const uint8_t *aaf_data = (const uint8_t *)dsc->src;
|
||||
|
||||
// // Skip magic (4 bytes)
|
||||
// uint32_t total_files = *(uint32_t *)(aaf_data + 4);
|
||||
// uint32_t checksum = *(uint32_t *)(aaf_data + 8);
|
||||
// uint32_t data_length = *(uint32_t *)(aaf_data + 12);
|
||||
|
||||
// For AAF, we can't easily determine width/height without parsing the first frame
|
||||
// So we'll set default values and let the animation system handle the details
|
||||
// header->magic = 0x89414146; // 0x89 "AAF"
|
||||
// header->cf = GFX_COLOR_FORMAT_RGB565; // Default to RGB565
|
||||
// header->w = 0; // Will be determined when frames are loaded
|
||||
// header->h = 0; // Will be determined when frames are loaded
|
||||
// header->stride = 0; // Will be calculated based on actual dimensions
|
||||
// header->reserved = total_files; // Store frame count in reserved field
|
||||
|
||||
return ESP_OK;
|
||||
}
|
||||
|
||||
static esp_err_t aaf_format_open_cb(gfx_image_decoder_t *decoder, gfx_image_decoder_dsc_t *dsc)
|
||||
{
|
||||
if (dsc->src == NULL) {
|
||||
return ESP_ERR_INVALID_ARG;
|
||||
}
|
||||
|
||||
gfx_image_format_t format = gfx_image_detect_format(dsc->src);
|
||||
if (format != GFX_IMAGE_FORMAT_AAF) {
|
||||
return ESP_ERR_INVALID_ARG;
|
||||
}
|
||||
|
||||
// For AAF format, we return the entire file data
|
||||
// The animation system will handle frame extraction
|
||||
dsc->data = (const uint8_t *)dsc->src;
|
||||
dsc->data_size = 0; // Size will be determined by the animation system
|
||||
|
||||
return ESP_OK;
|
||||
}
|
||||
|
||||
static void aaf_format_close_cb(gfx_image_decoder_t *decoder, gfx_image_decoder_dsc_t *dsc)
|
||||
{
|
||||
// Nothing to do for AAF format
|
||||
}
|
||||
|
||||
/*=====================
|
||||
* Initialization
|
||||
*====================*/
|
||||
|
||||
esp_err_t gfx_image_decoder_init(void)
|
||||
{
|
||||
// Register built-in decoders
|
||||
esp_err_t ret = gfx_image_decoder_register(&image_decoder);
|
||||
if (ret != ESP_OK) {
|
||||
return ret;
|
||||
}
|
||||
|
||||
ret = gfx_image_decoder_register(&aaf_decoder);
|
||||
if (ret != ESP_OK) {
|
||||
return ret;
|
||||
}
|
||||
|
||||
ESP_LOGI(TAG, "Image decoder system initialized with %d decoders", decoder_count);
|
||||
return ESP_OK;
|
||||
}
|
||||
|
||||
esp_err_t gfx_image_decoder_deinit(void)
|
||||
{
|
||||
// Clear all registered decoders
|
||||
for (int i = 0; i < decoder_count; i++) {
|
||||
registered_decoders[i] = NULL;
|
||||
}
|
||||
|
||||
// Reset decoder count
|
||||
decoder_count = 0;
|
||||
|
||||
ESP_LOGI(TAG, "Image decoder system deinitialized");
|
||||
return ESP_OK;
|
||||
}
|
||||
@@ -0,0 +1,85 @@
|
||||
/*
|
||||
* SPDX-FileCopyrightText: 2022-2024 Espressif Systems (Shanghai) CO LTD
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
#include "decoder/gfx_jpeg_dec.h"
|
||||
#include "esp_log.h"
|
||||
#include "esp_check.h"
|
||||
#include "esp_jpeg_dec.h"
|
||||
|
||||
static const char *TAG = "gfx_jpeg_dec";
|
||||
|
||||
esp_err_t gfx_jpeg_decode(const uint8_t *in, uint32_t insize, uint8_t *out, size_t out_size, uint32_t *w, uint32_t *h, bool swap)
|
||||
{
|
||||
ESP_RETURN_ON_FALSE(in && out && w && h, ESP_ERR_INVALID_ARG, TAG, "Invalid arguments");
|
||||
ESP_RETURN_ON_FALSE(out_size > 0, ESP_ERR_INVALID_SIZE, TAG, "Invalid output buffer size");
|
||||
|
||||
jpeg_error_t ret;
|
||||
jpeg_dec_config_t config = {
|
||||
.output_type = swap ? JPEG_PIXEL_FORMAT_RGB565_BE : JPEG_PIXEL_FORMAT_RGB565_LE,
|
||||
.rotate = JPEG_ROTATE_0D,
|
||||
};
|
||||
|
||||
jpeg_dec_handle_t jpeg_dec;
|
||||
jpeg_dec_open(&config, &jpeg_dec);
|
||||
if (!jpeg_dec) {
|
||||
ESP_LOGE(TAG, "Failed to open jpeg decoder");
|
||||
return ESP_FAIL;
|
||||
}
|
||||
|
||||
jpeg_dec_io_t *jpeg_io = malloc(sizeof(jpeg_dec_io_t));
|
||||
jpeg_dec_header_info_t *out_info = malloc(sizeof(jpeg_dec_header_info_t));
|
||||
if (!jpeg_io || !out_info) {
|
||||
if (jpeg_io) {
|
||||
free(jpeg_io);
|
||||
}
|
||||
if (out_info) {
|
||||
free(out_info);
|
||||
}
|
||||
jpeg_dec_close(jpeg_dec);
|
||||
ESP_LOGE(TAG, "Failed to allocate memory for jpeg decoder");
|
||||
return ESP_FAIL;
|
||||
}
|
||||
|
||||
jpeg_io->inbuf = (unsigned char *)in;
|
||||
jpeg_io->inbuf_len = insize;
|
||||
|
||||
ret = jpeg_dec_parse_header(jpeg_dec, jpeg_io, out_info);
|
||||
if (ret == JPEG_ERR_OK) {
|
||||
*w = out_info->width;
|
||||
*h = out_info->height;
|
||||
|
||||
size_t required_size = out_info->width * out_info->height * 2; // RGB565 = 2 bytes per pixel
|
||||
if (out_size < required_size) {
|
||||
ESP_LOGE(TAG, "Output buffer too small: need %zu, got %zu", required_size, out_size);
|
||||
free(jpeg_io);
|
||||
free(out_info);
|
||||
jpeg_dec_close(jpeg_dec);
|
||||
return ESP_ERR_INVALID_SIZE;
|
||||
}
|
||||
|
||||
jpeg_io->outbuf = out;
|
||||
ret = jpeg_dec_process(jpeg_dec, jpeg_io);
|
||||
if (ret != JPEG_ERR_OK) {
|
||||
free(jpeg_io);
|
||||
free(out_info);
|
||||
jpeg_dec_close(jpeg_dec);
|
||||
ESP_LOGE(TAG, "Failed to decode jpeg:[%d]", ret);
|
||||
return ESP_FAIL;
|
||||
}
|
||||
} else {
|
||||
free(jpeg_io);
|
||||
free(out_info);
|
||||
jpeg_dec_close(jpeg_dec);
|
||||
ESP_LOGE(TAG, "Failed to parse jpeg header");
|
||||
return ESP_FAIL;
|
||||
}
|
||||
|
||||
free(jpeg_io);
|
||||
free(out_info);
|
||||
jpeg_dec_close(jpeg_dec);
|
||||
|
||||
return ESP_OK;
|
||||
}
|
||||
@@ -0,0 +1,587 @@
|
||||
/*
|
||||
* SPDX-FileCopyrightText: 2024 Espressif Systems (Shanghai) CO LTD
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
#include <string.h>
|
||||
#include "freertos/FreeRTOS.h"
|
||||
#include "freertos/task.h"
|
||||
#include "esp_err.h"
|
||||
#include "esp_log.h"
|
||||
#include "esp_check.h"
|
||||
#include "core/gfx_core.h"
|
||||
#include "core/gfx_obj.h"
|
||||
#include "widget/gfx_anim.h"
|
||||
#include "widget/gfx_comm.h"
|
||||
#include "decoder/gfx_aaf_dec.h"
|
||||
#include "decoder/gfx_jpeg_dec.h"
|
||||
#include "widget/gfx_font_internal.h"
|
||||
#include "widget/gfx_anim_internal.h"
|
||||
#include "core/gfx_obj_internal.h"
|
||||
#include "decoder/gfx_aaf_format.h"
|
||||
|
||||
static const char *TAG = "gfx_anim";
|
||||
|
||||
/*********************
|
||||
* DEFINES
|
||||
*********************/
|
||||
|
||||
/**********************
|
||||
* TYPEDEFS
|
||||
**********************/
|
||||
|
||||
/**********************
|
||||
* STATIC PROTOTYPES
|
||||
**********************/
|
||||
|
||||
static esp_err_t gfx_anim_decode_block(const uint8_t *data, const uint32_t *offsets, const gfx_aaf_header_t *header,
|
||||
int block, uint8_t *decode_buffer, int width, int block_height, bool swap_color);
|
||||
static void gfx_anim_render_4bit_pixels(gfx_color_t *dest_buf, gfx_coord_t dest_stride,
|
||||
const uint8_t *src_buf, gfx_coord_t src_stride,
|
||||
const gfx_aaf_header_t *header, uint32_t *palette_cache,
|
||||
gfx_area_t *clip_area, bool swap_color,
|
||||
bool mirror_enabled, int16_t mirror_offset, int dest_x_offset);
|
||||
static void gfx_anim_render_8bit_pixels(gfx_color_t *dest_buf, gfx_coord_t dest_stride,
|
||||
const uint8_t *src_buf, gfx_coord_t src_stride,
|
||||
const gfx_aaf_header_t *header, uint32_t *palette_cache,
|
||||
gfx_area_t *clip_area, bool swap_color,
|
||||
bool mirror_enabled, int16_t mirror_offset, int dest_x_offset);
|
||||
|
||||
static void gfx_anim_render_24bit_pixels(gfx_color_t *dest_buf, gfx_coord_t dest_stride,
|
||||
const uint8_t *src_buf, gfx_coord_t src_stride,
|
||||
gfx_area_t *clip_area, bool swap_color,
|
||||
bool mirror_enabled, int16_t mirror_offset, int dest_x_offset);
|
||||
|
||||
/**
|
||||
* @brief Free frame processing information and allocated resources
|
||||
* @param frame Frame processing information structure
|
||||
*/
|
||||
void gfx_anim_free_frame_info(gfx_anim_frame_info_t *frame)
|
||||
{
|
||||
// Free previously parsed header if exists
|
||||
if (frame->header.width > 0) { // Check if header data is valid instead of header_valid flag
|
||||
gfx_aaf_free_header(&frame->header);
|
||||
memset(&frame->header, 0, sizeof(gfx_aaf_header_t)); // Clear header data
|
||||
}
|
||||
|
||||
// Free previously allocated parsing resources if exists
|
||||
if (frame->block_offsets) {
|
||||
free(frame->block_offsets);
|
||||
frame->block_offsets = NULL;
|
||||
}
|
||||
if (frame->pixel_buffer) {
|
||||
free(frame->pixel_buffer);
|
||||
frame->pixel_buffer = NULL;
|
||||
}
|
||||
if (frame->color_palette) {
|
||||
free(frame->color_palette);
|
||||
frame->color_palette = NULL;
|
||||
}
|
||||
|
||||
// Clear frame data
|
||||
frame->frame_data = NULL;
|
||||
frame->frame_size = 0;
|
||||
frame->last_block = -1;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Preprocess animation frame data and allocate parsing resources
|
||||
* @param anim Animation property structure
|
||||
* @return true if preprocessing was successful, false otherwise
|
||||
*/
|
||||
bool gfx_anim_preprocess_frame(gfx_anim_property_t *anim)
|
||||
{
|
||||
// Free previous frame info and allocated resources
|
||||
gfx_anim_free_frame_info(&anim->frame);
|
||||
|
||||
const void *frame_data = gfx_aaf_format_get_frame_data(anim->file_desc, anim->current_frame);
|
||||
size_t frame_size = gfx_aaf_format_get_frame_size(anim->file_desc, anim->current_frame);
|
||||
|
||||
if (frame_data == NULL) {
|
||||
ESP_LOGW(TAG, "Failed to get frame data for frame %lu", anim->current_frame);
|
||||
return false;
|
||||
}
|
||||
|
||||
anim->frame.frame_data = frame_data;
|
||||
anim->frame.frame_size = frame_size;
|
||||
|
||||
gfx_aaf_format_t format = gfx_aaf_parse_header(frame_data, frame_size, &anim->frame.header);
|
||||
if (format != GFX_AAF_FORMAT_SBMP) {
|
||||
ESP_LOGW(TAG, "Failed to parse header for frame %lu, format: %d", anim->current_frame, format);
|
||||
return false;
|
||||
}
|
||||
|
||||
// Pre-allocate parsing resources and calculate offsets
|
||||
const gfx_aaf_header_t *header = &anim->frame.header;
|
||||
int aaf_blocks = header->blocks;
|
||||
int block_height = header->block_height;
|
||||
int width = header->width;
|
||||
uint16_t color_depth = 0;
|
||||
|
||||
// Allocate offsets array
|
||||
anim->frame.block_offsets = (uint32_t *)malloc(aaf_blocks * sizeof(uint32_t));
|
||||
if (anim->frame.block_offsets == NULL) {
|
||||
ESP_LOGE(TAG, "Failed to allocate memory for block offsets");
|
||||
return false;
|
||||
}
|
||||
|
||||
// Allocate decode buffer based on bit depth
|
||||
if (header->bit_depth == 4) {
|
||||
anim->frame.pixel_buffer = (uint8_t *)malloc(width * (block_height + (block_height % 2)) / 2);
|
||||
} else if (header->bit_depth == 8) {
|
||||
anim->frame.pixel_buffer = (uint8_t *)malloc(width * block_height);
|
||||
} else if (header->bit_depth == 24) {
|
||||
anim->frame.pixel_buffer = (uint8_t *)heap_caps_aligned_alloc(16, width * block_height * 2, MALLOC_CAP_DEFAULT);//esp_new_jpg needed aligned 16
|
||||
}
|
||||
if (anim->frame.pixel_buffer == NULL) {
|
||||
ESP_LOGE(TAG, "Failed to allocate memory for pixel buffer, bit_depth: %d", header->bit_depth);
|
||||
free(anim->frame.block_offsets);
|
||||
anim->frame.block_offsets = NULL;
|
||||
return false;
|
||||
}
|
||||
|
||||
// Determine color depth and allocate palette cache
|
||||
if (header->bit_depth == 4) {
|
||||
color_depth = 16;
|
||||
} else if (header->bit_depth == 8) {
|
||||
color_depth = 256;
|
||||
} else if (header->bit_depth == 24) {
|
||||
color_depth = 0;
|
||||
}
|
||||
|
||||
if (color_depth) {
|
||||
anim->frame.color_palette = (uint32_t *)heap_caps_malloc(color_depth * sizeof(uint32_t), MALLOC_CAP_INTERNAL | MALLOC_CAP_8BIT);
|
||||
if (anim->frame.color_palette == NULL) {
|
||||
ESP_LOGE(TAG, "Failed to allocate memory for color palette");
|
||||
free(anim->frame.pixel_buffer);
|
||||
free(anim->frame.block_offsets);
|
||||
anim->frame.pixel_buffer = NULL;
|
||||
anim->frame.block_offsets = NULL;
|
||||
return false;
|
||||
}
|
||||
|
||||
// Initialize palette cache
|
||||
for (int i = 0; i < color_depth; i++) {
|
||||
anim->frame.color_palette[i] = 0xFFFFFFFF; // Use 0xFFFFFFFF as sentinel value
|
||||
}
|
||||
}
|
||||
|
||||
// Calculate offsets
|
||||
gfx_aaf_calculate_offsets(header, anim->frame.block_offsets);
|
||||
|
||||
ESP_LOGD(TAG, "Pre-allocated parsing resources for frame %lu", anim->current_frame);
|
||||
return true;
|
||||
}
|
||||
|
||||
/**********************
|
||||
* GLOBAL FUNCTIONS
|
||||
**********************/
|
||||
|
||||
void gfx_draw_animation(gfx_obj_t *obj, int x1, int y1, int x2, int y2, const void *dest_buf, bool swap_color)
|
||||
{
|
||||
if (obj == NULL || obj->src == NULL) {
|
||||
ESP_LOGD(TAG, "Invalid object or source");
|
||||
return;
|
||||
}
|
||||
|
||||
if (obj->type != GFX_OBJ_TYPE_ANIMATION) {
|
||||
ESP_LOGW(TAG, "Object is not an animation type");
|
||||
return;
|
||||
}
|
||||
|
||||
gfx_anim_property_t *anim = (gfx_anim_property_t *)obj->src;
|
||||
|
||||
if (anim->file_desc == NULL) {
|
||||
ESP_LOGE(TAG, "Animation file descriptor is NULL");
|
||||
return;
|
||||
}
|
||||
|
||||
const void *frame_data;
|
||||
|
||||
if (anim->frame.frame_data != NULL) { // Check if frame data exists instead of data_ready flag
|
||||
frame_data = anim->frame.frame_data;
|
||||
} else {
|
||||
ESP_LOGD(TAG, "Frame data not ready for frame %lu", anim->current_frame);
|
||||
return;
|
||||
}
|
||||
|
||||
if (frame_data == NULL) {
|
||||
ESP_LOGD(TAG, "Failed to get frame data for frame %lu", anim->current_frame);
|
||||
return;
|
||||
}
|
||||
|
||||
// Get frame processing information
|
||||
if (anim->frame.header.width == 0) { // Check if header is valid instead of header_valid flag
|
||||
ESP_LOGD(TAG, "Header not valid for frame %lu", anim->current_frame);
|
||||
return;
|
||||
}
|
||||
|
||||
// Use pre-allocated parsing resources
|
||||
uint8_t *decode_buffer = anim->frame.pixel_buffer;
|
||||
uint32_t *offsets = anim->frame.block_offsets;
|
||||
uint32_t *palette_cache = anim->frame.color_palette;
|
||||
|
||||
if (!offsets || !decode_buffer) {
|
||||
ESP_LOGE(TAG, "Parsing resources not allocated for frame %lu", anim->current_frame);
|
||||
return;
|
||||
}
|
||||
|
||||
// Get header pointer for convenience
|
||||
const gfx_aaf_header_t *header = &anim->frame.header;
|
||||
|
||||
// Get screen dimensions for alignment calculation
|
||||
uint32_t parent_width, parent_height;
|
||||
if (obj->parent_handle != NULL) {
|
||||
esp_err_t ret = gfx_emote_get_screen_size(obj->parent_handle, &parent_width, &parent_height);
|
||||
if (ret != ESP_OK) {
|
||||
ESP_LOGW(TAG, "Failed to get screen size, using defaults");
|
||||
parent_width = DEFAULT_SCREEN_WIDTH;
|
||||
parent_height = DEFAULT_SCREEN_HEIGHT;
|
||||
}
|
||||
} else {
|
||||
parent_width = DEFAULT_SCREEN_WIDTH;
|
||||
parent_height = DEFAULT_SCREEN_HEIGHT;
|
||||
}
|
||||
|
||||
gfx_coord_t obj_x = obj->x;
|
||||
gfx_coord_t obj_y = obj->y;
|
||||
|
||||
obj->width = header->width;
|
||||
obj->height = header->height;
|
||||
|
||||
gfx_obj_calculate_aligned_position(obj, parent_width, parent_height, &obj_x, &obj_y);
|
||||
|
||||
gfx_area_t clip_object;
|
||||
clip_object.x1 = MAX(x1, obj_x);
|
||||
clip_object.y1 = MAX(y1, obj_y);
|
||||
clip_object.x2 = MIN(x2, obj_x + obj->width);
|
||||
clip_object.y2 = MIN(y2, obj_y + obj->height);
|
||||
|
||||
if (clip_object.x1 >= clip_object.x2 || clip_object.y1 >= clip_object.y2) {
|
||||
return;
|
||||
}
|
||||
|
||||
// Decode the frame
|
||||
int width = header->width;
|
||||
int height = header->height;
|
||||
int block_height = header->block_height;
|
||||
int aaf_blocks = header->blocks;
|
||||
int *last_block = &anim->frame.last_block;
|
||||
|
||||
// Process each AAF block that overlaps with the destination area
|
||||
for (int block = 0; block < aaf_blocks; block++) {
|
||||
int block_start_y = block * block_height;
|
||||
int block_end_y = (block == aaf_blocks - 1) ? height : (block + 1) * block_height;
|
||||
|
||||
int block_start_x = 0;
|
||||
int block_end_x = width;
|
||||
|
||||
block_start_y += obj_y;
|
||||
block_end_y += obj_y;
|
||||
block_start_x += obj_x;
|
||||
block_end_x += obj_x;
|
||||
|
||||
gfx_area_t clip_block;
|
||||
clip_block.x1 = MAX(clip_object.x1, block_start_x);
|
||||
clip_block.y1 = MAX(clip_object.y1, block_start_y);
|
||||
clip_block.x2 = MIN(clip_object.x2, block_end_x);
|
||||
clip_block.y2 = MIN(clip_object.y2, block_end_y);
|
||||
|
||||
if (clip_block.x1 >= clip_block.x2 || clip_block.y1 >= clip_block.y2) {
|
||||
continue;
|
||||
}
|
||||
|
||||
// Calculate source buffer offset relative to the decoded block data
|
||||
int src_offset_x = clip_block.x1 - block_start_x;
|
||||
int src_offset_y = clip_block.y1 - block_start_y;
|
||||
|
||||
// Check if source offsets are within valid range before decoding
|
||||
if (src_offset_x < 0 || src_offset_y < 0 ||
|
||||
src_offset_x >= width || src_offset_y >= block_height) {
|
||||
continue;
|
||||
}
|
||||
|
||||
// Decode block if not already decoded
|
||||
if (block != *last_block) {
|
||||
esp_err_t decode_result = gfx_anim_decode_block(frame_data, offsets, header, block, decode_buffer, width, block_height, swap_color);
|
||||
if (decode_result != ESP_OK) {
|
||||
continue;
|
||||
}
|
||||
*last_block = block;
|
||||
}
|
||||
|
||||
gfx_coord_t dest_buffer_stride = (x2 - x1);
|
||||
gfx_coord_t source_buffer_stride = width;
|
||||
|
||||
uint8_t *source_pixels = NULL;
|
||||
|
||||
if (header->bit_depth == 24) {// RGB565
|
||||
source_pixels = decode_buffer + src_offset_y * (source_buffer_stride * 2) + src_offset_x * 2;
|
||||
} else if (header->bit_depth == 4) {
|
||||
source_pixels = decode_buffer + src_offset_y * (source_buffer_stride / 2) + src_offset_x / 2;
|
||||
} else {
|
||||
source_pixels = decode_buffer + src_offset_y * source_buffer_stride + src_offset_x;
|
||||
}
|
||||
|
||||
int dest_x_offset = clip_block.x1 - x1;
|
||||
|
||||
gfx_color_t *dest_pixels = (gfx_color_t *)dest_buf + (clip_block.y1 - y1) * dest_buffer_stride + dest_x_offset;
|
||||
|
||||
if (header->bit_depth == 4) {
|
||||
gfx_anim_render_4bit_pixels(
|
||||
dest_pixels,
|
||||
dest_buffer_stride,
|
||||
source_pixels,
|
||||
source_buffer_stride,
|
||||
header, palette_cache,
|
||||
&clip_block,
|
||||
swap_color, anim->mirror_enabled, anim->mirror_offset, dest_x_offset);
|
||||
} else if (header->bit_depth == 8) {
|
||||
gfx_anim_render_8bit_pixels(
|
||||
dest_pixels,
|
||||
dest_buffer_stride,
|
||||
source_pixels,
|
||||
source_buffer_stride,
|
||||
header, palette_cache,
|
||||
&clip_block,
|
||||
swap_color,
|
||||
anim->mirror_enabled, anim->mirror_offset, dest_x_offset);
|
||||
} else if (header->bit_depth == 24) {
|
||||
gfx_anim_render_24bit_pixels(
|
||||
dest_pixels,
|
||||
dest_buffer_stride,
|
||||
source_pixels,
|
||||
source_buffer_stride,
|
||||
&clip_block,
|
||||
swap_color,
|
||||
anim->mirror_enabled, anim->mirror_offset, dest_x_offset);
|
||||
} else {
|
||||
ESP_LOGE(TAG, "Unsupported bit depth: %d", header->bit_depth);
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
obj->is_dirty = false;
|
||||
}
|
||||
|
||||
/*=====================
|
||||
* Static helper functions
|
||||
*====================*/
|
||||
static esp_err_t gfx_anim_decode_block(const uint8_t *data, const uint32_t *offsets, const gfx_aaf_header_t *header,
|
||||
int block, uint8_t *decode_buffer, int width, int block_height, bool swap_color)
|
||||
{
|
||||
const uint8_t *block_data = data + offsets[block];
|
||||
int block_len = header->block_len[block];
|
||||
uint8_t encoding_type = block_data[0];
|
||||
|
||||
esp_err_t decode_result = ESP_FAIL;
|
||||
|
||||
if (encoding_type == GFX_AAF_ENCODING_RLE) {
|
||||
size_t rle_out_len = width * block_height;
|
||||
|
||||
decode_result = gfx_aaf_rle_decode(block_data + 1, block_len - 1,
|
||||
decode_buffer, rle_out_len);
|
||||
} else if (encoding_type == GFX_AAF_ENCODING_HUFFMAN) {
|
||||
size_t rle_out_len = width * block_height;
|
||||
|
||||
uint8_t *huffman_buffer = malloc(rle_out_len);
|
||||
if (huffman_buffer == NULL) {
|
||||
ESP_LOGE(TAG, "Failed to allocate memory for Huffman buffer");
|
||||
return ESP_FAIL;
|
||||
}
|
||||
|
||||
size_t huffman_out_len = 0;
|
||||
gfx_aaf_huffman_decode(block_data, block_len, huffman_buffer, &huffman_out_len);
|
||||
|
||||
if (huffman_out_len > rle_out_len) {
|
||||
ESP_LOGE(TAG, "Huffman output size mismatch: expected %d, got %d", rle_out_len, huffman_out_len);
|
||||
free(huffman_buffer);
|
||||
return ESP_FAIL;
|
||||
}
|
||||
|
||||
decode_result = gfx_aaf_rle_decode(huffman_buffer, huffman_out_len,
|
||||
decode_buffer, rle_out_len);
|
||||
free(huffman_buffer);
|
||||
} else if (encoding_type == GFX_AAF_ENCODING_HUFFMAN_DIRECT) {
|
||||
size_t huffman_out_len = 0;
|
||||
esp_err_t huffman_ret = gfx_aaf_huffman_decode(block_data, block_len, decode_buffer, &huffman_out_len);
|
||||
if (huffman_ret != ESP_OK) {
|
||||
ESP_LOGE(TAG, "Direct Huffman decode failed for block %d", block);
|
||||
return ESP_FAIL;
|
||||
}
|
||||
|
||||
if (huffman_out_len != width * block_height) {
|
||||
ESP_LOGE(TAG, "Direct Huffman output size mismatch: expected %d, got %d", width * block_height, huffman_out_len);
|
||||
return ESP_FAIL;
|
||||
}
|
||||
|
||||
decode_result = ESP_OK;
|
||||
} else if (encoding_type == GFX_AAF_ENCODING_JPEG) {
|
||||
uint32_t w, h;
|
||||
size_t jpg_out_len = width * block_height * 2; // RGB565 = 2 bytes per pixel
|
||||
esp_err_t jpeg_ret = gfx_jpeg_decode(block_data + 1, block_len - 1, decode_buffer, jpg_out_len, &w, &h, swap_color);
|
||||
if (jpeg_ret != ESP_OK) {
|
||||
ESP_LOGE(TAG, "JPEG decode failed: %s", esp_err_to_name(jpeg_ret));
|
||||
return ESP_FAIL;
|
||||
}
|
||||
|
||||
decode_result = ESP_OK;
|
||||
} else {
|
||||
ESP_LOGE(TAG, "Unknown encoding type: %02X", encoding_type);
|
||||
return ESP_FAIL;
|
||||
}
|
||||
|
||||
if (decode_result != ESP_OK) {
|
||||
ESP_LOGE(TAG, "Failed to decode block %d", block);
|
||||
return ESP_FAIL;
|
||||
}
|
||||
|
||||
return ESP_OK;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Render 4-bit pixels directly to destination buffer
|
||||
* @param dest_buf Destination buffer
|
||||
* @param dest_stride Destination buffer stride
|
||||
* @param src_buf Source buffer data
|
||||
* @param src_stride Source buffer stride
|
||||
* @param header Image header
|
||||
* @param palette_cache Palette cache
|
||||
* @param clip_area Clipping area
|
||||
* @param swap_color Whether to swap color bytes
|
||||
* @param mirror_enabled Whether mirror is enabled
|
||||
* @param mirror_offset Mirror offset
|
||||
* @param dest_x_offset Destination buffer x offset
|
||||
*/
|
||||
static void gfx_anim_render_4bit_pixels(gfx_color_t *dest_buf, gfx_coord_t dest_stride,
|
||||
const uint8_t *src_buf, gfx_coord_t src_stride,
|
||||
const gfx_aaf_header_t *header, uint32_t *palette_cache,
|
||||
gfx_area_t *clip_area, bool swap_color,
|
||||
bool mirror_enabled, int16_t mirror_offset, int dest_x_offset)
|
||||
{
|
||||
int width = header->width;
|
||||
int clip_w = clip_area->x2 - clip_area->x1;
|
||||
int clip_h = clip_area->y2 - clip_area->y1;
|
||||
|
||||
for (int y = 0; y < clip_h; y++) {
|
||||
for (int x = 0; x < clip_w; x += 2) {
|
||||
uint8_t packed_gray = src_buf[y * src_stride / 2 + (x / 2)];
|
||||
uint8_t index1 = (packed_gray & 0xF0) >> 4;
|
||||
uint8_t index2 = (packed_gray & 0x0F);
|
||||
|
||||
if (palette_cache[index1] == 0xFFFFFFFF) {
|
||||
gfx_color_t color = gfx_aaf_parse_palette(header, index1, swap_color);
|
||||
palette_cache[index1] = color.full;
|
||||
}
|
||||
|
||||
gfx_color_t color_val1;
|
||||
color_val1.full = (uint16_t)palette_cache[index1];
|
||||
dest_buf[y * dest_stride + x] = color_val1;
|
||||
|
||||
// Sync write to mirror position if mirror is enabled
|
||||
if (mirror_enabled) {
|
||||
int mirror_x = width + mirror_offset + width - 1 - x;
|
||||
|
||||
if (mirror_x >= 0 && (dest_x_offset + mirror_x) < dest_stride) {
|
||||
dest_buf[y * dest_stride + mirror_x] = color_val1;
|
||||
}
|
||||
}
|
||||
|
||||
if (palette_cache[index2] == 0xFFFFFFFF) {
|
||||
gfx_color_t color = gfx_aaf_parse_palette(header, index2, swap_color);
|
||||
palette_cache[index2] = color.full;
|
||||
}
|
||||
|
||||
gfx_color_t color_val2;
|
||||
color_val2.full = (uint16_t)palette_cache[index2];
|
||||
dest_buf[y * dest_stride + x + 1] = color_val2;
|
||||
|
||||
if (mirror_enabled) {
|
||||
int mirror_x = width + mirror_offset + width - 1 - (x + 1);
|
||||
|
||||
if (mirror_x >= 0 && (dest_x_offset + mirror_x) < dest_stride) {
|
||||
dest_buf[y * dest_stride + mirror_x] = color_val1;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Render 8-bit pixels directly to destination buffer
|
||||
* @param dest_buf Destination buffer
|
||||
* @param dest_stride Destination buffer stride
|
||||
* @param src_buf Source buffer data
|
||||
* @param src_stride Source buffer stride
|
||||
* @param header Image header
|
||||
* @param palette_cache Palette cache
|
||||
* @param clip_area Clipping area
|
||||
* @param swap_color Whether to swap color bytes
|
||||
* @param mirror_enabled Whether mirror is enabled
|
||||
* @param mirror_offset Mirror offset
|
||||
* @param dest_x_offset Destination buffer x offset
|
||||
*/
|
||||
static void gfx_anim_render_8bit_pixels(gfx_color_t *dest_buf, gfx_coord_t dest_stride,
|
||||
const uint8_t *src_buf, gfx_coord_t src_stride,
|
||||
const gfx_aaf_header_t *header, uint32_t *palette_cache,
|
||||
gfx_area_t *clip_area, bool swap_color,
|
||||
bool mirror_enabled, int16_t mirror_offset, int dest_x_offset)
|
||||
{
|
||||
int32_t w = clip_area->x2 - clip_area->x1;
|
||||
int32_t h = clip_area->y2 - clip_area->y1;
|
||||
int32_t width = header->width;
|
||||
|
||||
for (int32_t y = 0; y < h; y++) {
|
||||
for (int32_t x = 0; x < w; x++) {
|
||||
uint8_t index = src_buf[y * src_stride + x];
|
||||
if (palette_cache[index] == 0xFFFFFFFF) {
|
||||
gfx_color_t color = gfx_aaf_parse_palette(header, index, swap_color);
|
||||
palette_cache[index] = color.full;
|
||||
}
|
||||
|
||||
gfx_color_t color_val;
|
||||
color_val.full = (uint16_t)palette_cache[index];
|
||||
dest_buf[y * dest_stride + x] = color_val;
|
||||
|
||||
// Sync write to mirror position if mirror is enabled
|
||||
if (mirror_enabled) {
|
||||
int mirror_x = width + mirror_offset + width - 1 - x;
|
||||
|
||||
// Check boundary for mirror position
|
||||
if (mirror_x >= 0 && (dest_x_offset + mirror_x) < dest_stride) {
|
||||
dest_buf[y * dest_stride + mirror_x] = color_val;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static void gfx_anim_render_24bit_pixels(gfx_color_t *dest_buf, gfx_coord_t dest_stride,
|
||||
const uint8_t *src_buf, gfx_coord_t src_stride,
|
||||
gfx_area_t *clip_area, bool swap_color,
|
||||
bool mirror_enabled, int16_t mirror_offset, int dest_x_offset)
|
||||
{
|
||||
int32_t w = clip_area->x2 - clip_area->x1;
|
||||
int32_t h = clip_area->y2 - clip_area->y1;
|
||||
int32_t width = src_stride;
|
||||
|
||||
uint16_t *src_buf_16 = (uint16_t *)src_buf;
|
||||
uint16_t *dest_buf_16 = (uint16_t *)dest_buf;
|
||||
|
||||
for (int32_t y = 0; y < h; y++) {
|
||||
for (int32_t x = 0; x < w; x++) {
|
||||
dest_buf_16[y * dest_stride + x] = src_buf_16[y * src_stride + x];
|
||||
|
||||
// Sync write to mirror position if mirror is enabled
|
||||
if (mirror_enabled) {
|
||||
int mirror_x = width + mirror_offset + width - 1 - x;
|
||||
|
||||
// Check boundary for mirror position
|
||||
if (mirror_x >= 0 && (dest_x_offset + mirror_x) < dest_stride) {
|
||||
dest_buf_16[y * dest_stride + mirror_x] = src_buf_16[y * src_stride + x];
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,150 @@
|
||||
/*
|
||||
* SPDX-FileCopyrightText: 2024 Espressif Systems (Shanghai) CO LTD
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
#include <string.h>
|
||||
#include "esp_err.h"
|
||||
#include "esp_log.h"
|
||||
#include "esp_check.h"
|
||||
#include "core/gfx_core.h"
|
||||
#include "core/gfx_obj.h"
|
||||
#include "widget/gfx_img.h"
|
||||
#include "widget/gfx_img_internal.h"
|
||||
#include "core/gfx_blend_internal.h"
|
||||
#include "widget/gfx_comm.h"
|
||||
#include "widget/gfx_font_internal.h"
|
||||
#include "core/gfx_obj_internal.h"
|
||||
#include "decoder/gfx_img_decoder.h"
|
||||
|
||||
static const char *TAG = "gfx_img";
|
||||
|
||||
/*********************
|
||||
* DEFINES
|
||||
*********************/
|
||||
|
||||
/**********************
|
||||
* TYPEDEFS
|
||||
**********************/
|
||||
|
||||
/**********************
|
||||
* STATIC PROTOTYPES
|
||||
**********************/
|
||||
|
||||
/**********************
|
||||
* GLOBAL FUNCTIONS
|
||||
**********************/
|
||||
|
||||
void gfx_draw_img(gfx_obj_t *obj, int x1, int y1, int x2, int y2, const void *dest_buf, bool swap)
|
||||
{
|
||||
if (obj == NULL || obj->src == NULL) {
|
||||
ESP_LOGD(TAG, "Invalid object or source");
|
||||
return;
|
||||
}
|
||||
|
||||
if (obj->type != GFX_OBJ_TYPE_IMAGE) {
|
||||
ESP_LOGW(TAG, "Object is not an image type");
|
||||
return;
|
||||
}
|
||||
|
||||
// Use unified decoder to get image information
|
||||
gfx_image_header_t header;
|
||||
gfx_image_decoder_dsc_t dsc = {
|
||||
.src = obj->src,
|
||||
};
|
||||
esp_err_t ret = gfx_image_decoder_info(&dsc, &header);
|
||||
if (ret != ESP_OK) {
|
||||
ESP_LOGE(TAG, "Failed to get image info");
|
||||
return;
|
||||
}
|
||||
|
||||
uint16_t image_width = header.w;
|
||||
uint16_t image_height = header.h;
|
||||
uint8_t color_format = header.cf;
|
||||
|
||||
// Check color format - support RGB565A8 format
|
||||
if (color_format != GFX_COLOR_FORMAT_RGB565A8) {
|
||||
ESP_LOGW(TAG, "Unsupported color format: 0x%02X, only RGB565A8 (0x%02X) is supported",
|
||||
color_format, GFX_COLOR_FORMAT_RGB565A8);
|
||||
return;
|
||||
}
|
||||
|
||||
// Get image data using unified decoder
|
||||
gfx_image_decoder_dsc_t decoder_dsc = {
|
||||
.src = obj->src,
|
||||
.header = header,
|
||||
.data = NULL,
|
||||
.data_size = 0,
|
||||
.user_data = NULL
|
||||
};
|
||||
|
||||
ret = gfx_image_decoder_open(&decoder_dsc);
|
||||
if (ret != ESP_OK) {
|
||||
ESP_LOGE(TAG, "Failed to open image decoder");
|
||||
return;
|
||||
}
|
||||
|
||||
const uint8_t *image_data = decoder_dsc.data;
|
||||
if (image_data == NULL) {
|
||||
ESP_LOGE(TAG, "No image data available");
|
||||
gfx_image_decoder_close(&decoder_dsc);
|
||||
return;
|
||||
}
|
||||
|
||||
ESP_LOGD(TAG, "Drawing image: %dx%d, format: 0x%02X", image_width, image_height, color_format);
|
||||
|
||||
// Get parent container dimensions for alignment calculation
|
||||
uint32_t parent_width, parent_height;
|
||||
if (obj->parent_handle != NULL) {
|
||||
esp_err_t ret = gfx_emote_get_screen_size(obj->parent_handle, &parent_width, &parent_height);
|
||||
if (ret != ESP_OK) {
|
||||
ESP_LOGW(TAG, "Failed to get screen size, using defaults");
|
||||
parent_width = DEFAULT_SCREEN_WIDTH;
|
||||
parent_height = DEFAULT_SCREEN_HEIGHT;
|
||||
}
|
||||
} else {
|
||||
parent_width = DEFAULT_SCREEN_WIDTH;
|
||||
parent_height = DEFAULT_SCREEN_HEIGHT;
|
||||
}
|
||||
|
||||
gfx_coord_t obj_x = obj->x;
|
||||
gfx_coord_t obj_y = obj->y;
|
||||
|
||||
gfx_obj_calculate_aligned_position(obj, parent_width, parent_height, &obj_x, &obj_y);
|
||||
|
||||
gfx_area_t clip_region;
|
||||
clip_region.x1 = MAX(x1, obj_x);
|
||||
clip_region.y1 = MAX(y1, obj_y);
|
||||
clip_region.x2 = MIN(x2, obj_x + image_width);
|
||||
clip_region.y2 = MIN(y2, obj_y + image_height);
|
||||
|
||||
// Check if there's any overlap
|
||||
if (clip_region.x1 >= clip_region.x2 || clip_region.y1 >= clip_region.y2) {
|
||||
gfx_image_decoder_close(&decoder_dsc);
|
||||
return;
|
||||
}
|
||||
|
||||
gfx_coord_t dest_buffer_stride = (x2 - x1);
|
||||
gfx_coord_t source_buffer_stride = image_width;
|
||||
|
||||
// Calculate data pointers based on format
|
||||
gfx_color_t *source_pixels = (gfx_color_t *)(image_data + (clip_region.y1 - obj_y) * source_buffer_stride * 2);
|
||||
gfx_opa_t *alpha_mask = (gfx_opa_t *)(image_data + source_buffer_stride * image_height * 2 + (clip_region.y1 - obj_y) * source_buffer_stride);
|
||||
gfx_color_t *dest_pixels = (gfx_color_t *)dest_buf + (clip_region.y1 - y1) * dest_buffer_stride + (clip_region.x1 - x1);
|
||||
|
||||
gfx_sw_blend_img_draw(
|
||||
dest_pixels,
|
||||
dest_buffer_stride,
|
||||
source_pixels,
|
||||
source_buffer_stride,
|
||||
alpha_mask,
|
||||
source_buffer_stride,
|
||||
&clip_region,
|
||||
255,
|
||||
swap
|
||||
);
|
||||
|
||||
// Close decoder
|
||||
gfx_image_decoder_close(&decoder_dsc);
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,224 @@
|
||||
/*
|
||||
* SPDX-FileCopyrightText: 2024 Espressif Systems (Shanghai) CO LTD
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
#include <string.h>
|
||||
#include <stdlib.h>
|
||||
#include "esp_log.h"
|
||||
#include "esp_check.h"
|
||||
#include "widget/gfx_font_parser.h"
|
||||
|
||||
/*********************
|
||||
* DEFINES
|
||||
*********************/
|
||||
|
||||
static const char *TAG = "gfx_font_parser";
|
||||
|
||||
/**********************
|
||||
* STATIC FUNCTIONS
|
||||
**********************/
|
||||
|
||||
/**
|
||||
* Map unicode character to glyph index using LVGL character mapping
|
||||
*/
|
||||
static uint32_t gfx_font_get_glyph_index(const gfx_lvgl_font_t *font, uint32_t unicode)
|
||||
{
|
||||
if (!font || !font->dsc || !font->dsc->cmaps) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
const gfx_font_fmt_txt_dsc_t *dsc = font->dsc;
|
||||
|
||||
for (uint16_t i = 0; i < dsc->cmap_num; i++) {
|
||||
const gfx_font_cmap_t *cmap = &dsc->cmaps[i];
|
||||
|
||||
if (unicode < cmap->range_start) {
|
||||
continue;
|
||||
}
|
||||
|
||||
if (cmap->type == GFX_FONT_FMT_TXT_CMAP_FORMAT0_TINY) {
|
||||
// Simple range mapping
|
||||
if (unicode >= cmap->range_start &&
|
||||
unicode < cmap->range_start + cmap->range_length) {
|
||||
return cmap->glyph_id_start + (unicode - cmap->range_start);
|
||||
}
|
||||
}
|
||||
// Add support for other mapping types as needed
|
||||
}
|
||||
|
||||
return 0; // Glyph not found
|
||||
}
|
||||
|
||||
/**
|
||||
* Convert external LVGL font structures to internal format
|
||||
*/
|
||||
static esp_err_t convert_external_font_structures(const void *external_font, gfx_lvgl_font_t *internal_font)
|
||||
{
|
||||
// This is a simplified conversion - you may need to adjust based on your actual LVGL font structure
|
||||
// The external font should have a similar structure but with potentially different field names
|
||||
|
||||
// For now, we'll assume the external font has the same structure as our internal format
|
||||
// In practice, you might need to map fields differently
|
||||
|
||||
// Cast to a temporary structure that matches your external font format
|
||||
typedef struct {
|
||||
const void *get_glyph_dsc;
|
||||
const void *get_glyph_bitmap;
|
||||
uint16_t line_height;
|
||||
uint16_t base_line;
|
||||
uint8_t subpx;
|
||||
int8_t underline_position;
|
||||
uint8_t underline_thickness;
|
||||
bool static_bitmap;
|
||||
const void *dsc; // This points to the font descriptor
|
||||
const void *fallback;
|
||||
const void *user_data;
|
||||
} external_lv_font_t;
|
||||
|
||||
const external_lv_font_t *ext_font = (const external_lv_font_t *)external_font;
|
||||
|
||||
// Copy the font properties
|
||||
internal_font->get_glyph_dsc = ext_font->get_glyph_dsc;
|
||||
internal_font->get_glyph_bitmap = ext_font->get_glyph_bitmap;
|
||||
internal_font->line_height = ext_font->line_height;
|
||||
internal_font->base_line = ext_font->base_line;
|
||||
internal_font->subpx = ext_font->subpx;
|
||||
internal_font->underline_position = ext_font->underline_position;
|
||||
internal_font->underline_thickness = ext_font->underline_thickness;
|
||||
internal_font->static_bitmap = ext_font->static_bitmap;
|
||||
internal_font->fallback = ext_font->fallback;
|
||||
internal_font->user_data = ext_font->user_data;
|
||||
|
||||
// Convert the font descriptor
|
||||
if (ext_font->dsc) {
|
||||
// Cast the external descriptor to our internal format
|
||||
// Note: This assumes the structures are compatible
|
||||
internal_font->dsc = (const gfx_font_fmt_txt_dsc_t *)ext_font->dsc;
|
||||
} else {
|
||||
internal_font->dsc = NULL;
|
||||
}
|
||||
|
||||
return ESP_OK;
|
||||
}
|
||||
|
||||
/**********************
|
||||
* GLOBAL FUNCTIONS
|
||||
**********************/
|
||||
|
||||
esp_err_t gfx_parse_lvgl_font(const gfx_lvgl_font_t *font_data, const char *font_name, gfx_font_handle_t **ret_handle)
|
||||
{
|
||||
ESP_RETURN_ON_FALSE(font_data && font_name && ret_handle, ESP_ERR_INVALID_ARG, TAG, "invalid arguments");
|
||||
|
||||
// Allocate font handle
|
||||
gfx_font_handle_t *handle = (gfx_font_handle_t *)calloc(1, sizeof(gfx_font_handle_t));
|
||||
ESP_RETURN_ON_FALSE(handle, ESP_ERR_NO_MEM, TAG, "no memory for font handle");
|
||||
|
||||
// Allocate name string
|
||||
handle->name = strdup(font_name);
|
||||
if (!handle->name) {
|
||||
free(handle);
|
||||
ESP_RETURN_ON_ERROR(ESP_ERR_NO_MEM, TAG, "no memory for font name");
|
||||
}
|
||||
|
||||
// Set font type and data
|
||||
handle->type = GFX_FONT_TYPE_LVGL_C;
|
||||
handle->font.lvgl_font = font_data;
|
||||
|
||||
*ret_handle = handle;
|
||||
|
||||
ESP_LOGI(TAG, "Parsed LVGL font: %s", font_name);
|
||||
|
||||
return ESP_OK;
|
||||
}
|
||||
|
||||
esp_err_t gfx_convert_external_lvgl_font(const void *external_font, const char *font_name, gfx_font_handle_t **ret_handle)
|
||||
{
|
||||
ESP_RETURN_ON_FALSE(external_font && font_name && ret_handle, ESP_ERR_INVALID_ARG, TAG, "invalid arguments");
|
||||
|
||||
// Allocate font handle
|
||||
gfx_font_handle_t *handle = (gfx_font_handle_t *)calloc(1, sizeof(gfx_font_handle_t));
|
||||
ESP_RETURN_ON_FALSE(handle, ESP_ERR_NO_MEM, TAG, "no memory for font handle");
|
||||
|
||||
// Allocate internal font structure
|
||||
gfx_lvgl_font_t *internal_font = (gfx_lvgl_font_t *)calloc(1, sizeof(gfx_lvgl_font_t));
|
||||
if (!internal_font) {
|
||||
free(handle);
|
||||
ESP_RETURN_ON_ERROR(ESP_ERR_NO_MEM, TAG, "no memory for internal font");
|
||||
}
|
||||
|
||||
// Convert external font structure to internal format
|
||||
esp_err_t ret = convert_external_font_structures(external_font, internal_font);
|
||||
if (ret != ESP_OK) {
|
||||
free(internal_font);
|
||||
free(handle);
|
||||
ESP_RETURN_ON_ERROR(ret, TAG, "failed to convert external font");
|
||||
}
|
||||
|
||||
// Allocate name string
|
||||
handle->name = strdup(font_name);
|
||||
if (!handle->name) {
|
||||
free(internal_font);
|
||||
free(handle);
|
||||
ESP_RETURN_ON_ERROR(ESP_ERR_NO_MEM, TAG, "no memory for font name");
|
||||
}
|
||||
|
||||
// Set font type and data
|
||||
handle->type = GFX_FONT_TYPE_LVGL_C;
|
||||
handle->font.lvgl_font = internal_font;
|
||||
|
||||
*ret_handle = handle;
|
||||
|
||||
ESP_LOGI(TAG, "Converted external LVGL font: %s", font_name);
|
||||
|
||||
return ESP_OK;
|
||||
}
|
||||
|
||||
bool gfx_lvgl_font_get_glyph_dsc(const gfx_lvgl_font_t *font, uint32_t unicode, gfx_font_glyph_dsc_t *glyph_dsc)
|
||||
{
|
||||
if (!font || !glyph_dsc || !font->dsc) {
|
||||
return false;
|
||||
}
|
||||
|
||||
uint32_t glyph_index = gfx_font_get_glyph_index(font, unicode);
|
||||
if (glyph_index == 0) {
|
||||
return false; // Glyph not found
|
||||
}
|
||||
|
||||
const gfx_font_fmt_txt_dsc_t *dsc = font->dsc;
|
||||
if (glyph_index >= 65536 || !dsc->glyph_dsc) { // Reasonable bounds check
|
||||
return false;
|
||||
}
|
||||
|
||||
// Copy glyph descriptor
|
||||
// Note: We assume glyph_dsc structure is compatible between external and internal formats
|
||||
const void *src_glyph = &dsc->glyph_dsc[glyph_index];
|
||||
memcpy(glyph_dsc, src_glyph, sizeof(gfx_font_glyph_dsc_t));
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
const uint8_t *gfx_lvgl_font_get_glyph_bitmap(const gfx_lvgl_font_t *font, const gfx_font_glyph_dsc_t *glyph_dsc)
|
||||
{
|
||||
if (!font || !glyph_dsc || !font->dsc || !font->dsc->glyph_bitmap) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
return &font->dsc->glyph_bitmap[glyph_dsc->bitmap_index];
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Get advance width for a character from LVGL font
|
||||
* @param font LVGL font structure
|
||||
* @param unicode Unicode character
|
||||
* @return Advance width in pixels (multiplied by 256 for sub-pixel precision)
|
||||
*/
|
||||
uint32_t gfx_lvgl_font_get_glyph_width(const gfx_lvgl_font_t *font, uint32_t unicode)
|
||||
{
|
||||
gfx_font_glyph_dsc_t glyph_dsc;
|
||||
if (gfx_lvgl_font_get_glyph_dsc(font, unicode, &glyph_dsc)) {
|
||||
return glyph_dsc.adv_w;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
# The following lines of boilerplate have to be in your project's CMakeLists
|
||||
# in this exact order for cmake to work correctly
|
||||
cmake_minimum_required(VERSION 3.5)
|
||||
set(EXTRA_COMPONENT_DIRS "$ENV{IDF_PATH}/tools/unit-test-app/components")
|
||||
include($ENV{IDF_PATH}/tools/cmake/project.cmake)
|
||||
project(test_anim_player)
|
||||
@@ -0,0 +1,12 @@
|
||||
|
||||
idf_component_register(
|
||||
SRC_DIRS "." "./assets"
|
||||
INCLUDE_DIRS "."
|
||||
)
|
||||
|
||||
spiffs_create_partition_assets(
|
||||
assets_8bit
|
||||
"../test_assets"
|
||||
FLASH_IN_PROJECT
|
||||
MMAP_FILE_SUPPORT_FORMAT ".aaf,.ttf,.bin"
|
||||
)
|
||||
@@ -0,0 +1,602 @@
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
#include "freertos/FreeRTOS.h"
|
||||
#include "freertos/task.h"
|
||||
#include "freertos/semphr.h"
|
||||
#include "esp_log.h"
|
||||
#include "unity.h"
|
||||
#include "unity_test_utils.h"
|
||||
#include "esp_heap_caps.h"
|
||||
#include "esp_lcd_panel_io.h"
|
||||
#include "esp_lcd_panel_vendor.h"
|
||||
#include "esp_lcd_panel_ops.h"
|
||||
#include "bsp/esp-bsp.h"
|
||||
#include "esp_timer.h"
|
||||
#include "esp_err.h"
|
||||
#include "esp_check.h"
|
||||
#include "driver/gpio.h"
|
||||
|
||||
#if CONFIG_IDF_TARGET_ESP32S3 && ESP_IDF_VERSION >= ESP_IDF_VERSION_VAL(5, 0, 0)
|
||||
#include "esp_lcd_panel_rgb.h"
|
||||
#endif
|
||||
|
||||
#include "gfx.h"
|
||||
#include "mmap_generate_test_assets.h"
|
||||
|
||||
static const char *TAG = "player";
|
||||
|
||||
#define TEST_MEMORY_LEAK_THRESHOLD (500)
|
||||
|
||||
extern const gfx_image_dsc_t icon1;
|
||||
extern const gfx_image_dsc_t icon5;
|
||||
|
||||
static size_t before_free_8bit;
|
||||
static size_t before_free_32bit;
|
||||
|
||||
static gfx_handle_t emote_handle = NULL;
|
||||
static esp_lcd_panel_io_handle_t io_handle = NULL;
|
||||
static esp_lcd_panel_handle_t panel_handle = NULL;
|
||||
|
||||
static gfx_obj_t *label_tips = NULL;
|
||||
|
||||
void setUp(void)
|
||||
{
|
||||
before_free_8bit = heap_caps_get_free_size(MALLOC_CAP_8BIT);
|
||||
before_free_32bit = heap_caps_get_free_size(MALLOC_CAP_32BIT);
|
||||
}
|
||||
|
||||
void tearDown(void)
|
||||
{
|
||||
size_t after_free_8bit = heap_caps_get_free_size(MALLOC_CAP_8BIT);
|
||||
size_t after_free_32bit = heap_caps_get_free_size(MALLOC_CAP_32BIT);
|
||||
unity_utils_check_leak(before_free_8bit, after_free_8bit, "8BIT", TEST_MEMORY_LEAK_THRESHOLD);
|
||||
unity_utils_check_leak(before_free_32bit, after_free_32bit, "32BIT", TEST_MEMORY_LEAK_THRESHOLD);
|
||||
}
|
||||
|
||||
static bool flush_io_ready(esp_lcd_panel_io_handle_t panel_io, esp_lcd_panel_io_event_data_t *edata, void *user_ctx)
|
||||
{
|
||||
gfx_handle_t emote_handle = (gfx_handle_t)user_ctx;
|
||||
if (emote_handle) {
|
||||
gfx_emote_flush_ready(emote_handle, true);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
static void flush_callback(gfx_handle_t emote_handle, int x1, int y1, int x2, int y2, const void *data)
|
||||
{
|
||||
esp_lcd_panel_handle_t panel = (esp_lcd_panel_handle_t)gfx_emote_get_user_data(emote_handle);
|
||||
esp_lcd_panel_draw_bitmap(panel, x1, y1, x2, y2, data);
|
||||
gfx_emote_flush_ready(emote_handle, true);
|
||||
}
|
||||
|
||||
void clock_tm_callback(void *user_data)
|
||||
{
|
||||
gfx_obj_t *label_obj = (gfx_obj_t *)user_data;
|
||||
if (label_obj) {
|
||||
gfx_label_set_text_fmt(label_obj, "%d*%d: %d", BSP_LCD_H_RES, BSP_LCD_V_RES, gfx_timer_get_actual_fps(emote_handle));
|
||||
}
|
||||
ESP_LOGI("FPS", "%d*%d: %" PRIu32 "", BSP_LCD_H_RES, BSP_LCD_V_RES, gfx_timer_get_actual_fps(emote_handle));
|
||||
}
|
||||
|
||||
// Test timer functionality
|
||||
static void test_timer_functionality(void)
|
||||
{
|
||||
ESP_LOGI(TAG, "=== Testing Timer Functionality ===");
|
||||
|
||||
ESP_LOGI(TAG, "Timer created\r\n");
|
||||
gfx_emote_lock(emote_handle);
|
||||
gfx_timer_handle_t timer = gfx_timer_create(emote_handle, clock_tm_callback, 1000, label_tips);
|
||||
TEST_ASSERT_NOT_NULL(timer);
|
||||
gfx_emote_unlock(emote_handle);
|
||||
|
||||
vTaskDelay(pdMS_TO_TICKS(3000));
|
||||
|
||||
ESP_LOGI(TAG, "Timer period set to 500ms\r\n");
|
||||
gfx_emote_lock(emote_handle);
|
||||
gfx_timer_set_period(timer, 500);
|
||||
gfx_emote_unlock(emote_handle);
|
||||
|
||||
vTaskDelay(pdMS_TO_TICKS(3000));
|
||||
|
||||
ESP_LOGI(TAG, "Timer repeat count set to 5\r\n");
|
||||
gfx_emote_lock(emote_handle);
|
||||
gfx_timer_set_repeat_count(timer, 5);
|
||||
gfx_emote_unlock(emote_handle);
|
||||
|
||||
vTaskDelay(pdMS_TO_TICKS(3000));
|
||||
|
||||
ESP_LOGI(TAG, "Timer paused\r\n");
|
||||
gfx_emote_lock(emote_handle);
|
||||
gfx_timer_pause(timer);
|
||||
gfx_emote_unlock(emote_handle);
|
||||
|
||||
vTaskDelay(pdMS_TO_TICKS(3000));
|
||||
|
||||
ESP_LOGI(TAG, "Timer resumed\r\n");
|
||||
gfx_emote_lock(emote_handle);
|
||||
gfx_timer_resume(timer);
|
||||
gfx_emote_unlock(emote_handle);
|
||||
|
||||
vTaskDelay(pdMS_TO_TICKS(3000));
|
||||
|
||||
ESP_LOGI(TAG, "Timer reset\r\n");
|
||||
gfx_emote_lock(emote_handle);
|
||||
gfx_timer_reset(timer);
|
||||
gfx_emote_unlock(emote_handle);
|
||||
|
||||
vTaskDelay(pdMS_TO_TICKS(3000));
|
||||
|
||||
ESP_LOGI(TAG, "Timer deleted\r\n");
|
||||
gfx_emote_lock(emote_handle);
|
||||
gfx_timer_delete(emote_handle, timer);
|
||||
gfx_emote_unlock(emote_handle);
|
||||
}
|
||||
|
||||
// Test animation functionality
|
||||
static void test_animation_functionality(mmap_assets_handle_t assets_handle)
|
||||
{
|
||||
ESP_LOGI(TAG, "=== Testing Animation Functionality ===");
|
||||
|
||||
// Define test cases for different bit depths and animation files
|
||||
struct {
|
||||
int asset_id;
|
||||
const char *name;
|
||||
int mirror_offset;
|
||||
} test_cases[] = {
|
||||
{MMAP_TEST_ASSETS_MI_1_EYE_4BIT_AAF, "MI_1_EYE 4-bit animation", 10},
|
||||
{MMAP_TEST_ASSETS_MI_1_EYE_8BIT_AAF, "MI_1_EYE 8-bit animation", 10},
|
||||
{MMAP_TEST_ASSETS_MI_1_EYE_24BIT_AAF, "MI_1_EYE 24-bit animation", 10},
|
||||
{MMAP_TEST_ASSETS_MI_2_EYE_4BIT_AAF, "MI_2_EYE 4-bit animation", 100},
|
||||
{MMAP_TEST_ASSETS_MI_2_EYE_8BIT_AAF, "MI_2_EYE 8-bit animation", 100},
|
||||
{MMAP_TEST_ASSETS_MI_2_EYE_24BIT_AAF, "MI_2_EYE 24-bit animation", 100}
|
||||
};
|
||||
|
||||
for (int i = 0; i < sizeof(test_cases) / sizeof(test_cases[0]); i++) {
|
||||
ESP_LOGI(TAG, "\n--- Testing %s ---", test_cases[i].name);
|
||||
|
||||
gfx_emote_lock(emote_handle);
|
||||
|
||||
// Create animation object
|
||||
gfx_obj_t *anim_obj = gfx_anim_create(emote_handle);
|
||||
TEST_ASSERT_NOT_NULL(anim_obj);
|
||||
ESP_LOGI(TAG, "Animation object created successfully");
|
||||
|
||||
// Set animation source
|
||||
const void *anim_data = mmap_assets_get_mem(assets_handle, test_cases[i].asset_id);
|
||||
size_t anim_size = mmap_assets_get_size(assets_handle, test_cases[i].asset_id);
|
||||
esp_err_t ret = gfx_anim_set_src(anim_obj, anim_data, anim_size);
|
||||
TEST_ASSERT_EQUAL(ESP_OK, ret);
|
||||
ESP_LOGI(TAG, "%s source set successfully", test_cases[i].name);
|
||||
|
||||
// Test animation configuration functions
|
||||
if (i < 3) {
|
||||
gfx_obj_set_pos(anim_obj, 20, 10);
|
||||
} else {
|
||||
gfx_obj_align(anim_obj, GFX_ALIGN_CENTER, 0, 0);
|
||||
}
|
||||
gfx_anim_set_mirror(anim_obj, false, 0);
|
||||
|
||||
gfx_obj_set_size(anim_obj, 200, 150);
|
||||
ESP_LOGI(TAG, "Animation size set to 200x150");
|
||||
|
||||
gfx_anim_set_segment(anim_obj, 0, 90, 30, true);
|
||||
ESP_LOGI(TAG, "Animation segment set: frames 0-90, 30fps, repeat=true");
|
||||
|
||||
// Start animation
|
||||
ret = gfx_anim_start(anim_obj);
|
||||
TEST_ASSERT_EQUAL(ESP_OK, ret);
|
||||
ESP_LOGI(TAG, "%s started successfully", test_cases[i].name);
|
||||
|
||||
gfx_emote_unlock(emote_handle);
|
||||
|
||||
// Wait for animation to run
|
||||
vTaskDelay(pdMS_TO_TICKS(3000));
|
||||
|
||||
// Test with mirror enabled
|
||||
gfx_emote_lock(emote_handle);
|
||||
gfx_anim_set_mirror(anim_obj, true, test_cases[i].mirror_offset);
|
||||
ESP_LOGI(TAG, "Animation mirror enabled with offset %d", test_cases[i].mirror_offset);
|
||||
gfx_emote_unlock(emote_handle);
|
||||
|
||||
// Wait for mirror animation to run
|
||||
vTaskDelay(pdMS_TO_TICKS(3000));
|
||||
|
||||
// Stop animation
|
||||
gfx_emote_lock(emote_handle);
|
||||
|
||||
ret = gfx_anim_stop(anim_obj);
|
||||
TEST_ASSERT_EQUAL(ESP_OK, ret);
|
||||
ESP_LOGI(TAG, "%s stopped successfully", test_cases[i].name);
|
||||
|
||||
gfx_emote_unlock(emote_handle);
|
||||
|
||||
vTaskDelay(pdMS_TO_TICKS(3000));
|
||||
|
||||
// Delete animation object
|
||||
gfx_emote_lock(emote_handle);
|
||||
|
||||
gfx_obj_delete(anim_obj);
|
||||
ESP_LOGI(TAG, "%s object deleted successfully", test_cases[i].name);
|
||||
|
||||
gfx_emote_unlock(emote_handle);
|
||||
|
||||
// Wait before next test
|
||||
vTaskDelay(pdMS_TO_TICKS(1000));
|
||||
}
|
||||
|
||||
ESP_LOGI(TAG, "\n=== Animation Functionality Testing Completed ===");
|
||||
}
|
||||
|
||||
// Test label functionality
|
||||
static void test_label_functionality(mmap_assets_handle_t assets_handle)
|
||||
{
|
||||
ESP_LOGI(TAG, "=== Testing Label Functionality ===");
|
||||
|
||||
gfx_emote_lock(emote_handle);
|
||||
|
||||
// Create label object
|
||||
gfx_obj_t *label_obj = gfx_label_create(emote_handle);
|
||||
TEST_ASSERT_NOT_NULL(label_obj);
|
||||
ESP_LOGI(TAG, "Label object created successfully");
|
||||
|
||||
// Set font
|
||||
gfx_label_cfg_t font_cfg = {
|
||||
.name = "DejaVuSans.ttf",
|
||||
.mem = mmap_assets_get_mem(assets_handle, MMAP_TEST_ASSETS_DEJAVUSANS_TTF),
|
||||
.mem_size = (size_t)mmap_assets_get_size(assets_handle, MMAP_TEST_ASSETS_DEJAVUSANS_TTF),
|
||||
};
|
||||
|
||||
gfx_font_t font_DejaVuSans;
|
||||
esp_err_t ret = gfx_label_new_font(emote_handle, &font_cfg, &font_DejaVuSans);
|
||||
TEST_ASSERT_EQUAL(ESP_OK, ret);
|
||||
ESP_LOGI(TAG, "Font loaded successfully");
|
||||
|
||||
// Test label configuration functions
|
||||
gfx_label_set_font(label_obj, font_DejaVuSans);
|
||||
ESP_LOGI(TAG, "Font set for label");
|
||||
|
||||
gfx_label_set_text(label_obj, "Hello World!");
|
||||
ESP_LOGI(TAG, "Label text set to 'Hello World!'");
|
||||
|
||||
gfx_label_set_font_size(label_obj, 24);
|
||||
ESP_LOGI(TAG, "Label font size set to 24");
|
||||
|
||||
gfx_label_set_color(label_obj, GFX_COLOR_HEX(0x00FF00));
|
||||
ESP_LOGI(TAG, "Label color set to green");
|
||||
|
||||
gfx_obj_set_pos(label_obj, 100, 200);
|
||||
ESP_LOGI(TAG, "Label position set to (100, 200)");
|
||||
|
||||
gfx_obj_align(label_obj, GFX_ALIGN_TOP_MID, 0, 20);
|
||||
ESP_LOGI(TAG, "Label aligned to top center with 20px offset");
|
||||
|
||||
gfx_obj_set_size(label_obj, 300, 50);
|
||||
ESP_LOGI(TAG, "Label size set to 300x50");
|
||||
|
||||
// Test formatted text
|
||||
gfx_label_set_text_fmt(label_obj, "Count: %d, Float: %.2f", 42, 3.14);
|
||||
ESP_LOGI(TAG, "Label formatted text set");
|
||||
|
||||
gfx_emote_unlock(emote_handle);
|
||||
|
||||
// Wait for display
|
||||
vTaskDelay(pdMS_TO_TICKS(2000));
|
||||
|
||||
gfx_emote_lock(emote_handle);
|
||||
gfx_label_set_color(label_obj, GFX_COLOR_HEX(0x0000FF));
|
||||
ESP_LOGI(TAG, "Label color set to blue");
|
||||
gfx_emote_unlock(emote_handle);
|
||||
|
||||
// Wait for display
|
||||
vTaskDelay(pdMS_TO_TICKS(2000));
|
||||
|
||||
gfx_emote_lock(emote_handle);
|
||||
// Delete label object
|
||||
gfx_obj_delete(label_obj);
|
||||
ESP_LOGI(TAG, "Label object deleted successfully");
|
||||
gfx_emote_unlock(emote_handle);
|
||||
}
|
||||
|
||||
// Test unified image functionality (both C_ARRAY and BIN formats)
|
||||
static void test_unified_image_functionality(mmap_assets_handle_t assets_handle)
|
||||
{
|
||||
gfx_image_dsc_t img_dsc;
|
||||
|
||||
ESP_LOGI(TAG, "=== Testing Unified Image Functionality ===");
|
||||
|
||||
gfx_emote_lock(emote_handle);
|
||||
|
||||
// Test 1: C_ARRAY format image
|
||||
ESP_LOGI(TAG, "--- Testing C_ARRAY format image ---");
|
||||
gfx_obj_t *img_obj_c_array = gfx_img_create(emote_handle);
|
||||
TEST_ASSERT_NOT_NULL(img_obj_c_array);
|
||||
|
||||
gfx_img_set_src(img_obj_c_array, (void*)&icon1);
|
||||
|
||||
gfx_obj_set_pos(img_obj_c_array, 100, 100);
|
||||
|
||||
uint16_t width, height;
|
||||
gfx_obj_get_size(img_obj_c_array, &width, &height);
|
||||
ESP_LOGI(TAG, "C_ARRAY image size: %dx%d", width, height);
|
||||
|
||||
gfx_emote_unlock(emote_handle);
|
||||
vTaskDelay(pdMS_TO_TICKS(2000));
|
||||
|
||||
gfx_emote_lock(emote_handle);
|
||||
gfx_obj_delete(img_obj_c_array);
|
||||
|
||||
// Test 2: BIN format image
|
||||
ESP_LOGI(TAG, "--- Testing BIN format image ---");
|
||||
gfx_obj_t *img_obj_bin = gfx_img_create(emote_handle);
|
||||
TEST_ASSERT_NOT_NULL(img_obj_bin);
|
||||
|
||||
img_dsc.data_size = mmap_assets_get_size(assets_handle, MMAP_TEST_ASSETS_ICON5_BIN);
|
||||
img_dsc.data = mmap_assets_get_mem(assets_handle, MMAP_TEST_ASSETS_ICON5_BIN);
|
||||
|
||||
memcpy(&img_dsc.header, mmap_assets_get_mem(assets_handle, MMAP_TEST_ASSETS_ICON5_BIN), sizeof(gfx_image_header_t));
|
||||
img_dsc.data += sizeof(gfx_image_header_t);
|
||||
img_dsc.data_size -= sizeof(gfx_image_header_t);
|
||||
gfx_img_set_src(img_obj_bin, (void*)&img_dsc);
|
||||
|
||||
gfx_obj_set_pos(img_obj_bin, 100, 180);
|
||||
|
||||
gfx_obj_get_size(img_obj_bin, &width, &height);
|
||||
ESP_LOGI(TAG, "BIN image size: %dx%d", width, height);
|
||||
|
||||
gfx_emote_unlock(emote_handle);
|
||||
vTaskDelay(pdMS_TO_TICKS(2000));
|
||||
|
||||
gfx_emote_lock(emote_handle);
|
||||
gfx_obj_delete(img_obj_bin);
|
||||
|
||||
// Test 3: Multiple images with different formats
|
||||
ESP_LOGI(TAG, "--- Testing multiple images with different formats ---");
|
||||
gfx_obj_t *img_obj1 = gfx_img_create(emote_handle);
|
||||
gfx_obj_t *img_obj2 = gfx_img_create(emote_handle);
|
||||
TEST_ASSERT_NOT_NULL(img_obj1);
|
||||
TEST_ASSERT_NOT_NULL(img_obj2);
|
||||
|
||||
gfx_img_set_src(img_obj1, (void*)&icon5); // C_ARRAY format
|
||||
|
||||
img_dsc.data_size = mmap_assets_get_size(assets_handle, MMAP_TEST_ASSETS_ICON1_BIN);
|
||||
img_dsc.data = mmap_assets_get_mem(assets_handle, MMAP_TEST_ASSETS_ICON1_BIN);
|
||||
|
||||
memcpy(&img_dsc.header, mmap_assets_get_mem(assets_handle, MMAP_TEST_ASSETS_ICON1_BIN), sizeof(gfx_image_header_t));
|
||||
img_dsc.data += sizeof(gfx_image_header_t);
|
||||
img_dsc.data_size -= sizeof(gfx_image_header_t);
|
||||
gfx_img_set_src(img_obj2, (void*)&img_dsc); // BIN format
|
||||
|
||||
gfx_obj_set_pos(img_obj1, 150, 100);
|
||||
gfx_obj_set_pos(img_obj2, 150, 180);
|
||||
|
||||
gfx_emote_unlock(emote_handle);
|
||||
|
||||
// vTaskDelay(pdMS_TO_TICKS(30));
|
||||
// gfx_emote_lock(emote_handle);
|
||||
|
||||
vTaskDelay(pdMS_TO_TICKS(3000));
|
||||
|
||||
gfx_emote_lock(emote_handle);
|
||||
gfx_obj_delete(img_obj1);
|
||||
gfx_obj_delete(img_obj2);
|
||||
gfx_emote_unlock(emote_handle);
|
||||
}
|
||||
|
||||
// Comprehensive test: Create multiple objects and test interaction
|
||||
static void test_multiple_objects_interaction(mmap_assets_handle_t assets_handle)
|
||||
{
|
||||
ESP_LOGI(TAG, "=== Testing Multiple Objects Interaction ===");
|
||||
|
||||
gfx_emote_lock(emote_handle);
|
||||
|
||||
// Create multiple objects
|
||||
gfx_obj_t *anim_obj = gfx_anim_create(emote_handle);
|
||||
gfx_obj_t *label_obj = gfx_label_create(emote_handle);
|
||||
gfx_obj_t *img_obj = gfx_img_create(emote_handle);
|
||||
gfx_timer_handle_t timer = gfx_timer_create(emote_handle, clock_tm_callback, 2000, label_obj);
|
||||
|
||||
TEST_ASSERT_NOT_NULL(anim_obj);
|
||||
TEST_ASSERT_NOT_NULL(label_obj);
|
||||
TEST_ASSERT_NOT_NULL(img_obj);
|
||||
TEST_ASSERT_NOT_NULL(timer);
|
||||
ESP_LOGI(TAG, "Multiple objects created successfully");
|
||||
|
||||
// Configure animation
|
||||
const void *anim_data = mmap_assets_get_mem(assets_handle, MMAP_TEST_ASSETS_MI_2_EYE_8BIT_AAF);
|
||||
size_t anim_size = mmap_assets_get_size(assets_handle, MMAP_TEST_ASSETS_MI_2_EYE_8BIT_AAF);
|
||||
gfx_anim_set_src(anim_obj, anim_data, anim_size);
|
||||
gfx_obj_align(anim_obj, GFX_ALIGN_CENTER, 0, 0);
|
||||
gfx_anim_set_segment(anim_obj, 0, 30, 15, true);
|
||||
gfx_anim_start(anim_obj);
|
||||
|
||||
// Configure label
|
||||
// Set font
|
||||
gfx_label_cfg_t font_cfg = {
|
||||
.name = "DejaVuSans.ttf",
|
||||
.mem = mmap_assets_get_mem(assets_handle, MMAP_TEST_ASSETS_DEJAVUSANS_TTF),
|
||||
.mem_size = (size_t)mmap_assets_get_size(assets_handle, MMAP_TEST_ASSETS_DEJAVUSANS_TTF),
|
||||
};
|
||||
|
||||
gfx_font_t font_DejaVuSans;
|
||||
esp_err_t ret = gfx_label_new_font(emote_handle, &font_cfg, &font_DejaVuSans);
|
||||
TEST_ASSERT_EQUAL(ESP_OK, ret);
|
||||
|
||||
gfx_obj_set_size(label_obj, 150, 50);
|
||||
gfx_label_set_font(label_obj, font_DejaVuSans);
|
||||
gfx_label_set_text(label_obj, "Multi-Object Test");
|
||||
gfx_label_set_font_size(label_obj, 20);
|
||||
gfx_label_set_color(label_obj, GFX_COLOR_HEX(0xFF0000));
|
||||
gfx_obj_align(label_obj, GFX_ALIGN_CENTER, 0, 0); // Position above center
|
||||
|
||||
// Configure image
|
||||
gfx_image_dsc_t img_dsc;
|
||||
const void *img_data = mmap_assets_get_mem(assets_handle, MMAP_TEST_ASSETS_ICON1_BIN);
|
||||
img_dsc.data_size = mmap_assets_get_size(assets_handle, MMAP_TEST_ASSETS_ICON1_BIN);
|
||||
img_dsc.data = img_data;
|
||||
|
||||
memcpy(&img_dsc.header, img_data, sizeof(gfx_image_header_t));
|
||||
img_dsc.data += sizeof(gfx_image_header_t);
|
||||
img_dsc.data_size -= sizeof(gfx_image_header_t);
|
||||
|
||||
gfx_img_set_src(img_obj, (void*)&img_dsc); // Use BIN format image
|
||||
gfx_obj_align(img_obj, GFX_ALIGN_TOP_MID, 0, 0);
|
||||
|
||||
ESP_LOGI(TAG, "All objects configured and started");
|
||||
|
||||
gfx_emote_unlock(emote_handle);
|
||||
|
||||
// Run for a while to observe interaction
|
||||
vTaskDelay(pdMS_TO_TICKS(1000 * 10));
|
||||
|
||||
gfx_emote_lock(emote_handle);
|
||||
// Clean up all objects
|
||||
gfx_timer_delete(emote_handle, timer);
|
||||
gfx_obj_delete(anim_obj);
|
||||
gfx_obj_delete(label_obj);
|
||||
gfx_obj_delete(img_obj);
|
||||
ESP_LOGI(TAG, "All objects deleted successfully");
|
||||
gfx_emote_unlock(emote_handle);
|
||||
}
|
||||
|
||||
// Initialize display and graphics system
|
||||
static esp_err_t init_display_and_graphics(const char *partition_label, uint32_t max_files, uint32_t checksum, mmap_assets_handle_t *assets_handle)
|
||||
{
|
||||
// Initialize assets
|
||||
const mmap_assets_config_t asset_config = {
|
||||
.partition_label = partition_label,
|
||||
.max_files = max_files,
|
||||
.checksum = checksum,
|
||||
.flags = {.mmap_enable = true, .full_check = true}
|
||||
};
|
||||
|
||||
esp_err_t ret = mmap_assets_new(&asset_config, assets_handle);
|
||||
if (ret != ESP_OK) {
|
||||
ESP_LOGE(TAG, "Failed to initialize assets");
|
||||
return ret;
|
||||
}
|
||||
|
||||
// Initialize display
|
||||
const bsp_display_config_t bsp_disp_cfg = {
|
||||
.max_transfer_sz = (BSP_LCD_H_RES * 100) * sizeof(uint16_t),
|
||||
};
|
||||
bsp_display_new(&bsp_disp_cfg, &panel_handle, &io_handle);
|
||||
esp_lcd_panel_disp_on_off(panel_handle, true);
|
||||
bsp_display_brightness_init();
|
||||
bsp_display_backlight_on();
|
||||
|
||||
gfx_core_config_t gfx_cfg = {
|
||||
.flush_cb = flush_callback,
|
||||
.update_cb = NULL,
|
||||
.user_data = panel_handle,
|
||||
.flags = {.swap = true, .double_buffer = true},
|
||||
.h_res = BSP_LCD_H_RES,
|
||||
.v_res = BSP_LCD_V_RES,
|
||||
.fps = 50,
|
||||
.buffers = {.buf1 = NULL, .buf2 = NULL, .buf_pixels = BSP_LCD_H_RES * 16},
|
||||
.task = GFX_EMOTE_INIT_CONFIG()
|
||||
};
|
||||
gfx_cfg.task.task_stack_caps = MALLOC_CAP_DEFAULT;
|
||||
gfx_cfg.task.task_affinity = 0;
|
||||
gfx_cfg.task.task_priority = 7;
|
||||
gfx_cfg.task.task_stack = 20 * 1024;
|
||||
|
||||
const esp_lcd_panel_io_callbacks_t cbs = {
|
||||
.on_color_trans_done = flush_io_ready,
|
||||
};
|
||||
esp_lcd_panel_io_register_event_callbacks(io_handle, &cbs, emote_handle);
|
||||
|
||||
emote_handle = gfx_emote_init(&gfx_cfg);
|
||||
if (emote_handle == NULL) {
|
||||
ESP_LOGE(TAG, "Failed to initialize graphics system");
|
||||
mmap_assets_del(*assets_handle);
|
||||
return ESP_FAIL;
|
||||
}
|
||||
|
||||
return ESP_OK;
|
||||
}
|
||||
|
||||
// Clean up display and graphics system
|
||||
static void cleanup_display_and_graphics(mmap_assets_handle_t assets_handle)
|
||||
{
|
||||
if (emote_handle != NULL) {
|
||||
gfx_emote_deinit(emote_handle);
|
||||
emote_handle = NULL;
|
||||
}
|
||||
if (assets_handle != NULL) {
|
||||
mmap_assets_del(assets_handle);
|
||||
}
|
||||
|
||||
if (panel_handle) {
|
||||
esp_lcd_panel_del(panel_handle);
|
||||
}
|
||||
if (io_handle) {
|
||||
esp_lcd_panel_io_del(io_handle);
|
||||
}
|
||||
spi_bus_free(BSP_LCD_SPI_NUM);
|
||||
}
|
||||
|
||||
TEST_CASE("test timer functionality", "[timer]")
|
||||
{
|
||||
// Initialize display and graphics system
|
||||
mmap_assets_handle_t assets_handle = NULL;
|
||||
esp_err_t ret = init_display_and_graphics("assets_8bit", MMAP_TEST_ASSETS_FILES, MMAP_TEST_ASSETS_CHECKSUM, &assets_handle);
|
||||
TEST_ASSERT_EQUAL(ESP_OK, ret);
|
||||
|
||||
test_timer_functionality();
|
||||
|
||||
cleanup_display_and_graphics(assets_handle);
|
||||
}
|
||||
|
||||
TEST_CASE("test animation functionality", "[animation]")
|
||||
{
|
||||
// Initialize display and graphics system
|
||||
mmap_assets_handle_t assets_handle = NULL;
|
||||
esp_err_t ret = init_display_and_graphics("assets_8bit", MMAP_TEST_ASSETS_FILES, MMAP_TEST_ASSETS_CHECKSUM, &assets_handle);
|
||||
TEST_ASSERT_EQUAL(ESP_OK, ret);
|
||||
|
||||
test_animation_functionality(assets_handle);
|
||||
|
||||
cleanup_display_and_graphics(assets_handle);
|
||||
}
|
||||
|
||||
TEST_CASE("test label functionality", "[label]")
|
||||
{
|
||||
// Initialize display and graphics system
|
||||
mmap_assets_handle_t assets_handle = NULL;
|
||||
esp_err_t ret = init_display_and_graphics("assets_8bit", MMAP_TEST_ASSETS_FILES, MMAP_TEST_ASSETS_CHECKSUM, &assets_handle);
|
||||
TEST_ASSERT_EQUAL(ESP_OK, ret);
|
||||
|
||||
test_label_functionality(assets_handle);
|
||||
|
||||
cleanup_display_and_graphics(assets_handle);
|
||||
}
|
||||
|
||||
TEST_CASE("test unified image functionality", "[unified_image]")
|
||||
{
|
||||
// Initialize display and graphics system
|
||||
mmap_assets_handle_t assets_handle = NULL;
|
||||
esp_err_t ret = init_display_and_graphics("assets_8bit", MMAP_TEST_ASSETS_FILES, MMAP_TEST_ASSETS_CHECKSUM, &assets_handle);
|
||||
TEST_ASSERT_EQUAL(ESP_OK, ret);
|
||||
|
||||
test_unified_image_functionality(assets_handle);
|
||||
|
||||
cleanup_display_and_graphics(assets_handle);
|
||||
}
|
||||
|
||||
TEST_CASE("test multiple objects interaction", "[interaction]")
|
||||
{
|
||||
// Initialize display and graphics system
|
||||
mmap_assets_handle_t assets_handle = NULL;
|
||||
esp_err_t ret = init_display_and_graphics("assets_8bit", MMAP_TEST_ASSETS_FILES, MMAP_TEST_ASSETS_CHECKSUM, &assets_handle);
|
||||
TEST_ASSERT_EQUAL(ESP_OK, ret);
|
||||
|
||||
test_multiple_objects_interaction(assets_handle);
|
||||
|
||||
cleanup_display_and_graphics(assets_handle);
|
||||
}
|
||||
|
||||
void app_main(void)
|
||||
{
|
||||
printf("Animation player test\n");
|
||||
unity_run_menu();
|
||||
}
|
||||
@@ -0,0 +1,111 @@
|
||||
#include "gfx.h"
|
||||
|
||||
const uint8_t icon1_map[] = {
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0xdf, 0xff, 0xef, 0xff, 0xef, 0xbe, 0xf7, 0xbe, 0xef, 0xbe, 0xef, 0xbe, 0xef, 0x9e, 0xef, 0xbe, 0xef, 0x9e, 0xef, 0xbe, 0xef, 0xbe, 0xef, 0x9e, 0xef, 0x9e, 0xef, 0x9e, 0xef, 0xbe, 0xef, 0x9e, 0xef, 0xbe, 0xef, 0x7d, 0xff, 0xff, 0x07, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0xef, 0x9f, 0xef, 0xbe, 0xef, 0x9e, 0xef, 0xbe, 0xf7, 0xbf, 0xf7, 0xdf, 0xf7, 0xdf, 0xf7, 0xdf, 0xf7, 0xdf, 0xff, 0xdf, 0xff, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xdf, 0xf7, 0xdf, 0xf7, 0xdf, 0xf7, 0xdf, 0xf7, 0xbf, 0xf7, 0xbf, 0xf7, 0xbe, 0xef, 0x9e, 0xef, 0x9e, 0xef, 0x9f, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x9e, 0xef, 0x9e, 0xef, 0x9e, 0xf7, 0xbf, 0xff, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xdf, 0xf7, 0xbf, 0xef, 0x9e, 0xef, 0x9e, 0xef, 0x9e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0xef, 0x9e, 0xef, 0xbe, 0xef, 0xbe, 0xf7, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf7, 0xdf, 0xef, 0x9e, 0xef, 0xbe, 0xf7, 0xbe, 0xe7, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xbf, 0xff, 0xef, 0xbe, 0xef, 0x9e, 0xf7, 0xbe, 0xf7, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf7, 0xdf, 0xf7, 0xbe, 0xef, 0x9e, 0xef, 0xbf, 0xad, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 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, 0xff, 0xef, 0xbe, 0xef, 0x9e, 0xf7, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf7, 0xdf, 0xef, 0x9e, 0xef, 0x9e, 0xdf, 0x7d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0xf7, 0x9e, 0xef, 0x9e, 0xf7, 0xbe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xef, 0xbe, 0xef, 0x9e, 0xe7, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd7, 0xff, 0xef, 0xbe, 0xef, 0xbe, 0xf7, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf7, 0xbf, 0xef, 0x9e, 0xef, 0x9e, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xef, 0x9e, 0xef, 0xbe, 0xff, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xdf, 0xef, 0xbe, 0xef, 0x9e, 0xad, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0xef, 0x9e, 0xef, 0xbe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xef, 0x9e, 0xef, 0x9e, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd7, 0xff, 0xef, 0x9e, 0xef, 0xbe, 0xff, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xdf, 0xef, 0x9e, 0xef, 0x9e, 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, 0x00, 0xff, 0xff, 0xef, 0xbe, 0xef, 0xbe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xef, 0xbe, 0xef, 0x7e, 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, 0xf7, 0x9e, 0xef, 0xbe, 0xff, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xdf, 0xef, 0x9e, 0xf7, 0x9e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xef, 0xff, 0xef, 0x9e, 0xf7, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xdf, 0xef, 0x7d, 0xde, 0xdb, 0xce, 0x7a, 0xce, 0x7a, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf7, 0xdf, 0xef, 0xbe, 0xef, 0x5d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xbf, 0xff, 0xef, 0xbe, 0xf7, 0xbe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xdf, 0xb5, 0x96, 0x5a, 0xec, 0x4a, 0x49, 0x39, 0xe8, 0x31, 0xa7, 0x42, 0x29, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf7, 0xbe, 0xef, 0x9f, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xef, 0xbe, 0xef, 0x9e, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xde, 0xfb, 0x31, 0x86, 0x10, 0xa3, 0x10, 0xa3, 0x10, 0xa3, 0x10, 0xa3, 0x10, 0xa3, 0x21, 0x45, 0xff, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xef, 0x9e, 0xef, 0xbe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xef, 0x9e, 0xf7, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xdf, 0xa5, 0x14, 0x18, 0xe4, 0x10, 0xa3, 0x10, 0xa3, 0x21, 0x25, 0x42, 0x29, 0x21, 0x45, 0x10, 0xa3, 0x21, 0x45, 0xff, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf7, 0xdf, 0xef, 0x9e, 0xef, 0x5d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xef, 0x9e, 0xf7, 0xbe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xb5, 0xb6, 0x29, 0x45, 0x10, 0xa3, 0x10, 0xc3, 0x63, 0x0c, 0xb5, 0x96, 0xe7, 0x3c, 0x4a, 0x8a, 0x10, 0xa3, 0x21, 0x45, 0xff, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf7, 0xbe, 0xef, 0x9e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xef, 0xbe, 0xf7, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xef, 0x7d, 0x18, 0xc4, 0x10, 0xa3, 0x10, 0xa3, 0xa5, 0x55, 0xff, 0xdf, 0xff, 0xff, 0xf7, 0x9e, 0x4a, 0x8a, 0x10, 0xa3, 0x21, 0x45, 0xff, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf7, 0xdf, 0xef, 0x9e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0xef, 0x9e, 0xef, 0xbe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xdf, 0x42, 0x29, 0x10, 0xa3, 0x18, 0xc3, 0xa5, 0x14, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf7, 0x9e, 0x4a, 0x8a, 0x10, 0xa3, 0x21, 0x45, 0xff, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xef, 0x9e, 0xef, 0x7e, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0xff, 0xff, 0xef, 0x9e, 0xf7, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xb5, 0xb6, 0x19, 0x04, 0x10, 0xa3, 0x52, 0xab, 0xf7, 0x9e, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xdf, 0x5b, 0x0c, 0x10, 0xa3, 0x21, 0x45, 0xff, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf7, 0xdf, 0xef, 0x9e, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0xef, 0x9f, 0xef, 0x9e, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x63, 0x2d, 0x10, 0xa3, 0x18, 0xe4, 0x9c, 0xd3, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x84, 0x30, 0x10, 0xc3, 0x21, 0x45, 0xff, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xef, 0x9e, 0xef, 0xbe, 0x00, 0x00,
|
||||
0xff, 0xff, 0xef, 0xbe, 0xf7, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf7, 0xbe, 0x5a, 0xcb, 0x10, 0xa3, 0x31, 0x86, 0xf7, 0x9e, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc6, 0x38, 0x94, 0x92, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xdf, 0xef, 0x5d, 0xde, 0xfb, 0xe7, 0x3d, 0xf7, 0xbe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf7, 0xbf, 0xef, 0xbf, 0x00, 0x00,
|
||||
0xdf, 0xff, 0xef, 0x9e, 0xff, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe7, 0x3c, 0x4a, 0x4a, 0x10, 0xa3, 0x31, 0xc7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xdf, 0xce, 0x59, 0x6b, 0x4d, 0x5a, 0xec, 0x4a, 0x6a, 0x42, 0x29, 0x4a, 0x6a, 0x5a, 0xcb, 0x63, 0x2c, 0xb5, 0xb7, 0xff, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf7, 0xdf, 0xef, 0x9e, 0xff, 0xff,
|
||||
0xef, 0xff, 0xef, 0xbe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xde, 0xfc, 0x42, 0x29, 0x10, 0xa3, 0x39, 0xc7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf7, 0x9e, 0x63, 0x2d, 0x21, 0x05, 0x10, 0xa3, 0x10, 0xa3, 0x10, 0xa3, 0x10, 0xa3, 0x10, 0xa3, 0x10, 0xa3, 0x10, 0xa3, 0x19, 0x04, 0x52, 0xab, 0xf7, 0xbe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xef, 0x9e, 0xf7, 0x9e,
|
||||
0xef, 0xbe, 0xf7, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xef, 0x5d, 0x4a, 0x6a, 0x10, 0xa3, 0x31, 0xc7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xce, 0x79, 0x21, 0x04, 0x10, 0xa3, 0x10, 0xa3, 0x10, 0xa3, 0x29, 0x66, 0x31, 0xc7, 0x39, 0xc7, 0x31, 0xc7, 0x29, 0x86, 0x18, 0xc4, 0x10, 0xa3, 0x10, 0xa3, 0x10, 0xa3, 0xbd, 0xf7, 0xff, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xef, 0xbe, 0xef, 0xbe,
|
||||
0xf7, 0xbe, 0xf7, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xdf, 0x5a, 0xec, 0x10, 0xa3, 0x29, 0x66, 0xde, 0xdb, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xdf, 0xb5, 0x96, 0x21, 0x25, 0x10, 0xa3, 0x10, 0xa3, 0x4a, 0x6a, 0x84, 0x10, 0xde, 0xfb, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xef, 0x5d, 0x94, 0x92, 0x52, 0xab, 0x10, 0xc3, 0x10, 0xa3, 0x21, 0x45, 0xad, 0x55, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf7, 0xbf, 0xf7, 0xbf,
|
||||
0xef, 0xbe, 0xf7, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x6b, 0x6e, 0x10, 0xa3, 0x10, 0xa3, 0x84, 0x10, 0xff, 0xff, 0xff, 0xff, 0xff, 0xdf, 0x73, 0x8e, 0x21, 0x45, 0x18, 0xe4, 0x10, 0xa3, 0x10, 0xa3, 0x63, 0x2d, 0xef, 0x9e, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf7, 0x9e, 0x8c, 0x51, 0x10, 0xa3, 0x10, 0xa3, 0x19, 0x04, 0xde, 0xfb, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf7, 0xdf, 0xef, 0xbe,
|
||||
0xef, 0x9e, 0xf7, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xd6, 0xba, 0x21, 0x25, 0x10, 0xa3, 0x42, 0x49, 0xef, 0x7e, 0xce, 0x59, 0x39, 0xe8, 0x10, 0xa3, 0x10, 0xa3, 0x10, 0xa3, 0x10, 0xa3, 0x10, 0xa3, 0x42, 0x08, 0xd6, 0xba, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x8c, 0x51, 0x10, 0xa3, 0x10, 0xa3, 0x52, 0x8b, 0xff, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf7, 0xdf, 0xef, 0xbe,
|
||||
0xef, 0x9e, 0xf7, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x6b, 0x6e, 0x10, 0xa3, 0x10, 0xa3, 0x63, 0x4d, 0x39, 0xe8, 0x10, 0xa3, 0x10, 0xa3, 0x39, 0xe8, 0x6b, 0x4d, 0x31, 0xa7, 0x10, 0xa3, 0x10, 0xa3, 0x42, 0x49, 0xf7, 0xbe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x5a, 0xec, 0x10, 0xa3, 0x10, 0xa3, 0xbd, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xdf, 0xef, 0xbe,
|
||||
0xef, 0xbe, 0xff, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xd6, 0xbb, 0x52, 0x8a, 0x31, 0xa7, 0x31, 0xa7, 0x31, 0xa7, 0x31, 0xa7, 0x31, 0xa7, 0x31, 0xa7, 0x31, 0xa7, 0x9c, 0xd3, 0xff, 0xff, 0xf7, 0x9e, 0x29, 0x66, 0x10, 0xa3, 0x10, 0xa3, 0x10, 0xa3, 0x10, 0xa3, 0x94, 0x92, 0xde, 0xfb, 0xff, 0xdf, 0xde, 0xdb, 0x84, 0x10, 0x10, 0xa3, 0x10, 0xa3, 0x9c, 0xd3, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xad, 0x96, 0x19, 0x04, 0x10, 0xa3, 0x5b, 0x0c, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xdf, 0xef, 0xbe,
|
||||
0xef, 0x9e, 0xff, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xce, 0x7a, 0x31, 0xa7, 0x10, 0xa3, 0x10, 0xa3, 0x10, 0xa3, 0x10, 0xa3, 0x10, 0xa3, 0x10, 0xa3, 0x10, 0xc3, 0xce, 0x79, 0xff, 0xff, 0xff, 0xff, 0xce, 0x79, 0x21, 0x25, 0x10, 0xa3, 0x10, 0xa3, 0x39, 0xe8, 0xde, 0xfb, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xde, 0xfb, 0x21, 0x45, 0x10, 0xa3, 0x18, 0xe4, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf7, 0xbe, 0xf7, 0x9e, 0xf7, 0x9e, 0xd6, 0x9a, 0x39, 0xe8, 0x10, 0xa3, 0x42, 0x29, 0xef, 0x7d, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf7, 0xbe,
|
||||
0xef, 0xbe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xde, 0xfb, 0x39, 0xe8, 0x10, 0xa3, 0x29, 0x86, 0x6b, 0x6e, 0x6b, 0x6e, 0x6b, 0x6e, 0x6b, 0x6e, 0x94, 0x92, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xb5, 0xb7, 0x18, 0xe4, 0x10, 0xa3, 0x6b, 0x4d, 0xff, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xef, 0x7e, 0x4a, 0x8a, 0x10, 0xa3, 0x10, 0xc3, 0xb5, 0x96, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x84, 0x10, 0x5a, 0xec, 0x4a, 0x8a, 0x4a, 0x8a, 0x4a, 0x8a, 0x21, 0x45, 0x10, 0xa3, 0x39, 0xe8, 0xde, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xef, 0xbe,
|
||||
0xef, 0xbe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xef, 0x5d, 0x4a, 0x49, 0x10, 0xa3, 0x42, 0x29, 0xef, 0x5d, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x21, 0x45, 0x10, 0xa3, 0x31, 0xa7, 0xde, 0xdb, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xde, 0xfb, 0x21, 0x25, 0x10, 0xa3, 0x10, 0xa3, 0x29, 0x46, 0xc6, 0x38, 0xff, 0xff, 0xff, 0xff, 0xa5, 0x34, 0x10, 0xa3, 0x10, 0xa3, 0x10, 0xa3, 0x10, 0xa3, 0x10, 0xa3, 0x10, 0xa3, 0x10, 0xa3, 0x39, 0xc7, 0xde, 0xdb, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xef, 0xbe,
|
||||
0xef, 0x9e, 0xff, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xdf, 0x5a, 0xec, 0x10, 0xa3, 0x19, 0x04, 0xad, 0x75, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7b, 0xcf, 0x10, 0xa3, 0x10, 0xa3, 0x84, 0x10, 0xde, 0xfb, 0xef, 0x7e, 0xde, 0xfb, 0x63, 0x0d, 0x10, 0xa3, 0x10, 0xa3, 0x10, 0xa3, 0x10, 0xa3, 0x39, 0xc7, 0xff, 0xdf, 0xff, 0xff, 0x73, 0xcf, 0x21, 0x45, 0x21, 0x45, 0x21, 0x45, 0x21, 0x45, 0x21, 0x45, 0x21, 0x45, 0x21, 0x45, 0x4a, 0x6a, 0xde, 0xfb, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xdf, 0xef, 0x9e,
|
||||
0xef, 0x9e, 0xf7, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xad, 0x76, 0x10, 0xa3, 0x10, 0xa3, 0x63, 0x0c, 0xff, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf7, 0xbe, 0x42, 0x09, 0x10, 0xa3, 0x10, 0xa3, 0x21, 0x45, 0x4a, 0x8a, 0x21, 0x25, 0x10, 0xa3, 0x10, 0xa3, 0x42, 0x29, 0x63, 0x0d, 0x10, 0xa3, 0x10, 0xa3, 0x73, 0xaf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xdf, 0xff, 0xdf, 0xff, 0xdf, 0xff, 0xdf, 0xff, 0xdf, 0xff, 0xdf, 0xff, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xdf, 0xef, 0xbe,
|
||||
0xef, 0x9e, 0xf7, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf7, 0xbe, 0x42, 0x29, 0x10, 0xa3, 0x10, 0xc3, 0x8c, 0x51, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xd6, 0xba, 0x42, 0x29, 0x10, 0xa3, 0x10, 0xa3, 0x10, 0xa3, 0x10, 0xa3, 0x10, 0xa3, 0x42, 0x29, 0xde, 0xdb, 0xf7, 0x9e, 0x39, 0xe8, 0x10, 0xa3, 0x18, 0xe4, 0xde, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf7, 0xdf, 0xef, 0x9e,
|
||||
0xef, 0xbe, 0xf7, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe7, 0x3c, 0x18, 0xe4, 0x10, 0xa3, 0x10, 0xa3, 0x84, 0x51, 0xf7, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xef, 0x7d, 0x63, 0x2d, 0x10, 0xa3, 0x10, 0xa3, 0x18, 0xc4, 0x21, 0x25, 0xad, 0x55, 0xff, 0xdf, 0xff, 0xff, 0xff, 0xff, 0x8c, 0x51, 0x10, 0xa3, 0x10, 0xa3, 0x7b, 0xcf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf7, 0xdf, 0xef, 0x9e,
|
||||
0xef, 0x9e, 0xf7, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xad, 0x76, 0x29, 0x45, 0x10, 0xa3, 0x10, 0xa3, 0x52, 0x8a, 0x94, 0x92, 0xd6, 0xbb, 0xff, 0xff, 0xff, 0xff, 0xff, 0xdf, 0xc6, 0x18, 0x8c, 0x51, 0x31, 0xc7, 0x10, 0xa3, 0x10, 0xa3, 0x31, 0x86, 0xbd, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc6, 0x38, 0x29, 0x66, 0x10, 0xa3, 0x52, 0x8a, 0xf7, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf7, 0xbf, 0xf7, 0xbe,
|
||||
0xef, 0xbe, 0xf7, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xdf, 0xb5, 0xb7, 0x18, 0xe4, 0x10, 0xa3, 0x10, 0xa3, 0x10, 0xc3, 0x31, 0x87, 0x42, 0x08, 0x42, 0x29, 0x39, 0xe8, 0x29, 0x46, 0x10, 0xa3, 0x10, 0xa3, 0x10, 0xa3, 0x4a, 0x4a, 0xce, 0x59, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xdf, 0x3a, 0x08, 0x10, 0xa3, 0x4a, 0x6a, 0xf7, 0x9e, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf7, 0xbf, 0xef, 0xbe,
|
||||
0xef, 0x7d, 0xf7, 0xbe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf7, 0xbe, 0x63, 0x2d, 0x18, 0xc4, 0x10, 0xa3, 0x10, 0xa3, 0x10, 0xa3, 0x10, 0xa3, 0x10, 0xa3, 0x10, 0xa3, 0x10, 0xa3, 0x18, 0xe4, 0x7b, 0xcf, 0xff, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x42, 0x29, 0x10, 0xa3, 0x4a, 0x49, 0xef, 0x5d, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xef, 0x9e, 0xf7, 0x9e,
|
||||
0xff, 0xff, 0xef, 0x9e, 0xff, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xdf, 0xc6, 0x39, 0x63, 0x2d, 0x52, 0x8a, 0x4a, 0x6a, 0x4a, 0x49, 0x4a, 0x6a, 0x52, 0xab, 0x84, 0x10, 0xe7, 0x3c, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x42, 0x08, 0x10, 0xa3, 0x4a, 0x6a, 0xef, 0x7e, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf7, 0xdf, 0xef, 0xbe, 0xd6, 0xba,
|
||||
0x07, 0xff, 0xef, 0x9e, 0xf7, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf7, 0xbe, 0xef, 0x7e, 0xef, 0x5d, 0xf7, 0x9e, 0xff, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x84, 0x10, 0xa5, 0x34, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xd6, 0x9a, 0x29, 0x86, 0x10, 0xa3, 0x52, 0x8a, 0xf7, 0xbe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf7, 0xbe, 0xef, 0xbf, 0x00, 0x00,
|
||||
0x00, 0x00, 0xef, 0x9f, 0xef, 0x9e, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x31, 0xa7, 0x10, 0xa3, 0x84, 0x51, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x8c, 0x92, 0x10, 0xc3, 0x10, 0xa3, 0x63, 0x2d, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xef, 0x9e, 0xef, 0x7e, 0x00, 0x00,
|
||||
0x00, 0x00, 0xff, 0xff, 0xef, 0x9e, 0xf7, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x31, 0xa7, 0x10, 0xa3, 0x6b, 0x6e, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf7, 0xbe, 0x4a, 0x6a, 0x10, 0xa3, 0x18, 0xc4, 0xce, 0x79, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf7, 0xdf, 0xef, 0x9e, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0xef, 0x9e, 0xef, 0x9e, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x31, 0xa7, 0x10, 0xa3, 0x6b, 0x6e, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7b, 0xcf, 0x10, 0xa3, 0x10, 0xa3, 0x6b, 0x8e, 0xff, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xef, 0xbe, 0xef, 0x9f, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xef, 0xbe, 0xf7, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x31, 0xa7, 0x10, 0xa3, 0x6b, 0x6e, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7b, 0xcf, 0x10, 0xa3, 0x10, 0xa3, 0x19, 0x04, 0xff, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf7, 0xdf, 0xef, 0x9e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf7, 0xbe, 0xf7, 0xbe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x31, 0xa7, 0x10, 0xa3, 0x6b, 0x6e, 0xde, 0xdb, 0xad, 0x76, 0x5a, 0xcb, 0x10, 0xa3, 0x10, 0xa3, 0x21, 0x45, 0xbd, 0xd7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf7, 0xbe, 0xef, 0xbe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe7, 0x1c, 0xef, 0x9e, 0xf7, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x31, 0xa7, 0x10, 0xa3, 0x31, 0x86, 0x39, 0xe8, 0x18, 0xe4, 0x10, 0xa3, 0x10, 0xa3, 0x21, 0x25, 0xad, 0x76, 0xff, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf7, 0xdf, 0xef, 0x9e, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xef, 0x7e, 0xef, 0x9e, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x31, 0xa7, 0x10, 0xa3, 0x10, 0xa3, 0x10, 0xa3, 0x10, 0xa3, 0x10, 0xa3, 0x5a, 0xec, 0xe7, 0x3c, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xef, 0x9e, 0xf7, 0x9f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xad, 0x55, 0xef, 0x9e, 0xef, 0xbe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x52, 0xab, 0x39, 0xc7, 0x39, 0xe8, 0x42, 0x29, 0x63, 0x0c, 0xc6, 0x38, 0xff, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xef, 0xbe, 0xef, 0x9e, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xdf, 0x7d, 0xef, 0x9e, 0xf7, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xde, 0xfc, 0xde, 0xdb, 0xe7, 0x1c, 0xef, 0x7e, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf7, 0xdf, 0xef, 0x9e, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe7, 0x1e, 0xef, 0x9e, 0xff, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xef, 0x9e, 0xf7, 0x9f, 0x00, 0x00, 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, 0x9e, 0xef, 0xbe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xef, 0x9e, 0xf7, 0xbe, 0x00, 0x00, 0x00, 0x00, 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, 0xef, 0x9e, 0xef, 0x9e, 0xff, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xdf, 0xef, 0xbe, 0xf7, 0x9e, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0xad, 0x55, 0xef, 0x9e, 0xef, 0x9e, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xef, 0xbe, 0xef, 0x9e, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xef, 0x9e, 0xef, 0xbe, 0xff, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xef, 0x9e, 0xf7, 0x9e, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xef, 0x7e, 0xef, 0x9e, 0xf7, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf7, 0xdf, 0xef, 0x9e, 0xf7, 0xbe, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xf7, 0x9e, 0xef, 0xbe, 0xf7, 0xbe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xef, 0xbe, 0xef, 0x9e, 0xf7, 0x9f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 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, 0x5d, 0xef, 0x9f, 0xef, 0x9e, 0xf7, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf7, 0xdf, 0xef, 0x9e, 0xef, 0x9e, 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, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 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, 0xef, 0xbe, 0xef, 0x9e, 0xf7, 0xbe, 0xf7, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf7, 0xdf, 0xf7, 0xbe, 0xef, 0x9e, 0xf7, 0x9f, 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, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe7, 0xff, 0xef, 0x9e, 0xef, 0x9e, 0xef, 0x9e, 0xf7, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf7, 0xdf, 0xef, 0xbe, 0xef, 0x9e, 0xef, 0xbe, 0xe7, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x7e, 0xef, 0x9e, 0xef, 0x9e, 0xf7, 0xbf, 0xf7, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf7, 0xdf, 0xf7, 0xbe, 0xef, 0x9e, 0xef, 0x9e, 0xef, 0x9f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0xbe, 0xef, 0x9e, 0xef, 0x9e, 0xef, 0x9e, 0xef, 0xbe, 0xf7, 0xbf, 0xf7, 0xdf, 0xf7, 0xdf, 0xff, 0xdf, 0xff, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xdf, 0xff, 0xdf, 0xf7, 0xdf, 0xf7, 0xdf, 0xf7, 0xbf, 0xf7, 0xbf, 0xef, 0x9e, 0xef, 0xbe, 0xef, 0xbf, 0xef, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0xf7, 0x9e, 0xef, 0xbe, 0xf7, 0xbf, 0xef, 0xbe, 0xef, 0xbe, 0xef, 0xbe, 0xef, 0xbe, 0xf7, 0xbe, 0xef, 0xbe, 0xef, 0xbe, 0xef, 0x9e, 0xef, 0xbe, 0xef, 0x9e, 0xef, 0x9e, 0xf7, 0xbe, 0xef, 0xbe, 0xf7, 0x9e, 0xd6, 0xbf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x07, 0x0f, 0x1d, 0x42, 0x5f, 0x87, 0xa6, 0xb2, 0xbd, 0xc3, 0xbc, 0xb1, 0xa4, 0x85, 0x5e, 0x40, 0x1d, 0x0f, 0x06, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x24, 0x52, 0x79, 0x9c, 0xbd, 0xbf, 0xbd, 0xbb, 0xba, 0xb9, 0xb8, 0xb7, 0xb8, 0xb9, 0xba, 0xbc, 0xbe, 0xc0, 0xbb, 0x99, 0x77, 0x50, 0x22, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3d, 0x89, 0xaa, 0xbb, 0xba, 0xb7, 0xb5, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb5, 0xb7, 0xba, 0xba, 0xa9, 0x86, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x3b, 0xa3, 0xc4, 0xbc, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xbd, 0xc5, 0x9c, 0x36, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x35, 0x84, 0xbb, 0xbc, 0xb5, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb5, 0xbc, 0xba, 0x81, 0x30, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x70, 0xb4, 0xbc, 0xb5, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb5, 0xbc, 0xb0, 0x6c, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x11, 0x92, 0xc2, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xc3, 0x8b, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x43, 0xb3, 0xbd, 0xb4, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb4, 0xbe, 0xa8, 0x3e, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x4f, 0xb4, 0xb8, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb9, 0xb2, 0x4a, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x52, 0xc5, 0xb7, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb6, 0xc3, 0x48, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x4f, 0xc5, 0xb8, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb8, 0xc2, 0x47, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x43, 0xb4, 0xb7, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb7, 0xb2, 0x40, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0xb3, 0xb8, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb8, 0xa6, 0x13, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x92, 0xbd, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb4, 0xb7, 0xbb, 0xbe, 0xbe, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xbe, 0x86, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x04, 0x70, 0xc2, 0xb4, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb4, 0xc6, 0xe0, 0xe7, 0xec, 0xf0, 0xea, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb5, 0xc3, 0x66, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x35, 0xb4, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xba, 0xf1, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf5, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb4, 0xb4, 0x2f, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x0a, 0x86, 0xbb, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb4, 0xca, 0xfa, 0xff, 0xfe, 0xf7, 0xe9, 0xf5, 0xff, 0xf5, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xbc, 0x80, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3b, 0xbb, 0xb5, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xc5, 0xf5, 0xff, 0xfb, 0xdf, 0xc6, 0xb8, 0xe5, 0xff, 0xf5, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb5, 0xb7, 0x35, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0xa3, 0xbc, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb6, 0xfb, 0xff, 0xfe, 0xc8, 0xb4, 0xb3, 0xb6, 0xe5, 0xff, 0xf5, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xbc, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3d, 0xc4, 0xb5, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb4, 0xe9, 0xff, 0xfb, 0xca, 0xb3, 0xb3, 0xb3, 0xb6, 0xe5, 0xff, 0xf5, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb6, 0xc5, 0x2c, 0x00, 0x00,
|
||||
0x00, 0x05, 0x89, 0xbc, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xc5, 0xf9, 0xfe, 0xe3, 0xb5, 0xb3, 0xb3, 0xb3, 0xb4, 0xdf, 0xfe, 0xf5, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xbe, 0x82, 0x00, 0x00, 0x00, 0x24, 0xaa, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xdd, 0xfe, 0xfa, 0xcd, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xd3, 0xfb, 0xf5, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb5, 0xad, 0x1f, 0x00,
|
||||
0x01, 0x52, 0xbb, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb5, 0xe1, 0xff, 0xf1, 0xb6, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xc0, 0xcf, 0xb3, 0xb3, 0xb3, 0xb4, 0xb7, 0xba, 0xb8, 0xb4, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb9, 0x4d, 0x00, 0x07, 0x79, 0xba, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb8, 0xe7, 0xff, 0xee, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xbf, 0xdb, 0xe0, 0xe5, 0xea, 0xe6, 0xe1, 0xde, 0xc4, 0xb4, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xba, 0x75, 0x06,
|
||||
0x0f, 0x9c, 0xb7, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xba, 0xea, 0xff, 0xee, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb5, 0xdd, 0xf8, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf9, 0xe3, 0xb4, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb6, 0x94, 0x12, 0x1d, 0xbd, 0xb5, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb7, 0xe5, 0xff, 0xee, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xbe, 0xf7, 0xff, 0xfe, 0xfd, 0xf3, 0xee, 0xed, 0xee, 0xf1, 0xfb, 0xfe, 0xff, 0xfd, 0xc2, 0xb4, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb5, 0xb3, 0x1f,
|
||||
0x42, 0xbf, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb4, 0xe0, 0xff, 0xf3, 0xbb, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xc5, 0xf6, 0xff, 0xfe, 0xe6, 0xd4, 0xba, 0xb3, 0xb3, 0xb3, 0xb7, 0xcf, 0xe3, 0xfc, 0xff, 0xf5, 0xc8, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb4, 0xc0, 0x34, 0x5f, 0xbd, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xdb, 0xfe, 0xfd, 0xd4, 0xb3, 0xb3, 0xb4, 0xd9, 0xf5, 0xfa, 0xfe, 0xfd, 0xdc, 0xb6, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb5, 0xd1, 0xfe, 0xff, 0xf8, 0xba, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xbd, 0x59,
|
||||
0x88, 0xbb, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xbc, 0xf7, 0xff, 0xe8, 0xb6, 0xbf, 0xec, 0xff, 0xff, 0xff, 0xff, 0xff, 0xea, 0xbc, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xd1, 0xfc, 0xff, 0xe3, 0xb4, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xbc, 0x76, 0xa6, 0xba, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xdb, 0xff, 0xfe, 0xdc, 0xed, 0xff, 0xff, 0xed, 0xdc, 0xef, 0xff, 0xff, 0xe8, 0xb4, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xe0, 0xfe, 0xff, 0xc2, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xba, 0x8f,
|
||||
0xb2, 0xb9, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xbc, 0xe4, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xcc, 0xb3, 0xb5, 0xf2, 0xff, 0xfe, 0xff, 0xff, 0xce, 0xba, 0xb4, 0xbb, 0xd3, 0xfe, 0xff, 0xcc, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xc6, 0xf9, 0xff, 0xdf, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb9, 0x9c, 0xbd, 0xb8, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xbe, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, 0xbe, 0xb3, 0xb3, 0xbe, 0xf6, 0xfe, 0xff, 0xed, 0xba, 0xb3, 0xb3, 0xb3, 0xba, 0xf5, 0xff, 0xf8, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb4, 0xb6, 0xb6, 0xbd, 0xec, 0xfe, 0xea, 0xb7, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb8, 0xa6,
|
||||
0xc3, 0xb7, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xbb, 0xec, 0xff, 0xf2, 0xdb, 0xdb, 0xdb, 0xda, 0xcf, 0xb3, 0xb3, 0xb3, 0xb3, 0xc4, 0xf9, 0xff, 0xdc, 0xb4, 0xb3, 0xb3, 0xb3, 0xb6, 0xe5, 0xff, 0xfc, 0xc5, 0xb3, 0xb3, 0xb3, 0xb3, 0xd4, 0xe0, 0xe5, 0xe5, 0xe5, 0xf5, 0xfe, 0xed, 0xba, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb8, 0xac, 0xbc, 0xb8, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb7, 0xe7, 0xff, 0xe9, 0xb7, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xf5, 0xff, 0xef, 0xbb, 0xb3, 0xb3, 0xb3, 0xba, 0xf6, 0xff, 0xfe, 0xf4, 0xc1, 0xb3, 0xb3, 0xc9, 0xfd, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xee, 0xbb, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb8, 0xa5,
|
||||
0xb2, 0xb9, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xe1, 0xff, 0xf8, 0xc7, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xd5, 0xff, 0xff, 0xd3, 0xba, 0xb6, 0xba, 0xdd, 0xfe, 0xff, 0xfe, 0xff, 0xed, 0xb4, 0xb3, 0xd7, 0xf5, 0xf5, 0xf5, 0xf5, 0xf5, 0xf5, 0xf5, 0xe7, 0xba, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb9, 0x9b, 0xa4, 0xba, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xc6, 0xff, 0xfe, 0xdf, 0xb4, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb4, 0xea, 0xff, 0xfe, 0xf5, 0xe5, 0xf6, 0xfe, 0xff, 0xe9, 0xdd, 0xfe, 0xff, 0xd6, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xba, 0x8d,
|
||||
0x85, 0xbc, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb4, 0xe9, 0xff, 0xfb, 0xd2, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xbc, 0xe8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe9, 0xbb, 0xb6, 0xec, 0xff, 0xf9, 0xb9, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xbc, 0x75, 0x5e, 0xbe, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb8, 0xfa, 0xff, 0xfe, 0xd2, 0xb4, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb6, 0xdc, 0xfe, 0xfe, 0xfb, 0xf6, 0xc7, 0xb4, 0xb3, 0xb3, 0xd1, 0xfd, 0xfd, 0xd6, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xbe, 0x58,
|
||||
0x40, 0xc0, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xc6, 0xf5, 0xff, 0xfc, 0xe4, 0xcf, 0xbc, 0xb3, 0xb3, 0xb4, 0xc1, 0xd1, 0xee, 0xfe, 0xff, 0xf1, 0xc2, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xc0, 0xf3, 0xfe, 0xe4, 0xb4, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb4, 0xbf, 0x33, 0x1d, 0xbb, 0xb5, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb4, 0xc4, 0xf9, 0xff, 0xfe, 0xfc, 0xf1, 0xea, 0xe9, 0xec, 0xf4, 0xfd, 0xff, 0xff, 0xe6, 0xbf, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xeb, 0xff, 0xe6, 0xb6, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb5, 0xb1, 0x1e,
|
||||
0x0f, 0x99, 0xb7, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb4, 0xdd, 0xfb, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xfd, 0xf9, 0xd6, 0xb4, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xe9, 0xff, 0xe7, 0xb7, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb6, 0x92, 0x11, 0x06, 0x77, 0xba, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xc0, 0xdd, 0xe5, 0xe6, 0xe7, 0xe6, 0xe4, 0xd4, 0xb8, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xea, 0xff, 0xe6, 0xb6, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xba, 0x73, 0x06,
|
||||
0x01, 0x50, 0xba, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb5, 0xb6, 0xb7, 0xb6, 0xb4, 0xb3, 0xb3, 0xb3, 0xd4, 0xc9, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xbd, 0xf1, 0xff, 0xe4, 0xb5, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb9, 0x4a, 0x00, 0x00, 0x22, 0xa9, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xf0, 0xfd, 0xd2, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xcf, 0xfc, 0xfe, 0xdd, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb5, 0xae, 0x1d, 0x00,
|
||||
0x00, 0x03, 0x86, 0xbd, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xf0, 0xff, 0xda, 0xb3, 0xb3, 0xb3, 0xb3, 0xb4, 0xe5, 0xfe, 0xfb, 0xbe, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xbe, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x38, 0xc5, 0xb5, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xf0, 0xff, 0xdb, 0xb3, 0xb3, 0xb3, 0xb3, 0xd6, 0xfc, 0xff, 0xd9, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb6, 0xc3, 0x27, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x9d, 0xbc, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xf0, 0xff, 0xdb, 0xb3, 0xb3, 0xb3, 0xd7, 0xfe, 0xff, 0xf7, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xbc, 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0xba, 0xb5, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xf0, 0xff, 0xdb, 0xbb, 0xc7, 0xe1, 0xfc, 0xfe, 0xf5, 0xc3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb5, 0xb6, 0x2f, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x09, 0x80, 0xbc, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xf0, 0xff, 0xf1, 0xec, 0xf9, 0xfe, 0xff, 0xf6, 0xc6, 0xb4, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xbc, 0x7a, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x31, 0xb0, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xf0, 0xff, 0xfe, 0xfe, 0xff, 0xfe, 0xe0, 0xb8, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb6, 0xb2, 0x2b, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x03, 0x6c, 0xc3, 0xb4, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xe3, 0xee, 0xed, 0xea, 0xde, 0xc0, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb5, 0xc2, 0x61, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x8b, 0xbe, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xba, 0xbb, 0xb9, 0xb6, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb4, 0xbe, 0x81, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0xa8, 0xb9, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb9, 0x9e, 0x13, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0xb2, 0xb6, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb7, 0xae, 0x3a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x4a, 0xc3, 0xb8, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb8, 0xbd, 0x42, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x48, 0xc2, 0xb7, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb7, 0xbd, 0x40, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x47, 0xb2, 0xb8, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb4, 0xb9, 0xae, 0x42, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x40, 0xa6, 0xbe, 0xb5, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb5, 0xbe, 0x9e, 0x3a, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x13, 0x86, 0xc3, 0xb4, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb6, 0xc2, 0x81, 0x13, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, 0x66, 0xb4, 0xbc, 0xb5, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb5, 0xbb, 0xb2, 0x61, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x2f, 0x7f, 0xb7, 0xbc, 0xb6, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb6, 0xbc, 0xb6, 0x7b, 0x2b, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x35, 0x8e, 0xc5, 0xbe, 0xb5, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb5, 0xbe, 0xc3, 0x89, 0x2f, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2c, 0x82, 0xad, 0xb9, 0xba, 0xb6, 0xb5, 0xb4, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb4, 0xb5, 0xb6, 0xba, 0xb9, 0xae, 0x7e, 0x27, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x4e, 0x75, 0x94, 0xb3, 0xc0, 0xbd, 0xbc, 0xba, 0xb9, 0xb8, 0xb8, 0xb8, 0xb9, 0xba, 0xbc, 0xbe, 0xbf, 0xb1, 0x92, 0x73, 0x4a, 0x1d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x12, 0x1f, 0x34, 0x59, 0x76, 0x8f, 0x9c, 0xa6, 0xac, 0xa5, 0x9b, 0x8d, 0x75, 0x58, 0x33, 0x1e, 0x11, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
};
|
||||
|
||||
const gfx_image_dsc_t icon1 = {
|
||||
.header.cf = GFX_COLOR_FORMAT_RGB565A8,
|
||||
.header.magic = C_ARRAY_HEADER_MAGIC,
|
||||
.header.w = 65,
|
||||
.header.h = 65,
|
||||
.data_size = 12675,
|
||||
.data = icon1_map,
|
||||
};
|
||||
@@ -0,0 +1,111 @@
|
||||
#include "gfx.h"
|
||||
|
||||
const uint8_t icon5_map[] = {
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xe0, 0x26, 0xfb, 0x36, 0xba, 0x36, 0xdb, 0x3e, 0xdb, 0x36, 0xba, 0x3e, 0xdb, 0x36, 0xdb, 0x3e, 0xdb, 0x3e, 0xbb, 0x3e, 0xbb, 0x36, 0xbb, 0x3e, 0xbb, 0x36, 0xbb, 0x36, 0xbb, 0x36, 0xbb, 0x36, 0x9b, 0x36, 0x9b, 0x2e, 0xba, 0x25, 0xfb, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x79, 0x36, 0xba, 0x3e, 0xda, 0x3e, 0xdb, 0x3e, 0xdb, 0x3e, 0xdb, 0x3e, 0xdb, 0x3e, 0xdb, 0x3e, 0xbb, 0x3e, 0xbb, 0x3e, 0xbb, 0x36, 0xbb, 0x36, 0xbb, 0x36, 0xbb, 0x36, 0xbb, 0x36, 0xbb, 0x36, 0xbb, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x7b, 0x07, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0xfb, 0x3e, 0xdb, 0x36, 0xdb, 0x3e, 0xdb, 0x3e, 0xdb, 0x3e, 0xdb, 0x3e, 0xdb, 0x3e, 0xdb, 0x3e, 0xdb, 0x3e, 0xbb, 0x3e, 0xbb, 0x3e, 0xbb, 0x36, 0xbb, 0x36, 0xbb, 0x36, 0xbb, 0x36, 0xbb, 0x36, 0xbb, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0xbc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2e, 0xba, 0x36, 0xfa, 0x3e, 0xda, 0x3e, 0xda, 0x3e, 0xda, 0x3e, 0xdb, 0x3e, 0xdb, 0x3e, 0xdb, 0x3e, 0xdb, 0x3e, 0xbb, 0x3e, 0xbb, 0x3e, 0xbb, 0x36, 0xbb, 0x36, 0xbb, 0x3e, 0xbb, 0x3e, 0xbb, 0x36, 0xbb, 0x36, 0xbb, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7c, 0x2e, 0x9a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0xf7, 0x3e, 0xfa, 0x3e, 0xda, 0x3e, 0xda, 0x3e, 0xda, 0x3e, 0xda, 0x3e, 0xdb, 0x3e, 0xdb, 0x3e, 0xdb, 0x3e, 0xdb, 0x3e, 0xdb, 0x3e, 0xbb, 0x3e, 0xbb, 0x3e, 0xbb, 0x36, 0xbb, 0x36, 0xbb, 0x36, 0xbb, 0x36, 0xbb, 0x36, 0xbb, 0x36, 0xbb, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x5c, 0x05, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2e, 0xba, 0x36, 0xfa, 0x3e, 0xfa, 0x3e, 0xda, 0x3e, 0xda, 0x3e, 0xda, 0x3e, 0xdb, 0x3e, 0xdb, 0x3e, 0xdb, 0x3e, 0xdb, 0x3e, 0xbb, 0x3e, 0xbb, 0x3e, 0xbb, 0x3e, 0xbb, 0x3e, 0xbb, 0x36, 0xbb, 0x3e, 0xbb, 0x36, 0xbb, 0x36, 0xbb, 0x36, 0xbb, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x5c, 0x35, 0xfb, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xff, 0x26, 0xdb, 0x3e, 0xfb, 0x3e, 0xda, 0x3e, 0xda, 0x3e, 0xda, 0x3e, 0xda, 0x3e, 0xdb, 0x3e, 0xdb, 0x3e, 0xdb, 0x3e, 0xdb, 0x3e, 0xbb, 0x3e, 0xbb, 0x3e, 0xbb, 0x36, 0xbb, 0x36, 0xbb, 0x36, 0xbb, 0x36, 0xbb, 0x36, 0xbb, 0x36, 0xbb, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x5b, 0x36, 0x5b, 0x36, 0x5c, 0x36, 0x5c, 0x26, 0x7b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x26, 0xdb, 0x3e, 0xfa, 0x3e, 0xfa, 0x3e, 0xda, 0x3e, 0xda, 0x3e, 0xda, 0x3e, 0xda, 0x3e, 0xdb, 0x3e, 0xdb, 0x3e, 0xdb, 0x3e, 0xdb, 0x3e, 0xdb, 0x3e, 0xbb, 0x3e, 0xbb, 0x3e, 0xbb, 0x36, 0xbb, 0x36, 0xbb, 0x36, 0xbb, 0x36, 0xbb, 0x36, 0xbb, 0x36, 0xbb, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x5b, 0x36, 0x5b, 0x36, 0x5b, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x7c, 0x36, 0x79, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xff, 0x3e, 0xfa, 0x36, 0xfa, 0x3e, 0xfa, 0x3e, 0xda, 0x3e, 0xda, 0x3e, 0xdb, 0x3e, 0xdb, 0x3e, 0xdb, 0x3e, 0xdb, 0x3e, 0xdb, 0x3e, 0xdb, 0x3e, 0xdb, 0x3e, 0xbb, 0x3e, 0xbb, 0x3e, 0xbb, 0x36, 0xbb, 0x36, 0xbb, 0x36, 0xbb, 0x36, 0xbb, 0x36, 0xbb, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x5b, 0x36, 0x5b, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x5c, 0x05, 0x5f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xff, 0x36, 0xfb, 0x3e, 0xfa, 0x3e, 0xda, 0x3e, 0xda, 0x3e, 0xda, 0x3e, 0xda, 0x3e, 0xdb, 0x3e, 0xdb, 0x3e, 0xdb, 0x3e, 0xdb, 0x3e, 0xbb, 0x3e, 0xbb, 0x3e, 0xbb, 0x36, 0xbb, 0x36, 0xbb, 0x36, 0xbb, 0x36, 0xbb, 0x36, 0xbb, 0x36, 0xbb, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x5b, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x3c, 0x07, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x26, 0xdb, 0x3e, 0xfa, 0x3e, 0xda, 0x3e, 0xda, 0x3e, 0xda, 0x3e, 0xda, 0x3e, 0xda, 0x3e, 0xdb, 0x3e, 0xdb, 0x3e, 0xdb, 0x3e, 0xdb, 0x3e, 0xdb, 0x3e, 0xbb, 0x3e, 0xbb, 0x3e, 0xbb, 0x36, 0xbb, 0x36, 0xbb, 0x36, 0xbb, 0x36, 0xbb, 0x36, 0xbb, 0x36, 0xbb, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x5b, 0x36, 0x5b, 0x36, 0x5b, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x05, 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, 0x00, 0x07, 0xff, 0x3f, 0x1a, 0x36, 0xfa, 0x3e, 0xda, 0x3e, 0xda, 0x3e, 0xda, 0x3e, 0xda, 0x3e, 0xdb, 0x3e, 0xdb, 0x3e, 0xdb, 0x3e, 0xdb, 0x3e, 0xbb, 0x3e, 0xbb, 0x3e, 0xbb, 0x3e, 0xbb, 0x3e, 0xbb, 0x36, 0xbb, 0x36, 0xbb, 0x36, 0xbb, 0x36, 0xbb, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x5b, 0x36, 0x5b, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x07, 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, 0x26, 0xdb, 0x3e, 0xfa, 0x3e, 0xfa, 0x3e, 0xda, 0x3e, 0xda, 0x3e, 0xda, 0x3e, 0xdb, 0x3e, 0xdb, 0x3e, 0xdb, 0x3e, 0xdb, 0x3e, 0xdb, 0x3e, 0xbb, 0x3e, 0xbb, 0x3e, 0xbb, 0x3e, 0xbb, 0x36, 0xbb, 0x36, 0xbb, 0x36, 0xbb, 0x36, 0xbb, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x5b, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x2e, 0x5d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2e, 0xba, 0x3e, 0xfb, 0x3e, 0xda, 0x3e, 0xda, 0x3e, 0xda, 0x3e, 0xda, 0x3e, 0xdb, 0x3e, 0xdb, 0x3e, 0xdb, 0x3e, 0xdb, 0x3e, 0xdb, 0x3e, 0xbb, 0x3e, 0xbb, 0x3e, 0xbb, 0x36, 0xbb, 0x36, 0xbb, 0x36, 0xbb, 0x36, 0xbb, 0x36, 0xbb, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x46, 0x9b, 0x46, 0x9b, 0x3e, 0x9b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x5b, 0x36, 0x5b, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x2d, 0xfd, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0xf7, 0x36, 0xfa, 0x3e, 0xda, 0x3e, 0xda, 0x3e, 0xda, 0x3e, 0xdb, 0x3e, 0xdb, 0x3e, 0xdb, 0x3e, 0xdb, 0x3e, 0xdb, 0x3e, 0xdb, 0x3e, 0xdb, 0x3e, 0xbb, 0x3e, 0xbb, 0x3e, 0xbb, 0x36, 0xbb, 0x36, 0xbb, 0x36, 0xbb, 0x36, 0xbb, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0xc7, 0x9e, 0xc7, 0x9e, 0x9f, 0x3d, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x5b, 0x36, 0x5b, 0x36, 0x5b, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x1c, 0x36, 0x3c, 0x36, 0x1c, 0x07, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0xfa, 0x3e, 0xfa, 0x3e, 0xda, 0x3e, 0xda, 0x3e, 0xda, 0x3e, 0xdb, 0x3e, 0xdb, 0x3e, 0xdb, 0x3e, 0xdb, 0x3e, 0xdb, 0x3e, 0xbb, 0x3e, 0xbb, 0x3e, 0xbb, 0x3e, 0xbb, 0x3e, 0xbb, 0x36, 0xbb, 0x36, 0xbb, 0x36, 0xbb, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x97, 0x3d, 0x5e, 0xdc, 0x36, 0x9b, 0x36, 0x9b, 0xff, 0xff, 0xff, 0xff, 0xcf, 0x9e, 0x36, 0x7b, 0x36, 0x7b, 0x66, 0xbc, 0x6e, 0xdc, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2f, 0x5d, 0x3e, 0xfa, 0x3e, 0xda, 0x3e, 0xda, 0x3e, 0xda, 0x3e, 0xdb, 0x3e, 0xdb, 0x3e, 0xdb, 0x3e, 0xdb, 0x3e, 0xdb, 0x3e, 0xbb, 0x3e, 0xbb, 0x3e, 0xbb, 0x36, 0xbb, 0x36, 0xbb, 0x36, 0xbb, 0x36, 0xbb, 0x36, 0xbb, 0x36, 0xbb, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x3e, 0x9b, 0xe7, 0xdf, 0xf7, 0xdf, 0x9f, 0x3d, 0x46, 0x9b, 0xff, 0xff, 0xff, 0xff, 0xcf, 0x9e, 0x46, 0x9c, 0xa7, 0x3d, 0xf7, 0xff, 0xdf, 0xbf, 0x36, 0x5b, 0x36, 0x5b, 0x36, 0x5b, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x2d, 0xfd, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0xfa, 0x3e, 0xda, 0x3e, 0xda, 0x3e, 0xda, 0x3e, 0xdb, 0x3e, 0xdb, 0x3e, 0xdb, 0x3e, 0xdb, 0x3e, 0xbb, 0x3e, 0xbb, 0x3e, 0xbb, 0x3e, 0xbb, 0x3e, 0xbb, 0x36, 0xbb, 0x36, 0xbb, 0x36, 0xbb, 0x36, 0xbb, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x97, 0x3d, 0xff, 0xff, 0xff, 0xff, 0xc7, 0x9e, 0xff, 0xff, 0xff, 0xff, 0xe7, 0xbf, 0xc7, 0x9e, 0xff, 0xff, 0xff, 0xff, 0x86, 0xfd, 0x36, 0x5b, 0x36, 0x5b, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0xfa, 0x3e, 0xda, 0x3e, 0xda, 0x3e, 0xdb, 0x3e, 0xdb, 0x3e, 0xdb, 0x3e, 0xdb, 0x3e, 0xdb, 0x3e, 0xbb, 0x3e, 0xbb, 0x3e, 0xbb, 0x3e, 0xbb, 0x36, 0xbb, 0x36, 0xbb, 0x36, 0xbb, 0x36, 0xbb, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x3e, 0x9b, 0x87, 0x1d, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf7, 0xff, 0x7e, 0xfd, 0x36, 0x5b, 0x36, 0x5b, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x3e, 0xfb, 0x3e, 0xda, 0x3e, 0xda, 0x3e, 0xdb, 0x3e, 0xdb, 0x3e, 0xdb, 0x3e, 0xdb, 0x3e, 0xbb, 0x3e, 0xbb, 0x3e, 0xbb, 0x3e, 0xbb, 0x36, 0xbb, 0x36, 0xbb, 0x36, 0xbb, 0x36, 0xbb, 0x36, 0xbb, 0x36, 0x9b, 0x46, 0xbb, 0x66, 0xdc, 0x46, 0xbb, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x7b, 0x36, 0x7b, 0x76, 0xfc, 0xdf, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xd7, 0x9e, 0x76, 0xdd, 0x36, 0x5b, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x5c, 0x46, 0x7c, 0x5e, 0x9c, 0x3e, 0x5c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x35, 0xfc, 0x36, 0x1d, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x36, 0x79, 0x3e, 0xfb, 0x3e, 0xdb, 0x3e, 0xdb, 0x3e, 0xdb, 0x3e, 0xdb, 0x3e, 0xdb, 0x3e, 0xdb, 0x3e, 0xbb, 0x3e, 0xbb, 0x3e, 0xbb, 0x3e, 0xbb, 0x36, 0xbb, 0x36, 0xbb, 0x36, 0xbb, 0x36, 0xbb, 0x36, 0x9b, 0x36, 0x9b, 0x56, 0xdc, 0xdf, 0xbe, 0xbf, 0x7e, 0x3e, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x56, 0xbc, 0xff, 0xff, 0xff, 0xff, 0xe7, 0xbf, 0x4e, 0x9c, 0x36, 0x5b, 0x36, 0x5b, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x5c, 0x46, 0x5c, 0xc7, 0x7e, 0xcf, 0x9e, 0x4e, 0x7c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x36, 0xba, 0x36, 0xdb, 0x3e, 0xdb, 0x3e, 0xdb, 0x3e, 0xdb, 0x3e, 0xdb, 0x3e, 0xdb, 0x3e, 0xbb, 0x3e, 0xbb, 0x3e, 0xbb, 0x3e, 0xbb, 0x3e, 0xbb, 0x36, 0xbb, 0x36, 0xbb, 0x36, 0xbb, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x4e, 0xbb, 0xcf, 0x9e, 0xff, 0xff, 0x76, 0xfc, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0xff, 0xff, 0xff, 0xff, 0xcf, 0x9e, 0x36, 0x5b, 0x36, 0x5b, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x5c, 0x8f, 0x1d, 0xff, 0xff, 0xc7, 0x7e, 0x46, 0x5c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x00, 0x00,
|
||||
0x07, 0xe0, 0x3e, 0xda, 0x3e, 0xdb, 0x3e, 0xdb, 0x3e, 0xdb, 0x3e, 0xdb, 0x3e, 0xbb, 0x3e, 0xbb, 0x3e, 0xbb, 0x3e, 0xbb, 0x36, 0xbb, 0x36, 0xbb, 0x36, 0xbb, 0x36, 0xbb, 0x36, 0xbb, 0x36, 0xbb, 0x4e, 0xbb, 0x77, 0x1c, 0x5e, 0xdc, 0x46, 0xbb, 0xbf, 0x7e, 0xff, 0xff, 0x9f, 0x5d, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0xff, 0xff, 0xff, 0xff, 0xcf, 0x9e, 0x36, 0x5b, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x3c, 0x36, 0x3c, 0xaf, 0x3e, 0xff, 0xff, 0xbf, 0x7e, 0x46, 0x5c, 0x5e, 0x9d, 0x7e, 0xdd, 0x46, 0x5c, 0x36, 0x3c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x00, 0x00,
|
||||
0x26, 0xfb, 0x3e, 0xdb, 0x3e, 0xdb, 0x3e, 0xdb, 0x3e, 0xdb, 0x3e, 0xbb, 0x3e, 0xbb, 0x3e, 0xbb, 0x3e, 0xbb, 0x36, 0xbb, 0x36, 0xbb, 0x36, 0xbb, 0x36, 0xbb, 0x36, 0xbb, 0x36, 0x9b, 0x36, 0x9b, 0x87, 0x1d, 0xff, 0xff, 0xe7, 0xdf, 0xa7, 0x5d, 0xcf, 0x9e, 0xff, 0xff, 0xb7, 0x7e, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0xff, 0xff, 0xff, 0xff, 0xcf, 0x9e, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x3c, 0x36, 0x3c, 0xb7, 0x5e, 0xff, 0xff, 0xd7, 0x9f, 0xa7, 0x3e, 0xef, 0xdf, 0xf7, 0xdf, 0x86, 0xdd, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfd, 0x25, 0xbb,
|
||||
0x36, 0xba, 0x3e, 0xdb, 0x3e, 0xdb, 0x3e, 0xdb, 0x3e, 0xdb, 0x3e, 0xbb, 0x3e, 0xbb, 0x3e, 0xbb, 0x3e, 0xbb, 0x36, 0xbb, 0x36, 0xbb, 0x36, 0xbb, 0x36, 0xbb, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0xb7, 0x7e, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xbf, 0x7e, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0xff, 0xff, 0xff, 0xff, 0xcf, 0x9e, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0xb7, 0x5e, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xaf, 0x3e, 0x3e, 0x3c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x2d, 0xdd,
|
||||
0x36, 0xdb, 0x36, 0xda, 0x3e, 0xdb, 0x3e, 0xbb, 0x3e, 0xbb, 0x3e, 0xbb, 0x3e, 0xbb, 0x36, 0xbb, 0x36, 0xbb, 0x36, 0xbb, 0x36, 0xbb, 0x36, 0xbb, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x3e, 0x9b, 0x87, 0x1d, 0xdf, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xd7, 0xbe, 0x5e, 0xbc, 0x3e, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x5b, 0x36, 0x5b, 0xff, 0xff, 0xff, 0xff, 0xcf, 0x9e, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x3e, 0x3c, 0x5e, 0x9c, 0xcf, 0x9e, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xdf, 0xbf, 0x7e, 0xbd, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xdd, 0x2d, 0xfd,
|
||||
0x3e, 0xdb, 0x3e, 0xdb, 0x3e, 0xdb, 0x3e, 0xbb, 0x3e, 0xbb, 0x3e, 0xbb, 0x36, 0xbb, 0x36, 0xbb, 0x36, 0xbb, 0x36, 0xbb, 0x36, 0xbb, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x3e, 0x9b, 0x66, 0xdc, 0xa7, 0x5d, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xef, 0xdf, 0xa7, 0x5d, 0x56, 0xbc, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x5b, 0x36, 0x5b, 0x36, 0x5b, 0xff, 0xff, 0xff, 0xff, 0xcf, 0x9e, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x3c, 0x36, 0x3c, 0x5e, 0x9c, 0xa7, 0x3e, 0xf7, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xa7, 0x3e, 0x5e, 0x7d, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xdc, 0x35, 0xdd, 0x35, 0xfd,
|
||||
0x36, 0xba, 0x3e, 0xdb, 0x3e, 0xbb, 0x3e, 0xbb, 0x3e, 0xbb, 0x3e, 0xbb, 0x36, 0xbb, 0x36, 0xbb, 0x36, 0xbb, 0x36, 0xbb, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x4e, 0xbb, 0xcf, 0x9e, 0xf7, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xf7, 0xdf, 0xb7, 0x7e, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xef, 0xdf, 0x9f, 0x3d, 0x3e, 0x7b, 0x36, 0x5b, 0x36, 0x5b, 0x36, 0x5c, 0xff, 0xff, 0xff, 0xff, 0xcf, 0x9e, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x3c, 0x3e, 0x5c, 0x9f, 0x1e, 0xef, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xaf, 0x3e, 0xf7, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xef, 0xdf, 0xcf, 0x7e, 0x4e, 0x5c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xfd,
|
||||
0x3e, 0xdb, 0x3e, 0xbb, 0x3e, 0xbb, 0x3e, 0xbb, 0x36, 0xbb, 0x36, 0xbb, 0x36, 0xbb, 0x36, 0xbb, 0x36, 0xbb, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x97, 0x3d, 0xef, 0xdf, 0xf7, 0xff, 0xd7, 0xbf, 0x97, 0x3d, 0x3e, 0x7b, 0x36, 0x7b, 0x5e, 0xbc, 0xcf, 0x9e, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xef, 0xdf, 0x5e, 0xbc, 0x46, 0x7c, 0x36, 0x5c, 0xff, 0xff, 0xff, 0xff, 0xcf, 0x9e, 0x36, 0x5c, 0x46, 0x5c, 0x66, 0xbd, 0xf7, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc7, 0x7e, 0x5e, 0x7c, 0x36, 0x3c, 0x3e, 0x3c, 0x9f, 0x1e, 0xdf, 0x9f, 0xf7, 0xdf, 0xef, 0xdf, 0x7e, 0xbd, 0x36, 0x1c, 0x36, 0x1c, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd,
|
||||
0x36, 0xdb, 0x3e, 0xbb, 0x3e, 0xbb, 0x3e, 0xbb, 0x3e, 0xbb, 0x3e, 0xbb, 0x36, 0xbb, 0x36, 0xbb, 0x3e, 0xbb, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x6e, 0xfc, 0x7e, 0xfd, 0x3e, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x3e, 0x7c, 0x8f, 0x1d, 0xcf, 0x9e, 0xff, 0xff, 0xff, 0xff, 0xf7, 0xff, 0xbf, 0x7e, 0x66, 0xbc, 0xff, 0xff, 0xff, 0xff, 0xcf, 0x9e, 0x6e, 0xbd, 0xbf, 0x7e, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc7, 0x7e, 0x8e, 0xfd, 0x3e, 0x3c, 0x36, 0x3c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x3e, 0x1c, 0x7e, 0xbd, 0x66, 0x9d, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd,
|
||||
0x3e, 0xbb, 0x3e, 0xbb, 0x3e, 0xbb, 0x3e, 0xbb, 0x36, 0xbb, 0x36, 0xbb, 0x36, 0xbb, 0x36, 0xbb, 0x3e, 0xbb, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x46, 0x7c, 0x97, 0x1d, 0xf7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xef, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xf7, 0xff, 0xef, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x8e, 0xfd, 0x46, 0x5c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd,
|
||||
0x3e, 0xbb, 0x36, 0xbb, 0x36, 0xbb, 0x3e, 0xbb, 0x3e, 0xbb, 0x36, 0xbb, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x5b, 0x36, 0x5b, 0x36, 0x5c, 0x36, 0x5c, 0x3e, 0x5c, 0xd7, 0x9f, 0xf7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf7, 0xdf, 0xc7, 0x7e, 0x3e, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd,
|
||||
0x3e, 0xbb, 0x36, 0xbb, 0x36, 0xbb, 0x36, 0xbb, 0x36, 0xbb, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x5b, 0x36, 0x5b, 0x36, 0x5b, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x5c, 0x3e, 0x5c, 0xb7, 0x5e, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xaf, 0x3e, 0x3e, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd,
|
||||
0x3e, 0xbb, 0x36, 0xbb, 0x36, 0xbb, 0x36, 0xbb, 0x36, 0xbb, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x5b, 0x36, 0x5b, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x5c, 0x4e, 0x7c, 0xd7, 0x9f, 0xf7, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf7, 0xdf, 0xd7, 0x9e, 0x46, 0x3c, 0x36, 0x3c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd,
|
||||
0x3e, 0xbb, 0x36, 0xbb, 0x36, 0xbb, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x5b, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x5c, 0x4e, 0x7c, 0x9f, 0x3d, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xef, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xef, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x9f, 0x1e, 0x46, 0x3c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xbd, 0x35, 0xdd,
|
||||
0x36, 0xbb, 0x36, 0xbb, 0x36, 0xbb, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x7e, 0xfd, 0x87, 0x1d, 0x46, 0x9c, 0x36, 0x5b, 0x36, 0x5b, 0x36, 0x5b, 0x36, 0x5c, 0x4e, 0x7c, 0x86, 0xfd, 0xdf, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xf7, 0xdf, 0xb7, 0x5e, 0x56, 0x7c, 0xff, 0xff, 0xff, 0xff, 0xcf, 0x7e, 0x5e, 0x7c, 0xbf, 0x5e, 0xf7, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xd7, 0x9f, 0x86, 0xdd, 0x46, 0x3c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x35, 0xfc, 0x4e, 0x3c, 0x86, 0xbd, 0x76, 0x9d, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd,
|
||||
0x36, 0xbb, 0x36, 0xbb, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0xa7, 0x3d, 0xf7, 0xdf, 0xff, 0xff, 0xd7, 0x9e, 0xa7, 0x3d, 0x46, 0x7c, 0x36, 0x5c, 0x66, 0xbc, 0xd7, 0x9e, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xcf, 0x9e, 0x66, 0xbd, 0x3e, 0x5c, 0x36, 0x3c, 0xff, 0xff, 0xff, 0xff, 0xcf, 0x7e, 0x36, 0x3c, 0x46, 0x3c, 0x6e, 0x9d, 0xdf, 0x9f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xcf, 0x7e, 0x66, 0x7d, 0x36, 0x1c, 0x4e, 0x3c, 0xa7, 0x1e, 0xd7, 0x9f, 0xff, 0xff, 0xf7, 0xdf, 0x8e, 0xde, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xdc, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd,
|
||||
0x36, 0xbb, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x46, 0x9c, 0xbf, 0x7e, 0xf7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf7, 0xdf, 0xd7, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xef, 0xdf, 0x8e, 0xfd, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0xff, 0xff, 0xff, 0xff, 0xcf, 0x7e, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x8e, 0xfd, 0xf7, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xcf, 0x7f, 0xf7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf7, 0xdf, 0xb7, 0x3e, 0x46, 0x1d, 0x35, 0xfc, 0x35, 0xdc, 0x35, 0xdc, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd,
|
||||
0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x56, 0x9c, 0xbf, 0x7e, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe7, 0xbf, 0xaf, 0x3e, 0x46, 0x7c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0xff, 0xff, 0xff, 0xff, 0xcf, 0x7e, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x4e, 0x5d, 0xaf, 0x3e, 0xe7, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xb7, 0x3e, 0x4e, 0x3d, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd,
|
||||
0x36, 0x9b, 0x36, 0xbb, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x3e, 0x7b, 0x8f, 0x1d, 0xdf, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xd7, 0x9f, 0x5e, 0x9c, 0x3e, 0x5c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0xff, 0xff, 0xff, 0xff, 0xcf, 0x7e, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x3e, 0x1c, 0x5e, 0x5d, 0xd7, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xd7, 0x9f, 0x8e, 0xde, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0x9e,
|
||||
0x3e, 0xba, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x5b, 0xc7, 0x7e, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xbf, 0x7e, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0xff, 0xff, 0xff, 0xff, 0xcf, 0x7e, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x35, 0xfc, 0x35, 0xfc, 0xb7, 0x3e, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xb7, 0x3e, 0x3d, 0xfd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbe,
|
||||
0x25, 0xfb, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x5b, 0x36, 0x5b, 0x36, 0x5b, 0x7e, 0xfd, 0xf7, 0xff, 0xdf, 0xbf, 0xa7, 0x3e, 0xc7, 0x7e, 0xff, 0xff, 0xb7, 0x5e, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0xff, 0xff, 0xff, 0xff, 0xcf, 0x7e, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0xaf, 0x3e, 0xff, 0xff, 0xcf, 0x7f, 0xa7, 0x1e, 0xe7, 0xbf, 0xf7, 0xdf, 0x7e, 0xbe, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x2d, 0x5f,
|
||||
0x00, 0x00, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x5b, 0x36, 0x5b, 0x36, 0x5c, 0x46, 0x7c, 0x76, 0xdd, 0x56, 0x9c, 0x46, 0x5c, 0xbf, 0x7e, 0xff, 0xff, 0x9f, 0x1d, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0xff, 0xff, 0xff, 0xff, 0xcf, 0x7e, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0xa7, 0x1e, 0xff, 0xff, 0xbf, 0x5e, 0x46, 0x1d, 0x5e, 0x5d, 0x76, 0x9d, 0x45, 0xfd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x00, 0x00,
|
||||
0x00, 0x00, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x9b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x5b, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x5c, 0x4e, 0x7c, 0xcf, 0x9e, 0xff, 0xff, 0x6e, 0xbd, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x1c, 0xff, 0xff, 0xff, 0xff, 0xcf, 0x7e, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x8e, 0xde, 0xff, 0xff, 0xc7, 0x5f, 0x46, 0x1d, 0x35, 0xfd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0x9d, 0x35, 0xbd, 0x00, 0x00,
|
||||
0x00, 0x00, 0x07, 0xff, 0x36, 0x9b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x5b, 0x36, 0x5b, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x5c, 0x56, 0x7c, 0xcf, 0x9e, 0xbf, 0x5e, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x1c, 0x36, 0x1c, 0x5e, 0x7d, 0xff, 0xff, 0xff, 0xff, 0xdf, 0xbf, 0x56, 0x5d, 0x36, 0x1c, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x3d, 0xfc, 0xbf, 0x5e, 0xc7, 0x5e, 0x4e, 0x1d, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0x9d, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x36, 0xbc, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x5b, 0x36, 0x5b, 0x36, 0x5b, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x5c, 0x3e, 0x5c, 0x5e, 0x9c, 0x46, 0x5c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x1c, 0x36, 0x1c, 0x76, 0xbd, 0xdf, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xd7, 0x9f, 0x76, 0x9d, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x46, 0x1d, 0x5e, 0x5d, 0x3d, 0xfd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x5b, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x1c, 0x36, 0x1c, 0xa7, 0x1e, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x96, 0xde, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0x9d, 0x35, 0xbd, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x7c, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x7b, 0x36, 0x5b, 0x36, 0x5b, 0x36, 0x5b, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x1c, 0x36, 0x1c, 0xa7, 0x1e, 0xff, 0xff, 0xf7, 0xff, 0xcf, 0x7e, 0xff, 0xff, 0xff, 0xff, 0xdf, 0x9f, 0xcf, 0x7f, 0xff, 0xff, 0xff, 0xff, 0x8e, 0xde, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0x9d, 0x35, 0x9d, 0x35, 0x7d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x7c, 0x36, 0x7b, 0x36, 0x7c, 0x36, 0x5b, 0x36, 0x5b, 0x36, 0x5b, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0xe7, 0xbf, 0xef, 0xdf, 0x8e, 0xde, 0x46, 0x3c, 0xff, 0xff, 0xff, 0xff, 0xcf, 0x7e, 0x46, 0x1c, 0x96, 0xfe, 0xef, 0xdf, 0xdf, 0x9f, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xdc, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0x9d, 0x35, 0x9d, 0x35, 0xbd, 0x2d, 0xdd, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x5c, 0x36, 0x7b, 0x36, 0x5b, 0x36, 0x5b, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x7e, 0xbd, 0x56, 0x5d, 0x36, 0x1c, 0x36, 0x1c, 0xff, 0xff, 0xff, 0xff, 0xcf, 0x7f, 0x35, 0xfc, 0x35, 0xfc, 0x5e, 0x5d, 0x66, 0x5d, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xdc, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0x9d, 0x35, 0x9d, 0x35, 0x9d, 0x35, 0xbe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x55, 0x36, 0x7c, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0xc7, 0x7f, 0xc7, 0x7e, 0xa7, 0x1e, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0x9d, 0x35, 0x9d, 0x35, 0x9d, 0x35, 0x9d, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x35, 0xfb, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x35, 0xfc, 0x35, 0xfc, 0x3e, 0x1c, 0x3e, 0x1c, 0x3d, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0x9d, 0x35, 0x9d, 0x35, 0x9d, 0x1d, 0x9c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x26, 0x7b, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0x9d, 0x35, 0x9d, 0x35, 0x9d, 0x35, 0x9d, 0x2d, 0x9e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x7c, 0x36, 0x5c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0x9d, 0x35, 0x9d, 0x35, 0x9d, 0x35, 0x9d, 0x35, 0x9d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x79, 0x36, 0x5c, 0x36, 0x5c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xdc, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0x9d, 0x35, 0x9d, 0x35, 0x9d, 0x35, 0x9d, 0x35, 0x9d, 0x05, 0x5f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x5f, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xdc, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0x9d, 0x35, 0x9d, 0x35, 0x9d, 0x35, 0x9d, 0x35, 0x9d, 0x04, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xff, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0x9d, 0x35, 0x9d, 0x35, 0x9d, 0x35, 0x9d, 0x35, 0x9d, 0x04, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0xff, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0x9d, 0x35, 0x9d, 0x35, 0x9d, 0x35, 0xbd, 0x05, 0x5f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xff, 0x2e, 0x5d, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0x9d, 0x35, 0x9d, 0x35, 0x9d, 0x35, 0x9d, 0x2d, 0x9e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2d, 0xfd, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0x9d, 0x35, 0x9d, 0x35, 0x9d, 0x35, 0x9d, 0x1d, 0x9c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xff, 0x36, 0x3c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x36, 0x1c, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0x9d, 0x35, 0x9d, 0x35, 0x9d, 0x35, 0x9d, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2d, 0xfd, 0x36, 0x1c, 0x36, 0x1c, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xdc, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0x9d, 0x35, 0xbd, 0x35, 0x7d, 0x2d, 0xdf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x1d, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x35, 0xdc, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0x9d, 0x35, 0x9d, 0x35, 0xbd, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x35, 0xfc, 0x35, 0xfd, 0x35, 0xfd, 0x35, 0xfc, 0x35, 0xdc, 0x35, 0xfd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x25, 0xbb, 0x2d, 0xdd, 0x2d, 0xfd, 0x35, 0xfd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xdd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xbd, 0x35, 0xdd, 0x35, 0xbc, 0x2d, 0x5f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x08, 0x13, 0x23, 0x4e, 0x78, 0xa6, 0xcb, 0xdd, 0xee, 0xf8, 0xed, 0xdc, 0xc9, 0xa3, 0x75, 0x4c, 0x23, 0x12, 0x08, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x2c, 0x65, 0x96, 0xc5, 0xf5, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf1, 0xc2, 0x94, 0x62, 0x29, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0xaa, 0xd8, 0xf6, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf4, 0xd7, 0xa7, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x47, 0xc8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 0x41, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x40, 0xa5, 0xf3, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf1, 0xa1, 0x3b, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x8a, 0xe4, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xe0, 0x84, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x14, 0xb5, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xac, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x52, 0xe0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xd3, 0x4b, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x60, 0xe7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe3, 0x5a, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x61, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfa, 0x56, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x60, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf9, 0x56, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x52, 0xe7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe2, 0x4d, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0xe0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xd0, 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0xb5, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xa6, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x04, 0x8a, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x7c, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0xe4, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe4, 0x39, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x0c, 0xa7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xa0, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0xf3, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xed, 0x3f, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0xc8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xb0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x32, 0x00, 0x00,
|
||||
0x00, 0x05, 0xaa, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xa1, 0x00, 0x00, 0x00, 0x2c, 0xd8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xdb, 0x24, 0x00,
|
||||
0x01, 0x65, 0xf6, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf2, 0x5f, 0x00, 0x08, 0x96, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x91, 0x07,
|
||||
0x13, 0xc5, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xbc, 0x16, 0x23, 0xf5, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe6, 0x26,
|
||||
0x4e, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x3f, 0x78, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x6a,
|
||||
0xa6, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x93, 0xcc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xb2,
|
||||
0xde, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 0xee, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xce,
|
||||
0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xd7, 0xed, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xcd,
|
||||
0xdc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xbf, 0xc9, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xb0,
|
||||
0xa3, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x91, 0x75, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x68,
|
||||
0x4c, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfd, 0x3e, 0x23, 0xf1, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe4, 0x25,
|
||||
0x12, 0xc2, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xb9, 0x15, 0x08, 0x94, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x8f, 0x06,
|
||||
0x01, 0x62, 0xf4, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf1, 0x5c, 0x00, 0x00, 0x29, 0xd7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xdb, 0x20, 0x00,
|
||||
0x00, 0x03, 0xa7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x9b, 0x00, 0x00, 0x00, 0x00, 0x41, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, 0x2e, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0xc0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xa9, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0xf1, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xec, 0x39, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x0a, 0xa0, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, 0x98, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3b, 0xe0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe2, 0x33, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x03, 0x84, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, 0x75, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0xac, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x9f, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0xd3, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc6, 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4b, 0xe3, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xdd, 0x47, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x5a, 0xfa, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0x51, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x56, 0xf9, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf1, 0x4e, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x56, 0xe2, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xdd, 0x51, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x4d, 0xd0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc6, 0x47, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x17, 0xa6, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, 0x9f, 0x17, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x7c, 0xe4, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfd, 0xe2, 0x75, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x39, 0x9e, 0xed, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xec, 0x9a, 0x34, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x3f, 0xb0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, 0xa9, 0x39, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x32, 0xa1, 0xdb, 0xf2, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xf1, 0xdb, 0x9b, 0x2e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0x5f, 0x91, 0xbc, 0xe6, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfd, 0xe4, 0xb9, 0x8f, 0x5c, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x16, 0x26, 0x3f, 0x6a, 0x93, 0xb2, 0xc0, 0xce, 0xd7, 0xcd, 0xbf, 0xb0, 0x91, 0x68, 0x3e, 0x25, 0x15, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
};
|
||||
|
||||
const gfx_image_dsc_t icon5 = {
|
||||
.header.cf = GFX_COLOR_FORMAT_RGB565A8,
|
||||
.header.magic = C_ARRAY_HEADER_MAGIC,
|
||||
.header.w = 65,
|
||||
.header.h = 65,
|
||||
.data_size = 12675,
|
||||
.data = icon5_map,
|
||||
};
|
||||
@@ -0,0 +1,25 @@
|
||||
## IDF Component Manager Manifest File
|
||||
dependencies:
|
||||
idf: '>=5.0'
|
||||
|
||||
esp_emote_gfx:
|
||||
version: '*'
|
||||
override_path: ../../
|
||||
|
||||
esp_mmap_assets:
|
||||
version: 1.*
|
||||
|
||||
espressif/esp-box-3:
|
||||
version: "*"
|
||||
rules:
|
||||
- if: "${IDF_TARGET} == esp32s3"
|
||||
|
||||
espressif/esp32_c3_lcdkit:
|
||||
version: "^1.1.*"
|
||||
rules:
|
||||
- if: "${IDF_TARGET} == esp32c3"
|
||||
|
||||
espressif/esp_wrover_kit:
|
||||
version: "^1.6.*"
|
||||
rules:
|
||||
- if: "${IDF_TARGET} == esp32"
|
||||
@@ -0,0 +1,29 @@
|
||||
/*
|
||||
* SPDX-FileCopyrightText: 2022-2025 Espressif Systems (Shanghai) CO LTD
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
/**
|
||||
* @file
|
||||
* @brief This file was generated by esp_mmap_assets, don't modify it
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "esp_mmap_assets.h"
|
||||
|
||||
#define MMAP_TEST_ASSETS_FILES 9
|
||||
#define MMAP_TEST_ASSETS_CHECKSUM 0x4FDF
|
||||
|
||||
enum MMAP_TEST_ASSETS_LISTS {
|
||||
MMAP_TEST_ASSETS_MI_1_EYE_24BIT_AAF = 0, /*!< mi_1_eye_24bit.aaf */
|
||||
MMAP_TEST_ASSETS_MI_1_EYE_4BIT_AAF = 1, /*!< mi_1_eye_4bit.aaf */
|
||||
MMAP_TEST_ASSETS_MI_1_EYE_8BIT_AAF = 2, /*!< mi_1_eye_8bit.aaf */
|
||||
MMAP_TEST_ASSETS_MI_2_EYE_24BIT_AAF = 3, /*!< mi_2_eye_24bit.aaf */
|
||||
MMAP_TEST_ASSETS_MI_2_EYE_4BIT_AAF = 4, /*!< mi_2_eye_4bit.aaf */
|
||||
MMAP_TEST_ASSETS_MI_2_EYE_8BIT_AAF = 5, /*!< mi_2_eye_8bit.aaf */
|
||||
MMAP_TEST_ASSETS_ICON1_BIN = 6, /*!< icon1.bin */
|
||||
MMAP_TEST_ASSETS_ICON5_BIN = 7, /*!< icon5.bin */
|
||||
MMAP_TEST_ASSETS_DEJAVUSANS_TTF = 8, /*!< DejaVuSans.ttf */
|
||||
};
|
||||
@@ -0,0 +1,6 @@
|
||||
# Name, Type, SubType, Offset, Size, Flags
|
||||
# Note: if you change the phy_init or app partition offset, make sure to change the offset in Kconfig.projbuild
|
||||
nvs, data, nvs, , 0x6000,
|
||||
phy_init, data, phy, , 0x1000,
|
||||
factory, app, factory, , 1500K,
|
||||
assets_8bit, data, spiffs, , 2000K,
|
||||
|
@@ -0,0 +1,15 @@
|
||||
# This file was generated using idf.py save-defconfig. It can be edited manually.
|
||||
# Espressif IoT Development Framework (ESP-IDF) 5.4.0 Project Minimal Configuration
|
||||
#
|
||||
CONFIG_IDF_TARGET="esp32s3"
|
||||
CONFIG_ESPTOOLPY_FLASHSIZE_4MB=y
|
||||
CONFIG_PARTITION_TABLE_CUSTOM=y
|
||||
CONFIG_SPIRAM=y
|
||||
CONFIG_SPIRAM_MODE_OCT=y
|
||||
CONFIG_SPIRAM_SPEED_80M=y
|
||||
CONFIG_SPIRAM_MALLOC_ALWAYSINTERNAL=128
|
||||
CONFIG_ESP_DEFAULT_CPU_FREQ_MHZ_240=y
|
||||
CONFIG_ESP_MAIN_TASK_STACK_SIZE=4096
|
||||
CONFIG_ESP_CONSOLE_USB_SERIAL_JTAG=y
|
||||
CONFIG_ESP_TASK_WDT_EN=n
|
||||
CONFIG_MMAP_FILE_NAME_LENGTH=32
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Reference in New Issue
Block a user